fx-form-builder-wrapper 2.0.72 → 2.0.73

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.
@@ -388,38 +388,41 @@ export class UploaderComponent extends FxBaseComponent {
388
388
  });
389
389
  }
390
390
  ngAfterViewInit() {
391
- const key = this.fxComponent?.fxData?.name;
392
- console.log('Uploader Key:', key);
393
- console.log('Uploaded Files Map:', this.uploadedFilesMap);
394
- const files = this.uploadedFilesMap?.[key];
395
- // Strong check — ensures patching happens only when files actually exist
396
- if (key && Array.isArray(files) && files.length > 0) {
397
- const formatted = files
398
- .filter((fileObj) => !!fileObj)
399
- .map((fileObj) => {
400
- const originalUrlObj = fileObj.originalUrl;
401
- const fileName = originalUrlObj?.fileName || '';
402
- const previewUrl = originalUrlObj?.previewUrl;
403
- const type = fileObj?.type;
404
- return {
405
- id: uuidv4(),
406
- file: null,
407
- originalUrl: originalUrlObj,
408
- result: previewUrl,
409
- name: fileName,
410
- title: fileObj?.title || '',
411
- notes: fileObj?.notes || '',
412
- categoryId: fileObj?.categoryId || '',
413
- type: type,
414
- };
415
- });
416
- console.log('Formatted Files for Patching:', formatted);
417
- if (formatted.length > 0) {
418
- this.uploadedFiles = [...this.uploadedFiles, ...formatted];
419
- this.formattedData.uploadedFiles = this.uploadedFiles;
420
- this.uploadFileControl.setValue(this.formattedData);
391
+ setTimeout(() => {
392
+ const key = this.fxComponent?.fxData?.name;
393
+ console.log('Uploader Key:', key);
394
+ console.log('Uploaded Files Map:', this.uploadedFilesMap);
395
+ const files = this.uploadedFilesMap?.[key];
396
+ console.log('Files to Patch:', files);
397
+ // Strong check — ensures patching happens only when files actually exist
398
+ if (key && Array.isArray(files) && files.length > 0) {
399
+ const formatted = files
400
+ .filter((fileObj) => !!fileObj)
401
+ .map((fileObj) => {
402
+ const originalUrlObj = fileObj.originalUrl;
403
+ const fileName = originalUrlObj?.fileName || '';
404
+ const previewUrl = originalUrlObj?.previewUrl;
405
+ const type = fileObj?.type;
406
+ return {
407
+ id: uuidv4(),
408
+ file: null,
409
+ originalUrl: originalUrlObj,
410
+ result: previewUrl,
411
+ name: fileName,
412
+ title: fileObj?.title || '',
413
+ notes: fileObj?.notes || '',
414
+ categoryId: fileObj?.categoryId || '',
415
+ type: type,
416
+ };
417
+ });
418
+ console.log('Formatted Files for Patching:', formatted);
419
+ if (formatted.length > 0) {
420
+ this.uploadedFiles = [...this.uploadedFiles, ...formatted];
421
+ this.formattedData.uploadedFiles = this.uploadedFiles;
422
+ this.uploadFileControl.setValue(this.formattedData);
423
+ }
421
424
  }
422
- }
425
+ }, 100);
423
426
  }
424
427
  onFileSelected(event) {
425
428
  const input = event.target;
@@ -692,4 +695,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
692
695
  type: ViewChild,
693
696
  args: ['fxComponent']
694
697
  }] } });
