ctt-babylon 0.24.49 → 0.24.50

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.
@@ -62,7 +62,7 @@ export class BabylonDynamicHeadingComponent {
62
62
  /** Clases CSS opcionales */
63
63
  this.cssClass = '';
64
64
  this.renderedHtml = '';
65
- this.blockRe = /<(table|thead|tbody|tfoot|tr|ul|ol|li|div|section|article|h[1-6]|blockquote)/i;
65
+ this.blockRe = /<(p|table|thead|tbody|tfoot|tr|ul|ol|li|div|section|article|h[1-6]|blockquote)/i;
66
66
  }
67
67
  ngOnChanges() {
68
68
  if (isPlatformBrowser(this.platformId)) {
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
139
139
  }], color: [{
140
140
  type: Input
141
141
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1keW5hbWljLWhlYWRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZy9iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7OztBQStCdkIsTUFBTSxPQUFPLDhCQUE4QjthQUNmLGdCQUFXLEdBQUc7UUFDbEMsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osR0FBRztRQUNILE1BQU07S0FDVCxBQVRrQyxDQVNqQzthQUVzQixvQkFBZSxHQUFxQjtRQUN4RCxNQUFNO1FBQ04sR0FBRztRQUNILEdBQUc7UUFDSCxHQUFHO1FBQ0gsTUFBTTtRQUNOLFFBQVE7UUFDUixJQUFJO1FBQ0osT0FBTztRQUNQLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxNQUFNO1FBQ04sTUFBTTtRQUNOLE1BQU07UUFDTixLQUFLO1FBQ0wsR0FBRztRQUNILEdBQUc7UUFDSCxJQUFJO0tBQ1AsQUFwQnNDLENBb0JyQztJQVFGLDJEQUEyRDtJQUMzRCxJQUNJLEdBQUcs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M0MsazlsQkErWEEsNi8xQkQ1VmMsWUFBWTs7NEZBS2IsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs7MEJBZ0YxQyxNQUFNOzJCQUFDLFdBQVc7eUVBeENkLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUYsR0FBRztzQkFETixLQUFLO2dCQVlGLE9BQU87c0JBRFYsS0FBSztnQkFhRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG50eXBlIEFsbG93ZWRXcmFwcGVyID1cbiAgICB8ICdzcGFuJ1xuICAgIHwgJ2InXG4gICAgfCAnaSdcbiAgICB8ICd1J1xuICAgIHwgJ21hcmsnXG4gICAgfCAnc3Ryb25nJ1xuICAgIHwgJ2VtJ1xuICAgIHwgJ3NtYWxsJ1xuICAgIHwgJ2RlbCdcbiAgICB8ICdpbnMnXG4gICAgfCAnc3ViJ1xuICAgIHwgJ3N1cCdcbiAgICB8ICdjb2RlJ1xuICAgIHwgJ2FiYnInXG4gICAgfCAnY2l0ZSdcbiAgICB8ICdrYmQnXG4gICAgfCAncydcbiAgICB8ICdxJ1xuICAgIHwgbnVsbDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1keW5hbWljLWhlYWRpbmcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1keW5hbWljLWhlYWRpbmcuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGFsbG93ZWRUYWdzID0gW1xuICAgICAgICAnaDEnLFxuICAgICAgICAnaDInLFxuICAgICAgICAnaDMnLFxuICAgICAgICAnaDQnLFxuICAgICAgICAnaDUnLFxuICAgICAgICAnaDYnLFxuICAgICAgICAncCcsXG4gICAgICAgICdzcGFuJyxcbiAgICBdO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgYWxsb3dlZFdyYXBwZXJzOiBBbGxvd2VkV3JhcHBlcltdID0gW1xuICAgICAgICAnc3BhbicsXG4gICAgICAgICdiJyxcbiAgICAgICAgJ2knLFxuICAgICAgICAndScsXG4gICAgICAgICdtYXJrJyxcbiAgICAgICAgJ3N0cm9uZycsXG4gICAgICAgICdlbScsXG4gICAgICAgICdzbWFsbCcsXG4gICAgICAgICdkZWwnLFxuICAgICAgICAnaW5zJyxcbiAgICAgICAgJ3N1YicsXG4gICAgICAgICdzdXAnLFxuICAgICAgICAnY29kZScsXG4gICAgICAgICdhYmJyJyxcbiAgICAgICAgJ2NpdGUnLFxuICAgICAgICAna2JkJyxcbiAgICAgICAgJ3MnLFxuICAgICAgICAncScsXG4gICAgICAgIG51bGwsXG4gICAgXTtcblxuICAgIHByaXZhdGUgX3RhZzogc3RyaW5nID0gJ2gxJztcbiAgICBwcml2YXRlIF93cmFwcGVyOiBBbGxvd2VkV3JhcHBlciA9IG51bGw7XG5cbiAgICAvKiogRm9yemFyIGlubmVySFRNTCByZW5kZXJpbmcgKi9cbiAgICBASW5wdXQoKSB1c2VJbm5lckh0bWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBFdGlxdWV0YSBIVE1MIHByaW5jaXBhbCAoaDEtaDYsIHAsIHNwYW4gcG9yIGRlZmVjdG8pICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGFnKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFnID0gQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50LmFsbG93ZWRUYWdzLmluY2x1ZGVzKHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiAnaDEnO1xuICAgIH1cbiAgICBnZXQgdGFnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWc7XG4gICAgfVxuXG4gICAgLyoqIFdyYXBwZXIgaW50ZXJpb3IgKHNwYW4sIHN0cm9uZywgZW0sIGV0Yy4pICovXG4gICAgQElucHV0KClcbiAgICBzZXQgd3JhcHBlcih2YWx1ZTogQWxsb3dlZFdyYXBwZXIpIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlciA9IEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudC5hbGxvd2VkV3JhcHBlcnMuaW5jbHVkZXMoXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICApXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGdldCB3cmFwcGVyKCk6IEFsbG93ZWRXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqIENsYXNlcyBDU1Mgb3BjaW9uYWxlcyAqL1xuICAgIEBJbnB1dCgpIGNzc0NsYXNzID0gJyc7XG5cbiAgICAvKiogVGV4dG8gZGVsIGhlYWRpbmcgKi9cbiAgICBASW5wdXQoKSBjb250ZW50Pzogc3RyaW5nO1xuXG4gICAgLyoqIENvbG9yIG9wY2lvbmFsIChpbmxpbmUgc3R5bGUpICovXG4gICAgQElucHV0KCkgY29sb3I/OiBzdHJpbmc7XG5cbiAgICByZW5kZXJlZEh0bWwgPSAnJztcblxuICAgIHByaXZhdGUgYmxvY2tSZSA9XG4gICAgICAgIC88KHRhYmxlfHRoZWFkfHRib2R5fHRmb290fHRyfHVsfG9sfGxpfGRpdnxzZWN0aW9ufGFydGljbGV8aFsxLTZdfGJsb2NrcXVvdGUpL2k7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0LFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLmRlY29kZUVudGl0aWVzKHRoaXMuY29udGVudCB8fCAnJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkSHRtbCA9IHRoaXMuY2xlYW5IdG1sKGRlY29kZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZEh0bWwgPSB0aGlzLmNvbnRlbnQgfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yemFtb3MgYSBBbmd1bGFyIGEgcmVwaW50YXIgZWwgY29tcG9uZW50ZSBwb3JxdWUgdXNhbW9zIE9uUHVzaFxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogTGltcGlhIDxwPiB2YWPDrW9zIHkgPHA+IGVudm9sdmllbmRvIGJsb3F1ZXMvdGFibGFzOyBkZXNlbnZ1ZWx2ZSA8cD4gZGVudHJvIGRlIGNlbGRhcy4gKi9cbiAgICBwcml2YXRlIGNsZWFuSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHJvb3QuaW5uZXJIVE1MID0gaHRtbDtcblxuICAgICAgICAvLyAxKSA8dGR8dGg+PHA+Li4uPC9wPjwvdGR8dGg+IC0+IDx0ZHx0aD4uLi48L3RkfHRoPlxuICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkID4gcCwgdGggPiBwJykuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gcC5wYXJlbnRFbGVtZW50ITtcbiAgICAgICAgICAgIHdoaWxlIChwLmZpcnN0Q2hpbGQpIHBhcmVudC5pbnNlcnRCZWZvcmUocC5maXJzdENoaWxkLCBwKTtcbiAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gMikgPHA+IHF1ZSBzb2xvIHRpZW5lIGVzcGFjaW9zL25ic3AvYnIgLT4gZWxpbWluYXJcbiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdwJykuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25seUJyID0gQXJyYXkuZnJvbShwLmNoaWxkTm9kZXMpLmV2ZXJ5KFxuICAgICAgICAgICAgICAgIChuKSA9PlxuICAgICAgICAgICAgICAgICAgICAobi5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChuIGFzIEVsZW1lbnQpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2JyJykgfHxcbiAgICAgICAgICAgICAgICAgICAgKG4ubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobi50ZXh0Q29udGVudCB8fCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFx1MDBhMC9nLCAnICcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50cmltKCkgPT09ICcnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChvbmx5QnIpIHAucmVtb3ZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIDMpIDxwPiBxdWUgZW52dWVsdmUgdW4gYmxvcXVlICh0YWJsZSwgdWwsIG9sLCBkaXYsIHNlY3Rpb24sIGFydGljbGUsIGgxLi5oNiwgYmxvY2txdW90ZSkgLT4gZGVzZW52b2x2ZXJcbiAgICAgICAgY29uc3QgaXNCbG9jayA9IChlbDogRWxlbWVudCkgPT5cbiAgICAgICAgICAgIC9eKHRhYmxlfHRoZWFkfHRib2R5fHRmb290fHRyfHRofHRkfHVsfG9sfGRpdnxzZWN0aW9ufGFydGljbGV8aFsxLTZdfGJsb2NrcXVvdGUpJC9pLnRlc3QoXG4gICAgICAgICAgICAgICAgZWwudGFnTmFtZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AnKS5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICAvLyBTaSBkZW50cm8gaGF5IGFsZ8O6biBibG9xdWUsIGRlc2Vudm9sdmVyXG4gICAgICAgICAgICBpZiAoQXJyYXkuZnJvbShwLmNoaWxkcmVuKS5zb21lKGlzQmxvY2spKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHAuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgICAgICAgcC5wYXJlbnRFbGVtZW50IS5pbnNlcnRCZWZvcmUocC5maXJzdENoaWxkLCBwKTtcbiAgICAgICAgICAgICAgICBwLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcm9vdC5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgY29udGFpbnNCbG9ja0h0bWwoYzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrUmUudGVzdChjKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlY29kZUVudGl0aWVzKHM6IHN0cmluZykge1xuICAgICAgICBjb25zdCB0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICAgIHRhLmlubmVySFRNTCA9IHM7XG4gICAgICAgIHJldHVybiB0YS52YWx1ZTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0YWdcIj5cbiAgICA8IS0tIEgxIC0tPlxuICAgIDxoMSAqbmdTd2l0Y2hDYXNlPVwiJ2gxJ1wiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHVzZUlubmVySHRtbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3BhbidcIj57eyBjb250ZW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxiICpuZ1N3aXRjaENhc2U9XCInYidcIj57eyBjb250ZW50IH19PC9iPlxuICAgICAgICAgICAgICAgIDxpICpuZ1N3aXRjaENhc2U9XCInaSdcIj57eyBjb250ZW50IH19PC9pPlxuICAgICAgICAgICAgICAgIDx1ICpuZ1N3aXRjaENhc2U9XCIndSdcIj57eyBjb250ZW50IH19PC91PlxuICAgICAgICAgICAgICAgIDxtYXJrICpuZ1N3aXRjaENhc2U9XCInbWFyaydcIj57eyBjb250ZW50IH19PC9tYXJrPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgKm5nU3dpdGNoQ2FzZT1cIidzdHJvbmcnXCI+e3sgY29udGVudCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxlbSAqbmdTd2l0Y2hDYXNlPVwiJ2VtJ1wiPnt7IGNvbnRlbnQgfX08L2VtPlxuICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwiJ3NtYWxsJ1wiPnt7IGNvbnRlbnQgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxkZWwgKm5nU3dpdGNoQ2FzZT1cIidkZWwnXCI+e3sgY29udGVudCB9fTwvZGVsPlxuICAgICAgICAgICAgICAgIDxpbnMgKm5nU3dpdGNoQ2FzZT1cIidpbnMnXCI+e3sgY29udGVudCB9fTwvaW5zPlxuICAgICAgICAgICAgICAgIDxzdWIgKm5nU3dpdGNoQ2FzZT1cIidzdWInXCI+e3sgY29udGVudCB9fTwvc3ViPlxuICAgICAgICAgICAgICAgIDxzdXAgKm5nU3dpdGNoQ2FzZT1cIidzdXAnXCI+e3sgY29udGVudCB9fTwvc3VwPlxuICAgICAgICAgICAgICAgIDxjb2RlICpuZ1N3aXRjaENhc2U9XCInY29kZSdcIj57eyBjb250ZW50IH19PC9jb2RlPlxuICAgICAgICAgICAgICAgIDxhYmJyICpuZ1N3aXRjaENhc2U9XCInYWJicidcIj57eyBjb250ZW50IH19PC9hYmJyPlxuICAgICAgICAgICAgICAgIDxjaXRlICpuZ1N3aXRjaENhc2U9XCInY2l0ZSdcIj57eyBjb250ZW50IH19PC9jaXRlPlxuICAgICAgICAgICAgICAgIDxrYmQgKm5nU3dpdGNoQ2FzZT1cIidrYmQnXCI+e3sgY29udGVudCB9fTwva2JkPlxuICAgICAgICAgICAgICAgIDxzICpuZ1N3aXRjaENhc2U9XCIncydcIj57eyBjb250ZW50IH19PC9zPlxuICAgICAgICAgICAgICAgIDxxICpuZ1N3aXRjaENhc2U9XCIncSdcIj57eyBjb250ZW50IH19PC9xPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3VzZUlubmVySHRtbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VJbm5lckh0bWw7IGVsc2Ugbm9XcmFwcGVySDFcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckgxSW5uZXJIdG1sPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vV3JhcHBlckgxSW5uZXJIdG1sXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDE+e3sgY29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oMT5cblxuICAgIDwhLS0gSDIgLS0+XG4gICAgPGgyICpuZ1N3aXRjaENhc2U9XCInaDInXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdXNlSW5uZXJIdG1sSDJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3NwYW4nXCI+e3sgY29udGVudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YiAqbmdTd2l0Y2hDYXNlPVwiJ2InXCI+e3sgY29udGVudCB9fTwvYj5cbiAgICAgICAgICAgICAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2knXCI+e3sgY29udGVudCB9fTwvaT5cbiAgICAgICAgICAgICAgICA8dSAqbmdTd2l0Y2hDYXNlPVwiJ3UnXCI+e3sgY29udGVudCB9fTwvdT5cbiAgICAgICAgICAgICAgICA8bWFyayAqbmdTd2l0Y2hDYXNlPVwiJ21hcmsnXCI+e3sgY29udGVudCB9fTwvbWFyaz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nICpuZ1N3aXRjaENhc2U9XCInc3Ryb25nJ1wiPnt7IGNvbnRlbnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8ZW0gKm5nU3dpdGNoQ2FzZT1cIidlbSdcIj57eyBjb250ZW50IH19PC9lbT5cbiAgICAgICAgICAgICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cIidzbWFsbCdcIj57eyBjb250ZW50IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8ZGVsICpuZ1N3aXRjaENhc2U9XCInZGVsJ1wiPnt7IGNvbnRlbnQgfX08L2RlbD5cbiAgICAgICAgICAgICAgICA8aW5zICpuZ1N3aXRjaENhc2U9XCInaW5zJ1wiPnt7IGNvbnRlbnQgfX08L2lucz5cbiAgICAgICAgICAgICAgICA8c3ViICpuZ1N3aXRjaENhc2U9XCInc3ViJ1wiPnt7IGNvbnRlbnQgfX08L3N1Yj5cbiAgICAgICAgICAgICAgICA8c3VwICpuZ1N3aXRjaENhc2U9XCInc3VwJ1wiPnt7IGNvbnRlbnQgfX08L3N1cD5cbiAgICAgICAgICAgICAgICA8Y29kZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCI+e3sgY29udGVudCB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICA8YWJiciAqbmdTd2l0Y2hDYXNlPVwiJ2FiYnInXCI+e3sgY29udGVudCB9fTwvYWJicj5cbiAgICAgICAgICAgICAgICA8Y2l0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2NpdGUnXCI+e3sgY29udGVudCB9fTwvY2l0ZT5cbiAgICAgICAgICAgICAgICA8a2JkICpuZ1N3aXRjaENhc2U9XCIna2JkJ1wiPnt7IGNvbnRlbnQgfX08L2tiZD5cbiAgICAgICAgICAgICAgICA8cyAqbmdTd2l0Y2hDYXNlPVwiJ3MnXCI+e3sgY29udGVudCB9fTwvcz5cbiAgICAgICAgICAgICAgICA8cSAqbmdTd2l0Y2hDYXNlPVwiJ3EnXCI+e3sgY29udGVudCB9fTwvcT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1c2VJbm5lckh0bWxIMj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VJbm5lckh0bWw7IGVsc2Ugbm9XcmFwcGVySDJcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckgySW5uZXJIdG1sPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vV3JhcHBlckgySW5uZXJIdG1sXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDI+e3sgY29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oMj5cblxuICAgIDwhLS0gSDMgKENPUlJFR0lETykgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2gzJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid3JhcHBlcjsgZWxzZSBub1dyYXBwZXJIM1wiPlxuICAgICAgICAgICAgPGgzIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3NwYW4nXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YiAqbmdTd2l0Y2hDYXNlPVwiJ2InXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9iPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2knXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8dSAqbmdTd2l0Y2hDYXNlPVwiJ3UnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC91PlxuICAgICAgICAgICAgICAgICAgICA8bWFyayAqbmdTd2l0Y2hDYXNlPVwiJ21hcmsnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9tYXJrPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9uZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8ZW0gKm5nU3dpdGNoQ2FzZT1cIidlbSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2VtPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInc21hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgID48L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8ZGVsICpuZ1N3aXRjaENhc2U9XCInZGVsJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZGVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5zICpuZ1N3aXRjaENhc2U9XCInaW5zJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvaW5zPlxuICAgICAgICAgICAgICAgICAgICA8c3ViICpuZ1N3aXRjaENhc2U9XCInc3ViJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvc3ViPlxuICAgICAgICAgICAgICAgICAgICA8c3VwICpuZ1N3aXRjaENhc2U9XCInc3VwJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvc3VwPlxuICAgICAgICAgICAgICAgICAgICA8Y29kZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8YWJiciAqbmdTd2l0Y2hDYXNlPVwiJ2FiYnInXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9hYmJyPlxuICAgICAgICAgICAgICAgICAgICA8Y2l0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2NpdGUnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9jaXRlPlxuICAgICAgICAgICAgICAgICAgICA8a2JkICpuZ1N3aXRjaENhc2U9XCIna2JkJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwva2JkPlxuICAgICAgICAgICAgICAgICAgICA8cyAqbmdTd2l0Y2hDYXNlPVwiJ3MnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zPlxuICAgICAgICAgICAgICAgICAgICA8cSAqbmdTd2l0Y2hDYXNlPVwiJ3EnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9xPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJIMz5cbiAgICAgICAgICAgIEBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIDxoM1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2gzPlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEg0IC0tPlxuICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiJ2g0J1wiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHVzZUlubmVySHRtbEg0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzcGFuJ1wiPnt7IGNvbnRlbnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGIgKm5nU3dpdGNoQ2FzZT1cIidiJ1wiPnt7IGNvbnRlbnQgfX08L2I+XG4gICAgICAgICAgICAgICAgPGkgKm5nU3dpdGNoQ2FzZT1cIidpJ1wiPnt7IGNvbnRlbnQgfX08L2k+XG4gICAgICAgICAgICAgICAgPHUgKm5nU3dpdGNoQ2FzZT1cIid1J1wiPnt7IGNvbnRlbnQgfX08L3U+XG4gICAgICAgICAgICAgICAgPG1hcmsgKm5nU3dpdGNoQ2FzZT1cIidtYXJrJ1wiPnt7IGNvbnRlbnQgfX08L21hcms+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9uZydcIj57eyBjb250ZW50IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPGVtICpuZ1N3aXRjaENhc2U9XCInZW0nXCI+e3sgY29udGVudCB9fTwvZW0+XG4gICAgICAgICAgICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCInc21hbGwnXCI+e3sgY29udGVudCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPGRlbCAqbmdTd2l0Y2hDYXNlPVwiJ2RlbCdcIj57eyBjb250ZW50IH19PC9kZWw+XG4gICAgICAgICAgICAgICAgPGlucyAqbmdTd2l0Y2hDYXNlPVwiJ2lucydcIj57eyBjb250ZW50IH19PC9pbnM+XG4gICAgICAgICAgICAgICAgPHN1YiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YidcIj57eyBjb250ZW50IH19PC9zdWI+XG4gICAgICAgICAgICAgICAgPHN1cCAqbmdTd2l0Y2hDYXNlPVwiJ3N1cCdcIj57eyBjb250ZW50IH19PC9zdXA+XG4gICAgICAgICAgICAgICAgPGNvZGUgKm5nU3dpdGNoQ2FzZT1cIidjb2RlJ1wiPnt7IGNvbnRlbnQgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgPGFiYnIgKm5nU3dpdGNoQ2FzZT1cIidhYmJyJ1wiPnt7IGNvbnRlbnQgfX08L2FiYnI+XG4gICAgICAgICAgICAgICAgPGNpdGUgKm5nU3dpdGNoQ2FzZT1cIidjaXRlJ1wiPnt7IGNvbnRlbnQgfX08L2NpdGU+XG4gICAgICAgICAgICAgICAgPGtiZCAqbmdTd2l0Y2hDYXNlPVwiJ2tiZCdcIj57eyBjb250ZW50IH19PC9rYmQ+XG4gICAgICAgICAgICAgICAgPHMgKm5nU3dpdGNoQ2FzZT1cIidzJ1wiPnt7IGNvbnRlbnQgfX08L3M+XG4gICAgICAgICAgICAgICAgPHEgKm5nU3dpdGNoQ2FzZT1cIidxJ1wiPnt7IGNvbnRlbnQgfX08L3E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlSW5uZXJIdG1sSDQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlSW5uZXJIdG1sOyBlbHNlIG5vV3JhcHBlckg0XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJINElubmVySHRtbD5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmljaC1odG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJlbmRlcmVkSHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1dyYXBwZXJINElubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckg0Pnt7IGNvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaDQ+XG5cbiAgICA8IS0tIEg1IC0tPlxuICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiJ2g1J1wiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHVzZUlubmVySHRtbEg1XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzcGFuJ1wiPnt7IGNvbnRlbnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGIgKm5nU3dpdGNoQ2FzZT1cIidiJ1wiPnt7IGNvbnRlbnQgfX08L2I+XG4gICAgICAgICAgICAgICAgPGkgKm5nU3dpdGNoQ2FzZT1cIidpJ1wiPnt7IGNvbnRlbnQgfX08L2k+XG4gICAgICAgICAgICAgICAgPHUgKm5nU3dpdGNoQ2FzZT1cIid1J1wiPnt7IGNvbnRlbnQgfX08L3U+XG4gICAgICAgICAgICAgICAgPG1hcmsgKm5nU3dpdGNoQ2FzZT1cIidtYXJrJ1wiPnt7IGNvbnRlbnQgfX08L21hcms+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9uZydcIj57eyBjb250ZW50IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPGVtICpuZ1N3aXRjaENhc2U9XCInZW0nXCI+e3sgY29udGVudCB9fTwvZW0+XG4gICAgICAgICAgICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCInc21hbGwnXCI+e3sgY29udGVudCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPGRlbCAqbmdTd2l0Y2hDYXNlPVwiJ2RlbCdcIj57eyBjb250ZW50IH19PC9kZWw+XG4gICAgICAgICAgICAgICAgPGlucyAqbmdTd2l0Y2hDYXNlPVwiJ2lucydcIj57eyBjb250ZW50IH19PC9pbnM+XG4gICAgICAgICAgICAgICAgPHN1YiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YidcIj57eyBjb250ZW50IH19PC9zdWI+XG4gICAgICAgICAgICAgICAgPHN1cCAqbmdTd2l0Y2hDYXNlPVwiJ3N1cCdcIj57eyBjb250ZW50IH19PC9zdXA+XG4gICAgICAgICAgICAgICAgPGNvZGUgKm5nU3dpdGNoQ2FzZT1cIidjb2RlJ1wiPnt7IGNvbnRlbnQgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgPGFiYnIgKm5nU3dpdGNoQ2FzZT1cIidhYmJyJ1wiPnt7IGNvbnRlbnQgfX08L2FiYnI+XG4gICAgICAgICAgICAgICAgPGNpdGUgKm5nU3dpdGNoQ2FzZT1cIidjaXRlJ1wiPnt7IGNvbnRlbnQgfX08L2NpdGU+XG4gICAgICAgICAgICAgICAgPGtiZCAqbmdTd2l0Y2hDYXNlPVwiJ2tiZCdcIj57eyBjb250ZW50IH19PC9rYmQ+XG4gICAgICAgICAgICAgICAgPHMgKm5nU3dpdGNoQ2FzZT1cIidzJ1wiPnt7IGNvbnRlbnQgfX08L3M+XG4gICAgICAgICAgICAgICAgPHEgKm5nU3dpdGNoQ2FzZT1cIidxJ1wiPnt7IGNvbnRlbnQgfX08L3E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlSW5uZXJIdG1sSDU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlSW5uZXJIdG1sOyBlbHNlIG5vV3JhcHBlckg1XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJINUlubmVySHRtbD5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmljaC1odG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJlbmRlcmVkSHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1dyYXBwZXJINUlubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckg1Pnt7IGNvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaDU+XG5cbiAgICA8IS0tIEg2IC0tPlxuICAgIDxoNiAqbmdTd2l0Y2hDYXNlPVwiJ2g2J1wiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHVzZUlubmVySHRtbEg2XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzcGFuJ1wiPnt7IGNvbnRlbnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGIgKm5nU3dpdGNoQ2FzZT1cIidiJ1wiPnt7IGNvbnRlbnQgfX08L2I+XG4gICAgICAgICAgICAgICAgPGkgKm5nU3dpdGNoQ2FzZT1cIidpJ1wiPnt7IGNvbnRlbnQgfX08L2k+XG4gICAgICAgICAgICAgICAgPHUgKm5nU3dpdGNoQ2FzZT1cIid1J1wiPnt7IGNvbnRlbnQgfX08L3U+XG4gICAgICAgICAgICAgICAgPG1hcmsgKm5nU3dpdGNoQ2FzZT1cIidtYXJrJ1wiPnt7IGNvbnRlbnQgfX08L21hcms+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9uZydcIj57eyBjb250ZW50IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPGVtICpuZ1N3aXRjaENhc2U9XCInZW0nXCI+e3sgY29udGVudCB9fTwvZW0+XG4gICAgICAgICAgICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCInc21hbGwnXCI+e3sgY29udGVudCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPGRlbCAqbmdTd2l0Y2hDYXNlPVwiJ2RlbCdcIj57eyBjb250ZW50IH19PC9kZWw+XG4gICAgICAgICAgICAgICAgPGlucyAqbmdTd2l0Y2hDYXNlPVwiJ2lucydcIj57eyBjb250ZW50IH19PC9pbnM+XG4gICAgICAgICAgICAgICAgPHN1YiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YidcIj57eyBjb250ZW50IH19PC9zdWI+XG4gICAgICAgICAgICAgICAgPHN1cCAqbmdTd2l0Y2hDYXNlPVwiJ3N1cCdcIj57eyBjb250ZW50IH19PC9zdXA+XG4gICAgICAgICAgICAgICAgPGNvZGUgKm5nU3dpdGNoQ2FzZT1cIidjb2RlJ1wiPnt7IGNvbnRlbnQgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgPGFiYnIgKm5nU3dpdGNoQ2FzZT1cIidhYmJyJ1wiPnt7IGNvbnRlbnQgfX08L2FiYnI+XG4gICAgICAgICAgICAgICAgPGNpdGUgKm5nU3dpdGNoQ2FzZT1cIidjaXRlJ1wiPnt7IGNvbnRlbnQgfX08L2NpdGU+XG4gICAgICAgICAgICAgICAgPGtiZCAqbmdTd2l0Y2hDYXNlPVwiJ2tiZCdcIj57eyBjb250ZW50IH19PC9rYmQ+XG4gICAgICAgICAgICAgICAgPHMgKm5nU3dpdGNoQ2FzZT1cIidzJ1wiPnt7IGNvbnRlbnQgfX08L3M+XG4gICAgICAgICAgICAgICAgPHEgKm5nU3dpdGNoQ2FzZT1cIidxJ1wiPnt7IGNvbnRlbnQgfX08L3E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlSW5uZXJIdG1sSDY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlSW5uZXJIdG1sOyBlbHNlIG5vV3JhcHBlckg2XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJINklubmVySHRtbD5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmljaC1odG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJlbmRlcmVkSHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1dyYXBwZXJINklubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckg2Pnt7IGNvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaDY+XG5cbiAgICA8IS0tIFAgKENPUlJFR0lETykgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3AnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHVzZUlubmVySHRtbFBcIj5cbiAgICAgICAgICAgIDxwIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3NwYW4nXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YiAqbmdTd2l0Y2hDYXNlPVwiJ2InXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9iPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2knXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8dSAqbmdTd2l0Y2hDYXNlPVwiJ3UnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC91PlxuICAgICAgICAgICAgICAgICAgICA8bWFyayAqbmdTd2l0Y2hDYXNlPVwiJ21hcmsnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9tYXJrPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9uZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8ZW0gKm5nU3dpdGNoQ2FzZT1cIidlbSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2VtPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInc21hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgID48L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8ZGVsICpuZ1N3aXRjaENhc2U9XCInZGVsJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZGVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5zICpuZ1N3aXRjaENhc2U9XCInaW5zJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvaW5zPlxuICAgICAgICAgICAgICAgICAgICA8c3ViICpuZ1N3aXRjaENhc2U9XCInc3ViJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvc3ViPlxuICAgICAgICAgICAgICAgICAgICA8c3VwICpuZ1N3aXRjaENhc2U9XCInc3VwJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvc3VwPlxuICAgICAgICAgICAgICAgICAgICA8Y29kZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8YWJiciAqbmdTd2l0Y2hDYXNlPVwiJ2FiYnInXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9hYmJyPlxuICAgICAgICAgICAgICAgICAgICA8Y2l0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2NpdGUnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9jaXRlPlxuICAgICAgICAgICAgICAgICAgICA8a2JkICpuZ1N3aXRjaENhc2U9XCIna2JkJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwva2JkPlxuICAgICAgICAgICAgICAgICAgICA8cyAqbmdTd2l0Y2hDYXNlPVwiJ3MnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zPlxuICAgICAgICAgICAgICAgICAgICA8cSAqbmdTd2l0Y2hDYXNlPVwiJ3EnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9xPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1c2VJbm5lckh0bWxQPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZUlubmVySHRtbDsgZWxzZSBub1dyYXBwZXJQXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJQSW5uZXJIdG1sPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vV3JhcHBlclBJbm5lckh0bWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJQPlxuICAgICAgICAgICAgICAgIEBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIERFRkFVTFQgLS0+XG4gICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdCBbbmdDbGFzc109XCJjc3NDbGFzc1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1keW5hbWljLWhlYWRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZy9iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7OztBQStCdkIsTUFBTSxPQUFPLDhCQUE4QjthQUNmLGdCQUFXLEdBQUc7UUFDbEMsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osR0FBRztRQUNILE1BQU07S0FDVCxBQVRrQyxDQVNqQzthQUVzQixvQkFBZSxHQUFxQjtRQUN4RCxNQUFNO1FBQ04sR0FBRztRQUNILEdBQUc7UUFDSCxHQUFHO1FBQ0gsTUFBTTtRQUNOLFFBQVE7UUFDUixJQUFJO1FBQ0osT0FBTztRQUNQLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxNQUFNO1FBQ04sTUFBTTtRQUNOLE1BQU07UUFDTixLQUFLO1FBQ0wsR0FBRztRQUNILEdBQUc7UUFDSCxJQUFJO0tBQ1AsQUFwQnNDLENBb0JyQztJQVFGLDJEQUEyRDtJQUMzRCxJQUNJLEdBQUcs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M0MsazlsQkErWEEsNi8xQkQ1VmMsWUFBWTs7NEZBS2IsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs7MEJBZ0YxQyxNQUFNOzJCQUFDLFdBQVc7eUVBeENkLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUYsR0FBRztzQkFETixLQUFLO2dCQVlGLE9BQU87c0JBRFYsS0FBSztnQkFhRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG50eXBlIEFsbG93ZWRXcmFwcGVyID1cbiAgICB8ICdzcGFuJ1xuICAgIHwgJ2InXG4gICAgfCAnaSdcbiAgICB8ICd1J1xuICAgIHwgJ21hcmsnXG4gICAgfCAnc3Ryb25nJ1xuICAgIHwgJ2VtJ1xuICAgIHwgJ3NtYWxsJ1xuICAgIHwgJ2RlbCdcbiAgICB8ICdpbnMnXG4gICAgfCAnc3ViJ1xuICAgIHwgJ3N1cCdcbiAgICB8ICdjb2RlJ1xuICAgIHwgJ2FiYnInXG4gICAgfCAnY2l0ZSdcbiAgICB8ICdrYmQnXG4gICAgfCAncydcbiAgICB8ICdxJ1xuICAgIHwgbnVsbDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1keW5hbWljLWhlYWRpbmcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1keW5hbWljLWhlYWRpbmcuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGFsbG93ZWRUYWdzID0gW1xuICAgICAgICAnaDEnLFxuICAgICAgICAnaDInLFxuICAgICAgICAnaDMnLFxuICAgICAgICAnaDQnLFxuICAgICAgICAnaDUnLFxuICAgICAgICAnaDYnLFxuICAgICAgICAncCcsXG4gICAgICAgICdzcGFuJyxcbiAgICBdO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgYWxsb3dlZFdyYXBwZXJzOiBBbGxvd2VkV3JhcHBlcltdID0gW1xuICAgICAgICAnc3BhbicsXG4gICAgICAgICdiJyxcbiAgICAgICAgJ2knLFxuICAgICAgICAndScsXG4gICAgICAgICdtYXJrJyxcbiAgICAgICAgJ3N0cm9uZycsXG4gICAgICAgICdlbScsXG4gICAgICAgICdzbWFsbCcsXG4gICAgICAgICdkZWwnLFxuICAgICAgICAnaW5zJyxcbiAgICAgICAgJ3N1YicsXG4gICAgICAgICdzdXAnLFxuICAgICAgICAnY29kZScsXG4gICAgICAgICdhYmJyJyxcbiAgICAgICAgJ2NpdGUnLFxuICAgICAgICAna2JkJyxcbiAgICAgICAgJ3MnLFxuICAgICAgICAncScsXG4gICAgICAgIG51bGwsXG4gICAgXTtcblxuICAgIHByaXZhdGUgX3RhZzogc3RyaW5nID0gJ2gxJztcbiAgICBwcml2YXRlIF93cmFwcGVyOiBBbGxvd2VkV3JhcHBlciA9IG51bGw7XG5cbiAgICAvKiogRm9yemFyIGlubmVySFRNTCByZW5kZXJpbmcgKi9cbiAgICBASW5wdXQoKSB1c2VJbm5lckh0bWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBFdGlxdWV0YSBIVE1MIHByaW5jaXBhbCAoaDEtaDYsIHAsIHNwYW4gcG9yIGRlZmVjdG8pICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGFnKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFnID0gQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50LmFsbG93ZWRUYWdzLmluY2x1ZGVzKHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiAnaDEnO1xuICAgIH1cbiAgICBnZXQgdGFnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWc7XG4gICAgfVxuXG4gICAgLyoqIFdyYXBwZXIgaW50ZXJpb3IgKHNwYW4sIHN0cm9uZywgZW0sIGV0Yy4pICovXG4gICAgQElucHV0KClcbiAgICBzZXQgd3JhcHBlcih2YWx1ZTogQWxsb3dlZFdyYXBwZXIpIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlciA9IEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudC5hbGxvd2VkV3JhcHBlcnMuaW5jbHVkZXMoXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICApXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGdldCB3cmFwcGVyKCk6IEFsbG93ZWRXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqIENsYXNlcyBDU1Mgb3BjaW9uYWxlcyAqL1xuICAgIEBJbnB1dCgpIGNzc0NsYXNzID0gJyc7XG5cbiAgICAvKiogVGV4dG8gZGVsIGhlYWRpbmcgKi9cbiAgICBASW5wdXQoKSBjb250ZW50Pzogc3RyaW5nO1xuXG4gICAgLyoqIENvbG9yIG9wY2lvbmFsIChpbmxpbmUgc3R5bGUpICovXG4gICAgQElucHV0KCkgY29sb3I/OiBzdHJpbmc7XG5cbiAgICByZW5kZXJlZEh0bWwgPSAnJztcblxuICAgIHByaXZhdGUgYmxvY2tSZSA9XG4gICAgICAgIC88KHB8dGFibGV8dGhlYWR8dGJvZHl8dGZvb3R8dHJ8dWx8b2x8bGl8ZGl2fHNlY3Rpb258YXJ0aWNsZXxoWzEtNl18YmxvY2txdW90ZSkvaTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuZGVjb2RlRW50aXRpZXModGhpcy5jb250ZW50IHx8ICcnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZWRIdG1sID0gdGhpcy5jbGVhbkh0bWwoZGVjb2RlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkSHRtbCA9IHRoaXMuY29udGVudCB8fCAnJztcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3J6YW1vcyBhIEFuZ3VsYXIgYSByZXBpbnRhciBlbCBjb21wb25lbnRlIHBvcnF1ZSB1c2Ftb3MgT25QdXNoXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBMaW1waWEgPHA+IHZhY8Otb3MgeSA8cD4gZW52b2x2aWVuZG8gYmxvcXVlcy90YWJsYXM7IGRlc2VudnVlbHZlIDxwPiBkZW50cm8gZGUgY2VsZGFzLiAqL1xuICAgIHByaXZhdGUgY2xlYW5IdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcm9vdC5pbm5lckhUTUwgPSBodG1sO1xuXG4gICAgICAgIC8vIDEpIDx0ZHx0aD48cD4uLi48L3A+PC90ZHx0aD4gLT4gPHRkfHRoPi4uLjwvdGR8dGg+XG4gICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgndGQgPiBwLCB0aCA+IHAnKS5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwLnBhcmVudEVsZW1lbnQhO1xuICAgICAgICAgICAgd2hpbGUgKHAuZmlyc3RDaGlsZCkgcGFyZW50Lmluc2VydEJlZm9yZShwLmZpcnN0Q2hpbGQsIHApO1xuICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyAyKSA8cD4gcXVlIHNvbG8gdGllbmUgZXNwYWNpb3MvbmJzcC9iciAtPiBlbGltaW5hclxuICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AnKS5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvbmx5QnIgPSBBcnJheS5mcm9tKHAuY2hpbGROb2RlcykuZXZlcnkoXG4gICAgICAgICAgICAgICAgKG4pID0+XG4gICAgICAgICAgICAgICAgICAgIChuLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKG4gYXMgRWxlbWVudCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnInKSB8fFxuICAgICAgICAgICAgICAgICAgICAobi5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChuLnRleHRDb250ZW50IHx8ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHUwMGEwL2csICcgJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRyaW0oKSA9PT0gJycpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG9ubHlCcikgcC5yZW1vdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gMykgPHA+IHF1ZSBlbnZ1ZWx2ZSB1biBibG9xdWUgKHRhYmxlLCB1bCwgb2wsIGRpdiwgc2VjdGlvbiwgYXJ0aWNsZSwgaDEuLmg2LCBibG9ja3F1b3RlKSAtPiBkZXNlbnZvbHZlclxuICAgICAgICBjb25zdCBpc0Jsb2NrID0gKGVsOiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgL14odGFibGV8dGhlYWR8dGJvZHl8dGZvb3R8dHJ8dGh8dGR8dWx8b2x8ZGl2fHNlY3Rpb258YXJ0aWNsZXxoWzEtNl18YmxvY2txdW90ZSkkL2kudGVzdChcbiAgICAgICAgICAgICAgICBlbC50YWdOYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgncCcpLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgICAgIC8vIFNpIGRlbnRybyBoYXkgYWxnw7puIGJsb3F1ZSwgZGVzZW52b2x2ZXJcbiAgICAgICAgICAgIGlmIChBcnJheS5mcm9tKHAuY2hpbGRyZW4pLnNvbWUoaXNCbG9jaykpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAocC5maXJzdENoaWxkKVxuICAgICAgICAgICAgICAgICAgICBwLnBhcmVudEVsZW1lbnQhLmluc2VydEJlZm9yZShwLmZpcnN0Q2hpbGQsIHApO1xuICAgICAgICAgICAgICAgIHAucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByb290LmlubmVySFRNTDtcbiAgICB9XG5cbiAgICBjb250YWluc0Jsb2NrSHRtbChjOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tSZS50ZXN0KGMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVjb2RlRW50aXRpZXMoczogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgdGEuaW5uZXJIVE1MID0gcztcbiAgICAgICAgcmV0dXJuIHRhLnZhbHVlO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRhZ1wiPlxuICAgIDwhLS0gSDEgLS0+XG4gICAgPGgxICpuZ1N3aXRjaENhc2U9XCInaDEnXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdXNlSW5uZXJIdG1sXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzcGFuJ1wiPnt7IGNvbnRlbnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGIgKm5nU3dpdGNoQ2FzZT1cIidiJ1wiPnt7IGNvbnRlbnQgfX08L2I+XG4gICAgICAgICAgICAgICAgPGkgKm5nU3dpdGNoQ2FzZT1cIidpJ1wiPnt7IGNvbnRlbnQgfX08L2k+XG4gICAgICAgICAgICAgICAgPHUgKm5nU3dpdGNoQ2FzZT1cIid1J1wiPnt7IGNvbnRlbnQgfX08L3U+XG4gICAgICAgICAgICAgICAgPG1hcmsgKm5nU3dpdGNoQ2FzZT1cIidtYXJrJ1wiPnt7IGNvbnRlbnQgfX08L21hcms+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9uZydcIj57eyBjb250ZW50IH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPGVtICpuZ1N3aXRjaENhc2U9XCInZW0nXCI+e3sgY29udGVudCB9fTwvZW0+XG4gICAgICAgICAgICAgICAgPHNtYWxsICpuZ1N3aXRjaENhc2U9XCInc21hbGwnXCI+e3sgY29udGVudCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPGRlbCAqbmdTd2l0Y2hDYXNlPVwiJ2RlbCdcIj57eyBjb250ZW50IH19PC9kZWw+XG4gICAgICAgICAgICAgICAgPGlucyAqbmdTd2l0Y2hDYXNlPVwiJ2lucydcIj57eyBjb250ZW50IH19PC9pbnM+XG4gICAgICAgICAgICAgICAgPHN1YiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YidcIj57eyBjb250ZW50IH19PC9zdWI+XG4gICAgICAgICAgICAgICAgPHN1cCAqbmdTd2l0Y2hDYXNlPVwiJ3N1cCdcIj57eyBjb250ZW50IH19PC9zdXA+XG4gICAgICAgICAgICAgICAgPGNvZGUgKm5nU3dpdGNoQ2FzZT1cIidjb2RlJ1wiPnt7IGNvbnRlbnQgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgPGFiYnIgKm5nU3dpdGNoQ2FzZT1cIidhYmJyJ1wiPnt7IGNvbnRlbnQgfX08L2FiYnI+XG4gICAgICAgICAgICAgICAgPGNpdGUgKm5nU3dpdGNoQ2FzZT1cIidjaXRlJ1wiPnt7IGNvbnRlbnQgfX08L2NpdGU+XG4gICAgICAgICAgICAgICAgPGtiZCAqbmdTd2l0Y2hDYXNlPVwiJ2tiZCdcIj57eyBjb250ZW50IH19PC9rYmQ+XG4gICAgICAgICAgICAgICAgPHMgKm5nU3dpdGNoQ2FzZT1cIidzJ1wiPnt7IGNvbnRlbnQgfX08L3M+XG4gICAgICAgICAgICAgICAgPHEgKm5nU3dpdGNoQ2FzZT1cIidxJ1wiPnt7IGNvbnRlbnQgfX08L3E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlSW5uZXJIdG1sPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZUlubmVySHRtbDsgZWxzZSBub1dyYXBwZXJIMVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDFJbm5lckh0bWw+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJpY2gtaHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZW5kZXJlZEh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9XcmFwcGVySDFJbm5lckh0bWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJIMT57eyBjb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2gxPlxuXG4gICAgPCEtLSBIMiAtLT5cbiAgICA8aDIgKm5nU3dpdGNoQ2FzZT1cIidoMidcIiBbbmdDbGFzc109XCJjc3NDbGFzc1wiIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid3JhcHBlcjsgZWxzZSB1c2VJbm5lckh0bWxIMlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3BhbidcIj57eyBjb250ZW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxiICpuZ1N3aXRjaENhc2U9XCInYidcIj57eyBjb250ZW50IH19PC9iPlxuICAgICAgICAgICAgICAgIDxpICpuZ1N3aXRjaENhc2U9XCInaSdcIj57eyBjb250ZW50IH19PC9pPlxuICAgICAgICAgICAgICAgIDx1ICpuZ1N3aXRjaENhc2U9XCIndSdcIj57eyBjb250ZW50IH19PC91PlxuICAgICAgICAgICAgICAgIDxtYXJrICpuZ1N3aXRjaENhc2U9XCInbWFyaydcIj57eyBjb250ZW50IH19PC9tYXJrPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgKm5nU3dpdGNoQ2FzZT1cIidzdHJvbmcnXCI+e3sgY29udGVudCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxlbSAqbmdTd2l0Y2hDYXNlPVwiJ2VtJ1wiPnt7IGNvbnRlbnQgfX08L2VtPlxuICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdTd2l0Y2hDYXNlPVwiJ3NtYWxsJ1wiPnt7IGNvbnRlbnQgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxkZWwgKm5nU3dpdGNoQ2FzZT1cIidkZWwnXCI+e3sgY29udGVudCB9fTwvZGVsPlxuICAgICAgICAgICAgICAgIDxpbnMgKm5nU3dpdGNoQ2FzZT1cIidpbnMnXCI+e3sgY29udGVudCB9fTwvaW5zPlxuICAgICAgICAgICAgICAgIDxzdWIgKm5nU3dpdGNoQ2FzZT1cIidzdWInXCI+e3sgY29udGVudCB9fTwvc3ViPlxuICAgICAgICAgICAgICAgIDxzdXAgKm5nU3dpdGNoQ2FzZT1cIidzdXAnXCI+e3sgY29udGVudCB9fTwvc3VwPlxuICAgICAgICAgICAgICAgIDxjb2RlICpuZ1N3aXRjaENhc2U9XCInY29kZSdcIj57eyBjb250ZW50IH19PC9jb2RlPlxuICAgICAgICAgICAgICAgIDxhYmJyICpuZ1N3aXRjaENhc2U9XCInYWJicidcIj57eyBjb250ZW50IH19PC9hYmJyPlxuICAgICAgICAgICAgICAgIDxjaXRlICpuZ1N3aXRjaENhc2U9XCInY2l0ZSdcIj57eyBjb250ZW50IH19PC9jaXRlPlxuICAgICAgICAgICAgICAgIDxrYmQgKm5nU3dpdGNoQ2FzZT1cIidrYmQnXCI+e3sgY29udGVudCB9fTwva2JkPlxuICAgICAgICAgICAgICAgIDxzICpuZ1N3aXRjaENhc2U9XCIncydcIj57eyBjb250ZW50IH19PC9zPlxuICAgICAgICAgICAgICAgIDxxICpuZ1N3aXRjaENhc2U9XCIncSdcIj57eyBjb250ZW50IH19PC9xPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3VzZUlubmVySHRtbEgyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZUlubmVySHRtbDsgZWxzZSBub1dyYXBwZXJIMlwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDJJbm5lckh0bWw+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJpY2gtaHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZW5kZXJlZEh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9XcmFwcGVySDJJbm5lckh0bWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1dyYXBwZXJIMj57eyBjb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2gyPlxuXG4gICAgPCEtLSBIMyAoQ09SUkVHSURPKSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaDMnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIG5vV3JhcHBlckgzXCI+XG4gICAgICAgICAgICA8aDMgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3BhbidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxiICpuZ1N3aXRjaENhc2U9XCInYidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2I+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ1N3aXRjaENhc2U9XCInaSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDx1ICpuZ1N3aXRjaENhc2U9XCIndSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3U+XG4gICAgICAgICAgICAgICAgICAgIDxtYXJrICpuZ1N3aXRjaENhc2U9XCInbWFyaydcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L21hcms+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInc3Ryb25nJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxlbSAqbmdTd2l0Y2hDYXNlPVwiJ2VtJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZW0+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxkZWwgKm5nU3dpdGNoQ2FzZT1cIidkZWwnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9kZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnMgKm5nU3dpdGNoQ2FzZT1cIidpbnMnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9pbnM+XG4gICAgICAgICAgICAgICAgICAgIDxzdWIgKm5nU3dpdGNoQ2FzZT1cIidzdWInXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zdWI+XG4gICAgICAgICAgICAgICAgICAgIDxzdXAgKm5nU3dpdGNoQ2FzZT1cIidzdXAnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zdXA+XG4gICAgICAgICAgICAgICAgICAgIDxjb2RlICpuZ1N3aXRjaENhc2U9XCInY29kZSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDxhYmJyICpuZ1N3aXRjaENhc2U9XCInYWJicidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2FiYnI+XG4gICAgICAgICAgICAgICAgICAgIDxjaXRlICpuZ1N3aXRjaENhc2U9XCInY2l0ZSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2NpdGU+XG4gICAgICAgICAgICAgICAgICAgIDxrYmQgKm5nU3dpdGNoQ2FzZT1cIidrYmQnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9rYmQ+XG4gICAgICAgICAgICAgICAgICAgIDxzICpuZ1N3aXRjaENhc2U9XCIncydcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3M+XG4gICAgICAgICAgICAgICAgICAgIDxxICpuZ1N3aXRjaENhc2U9XCIncSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3E+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckgzPlxuICAgICAgICAgICAgQGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgPGgzXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJpY2gtaHRtbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZW5kZXJlZEh0bWxcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gSDQgLS0+XG4gICAgPGg0ICpuZ1N3aXRjaENhc2U9XCInaDQnXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdXNlSW5uZXJIdG1sSDRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3NwYW4nXCI+e3sgY29udGVudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YiAqbmdTd2l0Y2hDYXNlPVwiJ2InXCI+e3sgY29udGVudCB9fTwvYj5cbiAgICAgICAgICAgICAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2knXCI+e3sgY29udGVudCB9fTwvaT5cbiAgICAgICAgICAgICAgICA8dSAqbmdTd2l0Y2hDYXNlPVwiJ3UnXCI+e3sgY29udGVudCB9fTwvdT5cbiAgICAgICAgICAgICAgICA8bWFyayAqbmdTd2l0Y2hDYXNlPVwiJ21hcmsnXCI+e3sgY29udGVudCB9fTwvbWFyaz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nICpuZ1N3aXRjaENhc2U9XCInc3Ryb25nJ1wiPnt7IGNvbnRlbnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8ZW0gKm5nU3dpdGNoQ2FzZT1cIidlbSdcIj57eyBjb250ZW50IH19PC9lbT5cbiAgICAgICAgICAgICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cIidzbWFsbCdcIj57eyBjb250ZW50IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8ZGVsICpuZ1N3aXRjaENhc2U9XCInZGVsJ1wiPnt7IGNvbnRlbnQgfX08L2RlbD5cbiAgICAgICAgICAgICAgICA8aW5zICpuZ1N3aXRjaENhc2U9XCInaW5zJ1wiPnt7IGNvbnRlbnQgfX08L2lucz5cbiAgICAgICAgICAgICAgICA8c3ViICpuZ1N3aXRjaENhc2U9XCInc3ViJ1wiPnt7IGNvbnRlbnQgfX08L3N1Yj5cbiAgICAgICAgICAgICAgICA8c3VwICpuZ1N3aXRjaENhc2U9XCInc3VwJ1wiPnt7IGNvbnRlbnQgfX08L3N1cD5cbiAgICAgICAgICAgICAgICA8Y29kZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCI+e3sgY29udGVudCB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICA8YWJiciAqbmdTd2l0Y2hDYXNlPVwiJ2FiYnInXCI+e3sgY29udGVudCB9fTwvYWJicj5cbiAgICAgICAgICAgICAgICA8Y2l0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2NpdGUnXCI+e3sgY29udGVudCB9fTwvY2l0ZT5cbiAgICAgICAgICAgICAgICA8a2JkICpuZ1N3aXRjaENhc2U9XCIna2JkJ1wiPnt7IGNvbnRlbnQgfX08L2tiZD5cbiAgICAgICAgICAgICAgICA8cyAqbmdTd2l0Y2hDYXNlPVwiJ3MnXCI+e3sgY29udGVudCB9fTwvcz5cbiAgICAgICAgICAgICAgICA8cSAqbmdTd2l0Y2hDYXNlPVwiJ3EnXCI+e3sgY29udGVudCB9fTwvcT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1c2VJbm5lckh0bWxIND5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VJbm5lckh0bWw7IGVsc2Ugbm9XcmFwcGVySDRcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckg0SW5uZXJIdG1sPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vV3JhcHBlckg0SW5uZXJIdG1sXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDQ+e3sgY29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oND5cblxuICAgIDwhLS0gSDUgLS0+XG4gICAgPGg1ICpuZ1N3aXRjaENhc2U9XCInaDUnXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdXNlSW5uZXJIdG1sSDVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3NwYW4nXCI+e3sgY29udGVudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YiAqbmdTd2l0Y2hDYXNlPVwiJ2InXCI+e3sgY29udGVudCB9fTwvYj5cbiAgICAgICAgICAgICAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2knXCI+e3sgY29udGVudCB9fTwvaT5cbiAgICAgICAgICAgICAgICA8dSAqbmdTd2l0Y2hDYXNlPVwiJ3UnXCI+e3sgY29udGVudCB9fTwvdT5cbiAgICAgICAgICAgICAgICA8bWFyayAqbmdTd2l0Y2hDYXNlPVwiJ21hcmsnXCI+e3sgY29udGVudCB9fTwvbWFyaz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nICpuZ1N3aXRjaENhc2U9XCInc3Ryb25nJ1wiPnt7IGNvbnRlbnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8ZW0gKm5nU3dpdGNoQ2FzZT1cIidlbSdcIj57eyBjb250ZW50IH19PC9lbT5cbiAgICAgICAgICAgICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cIidzbWFsbCdcIj57eyBjb250ZW50IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8ZGVsICpuZ1N3aXRjaENhc2U9XCInZGVsJ1wiPnt7IGNvbnRlbnQgfX08L2RlbD5cbiAgICAgICAgICAgICAgICA8aW5zICpuZ1N3aXRjaENhc2U9XCInaW5zJ1wiPnt7IGNvbnRlbnQgfX08L2lucz5cbiAgICAgICAgICAgICAgICA8c3ViICpuZ1N3aXRjaENhc2U9XCInc3ViJ1wiPnt7IGNvbnRlbnQgfX08L3N1Yj5cbiAgICAgICAgICAgICAgICA8c3VwICpuZ1N3aXRjaENhc2U9XCInc3VwJ1wiPnt7IGNvbnRlbnQgfX08L3N1cD5cbiAgICAgICAgICAgICAgICA8Y29kZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCI+e3sgY29udGVudCB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICA8YWJiciAqbmdTd2l0Y2hDYXNlPVwiJ2FiYnInXCI+e3sgY29udGVudCB9fTwvYWJicj5cbiAgICAgICAgICAgICAgICA8Y2l0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2NpdGUnXCI+e3sgY29udGVudCB9fTwvY2l0ZT5cbiAgICAgICAgICAgICAgICA8a2JkICpuZ1N3aXRjaENhc2U9XCIna2JkJ1wiPnt7IGNvbnRlbnQgfX08L2tiZD5cbiAgICAgICAgICAgICAgICA8cyAqbmdTd2l0Y2hDYXNlPVwiJ3MnXCI+e3sgY29udGVudCB9fTwvcz5cbiAgICAgICAgICAgICAgICA8cSAqbmdTd2l0Y2hDYXNlPVwiJ3EnXCI+e3sgY29udGVudCB9fTwvcT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1c2VJbm5lckh0bWxINT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VJbm5lckh0bWw7IGVsc2Ugbm9XcmFwcGVySDVcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckg1SW5uZXJIdG1sPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vV3JhcHBlckg1SW5uZXJIdG1sXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDU+e3sgY29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oNT5cblxuICAgIDwhLS0gSDYgLS0+XG4gICAgPGg2ICpuZ1N3aXRjaENhc2U9XCInaDYnXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdXNlSW5uZXJIdG1sSDZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3NwYW4nXCI+e3sgY29udGVudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YiAqbmdTd2l0Y2hDYXNlPVwiJ2InXCI+e3sgY29udGVudCB9fTwvYj5cbiAgICAgICAgICAgICAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2knXCI+e3sgY29udGVudCB9fTwvaT5cbiAgICAgICAgICAgICAgICA8dSAqbmdTd2l0Y2hDYXNlPVwiJ3UnXCI+e3sgY29udGVudCB9fTwvdT5cbiAgICAgICAgICAgICAgICA8bWFyayAqbmdTd2l0Y2hDYXNlPVwiJ21hcmsnXCI+e3sgY29udGVudCB9fTwvbWFyaz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nICpuZ1N3aXRjaENhc2U9XCInc3Ryb25nJ1wiPnt7IGNvbnRlbnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8ZW0gKm5nU3dpdGNoQ2FzZT1cIidlbSdcIj57eyBjb250ZW50IH19PC9lbT5cbiAgICAgICAgICAgICAgICA8c21hbGwgKm5nU3dpdGNoQ2FzZT1cIidzbWFsbCdcIj57eyBjb250ZW50IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8ZGVsICpuZ1N3aXRjaENhc2U9XCInZGVsJ1wiPnt7IGNvbnRlbnQgfX08L2RlbD5cbiAgICAgICAgICAgICAgICA8aW5zICpuZ1N3aXRjaENhc2U9XCInaW5zJ1wiPnt7IGNvbnRlbnQgfX08L2lucz5cbiAgICAgICAgICAgICAgICA8c3ViICpuZ1N3aXRjaENhc2U9XCInc3ViJ1wiPnt7IGNvbnRlbnQgfX08L3N1Yj5cbiAgICAgICAgICAgICAgICA8c3VwICpuZ1N3aXRjaENhc2U9XCInc3VwJ1wiPnt7IGNvbnRlbnQgfX08L3N1cD5cbiAgICAgICAgICAgICAgICA8Y29kZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCI+e3sgY29udGVudCB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICA8YWJiciAqbmdTd2l0Y2hDYXNlPVwiJ2FiYnInXCI+e3sgY29udGVudCB9fTwvYWJicj5cbiAgICAgICAgICAgICAgICA8Y2l0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2NpdGUnXCI+e3sgY29udGVudCB9fTwvY2l0ZT5cbiAgICAgICAgICAgICAgICA8a2JkICpuZ1N3aXRjaENhc2U9XCIna2JkJ1wiPnt7IGNvbnRlbnQgfX08L2tiZD5cbiAgICAgICAgICAgICAgICA8cyAqbmdTd2l0Y2hDYXNlPVwiJ3MnXCI+e3sgY29udGVudCB9fTwvcz5cbiAgICAgICAgICAgICAgICA8cSAqbmdTd2l0Y2hDYXNlPVwiJ3EnXCI+e3sgY29udGVudCB9fTwvcT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1c2VJbm5lckh0bWxINj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VJbm5lckh0bWw7IGVsc2Ugbm9XcmFwcGVySDZcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlckg2SW5uZXJIdG1sPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGFpbnNCbG9ja0h0bWwoY29udGVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyaWNoLWh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVuZGVyZWRIdG1sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vV3JhcHBlckg2SW5uZXJIdG1sXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9XcmFwcGVySDY+e3sgY29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oNj5cblxuICAgIDwhLS0gUCAoQ09SUkVHSURPKSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncCdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndyYXBwZXI7IGVsc2UgdXNlSW5uZXJIdG1sUFwiPlxuICAgICAgICAgICAgPHAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3BhbidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxiICpuZ1N3aXRjaENhc2U9XCInYidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2I+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ1N3aXRjaENhc2U9XCInaSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDx1ICpuZ1N3aXRjaENhc2U9XCIndSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3U+XG4gICAgICAgICAgICAgICAgICAgIDxtYXJrICpuZ1N3aXRjaENhc2U9XCInbWFyaydcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L21hcms+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInc3Ryb25nJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxlbSAqbmdTd2l0Y2hDYXNlPVwiJ2VtJ1wiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZW0+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxkZWwgKm5nU3dpdGNoQ2FzZT1cIidkZWwnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9kZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnMgKm5nU3dpdGNoQ2FzZT1cIidpbnMnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9pbnM+XG4gICAgICAgICAgICAgICAgICAgIDxzdWIgKm5nU3dpdGNoQ2FzZT1cIidzdWInXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zdWI+XG4gICAgICAgICAgICAgICAgICAgIDxzdXAgKm5nU3dpdGNoQ2FzZT1cIidzdXAnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zdXA+XG4gICAgICAgICAgICAgICAgICAgIDxjb2RlICpuZ1N3aXRjaENhc2U9XCInY29kZSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDxhYmJyICpuZ1N3aXRjaENhc2U9XCInYWJicidcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2FiYnI+XG4gICAgICAgICAgICAgICAgICAgIDxjaXRlICpuZ1N3aXRjaENhc2U9XCInY2l0ZSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2NpdGU+XG4gICAgICAgICAgICAgICAgICAgIDxrYmQgKm5nU3dpdGNoQ2FzZT1cIidrYmQnXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9rYmQ+XG4gICAgICAgICAgICAgICAgICAgIDxzICpuZ1N3aXRjaENhc2U9XCIncydcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3M+XG4gICAgICAgICAgICAgICAgICAgIDxxICpuZ1N3aXRjaENhc2U9XCIncSdcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3E+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3VzZUlubmVySHRtbFA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlSW5uZXJIdG1sOyBlbHNlIG5vV3JhcHBlclBcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlclBJbm5lckh0bWw+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRhaW5zQmxvY2tIdG1sKGNvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJpY2gtaHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZW5kZXJlZEh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9XcmFwcGVyUElubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vV3JhcHBlclA+XG4gICAgICAgICAgICAgICAgQGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWluc0Jsb2NrSHRtbChjb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJpY2gtaHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZW5kZXJlZEh0bWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gREVGQVVMVCAtLT5cbiAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0IFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -90,7 +90,7 @@ export class BabylonSlidersDirective {
90
90
  return $wrapper.length > 0 ? $wrapper : $(nativeEl);
91
91
  };
92
92
  // Preguntamos cada 100ms si el contenedor correcto ya tiene elementos hijos
93
- timer(0, 100)
93
+ timer(1000, 100)
94
94
  .pipe(map(() => getSliderContainer().children().length > 0), filter((hasChildren) => hasChildren === true), take(1), // Se auto-destruye al cumplirse
95
95
  timeout({ first: 5000, with: () => of(false) }))
96
96
  .subscribe((success) => {
@@ -457,4 +457,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
457
457
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sliders: [{
458
458
  type: Input
459
459
  }] } });
460
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxPQUFPLEVBQ1AsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRcEMsTUFBTSxPQUFPLHVCQUF1QjtJQW1CaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFOakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUkxQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFFZixDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBRSxNQUFjLENBQUMsTUFBTSxJQUFLLE1BQWMsQ0FBQyxDQUFDLENBQUMsRUFDdEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEIsdURBQXVEO1FBQ3ZELEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ1AsTUFBTSxDQUFDLEdBQUcsTUFBYSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07Z0JBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUNPLGFBQWE7UUFDakIsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLE1BQU0sQ0FBQyxHQUFHLE1BQWEsQ0FBQztZQUN4QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUN0QyxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUN6QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDcEIsQ0FBQztJQUNOLENBQUM7SUFFRCxnRUFBZ0U7SUFDeEQscUJBQXFCO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sQ0FBQyxHQUFHLE1BQWEsQ0FBQztZQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFM0QsSUFBSSxLQUFLLElBQUksUUFBUTtnQkFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRXpDLHNFQUFzRTtZQUN0RSxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxJQUFJLENBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFDdEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNYLFFBQVEsQ0FBQztnQkFDTCxLQUFLLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDO2dCQUN0RCxLQUFLLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsZ0JBQWdCO2FBQ3ZFLENBQUMsQ0FDTCxFQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDckMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNwQztZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2RDtZQUNELHNFQUFzRTtZQUN0RSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDakM7U0FDSjtJQUNMLENBQUM7SUFFTyw2QkFBNkI7UUFDakMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0MsSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLENBQ2hDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxRQUFRLENBQUM7Z0JBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FDYixtQ0FBbUMsQ0FDdEM7Z0JBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FDWixnQ0FBZ0MsQ0FDbkM7YUFDSixDQUFDLENBQUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUNKLENBQ0osQ0FDSjtpQkFFQSxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBRWhELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBRXZDLHdFQUF3RTtRQUN4RSxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUM1QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDeEQsK0VBQStFO1lBQy9FLE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQztRQUVGLDRFQUE0RTtRQUM1RSxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQzthQUNSLElBQUksQ0FDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ3JELE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxFQUM3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0NBQWdDO1FBQ3pDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQ2xEO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsZ0ZBQWdGO2dCQUNoRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFFeEIsMkVBQTJFO2dCQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7aUJBQzlCO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxpRkFBaUY7SUFDekUsbUJBQW1CO1FBQ3ZCLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7Z0JBQ2pCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDakMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztvQkFDbkMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ3JDLFNBQVMsR0FBRyxRQUFRLENBQUM7d0JBQ3JCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDekMsb0JBQW9CLENBQ3ZCLENBQUM7d0JBQ0YsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7NEJBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7eUJBQzVCO3dCQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3FCQUMzQjtnQkFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDWixDQUFDLENBQUM7WUFDRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRDtJQUNMLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUk7UUFDckIsb0JBQW9CO1FBQ3BCLFNBQVMsQ0FDTCxHQUFHLEVBQUUsQ0FDRCxDQUFDLENBQ0csT0FBTyxDQUFDLEtBQUssV0FBVztZQUN4QixDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUNwQyxFQUNMLElBQUksQ0FDUCxFQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDakMsQ0FBQztJQUNOLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFRLENBQUM7UUFFaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUU1QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDNUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtTQUM5RDtRQUVELFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNsQixLQUFLLHFCQUFxQjtnQkFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLEtBQUssdUJBQXVCO2dCQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFDVixLQUFLLHlCQUF5QjtnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO1lBQ1YsS0FBSyx5QkFBeUI7Z0JBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FDWiwwQkFBMEIsRUFDMUIsd0JBQXdCLENBQzNCLENBQUMsQ0FBQywyREFBMkQ7Z0JBQzlELE1BQU07WUFDVixLQUFLLDJCQUEyQjtnQkFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxDQUNaLDRCQUE0QixFQUM1QiwwQkFBMEIsQ0FDN0IsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxzQkFBc0I7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssc0JBQXNCO2dCQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDVixLQUFLLHNCQUFzQjtnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1YsS0FBSyxzQkFBc0I7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNWO2dCQUNJLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBWTtRQUNoQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFeEQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDNUMsT0FBTztTQUNWO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXZFLFlBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsT0FBTyxFQUNQLGVBQWUsRUFDZixJQUFJLENBQ1A7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDO1lBQ3hELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlELFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzVDLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25FLGFBQWEsRUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkUsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUN0RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBWTtRQUNqQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFeEQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDNUMsT0FBTztTQUNWO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXZFLFlBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsT0FBTyxFQUNQLGVBQWUsRUFDZixJQUFJLENBQ1A7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDO1lBQ3hELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlELFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzVDLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25FLGFBQWEsRUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDdEUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQVk7UUFDakMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhELElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQzVDLE9BQU87U0FDVjtRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDcEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDcEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVCLFlBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsT0FBTyxFQUNQLGVBQWUsRUFDZixJQUFJLENBQ1A7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDO1lBQ3hELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlELFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzVDLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2xFLGFBQWEsRUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDbEUsSUFBSSxFQUFFLEtBQUs7WUFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztTQUMvRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBWTtRQUNuQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUN2QyxPQUFPO1NBQ1Y7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDVixZQUFZLEVBQUUsQ0FBQztnQkFDZixjQUFjLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxFQUFFLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLE1BQU07b0JBQy9DLENBQUMsQ0FBQywrQkFBK0I7b0JBQ2pDLENBQUMsQ0FBQywwQkFBMEI7Z0JBQ2hDLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixNQUFNLEVBQUUsS0FBSztnQkFDYixRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLEtBQUssRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQVk7UUFDckMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDdkMsT0FBTztTQUNWO1FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNWLFlBQVksRUFBRSxDQUFDO1lBQ2YsY0FBYyxFQUFFLENBQUM7WUFDakIsUUFBUSxFQUFFLDRCQUE0QjtZQUN0QyxhQUFhLEVBQUUsSUFBSTtZQUNuQixNQUFNLEVBQUUsS0FBSztZQUNiLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQVk7UUFDckMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDdkMsT0FBTztTQUNWO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTzthQUNwQixPQUFPLENBQUMsNEJBQTRCLENBQUM7YUFDckMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTzthQUNwQixPQUFPLENBQUMsNEJBQTRCLENBQUM7YUFDckMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFckMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNWLFlBQVksRUFBRSxDQUFDO1lBQ2YsY0FBYyxFQUFFLENBQUM7WUFDakIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsUUFBUSxFQUFFLHFDQUFxQztZQUMvQyxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxHQUFHO1lBQ1YsUUFBUSxFQUFFLEtBQUs7WUFDZixJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxPQUFZO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3ZDLE9BQU87U0FDVjtRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDcEIsT0FBTyxDQUFDLDRCQUE0QixDQUFDO2FBQ3JDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDcEIsT0FBTyxDQUFDLDRCQUE0QixDQUFDO2FBQ3JDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBRTlELE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDVixZQUFZLEVBQUUsQ0FBQztZQUNmLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSx1Q0FBdUM7WUFDakQsUUFBUSxFQUFFLEtBQUs7WUFDZixLQUFLLEVBQUUsR0FBRztZQUNWLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFZO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV4RCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUM1QyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFeEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELFlBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsT0FBTyxFQUNQLGVBQWUsRUFDZixJQUFJLENBQ1A7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDO1lBQ3hELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlELFlBQVksRUFBRSxZQUFZO1lBQzFCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25FLGFBQWEsRUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkUsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFZO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV4RCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUM1QyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdkUsWUFBb0IsQ0FBQyxLQUFLLENBQUM7WUFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUM1RCxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUNoQyxPQUFPLEVBQ1AsZUFBZSxFQUNmLElBQUksQ0FDUDtZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUM7WUFDeEQsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDOUQsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDNUMsWUFBWSxFQUFFLElBQUk7WUFDbEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkUsYUFBYSxFQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNuRSxJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZ0JBQWdCLENBQ3BCLE9BQVksRUFDWixXQUFtQixFQUNuQixZQUFpQjtRQUVqQixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUNuRSxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBWTtRQUNqQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMvRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxNQUFNLFNBQVMsR0FDWCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsR0FDVixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQztZQUU3RCxJQUFJLGlCQUFpQixLQUFLLFlBQVksRUFBRTtnQkFDcEMsSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRTtvQkFDekIsT0FBTyxRQUFRLENBQUM7aUJBQ25CO3FCQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQ2hDLE9BQU8sUUFBUSxDQUFDO2lCQUNuQjtxQkFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFO29CQUNqQyxPQUFPLFFBQVEsQ0FBQztpQkFDbkI7cUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRTtvQkFDakMsT0FBTyxTQUFTLENBQUM7aUJBQ3BCO3FCQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUU7b0JBQ2pDLE9BQU8sUUFBUSxDQUFDO2lCQUNuQjtxQkFBTTtvQkFDSCxPQUFPLFFBQVEsQ0FBQztpQkFDbkI7YUFDSjtpQkFBTTtnQkFDSCxPQUFPLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0M7U0FDSjtRQUNELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE9BQVksRUFBRSxZQUFvQjtRQUN6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFbkMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLFdBQVcsSUFBSSxZQUFZLENBQUM7UUFFL0MsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8sV0FBVyxDQUFDLFlBQW9CLEVBQUUsV0FBbUI7UUFDekQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUN0QyxLQUFLLENBQUMsS0FBSyxDQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDO29CQUNmLGNBQWMsRUFBRSxDQUFDO29CQUNqQixNQUFNLEVBQUUsSUFBSTtvQkFDWixJQUFJLEVBQUUsSUFBSTtvQkFDVixRQUFRLEVBQUUsV0FBVztpQkFDeEIsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNQLFlBQVksRUFBRSxDQUFDO29CQUNmLGNBQWMsRUFBRSxDQUFDO29CQUNqQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLE1BQU0sRUFBRSxLQUFLO29CQUNiLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7YUFDTjtTQUNKO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDOUI7U0FDSjtJQUNMLENBQUM7K0dBM2tCUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytFQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBkZWZlcixcbiAgICBmaWx0ZXIsXG4gICAgZm9ya0pvaW4sXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVdoaWxlLFxuICAgIHRhcCxcbiAgICB0aW1lb3V0LFxuICAgIHRpbWVyLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2xpZGVyc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25TbGlkZXJzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzbGlkZXJzITpcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXIyJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMydcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI1JztcblxuICAgIHByaXZhdGUgcmVzaXplVGltZW91dCE6IE5vZGVKUy5UaW1lb3V0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuITogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgZG9tT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZW5zdXJlSlF1ZXJ5QW5kU2xpY2skKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9ySlF1ZXJ5JCgpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVyKDAsIDQwKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+ICh3aW5kb3cgYXMgYW55KS5qUXVlcnkgfHwgKHdpbmRvdyBhcyBhbnkpLiQpLFxuICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCB9KSxcbiAgICAgICAgICAgIC8vIGV4cG9uZSAkIC8galF1ZXJ5IGdsb2JhbCBwb3Igc2kgZWwgYnVuZGxlIG5vIGxvIGhpem9cbiAgICAgICAgICAgIG1hcCgoanEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoIXcuJCkgdy4kID0ganE7XG4gICAgICAgICAgICAgICAgaWYgKCF3LmpRdWVyeSkgdy5qUXVlcnkgPSBqcTtcbiAgICAgICAgICAgICAgICByZXR1cm4ganE7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIHdhaXRGb3JTbGljayQoKSB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCA0MCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY29uc3QganEgPSB3LmpRdWVyeSB8fCB3LiQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpxICYmIGpxLmZuICYmIGpxLmZuLnNsaWNrO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGltZW91dCh7IGZpcnN0OiAxMDAwMCB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB2b2lkIDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIENhcmdhIGpRdWVyeSArIHNsaWNrIGVuIG9yZGVuIHkgZXNwZXJhIGEgcXVlIGVzdMOpbiBsaXN0b3MgKi9cbiAgICBwcml2YXRlIGVuc3VyZUpRdWVyeUFuZFNsaWNrJCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgaGFzSlEgPSAhISh3LmpRdWVyeSB8fCB3LiQpO1xuICAgICAgICAgICAgY29uc3QgaGFzU2xpY2sgPSAhISh3LmpRdWVyeT8uZm4/LnNsaWNrIHx8IHcuJD8uZm4/LnNsaWNrKTtcblxuICAgICAgICAgICAgaWYgKGhhc0pRICYmIGhhc1NsaWNrKSByZXR1cm4gb2Yodm9pZCAwKTtcblxuICAgICAgICAgICAgLy8gQWdyZWdhbW9zIGZvcmtKb2luIHBhcmEgZGVzY2FyZ2FyIHNjcmlwdCBkZSBzbGljayB5IENTUyBlbiBwYXJhbGVsb1xuICAgICAgICAgICAgcmV0dXJuIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9ySlF1ZXJ5JCgpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZm9ya0pvaW4oW1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFNjcmlwdCQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLm1pbi5qcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJCgnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJyksIC8vIDwtLSDCoUNSVUNJQUwhXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9yU2xpY2skKCkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FyZ2FuZG8galF1ZXJ5L3NsaWNrJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g8J+bkSBQb3Igc2kgZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZSBhbnRlcyBkZSBxdWUgbGxlZ2FyYW4gbG9zIGRhdG9zXG4gICAgICAgICAgICBpZiAodGhpcy5kb21PYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXRGb3JTbGlja0F2YWlsYWJpbGl0eSgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlSW5pdGlhbGl6ZVNsaWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIC8vIPCfkqEgTEEgQ0xBVkU6IEZ1bmNpw7NuIHBhcmEgZGV0ZWN0YXIgZWwgY29udGVuZWRvciByZWFsIGRlIGxhcyBpbcOhZ2VuZXNcbiAgICAgICAgY29uc3QgZ2V0U2xpZGVyQ29udGFpbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdyYXBwZXIgPSAkKG5hdGl2ZUVsKS5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcbiAgICAgICAgICAgIC8vIFNpIGVuY3VlbnRyYSBlbCB3cmFwcGVyLCBsbyBkZXZ1ZWx2ZS4gU2kgbm8sIGRldnVlbHZlIGVsIGVsZW1lbnRvIHByaW5jaXBhbC5cbiAgICAgICAgICAgIHJldHVybiAkd3JhcHBlci5sZW5ndGggPiAwID8gJHdyYXBwZXIgOiAkKG5hdGl2ZUVsKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQcmVndW50YW1vcyBjYWRhIDEwMG1zIHNpIGVsIGNvbnRlbmVkb3IgY29ycmVjdG8geWEgdGllbmUgZWxlbWVudG9zIGhpam9zXG4gICAgICAgIHRpbWVyKDAsIDEwMClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBnZXRTbGlkZXJDb250YWluZXIoKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoaGFzQ2hpbGRyZW4pID0+IGhhc0NoaWxkcmVuID09PSB0cnVlKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLCAvLyBTZSBhdXRvLWRlc3RydXllIGFsIGN1bXBsaXJzZVxuICAgICAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCwgd2l0aDogKCkgPT4gb2YoZmFsc2UpIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGxhbWFtb3MgYSB0dSBtw6l0b2RvIG9yaWdpbmFsIHF1ZSB5YSB0aWVuZSBlbCBzd2l0Y2ggcGFyYSBjYWRhIHRpcG8gZGUgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYW1vcyBlbCBsaXN0ZW5lciBkZWwgcmVzaXplICh1c2FuZG8gZWwgbcOpdG9kbyBzZXBhcmFkbyBxdWUgdGUgcGFzw6kpXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBIZSBzYWNhZG8gdHUgbMOzZ2ljYSBkZWwgcmVzaXplIGEgdW4gbcOpdG9kbyBwcm9waW8gcGFyYSBxdWUgcXVlZGUgbcOhcyBvcmRlbmFkbzpcbiAgICBwcml2YXRlIHNldHVwUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGxldCBsYXN0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobmV3V2lkdGggLSBsYXN0V2lkdGgpID4gNTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RXaWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuY3Nfc2xpZGVyX3dyYXBwZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2xpZGVyLnNsaWNrKCd1bnNsaWNrJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9yU2xpY2tBdmFpbGFiaWxpdHkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCAxMDApLnBpcGUoXG4gICAgICAgICAgICAvLyBQb2xsaW5nIGNhZGEgNzBtc1xuICAgICAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICQuZm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiAkLmZuLnNsaWNrICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gb2YodW5kZWZpbmVkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgYXMgYW55O1xuXG4gICAgICAgIGlmICghJHNsaWRlci5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAkc2xpY2tBY3RpdmUuc2xpY2soJ3Vuc2xpY2snKTsgLy8gRGVzdHJ1eWUgZWwgc2xpZGVyIGFjdHVhbFxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnNsaWRlcnMpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlck5hdigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdl8yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlck5hdl8yKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jU2xpZGVycyhcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYicsXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICAgICAgICAgICk7IC8vIFNpbmNyb25pemEgbG9zIHNsaWRlcnMgcG9yIHRlbWEgZGUgcmVuZGFyaXphZG8gZW4gZWwgRE9NXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlclRodW1iXzIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jU2xpZGVycyhcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXIzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjMoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyNCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXI0KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyNSgkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIyKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyMygkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuc2libGluZ3MoJy5jc19zbGlkZXJfYXJyb3dzJylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuc2libGluZ3MoJy5jc19zbGlkZXJfYXJyb3dzJylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDApLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbl9zZXJ2aWNlcycpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlck5hdigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiAkKCcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfbWluaScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfbWluaSdcbiAgICAgICAgICAgICAgICAgICAgOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnMHB4JyxcbiAgICAgICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlck5hdl8yKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDMsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInLFxuICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJUaHVtYigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3dfZ2FsbGVyeScpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvd19nYWxsZXJ5Jyk7XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXYuc2xpY2stc2xpZGVyJyxcbiAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgc3BlZWQ6IDYwMCxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWJfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3dfZ2FsbGVyeV8yIC5jc19zd2lwZXJfYnV0dG9uX3ByZXYnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeV8yIC5jc19zd2lwZXJfYnV0dG9uX25leHQnKTtcblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdl8yLnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogNjAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjQoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgY29uc3Qgc2xpZGVzVG9TaG93ID0gdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNsaWRlc1RvU2hvdyxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b2dnbGVTbGlkZXJBcnJvd3MoJHNsaWRlciwgc2xpZGVzVG9TaG93KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjUoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IHRydWUsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICRzbGlkZXI6IGFueSxcbiAgICAgICAgc2V0dGluZ05hbWU6IHN0cmluZyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBhbnlcbiAgICApOiBhbnkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoJHNsaWRlci5hdHRyKHNldHRpbmdOYW1lKSwgMTApIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNsaWRlc1BlclZpZXcoJHNsaWRlcjogYW55KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWRlc1BlclZpZXdUeXBlID0gJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpO1xuICAgICAgICAgICAgY29uc3QgeHNTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteHMtc2xpZGVzJyksIDEwKSB8fCAxO1xuICAgICAgICAgICAgY29uc3Qgc21TbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtc20tc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICAgICAgY29uc3QgbWRTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWQtc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICAgICAgY29uc3QgbWxnU2xpZGVzID1cbiAgICAgICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgICAgIGNvbnN0IGxnU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgICAgIGNvbnN0IHhsU2xpZGVzID1cbiAgICAgICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteGwtc2xpZGVzJyksIDEwKSB8fCBsZ1NsaWRlcztcblxuICAgICAgICAgICAgaWYgKHNsaWRlc1BlclZpZXdUeXBlID09PSAncmVzcG9uc2l2ZScpIHtcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA1NzYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhzU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNtU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZFNsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTI4MCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWxnU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsZ1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geGxTbGlkZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc2xpZGVzUGVyVmlld1R5cGUsIDEwKSB8fCAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtc2xpZGVzLXBlci12aWV3JyksIDEwKSB8fCAzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXI6IGFueSwgc2xpZGVzVG9TaG93OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWRlcyA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlJyk7XG4gICAgICAgIGNvbnN0IHRvdGFsU2xpZGVzID0gJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgJHNsaWRlckNvbnRhaW5lciA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpO1xuICAgICAgICBjb25zdCBzaG91bGRIaWRlID0gdG90YWxTbGlkZXMgPD0gc2xpZGVzVG9TaG93O1xuXG4gICAgICAgICRzbGlkZXJDb250YWluZXIudG9nZ2xlQ2xhc3MoJ2hpZGUtYXJyb3dzJywgc2hvdWxkSGlkZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2xpZGVycyhtYWluU2VsZWN0b3I6IHN0cmluZywgbmF2U2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCAkbWFpbiA9ICQobWFpblNlbGVjdG9yKTtcbiAgICAgICAgY29uc3QgJG5hdiA9ICQobmF2U2VsZWN0b3IpO1xuXG4gICAgICAgIGlmICgkbWFpbi5sZW5ndGggJiYgJG5hdi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghJG1haW4uaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAkbWFpbi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3I6IG5hdlNlbGVjdG9yLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISRuYXYuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAkbmF2LnNsaWNrKHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3I6IG1haW5TZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNlbnRlck1vZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICgkc2xpZGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICRzbGlkZXIuc2xpY2soJ3NsaWNrTmV4dCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
460
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxPQUFPLEVBQ1AsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRcEMsTUFBTSxPQUFPLHVCQUF1QjtJQW1CaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFOakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUkxQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFFZixDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJ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V0FBVztpQkFDeEIsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNQLFlBQVksRUFBRSxDQUFDO29CQUNmLGNBQWMsRUFBRSxDQUFDO29CQUNqQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLE1BQU0sRUFBRSxLQUFLO29CQUNiLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7YUFDTjtTQUNKO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDOUI7U0FDSjtJQUNMLENBQUM7K0dBM2tCUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytFQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBkZWZlcixcbiAgICBmaWx0ZXIsXG4gICAgZm9ya0pvaW4sXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVdoaWxlLFxuICAgIHRhcCxcbiAgICB0aW1lb3V0LFxuICAgIHRpbWVyLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2xpZGVyc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25TbGlkZXJzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzbGlkZXJzITpcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXIyJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMydcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI1JztcblxuICAgIHByaXZhdGUgcmVzaXplVGltZW91dCE6IE5vZGVKUy5UaW1lb3V0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuITogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgZG9tT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZW5zdXJlSlF1ZXJ5QW5kU2xpY2skKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9ySlF1ZXJ5JCgpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVyKDAsIDQwKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+ICh3aW5kb3cgYXMgYW55KS5qUXVlcnkgfHwgKHdpbmRvdyBhcyBhbnkpLiQpLFxuICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCB9KSxcbiAgICAgICAgICAgIC8vIGV4cG9uZSAkIC8galF1ZXJ5IGdsb2JhbCBwb3Igc2kgZWwgYnVuZGxlIG5vIGxvIGhpem9cbiAgICAgICAgICAgIG1hcCgoanEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoIXcuJCkgdy4kID0ganE7XG4gICAgICAgICAgICAgICAgaWYgKCF3LmpRdWVyeSkgdy5qUXVlcnkgPSBqcTtcbiAgICAgICAgICAgICAgICByZXR1cm4ganE7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIHdhaXRGb3JTbGljayQoKSB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCA0MCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY29uc3QganEgPSB3LmpRdWVyeSB8fCB3LiQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpxICYmIGpxLmZuICYmIGpxLmZuLnNsaWNrO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGltZW91dCh7IGZpcnN0OiAxMDAwMCB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB2b2lkIDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIENhcmdhIGpRdWVyeSArIHNsaWNrIGVuIG9yZGVuIHkgZXNwZXJhIGEgcXVlIGVzdMOpbiBsaXN0b3MgKi9cbiAgICBwcml2YXRlIGVuc3VyZUpRdWVyeUFuZFNsaWNrJCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgaGFzSlEgPSAhISh3LmpRdWVyeSB8fCB3LiQpO1xuICAgICAgICAgICAgY29uc3QgaGFzU2xpY2sgPSAhISh3LmpRdWVyeT8uZm4/LnNsaWNrIHx8IHcuJD8uZm4/LnNsaWNrKTtcblxuICAgICAgICAgICAgaWYgKGhhc0pRICYmIGhhc1NsaWNrKSByZXR1cm4gb2Yodm9pZCAwKTtcblxuICAgICAgICAgICAgLy8gQWdyZWdhbW9zIGZvcmtKb2luIHBhcmEgZGVzY2FyZ2FyIHNjcmlwdCBkZSBzbGljayB5IENTUyBlbiBwYXJhbGVsb1xuICAgICAgICAgICAgcmV0dXJuIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9ySlF1ZXJ5JCgpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZm9ya0pvaW4oW1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFNjcmlwdCQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLm1pbi5qcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJCgnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJyksIC8vIDwtLSDCoUNSVUNJQUwhXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9yU2xpY2skKCkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FyZ2FuZG8galF1ZXJ5L3NsaWNrJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g8J+bkSBQb3Igc2kgZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZSBhbnRlcyBkZSBxdWUgbGxlZ2FyYW4gbG9zIGRhdG9zXG4gICAgICAgICAgICBpZiAodGhpcy5kb21PYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXRGb3JTbGlja0F2YWlsYWJpbGl0eSgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlSW5pdGlhbGl6ZVNsaWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIC8vIPCfkqEgTEEgQ0xBVkU6IEZ1bmNpw7NuIHBhcmEgZGV0ZWN0YXIgZWwgY29udGVuZWRvciByZWFsIGRlIGxhcyBpbcOhZ2VuZXNcbiAgICAgICAgY29uc3QgZ2V0U2xpZGVyQ29udGFpbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdyYXBwZXIgPSAkKG5hdGl2ZUVsKS5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcbiAgICAgICAgICAgIC8vIFNpIGVuY3VlbnRyYSBlbCB3cmFwcGVyLCBsbyBkZXZ1ZWx2ZS4gU2kgbm8sIGRldnVlbHZlIGVsIGVsZW1lbnRvIHByaW5jaXBhbC5cbiAgICAgICAgICAgIHJldHVybiAkd3JhcHBlci5sZW5ndGggPiAwID8gJHdyYXBwZXIgOiAkKG5hdGl2ZUVsKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQcmVndW50YW1vcyBjYWRhIDEwMG1zIHNpIGVsIGNvbnRlbmVkb3IgY29ycmVjdG8geWEgdGllbmUgZWxlbWVudG9zIGhpam9zXG4gICAgICAgIHRpbWVyKDEwMDAsIDEwMClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBnZXRTbGlkZXJDb250YWluZXIoKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoaGFzQ2hpbGRyZW4pID0+IGhhc0NoaWxkcmVuID09PSB0cnVlKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLCAvLyBTZSBhdXRvLWRlc3RydXllIGFsIGN1bXBsaXJzZVxuICAgICAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCwgd2l0aDogKCkgPT4gb2YoZmFsc2UpIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGxhbWFtb3MgYSB0dSBtw6l0b2RvIG9yaWdpbmFsIHF1ZSB5YSB0aWVuZSBlbCBzd2l0Y2ggcGFyYSBjYWRhIHRpcG8gZGUgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYW1vcyBlbCBsaXN0ZW5lciBkZWwgcmVzaXplICh1c2FuZG8gZWwgbcOpdG9kbyBzZXBhcmFkbyBxdWUgdGUgcGFzw6kpXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBIZSBzYWNhZG8gdHUgbMOzZ2ljYSBkZWwgcmVzaXplIGEgdW4gbcOpdG9kbyBwcm9waW8gcGFyYSBxdWUgcXVlZGUgbcOhcyBvcmRlbmFkbzpcbiAgICBwcml2YXRlIHNldHVwUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGxldCBsYXN0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobmV3V2lkdGggLSBsYXN0V2lkdGgpID4gNTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RXaWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuY3Nfc2xpZGVyX3dyYXBwZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2xpZGVyLnNsaWNrKCd1bnNsaWNrJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9yU2xpY2tBdmFpbGFiaWxpdHkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCAxMDApLnBpcGUoXG4gICAgICAgICAgICAvLyBQb2xsaW5nIGNhZGEgNzBtc1xuICAgICAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICQuZm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiAkLmZuLnNsaWNrICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gb2YodW5kZWZpbmVkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgYXMgYW55O1xuXG4gICAgICAgIGlmICghJHNsaWRlci5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAkc2xpY2tBY3RpdmUuc2xpY2soJ3Vuc2xpY2snKTsgLy8gRGVzdHJ1eWUgZWwgc2xpZGVyIGFjdHVhbFxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnNsaWRlcnMpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlck5hdigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdl8yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlck5hdl8yKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jU2xpZGVycyhcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYicsXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICAgICAgICAgICk7IC8vIFNpbmNyb25pemEgbG9zIHNsaWRlcnMgcG9yIHRlbWEgZGUgcmVuZGFyaXphZG8gZW4gZWwgRE9NXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlclRodW1iXzIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jU2xpZGVycyhcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXIzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjMoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyNCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXI0KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyNSgkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIyKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyMygkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuc2libGluZ3MoJy5jc19zbGlkZXJfYXJyb3dzJylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuc2libGluZ3MoJy5jc19zbGlkZXJfYXJyb3dzJylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDApLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbl9zZXJ2aWNlcycpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlck5hdigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiAkKCcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfbWluaScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfbWluaSdcbiAgICAgICAgICAgICAgICAgICAgOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnMHB4JyxcbiAgICAgICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlck5hdl8yKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDMsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInLFxuICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJUaHVtYigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3dfZ2FsbGVyeScpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvd19nYWxsZXJ5Jyk7XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXYuc2xpY2stc2xpZGVyJyxcbiAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgc3BlZWQ6IDYwMCxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWJfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3dfZ2FsbGVyeV8yIC5jc19zd2lwZXJfYnV0dG9uX3ByZXYnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeV8yIC5jc19zd2lwZXJfYnV0dG9uX25leHQnKTtcblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdl8yLnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogNjAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjQoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgY29uc3Qgc2xpZGVzVG9TaG93ID0gdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNsaWRlc1RvU2hvdyxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b2dnbGVTbGlkZXJBcnJvd3MoJHNsaWRlciwgc2xpZGVzVG9TaG93KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjUoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IHRydWUsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICRzbGlkZXI6IGFueSxcbiAgICAgICAgc2V0dGluZ05hbWU6IHN0cmluZyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBhbnlcbiAgICApOiBhbnkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoJHNsaWRlci5hdHRyKHNldHRpbmdOYW1lKSwgMTApIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNsaWRlc1BlclZpZXcoJHNsaWRlcjogYW55KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWRlc1BlclZpZXdUeXBlID0gJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpO1xuICAgICAgICAgICAgY29uc3QgeHNTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteHMtc2xpZGVzJyksIDEwKSB8fCAxO1xuICAgICAgICAgICAgY29uc3Qgc21TbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtc20tc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICAgICAgY29uc3QgbWRTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWQtc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICAgICAgY29uc3QgbWxnU2xpZGVzID1cbiAgICAgICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgICAgIGNvbnN0IGxnU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgICAgIGNvbnN0IHhsU2xpZGVzID1cbiAgICAgICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteGwtc2xpZGVzJyksIDEwKSB8fCBsZ1NsaWRlcztcblxuICAgICAgICAgICAgaWYgKHNsaWRlc1BlclZpZXdUeXBlID09PSAncmVzcG9uc2l2ZScpIHtcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA1NzYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhzU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNtU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZFNsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTI4MCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWxnU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsZ1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geGxTbGlkZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc2xpZGVzUGVyVmlld1R5cGUsIDEwKSB8fCAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtc2xpZGVzLXBlci12aWV3JyksIDEwKSB8fCAzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXI6IGFueSwgc2xpZGVzVG9TaG93OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWRlcyA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlJyk7XG4gICAgICAgIGNvbnN0IHRvdGFsU2xpZGVzID0gJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgJHNsaWRlckNvbnRhaW5lciA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpO1xuICAgICAgICBjb25zdCBzaG91bGRIaWRlID0gdG90YWxTbGlkZXMgPD0gc2xpZGVzVG9TaG93O1xuXG4gICAgICAgICRzbGlkZXJDb250YWluZXIudG9nZ2xlQ2xhc3MoJ2hpZGUtYXJyb3dzJywgc2hvdWxkSGlkZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2xpZGVycyhtYWluU2VsZWN0b3I6IHN0cmluZywgbmF2U2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCAkbWFpbiA9ICQobWFpblNlbGVjdG9yKTtcbiAgICAgICAgY29uc3QgJG5hdiA9ICQobmF2U2VsZWN0b3IpO1xuXG4gICAgICAgIGlmICgkbWFpbi5sZW5ndGggJiYgJG5hdi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghJG1haW4uaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAkbWFpbi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3I6IG5hdlNlbGVjdG9yLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISRuYXYuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAkbmF2LnNsaWNrKHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3I6IG1haW5TZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNlbnRlck1vZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICgkc2xpZGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICRzbGlkZXIuc2xpY2soJ3NsaWNrTmV4dCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19