695
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQWMsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsSixPQUFPLEVBQTZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZ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dUJBQUMsV0FBVztnQkFnQkksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50LCBGeFNlbGVjdFNldHRpbmcsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlLCBVcGxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBUaHJlZVZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlLXZpZXdlci90aHJlZS12aWV3ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9jb3JlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC11cGxvYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZpbGVVcGxvYWRNb2R1bGUsIFRvYXN0TW9kdWxlLCBDb25maXJtRGlhbG9nTW9kdWxlLCBEaWFsb2dNb2R1bGUsIFRocmVlVmlld2VyQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdXBsb2FkZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0e1xyXG4gIC8vIHB1YmxpYyB1cGxvYWRGaWxlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgdXBsb2FkRmlsZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgdXBsb2FkZWRGaWxlczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBmb3JtYXR0ZWREYXRhOiBhbnkgPSB7XHJcbiAgICB1cGxvYWRlZEZpbGVzOiBbXSxcclxuICAgIGRlbGV0ZWRGaWxlczogW11cclxuICB9O1xyXG4gIGNhdGVnb3JpZXMgPSBbXHJcbiAgICB7IGxhYmVsOiAnT3JhbCBJbWFnZXMnLCB2YWx1ZTogMTYgfSxcclxuICAgIHsgbGFiZWw6ICdQYXN0IERvY3MnLCB2YWx1ZTogMTcgfSxcclxuICAgIHsgbGFiZWw6ICdYLVJheXMnLCB2YWx1ZTogMTQgfSxcclxuICAgIHsgbGFiZWw6ICdQcm9maWxlJywgdmFsdWU6IDE4IH0sXHJcbiAgXTtcclxuXHJcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZpbGVWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZUltYWdlVXJsOiBzdHJpbmcgPSAnJztcclxuICBmaWxlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcclxuICBmaWxlVHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZmlsZU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpO1xyXG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGZ4QXBpU2VydmljZTogQXBpU2VydmljZVJlZ2lzdHJ5XHJcbiAgKSB7XHJcbiAgICBzdXBlcihjZHIpXHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKGZ4RGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGxGaWxlVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0bEZpbGVVcGxvYWQ6IGFueSA9IG51bGw7XHJcblxyXG4gIHVwbG9hZGVkSW1hZ2VzOiB7IFtrZXk6IHN0cmluZ106IHsgcmVzdWx0OiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBudWxsIH1bXSB9ID0ge307XHJcbiAgZGVsZXRlZEZpbGVzOiBhbnlbXSA9IFtdO1xyXG4gIHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xyXG4gIEBWaWV3Q2hpbGQoJ2Z4Q29tcG9uZW50JykgZnhDb21wb25lbnQhOiBGeENvbXBvbmVudDtcclxuICAvLyBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXMpKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8c3RyaW5nPltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VVcmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1t1cGxvYWRlcktleV0gPSBpbWFnZVVybHMubWFwKHJlc3VsdCA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGxcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuICAvLyAgICAgICAgICAgICAgIC8vIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkSW1hZ2VzXVxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnVwbG9hZGVkSW1hZ2VzKS5mbGF0KCk7XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc1trZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlcykpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTx7IHJlc3VsdDogc3RyaW5nLCBvcmlnaW5hbFVybDogc3RyaW5nIH0+W10gPSBbXTtcclxuXHJcbiAgLy8gICAgICAgICB1cmxzLmZvckVhY2goKHVybDogc3RyaW5nKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmICh1cmwpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGp1c3QgZm9yIHByZXZpZXdcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IHVybFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoaW1hZ2VGZXRjaGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gaW1hZ2VEYXRhLm1hcChpdGVtID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGl0ZW0ub3JpZ2luYWxVcmwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogaXRlbS5yZXN1bHRcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVwbG9hZGVkRmlsZXMpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICAgIC8vIEV4dHJhY3QgdXBsb2FkZXIga2V5cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBVUkwgYXJyYXlzXHJcbiAgLy8gICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfVxyXG5cclxuICAvLyAgICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgICAvLyBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6c3RyaW5nIDsgbm90ZXM6c3RyaW5nIH0+W10gPSBbXTtcclxuXHJcbiAgLy8gICAgICAgICAgIC8vIHVybHMuZm9yRWFjaCgob3JpZ2luYWxVcmw6YW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIC8vICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgICAgICAgIC8vICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAvLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbiAgLy8gICAgICAgICAgIC8vICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwgICAgICAgICAgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuICAvLyAgICAgICAgICAgLy8gICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgIC8vICAgICApO1xyXG4gIC8vICAgICAgICAgICAvLyAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgLy8gICB9XHJcbiAgLy8gICAgICAgICAgIC8vIH0pO1xyXG5cclxuICAvLyAgICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBhbnk7IHRpdGxlOiBzdHJpbmc7IG5vdGVzOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOiBhbnkpID0+IHtcclxuICAvLyAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4gIC8vICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwsIC8vIHByZXNlcnZlIG9yaWdpbmFsXHJcbiAgLy8gICAgICAgICB0aXRsZTogb3JpZ2luYWxVcmw/LnRpdGxlIHx8ICcnLCAvLyBkZWZhdWx0IGVtcHR5IGlmIG5vdCBwcmVzZW50XHJcbiAgLy8gICAgICAgICBub3Rlczogb3JpZ2luYWxVcmw/Lm5vdGVzIHx8ICcnXHJcbiAgLy8gICAgICAgfSkpXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfSk7XHJcblxyXG5cclxuICAvLyAgICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIG5vdGVzOiAnJ1xyXG4gIC8vICAgICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gIC8vICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9KTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogeyBvcmlnaW5hbFVybDogc3RyaW5nIH1bXSB9ID0gdmFyaWFibGVzLnVwbG9hZGVkRmlsZXM7XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gZmlsZU9iaj8ub3JpZ2luYWxVcmw7XHJcbiAgLy8gICAgICAgICAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoaW1hZ2VGZXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0XHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIC8vIHB1YmxpYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAoaW5wdXQuZmlsZXMpIHtcclxuICAvLyAgICAgZm9yKGxldCBpID0gMDsgaSA8IGlucHV0Py5maWxlcz8ubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbaV07XHJcbiAgLy8gICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaCh7XHJcbiAgLy8gICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZT8ubmFtZSxcclxuICAvLyAgICAgICAgICAgaWQ6IHV1aWR2NCgpXHJcbiAgLy8gICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVwbG9hZGVkRmlsZXMpO1xyXG4gIC8vICAgICAgICAgY29uc29sZS5sb2codGhpcy51cGxvYWRGaWxlQ29udHJvbCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAoaW5wdXQuZmlsZXMpIHtcclxuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgLy8gICAgICAgICBjb25zdCBuZXdGaWxlID0ge1xyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgLy8gICAgICAgICAgIG9yaWdpbmFsVXJsOiBudWxsLFxyXG4gIC8vICAgICAgICAgICByZXN1bHQ6IGUudGFyZ2V0Py5yZXN1bHQsXHJcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAvLyAgICAgICAgICAgdGl0bGU6ICcnLFxyXG4gIC8vICAgICAgICAgICBub3RlczogJycsXHJcbiAgLy8gICAgICAgICAgIGNhdGVnb3J5OiAnJyxcclxuICAvLyAgICAgICAgICAgdHlwZTogdGhpcy5kZXRlY3RGaWxlVHlwZShmaWxlKSxcclxuICAvLyAgICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgLy8gICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICB9O1xyXG5cclxuICAvLyAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XHJcblxyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNNYXBba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB1cmxzXHJcbiAgLy8gICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKSBcclxuICAvLyAgICAgICAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlT2JqPy5vcmlnaW5hbFVybCB8fCBmaWxlT2JqPy5uYW1lKTtcclxuXHJcbiAgLy8gICAgICAgICAgICAgcmV0dXJuIHtcclxuICAvLyAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIC8vICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGZpbGVPYmoub3JpZ2luYWxVcmwsICAgIFxyXG4gIC8vICAgICAgICAgICAgICAgcmVzdWx0OiBmaWxlT2JqPy50eXBlID09PSAnaW1hZ2UnID8gZmlsZU9iai5vcmlnaW5hbFVybC5wcmV2aWV3VXJsIDogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgIG5hbWU6IGZpbGVPYmo/Lm5hbWUgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICBjYXRlZ29yeTogZmlsZU9iaj8uY2F0ZWdvcnkgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICB0eXBlOiBmaWxlT2JqPy50eXBlLCAgICAgICAgICAgICAgICBcclxuICAvLyAgICAgICAgICAgICB9O1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xyXG5cclxuXHJcbiAgICAgICAgLy8gZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gICAgICAgIC8vICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiAodmFsdWUgYXMgYW55KT8udXBsb2FkZWRGaWxlcykge1xyXG4gICAgICAgIC8vICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSAodmFsdWUgYXMgYW55KS51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIGlmIChcclxuICAgIHZhbHVlICYmXHJcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXHJcbiAgICAndXBsb2FkZWRGaWxlcycgaW4gdmFsdWVcclxuICApIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlc01hcFtrZXldID0gKHZhbHVlIGFzIGFueSkudXBsb2FkZWRGaWxlcztcclxuICB9XHJcbn1cclxuXHJcblxyXG4gICAgICAgIC8vIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCBmaWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy51cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gICAgICAgIC8vICAgY29uc3QgZm9ybWF0dGVkID0gZmlsZXNcclxuICAgICAgICAvLyAgICAgLmZpbHRlcigoZmlsZU9iajogYW55KSA9PiAhIWZpbGVPYmopXHJcbiAgICAgICAgLy8gICAgIC5tYXAoKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsT2JqID0gZmlsZU9iai5vcmlnaW5hbFVybDtcclxuICAgICAgICAvLyAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9yaWdpbmFsVXJsT2JqPy5maWxlTmFtZSB8fCAnJztcclxuICAgICAgICAvLyAgICAgICBjb25zdCBmaWxlVXJsID0gb3JpZ2luYWxVcmxPYmo/LmZpbGVVcmwgfHwgJyc7XHJcbiAgICAgICAgLy8gICAgICAgY29uc3QgcHJldmlld1VybCA9IG9yaWdpbmFsVXJsT2JqPy5wcmV2aWV3VXJsO1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IHR5cGUgPSBmaWxlT2JqPy50eXBlO1xyXG5cclxuICAgICAgICAvLyAgICAgICAvLyBkZXRlY3QgdHlwZSBiYXNlZCBvbiBmaWxlIGV4dGVuc2lvblxyXG4gICAgICAgIC8vICAgICAgIC8vIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5kZXRlY3RGaWxlVHlwZUZyb21VcmwoZmlsZU5hbWUgfHwgZmlsZVVybCk7XHJcblxyXG4gICAgICAgIC8vICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgLy8gICAgICAgICBmaWxlOiBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgbG9jYWxcclxuICAgICAgICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybE9iaiwgICAgICAgLy8ga2VlcCB3aG9sZSBvYmplY3RcclxuICAgICAgICAvLyAgICAgICAgIHJlc3VsdDogdHlwZSA9PT0gJ2ltYWdlJ1xyXG4gICAgICAgIC8vICAgICAgICAgICA/IChwcmV2aWV3VXJsKSAgICAgICAgLy8gcHJlZmVyIHByZXZpZXdVcmwsIGZhbGxiYWNrIHRvIGZpbGVVcmxcclxuICAgICAgICAvLyAgICAgICAgICAgOiBwcmV2aWV3VXJsLFxyXG4gICAgICAgIC8vICAgICAgICAgbmFtZTogZmlsZU5hbWUsXHJcbiAgICAgICAgLy8gICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbiAgICAgICAgLy8gICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgICAgICAgLy8gICAgICAgICBjYXRlZ29yeUlkOiBmaWxlT2JqPy5jYXRlZ29yeUlkIHx8ICcnLFxyXG4gICAgICAgIC8vICAgICAgICAgdHlwZTogdHlwZSwgICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGVkIHR5cGVcclxuICAgICAgICAvLyAgICAgICB9O1xyXG4gICAgICAgIC8vICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAgICAgICAvLyAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbm5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcbiAgY29uc29sZS5sb2coJ1VwbG9hZGVyIEtleTonLCBrZXkpO1xyXG4gIGNvbnNvbGUubG9nKCdVcGxvYWRlZCBGaWxlcyBNYXA6JywgdGhpcy51cGxvYWRlZEZpbGVzTWFwKTtcclxuXHJcbiAgY29uc3QgZmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXNNYXA/LltrZXldO1xyXG5cclxuICAvLyBTdHJvbmcgY2hlY2sg4oCUIGVuc3VyZXMgcGF0Y2hpbmcgaGFwcGVucyBvbmx5IHdoZW4gZmlsZXMgYWN0dWFsbHkgZXhpc3RcclxuICBpZiAoa2V5ICYmIEFycmF5LmlzQXJyYXkoZmlsZXMpICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAuZmlsdGVyKChmaWxlT2JqOiBhbnkpID0+ICEhZmlsZU9iailcclxuICAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gb3JpZ2luYWxVcmxPYmo/LmZpbGVOYW1lIHx8ICcnO1xyXG4gICAgICAgIGNvbnN0IHByZXZpZXdVcmwgPSBvcmlnaW5hbFVybE9iaj8ucHJldmlld1VybDtcclxuICAgICAgICBjb25zdCB0eXBlID0gZmlsZU9iaj8udHlwZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICBvcmlnaW5hbFVybDogb3JpZ2luYWxVcmxPYmosXHJcbiAgICAgICAgICByZXN1bHQ6IHByZXZpZXdVcmwsXHJcbiAgICAgICAgICBuYW1lOiBmaWxlTmFtZSxcclxuICAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAgIG5vdGVzOiBmaWxlT2JqPy5ub3RlcyB8fCAnJyxcclxuICAgICAgICAgIGNhdGVnb3J5SWQ6IGZpbGVPYmo/LmNhdGVnb3J5SWQgfHwgJycsXHJcbiAgICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coJ0Zvcm1hdHRlZCBGaWxlcyBmb3IgUGF0Y2hpbmc6JywgZm9ybWF0dGVkKTtcclxuICAgIGlmIChmb3JtYXR0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLnNldHRpbmcoJ21heEZpbGVTaXplJyk7XHJcblxyXG4gICAgQXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgICAgY29uc3QgZmlsZVNpemVJbk1CID0gZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KTtcclxuXHJcbiAgICAgIGlmIChmaWxlU2l6ZUluTUIgPiBtYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogJ0ZpbGUgVG9vIExhcmdlJyxcclxuICAgICAgICAgICAgZGV0YWlsOiBgVGhlIGZpbGUgXCIke2ZpbGUubmFtZX1cIiBleGNlZWRzIHRoZSBtYXhpbXVtIHNpemUgbGltaXQgb2YgJHttYXhGaWxlU2l6ZX0gTUIuYCxcclxuICAgICAgICAgICAgbGlmZTogNDAwMCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdGaWxlOiBhbnkgPSB7XHJcbiAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgICAgICAgcmVzdWx0OiBudWxsLFxyXG4gICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgbm90ZXM6ICcnLFxyXG4gICAgICAgIGNhdGVnb3J5SWQ6ICcnLFxyXG4gICAgICAgIHR5cGU6IGZpbGVUeXBlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGZpbGVUeXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgICAgICAgICBuZXdGaWxlLnJlc3VsdCA9IGUudGFyZ2V0Py5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7IC8vIG9ubHkgaW1hZ2VzIG5lZWQgcHJldmlld1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1pbWFnZSDihpIgcHVzaCBkaXJlY3RseVxyXG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkTWV0YTogdHJ1ZSB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NZXRhQ2hhbmdlKCkge1xyXG4gIC8vICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gfVxyXG5cclxuICBvbk1ldGFDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuXHJcbiAgICAvLyDinYwgSW52YWxpZCBpZiBhbnkgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAgY29uc3QgYWxsVmFsaWQgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZXZlcnkoXHJcbiAgICAgIGYgPT4gZi50aXRsZT8udHJpbSgpICYmIGYubm90ZXM/LnRyaW0oKSAmJiBmLmNhdGVnb3J5SWQ/LnRvU3RyaW5nKCkudHJpbSgpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghYWxsVmFsaWQpIHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gcHVibGljIGRlbGV0ZUZpbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGU/LmlkICE9PSBpZCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IFtkZWxldGVkRmlsZV0gPSB0aGlzLnVwbG9hZGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gRW5zdXJlIGZvcm1hdHRlZERhdGEgZXhpc3RzIGFuZCBpbml0aWFsaXplIGlmIHVuZGVmaW5lZFxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0gdGhpcy5mb3JtYXR0ZWREYXRhIHx8IHsgdXBsb2FkZWRGaWxlczogW10sIGRlbGV0ZWRGaWxlczogW10gfTtcclxuXHJcbiAgICAvLyBBZGQgdGhlIGRlbGV0ZWQgZmlsZSB0byB0aGUgZGVsZXRlZEZpbGVzIGFycmF5XHJcbiAgICB0aGlzLmRlbGV0ZWRGaWxlcyA9IFsuLi50aGlzLmRlbGV0ZWRGaWxlcywgZGVsZXRlZEZpbGVdO1xyXG5cclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuXHJcbiAgICAvLyBVcGRhdGUgZm9ybWF0dGVkRGF0YVxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgICAgIHVwbG9hZGVkRmlsZXM6IHRoaXMudXBsb2FkZWRGaWxlcyxcclxuICAgICAgZGVsZXRlZEZpbGVzOiB0aGlzLmRlbGV0ZWRGaWxlc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSB1cGxvYWRGaWxlQ29udHJvbFxyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3VwbG9hZC10ZXh0JywgJHRpdGxlOiAnVXBsb2FkIFRleHQnLCB2YWx1ZTogJ1VwbG9hZCBGaWxlJyB9KSxcclxuICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZHMnLCB2YWx1ZTogZmFsc2UgfSwgW3sgb3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWUgfSwgeyBvcHRpb246ICdEaXNhYmxlJywgdmFsdWU6IGZhbHNlIH1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVObycsICR0aXRsZTogJ01heGltdW0gRmlsZSBVcGxvYWQgQWxsb3dlZCcsIHZhbHVlOiA4IH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWF4RmlsZVNpemUnLCAkdGl0bGU6ICdNYXhpbXVtIEZpbGUgU2l6ZSBBbGxvd2VkJywgdmFsdWU6IDEwIH0pLFxyXG4gICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVTaXplJywgJHRpdGxlOiAnTWF4aW11bSBGaWxlIFNpemUgQWxsb3dlZCcsIHZhbHVlOiAxMCB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0RmlsZVR5cGUoZmlsZTogRmlsZSk6ICdpbWFnZScgfCAnY3N2JyB8ICd0ZXh0JyB8ICdwZGYnIHwgJ2V4Y2VsJyB8ICd3b3JkJyB8ICdzdGwnIHwgJ290aGVyJyB7XHJcbiAgICBjb25zdCBtaW1lID0gKGZpbGUudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG5hbWUgPSAoZmlsZS5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIC8vIEltYWdlc1xyXG4gICAgaWYgKG1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChuYW1lKSkge1xyXG4gICAgICByZXR1cm4gJ2ltYWdlJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDU1ZcclxuICAgIGlmIChtaW1lID09PSAndGV4dC9jc3YnIHx8IG5hbWUuZW5kc1dpdGgoJy5jc3YnKSkge1xyXG4gICAgICByZXR1cm4gJ2Nzdic7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGV4dCBmaWxlc1xyXG4gICAgaWYgKG1pbWUgPT09ICd0ZXh0L3BsYWluJyB8fCBuYW1lLmVuZHNXaXRoKCcudHh0JykpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuXHJcbiAgICAvLyBQREZcclxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBuYW1lLmVuZHNXaXRoKCcucGRmJykpIHtcclxuICAgICAgcmV0dXJuICdwZGYnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEV4Y2VsXHJcbiAgICBpZiAoXHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnIHx8XHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfHxcclxuICAgICAgL1xcLih4bHN8eGxzeCkkL2kudGVzdChuYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAnZXhjZWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdvcmRcclxuICAgIGlmIChcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL21zd29yZCcgfHxcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyB8fFxyXG4gICAgICAvXFwuKGRvY3xkb2N4KSQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICd3b3JkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBTVEwgKDNEIE1vZGVsKVxyXG4gICAgaWYgKFxyXG4gICAgICBtaW1lID09PSAnbW9kZWwvc3RsJyB8fFxyXG4gICAgICBtaW1lID09PSAnYXBwbGljYXRpb24vc2xhJyB8fCAvLyBTb21lIGJyb3dzZXJzIHVzZSB0aGlzIGZvciBTVExcclxuICAgICAgL1xcLnN0bCQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICdzdGwnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnb3RoZXInO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gIC8vICAgLy8gcmVzZXQgdGhlIHZhbHVlIHNvIGNoYW5nZSBhbHdheXMgdHJpZ2dlcnNcclxuICAvLyAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gIC8vICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgLy8gfVxyXG5cclxuICBvcGVuRmlsZURpYWxvZygpIHtcclxuICAgIC8vIGlmICh0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gdGhpcy5zZXR0aW5nKCdtYXhGaWxlTm8nKSkge1xyXG4gICAgLy8gICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgIC8vICAgICAvLyAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBkZXRhaWw6IGBNYXhpbXVtXCIke3RoaXMuc2V0dGluZygnbWF4RmlsZU5vJyl9XCIgY2FuIGJlIHVwbG9hZGVkYCxcclxuICAgIC8vICAgICAvLyAgIGxpZmU6IDMwMDBcclxuICAgIC8vICAgICAvLyB9KTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlSW1hZ2VVcmwgPSAnJztcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VTZWxlY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZUltYWdlVXJsID0gdXJsO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uRmlsZUNsaWNrKGZpbGU6IGFueSwgbmFtZTogYW55KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgIGxldCBsb2NhbFVybCA9ICcnO1xyXG5cclxuICAgIGlmIChmaWxlPy5maWxlKSB7XHJcbiAgICAgIGxvY2FsVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlLmZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxVcmwgPSBmaWxlPy5yZXN1bHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBsb2NhbFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcblxyXG5cclxuICAgIHRoaXMubG9hZEZpbGUobG9jYWxVcmwsIG5hbWUpO1xyXG4gICAgdGhpcy5maWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5TVExGaWxlKGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZmlsZSBzdHJ1Y3R1cmU6JywgZmlsZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3R1YWxGaWxlID0gZmlsZS5maWxlO1xyXG4gICAgaWYoYWN0dWFsRmlsZSkge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2FjdHVhbEZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG4gICAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGxGaWxlVXBsb2FkID0gYmxvYjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmV0Y2hBbmRMb2FkTW9kZWwoZmlsZS5vcmlnaW5hbFVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQW5kTG9hZE1vZGVsKG9yaWdpbmFsVXJsOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHJlZ2lvbjogb3JpZ2luYWxVcmwucmVnaW9uLFxyXG4gICAgICBidWNrZXROYW1lOiBvcmlnaW5hbFVybC5idWNrZXROYW1lLFxyXG4gICAgICBmaWxlVXJsOiBvcmlnaW5hbFVybC5maWxlVXJsLFxyXG4gICAgICBvYmplY3RLZXk6IG9yaWdpbmFsVXJsLm9iamVjdEtleSxcclxuICAgIH07XHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7dGhpcy5meEFwaVNlcnZpY2UuZ2V0U2VydmljZVVybCgnd29ya2Zsb3dfc2VydmljZScpfS93b3JrZmxvdy9maWxlcy9kb3dubG9hZGA7XHJcbiAgICB0aGlzLmh0dHAucG9zdChcclxuICAgICAgc2VydmljZVVybCxcclxuICAgICAgcGF5bG9hZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfVxyXG4gICAgKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuICAgICAgdGhpcy5zdGxGaWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RsRmlsZVVwbG9hZCA9IGJsb2I7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEZpbGUodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVOYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gZXh0ZW5zaW9uO1xyXG5cclxuICAgIGlmIChleHRlbnNpb24gPT09ICdwZGYnKSB7XHJcbiAgICAgIC8vIE5hdGl2ZSBQREYgcmVuZGVyaW5nXHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoWydkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICdjc3YnLCAnLnN0bCddLmluY2x1ZGVzKGV4dGVuc2lvbikpIHtcclxuICAgICAgLy8gTWljcm9zb2Z0IE9mZmljZSBWaWV3ZXIgZm9yIE9mZmljZSBmaWxlc1xyXG4gICAgICAvLyBjb25zdCBvZmZpY2VWaWV3ZXIgPSBgaHR0cHM6Ly92aWV3Lm9mZmljZWFwcHMubGl2ZS5jb20vb3AvZW1iZWQuYXNweD9zcmM9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhvZmZpY2VWaWV3ZXIpO1xyXG4gICAgICBjb25zdCBnb29nbGVWaWV3ZXJVcmwgPSAnaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQodXJsKSArICcmZW1iZWRkZWQ9dHJ1ZSc7XHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChnb29nbGVWaWV3ZXJVcmwpO1xyXG5cclxuICAgICAgLy8gdGhpcy5maWxlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKG9mZmljZVZpZXdlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gVW5zdXBwb3J0ZWQgdHlwZVxyXG4gICAgICB0aGlzLmZpbGVVcmwgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpbGVUeXBlID0gJ3Vuc3VwcG9ydGVkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRmlsZURpYWxvZygpIHtcclxuICAgIHRoaXMuZmlsZVZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gbnVsbDtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTdGxEaWFsb2coKSB7XHJcbiAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0bEZpbGVVcGxvYWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiICNmeENvbXBvbmVudD5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXVwbG9hZCBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyIHAtMCByb3VuZGVkLXNtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtOCBpdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8IS0tIDxwIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5QYXRpZW50IEltYWdlczwvcD4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBnYXAtMSB1cGxvYWQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICpuZ0lmPVwidXBsb2FkZWRGaWxlcy5sZW5ndGggPCBzZXR0aW5nKCdtYXhGaWxlTm8nKVwiIChjbGljayk9XCJvcGVuRmlsZURpYWxvZygpXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgZD1cIk0xNC4wMDEgMy4wMDE5NUMxMS41MzIyIDMuMDAxOTUgOS4xNjcyMiAzLjg2OTU2IDcuMjM2NDEgNS4zODQxNEw3LjIzNTk4IDQuNTk2OTVDNy4yMzU5OCA0LjUyNDczIDcuMjIxNzUgNC40NTMyMSA3LjE5NDExIDQuMzg2NDhDNy4xNjY0NyA0LjMxOTc1IDcuMTI1OTYgNC4yNTkxMiA3LjA3NDg5IDQuMjA4MDRDNy4wMjM4MSA0LjE1Njk3IDYuOTYzMTggNC4xMTY0NiA2Ljg5NjQ1IDQuMDg4ODJDNi44Mjk3MiA0LjA2MTE4IDYuNzU4MiA0LjA0Njk1IDYuNjg1OTggNC4wNDY5NUM2LjYxMzc1IDQuMDQ2OTUgNi41NDIyMyA0LjA2MTE4IDYuNDc1NSA0LjA4ODgyQzYuNDA4NzcgNC4xMTY0NiA2LjM0ODE0IDQuMTU2OTcgNi4yOTcwNyA0LjIwODA0QzYuMjQ1OTkgNC4yNTkxMiA2LjIwNTQ4IDQuMzE5NzUgNi4xNzc4NCA0LjM4NjQ4QzYuMTUwMiA0LjQ1MzIxIDYuMTM1OTggNC41MjQ3MyA2LjEzNTk4IDQuNTk2OTVMNi4xMzY0MiA2LjY4NjUyQzYuMTM2NDMgNi44MzIzOSA2LjE5NDM4IDYuOTcyMjggNi4yOTc1MiA3LjA3NTQyQzYuNDAwNjcgNy4xNzg1NiA2LjU0MDU1IDcuMjM2NTEgNi42ODY0MiA3LjIzNjUySDguNzc1OThDOC44NDgyIDcuMjM2NTIgOC45MTk3MiA3LjIyMjMgOC45ODY0NSA3LjE5NDY2QzkuMDUzMTggNy4xNjcwMiA5LjExMzgxIDcuMTI2NTEgOS4xNjQ4OSA3LjA3NTQzQzkuMjE1OTYgNy4wMjQzNiA5LjI1NjQ3IDYuOTYzNzMgOS4yODQxMSA2Ljg5N0M5LjMxMTc1IDYuODMwMjcgOS4zMjU5OCA2Ljc1ODc1IDkuMzI1OTggNi42ODY1MkM5LjMyNTk4IDYuNjE0MyA5LjMxMTc1IDYuNTQyNzggOS4yODQxMSA2LjQ3NjA1QzkuMjU2NDcgNi40MDkzMiA5LjIxNTk2IDYuMzQ4NjkgOS4xNjQ4OSA2LjI5NzYxQzkuMTEzODEgNi4yNDY1NCA5LjA1MzE4IDYuMjA2MDMgOC45ODY0NSA2LjE3ODM5QzguOTE5NzIgNi4xNTA3NSA4Ljg0ODIgNi4xMzY1MiA4Ljc3NTk4IDYuMTM2NTJIOC4wNTg0QzkuNzcwMiA0Ljg0Mzg3IDExLjgzOTkgNC4xMDE5NSAxNC4wMDEgNC4xMDE5NUMxOS40NzUxIDQuMTAxOTUgMjMuOTAxIDguNTI3ODIgMjMuOTAxIDE0LjAwMkMyMy45MDEgMTkuNDc2MSAxOS40NzUxIDIzLjkwMiAxNC4wMDEgMjMuOTAyQzguNTI2ODQgMjMuOTAyIDQuMTAwOTggMTkuNDc2MSA0LjEwMDk4IDE0LjAwMkM0LjEwMDk4IDEyLjYzODEgNC4zODI2MyAxMS4yODg4IDQuOTI4NTUgMTAuMDM4OUM0Ljk4NjkxIDkuOTA1MzIgNC45ODk4MiA5Ljc1Mzk5IDQuOTM2NjUgOS42MTgyMkM0Ljg4MzQ3IDkuNDgyNDYgNC43Nzg1NSA5LjM3MzM2IDQuNjQ0OTYgOS4zMTQ5MkM0LjU3ODc3IDkuMjg1OTYgNC41MDc1MyA5LjI3MDMyIDQuNDM1MyA5LjI2ODlDNC4zNjMwNiA5LjI2NzQ3IDQuMjkxMjYgOS4yODAzIDQuMjIzOTggOS4zMDY2M0M0LjE1NjcxIDkuMzMyOTcgNC4wOTUyOCA5LjM3MjMgNC4wNDMyMSA5LjQyMjM4QzMuOTkxMTQgOS40NzI0NyAzLjk0OTQ0IDkuNTMyMzIgMy45MjA1MSA5LjU5ODUyQzMuMzEzOTMgMTAuOTg3MiAzLjAwMDk4IDEyLjQ4NjYgMy4wMDA5OCAxNC4wMDJDMy4wMDA5OCAyMC4wNzA2IDcuOTMyMzYgMjUuMDAyIDE0LjAwMSAyNS4wMDJDMjAuMDY5NiAyNS4wMDIgMjUuMDAxIDIwLjA3MDYgMjUuMDAxIDE0LjAwMkMyNS4wMDEgNy45MzMzNCAyMC4wNjk2IDMuMDAxOTUgMTQuMDAxIDMuMDAxOTVaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICBkPVwiTTEzLjk5ODggNi4xMzk2NUM5LjY2MTYgNi4xMzk2NSA2LjEzMzc5IDkuNjY3NDYgNi4xMzM3OSAxNC4wMDQ2QzYuMTMzNzkgMTguMzQxOCA5LjY2MTYgMjEuODY5NiAxMy45OTg4IDIxLjg2OTZDMTguMzM2IDIxLjg2OTYgMjEuODYzOCAxOC4zNDE4IDIxLjg2MzggMTQuMDA0NkMyMS44NjM4IDkuNjY3NDYgMTguMzM2IDYuMTM5NjUgMTMuOTk4OCA2LjEzOTY1Wk0xMy45OTg4IDguMjI5NjVDMTQuMTQ0NyA4LjIyOTY1IDE0LjI4NDYgOC4yODc1OSAxNC4zODc3IDguMzkwNzRDMTQuNDkwOCA4LjQ5Mzg4IDE0LjU0ODggOC42MzM3OCAxNC41NDg4IDguNzc5NjVWMTMuNzc2OUwxNy41MjI3IDE2Ljc1MDhDMTcuNjI1OCAxNi44NTM5IDE3LjY4MzcgMTYuOTkzOCAxNy42ODM3IDE3LjEzOTZDMTcuNjgzNyAxNy4yODU1IDE3LjYyNTggMTcuNDI1NCAxNy41MjI3IDE3LjUyODVDMTcuNDE5NSAxNy42MzE2IDE3LjI3OTYgMTcuNjg5NiAxNy4xMzM4IDE3LjY4OTZDMTYuOTg3OSAxNy42ODk2IDE2Ljg0ODEgMTcuNjMxNiAxNi43NDQ5IDE3LjUyODVMMTMuNjA5OSAxNC4zOTM1QzEzLjUwNjggMTQuMjkwNCAxMy40NDg4IDE0LjE1MDUgMTMuNDQ4OCAxNC4wMDQ2VjguNzc5NjVDMTMuNDQ4OCA4LjYzMzc4IDEzLjUwNjcgOC40OTM4OCAxMy42MDk5IDguMzkwNzRDMTMuNzEzIDguMjg3NTkgMTMuODUyOSA4LjIyOTY1IDEzLjk5ODggOC4yMjk2NVpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyOC41NlwiIGhlaWdodD1cIjI4XCIgcng9XCIxLjUxNDc5XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTUuMDY4IDIyLjczOTFWMTcuNjcwOEgxOC40OTY4TDE0LjIxMDggMTIuNjAyNUw5LjkyNDggMTcuNjcwOEgxMy4zNTM2VjIyLjczOTFIOS4wNjc1OVYyMi42OTY5QzguOTIzNTggMjIuNzA1MyA4Ljc4NjQzIDIyLjczOTEgOC42Mzg5OSAyMi43MzkxQzYuOTMzOTEgMjIuNzM5MSA1LjI5ODY2IDIyLjA3MTcgNC4wOTI5OCAyMC44ODM1QzIuODg3MyAxOS42OTU0IDIuMjA5OTYgMTguMDg0IDIuMjA5OTYgMTYuNDAzN0MyLjIwOTk2IDEzLjE1MzIgNC43MDQ0MyAxMC41MDQyIDcuOTA1MjMgMTAuMTQxQzguMTg1ODUgOC42OTUzIDguOTY4OTIgNy4zOTExOCAxMC4xMTk3IDYuNDUyOTJDMTEuMjcwNiA1LjUxNDY1IDEyLjcxNzIgNS4wMDA4OSAxNC4yMTA4IDVDMTUuNzA0NyA1LjAwMDgyIDE3LjE1MTUgNS41MTQ1MiAxOC4zMDI2IDYuNDUyNzdDMTkuNDUzNyA3LjM5MTAxIDIwLjIzNzEgOC42OTUxNiAyMC41MTgxIDEwLjE0MUMyMy43MTg5IDEwLjUwNDIgMjYuMjEgMTMuMTUzMiAyNi4yMSAxNi40MDM3QzI2LjIxIDE4LjA4NCAyNS41MzI2IDE5LjY5NTQgMjQuMzI2OSAyMC44ODM1QzIzLjEyMTMgMjIuMDcxNyAyMS40ODYgMjIuNzM5MSAxOS43ODA5IDIyLjczOTFDMTkuNjM2OSAyMi43MzkxIDE5LjQ5ODEgMjIuNzA1MyAxOS4zNTIzIDIyLjY5NjlWMjIuNzM5MUgxNS4wNjhaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidXBsb2FkX3RpdGxlIFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygndXBsb2FkLXRleHQnKSB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBbbXVsdGlwbGVdPVwic2V0dGluZygnbXVsdGlwbGUtdXBsb2FkJylcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCIuY3N2LC5wZGYsLnhscywueGxzeCwuZG9jLC5kb2N4LC50eHQsaW1hZ2UvKiwuc3RsXCIgaGlkZGVuIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBmbGV4LXdyYXAgdy1mdWxsXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1cGxvYWRlZEZpbGVzPy5sZW5ndGhcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHVwbG9hZGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBwLTMgYm9yZGVyIHJvdW5kZWQtbGcgc2hhZG93LXNtIGJnLXdoaXRlIHctWzQ1MHB4XSB1cGxvYWRfZmlsZVwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gQ2xvc2UgaWNvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZV9pY29uIGN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjIgMjJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjExXCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTcuMDg5MTEgMTUuODg4OUw2LjExMTMzIDE0LjkxMTFMMTAuMDIyNCAxMUw2LjExMTMzIDcuMDg4ODZMNy4wODkxMSA2LjExMTA4TDExLjAwMDIgMTAuMDIyMkwxNC45MTEzIDYuMTExMDhMMTUuODg5MSA3LjA4ODg2TDExLjk3OCAxMUwxNS44ODkxIDE0LjkxMTFMMTQuOTExMyAxNS44ODg5TDExLjAwMDIgMTEuOTc3OEw3LjA4OTExIDE1Ljg4ODlaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbF90aXRsZSBmbGV4XCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGh1bWJuYWlsIG9uIGxlZnQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZS50eXBlID09PSAnaW1hZ2UnOyBlbHNlIG5vbkltYWdlVGh1bWJcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiIFtzcmNdPVwiZmlsZT8ucmVzdWx0XCIgYWx0PVwicHJldmlld1wiIChjbGljayk9XCJvbkltYWdlU2VsZWN0KGZpbGU/LnJlc3VsdClcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbGU/LnJlc3VsdFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpbGU/LnJlc3VsdFwiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjcwMTMgMTNIMy4zMTI3QzIuNTg1MDEgMTMgMiAxMi40MDQ4IDIgMTEuNjY0NVY0LjMzNTQ4QzIgMy41OTUxNiAyLjU4NTAxIDMgMy4zMTI3IDNIMTIuNjg3MUMxMy40MTQ3IDMgMTMuOTk5OCAzLjU5NTE2IDEzLjk5OTggNC4zMzU0OFYxMS42NjQ1QzE0LjAxNCAxMi40MDQ4IDEzLjQxNDcgMTMgMTIuNzAxMyAxM1pNOS4yNDgzNiA3LjkwNDg0TDcuMzkzNDcgMTAuMDY3N0M3LjI3OTMyIDEwLjIxMjkgNy4wNTEwMiAxMC4yMTI5IDYuOTM2ODggMTAuMDgyM0w1LjkzODA5IDguOTkzNTVDNS44MDk2NyA4Ljg2MjkgNS42MDk5MSA4Ljg2MjkgNS40ODE1IDguOTkzNTVMMy43NjkyOSAxMC44NjYxQzMuNTgzOCAxMS4wNjk0IDMuNzI2NDggMTEuNDAzMiAzLjk5NzU4IDExLjQwMzJINi4yNjYyNkg4LjEzNTQzSDEyLjAxNjRDMTIuMjg3NSAxMS40MDMyIDEyLjQzMDIgMTEuMDgzOSAxMi4yNDQ3IDEwLjg4MDZMOS43MTkyMiA3LjkwNDg0QzkuNTkwODEgNy43NTk2OCA5LjM3Njc4IDcuNzU5NjggOS4yNDgzNiA3LjkwNDg0Wk02LjczNzEyIDUuOTg4NzFDNi4yNTE5OSA1Ljk4ODcxIDUuODUyNDggNi4zOTUxNiA1Ljg1MjQ4IDYuODg4NzFDNS44NTI0OCA3LjM4MjI2IDYuMjUxOTkgNy43ODg3MSA2LjczNzEyIDcuNzg4NzFDNy4yMjIyNSA3Ljc4ODcxIDcuNjIxNzYgNy4zODIyNiA3LjYyMTc2IDYuODg4NzFDNy42MjE3NiA2LjM5NTE2IDcuMjIyMjUgNS45ODg3MSA2LjczNzEyIDUuOTg4NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk5OTk5OVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uSW1hZ2VUaHVtYj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWxlLnR5cGVcIj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInY3N2J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyM0E3NjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuOTQwNzYgMTAuMzQzM0M2Ljg1OTM5IDEwLjM0MzMgNi43ODcxNiAxMC4zNTg4IDYuNzI0MDggMTAuMzg5OUM2LjY2MTkxIDEwLjQyIDYuNjA5MzQgMTAuNDY0IDYuNTY2MzcgMTAuNTIxNkM2LjUyNDMyIDEwLjU3OTMgNi40OTIzMiAxMC42NDg5IDYuNDcwMzggMTAuNzMwNUM2LjQ0ODQ0IDEwLjgxMjIgNi40Mzc0NyAxMC45MDQgNi40Mzc0NyAxMS4wMDZDNi40Mzc0NyAxMS4xNDM1IDYuNDU0ODQgMTEuMjYxIDYuNDg5NTggMTEuMzU4NkM2LjUyNTIzIDExLjQ1NTMgNi41ODAwOSAxMS41Mjk0IDYuNjU0MTQgMTEuNTgwOEM2LjcyODIgMTEuNjMxNCA2LjgyMzczIDExLjY1NjcgNi45NDA3NiAxMS42NTY3QzcuMDIyMTIgMTEuNjU2NyA3LjEwMzQ5IDExLjY0NzggNy4xODQ4NiAxMS42MzAxQzcuMjY3MTQgMTEuNjEyMyA3LjM1NjI4IDExLjU4NyA3LjQ1MjI4IDExLjU1NDJWMTEuOTAwMkM3LjM2MzU5IDExLjkzNTcgNy4yNzYyOCAxMS45NjEgNy4xOTAzNSAxMS45NzZDNy4xMDQ0MSAxMS45OTIgNy4wMDc5NSAxMiA2LjkwMDk5IDEyQzYuNjk0MzcgMTIgNi41MjQzMiAxMS45NTg3IDYuMzkwODQgMTEuODc2MkM2LjI1ODI3IDExLjc5MjkgNi4xNTk5OSAxMS42NzY2IDYuMDk2IDExLjUyNzZDNi4wMzIgMTEuMzc3NyA2IDExLjIwMjkgNiAxMS4wMDMzQzYgMTAuODU2MSA2LjAyMDU3IDEwLjcyMTIgNi4wNjE3MSAxMC41OTg4QzYuMTAyODUgMTAuNDc2NCA2LjE2MzE5IDEwLjM3MDQgNi4yNDI3MyAxMC4yODA4QzYuMzIyMjcgMTAuMTkxMiA2LjQyMDU1IDEwLjEyMiA2LjUzNzU4IDEwLjA3MzJDNi42NTQ2IDEwLjAyNDQgNi43ODg5OSAxMCA2Ljk0MDc2IDEwQzcuMDQwNDEgMTAgNy4xNDAwNiAxMC4wMTI0IDcuMjM5NzEgMTAuMDM3M0M3LjM0MDI4IDEwLjA2MTIgNy40MzYyOCAxMC4wOTQ1IDcuNTI3NyAxMC4xMzcxTDcuMzkwNTcgMTAuNDcyNEM3LjMxNTYgMTAuNDM3OCA3LjI0MDE3IDEwLjQwNzYgNy4xNjQyOSAxMC4zODE5QzcuMDg4NDEgMTAuMzU2MiA3LjAxMzkgMTAuMzQzMyA2Ljk0MDc2IDEwLjM0MzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4wNjM2MyAxMS40MzMxQzkuMDYzNjMgMTEuNTQ4NSA5LjAzNDgzIDExLjY0ODcgOC45NzcyNCAxMS43MzM5QzguOTE5NjQgMTEuODE5IDguODM1NTMgMTEuODg0NyA4LjcyNDkgMTEuOTMwOEM4LjYxNTE5IDExLjk3NjkgOC40ODE3MiAxMiA4LjMyNDQ3IDEyQzguMjU0OTggMTIgOC4xODY4NyAxMS45OTU2IDguMTIwMTMgMTEuOTg2N0M4LjA1NDMxIDExLjk3NzggNy45OTA3NyAxMS45NjUgNy45Mjk1MSAxMS45NDgxQzcuODY5MTcgMTEuOTMwNCA3LjgxMTU3IDExLjkwODYgNy43NTY3MiAxMS44ODI5VjExLjQ5OTdDNy44NTE4IDExLjU0MDUgNy45NTA1NCAxMS41NzczIDguMDUyOTMgMTEuNjEwMUM4LjE1NTMzIDExLjY0MjkgOC4yNTY4MSAxMS42NTkzIDguMzU3MzggMTEuNjU5M0M4LjQyNjg2IDExLjY1OTMgOC40ODI2MyAxMS42NTA1IDguNTI0NjggMTEuNjMyN0M4LjU2NzY1IDExLjYxNSA4LjU5ODc0IDExLjU5MDYgOC42MTc5NCAxMS41NTk1QzguNjM3MTQgMTEuNTI4NSA4LjY0Njc0IDExLjQ5MyA4LjY0Njc0IDExLjQ1MzFDOC42NDY3NCAxMS40MDQzIDguNjI5ODIgMTEuMzYyNiA4LjU5NiAxMS4zMjhDOC41NjIxNyAxMS4yOTM0IDguNTE1NTQgMTEuMjYxIDguNDU2MTIgMTEuMjMwOUM4LjM5NzYgMTEuMjAwNyA4LjMzMTMyIDExLjE2ODMgOC4yNTcyNyAxMS4xMzM3QzguMjEwNjQgMTEuMTEyNCA4LjE1OTkgMTEuMDg2NyA4LjEwNTA1IDExLjA1NjZDOC4wNTAxOSAxMS4wMjU1IDcuOTk4MDggMTAuOTg3OCA3Ljk0ODcxIDEwLjk0MzRDNy44OTkzNCAxMC44OTkxIDcuODU4NjYgMTAuODQ1NCA3LjgyNjY2IDEwLjc4MjRDNy43OTU1OCAxMC43MTg2IDcuNzgwMDMgMTAuNjQyMyA3Ljc4MDAzIDEwLjU1MzZDNy43ODAwMyAxMC40MzczIDcuODA3NDYgMTAuMzM4IDcuODYyMzEgMTAuMjU1NUM3LjkxNzE3IDEwLjE3MyA3Ljk5NTM0IDEwLjExIDguMDk2ODIgMTAuMDY2NUM4LjE5OTIxIDEwLjAyMjIgOC4zMTk4OSAxMCA4LjQ1ODg2IDEwQzguNTYzMDggMTAgOC42NjIyOCAxMC4wMTIgOC43NTY0NSAxMC4wMzU5QzguODUxNTMgMTAuMDU5IDguOTUwNzIgMTAuMDkyNyA5LjA1NDAzIDEwLjEzNzFMOC45MTY5IDEwLjQ1NzhDOC44MjQ1NiAxMC40MjE0IDguNzQxODIgMTAuMzkzNCA4LjY2ODY4IDEwLjM3MzlDOC41OTU1NCAxMC4zNTM1IDguNTIxMDMgMTAuMzQzMyA4LjQ0NTE1IDEwLjM0MzNDOC4zOTIxMiAxMC4zNDMzIDguMzQ2ODYgMTAuMzUxNyA4LjMwOTM4IDEwLjM2ODZDOC4yNzE5IDEwLjM4NDYgOC4yNDM1NSAxMC40MDc2IDguMjI0MzYgMTAuNDM3OEM4LjIwNTE2IDEwLjQ2NzEgOC4xOTU1NiAxMC41MDEyIDguMTk1NTYgMTAuNTQwM0M4LjE5NTU2IDEwLjU4NjQgOC4yMDkyNyAxMC42MjU0IDguMjM2NyAxMC42NTc0QzguMjY1MDQgMTAuNjg4NCA4LjMwNzA5IDEwLjcxODYgOC4zNjI4NiAxMC43NDc4QzguNDE5NTUgMTAuNzc3MSA4LjQ4OTk0IDEwLjgxMTMgOC41NzQwNSAxMC44NTAzQzguNjc2NDUgMTAuODk3MyA4Ljc2Mzc2IDEwLjk0NjYgOC44MzU5OCAxMC45OThDOC45MDkxMiAxMS4wNDg2IDguOTY1MzUgMTEuMTA4NCA5LjAwNDY2IDExLjE3NzZDOS4wNDM5OCAxMS4yNDYgOS4wNjM2MyAxMS4zMzExIDkuMDYzNjMgMTEuNDMzMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxMC4wMjc5TDEwLjMxODQgMTEuOTczNEg5Ljg1NDkxTDkuMTc0NzEgMTAuMDI3OUg5LjYwMzk1TDkuOTgxMDggMTEuMTg1NkM5Ljk4NzQ4IDExLjIwNTEgOS45OTc5OSAxMS4yNDIgMTAuMDEyNiAxMS4yOTYxQzEwLjAyNzIgMTEuMzQ5MyAxMC4wNDE5IDExLjQwNjEgMTAuMDU2NSAxMS40NjY0QzEwLjA3MiAxMS41MjU4IDEwLjA4MjYgMTEuNTc1MSAxMC4wODggMTEuNjE0MUMxMC4wOTM1IDExLjU3NTEgMTAuMTAzMSAxMS41MjU4IDEwLjExNjggMTEuNDY2NEMxMC4xMzE1IDExLjQwNyAxMC4xNDU2IDExLjM1MDYgMTAuMTU5NCAxMS4yOTc0QzEwLjE3NCAxMS4yNDMzIDEwLjE4NDUgMTEuMjA2IDEwLjE5MDkgMTEuMTg1NkwxMC41NzA4IDEwLjAyNzlIMTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI5XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgKGNsaWNrKT1cIm9uRmlsZUNsaWNrKGZpbGUsZmlsZT8ubmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFGNUVCQlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4wNDM1MyAxMkg2LjYxMTA1VjEwLjMyMDNINi4wNTcyVjkuOTYwMzhINy41OTczOFYxMC4zMjAzSDcuMDQzNTNWMTJaTTkuNTYwMjcgMTJIOS4wNjY0MUw4LjU5MjA4IDExLjIyODVMOC4xMTc3NSAxMkg3LjY1NDU4TDguMzMxMTkgMTAuOTQ4MUw3LjY5NzgyIDkuOTYwMzhIOC4xNzQ5NEw4LjYxNDQgMTAuNjk0Mkw5LjA0NTQ4IDkuOTYwMzhIOS41MTE0NEw4Ljg3MTA5IDEwLjk3MThMOS41NjAyNyAxMlpNMTAuNjAzOCAxMkgxMC4xNzEzVjEwLjMyMDNIOS42MTc0N1Y5Ljk2MDM4SDExLjE1NzZWMTAuMzIwM0gxMC42MDM4VjEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNlwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidwZGYnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAoY2xpY2spPVwib25GaWxlQ2xpY2soZmlsZSxmaWxlPy5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjREQyMDI1XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjYwODQgOS45NjAzOEM2Ljg3MTYxIDkuOTYwMzggNy4wNjM2NiAxMC4wMTcxIDcuMTg0NTcgMTAuMTMwNkM3LjMwNTQ4IDEwLjI0MzEgNy4zNjU5MyAxMC4zOTg0IDcuMzY1OTMgMTAuNTk2NUM3LjM2NTkzIDEwLjY4NTggNy4zNTI0NSAxMC43NzE0IDcuMzI1NDcgMTAuODUzMkM3LjI5ODUgMTAuOTM0MiA3LjI1NDMyIDExLjAwNjIgNy4xOTI5NCAxMS4wNjk1QzcuMTMyNDkgMTEuMTMyNyA3LjA1MTU3IDExLjE4MjkgNi45NTAyIDExLjIyMDFDNi44NDg4MiAxMS4yNTY0IDYuNzIzNzMgMTEuMjc0NiA2LjU3NDkyIDExLjI3NDZINi4zODkzN1YxMkg1Ljk1Njg5VjkuOTYwMzhINi42MDg0Wk02LjU4NjA4IDEwLjMxNDdINi4zODkzN1YxMC45MjAySDYuNTMxNjdDNi42MTI1OCAxMC45MjAyIDYuNjgyOCAxMC45MDk1IDYuNzQyMzMgMTAuODg4MUM2LjgwMTg1IDEwLjg2NjcgNi44NDc4OSAxMC44MzMyIDYuODgwNDQgMTAuNzg3N0M2LjkxMjk5IDEwLjc0MjEgNi45MjkyNyAxMC42ODM1IDYuOTI5MjcgMTAuNjExOUM2LjkyOTI3IDEwLjUxMTQgNi45MDEzNyAxMC40MzcgNi44NDU1NiAxMC4zODg3QzYuNzg5NzYgMTAuMzM5NCA2LjcwMzI2IDEwLjMxNDcgNi41ODYwOCAxMC4zMTQ3Wk05LjQ0MzIyIDEwLjk2MDdDOS40NDMyMiAxMS4xOTA0IDkuMzk5MDQgMTEuMzgyNCA5LjMxMDY5IDExLjUzNjhDOS4yMjMyNiAxMS42OTAzIDkuMDk2MzEgMTEuODA2MSA4LjkyOTgzIDExLjg4NDJDOC43NjMzNSAxMS45NjE0IDguNTYyOTIgMTIgOC4zMjg1NCAxMkg3Ljc1MDk4VjkuOTYwMzhIOC4zOTEzMkM4LjYwNTI0IDkuOTYwMzggOC43OTA3OCA5Ljk5ODUxIDguOTQ3OTYgMTAuMDc0OEM5LjEwNTE0IDEwLjE1MDEgOS4yMjY5OCAxMC4yNjIyIDkuMzEzNDggMTAuNDExQzkuMzk5OTcgMTAuNTU4OSA5LjQ0MzIyIDEwLjc0MjEgOS40NDMyMiAxMC45NjA3Wk04Ljk5NCAxMC45NzE4QzguOTk0IDEwLjgyMTEgOC45NzE2OCAxMC42OTc1IDguOTI3MDQgMTAuNjAwN0M4Ljg4MzMyIDEwLjUwMzEgOC44MTgyMiAxMC40MzEgOC43MzE3MiAxMC4zODQ1QzguNjQ2MTYgMTAuMzM4IDguNTQwMTMgMTAuMzE0NyA4LjQxMzY0IDEwLjMxNDdIOC4xODM0NVYxMS42NDI5SDguMzY5QzguNTgwMTIgMTEuNjQyOSA4LjczNjg0IDExLjU4NjYgOC44MzkxNSAxMS40NzQxQzguOTQyMzggMTEuMzYxNSA4Ljk5NCAxMS4xOTQxIDguOTk0IDEwLjk3MThaTTEwLjI5MTQgMTJIOS44NjU5M1Y5Ljk2MDM4SDExLjAzNVYxMC4zMTQ3SDEwLjI5MTRWMTAuODQwN0gxMC45ODM0VjExLjE5MzZIMTAuMjkxNFYxMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI3XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInc3RsJ1wiIChjbGljayk9XCJvbk9wZW5TVExGaWxlKGZpbGUpXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTc4ODEgMTAuNTYxQzcuMTY5NTQgMTAuNDc4MSA3LjEzMDQ4IDEwLjQxMzUgNy4wNjE2MiAxMC4zNjczQzYuOTkzNDMgMTAuMzIxMiA2LjkwNDcxIDEwLjI5ODEgNi43OTU0NyAxMC4yOTgxQzYuNzE4NjcgMTAuMjk4MSA2LjY1MjggMTAuMzA5MSA2LjU5Nzg0IDEwLjMzMTNDNi41NDI4OSAxMC4zNTM0IDYuNTAwODUgMTAuMzgzNSA2LjQ3MTcyIDEwLjQyMTVDNi40NDI1OSAxMC40NTk0IDYuNDI3NjkgMTAuNTAyOCA2LjQyNzAzIDEwLjU1MTVDNi40MjcwMyAxMC41OTIgNi40MzY2MyAxMC42MjcxIDYuNDU1ODMgMTAuNjU2OUM2LjQ3NTY5IDEwLjY4NjYgNi41MDI1MSAxMC43MTE5IDYuNTM2MjcgMTAuNzMyOEM2LjU3MDA0IDEwLjc1MyA2LjYwNzQ0IDEwLjc3MDEgNi42NDg0OSAxMC43ODQxQzYuNjg5NTQgMTAuNzk4IDYuNzMwOTIgMTAuODA5NyA2Ljc3MjYzIDEwLjgxOTJMNi45NjMzIDEwLjg2NDdDNy4wNDAxIDEwLjg4MTggNy4xMTM5MiAxMC45MDQ5IDcuMTg0NzcgMTAuOTM0QzcuMjU2MjcgMTAuOTYzMSA3LjMyMDE2IDEwLjk5OTggNy4zNzY0MyAxMS4wNDQxQzcuNDMzMzcgMTEuMDg4NCA3LjQ3ODM5IDExLjE0MTkgNy41MTE1IDExLjIwNDZDNy41NDQ2IDExLjI2NzIgNy41NjExNSAxMS4zNDA2IDcuNTYxMTUgMTEuNDI0OEM3LjU2MTE1IDExLjUzODcgNy41MzA3IDExLjYzOSA3LjQ2OTc5IDExLjcyNTdDNy40MDg4OCAxMS44MTE3IDcuMzIwODIgMTEuODc5MSA3LjIwNTYyIDExLjkyNzlDNy4wOTEwOCAxMS45NzYgNi45NTIzOCAxMiA2Ljc4OTUxIDEyQzYuNjMxMjggMTIgNi40OTM5IDExLjk3NjYgNi4zNzczOCAxMS45Mjk4QzYuMjYxNTIgMTEuODgyOSA2LjE3MDgxIDExLjgxNDYgNi4xMDUyNyAxMS43MjQ3QzYuMDQwMzkgMTEuNjM0OSA2LjAwNTMgMTEuNTI1NCA2IDExLjM5NjNINi4zNjI0OEM2LjM2Nzc4IDExLjQ2NCA2LjM4OTYzIDExLjUyMDMgNi40MjgwMyAxMS41NjUzQzYuNDY2NDMgMTEuNjEwMiA2LjUxNjQxIDExLjY0MzcgNi41Nzc5OCAxMS42NjU5QzYuNjQwMjIgMTEuNjg4IDYuNzA5NzMgMTEuNjk5MSA2Ljc4NjUzIDExLjY5OTFDNi44NjY2NCAxMS42OTkxIDYuOTM2ODIgMTEuNjg3NyA2Ljk5NzA3IDExLjY2NDlDNy4wNTc5OCAxMS42NDE1IDcuMTA1NjUgMTEuNjA5MiA3LjE0MDA4IDExLjU2ODFDNy4xNzQ1IDExLjUyNjMgNy4xOTIwNSAxMS40Nzc2IDcuMTkyNzEgMTEuNDIxOUM3LjE5MjA1IDExLjM3MTMgNy4xNzY0OSAxMS4zMjk1IDcuMTQ2MDQgMTEuMjk2NkM3LjExNTU4IDExLjI2MzEgNy4wNzI4OCAxMS4yMzUyIDcuMDE3OTMgMTEuMjEzMUM2Ljk2MzY0IDExLjE5MDMgNi45MDAwOCAxMS4xNzAxIDYuODI3MjUgMTEuMTUyM0w2LjU5NTg2IDExLjA5NTRDNi40MjgzNiAxMS4wNTQzIDYuMjk1OTQgMTAuOTkxOSA2LjE5ODYyIDEwLjkwODRDNi4xMDE5NiAxMC44MjQyIDYuMDUzNjMgMTAuNzEyNSA2LjA1MzYzIDEwLjU3MzNDNi4wNTM2MyAxMC40NTg4IDYuMDg2MDcgMTAuMzU4NSA2LjE1MDk1IDEwLjI3MjRDNi4yMTY1IDEwLjE4NjQgNi4zMDU1NCAxMC4xMTk2IDYuNDE4MDkgMTAuMDcyMUM2LjUzMDY1IDEwLjAyNCA2LjY1ODA5IDEwIDYuODAwNDQgMTBDNi45NDQ3NyAxMCA3LjA3MTIyIDEwLjAyNCA3LjE3OTggMTAuMDcyMUM3LjI4OTA0IDEwLjExOTYgNy4zNzQ3OCAxMC4xODU3IDcuNDM3MDEgMTAuMjcwNUM3LjQ5OTI1IDEwLjM1NDcgNy41MzEzNiAxMC40NTE1IDcuNTMzMzQgMTAuNTYxSDcuMTc4ODFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy44MDAyNCAxMC4zMjE4VjEwLjAyNjZIOS40MjI5NlYxMC4zMjE4SDguNzk0MzNWMTEuOTcwNkg4LjQyODg3VjEwLjMyMThINy44MDAyNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjczNTc5IDExLjk3MDZWMTAuMDI2NkgxMC4xMDQyVjExLjY3NTRIMTFWMTEuOTcwNkg5LjczNTc5WlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzgwMTFfNzUwNVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiNlwiIHk9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNlwiIHk9XCIzXCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzgwMTFfNzUwNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjIyMjIgNy4zNTYyNVY1LjY0Mzc1TDYuNTU1NTYgNC43NzVWNi40ODc1TDguMjIyMjIgNy4zNTYyNVpNOC43Nzc3OCA3LjM1NjI1TDEwLjQ0NDQgNi40ODc1VjQuNzc1TDguNzc3NzggNS42NDM3NVY3LjM1NjI1Wk04LjUgNS4yMTI1TDEwLjE0NTggNC4zNTYyNUw4LjUgMy41TDYuODU0MTcgNC4zNTYyNUw4LjUgNS4yMTI1Wk02LjI3Nzc4IDYuOTI1QzYuMTg5ODEgNi44NzkxNyA2LjEyMTUzIDYuODE4NzUgNi4wNzI5MiA2Ljc0Mzc1QzYuMDI0MzEgNi42Njg3NSA2IDYuNTg1NDIgNiA2LjQ5Mzc1VjQuNTA2MjVDNiA0LjQxNDU4IDYuMDI0MzEgNC4zMzEyNSA2LjA3MjkyIDQuMjU2MjVDNi4xMjE1MyA0LjE4MTI1IDYuMTg5ODEgNC4xMjA4MyA2LjI3Nzc4IDQuMDc1TDguMjIyMjIgMy4wNjg3NUM4LjMxMDE5IDMuMDIyOTIgOC40MDI3OCAzIDguNSAzQzguNTk3MjIgMyA4LjY4OTgxIDMuMDIyOTIgOC43Nzc3OCAzLjA2ODc1TDEwLjcyMjIgNC4wNzVDMTAuODEwMiA0LjEyMDgzIDEwLjg3ODUgNC4xODEyNSAxMC45MjcxIDQuMjU2MjVDMTAuOTc1NyA0LjMzMTI1IDExIDQuNDE0NTggMTEgNC41MDYyNVY2LjQ5Mzc1QzExIDYuNTg1NDIgMTAuOTc1NyA2LjY2ODc1IDEwLjkyNzEgNi43NDM3NUMxMC44Nzg1IDYuODE4NzUgMTAuODEwMiA2Ljg3OTE3IDEwLjcyMjIgNi45MjVMOC43Nzc3OCA3LjkzMTI1QzguNjg5ODEgNy45NzcwOCA4LjU5NzIyIDggOC41IDhDOC40MDI3OCA4IDguMzEwMTkgNy45NzcwOCA4LjIyMjIyIDcuOTMxMjVMNi4yNzc3OCA2LjkyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3dvcmQnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAoY2xpY2spPVwib25GaWxlQ2xpY2soZmlsZSxmaWxlPy5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUY1RUJCXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjA0MzUzIDEySDYuNjExMDVWMTAuMzIwM0g2LjA1NzJWOS45NjAzOEg3LjU5NzM4VjEwLjMyMDNINy4wNDM1M1YxMlpNOS41NjAyNyAxMkg5LjA2NjQxTDguNTkyMDggMTEuMjI4NUw4LjExNzc1IDEySDcuNjU0NThMOC4zMzExOSAxMC45NDgxTDcuNjk3ODIgOS45NjAzOEg4LjE3NDk0TDguNjE0NCAxMC42OTQyTDkuMDQ1NDggOS45NjAzOEg5LjUxMTQ0TDguODcxMDkgMTAuOTcxOEw5LjU2MDI3IDEyWk0xMC42MDM4IDEySDEwLjE3MTNWMTAuMzIwM0g5LjYxNzQ3VjkuOTYwMzhIMTEuMTU3NlYxMC4zMjAzSDEwLjYwMzhWMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaERlZmF1bHQgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG48cGF0aCBkPVwiTTEyLjcwMTMgMTNIMy4zMTI3QzIuNTg1MDEgMTMgMiAxMi40MDQ4IDIgMTEuNjY0NVY0LjMzNTQ4QzIgMy41OTUxNiAyLjU4NTAxIDMgMy4zMTI3IDNIMTIuNjg3MUMxMy40MTQ3IDMgMTMuOTk5OCAzLjU5NTE2IDEzLjk5OTggNC4zMzU0OFYxMS42NjQ1QzE0LjAxNCAxMi40MDQ4IDEzLjQxNDcgMTMgMTIuNzAxMyAxM1pNOS4yNDgzNiA3LjkwNDg0TDcuMzkzNDcgMTAuMDY3N0M3LjI3OTMyIDEwLjIxMjkgNy4wNTEwMiAxMC4yMTI5IDYuOTM2ODggMTAuMDgyM0w1LjkzODA5IDguOTkzNTVDNS44MDk2NyA4Ljg2MjkgNS42MDk5MSA4Ljg2MjkgNS40ODE1IDguOTkzNTVMMy43NjkyOSAxMC44NjYxQzMuNTgzOCAxMS4wNjk0IDMuNzI2NDggMTEuNDAzMiAzLjk5NzU4IDExLjQwMzJINi4yNjYyNkg4LjEzNTQzSDEyLjAxNjRDMTIuMjg3NSAxMS40MDMyIDEyLjQzMDIgMTEuMDgzOSAxMi4yNDQ3IDEwLjg4MDZMOS43MTkyMiA3LjkwNDg0QzkuNTkwODEgNy43NTk2OCA5LjM3Njc4IDcuNzU5NjggOS4yNDgzNiA3LjkwNDg0Wk02LjczNzEyIDUuOTg4NzFDNi4yNTE5OSA1Ljk4ODcxIDUuODUyNDggNi4zOTUxNiA1Ljg1MjQ4IDYuODg4NzFDNS44NTI0OCA3LjM4MjI2IDYuMjUxOTkgNy43ODg3MSA2LjczNzEyIDcuNzg4NzFDNy4yMjIyNSA3Ljc4ODcxIDcuNjIxNzYgNy4zODIyNiA3LjYyMTc2IDYuODg4NzFDNy42MjE3NiA2LjM5NTE2IDcuMjIyMjUgNS45ODg3MSA2LjczNzEyIDUuOTg4NzFaXCIgZmlsbD1cIiM5OTk5OTlcIi8+XHJcbjwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTWV0YWRhdGEgb24gcmlnaHQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZV9ub3RlcyBtbC0yXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSBUaXRsZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gaW5wdXQtdGl0bGUgbS0wIC1tdC0xXCI+VGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZmlsZS50aXRsZVwiIG5hbWU9XCJ0aXRsZXt7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRpdGxlXCIgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgbWItMyB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAjdGl0bGVDdHJsPVwibmdNb2RlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGl0bGVDdHJsLmludmFsaWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LXhzIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgVGl0bGUgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIE5vdGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgLW10LTFcIj5Ob3RlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCIgbmFtZT1cIm5vdGVze3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIiBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0wIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIHJvd3M9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgI25vdGVzQ3RybD1cIm5nTW9kZWxcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vdGVzQ3RybC5pbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgdGV4dC14cyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vdGVzIGFyZSByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeSBtdC0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQ2F0ZWdvcnkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gaW5wdXQtdGl0bGUgbS0wXCI+Q2F0ZWdvcnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJmaWxlLmNhdGVnb3J5SWQgXCIgbmFtZT1cImNhdGVnb3J5e3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiByZXF1aXJlZCAjY2F0ZWdvcnlDdHJsPVwibmdNb2RlbFwiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBDYXRlZ29yeTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBjYXRlZ29yaWVzXCIgW25nVmFsdWVdPVwiYy52YWx1ZVwiPnt7IGMubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yeUN0cmwuaW52YWxpZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQteHMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIENhdGVnb3J5IGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gSW1hZ2UgUHJldmlldyBEaWFsb2cgLS0+XHJcbiAgPHAtZGlhbG9nIGhlYWRlcj1cIkltYWdlIFByZXZpZXdcIiBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbc3R5bGVdPVwie3dpZHRoOiAnNzByZW0nfVwiXHJcbiAgICBjbGFzcz1cImN1c3RvbURpYWxvZ0NsYXNzXCIgKG9uSGlkZSk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICA8aW1nIFtzcmNdPVwic2VsZWN0ZUltYWdlVXJsXCIgLz5cclxuICA8L3AtZGlhbG9nPlxyXG5cclxuICAgIDwhLS0gRG9jdW1lbnQgUHJldmlldyBEaWFsb2cgLS0+XHJcbiAgPHAtZGlhbG9nIGhlYWRlcj1cIkRvY3VtZW50IFByZXZpZXdcIiBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbKHZpc2libGUpXT1cImZpbGVWaXNpYmxlXCJcclxuICAgIFtzdHlsZV09XCJ7d2lkdGg6ICc3MHJlbSd9XCIgY2xhc3M9XCJjdXN0b21EaWFsb2dDbGFzc1wiIChvbkhpZGUpPVwiY2xvc2VGaWxlRGlhbG9nKClcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWxlVXJsICYmIGZpbGVUeXBlICE9PSAndW5zdXBwb3J0ZWQnOyBlbHNlIHVuc3VwcG9ydGVkTXNnXCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj5cclxuICAgICAgPGlmcmFtZSBbc3JjXT1cImZpbGVVcmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI2MDBcIiBzdHlsZT1cImJvcmRlcjogbm9uZTtcIiBhbGxvd2Z1bGxzY3JlZW4+XHJcbiAgICAgIDwvaWZyYW1lPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN1bnN1cHBvcnRlZE1zZz5cclxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXJlZC02MDAgbXQtM1wiICpuZ0lmPVwiZmlsZVR5cGUgPT09ICd1bnN1cHBvcnRlZCdcIj5cclxuICAgICAgICBVbnN1cHBvcnRlZCBmaWxlIHR5cGUuIFBsZWFzZSB1cGxvYWQgYSBQREYsIERPQ1gsIFhMU1gsIG9yIFBQVFggZmlsZS5cclxuICAgICAgPC9wPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtZGlhbG9nPlxyXG5cclxuICA8IS0tIFNUTCBGaWxlIFByZXZpZXcgRGlhbG9nIC0tPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RsRmlsZVVwbG9hZFwiPlxyXG4gIDxwLWRpYWxvZyBoZWFkZXI9XCJTVEwgRmlsZSBQcmV2aWV3XCIgW21vZGFsXT1cInRydWVcIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgWyh2aXNpYmxlKV09XCJzdGxGaWxlVmlzaWJsZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc3MHJlbSd9XCJcclxuICAgIGNsYXNzPVwiY3VzdG9tRGlhbG9nQ2xhc3NcIiAob25IaWRlKT1cImNsb3NlU3RsRGlhbG9nKClcIj5cclxuICAgIDxhcHAtdGhyZWUtdmlld2VyIFttYW51YWxGaWxlVXBsb2FkXT1cInN0bEZpbGVVcGxvYWRcIj48L2FwcC10aHJlZS12aWV3ZXI+XHJcbiAgPC9wLWRpYWxvZz5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgPHAtdG9hc3QgW3ByZXZlbnRPcGVuRHVwbGljYXRlc109XCJ0cnVlXCIgW2JyZWFrcG9pbnRzXT1cInsgJzQyNnB4JzogeyB3aWR0aDogJzkwJScgfSB9XCIgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG5cclxuPC9meC1jb21wb25lbnQ+Il19
698
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQWMsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsSixPQUFPLEVBQTZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZ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QkFBZ0IsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixDQUFDLGFBQ25KLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDO3VQQTJCeEIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQWdCSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZ4QmFzZUNvbXBvbmVudCwgRnhDb21wb25lbnQsIEZ4U2VsZWN0U2V0dGluZywgRnhTZXR0aW5nLCBGeFN0cmluZ1NldHRpbmcsIEZ4VmFsaWRhdGlvbiwgRnhWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUsIFVwbG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFRocmVlVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vdGhyZWUtdmlld2VyL3RocmVlLXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnkgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2NvcmUnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z4LXVwbG9hZGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZ4Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRmlsZVVwbG9hZE1vZHVsZSwgVG9hc3RNb2R1bGUsIENvbmZpcm1EaWFsb2dNb2R1bGUsIERpYWxvZ01vZHVsZSwgVGhyZWVWaWV3ZXJDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91cGxvYWRlci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXR7XHJcbiAgLy8gcHVibGljIHVwbG9hZEZpbGVDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyB1cGxvYWRGaWxlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHVibGljIGZvcm1hdHRlZERhdGE6IGFueSA9IHtcclxuICAgIHVwbG9hZGVkRmlsZXM6IFtdLFxyXG4gICAgZGVsZXRlZEZpbGVzOiBbXVxyXG4gIH07XHJcbiAgY2F0ZWdvcmllcyA9IFtcclxuICAgIHsgbGFiZWw6ICdPcmFsIEltYWdlcycsIHZhbHVlOiAxNiB9LFxyXG4gICAgeyBsYWJlbDogJ1Bhc3QgRG9jcycsIHZhbHVlOiAxNyB9LFxyXG4gICAgeyBsYWJlbDogJ1gtUmF5cycsIHZhbHVlOiAxNCB9LFxyXG4gICAgeyBsYWJlbDogJ1Byb2ZpbGUnLCB2YWx1ZTogMTggfSxcclxuICBdO1xyXG5cclxuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlSW1hZ2VVcmw6IHN0cmluZyA9ICcnO1xyXG4gIGZpbGVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xyXG4gIGZpbGVUeXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBmaWxlTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlOiBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgZnhBcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlUmVnaXN0cnlcclxuICApIHtcclxuICAgIHN1cGVyKGNkcilcclxuICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoZnhEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuX3JlZ2lzdGVyKHRoaXMudXBsb2FkRmlsZUNvbnRyb2wpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHN0bEZpbGVWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RsRmlsZVVwbG9hZDogYW55ID0gbnVsbDtcclxuXHJcbiAgdXBsb2FkZWRJbWFnZXM6IHsgW2tleTogc3RyaW5nXTogeyByZXN1bHQ6IHN0cmluZywgZmlsZTogRmlsZSB8IG51bGwgfVtdIH0gPSB7fTtcclxuICBkZWxldGVkRmlsZXM6IGFueVtdID0gW107XHJcbiAgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XHJcbiAgQFZpZXdDaGlsZCgnZnhDb21wb25lbnQnKSBmeENvbXBvbmVudCE6IEZ4Q29tcG9uZW50O1xyXG4gIC8vIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc1trZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlcykpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTxzdHJpbmc+W10gPSBbXTtcclxuXHJcbiAgLy8gICAgICAgICB1cmxzLmZvckVhY2goKHVybDogc3RyaW5nKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmICh1cmwpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpKVxyXG4gIC8vICAgICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZVVybHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3VwbG9hZGVyS2V5XSA9IGltYWdlVXJscy5tYXAocmVzdWx0ID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdCxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIC8vICAgICAgICAgICAgICAgLy8gdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRJbWFnZXNdXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBPYmplY3QudmFsdWVzKHRoaXMudXBsb2FkZWRJbWFnZXMpLmZsYXQoKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIC8vICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gIC8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzW2tleV0gPSB2YWx1ZTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmcsIG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgodXJsOiBzdHJpbmcpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKHVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8ganVzdCBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogdXJsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XHJcblxyXG4gIC8vICAgICAgICAgLy8gRXh0cmFjdCB1cGxvYWRlciBrZXlzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIFVSTCBhcnJheXNcclxuICAvLyAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gIC8vICAgICAgICAgICAgIHVwbG9hZGVkRmlsZXNNYXBba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9XHJcblxyXG4gIC8vICAgICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgLy8gICAgICAgICAgIC8vIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTx7IHJlc3VsdDogc3RyaW5nOyBvcmlnaW5hbFVybDogYW55OyB0aXRsZTpzdHJpbmcgOyBub3RlczpzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyAgICAgICAgICAgLy8gdXJscy5mb3JFYWNoKChvcmlnaW5hbFVybDphbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgLy8gICBpZiAob3JpZ2luYWxVcmwpIHtcclxuICAvLyAgICAgICAgICAgLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgICAgIC8vICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgLy8gICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCAgICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbFxyXG4gIC8vICAgICAgICAgICAvLyAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgLy8gICAgICk7XHJcbiAgLy8gICAgICAgICAgIC8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICAvLyAgIH1cclxuICAvLyAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gIC8vICAgICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6IHN0cmluZzsgbm90ZXM6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vIHVybHMuZm9yRWFjaCgob3JpZ2luYWxVcmw6IGFueSkgPT4ge1xyXG4gIC8vICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuICAvLyAgICAgICAgIHRpdGxlOiBvcmlnaW5hbFVybD8udGl0bGUgfHwgJycsIC8vIGRlZmF1bHQgZW1wdHkgaWYgbm90IHByZXNlbnRcclxuICAvLyAgICAgICAgIG5vdGVzOiBvcmlnaW5hbFVybD8ubm90ZXMgfHwgJydcclxuICAvLyAgICAgICB9KSlcclxuICAvLyAgICAgKTtcclxuICAvLyAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgIH1cclxuICAvLyB9KTtcclxuXHJcblxyXG4gIC8vICAgICAgICAgICBpZiAoaW1hZ2VGZXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIHJlc3VsdDogaXRlbS5yZXN1bHQsXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgbm90ZXM6ICcnXHJcbiAgLy8gICAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgLy8gICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgLy8gICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gICAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgfVxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiB7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfVtdIH0gPSB2YXJpYWJsZXMudXBsb2FkZWRGaWxlcztcclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBmaWxlT2JqPy5vcmlnaW5hbFVybDtcclxuICAvLyAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldChvcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gaW1hZ2VEYXRhLm1hcChpdGVtID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGl0ZW0ub3JpZ2luYWxVcmwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogaXRlbS5yZXN1bHRcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgLy8gcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXQ/LmZpbGVzPy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKHtcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgcmVzdWx0OiBlLnRhcmdldD8ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlPy5uYW1lLFxyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KClcclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgLy8gICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzW2ldO1xyXG4gIC8vICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7XHJcbiAgLy8gICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gIC8vICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgLy8gICAgICAgICAgIG5vdGVzOiAnJyxcclxuICAvLyAgICAgICAgICAgY2F0ZWdvcnk6ICcnLFxyXG4gIC8vICAgICAgICAgICB0eXBlOiB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpLFxyXG4gIC8vICAgICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAvLyAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHVybHNcclxuICAvLyAgICAgICAgICAgLmZpbHRlcigoZmlsZU9iajogYW55KSA9PiAhIWZpbGVPYmopIFxyXG4gIC8vICAgICAgICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgICAvLyBjb25zdCBmaWxlVHlwZSA9IHRoaXMuZGV0ZWN0RmlsZVR5cGVGcm9tVXJsKGZpbGVPYmo/Lm9yaWdpbmFsVXJsIHx8IGZpbGVPYmo/Lm5hbWUpO1xyXG5cclxuICAvLyAgICAgICAgICAgICByZXR1cm4ge1xyXG4gIC8vICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgZmlsZTogbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgLy8gICAgICAgICAgICAgICBvcmlnaW5hbFVybDogZmlsZU9iai5vcmlnaW5hbFVybCwgICAgXHJcbiAgLy8gICAgICAgICAgICAgICByZXN1bHQ6IGZpbGVPYmo/LnR5cGUgPT09ICdpbWFnZScgPyBmaWxlT2JqLm9yaWdpbmFsVXJsLnByZXZpZXdVcmwgOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgbmFtZTogZmlsZU9iaj8ubmFtZSB8fCAnJyxcclxuICAvLyAgICAgICAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAvLyAgICAgICAgICAgICAgIG5vdGVzOiBmaWxlT2JqPy5ub3RlcyB8fCAnJyxcclxuICAvLyAgICAgICAgICAgICAgIGNhdGVnb3J5OiBmaWxlT2JqPy5jYXRlZ29yeSB8fCAnJyxcclxuICAvLyAgICAgICAgICAgICAgIHR5cGU6IGZpbGVPYmo/LnR5cGUsICAgICAgICAgICAgICAgIFxyXG4gIC8vICAgICAgICAgICAgIH07XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgICAgIGlmIChmb3JtYXR0ZWQubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gIC8vICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8gY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XHJcblxyXG5cclxuICAgICAgICAvLyBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgICAgICAgLy8gICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmICh2YWx1ZSBhcyBhbnkpPy51cGxvYWRlZEZpbGVzKSB7XHJcbiAgICAgICAgLy8gICAgIHVwbG9hZGVkRmlsZXNNYXBba2V5XSA9ICh2YWx1ZSBhcyBhbnkpLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgaWYgKFxyXG4gICAgdmFsdWUgJiZcclxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICd1cGxvYWRlZEZpbGVzJyBpbiB2YWx1ZVxyXG4gICkge1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzTWFwW2tleV0gPSAodmFsdWUgYXMgYW55KS51cGxvYWRlZEZpbGVzO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiAgICAgICAgLy8gZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIGZpbGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgICAgICAgLy8gICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAgIC8vICAgICAuZmlsdGVyKChmaWxlT2JqOiBhbnkpID0+ICEhZmlsZU9iailcclxuICAgICAgICAvLyAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IGZpbGVOYW1lID0gb3JpZ2luYWxVcmxPYmo/LmZpbGVOYW1lIHx8ICcnO1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IGZpbGVVcmwgPSBvcmlnaW5hbFVybE9iaj8uZmlsZVVybCB8fCAnJztcclxuICAgICAgICAvLyAgICAgICBjb25zdCBwcmV2aWV3VXJsID0gb3JpZ2luYWxVcmxPYmo/LnByZXZpZXdVcmw7XHJcbiAgICAgICAgLy8gICAgICAgY29uc3QgdHlwZSA9IGZpbGVPYmo/LnR5cGU7XHJcblxyXG4gICAgICAgIC8vICAgICAgIC8vIGRldGVjdCB0eXBlIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uXHJcbiAgICAgICAgLy8gICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlTmFtZSB8fCBmaWxlVXJsKTtcclxuXHJcbiAgICAgICAgLy8gICAgICAgcmV0dXJuIHtcclxuICAgICAgICAvLyAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAvLyAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZyBsb2NhbFxyXG4gICAgICAgIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsT2JqLCAgICAgICAvLyBrZWVwIHdob2xlIG9iamVjdFxyXG4gICAgICAgIC8vICAgICAgICAgcmVzdWx0OiB0eXBlID09PSAnaW1hZ2UnXHJcbiAgICAgICAgLy8gICAgICAgICAgID8gKHByZXZpZXdVcmwpICAgICAgICAvLyBwcmVmZXIgcHJldmlld1VybCwgZmFsbGJhY2sgdG8gZmlsZVVybFxyXG4gICAgICAgIC8vICAgICAgICAgICA6IHByZXZpZXdVcmwsXHJcbiAgICAgICAgLy8gICAgICAgICBuYW1lOiBmaWxlTmFtZSxcclxuICAgICAgICAvLyAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAvLyAgICAgICAgIG5vdGVzOiBmaWxlT2JqPy5ub3RlcyB8fCAnJyxcclxuICAgICAgICAvLyAgICAgICAgIGNhdGVnb3J5SWQ6IGZpbGVPYmo/LmNhdGVnb3J5SWQgfHwgJycsXHJcbiAgICAgICAgLy8gICAgICAgICB0eXBlOiB0eXBlLCAgICAgICAgICAgICAgICAgICAgLy8gY29tcHV0ZWQgdHlwZVxyXG4gICAgICAgIC8vICAgICAgIH07XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG5cclxuICAgICAgICAvLyAgIGlmIChmb3JtYXR0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgICAgICAvLyAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxubmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIHNldFRpbWVvdXQoKCk9PntcclxuICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcbiAgY29uc29sZS5sb2coJ1VwbG9hZGVyIEtleTonLCBrZXkpO1xyXG4gIGNvbnNvbGUubG9nKCdVcGxvYWRlZCBGaWxlcyBNYXA6JywgdGhpcy51cGxvYWRlZEZpbGVzTWFwKTtcclxuXHJcbiAgY29uc3QgZmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXNNYXA/LltrZXldO1xyXG4gIGNvbnNvbGUubG9nKCdGaWxlcyB0byBQYXRjaDonLCBmaWxlcyk7XHJcblxyXG4gIC8vIFN0cm9uZyBjaGVjayDigJQgZW5zdXJlcyBwYXRjaGluZyBoYXBwZW5zIG9ubHkgd2hlbiBmaWxlcyBhY3R1YWxseSBleGlzdFxyXG4gIGlmIChrZXkgJiYgQXJyYXkuaXNBcnJheShmaWxlcykgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZpbGVzXHJcbiAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKVxyXG4gICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFVybE9iaiA9IGZpbGVPYmoub3JpZ2luYWxVcmw7XHJcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBvcmlnaW5hbFVybE9iaj8uZmlsZU5hbWUgfHwgJyc7XHJcbiAgICAgICAgY29uc3QgcHJldmlld1VybCA9IG9yaWdpbmFsVXJsT2JqPy5wcmV2aWV3VXJsO1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBmaWxlT2JqPy50eXBlO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybE9iaixcclxuICAgICAgICAgIHJlc3VsdDogcHJldmlld1VybCxcclxuICAgICAgICAgIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgdGl0bGU6IGZpbGVPYmo/LnRpdGxlIHx8ICcnLFxyXG4gICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4gICAgICAgICAgY2F0ZWdvcnlJZDogZmlsZU9iaj8uY2F0ZWdvcnlJZCB8fCAnJyxcclxuICAgICAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZygnRm9ybWF0dGVkIEZpbGVzIGZvciBQYXRjaGluZzonLCBmb3JtYXR0ZWQpO1xyXG4gICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIH0sMTAwKVxyXG5cclxufVxyXG5cclxuXHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLnNldHRpbmcoJ21heEZpbGVTaXplJyk7XHJcblxyXG4gICAgQXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgICAgY29uc3QgZmlsZVNpemVJbk1CID0gZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KTtcclxuXHJcbiAgICAgIGlmIChmaWxlU2l6ZUluTUIgPiBtYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogJ0ZpbGUgVG9vIExhcmdlJyxcclxuICAgICAgICAgICAgZGV0YWlsOiBgVGhlIGZpbGUgXCIke2ZpbGUubmFtZX1cIiBleGNlZWRzIHRoZSBtYXhpbXVtIHNpemUgbGltaXQgb2YgJHttYXhGaWxlU2l6ZX0gTUIuYCxcclxuICAgICAgICAgICAgbGlmZTogNDAwMCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdGaWxlOiBhbnkgPSB7XHJcbiAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgICAgICAgcmVzdWx0OiBudWxsLFxyXG4gICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgbm90ZXM6ICcnLFxyXG4gICAgICAgIGNhdGVnb3J5SWQ6ICcnLFxyXG4gICAgICAgIHR5cGU6IGZpbGVUeXBlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGZpbGVUeXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgICAgICAgICBuZXdGaWxlLnJlc3VsdCA9IGUudGFyZ2V0Py5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7IC8vIG9ubHkgaW1hZ2VzIG5lZWQgcHJldmlld1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1pbWFnZSDihpIgcHVzaCBkaXJlY3RseVxyXG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkTWV0YTogdHJ1ZSB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NZXRhQ2hhbmdlKCkge1xyXG4gIC8vICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gfVxyXG5cclxuICBvbk1ldGFDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuXHJcbiAgICAvLyDinYwgSW52YWxpZCBpZiBhbnkgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAgY29uc3QgYWxsVmFsaWQgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZXZlcnkoXHJcbiAgICAgIGYgPT4gZi50aXRsZT8udHJpbSgpICYmIGYubm90ZXM/LnRyaW0oKSAmJiBmLmNhdGVnb3J5SWQ/LnRvU3RyaW5nKCkudHJpbSgpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghYWxsVmFsaWQpIHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gcHVibGljIGRlbGV0ZUZpbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGU/LmlkICE9PSBpZCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IFtkZWxldGVkRmlsZV0gPSB0aGlzLnVwbG9hZGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gRW5zdXJlIGZvcm1hdHRlZERhdGEgZXhpc3RzIGFuZCBpbml0aWFsaXplIGlmIHVuZGVmaW5lZFxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0gdGhpcy5mb3JtYXR0ZWREYXRhIHx8IHsgdXBsb2FkZWRGaWxlczogW10sIGRlbGV0ZWRGaWxlczogW10gfTtcclxuXHJcbiAgICAvLyBBZGQgdGhlIGRlbGV0ZWQgZmlsZSB0byB0aGUgZGVsZXRlZEZpbGVzIGFycmF5XHJcbiAgICB0aGlzLmRlbGV0ZWRGaWxlcyA9IFsuLi50aGlzLmRlbGV0ZWRGaWxlcywgZGVsZXRlZEZpbGVdO1xyXG5cclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuXHJcbiAgICAvLyBVcGRhdGUgZm9ybWF0dGVkRGF0YVxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgICAgIHVwbG9hZGVkRmlsZXM6IHRoaXMudXBsb2FkZWRGaWxlcyxcclxuICAgICAgZGVsZXRlZEZpbGVzOiB0aGlzLmRlbGV0ZWRGaWxlc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSB1cGxvYWRGaWxlQ29udHJvbFxyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3VwbG9hZC10ZXh0JywgJHRpdGxlOiAnVXBsb2FkIFRleHQnLCB2YWx1ZTogJ1VwbG9hZCBGaWxlJyB9KSxcclxuICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZHMnLCB2YWx1ZTogZmFsc2UgfSwgW3sgb3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWUgfSwgeyBvcHRpb246ICdEaXNhYmxlJywgdmFsdWU6IGZhbHNlIH1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVObycsICR0aXRsZTogJ01heGltdW0gRmlsZSBVcGxvYWQgQWxsb3dlZCcsIHZhbHVlOiA4IH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWF4RmlsZVNpemUnLCAkdGl0bGU6ICdNYXhpbXVtIEZpbGUgU2l6ZSBBbGxvd2VkJywgdmFsdWU6IDEwIH0pLFxyXG4gICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVTaXplJywgJHRpdGxlOiAnTWF4aW11bSBGaWxlIFNpemUgQWxsb3dlZCcsIHZhbHVlOiAxMCB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0RmlsZVR5cGUoZmlsZTogRmlsZSk6ICdpbWFnZScgfCAnY3N2JyB8ICd0ZXh0JyB8ICdwZGYnIHwgJ2V4Y2VsJyB8ICd3b3JkJyB8ICdzdGwnIHwgJ290aGVyJyB7XHJcbiAgICBjb25zdCBtaW1lID0gKGZpbGUudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG5hbWUgPSAoZmlsZS5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIC8vIEltYWdlc1xyXG4gICAgaWYgKG1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChuYW1lKSkge1xyXG4gICAgICByZXR1cm4gJ2ltYWdlJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDU1ZcclxuICAgIGlmIChtaW1lID09PSAndGV4dC9jc3YnIHx8IG5hbWUuZW5kc1dpdGgoJy5jc3YnKSkge1xyXG4gICAgICByZXR1cm4gJ2Nzdic7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGV4dCBmaWxlc1xyXG4gICAgaWYgKG1pbWUgPT09ICd0ZXh0L3BsYWluJyB8fCBuYW1lLmVuZHNXaXRoKCcudHh0JykpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuXHJcbiAgICAvLyBQREZcclxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBuYW1lLmVuZHNXaXRoKCcucGRmJykpIHtcclxuICAgICAgcmV0dXJuICdwZGYnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEV4Y2VsXHJcbiAgICBpZiAoXHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnIHx8XHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfHxcclxuICAgICAgL1xcLih4bHN8eGxzeCkkL2kudGVzdChuYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAnZXhjZWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdvcmRcclxuICAgIGlmIChcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL21zd29yZCcgfHxcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyB8fFxyXG4gICAgICAvXFwuKGRvY3xkb2N4KSQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICd3b3JkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBTVEwgKDNEIE1vZGVsKVxyXG4gICAgaWYgKFxyXG4gICAgICBtaW1lID09PSAnbW9kZWwvc3RsJyB8fFxyXG4gICAgICBtaW1lID09PSAnYXBwbGljYXRpb24vc2xhJyB8fCAvLyBTb21lIGJyb3dzZXJzIHVzZSB0aGlzIGZvciBTVExcclxuICAgICAgL1xcLnN0bCQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICdzdGwnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnb3RoZXInO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gIC8vICAgLy8gcmVzZXQgdGhlIHZhbHVlIHNvIGNoYW5nZSBhbHdheXMgdHJpZ2dlcnNcclxuICAvLyAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gIC8vICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgLy8gfVxyXG5cclxuICBvcGVuRmlsZURpYWxvZygpIHtcclxuICAgIC8vIGlmICh0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gdGhpcy5zZXR0aW5nKCdtYXhGaWxlTm8nKSkge1xyXG4gICAgLy8gICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgIC8vICAgICAvLyAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBkZXRhaWw6IGBNYXhpbXVtXCIke3RoaXMuc2V0dGluZygnbWF4RmlsZU5vJyl9XCIgY2FuIGJlIHVwbG9hZGVkYCxcclxuICAgIC8vICAgICAvLyAgIGxpZmU6IDMwMDBcclxuICAgIC8vICAgICAvLyB9KTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlSW1hZ2VVcmwgPSAnJztcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VTZWxlY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZUltYWdlVXJsID0gdXJsO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uRmlsZUNsaWNrKGZpbGU6IGFueSwgbmFtZTogYW55KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgIGxldCBsb2NhbFVybCA9ICcnO1xyXG5cclxuICAgIGlmIChmaWxlPy5maWxlKSB7XHJcbiAgICAgIGxvY2FsVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlLmZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxVcmwgPSBmaWxlPy5yZXN1bHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBsb2NhbFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcblxyXG5cclxuICAgIHRoaXMubG9hZEZpbGUobG9jYWxVcmwsIG5hbWUpO1xyXG4gICAgdGhpcy5maWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5TVExGaWxlKGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZmlsZSBzdHJ1Y3R1cmU6JywgZmlsZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3R1YWxGaWxlID0gZmlsZS5maWxlO1xyXG4gICAgaWYoYWN0dWFsRmlsZSkge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2FjdHVhbEZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG4gICAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGxGaWxlVXBsb2FkID0gYmxvYjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmV0Y2hBbmRMb2FkTW9kZWwoZmlsZS5vcmlnaW5hbFVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQW5kTG9hZE1vZGVsKG9yaWdpbmFsVXJsOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHJlZ2lvbjogb3JpZ2luYWxVcmwucmVnaW9uLFxyXG4gICAgICBidWNrZXROYW1lOiBvcmlnaW5hbFVybC5idWNrZXROYW1lLFxyXG4gICAgICBmaWxlVXJsOiBvcmlnaW5hbFVybC5maWxlVXJsLFxyXG4gICAgICBvYmplY3RLZXk6IG9yaWdpbmFsVXJsLm9iamVjdEtleSxcclxuICAgIH07XHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7dGhpcy5meEFwaVNlcnZpY2UuZ2V0U2VydmljZVVybCgnd29ya2Zsb3dfc2VydmljZScpfS93b3JrZmxvdy9maWxlcy9kb3dubG9hZGA7XHJcbiAgICB0aGlzLmh0dHAucG9zdChcclxuICAgICAgc2VydmljZVVybCxcclxuICAgICAgcGF5bG9hZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfVxyXG4gICAgKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuICAgICAgdGhpcy5zdGxGaWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RsRmlsZVVwbG9hZCA9IGJsb2I7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEZpbGUodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVOYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gZXh0ZW5zaW9uO1xyXG5cclxuICAgIGlmIChleHRlbnNpb24gPT09ICdwZGYnKSB7XHJcbiAgICAgIC8vIE5hdGl2ZSBQREYgcmVuZGVyaW5nXHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoWydkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICdjc3YnLCAnLnN0bCddLmluY2x1ZGVzKGV4dGVuc2lvbikpIHtcclxuICAgICAgLy8gTWljcm9zb2Z0IE9mZmljZSBWaWV3ZXIgZm9yIE9mZmljZSBmaWxlc1xyXG4gICAgICAvLyBjb25zdCBvZmZpY2VWaWV3ZXIgPSBgaHR0cHM6Ly92aWV3Lm9mZmljZWFwcHMubGl2ZS5jb20vb3AvZW1iZWQuYXNweD9zcmM9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhvZmZpY2VWaWV3ZXIpO1xyXG4gICAgICBjb25zdCBnb29nbGVWaWV3ZXJVcmwgPSAnaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQodXJsKSArICcmZW1iZWRkZWQ9dHJ1ZSc7XHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChnb29nbGVWaWV3ZXJVcmwpO1xyXG5cclxuICAgICAgLy8gdGhpcy5maWxlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKG9mZmljZVZpZXdlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gVW5zdXBwb3J0ZWQgdHlwZVxyXG4gICAgICB0aGlzLmZpbGVVcmwgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpbGVUeXBlID0gJ3Vuc3VwcG9ydGVkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRmlsZURpYWxvZygpIHtcclxuICAgIHRoaXMuZmlsZVZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gbnVsbDtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTdGxEaWFsb2coKSB7XHJcbiAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0bEZpbGVVcGxvYWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiICNmeENvbXBvbmVudD5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXVwbG9hZCBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyIHAtMCByb3VuZGVkLXNtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtOCBpdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8IS0tIDxwIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5QYXRpZW50IEltYWdlczwvcD4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBnYXAtMSB1cGxvYWQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICpuZ0lmPVwidXBsb2FkZWRGaWxlcy5sZW5ndGggPCBzZXR0aW5nKCdtYXhGaWxlTm8nKVwiIChjbGljayk9XCJvcGVuRmlsZURpYWxvZygpXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgZD1cIk0xNC4wMDEgMy4wMDE5NUMxMS41MzIyIDMuMDAxOTUgOS4xNjcyMiAzLjg2OTU2IDcuMjM2NDEgNS4zODQxNEw3LjIzNTk4IDQuNTk2OTVDNy4yMzU5OCA0LjUyNDczIDcuMjIxNzUgNC40NTMyMSA3LjE5NDExIDQuMzg2NDhDNy4xNjY0NyA0LjMxOTc1IDcuMTI1OTYgNC4yNTkxMiA3LjA3NDg5IDQuMjA4MDRDNy4wMjM4MSA0LjE1Njk3IDYuOTYzMTggNC4xMTY0NiA2Ljg5NjQ1IDQuMDg4ODJDNi44Mjk3MiA0LjA2MTE4IDYuNzU4MiA0LjA0Njk1IDYuNjg1OTggNC4wNDY5NUM2LjYxMzc1IDQuMDQ2OTUgNi41NDIyMyA0LjA2MTE4IDYuNDc1NSA0LjA4ODgyQzYuNDA4NzcgNC4xMTY0NiA2LjM0ODE0IDQuMTU2OTcgNi4yOTcwNyA0LjIwODA0QzYuMjQ1OTkgNC4yNTkxMiA2LjIwNTQ4IDQuMzE5NzUgNi4xNzc4NCA0LjM4NjQ4QzYuMTUwMiA0LjQ1MzIxIDYuMTM1OTggNC41MjQ3MyA2LjEzNTk4IDQuNTk2OTVMNi4xMzY0MiA2LjY4NjUyQzYuMTM2NDMgNi44MzIzOSA2LjE5NDM4IDYuOTcyMjggNi4yOTc1MiA3LjA3NTQyQzYuNDAwNjcgNy4xNzg1NiA2LjU0MDU1IDcuMjM2NTEgNi42ODY0MiA3LjIzNjUySDguNzc1OThDOC44NDgyIDcuMjM2NTIgOC45MTk3MiA3LjIyMjMgOC45ODY0NSA3LjE5NDY2QzkuMDUzMTggNy4xNjcwMiA5LjExMzgxIDcuMTI2NTEgOS4xNjQ4OSA3LjA3NTQzQzkuMjE1OTYgNy4wMjQzNiA5LjI1NjQ3IDYuOTYzNzMgOS4yODQxMSA2Ljg5N0M5LjMxMTc1IDYuODMwMjcgOS4zMjU5OCA2Ljc1ODc1IDkuMzI1OTggNi42ODY1MkM5LjMyNTk4IDYuNjE0MyA5LjMxMTc1IDYuNTQyNzggOS4yODQxMSA2LjQ3NjA1QzkuMjU2NDcgNi40MDkzMiA5LjIxNTk2IDYuMzQ4NjkgOS4xNjQ4OSA2LjI5NzYxQzkuMTEzODEgNi4yNDY1NCA5LjA1MzE4IDYuMjA2MDMgOC45ODY0NSA2LjE3ODM5QzguOTE5NzIgNi4xNTA3NSA4Ljg0ODIgNi4xMzY1MiA4Ljc3NTk4IDYuMTM2NTJIOC4wNTg0QzkuNzcwMiA0Ljg0Mzg3IDExLjgzOTkgNC4xMDE5NSAxNC4wMDEgNC4xMDE5NUMxOS40NzUxIDQuMTAxOTUgMjMuOTAxIDguNTI3ODIgMjMuOTAxIDE0LjAwMkMyMy45MDEgMTkuNDc2MSAxOS40NzUxIDIzLjkwMiAxNC4wMDEgMjMuOTAyQzguNTI2ODQgMjMuOTAyIDQuMTAwOTggMTkuNDc2MSA0LjEwMDk4IDE0LjAwMkM0LjEwMDk4IDEyLjYzODEgNC4zODI2MyAxMS4yODg4IDQuOTI4NTUgMTAuMDM4OUM0Ljk4NjkxIDkuOTA1MzIgNC45ODk4MiA5Ljc1Mzk5IDQuOTM2NjUgOS42MTgyMkM0Ljg4MzQ3IDkuNDgyNDYgNC43Nzg1NSA5LjM3MzM2IDQuNjQ0OTYgOS4zMTQ5MkM0LjU3ODc3IDkuMjg1OTYgNC41MDc1MyA5LjI3MDMyIDQuNDM1MyA5LjI2ODlDNC4zNjMwNiA5LjI2NzQ3IDQuMjkxMjYgOS4yODAzIDQuMjIzOTggOS4zMDY2M0M0LjE1NjcxIDkuMzMyOTcgNC4wOTUyOCA5LjM3MjMgNC4wNDMyMSA5LjQyMjM4QzMuOTkxMTQgOS40NzI0NyAzLjk0OTQ0IDkuNTMyMzIgMy45MjA1MSA5LjU5ODUyQzMuMzEzOTMgMTAuOTg3MiAzLjAwMDk4IDEyLjQ4NjYgMy4wMDA5OCAxNC4wMDJDMy4wMDA5OCAyMC4wNzA2IDcuOTMyMzYgMjUuMDAyIDE0LjAwMSAyNS4wMDJDMjAuMDY5NiAyNS4wMDIgMjUuMDAxIDIwLjA3MDYgMjUuMDAxIDE0LjAwMkMyNS4wMDEgNy45MzMzNCAyMC4wNjk2IDMuMDAxOTUgMTQuMDAxIDMuMDAxOTVaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICBkPVwiTTEzLjk5ODggNi4xMzk2NUM5LjY2MTYgNi4xMzk2NSA2LjEzMzc5IDkuNjY3NDYgNi4xMzM3OSAxNC4wMDQ2QzYuMTMzNzkgMTguMzQxOCA5LjY2MTYgMjEuODY5NiAxMy45OTg4IDIxLjg2OTZDMTguMzM2IDIxLjg2OTYgMjEuODYzOCAxOC4zNDE4IDIxLjg2MzggMTQuMDA0NkMyMS44NjM4IDkuNjY3NDYgMTguMzM2IDYuMTM5NjUgMTMuOTk4OCA2LjEzOTY1Wk0xMy45OTg4IDguMjI5NjVDMTQuMTQ0NyA4LjIyOTY1IDE0LjI4NDYgOC4yODc1OSAxNC4zODc3IDguMzkwNzRDMTQuNDkwOCA4LjQ5Mzg4IDE0LjU0ODggOC42MzM3OCAxNC41NDg4IDguNzc5NjVWMTMuNzc2OUwxNy41MjI3IDE2Ljc1MDhDMTcuNjI1OCAxNi44NTM5IDE3LjY4MzcgMTYuOTkzOCAxNy42ODM3IDE3LjEzOTZDMTcuNjgzNyAxNy4yODU1IDE3LjYyNTggMTcuNDI1NCAxNy41MjI3IDE3LjUyODVDMTcuNDE5NSAxNy42MzE2IDE3LjI3OTYgMTcuNjg5NiAxNy4xMzM4IDE3LjY4OTZDMTYuOTg3OSAxNy42ODk2IDE2Ljg0ODEgMTcuNjMxNiAxNi43NDQ5IDE3LjUyODVMMTMuNjA5OSAxNC4zOTM1QzEzLjUwNjggMTQuMjkwNCAxMy40NDg4IDE0LjE1MDUgMTMuNDQ4OCAxNC4wMDQ2VjguNzc5NjVDMTMuNDQ4OCA4LjYzMzc4IDEzLjUwNjcgOC40OTM4OCAxMy42MDk5IDguMzkwNzRDMTMuNzEzIDguMjg3NTkgMTMuODUyOSA4LjIyOTY1IDEzLjk5ODggOC4yMjk2NVpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyOC41NlwiIGhlaWdodD1cIjI4XCIgcng9XCIxLjUxNDc5XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTUuMDY4IDIyLjczOTFWMTcuNjcwOEgxOC40OTY4TDE0LjIxMDggMTIuNjAyNUw5LjkyNDggMTcuNjcwOEgxMy4zNTM2VjIyLjczOTFIOS4wNjc1OVYyMi42OTY5QzguOTIzNTggMjIuNzA1MyA4Ljc4NjQzIDIyLjczOTEgOC42Mzg5OSAyMi43MzkxQzYuOTMzOTEgMjIuNzM5MSA1LjI5ODY2IDIyLjA3MTcgNC4wOTI5OCAyMC44ODM1QzIuODg3MyAxOS42OTU0IDIuMjA5OTYgMTguMDg0IDIuMjA5OTYgMTYuNDAzN0MyLjIwOTk2IDEzLjE1MzIgNC43MDQ0MyAxMC41MDQyIDcuOTA1MjMgMTAuMTQxQzguMTg1ODUgOC42OTUzIDguOTY4OTIgNy4zOTExOCAxMC4xMTk3IDYuNDUyOTJDMTEuMjcwNiA1LjUxNDY1IDEyLjcxNzIgNS4wMDA4OSAxNC4yMTA4IDVDMTUuNzA0NyA1LjAwMDgyIDE3LjE1MTUgNS41MTQ1MiAxOC4zMDI2IDYuNDUyNzdDMTkuNDUzNyA3LjM5MTAxIDIwLjIzNzEgOC42OTUxNiAyMC41MTgxIDEwLjE0MUMyMy43MTg5IDEwLjUwNDIgMjYuMjEgMTMuMTUzMiAyNi4yMSAxNi40MDM3QzI2LjIxIDE4LjA4NCAyNS41MzI2IDE5LjY5NTQgMjQuMzI2OSAyMC44ODM1QzIzLjEyMTMgMjIuMDcxNyAyMS40ODYgMjIuNzM5MSAxOS43ODA5IDIyLjczOTFDMTkuNjM2OSAyMi43MzkxIDE5LjQ5ODEgMjIuNzA1MyAxOS4zNTIzIDIyLjY5NjlWMjIuNzM5MUgxNS4wNjhaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidXBsb2FkX3RpdGxlIFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygndXBsb2FkLXRleHQnKSB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBbbXVsdGlwbGVdPVwic2V0dGluZygnbXVsdGlwbGUtdXBsb2FkJylcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCIuY3N2LC5wZGYsLnhscywueGxzeCwuZG9jLC5kb2N4LC50eHQsaW1hZ2UvKiwuc3RsXCIgaGlkZGVuIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBmbGV4LXdyYXAgdy1mdWxsXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1cGxvYWRlZEZpbGVzPy5sZW5ndGhcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHVwbG9hZGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBwLTMgYm9yZGVyIHJvdW5kZWQtbGcgc2hhZG93LXNtIGJnLXdoaXRlIHctWzQ1MHB4XSB1cGxvYWRfZmlsZVwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gQ2xvc2UgaWNvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZV9pY29uIGN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjIgMjJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjExXCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTcuMDg5MTEgMTUuODg4OUw2LjExMTMzIDE0LjkxMTFMMTAuMDIyNCAxMUw2LjExMTMzIDcuMDg4ODZMNy4wODkxMSA2LjExMTA4TDExLjAwMDIgMTAuMDIyMkwxNC45MTEzIDYuMTExMDhMMTUuODg5MSA3LjA4ODg2TDExLjk3OCAxMUwxNS44ODkxIDE0LjkxMTFMMTQuOTExMyAxNS44ODg5TDExLjAwMDIgMTEuOTc3OEw3LjA4OTExIDE1Ljg4ODlaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbF90aXRsZSBmbGV4XCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGh1bWJuYWlsIG9uIGxlZnQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZS50eXBlID09PSAnaW1hZ2UnOyBlbHNlIG5vbkltYWdlVGh1bWJcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiIFtzcmNdPVwiZmlsZT8ucmVzdWx0XCIgYWx0PVwicHJldmlld1wiIChjbGljayk9XCJvbkltYWdlU2VsZWN0KGZpbGU/LnJlc3VsdClcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbGU/LnJlc3VsdFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpbGU/LnJlc3VsdFwiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjcwMTMgMTNIMy4zMTI3QzIuNTg1MDEgMTMgMiAxMi40MDQ4IDIgMTEuNjY0NVY0LjMzNTQ4QzIgMy41OTUxNiAyLjU4NTAxIDMgMy4zMTI3IDNIMTIuNjg3MUMxMy40MTQ3IDMgMTMuOTk5OCAzLjU5NTE2IDEzLjk5OTggNC4zMzU0OFYxMS42NjQ1QzE0LjAxNCAxMi40MDQ4IDEzLjQxNDcgMTMgMTIuNzAxMyAxM1pNOS4yNDgzNiA3LjkwNDg0TDcuMzkzNDcgMTAuMDY3N0M3LjI3OTMyIDEwLjIxMjkgNy4wNTEwMiAxMC4yMTI5IDYuOTM2ODggMTAuMDgyM0w1LjkzODA5IDguOTkzNTVDNS44MDk2NyA4Ljg2MjkgNS42MDk5MSA4Ljg2MjkgNS40ODE1IDguOTkzNTVMMy43NjkyOSAxMC44NjYxQzMuNTgzOCAxMS4wNjk0IDMuNzI2NDggMTEuNDAzMiAzLjk5NzU4IDExLjQwMzJINi4yNjYyNkg4LjEzNTQzSDEyLjAxNjRDMTIuMjg3NSAxMS40MDMyIDEyLjQzMDIgMTEuMDgzOSAxMi4yNDQ3IDEwLjg4MDZMOS43MTkyMiA3LjkwNDg0QzkuNTkwODEgNy43NTk2OCA5LjM3Njc4IDcuNzU5NjggOS4yNDgzNiA3LjkwNDg0Wk02LjczNzEyIDUuOTg4NzFDNi4yNTE5OSA1Ljk4ODcxIDUuODUyNDggNi4zOTUxNiA1Ljg1MjQ4IDYuODg4NzFDNS44NTI0OCA3LjM4MjI2IDYuMjUxOTkgNy43ODg3MSA2LjczNzEyIDcuNzg4NzFDNy4yMjIyNSA3Ljc4ODcxIDcuNjIxNzYgNy4zODIyNiA3LjYyMTc2IDYuODg4NzFDNy42MjE3NiA2LjM5NTE2IDcuMjIyMjUgNS45ODg3MSA2LjczNzEyIDUuOTg4NzFaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzk5OTk5OVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uSW1hZ2VUaHVtYj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWxlLnR5cGVcIj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInY3N2J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyM0E3NjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuOTQwNzYgMTAuMzQzM0M2Ljg1OTM5IDEwLjM0MzMgNi43ODcxNiAxMC4zNTg4IDYuNzI0MDggMTAuMzg5OUM2LjY2MTkxIDEwLjQyIDYuNjA5MzQgMTAuNDY0IDYuNTY2MzcgMTAuNTIxNkM2LjUyNDMyIDEwLjU3OTMgNi40OTIzMiAxMC42NDg5IDYuNDcwMzggMTAuNzMwNUM2LjQ0ODQ0IDEwLjgxMjIgNi40Mzc0NyAxMC45MDQgNi40Mzc0NyAxMS4wMDZDNi40Mzc0NyAxMS4xNDM1IDYuNDU0ODQgMTEuMjYxIDYuNDg5NTggMTEuMzU4NkM2LjUyNTIzIDExLjQ1NTMgNi41ODAwOSAxMS41Mjk0IDYuNjU0MTQgMTEuNTgwOEM2LjcyODIgMTEuNjMxNCA2LjgyMzczIDExLjY1NjcgNi45NDA3NiAxMS42NTY3QzcuMDIyMTIgMTEuNjU2NyA3LjEwMzQ5IDExLjY0NzggNy4xODQ4NiAxMS42MzAxQzcuMjY3MTQgMTEuNjEyMyA3LjM1NjI4IDExLjU4NyA3LjQ1MjI4IDExLjU1NDJWMTEuOTAwMkM3LjM2MzU5IDExLjkzNTcgNy4yNzYyOCAxMS45NjEgNy4xOTAzNSAxMS45NzZDNy4xMDQ0MSAxMS45OTIgNy4wMDc5NSAxMiA2LjkwMDk5IDEyQzYuNjk0MzcgMTIgNi41MjQzMiAxMS45NTg3IDYuMzkwODQgMTEuODc2MkM2LjI1ODI3IDExLjc5MjkgNi4xNTk5OSAxMS42NzY2IDYuMDk2IDExLjUyNzZDNi4wMzIgMTEuMzc3NyA2IDExLjIwMjkgNiAxMS4wMDMzQzYgMTAuODU2MSA2LjAyMDU3IDEwLjcyMTIgNi4wNjE3MSAxMC41OTg4QzYuMTAyODUgMTAuNDc2NCA2LjE2MzE5IDEwLjM3MDQgNi4yNDI3MyAxMC4yODA4QzYuMzIyMjcgMTAuMTkxMiA2LjQyMDU1IDEwLjEyMiA2LjUzNzU4IDEwLjA3MzJDNi42NTQ2IDEwLjAyNDQgNi43ODg5OSAxMCA2Ljk0MDc2IDEwQzcuMDQwNDEgMTAgNy4xNDAwNiAxMC4wMTI0IDcuMjM5NzEgMTAuMDM3M0M3LjM0MDI4IDEwLjA2MTIgNy40MzYyOCAxMC4wOTQ1IDcuNTI3NyAxMC4xMzcxTDcuMzkwNTcgMTAuNDcyNEM3LjMxNTYgMTAuNDM3OCA3LjI0MDE3IDEwLjQwNzYgNy4xNjQyOSAxMC4zODE5QzcuMDg4NDEgMTAuMzU2MiA3LjAxMzkgMTAuMzQzMyA2Ljk0MDc2IDEwLjM0MzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4wNjM2MyAxMS40MzMxQzkuMDYzNjMgMTEuNTQ4NSA5LjAzNDgzIDExLjY0ODcgOC45NzcyNCAxMS43MzM5QzguOTE5NjQgMTEuODE5IDguODM1NTMgMTEuODg0NyA4LjcyNDkgMTEuOTMwOEM4LjYxNTE5IDExLjk3NjkgOC40ODE3MiAxMiA4LjMyNDQ3IDEyQzguMjU0OTggMTIgOC4xODY4NyAxMS45OTU2IDguMTIwMTMgMTEuOTg2N0M4LjA1NDMxIDExLjk3NzggNy45OTA3NyAxMS45NjUgNy45Mjk1MSAxMS45NDgxQzcuODY5MTcgMTEuOTMwNCA3LjgxMTU3IDExLjkwODYgNy43NTY3MiAxMS44ODI5VjExLjQ5OTdDNy44NTE4IDExLjU0MDUgNy45NTA1NCAxMS41NzczIDguMDUyOTMgMTEuNjEwMUM4LjE1NTMzIDExLjY0MjkgOC4yNTY4MSAxMS42NTkzIDguMzU3MzggMTEuNjU5M0M4LjQyNjg2IDExLjY1OTMgOC40ODI2MyAxMS42NTA1IDguNTI0NjggMTEuNjMyN0M4LjU2NzY1IDExLjYxNSA4LjU5ODc0IDExLjU5MDYgOC42MTc5NCAxMS41NTk1QzguNjM3MTQgMTEuNTI4NSA4LjY0Njc0IDExLjQ5MyA4LjY0Njc0IDExLjQ1MzFDOC42NDY3NCAxMS40MDQzIDguNjI5ODIgMTEuMzYyNiA4LjU5NiAxMS4zMjhDOC41NjIxNyAxMS4yOTM0IDguNTE1NTQgMTEuMjYxIDguNDU2MTIgMTEuMjMwOUM4LjM5NzYgMTEuMjAwNyA4LjMzMTMyIDExLjE2ODMgOC4yNTcyNyAxMS4xMzM3QzguMjEwNjQgMTEuMTEyNCA4LjE1OTkgMTEuMDg2NyA4LjEwNTA1IDExLjA1NjZDOC4wNTAxOSAxMS4wMjU1IDcuOTk4MDggMTAuOTg3OCA3Ljk0ODcxIDEwLjk0MzRDNy44OTkzNCAxMC44OTkxIDcuODU4NjYgMTAuODQ1NCA3LjgyNjY2IDEwLjc4MjRDNy43OTU1OCAxMC43MTg2IDcuNzgwMDMgMTAuNjQyMyA3Ljc4MDAzIDEwLjU1MzZDNy43ODAwMyAxMC40MzczIDcuODA3NDYgMTAuMzM4IDcuODYyMzEgMTAuMjU1NUM3LjkxNzE3IDEwLjE3MyA3Ljk5NTM0IDEwLjExIDguMDk2ODIgMTAuMDY2NUM4LjE5OTIxIDEwLjAyMjIgOC4zMTk4OSAxMCA4LjQ1ODg2IDEwQzguNTYzMDggMTAgOC42NjIyOCAxMC4wMTIgOC43NTY0NSAxMC4wMzU5QzguODUxNTMgMTAuMDU5IDguOTUwNzIgMTAuMDkyNyA5LjA1NDAzIDEwLjEzNzFMOC45MTY5IDEwLjQ1NzhDOC44MjQ1NiAxMC40MjE0IDguNzQxODIgMTAuMzkzNCA4LjY2ODY4IDEwLjM3MzlDOC41OTU1NCAxMC4zNTM1IDguNTIxMDMgMTAuMzQzMyA4LjQ0NTE1IDEwLjM0MzNDOC4zOTIxMiAxMC4zNDMzIDguMzQ2ODYgMTAuMzUxNyA4LjMwOTM4IDEwLjM2ODZDOC4yNzE5IDEwLjM4NDYgOC4yNDM1NSAxMC40MDc2IDguMjI0MzYgMTAuNDM3OEM4LjIwNTE2IDEwLjQ2NzEgOC4xOTU1NiAxMC41MDEyIDguMTk1NTYgMTAuNTQwM0M4LjE5NTU2IDEwLjU4NjQgOC4yMDkyNyAxMC42MjU0IDguMjM2NyAxMC42NTc0QzguMjY1MDQgMTAuNjg4NCA4LjMwNzA5IDEwLjcxODYgOC4zNjI4NiAxMC43NDc4QzguNDE5NTUgMTAuNzc3MSA4LjQ4OTk0IDEwLjgxMTMgOC41NzQwNSAxMC44NTAzQzguNjc2NDUgMTAuODk3MyA4Ljc2Mzc2IDEwLjk0NjYgOC44MzU5OCAxMC45OThDOC45MDkxMiAxMS4wNDg2IDguOTY1MzUgMTEuMTA4NCA5LjAwNDY2IDExLjE3NzZDOS4wNDM5OCAxMS4yNDYgOS4wNjM2MyAxMS4zMzExIDkuMDYzNjMgMTEuNDMzMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxMC4wMjc5TDEwLjMxODQgMTEuOTczNEg5Ljg1NDkxTDkuMTc0NzEgMTAuMDI3OUg5LjYwMzk1TDkuOTgxMDggMTEuMTg1NkM5Ljk4NzQ4IDExLjIwNTEgOS45OTc5OSAxMS4yNDIgMTAuMDEyNiAxMS4yOTYxQzEwLjAyNzIgMTEuMzQ5MyAxMC4wNDE5IDExLjQwNjEgMTAuMDU2NSAxMS40NjY0QzEwLjA3MiAxMS41MjU4IDEwLjA4MjYgMTEuNTc1MSAxMC4wODggMTEuNjE0MUMxMC4wOTM1IDExLjU3NTEgMTAuMTAzMSAxMS41MjU4IDEwLjExNjggMTEuNDY2NEMxMC4xMzE1IDExLjQwNyAxMC4xNDU2IDExLjM1MDYgMTAuMTU5NCAxMS4yOTc0QzEwLjE3NCAxMS4yNDMzIDEwLjE4NDUgMTEuMjA2IDEwLjE5MDkgMTEuMTg1NkwxMC41NzA4IDEwLjAyNzlIMTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI5XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgKGNsaWNrKT1cIm9uRmlsZUNsaWNrKGZpbGUsZmlsZT8ubmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFGNUVCQlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4wNDM1MyAxMkg2LjYxMTA1VjEwLjMyMDNINi4wNTcyVjkuOTYwMzhINy41OTczOFYxMC4zMjAzSDcuMDQzNTNWMTJaTTkuNTYwMjcgMTJIOS4wNjY0MUw4LjU5MjA4IDExLjIyODVMOC4xMTc3NSAxMkg3LjY1NDU4TDguMzMxMTkgMTAuOTQ4MUw3LjY5NzgyIDkuOTYwMzhIOC4xNzQ5NEw4LjYxNDQgMTAuNjk0Mkw5LjA0NTQ4IDkuOTYwMzhIOS41MTE0NEw4Ljg3MTA5IDEwLjk3MThMOS41NjAyNyAxMlpNMTAuNjAzOCAxMkgxMC4xNzEzVjEwLjMyMDNIOS42MTc0N1Y5Ljk2MDM4SDExLjE1NzZWMTAuMzIwM0gxMC42MDM4VjEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNlwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidwZGYnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAoY2xpY2spPVwib25GaWxlQ2xpY2soZmlsZSxmaWxlPy5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjREQyMDI1XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjYwODQgOS45NjAzOEM2Ljg3MTYxIDkuOTYwMzggNy4wNjM2NiAxMC4wMTcxIDcuMTg0NTcgMTAuMTMwNkM3LjMwNTQ4IDEwLjI0MzEgNy4zNjU5MyAxMC4zOTg0IDcuMzY1OTMgMTAuNTk2NUM3LjM2NTkzIDEwLjY4NTggNy4zNTI0NSAxMC43NzE0IDcuMzI1NDcgMTAuODUzMkM3LjI5ODUgMTAuOTM0MiA3LjI1NDMyIDExLjAwNjIgNy4xOTI5NCAxMS4wNjk1QzcuMTMyNDkgMTEuMTMyNyA3LjA1MTU3IDExLjE4MjkgNi45NTAyIDExLjIyMDFDNi44NDg4MiAxMS4yNTY0IDYuNzIzNzMgMTEuMjc0NiA2LjU3NDkyIDExLjI3NDZINi4zODkzN1YxMkg1Ljk1Njg5VjkuOTYwMzhINi42MDg0Wk02LjU4NjA4IDEwLjMxNDdINi4zODkzN1YxMC45MjAySDYuNTMxNjdDNi42MTI1OCAxMC45MjAyIDYuNjgyOCAxMC45MDk1IDYuNzQyMzMgMTAuODg4MUM2LjgwMTg1IDEwLjg2NjcgNi44NDc4OSAxMC44MzMyIDYuODgwNDQgMTAuNzg3N0M2LjkxMjk5IDEwLjc0MjEgNi45MjkyNyAxMC42ODM1IDYuOTI5MjcgMTAuNjExOUM2LjkyOTI3IDEwLjUxMTQgNi45MDEzNyAxMC40MzcgNi44NDU1NiAxMC4zODg3QzYuNzg5NzYgMTAuMzM5NCA2LjcwMzI2IDEwLjMxNDcgNi41ODYwOCAxMC4zMTQ3Wk05LjQ0MzIyIDEwLjk2MDdDOS40NDMyMiAxMS4xOTA0IDkuMzk5MDQgMTEuMzgyNCA5LjMxMDY5IDExLjUzNjhDOS4yMjMyNiAxMS42OTAzIDkuMDk2MzEgMTEuODA2MSA4LjkyOTgzIDExLjg4NDJDOC43NjMzNSAxMS45NjE0IDguNTYyOTIgMTIgOC4zMjg1NCAxMkg3Ljc1MDk4VjkuOTYwMzhIOC4zOTEzMkM4LjYwNTI0IDkuOTYwMzggOC43OTA3OCA5Ljk5ODUxIDguOTQ3OTYgMTAuMDc0OEM5LjEwNTE0IDEwLjE1MDEgOS4yMjY5OCAxMC4yNjIyIDkuMzEzNDggMTAuNDExQzkuMzk5OTcgMTAuNTU4OSA5LjQ0MzIyIDEwLjc0MjEgOS40NDMyMiAxMC45NjA3Wk04Ljk5NCAxMC45NzE4QzguOTk0IDEwLjgyMTEgOC45NzE2OCAxMC42OTc1IDguOTI3MDQgMTAuNjAwN0M4Ljg4MzMyIDEwLjUwMzEgOC44MTgyMiAxMC40MzEgOC43MzE3MiAxMC4zODQ1QzguNjQ2MTYgMTAuMzM4IDguNTQwMTMgMTAuMzE0NyA4LjQxMzY0IDEwLjMxNDdIOC4xODM0NVYxMS42NDI5SDguMzY5QzguNTgwMTIgMTEuNjQyOSA4LjczNjg0IDExLjU4NjYgOC44MzkxNSAxMS40NzQxQzguOTQyMzggMTEuMzYxNSA4Ljk5NCAxMS4xOTQxIDguOTk0IDEwLjk3MThaTTEwLjI5MTQgMTJIOS44NjU5M1Y5Ljk2MDM4SDExLjAzNVYxMC4zMTQ3SDEwLjI5MTRWMTAuODQwN0gxMC45ODM0VjExLjE5MzZIMTAuMjkxNFYxMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI3XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInc3RsJ1wiIChjbGljayk9XCJvbk9wZW5TVExGaWxlKGZpbGUpXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTc4ODEgMTAuNTYxQzcuMTY5NTQgMTAuNDc4MSA3LjEzMDQ4IDEwLjQxMzUgNy4wNjE2MiAxMC4zNjczQzYuOTkzNDMgMTAuMzIxMiA2LjkwNDcxIDEwLjI5ODEgNi43OTU0NyAxMC4yOTgxQzYuNzE4NjcgMTAuMjk4MSA2LjY1MjggMTAuMzA5MSA2LjU5Nzg0IDEwLjMzMTNDNi41NDI4OSAxMC4zNTM0IDYuNTAwODUgMTAuMzgzNSA2LjQ3MTcyIDEwLjQyMTVDNi40NDI1OSAxMC40NTk0IDYuNDI3NjkgMTAuNTAyOCA2LjQyNzAzIDEwLjU1MTVDNi40MjcwMyAxMC41OTIgNi40MzY2MyAxMC42MjcxIDYuNDU1ODMgMTAuNjU2OUM2LjQ3NTY5IDEwLjY4NjYgNi41MDI1MSAxMC43MTE5IDYuNTM2MjcgMTAuNzMyOEM2LjU3MDA0IDEwLjc1MyA2LjYwNzQ0IDEwLjc3MDEgNi42NDg0OSAxMC43ODQxQzYuNjg5NTQgMTAuNzk4IDYuNzMwOTIgMTAuODA5NyA2Ljc3MjYzIDEwLjgxOTJMNi45NjMzIDEwLjg2NDdDNy4wNDAxIDEwLjg4MTggNy4xMTM5MiAxMC45MDQ5IDcuMTg0NzcgMTAuOTM0QzcuMjU2MjcgMTAuOTYzMSA3LjMyMDE2IDEwLjk5OTggNy4zNzY0MyAxMS4wNDQxQzcuNDMzMzcgMTEuMDg4NCA3LjQ3ODM5IDExLjE0MTkgNy41MTE1IDExLjIwNDZDNy41NDQ2IDExLjI2NzIgNy41NjExNSAxMS4zNDA2IDcuNTYxMTUgMTEuNDI0OEM3LjU2MTE1IDExLjUzODcgNy41MzA3IDExLjYzOSA3LjQ2OTc5IDExLjcyNTdDNy40MDg4OCAxMS44MTE3IDcuMzIwODIgMTEuODc5MSA3LjIwNTYyIDExLjkyNzlDNy4wOTEwOCAxMS45NzYgNi45NTIzOCAxMiA2Ljc4OTUxIDEyQzYuNjMxMjggMTIgNi40OTM5IDExLjk3NjYgNi4zNzczOCAxMS45Mjk4QzYuMjYxNTIgMTEuODgyOSA2LjE3MDgxIDExLjgxNDYgNi4xMDUyNyAxMS43MjQ3QzYuMDQwMzkgMTEuNjM0OSA2LjAwNTMgMTEuNTI1NCA2IDExLjM5NjNINi4zNjI0OEM2LjM2Nzc4IDExLjQ2NCA2LjM4OTYzIDExLjUyMDMgNi40MjgwMyAxMS41NjUzQzYuNDY2NDMgMTEuNjEwMiA2LjUxNjQxIDExLjY0MzcgNi41Nzc5OCAxMS42NjU5QzYuNjQwMjIgMTEuNjg4IDYuNzA5NzMgMTEuNjk5MSA2Ljc4NjUzIDExLjY5OTFDNi44NjY2NCAxMS42OTkxIDYuOTM2ODIgMTEuNjg3NyA2Ljk5NzA3IDExLjY2NDlDNy4wNTc5OCAxMS42NDE1IDcuMTA1NjUgMTEuNjA5MiA3LjE0MDA4IDExLjU2ODFDNy4xNzQ1IDExLjUyNjMgNy4xOTIwNSAxMS40Nzc2IDcuMTkyNzEgMTEuNDIxOUM3LjE5MjA1IDExLjM3MTMgNy4xNzY0OSAxMS4zMjk1IDcuMTQ2MDQgMTEuMjk2NkM3LjExNTU4IDExLjI2MzEgNy4wNzI4OCAxMS4yMzUyIDcuMDE3OTMgMTEuMjEzMUM2Ljk2MzY0IDExLjE5MDMgNi45MDAwOCAxMS4xNzAxIDYuODI3MjUgMTEuMTUyM0w2LjU5NTg2IDExLjA5NTRDNi40MjgzNiAxMS4wNTQzIDYuMjk1OTQgMTAuOTkxOSA2LjE5ODYyIDEwLjkwODRDNi4xMDE5NiAxMC44MjQyIDYuMDUzNjMgMTAuNzEyNSA2LjA1MzYzIDEwLjU3MzNDNi4wNTM2MyAxMC40NTg4IDYuMDg2MDcgMTAuMzU4NSA2LjE1MDk1IDEwLjI3MjRDNi4yMTY1IDEwLjE4NjQgNi4zMDU1NCAxMC4xMTk2IDYuNDE4MDkgMTAuMDcyMUM2LjUzMDY1IDEwLjAyNCA2LjY1ODA5IDEwIDYuODAwNDQgMTBDNi45NDQ3NyAxMCA3LjA3MTIyIDEwLjAyNCA3LjE3OTggMTAuMDcyMUM3LjI4OTA0IDEwLjExOTYgNy4zNzQ3OCAxMC4xODU3IDcuNDM3MDEgMTAuMjcwNUM3LjQ5OTI1IDEwLjM1NDcgNy41MzEzNiAxMC40NTE1IDcuNTMzMzQgMTAuNTYxSDcuMTc4ODFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy44MDAyNCAxMC4zMjE4VjEwLjAyNjZIOS40MjI5NlYxMC4zMjE4SDguNzk0MzNWMTEuOTcwNkg4LjQyODg3VjEwLjMyMThINy44MDAyNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjczNTc5IDExLjk3MDZWMTAuMDI2NkgxMC4xMDQyVjExLjY3NTRIMTFWMTEuOTcwNkg5LjczNTc5WlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzgwMTFfNzUwNVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiNlwiIHk9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNlwiIHk9XCIzXCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxnIG1hc2s9XCJ1cmwoI21hc2swXzgwMTFfNzUwNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjIyMjIgNy4zNTYyNVY1LjY0Mzc1TDYuNTU1NTYgNC43NzVWNi40ODc1TDguMjIyMjIgNy4zNTYyNVpNOC43Nzc3OCA3LjM1NjI1TDEwLjQ0NDQgNi40ODc1VjQuNzc1TDguNzc3NzggNS42NDM3NVY3LjM1NjI1Wk04LjUgNS4yMTI1TDEwLjE0NTggNC4zNTYyNUw4LjUgMy41TDYuODU0MTcgNC4zNTYyNUw4LjUgNS4yMTI1Wk02LjI3Nzc4IDYuOTI1QzYuMTg5ODEgNi44NzkxNyA2LjEyMTUzIDYuODE4NzUgNi4wNzI5MiA2Ljc0Mzc1QzYuMDI0MzEgNi42Njg3NSA2IDYuNTg1NDIgNiA2LjQ5Mzc1VjQuNTA2MjVDNiA0LjQxNDU4IDYuMDI0MzEgNC4zMzEyNSA2LjA3MjkyIDQuMjU2MjVDNi4xMjE1MyA0LjE4MTI1IDYuMTg5ODEgNC4xMjA4MyA2LjI3Nzc4IDQuMDc1TDguMjIyMjIgMy4wNjg3NUM4LjMxMDE5IDMuMDIyOTIgOC40MDI3OCAzIDguNSAzQzguNTk3MjIgMyA4LjY4OTgxIDMuMDIyOTIgOC43Nzc3OCAzLjA2ODc1TDEwLjcyMjIgNC4wNzVDMTAuODEwMiA0LjEyMDgzIDEwLjg3ODUgNC4xODEyNSAxMC45MjcxIDQuMjU2MjVDMTAuOTc1NyA0LjMzMTI1IDExIDQuNDE0NTggMTEgNC41MDYyNVY2LjQ5Mzc1QzExIDYuNTg1NDIgMTAuOTc1NyA2LjY2ODc1IDEwLjkyNzEgNi43NDM3NUMxMC44Nzg1IDYuODE4NzUgMTAuODEwMiA2Ljg3OTE3IDEwLjcyMjIgNi45MjVMOC43Nzc3OCA3LjkzMTI1QzguNjg5ODEgNy45NzcwOCA4LjU5NzIyIDggOC41IDhDOC40MDI3OCA4IDguMzEwMTkgNy45NzcwOCA4LjIyMjIyIDcuOTMxMjVMNi4yNzc3OCA2LjkyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3dvcmQnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAoY2xpY2spPVwib25GaWxlQ2xpY2soZmlsZSxmaWxlPy5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUY1RUJCXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjA0MzUzIDEySDYuNjExMDVWMTAuMzIwM0g2LjA1NzJWOS45NjAzOEg3LjU5NzM4VjEwLjMyMDNINy4wNDM1M1YxMlpNOS41NjAyNyAxMkg5LjA2NjQxTDguNTkyMDggMTEuMjI4NUw4LjExNzc1IDEySDcuNjU0NThMOC4zMzExOSAxMC45NDgxTDcuNjk3ODIgOS45NjAzOEg4LjE3NDk0TDguNjE0NCAxMC42OTQyTDkuMDQ1NDggOS45NjAzOEg5LjUxMTQ0TDguODcxMDkgMTAuOTcxOEw5LjU2MDI3IDEyWk0xMC42MDM4IDEySDEwLjE3MTNWMTAuMzIwM0g5LjYxNzQ3VjkuOTYwMzhIMTEuMTU3NlYxMC4zMjAzSDEwLjYwMzhWMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaERlZmF1bHQgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG48cGF0aCBkPVwiTTEyLjcwMTMgMTNIMy4zMTI3QzIuNTg1MDEgMTMgMiAxMi40MDQ4IDIgMTEuNjY0NVY0LjMzNTQ4QzIgMy41OTUxNiAyLjU4NTAxIDMgMy4zMTI3IDNIMTIuNjg3MUMxMy40MTQ3IDMgMTMuOTk5OCAzLjU5NTE2IDEzLjk5OTggNC4zMzU0OFYxMS42NjQ1QzE0LjAxNCAxMi40MDQ4IDEzLjQxNDcgMTMgMTIuNzAxMyAxM1pNOS4yNDgzNiA3LjkwNDg0TDcuMzkzNDcgMTAuMDY3N0M3LjI3OTMyIDEwLjIxMjkgNy4wNTEwMiAxMC4yMTI5IDYuOTM2ODggMTAuMDgyM0w1LjkzODA5IDguOTkzNTVDNS44MDk2NyA4Ljg2MjkgNS42MDk5MSA4Ljg2MjkgNS40ODE1IDguOTkzNTVMMy43NjkyOSAxMC44NjYxQzMuNTgzOCAxMS4wNjk0IDMuNzI2NDggMTEuNDAzMiAzLjk5NzU4IDExLjQwMzJINi4yNjYyNkg4LjEzNTQzSDEyLjAxNjRDMTIuMjg3NSAxMS40MDMyIDEyLjQzMDIgMTEuMDgzOSAxMi4yNDQ3IDEwLjg4MDZMOS43MTkyMiA3LjkwNDg0QzkuNTkwODEgNy43NTk2OCA5LjM3Njc4IDcuNzU5NjggOS4yNDgzNiA3LjkwNDg0Wk02LjczNzEyIDUuOTg4NzFDNi4yNTE5OSA1Ljk4ODcxIDUuODUyNDggNi4zOTUxNiA1Ljg1MjQ4IDYuODg4NzFDNS44NTI0OCA3LjM4MjI2IDYuMjUxOTkgNy43ODg3MSA2LjczNzEyIDcuNzg4NzFDNy4yMjIyNSA3Ljc4ODcxIDcuNjIxNzYgNy4zODIyNiA3LjYyMTc2IDYuODg4NzFDNy42MjE3NiA2LjM5NTE2IDcuMjIyMjUgNS45ODg3MSA2LjczNzEyIDUuOTg4NzFaXCIgZmlsbD1cIiM5OTk5OTlcIi8+XHJcbjwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTWV0YWRhdGEgb24gcmlnaHQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZV9ub3RlcyBtbC0yXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSBUaXRsZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gaW5wdXQtdGl0bGUgbS0wIC1tdC0xXCI+VGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZmlsZS50aXRsZVwiIG5hbWU9XCJ0aXRsZXt7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRpdGxlXCIgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgbWItMyB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAjdGl0bGVDdHJsPVwibmdNb2RlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGl0bGVDdHJsLmludmFsaWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LXhzIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgVGl0bGUgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIE5vdGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgLW10LTFcIj5Ob3RlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCIgbmFtZT1cIm5vdGVze3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIiBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0wIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIHJvd3M9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgI25vdGVzQ3RybD1cIm5nTW9kZWxcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vdGVzQ3RybC5pbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgdGV4dC14cyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vdGVzIGFyZSByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeSBtdC0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQ2F0ZWdvcnkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gaW5wdXQtdGl0bGUgbS0wXCI+Q2F0ZWdvcnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJmaWxlLmNhdGVnb3J5SWQgXCIgbmFtZT1cImNhdGVnb3J5e3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiByZXF1aXJlZCAjY2F0ZWdvcnlDdHJsPVwibmdNb2RlbFwiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBDYXRlZ29yeTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBjYXRlZ29yaWVzXCIgW25nVmFsdWVdPVwiYy52YWx1ZVwiPnt7IGMubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yeUN0cmwuaW52YWxpZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQteHMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIENhdGVnb3J5IGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gSW1hZ2UgUHJldmlldyBEaWFsb2cgLS0+XHJcbiAgPHAtZGlhbG9nIGhlYWRlcj1cIkltYWdlIFByZXZpZXdcIiBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbc3R5bGVdPVwie3dpZHRoOiAnNzByZW0nfVwiXHJcbiAgICBjbGFzcz1cImN1c3RvbURpYWxvZ0NsYXNzXCIgKG9uSGlkZSk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICA8aW1nIFtzcmNdPVwic2VsZWN0ZUltYWdlVXJsXCIgLz5cclxuICA8L3AtZGlhbG9nPlxyXG5cclxuICAgIDwhLS0gRG9jdW1lbnQgUHJldmlldyBEaWFsb2cgLS0+XHJcbiAgPHAtZGlhbG9nIGhlYWRlcj1cIkRvY3VtZW50IFByZXZpZXdcIiBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbKHZpc2libGUpXT1cImZpbGVWaXNpYmxlXCJcclxuICAgIFtzdHlsZV09XCJ7d2lkdGg6ICc3MHJlbSd9XCIgY2xhc3M9XCJjdXN0b21EaWFsb2dDbGFzc1wiIChvbkhpZGUpPVwiY2xvc2VGaWxlRGlhbG9nKClcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWxlVXJsICYmIGZpbGVUeXBlICE9PSAndW5zdXBwb3J0ZWQnOyBlbHNlIHVuc3VwcG9ydGVkTXNnXCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj5cclxuICAgICAgPGlmcmFtZSBbc3JjXT1cImZpbGVVcmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI2MDBcIiBzdHlsZT1cImJvcmRlcjogbm9uZTtcIiBhbGxvd2Z1bGxzY3JlZW4+XHJcbiAgICAgIDwvaWZyYW1lPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN1bnN1cHBvcnRlZE1zZz5cclxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXJlZC02MDAgbXQtM1wiICpuZ0lmPVwiZmlsZVR5cGUgPT09ICd1bnN1cHBvcnRlZCdcIj5cclxuICAgICAgICBVbnN1cHBvcnRlZCBmaWxlIHR5cGUuIFBsZWFzZSB1cGxvYWQgYSBQREYsIERPQ1gsIFhMU1gsIG9yIFBQVFggZmlsZS5cclxuICAgICAgPC9wPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtZGlhbG9nPlxyXG5cclxuICA8IS0tIFNUTCBGaWxlIFByZXZpZXcgRGlhbG9nIC0tPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RsRmlsZVVwbG9hZFwiPlxyXG4gIDxwLWRpYWxvZyBoZWFkZXI9XCJTVEwgRmlsZSBQcmV2aWV3XCIgW21vZGFsXT1cInRydWVcIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgWyh2aXNpYmxlKV09XCJzdGxGaWxlVmlzaWJsZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc3MHJlbSd9XCJcclxuICAgIGNsYXNzPVwiY3VzdG9tRGlhbG9nQ2xhc3NcIiAob25IaWRlKT1cImNsb3NlU3RsRGlhbG9nKClcIj5cclxuICAgIDxhcHAtdGhyZWUtdmlld2VyIFttYW51YWxGaWxlVXBsb2FkXT1cInN0bEZpbGVVcGxvYWRcIj48L2FwcC10aHJlZS12aWV3ZXI+XHJcbiAgPC9wLWRpYWxvZz5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgPHAtdG9hc3QgW3ByZXZlbnRPcGVuRHVwbGljYXRlc109XCJ0cnVlXCIgW2JyZWFrcG9pbnRzXT1cInsgJzQyNnB4JzogeyB3aWR0aDogJzkwJScgfSB9XCIgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG5cclxuPC9meC1jb21wb25lbnQ+Il19
@@ -1486,38 +1486,41 @@ class UploaderComponent extends FxBaseComponent {
1486
1486
  });
1487
1487
  }
1488
1488
  ngAfterViewInit() {
1489
- const key = this.fxComponent?.fxData?.name;
1490
- console.log('Uploader Key:', key);
1491
- console.log('Uploaded Files Map:', this.uploadedFilesMap);
1492
- const files = this.uploadedFilesMap?.[key];
1493
- // Strong check — ensures patching happens only when files actually exist
1494
- if (key && Array.isArray(files) && files.length > 0) {
1495
- const formatted = files
1496
- .filter((fileObj) => !!fileObj)
1497
- .map((fileObj) => {
1498
- const originalUrlObj = fileObj.originalUrl;
1499
- const fileName = originalUrlObj?.fileName || '';
1500
- const previewUrl = originalUrlObj?.previewUrl;
1501
- const type = fileObj?.type;
1502
- return {
1503
- id: v4(),
1504
- file: null,
1505
- originalUrl: originalUrlObj,
1506
- result: previewUrl,
1507
- name: fileName,
1508
- title: fileObj?.title || '',
1509
- notes: fileObj?.notes || '',
1510
- categoryId: fileObj?.categoryId || '',
1511
- type: type,
1512
- };
1513
- });
1514
- console.log('Formatted Files for Patching:', formatted);
1515
- if (formatted.length > 0) {
1516
- this.uploadedFiles = [...this.uploadedFiles, ...formatted];
1517
- this.formattedData.uploadedFiles = this.uploadedFiles;
1518
- this.uploadFileControl.setValue(this.formattedData);
1489
+ setTimeout(() => {
1490
+ const key = this.fxComponent?.fxData?.name;
1491
+ console.log('Uploader Key:', key);
1492
+ console.log('Uploaded Files Map:', this.uploadedFilesMap);
1493
+ const files = this.uploadedFilesMap?.[key];
1494
+ console.log('Files to Patch:', files);
1495
+ // Strong check — ensures patching happens only when files actually exist
1496
+ if (key && Array.isArray(files) && files.length > 0) {
1497
+ const formatted = files
1498
+ .filter((fileObj) => !!fileObj)
1499
+ .map((fileObj) => {
1500
+ const originalUrlObj = fileObj.originalUrl;
1501
+ const fileName = originalUrlObj?.fileName || '';
1502
+ const previewUrl = originalUrlObj?.previewUrl;
1503
+ const type = fileObj?.type;
1504
+ return {
1505
+ id: v4(),
1506
+ file: null,
1507
+ originalUrl: originalUrlObj,
1508
+ result: previewUrl,
1509
+ name: fileName,
1510
+ title: fileObj?.title || '',
1511
+ notes: fileObj?.notes || '',
1512
+ categoryId: fileObj?.categoryId || '',
1513
+ type: type,
1514
+ };
1515
+ });
1516
+ console.log('Formatted Files for Patching:', formatted);
1517
+ if (formatted.length > 0) {
1518
+ this.uploadedFiles = [...this.uploadedFiles, ...formatted];
1519
+ this.formattedData.uploadedFiles = this.uploadedFiles;
1520
+ this.uploadFileControl.setValue(this.formattedData);
1521
+ }
1519
1522
  }
1520
- }
1523
+ }, 100);
1521
1524
  }
1522
1525
  onFileSelected(event) {
1523
1526
  const input = event.target;