@rivet-health/design-system 12.3.0 → 13.0.0

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.
@@ -1,5 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
+ import { RouterModule } from '@angular/router';
3
4
  import { TextToggleComponent } from './content-toggle/text-toggle/text-toggle.component';
4
5
  import { DatePipe } from './format/pipes/date.pipe';
5
6
  import { DaysPipe } from './format/pipes/days.pipe';
@@ -133,7 +134,7 @@ RivModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
133
134
  TooltipDirective,
134
135
  TrendComponent,
135
136
  TruncateComponent,
136
- ZeroStateComponent], imports: [CommonModule], exports: [AlphabeticFieldComponent,
137
+ ZeroStateComponent], imports: [CommonModule, RouterModule], exports: [AlphabeticFieldComponent,
137
138
  BadgeComponent,
138
139
  ButtonComponent,
139
140
  CalloutComponent,
@@ -195,7 +196,7 @@ RivModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
195
196
  TrendComponent,
196
197
  TruncateComponent,
197
198
  ZeroStateComponent] });
198
- RivModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, imports: [CommonModule] });
199
+ RivModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, imports: [CommonModule, RouterModule] });
199
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, decorators: [{
200
201
  type: NgModule,
201
202
  args: [{
@@ -330,7 +331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
330
331
  TruncateComponent,
331
332
  ZeroStateComponent,
332
333
  ],
333
- imports: [CommonModule],
334
+ imports: [CommonModule, RouterModule],
334
335
  }]
335
336
  }] });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Jpdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlC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QXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0VG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZW50LXRvZ2dsZS90ZXh0LXRvZ2dsZS90ZXh0LXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgRGF5c1BpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9kYXlzLnBpcGUnO1xuaW1wb3J0IHsgRG9sbGFyc1BpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9kb2xsYXJzLnBpcGUnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL251bWJlci5waXBlJztcbmltcG9ydCB7IE9wdGlvbkdyb3VwUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL29wdGlvbi1ncm91cC5waXBlJztcbmltcG9ydCB7IFBlcmNlbnRhZ2VQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvcGVyY2VudGFnZS5waXBlJztcbmltcG9ydCB7IFNtYWxsQ3VycmVuY3lQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvc21hbGwtY3VycmVuY3kucGlwZSc7XG5pbXBvcnQgeyBTVkdUZXh0VHJ1bmNhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm1hdC9zdmctdGV4dC10cnVuY2F0ZS9zdmctdGV4dC10cnVuY2F0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVHJ1bmNhdGVDb21wb25lbnQgfSBmcm9tICcuL2Zvcm1hdC90cnVuY2F0ZS90cnVuY2F0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbHBoYWJldGljRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2FscGhhYmV0aWMtZmllbGQvYWxwaGFiZXRpYy1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhcmRDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2FyZC1jaGVja2JveC9jYXJkLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IEN1cnJlbmN5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2N1cnJlbmN5LWZpZWxkL2N1cnJlbmN5LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvZGF0ZS9kYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L251bWJlci1maWVsZC9udW1iZXItZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFBlcmNlbnRhZ2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvcGVyY2VudGFnZS1maWVsZC9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2l0Y2hDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvc3dpdGNoLWNoZWNrYm94L3N3aXRjaC1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvY3VzT25Jbml0RGlyZWN0aXZlIH0gZnJvbSAnLi9pbnRlcmFjdGlvbi9mb2N1cy1vbi1pbml0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMb2FkaW5nQ292ZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWQvbG9hZGluZy1jb3Zlci9sb2FkaW5nLWNvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dE91dGxldENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxsb3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC9jYWxsb3V0L2NhbGxvdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IExvY2tTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuL21vZGFsL2NhbGxvdXQvbG9jay1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhlbHBDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2hlbHAvaGVscC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL21vZGFsL21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9zaXplL3NpemUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL3RhYmxlLWNvbHVtbi1zZXR0aW5ncy90YWJsZS1jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ3N2RXhwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS1jc3YtZXhwb3J0L3RhYmxlLWNzdi1leHBvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyUmVzaXplSGFuZGxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS1oZWFkZXItcmVzaXplLWhhbmRsZS90YWJsZS1oZWFkZXItcmVzaXplLWhhbmRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL3RhYmxlLXNlYXJjaC90YWJsZS1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vY2hhcnQvY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNlbGxDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9udXRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZG9udXQvZG9udXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZ1bm5lbENoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2Z1bm5lbC1jaGFydC9mdW5uZWwtY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9oaWdobGlnaHQvaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJc3N1ZUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9pc3N1ZS9pc3N1ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGVnZW5kSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9sZWdlbmQtaXRlbS9sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL21ldHJpYy9tZXRyaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbXBsZVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW1wbGVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtY29sdW1uL3N0YWNrZWQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkUm93Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtcm93L3N0YWNrZWQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lU2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVuZENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi90cmVuZC90cmVuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWmVyb1N0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBbHBoYWJldGljRmllbGRDb21wb25lbnQsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIENhbGVuZGFyQ29tcG9uZW50LFxuICAgIENhbGxvdXRDb21wb25lbnQsXG4gICAgQ2FsbG91dERpcmVjdGl2ZSxcbiAgICBDYWxsb3V0T3V0bGV0Q29tcG9uZW50LFxuICAgIENhcmRDaGVja2JveENvbXBvbmVudCxcbiAgICBDaGFydENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBDdXJyZW5jeUZpZWxkQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlUm93Q29tcG9uZW50LFxuICAgIERhdGVDb21wb25lbnQsXG4gICAgRGF0ZVBpcGUsXG4gICAgRGF0ZVJhbmdlQ29tcG9uZW50LFxuICAgIERheXNQaXBlLFxuICAgIERvbGxhcnNQaXBlLFxuICAgIERvbnV0Q29tcG9uZW50LFxuICAgIEZvY3VzT25Jbml0RGlyZWN0aXZlLFxuICAgIEZ1bm5lbENoYXJ0Q29tcG9uZW50LFxuICAgIEhlbHBDb21wb25lbnQsXG4gICAgSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgSW5wdXRMYWJlbENvbXBvbmVudCxcbiAgICBJc3N1ZUNvbXBvbmVudCxcbiAgICBMZWdlbmRJdGVtQ29tcG9uZW50LFxuICAgIExpbmtDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ292ZXJDb21wb25lbnQsXG4gICAgTG9ja1Njcm9sbERpcmVjdGl2ZSxcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIE9wdGlvbkdyb3VwUGlwZSxcbiAgICBQZXJjZW50YWdlRmllbGRDb21wb25lbnQsXG4gICAgUGVyY2VudGFnZVBpcGUsXG4gICAgU2VhcmNoQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBTaW1wbGVUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgU2luZ2xlU2VsZWN0Q29tcG9uZW50LFxuICAgIFNpemVEaXJlY3RpdmUsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFNWR1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDaGVja2JveENvbXBvbmVudCxcbiAgICBUYWJsZUNvbHVtblNldHRpbmdzQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ3N2RXhwb3J0Q29tcG9uZW50LFxuICAgIFRhYmxlSGVhZGVyUmVzaXplSGFuZGxlQ29tcG9uZW50LFxuICAgIFRhYmxlU2VhcmNoQ29tcG9uZW50LFxuICAgIFRleHRGaWVsZENvbXBvbmVudCxcbiAgICBUZXh0VG9nZ2xlQ29tcG9uZW50LFxuICAgIFRpbWVTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFRyZW5kQ29tcG9uZW50LFxuICAgIFRydW5jYXRlQ29tcG9uZW50LFxuICAgIFplcm9TdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFscGhhYmV0aWNGaWVsZENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FsbG91dENvbXBvbmVudCxcbiAgICBDYWxsb3V0RGlyZWN0aXZlLFxuICAgIENhbGxvdXRPdXRsZXRDb21wb25lbnQsXG4gICAgQ2FyZENoZWNrYm94Q29tcG9uZW50LFxuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIEN1cnJlbmN5RmllbGRDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dDb21wb25lbnQsXG4gICAgRGF0ZUNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgRGF5c1BpcGUsXG4gICAgRG9sbGFyc1BpcGUsXG4gICAgRG9udXRDb21wb25lbnQsXG4gICAgRm9jdXNPbkluaXREaXJlY3RpdmUsXG4gICAgRnVubmVsQ2hhcnRDb21wb25lbnQsXG4gICAgSGVscENvbXBvbmVudCxcbiAgICBIaWdobGlnaHRDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dExhYmVsQ29tcG9uZW50LFxuICAgIElzc3VlQ29tcG9uZW50LFxuICAgIExlZ2VuZEl0ZW1Db21wb25lbnQsXG4gICAgTGlua0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb3ZlckNvbXBvbmVudCxcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIE9wdGlvbkdyb3VwUGlwZSxcbiAgICBQZXJjZW50YWdlRmllbGRDb21wb25lbnQsXG4gICAgUGVyY2VudGFnZVBpcGUsXG4gICAgU2VhcmNoQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgU2luZ2xlU2VsZWN0Q29tcG9uZW50LFxuICAgIFNpemVEaXJlY3RpdmUsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFNWR1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDaGVja2JveENvbXBvbmVudCxcbiAgICBUYWJsZUNvbHVtblNldHRpbmdzQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ3N2RXhwb3J0Q29tcG9uZW50LFxuICAgIFRhYmxlU2VhcmNoQ29tcG9uZW50LFxuICAgIFRleHRGaWVsZENvbXBvbmVudCxcbiAgICBUZXh0VG9nZ2xlQ29tcG9uZW50LFxuICAgIFRpbWVTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFRyZW5kQ29tcG9uZW50LFxuICAgIFRydW5jYXRlQ29tcG9uZW50LFxuICAgIFplcm9TdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJpdk1vZHVsZSB7fVxuIl19
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Jpdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixF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O3dCQUNuQix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1QixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUZXh0VG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZW50LXRvZ2dsZS90ZXh0LXRvZ2dsZS90ZXh0LXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgRGF5c1BpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9kYXlzLnBpcGUnO1xuaW1wb3J0IHsgRG9sbGFyc1BpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9kb2xsYXJzLnBpcGUnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL251bWJlci5waXBlJztcbmltcG9ydCB7IE9wdGlvbkdyb3VwUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL29wdGlvbi1ncm91cC5waXBlJztcbmltcG9ydCB7IFBlcmNlbnRhZ2VQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvcGVyY2VudGFnZS5waXBlJztcbmltcG9ydCB7IFNtYWxsQ3VycmVuY3lQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvc21hbGwtY3VycmVuY3kucGlwZSc7XG5pbXBvcnQgeyBTVkdUZXh0VHJ1bmNhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm1hdC9zdmctdGV4dC10cnVuY2F0ZS9zdmctdGV4dC10cnVuY2F0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVHJ1bmNhdGVDb21wb25lbnQgfSBmcm9tICcuL2Zvcm1hdC90cnVuY2F0ZS90cnVuY2F0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbHBoYWJldGljRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2FscGhhYmV0aWMtZmllbGQvYWxwaGFiZXRpYy1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhcmRDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2FyZC1jaGVja2JveC9jYXJkLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IEN1cnJlbmN5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2N1cnJlbmN5LWZpZWxkL2N1cnJlbmN5LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvZGF0ZS9kYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9pbnB1dC1sYWJlbC9pbnB1dC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L251bWJlci1maWVsZC9udW1iZXItZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFBlcmNlbnRhZ2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvcGVyY2VudGFnZS1maWVsZC9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2l0Y2hDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvc3dpdGNoLWNoZWNrYm94L3N3aXRjaC1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvY3VzT25Jbml0RGlyZWN0aXZlIH0gZnJvbSAnLi9pbnRlcmFjdGlvbi9mb2N1cy1vbi1pbml0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMb2FkaW5nQ292ZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWQvbG9hZGluZy1jb3Zlci9sb2FkaW5nLWNvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dE91dGxldENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxsb3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC9jYWxsb3V0L2NhbGxvdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IExvY2tTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuL21vZGFsL2NhbGxvdXQvbG9jay1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhlbHBDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2hlbHAvaGVscC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL21vZGFsL21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9zaXplL3NpemUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL3RhYmxlLWNvbHVtbi1zZXR0aW5ncy90YWJsZS1jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ3N2RXhwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS1jc3YtZXhwb3J0L3RhYmxlLWNzdi1leHBvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyUmVzaXplSGFuZGxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS1oZWFkZXItcmVzaXplLWhhbmRsZS90YWJsZS1oZWFkZXItcmVzaXplLWhhbmRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL3RhYmxlLXNlYXJjaC90YWJsZS1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vY2hhcnQvY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNlbGxDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9udXRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZG9udXQvZG9udXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZ1bm5lbENoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2Z1bm5lbC1jaGFydC9mdW5uZWwtY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9oaWdobGlnaHQvaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJc3N1ZUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9pc3N1ZS9pc3N1ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGVnZW5kSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9sZWdlbmQtaXRlbS9sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL21ldHJpYy9tZXRyaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbXBsZVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW1wbGVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtY29sdW1uL3N0YWNrZWQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkUm93Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtcm93L3N0YWNrZWQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lU2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVuZENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi90cmVuZC90cmVuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWmVyb1N0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBbHBoYWJldGljRmllbGRDb21wb25lbnQsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIENhbGVuZGFyQ29tcG9uZW50LFxuICAgIENhbGxvdXRDb21wb25lbnQsXG4gICAgQ2FsbG91dERpcmVjdGl2ZSxcbiAgICBDYWxsb3V0T3V0bGV0Q29tcG9uZW50LFxuICAgIENhcmRDaGVja2JveENvbXBvbmVudCxcbiAgICBDaGFydENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBDdXJyZW5jeUZpZWxkQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlUm93Q29tcG9uZW50LFxuICAgIERhdGVDb21wb25lbnQsXG4gICAgRGF0ZVBpcGUsXG4gICAgRGF0ZVJhbmdlQ29tcG9uZW50LFxuICAgIERheXNQaXBlLFxuICAgIERvbGxhcnNQaXBlLFxuICAgIERvbnV0Q29tcG9uZW50LFxuICAgIEZvY3VzT25Jbml0RGlyZWN0aXZlLFxuICAgIEZ1bm5lbENoYXJ0Q29tcG9uZW50LFxuICAgIEhlbHBDb21wb25lbnQsXG4gICAgSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgSW5wdXRMYWJlbENvbXBvbmVudCxcbiAgICBJc3N1ZUNvbXBvbmVudCxcbiAgICBMZWdlbmRJdGVtQ29tcG9uZW50LFxuICAgIExpbmtDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ292ZXJDb21wb25lbnQsXG4gICAgTG9ja1Njcm9sbERpcmVjdGl2ZSxcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIE9wdGlvbkdyb3VwUGlwZSxcbiAgICBQZXJjZW50YWdlRmllbGRDb21wb25lbnQsXG4gICAgUGVyY2VudGFnZVBpcGUsXG4gICAgU2VhcmNoQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBTaW1wbGVUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgU2luZ2xlU2VsZWN0Q29tcG9uZW50LFxuICAgIFNpemVEaXJlY3RpdmUsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFNWR1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDaGVja2JveENvbXBvbmVudCxcbiAgICBUYWJsZUNvbHVtblNldHRpbmdzQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ3N2RXhwb3J0Q29tcG9uZW50LFxuICAgIFRhYmxlSGVhZGVyUmVzaXplSGFuZGxlQ29tcG9uZW50LFxuICAgIFRhYmxlU2VhcmNoQ29tcG9uZW50LFxuICAgIFRleHRGaWVsZENvbXBvbmVudCxcbiAgICBUZXh0VG9nZ2xlQ29tcG9uZW50LFxuICAgIFRpbWVTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFRyZW5kQ29tcG9uZW50LFxuICAgIFRydW5jYXRlQ29tcG9uZW50LFxuICAgIFplcm9TdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFscGhhYmV0aWNGaWVsZENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FsbG91dENvbXBvbmVudCxcbiAgICBDYWxsb3V0RGlyZWN0aXZlLFxuICAgIENhbGxvdXRPdXRsZXRDb21wb25lbnQsXG4gICAgQ2FyZENoZWNrYm94Q29tcG9uZW50LFxuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIEN1cnJlbmN5RmllbGRDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dDb21wb25lbnQsXG4gICAgRGF0ZUNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgRGF5c1BpcGUsXG4gICAgRG9sbGFyc1BpcGUsXG4gICAgRG9udXRDb21wb25lbnQsXG4gICAgRm9jdXNPbkluaXREaXJlY3RpdmUsXG4gICAgRnVubmVsQ2hhcnRDb21wb25lbnQsXG4gICAgSGVscENvbXBvbmVudCxcbiAgICBIaWdobGlnaHRDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dExhYmVsQ29tcG9uZW50LFxuICAgIElzc3VlQ29tcG9uZW50LFxuICAgIExlZ2VuZEl0ZW1Db21wb25lbnQsXG4gICAgTGlua0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb3ZlckNvbXBvbmVudCxcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIE9wdGlvbkdyb3VwUGlwZSxcbiAgICBQZXJjZW50YWdlRmllbGRDb21wb25lbnQsXG4gICAgUGVyY2VudGFnZVBpcGUsXG4gICAgU2VhcmNoQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlQ29tcG9uZW50LFxuICAgIFNpbXBsZVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgU2luZ2xlU2VsZWN0Q29tcG9uZW50LFxuICAgIFNpemVEaXJlY3RpdmUsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFNWR1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDaGVja2JveENvbXBvbmVudCxcbiAgICBUYWJsZUNvbHVtblNldHRpbmdzQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ3N2RXhwb3J0Q29tcG9uZW50LFxuICAgIFRhYmxlU2VhcmNoQ29tcG9uZW50LFxuICAgIFRleHRGaWVsZENvbXBvbmVudCxcbiAgICBUZXh0VG9nZ2xlQ29tcG9uZW50LFxuICAgIFRpbWVTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFRyZW5kQ29tcG9uZW50LFxuICAgIFRydW5jYXRlQ29tcG9uZW50LFxuICAgIFplcm9TdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUml2TW9kdWxlIHt9XG4iXX0=
@@ -672,4 +672,4 @@ async function* reduce(state, action, columns, source) {
672
672
  break;
673
673
  }
674
674
  }
675
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQXNCLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLE9BQU8sRUFDUCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBRUwsV0FBVyxFQUNYLElBQUksRUFDSixHQUFHLEVBQ0gsU0FBUyxFQUVULGFBQWEsRUFDYixJQUFJLEVBQ0osT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBR2QsTUFBTSxLQUFXLFFBQVEsQ0FpZ0J4QjtBQWpnQkQsV0FBaUIsUUFBUTtJQXlDVixrQkFBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFVLENBQUM7SUFnUXJELFNBQWdCLGFBQWEsQ0FLM0IsTUFBdUIsRUFDdkIsT0FBK0IsRUFDL0IsZ0JBQXdCLEVBQ3hCLE9BQWlDO1FBRWpDLGtDQUFrQztRQUNsQyxNQUFNLFlBQVksR0FBdUI7WUFDdkMsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxJQUFJO2dCQUNYLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsQ0FBQztvQkFDUCxRQUFRLEVBQUUsRUFBRTtpQkFDYjtnQkFDRCxPQUFPLEVBQUUsSUFBSTthQUNkO1lBQ0QsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLE1BQU0sRUFBRTtnQkFDTixlQUFlLEVBQUUsRUFBRTtnQkFDbkIscUJBQXFCLEVBQUUsQ0FBQzthQUN6QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsRUFBRTthQUNuQjtZQUNELFNBQVMs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LEtBQUssb0JBQW9CO1lBQ3ZCLE1BQU0sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsTUFBTTtRQUNSLEtBQUssbUJBQW1CO1lBQ3RCLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsTUFBTTtLQUNUO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGdXNlLCB7IElGdXNlT3B0aW9ucyB9IGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdHNEZWVwLFxuICBkaWZmZXJlbmNlLFxuICBpc0VxdWFsLFxuICBvcmRlckJ5LFxuICByYW5nZSxcbiAgdW5pb24sXG59IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBDb25uZWN0YWJsZSxcbiAgY29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzY2FuLFxuICBTdWJqZWN0LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndXRpbGl0eS10eXBlcyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgUml2VGFibGUge1xuICBleHBvcnQgdHlwZSBSb3cgPSB7IGlkOiBzdHJpbmcgfCBudW1iZXIgfTtcbiAgZXhwb3J0IHR5cGUgQ29sdW1uID0gc3RyaW5nO1xuICBleHBvcnQgdHlwZSBGaWx0ZXJzID0gYW55O1xuXG4gIC8qKlxuICAgKiBSaXZUYWJsZSdzIHN0YXRlIGFuZCB1c2VyIGFjdGlvbnMgYXJlIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIGNodW5rczpcbiAgICpcbiAgICogLSBRdWVyeSAoZm9yIHRoaW5ncyBsaWtlIGZpbHRlcnMsIHBhZ2luYXRpb24sIHNlYXJjaCwgZXRjLilcbiAgICogLSBMb2FkaW5nIChmb3Igd2hldGhlciBvciBub3QgdGhlIHRhYmxlIGlzIGxvYWRpbmcgcm93IGRhdGEpXG4gICAqIC0gUmVzdWx0IChmb3IgdGhlIHJvdyBkYXRhIGl0c2VsZilcbiAgICogLSBEaXNwbGF5IChmb3IgdGhpbmdzIGxpa2UgY29sdW1uIGNvbmZpZ3VyYXRpb24pXG4gICAqIC0gU2VsZWN0aW9uIChmb3IgdHJhY2tpbmcgdGhlIHVzZXIncyByb3cgc2VsZWN0aW9ucylcbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBkYXRhIGZsb3cgaXMgdW5pZGlyZWN0aW9uYWw6IHRoZSBVSSBpc3N1ZXMgYWN0aW9ucywgd2hpY2hcbiAgICogYWZmZWN0IHRoZSBzdGF0ZSwgYW5kIHRoZSBzdGF0ZSBnZXRzIHBhc3NlZCBiYWNrIHRvIHRoZSBVSSBmb3IgZGlzcGxheS5cbiAgICpcbiAgICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAqIOKUgiAgVUkgIOKXhOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAgKiDilJTilIDilIDilKzilIDilIDilIDilJggICAgICAgIOKUglxuICAgKiAgICDilIIgICAgICAgICAgICDilIJcbiAgICog4pSM4pSA4pSA4pa84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAg4pSCXG4gICAqIOKUgiAgQWN0aW9ucyAg4pSCICAg4pSCXG4gICAqIOKUlOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgIOKUglxuICAgKiAgICDilIIgICAgICAgICAgICDilIJcbiAgICog4pSM4pSA4pSA4pa84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSQXG4gICAqIOKUgiAgU3RhdGUgcmVkdWNlciAg4pSCXG4gICAqIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICAgKlxuICAgKiBGcm9tIHRoZSBjb3JlIHN0YXRlLCBjYWxjdWxhdGVkIHN0YXRlIGlzIGRlcml2ZWQgYW5kIGFkZGVkIHRvIHRoZSBjb3JlXG4gICAqIHN0YXRlIChlLmcuLCBmcm9tIHRoZSByYXcgc2VsZWN0aW9uIHN0YXRlIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBvciBub3RcbiAgICogYWxsIHRoZSByb3dzIG9uIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHBhZ2UgYXJlIHNlbGVjdGVkLCBldGMuKS5cbiAgICovXG5cbiAgLy8vLy8vLy8vLy9cbiAgLy8gUXVlcnkgLy9cbiAgLy8vLy8vLy8vLy9cblxuICAvLyBRdWVyeSBzdGF0ZSAvL1xuXG4gIGV4cG9ydCB0eXBlIE9yZGVyRGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XG4gIGV4cG9ydCBjb25zdCBwYWdlU2l6ZXMgPSBbMjUsIDUwLCAxMDAsIDI1MF0gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFF1ZXJ5PEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9IHtcbiAgICBvcmRlcjoge1xuICAgICAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbjtcbiAgICAgIGNvbHVtbjogQztcbiAgICB9IHwgbnVsbDtcbiAgICBzZWFyY2g6IHN0cmluZztcbiAgICBmaWx0ZXJzOiBGIHwgbnVsbDtcbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICBwYWdlOiBudW1iZXI7XG4gICAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUXVlcnkgYWN0aW9ucyAvL1xuXG4gIGV4cG9ydCB0eXBlIFF1ZXJ5QWN0aW9uPEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7IHR5cGU6ICdvcmRlckNoYW5nZSc7IHBheWxvYWQ6IFF1ZXJ5PEMsIEY+WydvcmRlciddIH1cbiAgICB8IHsgdHlwZTogJ29yZGVyQ29sdW1uVG9nZ2xlJzsgY29sdW1uOiBDIH1cbiAgICB8IHsgdHlwZTogJ3NlYXJjaENoYW5nZSc7IHBheWxvYWQ6IFF1ZXJ5PEMsIEY+WydzZWFyY2gnXSB9XG4gICAgfCB7IHR5cGU6ICdmaWx0ZXJzQ2hhbmdlJzsgcGF5bG9hZDogUXVlcnk8QywgRj5bJ2ZpbHRlcnMnXSB9XG4gICAgfCB7IHR5cGU6ICdwYWdpbmF0aW9uQ2hhbmdlJzsgcGF5bG9hZDogUXVlcnk8QywgRj5bJ3BhZ2luYXRpb24nXSB9XG4gICAgfCB7IHR5cGU6ICduZXh0UGFnZU5hdmlnYXRlJyB9XG4gICAgfCB7IHR5cGU6ICdwcmV2aW91c1BhZ2VOYXZpZ2F0ZScgfVxuICAgIHwgeyB0eXBlOiAncGFnZUNoYW5nZSc7IHBhZ2U6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6ICdwYWdlU2l6ZUNoYW5nZSc7IHNpemU6IG51bWJlciB9O1xuXG4gIC8vLy8vLy8vLy9cbiAgLy8gTG9hZCAvL1xuICAvLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTG9hZCA9IHtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIGVycm9yOiB1bmtub3duIHwgbnVsbDtcbiAgfTtcblxuICAvLy8vLy8vLy8vLy9cbiAgLy8gUmVzdWx0IC8vXG4gIC8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIFJlc3VsdDxSIGV4dGVuZHMgUm93PiA9IHtcbiAgICAvKipcbiAgICAgKiBUaGUgZnVsbCByb3cgZGF0YSBmb3IgdGhlIGN1cnJlbnQgcGFnZSwgYWZ0ZXIgZmlsdGVycywgc2VhcmNoIHF1ZXJ5LCBhbmRcbiAgICAgKiByb3cgb3JkZXJpbmcgYXJlIGFwcGxpZWQuXG4gICAgICovXG4gICAgY3VycmVudFBhZ2VEYXRhOiBSW107XG4gICAgLyoqXG4gICAgICogVGhlIHRvdGFsIG51bWJlciBvZiByb3dzIChyZWdhcmRsZXNzIG9mIHBhZ2luYXRpb24pIHRoYXQgbWF0Y2ggdGhlXG4gICAgICogZmlsdGVycyBhbmQgc2VhcmNoIHF1ZXJ5LlxuICAgICAqL1xuICAgIHRvdGFsTWF0Y2hpbmdSb3dDb3VudDogbnVtYmVyO1xuICB9O1xuICBleHBvcnQgdHlwZSBTb3VyY2U8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID0gKFxuICAgIHF1ZXJ5OiBSaXZUYWJsZS5RdWVyeTxDLCBGPixcbiAgICBtb3N0UmVjZW50QWN0aW9uOiBSaXZUYWJsZS5BY3Rpb248UiwgQywgRj4sXG4gICkgPT4gUHJvbWlzZTxSZXN1bHQ8Uj4+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gRGlzcGxheSAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgLy8gRGlzcGxheSBzdGF0ZSAvL1xuXG4gIGV4cG9ydCB0eXBlIENvbHVtblNldHRpbmdzPEMgZXh0ZW5kcyBDb2x1bW4+ID0ge1xuICAgIG5hbWU6IEM7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBwcmVmZXJyZWRXaWR0aDogbnVtYmVyIHwgJ2F1dG8nO1xuICAgIHBpbm5lZDogYm9vbGVhbjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgRGlzcGxheTxDIGV4dGVuZHMgQ29sdW1uPiA9IHtcbiAgICBjb2x1bW5TZXR0aW5nczogQ29sdW1uU2V0dGluZ3M8Qz5bXTtcbiAgfTtcblxuICAvLyBEaXNwbGF5IGFjdGlvbnMgLy9cblxuICBleHBvcnQgdHlwZSBEaXNwbGF5QWN0aW9uPEMgZXh0ZW5kcyBDb2x1bW4+ID1cbiAgICB8IHsgdHlwZTogJ2NvbHVtblNldHRpbmdzQ2hhbmdlJzsgcGF5bG9hZDogRGlzcGxheTxDPlsnY29sdW1uU2V0dGluZ3MnXSB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdjb2x1bW5QaW5DaGFuZ2UnO1xuICAgICAgICBjb2x1bW46IEM7XG4gICAgICAgIHBpbm5lZDogYm9vbGVhbjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2NvbHVtbk9yZGVyQ2hhbmdlJztcbiAgICAgICAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICAgICAgICBuZXdJbmRleDogbnVtYmVyO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnY29sdW1uRW5hYmxlZENoYW5nZSc7XG4gICAgICAgIGNvbHVtbjogQztcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2NvbHVtbldpZHRoQ2hhbmdlJztcbiAgICAgICAgY29sdW1uOiBDO1xuICAgICAgICBwcmVmZXJyZWRXaWR0aDogbnVtYmVyIHwgJ2F1dG8nO1xuICAgICAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy9cbiAgLy8gU2VsZWN0aW9uIC8vXG4gIC8vLy8vLy8vLy8vLy8vL1xuXG4gIC8vIFNlbGVjdGlvbiBzdGF0ZSAvL1xuXG4gIGV4cG9ydCB0eXBlIFNlbGVjdGlvbjxSIGV4dGVuZHMgUm93PiA9IHtcbiAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogUlsnaWQnXSB8IG51bGw7XG4gIH0gJiAoXG4gICAgfCB7XG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJztcbiAgICAgICAgaW5jbHVkZWQ6IFNldDxSWydpZCddPjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgbW9kZTogJ2V4Y2x1ZGUnO1xuICAgICAgICBleGNsdWRlZDogU2V0PFJbJ2lkJ10+O1xuICAgICAgfVxuICApO1xuXG4gIC8vIFNlbGVjdGlvbiBhY3Rpb25zIC8vXG5cbiAgZXhwb3J0IHR5cGUgU2VsZWN0aW9uQWN0aW9uPFIgZXh0ZW5kcyBSb3c+ID1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdGlvbkNoYW5nZSc7XG4gICAgICAgIHBheWxvYWQ6IFNlbGVjdGlvbjxSPjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3Jvd1NlbGVjdGVkQ2hhbmdlJztcbiAgICAgICAgaWQ6IFJbJ2lkJ107XG4gICAgICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgICAgICBjb250aWd1b3VzOiBib29sZWFuO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAncGFnZVNlbGVjdGVkQ2hhbmdlJztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2FsbFNlbGVjdGVkQ2hhbmdlJztcbiAgICAgIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gUHV0dGluZyBpdCBhbGwgdG9nZXRoZXIgLy9cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAvLyBDb21iaW5lZCBzdGF0ZSAvL1xuXG4gIGV4cG9ydCB0eXBlIENvcmVTdGF0ZTxSIGV4dGVuZHMgUm93LCBDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPSB7XG4gICAgcXVlcnk6IFF1ZXJ5PEMsIEY+O1xuICAgIGxvYWQ6IExvYWQ7XG4gICAgcmVzdWx0OiBSZXN1bHQ8Uj47XG4gICAgZGlzcGxheTogRGlzcGxheTxDPjtcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbjxSPjtcbiAgfTtcblxuICAvLyBDb21iaW5lZCBhY3Rpb25zIC8vXG5cbiAgZXhwb3J0IHR5cGUgQWN0aW9uPFIgZXh0ZW5kcyBSb3csIEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9XG4gICAgfCBRdWVyeUFjdGlvbjxDLCBGPlxuICAgIHwgRGlzcGxheUFjdGlvbjxDPlxuICAgIHwgU2VsZWN0aW9uQWN0aW9uPFI+O1xuXG4gIC8vIEZ1bGwgc3RhdGUgKGNvcmUgc3RhdGUgcGx1cyBwdXJlIGRlcml2YXRpb25zKSAvL1xuXG4gIGV4cG9ydCB0eXBlIENvbHVtbkRhdGFUeXBlID1cbiAgICB8ICdhZHZhbmNlZCdcbiAgICB8ICdjdXJyZW5jeSdcbiAgICB8ICdkYXRlJ1xuICAgIHwgJ2ljb24nXG4gICAgfCAnbG9uZ1RleHQnXG4gICAgfCAnbnVtYmVyJ1xuICAgIHwgJ3Nob3J0VGV4dCc7XG4gIGV4cG9ydCB0eXBlIENvbHVtbkFsaWdubWVudCA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcbiAgZXhwb3J0IHR5cGUgQ29sdW1uTWV0YWRhdGEgPSB7XG4gICAgb3JkZXJhYmxlOiBib29sZWFuO1xuICAgIG1pbldpZHRoOiBudW1iZXI7XG4gICAgZGF0YVR5cGU6IENvbHVtbkRhdGFUeXBlO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGRlZmF1bHRQaW5uZWQ/OiBib29sZWFuO1xuICB9O1xuICBleHBvcnQgdHlwZSBGdWxsUm93PFIgZXh0ZW5kcyBSb3c+ID0gUiAmIHtcbiAgICByb3dMaW5rOiBzdHJpbmcgfCBudWxsO1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICB9O1xuICBleHBvcnQgdHlwZSBGdWxsQ29sdW1uPEMgZXh0ZW5kcyBDb2x1bW4+ID0gQ29sdW1uU2V0dGluZ3M8Qz4gJlxuICAgIENvbHVtbk1ldGFkYXRhICYge1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgIGxlZnQ6IG51bWJlciB8IG51bGw7XG4gICAgICBhbGlnbm1lbnQ6IENvbHVtbkFsaWdubWVudDtcbiAgICB9O1xuICBleHBvcnQgdHlwZSBNdWx0aVNlbGVjdGlvblN0YXRlID0gYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJztcblxuICBleHBvcnQgdHlwZSBDc3ZDZWxsRm9ybWF0dGVyPFIgZXh0ZW5kcyBSb3csIEMgZXh0ZW5kcyBDb2x1bW4+ID0gKFxuICAgIHJvdzogUixcbiAgICBjb2x1bW46IEZ1bGxDb2x1bW48Qz4sXG4gICkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuICBleHBvcnQgdHlwZSBDc3ZSb3cgPSBzdHJpbmdbXTtcbiAgZXhwb3J0IHR5cGUgQ3N2ID0gQ3N2Um93W107XG4gIGV4cG9ydCB0eXBlIENzdk1vZGUgPSAnZnVsbCcgfCAnc2VsZWN0aW9uJztcbiAgZXhwb3J0IHR5cGUgQ3N2T3V0cHV0ID1cbiAgICB8IHsgbG9hZGluZzogdHJ1ZTsgZGF0YTogbnVsbCB9XG4gICAgfCB7IGxvYWRpbmc6IGZhbHNlOyBkYXRhOiBDc3YgfTtcblxuICBleHBvcnQgdHlwZSBGdWxsU3RhdGU8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+ID0gQ29yZVN0YXRlPFIsIEMsIEY+ICYge1xuICAgIHF1ZXJ5OiB7XG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHByZXZpb3VzOiBudW1iZXIgfCBudWxsO1xuICAgICAgICBwYWdlczogbnVtYmVyW107XG4gICAgICAgIG5leHQ6IG51bWJlciB8IG51bGw7XG4gICAgICAgIHBhZ2VDb3VudDogbnVtYmVyO1xuICAgICAgICBzaG93Q29udHJvbHM6IGJvb2xlYW47XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzdWx0OiB7XG4gICAgICByb3dzOiBGdWxsUm93PFI+W107XG4gICAgICBjc3ZEYXRhOiAobW9kZT86IENzdk1vZGUpID0+IEFzeW5jR2VuZXJhdG9yPENzdk91dHB1dD47XG4gICAgICBjc3ZGaWxlbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgZGlzcGxheToge1xuICAgICAgY29sdW1uczogRnVsbENvbHVtbjxDPltdO1xuICAgICAgYWxsQ29sdW1uczogQ29sdW1uU2V0dGluZ3M8Qz5bXTtcbiAgICAgIHplcm9TdGF0ZU1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBzZWxlY3Rpb246IHtcbiAgICAgIGFsbG93U2VsZWN0aW9uOiBib29sZWFuO1xuICAgICAgaXNBbGxTZWxlY3RlZDogTXVsdGlTZWxlY3Rpb25TdGF0ZTtcbiAgICAgIGlzQ3VycmVudFBhZ2VTZWxlY3RlZDogTXVsdGlTZWxlY3Rpb25TdGF0ZTtcbiAgICAgIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbWFuYWdlciBpcyB3aGF0IHNldHMgdXAgdGhlIGluaXRpYWwgc3RhdGUgYW5kIHRyYW5zbGF0ZXMgdXNlciBhY3Rpb25zXG4gICAqIChsaWtlIHBhZ2luYXRpb24gb3IgZmlsdGVyIGNoYW5nZXMsIGV0Yy4pIGludG8gbmV3IHJvdyBkYXRhIGJ5IGNhbGxpbmcgdGhlXG4gICAqIHJlZHVjZXIgZnVuY3Rpb24uIEl0IGFsc28gYXVnbWVudHMgdGhlIGNvcmUgc3RhdGUgd2l0aCBhZGRpdGlvbmFsIGRlcml2ZWRcbiAgICogc3RhdGUuXG4gICAqL1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXI8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFIsIEMsIEY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFIsIEMsIEY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4gPSB7XG4gICAgaW5pdGlhbFN0YXRlPzogRGVlcFBhcnRpYWw8Q29yZVN0YXRlPFIsIEMsIEY+PjtcbiAgICByb3dMaW5rPzogKHJvdzogUikgPT4gc3RyaW5nO1xuICAgIGNzdkNlbGxGb3JtYXR0ZXI/OiBDc3ZDZWxsRm9ybWF0dGVyPFIsIEM+O1xuICAgIGNzdkZpbGVCYXNlbmFtZT86IHN0cmluZztcbiAgICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+KFxuICAgIHNvdXJjZTogU291cmNlPFIsIEMsIEY+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBDb2x1bW5NZXRhZGF0YT4sXG4gICAgcGx1cmFsRW50aXR5TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPixcbiAgKTogTWFuYWdlcjxSLCBDLCBGPiB7XG4gICAgLy8gU2V0IHVwIHRoZSBpbml0aWFsIHRhYmxlIHN0YXRlLlxuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFIsIEMsIEY+ID0ge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgb3JkZXI6IG51bGwsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgIH0sXG4gICAgICBsb2FkOiB7IGxvYWRpbmc6IGZhbHNlLCBlcnJvcjogbnVsbCB9LFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIGN1cnJlbnRQYWdlRGF0YTogW10sXG4gICAgICAgIHRvdGFsTWF0Y2hpbmdSb3dDb3VudDogMCxcbiAgICAgIH0sXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBbXSxcbiAgICAgIH0sXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxSLCBDLCBGPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICAvLyBXaXJlIHVwIHJlZHVjZWQgc3RhdGUgZnJvbSBhY3Rpb25zIGFuZCBpbml0aWFsIHN0YXRlLlxuICAgIGNvbnN0IGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFIsIEMsIEY+PiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgY29yZVN0YXRlOiBPYnNlcnZhYmxlPENvcmVTdGF0ZTxSLCBDLCBGPj4gPSBhY3Rpb25zLnBpcGUoXG4gICAgICBtZXJnZVNjYW4oXG4gICAgICAgIChzdGF0ZSwgYWN0aW9uKSA9PiBmcm9tKHJlZHVjZShzdGF0ZSwgYWN0aW9uLCBjb2x1bW5zLCBzb3VyY2UpKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gQXVnbWVudCBzdGF0ZSB3aXRoIGRlcml2ZWQgc3RhdGUsIGFuZCBzdWJzY3JpYmUuXG4gICAgY29uc3Qgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxSLCBDLCBGPj4gPSBjb25uZWN0YWJsZShcbiAgICAgIGNvcmVTdGF0ZS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKHM6IENvcmVTdGF0ZTxSLCBDLCBGPik6IEZ1bGxTdGF0ZTxSLCBDLCBGPiA9PiAoe1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIC4uLnMucXVlcnksXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgICAgcHJldmlvdXM6IGdldFByZXZpb3VzUGFnZShzKSxcbiAgICAgICAgICAgICAgICBwYWdlczogZ2V0UGFnZXMocyksXG4gICAgICAgICAgICAgICAgbmV4dDogZ2V0TmV4dFBhZ2UocyksXG4gICAgICAgICAgICAgICAgcGFnZUNvdW50OiBnZXRQYWdlQ291bnQocyksXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzKHMpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgICAuLi5zLnJlc3VsdCxcbiAgICAgICAgICAgICAgcm93czogcy5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLm1hcChyb3cgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICAgICAgcm93TGluazogb3B0aW9ucz8ucm93TGluayA/IG9wdGlvbnMucm93TGluayhyb3cpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNSb3dTZWxlY3RlZChzLCByb3cuaWQpLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgIGNzdkRhdGE6IGFzeW5jIGZ1bmN0aW9uKiAobW9kZSA9ICdmdWxsJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxGb3JtYXR0ZXIgPSBvcHRpb25zPy5jc3ZDZWxsRm9ybWF0dGVyO1xuICAgICAgICAgICAgICAgIGlmICghY2VsbEZvcm1hdHRlcilcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMuY3N2Q2VsbEZvcm1hdHRlciBpcyByZXF1aXJlZCBmb3IgQ1NWIGV4cG9ydCcsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHlpZWxkIHsgbG9hZGluZzogdHJ1ZSwgZGF0YTogbnVsbCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFTZXQgPSBhd2FpdCBzb3VyY2UoXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnMucXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBzLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnbG9hZCcgfSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxDb2x1bW5zID0gcmVzb2x2ZUNvbHVtbnMoXG4gICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhOiBDc3YgPSBbXTtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goZnVsbENvbHVtbnMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGRhdGFTZXQuY3VycmVudFBhZ2VEYXRhKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ3NlbGVjdGlvbicgJiYgIWlzUm93U2VsZWN0ZWQocywgcmVjb3JkLmlkKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICBjb25zdCByb3c6IENzdlJvdyA9IFtdO1xuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgZnVsbENvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LnB1c2goYXdhaXQgY2VsbEZvcm1hdHRlcihyZWNvcmQsIGNvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHlpZWxkIHsgbG9hZGluZzogZmFsc2UsIGRhdGEgfTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY3N2RmlsZW5hbWU6XG4gICAgICAgICAgICAgICAgKG9wdGlvbnM/LmNzdkZpbGVCYXNlbmFtZT8uc2xpY2UoMCwgMjAwKSA/PyBwbHVyYWxFbnRpdHlOYW1lKSArXG4gICAgICAgICAgICAgICAgJy5jc3YnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAgICAgLi4ucy5kaXNwbGF5LFxuICAgICAgICAgICAgICBjb2x1bW5zOiByZXNvbHZlQ29sdW1ucyhzLCBjb2x1bW5zLCBvcHRpb25zPy5hbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgICAgIGFsbENvbHVtbnM6IGdldEFsbENvbHVtbnMocywgY29sdW1ucyksXG4gICAgICAgICAgICAgIHplcm9TdGF0ZU1lc3NhZ2U6IGdldFplcm9TdGF0ZU1lc3NhZ2UocywgcGx1cmFsRW50aXR5TmFtZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnMuc2VsZWN0aW9uLFxuICAgICAgICAgICAgICBhbGxvd1NlbGVjdGlvbjogISFvcHRpb25zPy5hbGxvd1NlbGVjdGlvbixcbiAgICAgICAgICAgICAgaXNBbGxTZWxlY3RlZDogaXNBbGxTZWxlY3RlZChzKSxcbiAgICAgICAgICAgICAgaXNDdXJyZW50UGFnZVNlbGVjdGVkOiBpc0N1cnJlbnRQYWdlU2VsZWN0ZWQocyksXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQocyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgICBzY2FuKChzdGFibGUsIG5ld1N0YXRlKSA9PiBzdGFibGVTdGF0ZShzdGFibGUsIG5ld1N0YXRlKSksXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICByZXNldE9uRGlzY29ubmVjdDogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG4gICAgc3RhdGUuY29ubmVjdCgpO1xuXG4gICAgLy8gTG9hZCBpbml0aWFsIHRhYmxlIHJvdyBkYXRhLlxuICAgIGFjdGlvbnMubmV4dCh7IHR5cGU6ICdsb2FkJyB9KTtcblxuICAgIHJldHVybiB7IGFjdGlvbnMsIHN0YXRlIH07XG4gIH1cblxuICAvKipcbiAgICogTW9zdCB0YWJsZXMgdXNlIHJlbW90ZSBiYWNrZW5kcyB0byBmZXRjaCBkYXRhIGFzeW5jaHJvbm91c2x5LCBidXQgYW5cbiAgICogaW4tbWVtb3J5IHNvdXJjZSBpcyB1c2VmdWwgZm9yIHNtYWxsIGRhdGFzZXRzLCB3aGVuIFJpdlRhYmxlIGZlYXR1cmVzIGxpa2VcbiAgICogb3JkZXJpbmcgYW5kIHBhZ2luYXRpb24gYXJlIGRlc2lyZWQuXG4gICAqL1xuXG4gIGV4cG9ydCB0eXBlIEluTWVtb3J5Q29sdW1uTWV0YWRhdGE8UiBleHRlbmRzIFJvdz4gPSBPbWl0PFxuICAgIENvbHVtbk1ldGFkYXRhLFxuICAgICdvcmRlcmFibGUnXG4gID4gJiB7IG9yZGVyS2V5Pzoga2V5b2YgUiB9O1xuXG4gIGV4cG9ydCB0eXBlIEluTWVtb3J5TWFuYWdlck9wdGlvbnM8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+ID0gTWFuYWdlck9wdGlvbnM8UiwgQywgRj4gJiB7XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Uj47XG4gICAgZmlsdGVyPzogKGZpbHRlcnM6IEYgfCBudWxsLCByb3c6IFIpID0+IGJvb2xlYW47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluTWVtb3J5TWFuYWdlcjxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4oXG4gICAgZmV0Y2hEYXRhc2V0OiAoKSA9PiBQcm9taXNlPFJbXT4gfCBSW10sXG4gICAgY29sdW1uczogTWFwPEMsIEluTWVtb3J5Q29sdW1uTWV0YWRhdGE8Uj4+LFxuICAgIHBsdXJhbEVudGl0eU5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSW5NZW1vcnlNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPixcbiAgKTogTWFuYWdlcjxSLCBDLCBGPiB7XG4gICAgbGV0IGRhdGE6IFJbXTtcbiAgICBsZXQgZnVzZTogRnVzZTxSPjtcblxuICAgIGNvbnN0IHNvdXJjZTogU291cmNlPFIsIEMsIEY+ID0gYXN5bmMgKHF1ZXJ5LCBtb3N0UmVjZW50QWN0aW9uKSA9PiB7XG4gICAgICBpZiAobW9zdFJlY2VudEFjdGlvbi50eXBlID09PSAnbG9hZCcpIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IGZldGNoRGF0YXNldCgpO1xuICAgICAgICBmdXNlID0gbmV3IEZ1c2UoZGF0YSwgb3B0aW9ucz8uZnVzZU9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3JkZXJDb2x1bW46IGtleW9mIFIgfCB1bmRlZmluZWQgPSBxdWVyeS5vcmRlclxuICAgICAgICA/IGNvbHVtbnMuZ2V0KHF1ZXJ5Lm9yZGVyLmNvbHVtbik/Lm9yZGVyS2V5XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgb3JkZXJlZCA9IHF1ZXJ5LnNlYXJjaFxuICAgICAgICA/IGZ1c2Uuc2VhcmNoKHF1ZXJ5LnNlYXJjaCkubWFwKHJlc3VsdCA9PiByZXN1bHQuaXRlbSlcbiAgICAgICAgOiBxdWVyeS5vcmRlciAmJiBvcmRlckNvbHVtblxuICAgICAgICA/IG9yZGVyQnkoZGF0YSwgb3JkZXJDb2x1bW4sIHF1ZXJ5Lm9yZGVyLmRpcmVjdGlvbilcbiAgICAgICAgOiBkYXRhO1xuICAgICAgY29uc3QgZmlsdGVyID0gb3B0aW9ucz8uZmlsdGVyO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBmaWx0ZXJcbiAgICAgICAgPyBvcmRlcmVkLmZpbHRlcihyb3cgPT4gZmlsdGVyKHF1ZXJ5LmZpbHRlcnMsIHJvdykpXG4gICAgICAgIDogb3JkZXJlZDtcbiAgICAgIGNvbnN0IHN0YXJ0SWR4ID0gcXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZSAqIHF1ZXJ5LnBhZ2luYXRpb24ucGFnZTtcbiAgICAgIGNvbnN0IGVuZElkeCA9IHN0YXJ0SWR4ICsgcXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICAgIGNvbnN0IHBhZ2luYXRlZCA9IGZpbHRlcmVkLnNsaWNlKHN0YXJ0SWR4LCBlbmRJZHgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudFBhZ2VEYXRhOiBwYWdpbmF0ZWQsXG4gICAgICAgIHRvdGFsTWF0Y2hpbmdSb3dDb3VudDogZmlsdGVyZWQubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGNvbHVtbk1ldGFkYXRhOiBNYXA8QywgQ29sdW1uTWV0YWRhdGE+ID0gbmV3IE1hcChcbiAgICAgIFsuLi5jb2x1bW5zLmVudHJpZXMoKV0ubWFwKChbbmFtZSwgbWV0YWRhdGFdKSA9PiBbXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICBvcmRlcmFibGU6ICEhbWV0YWRhdGEub3JkZXJLZXksXG4gICAgICAgICAgZGVzY3JpcHRpb246IG1ldGFkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIG1pbldpZHRoOiBtZXRhZGF0YS5taW5XaWR0aCxcbiAgICAgICAgICBkYXRhVHlwZTogbWV0YWRhdGEuZGF0YVR5cGUsXG4gICAgICAgICAgZGVmYXVsdFBpbm5lZDogbWV0YWRhdGEuZGVmYXVsdFBpbm5lZCxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZU1hbmFnZXIoc291cmNlLCBjb2x1bW5NZXRhZGF0YSwgcGx1cmFsRW50aXR5TmFtZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGtlZXBzIHRoZSBzdGF0ZSBvYmplY3QgcmVmZXJlbmNlcyBhcyBzdGFibGUgYXMgcG9zc2libGUsIHdoaWNoXG4gKiBoZWxwcyBBbmd1bGFyIHJlZHVjZSB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzLiBGb3Igbm93LCBzaW1wbGUgaXNFcXVhbCgpXG4gKiBjaGVja3MgYXQgdGhlIHN0YXRlJ3MgdG9wLWxldmVsIGtleXMgYXJlIHN1ZmZpY2llbnQgdG8gZHJhbWF0aWNhbGx5IHNwZWVkIHVwXG4gKiByZW5kZXJpbmcsIGJ1dCBpZiBvdGhlciBwZXJmb3JtYW5jZSBpc3N1ZXMgYXJpc2UsIHdlIGNvdWxkIGltcGxlbWVudCBtb3JlXG4gKiBncmFudWxhciBjaGVja3Mvc3VyZ2ljYWwgdXBkYXRlcyBhcyBuZWVkZWQgKHRoZSBzdGF0ZS5yZXN1bHQgYmVpbmcgdGhlIG1vc3RcbiAqIGxpa2VseSBjYW5kaWRhdGUsIHNpbmNlIG1hbnkgdHlwZXMgb2Ygc3RhdGUgdXBkYXRlcyBhZmZlY3QgcGFydHMgb2YgdGhlXG4gKiByZXN1bHQgcm93cykuXG4gKi9cbmZ1bmN0aW9uIHN0YWJsZVN0YXRlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHRhcmdldDogUml2VGFibGUuRnVsbFN0YXRlPFIsIEMsIEY+LFxuICBzb3VyY2U6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGPixcbik6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGPiB7XG4gIGlmICghaXNFcXVhbCh0YXJnZXQucXVlcnksIHNvdXJjZS5xdWVyeSkpIHtcbiAgICB0YXJnZXQucXVlcnkgPSBzb3VyY2UucXVlcnk7XG4gIH1cbiAgaWYgKCFpc0VxdWFsKHRhcmdldC5sb2FkLCBzb3VyY2UubG9hZCkpIHtcbiAgICB0YXJnZXQubG9hZCA9IHNvdXJjZS5sb2FkO1xuICB9XG4gIGlmICghaXNFcXVhbCh0YXJnZXQucmVzdWx0LCBzb3VyY2UucmVzdWx0KSkge1xuICAgIHRhcmdldC5yZXN1bHQgPSBzb3VyY2UucmVzdWx0O1xuICB9XG4gIGlmICghaXNFcXVhbCh0YXJnZXQuZGlzcGxheSwgc291cmNlLmRpc3BsYXkpKSB7XG4gICAgdGFyZ2V0LmRpc3BsYXkgPSBzb3VyY2UuZGlzcGxheTtcbiAgfVxuICBpZiAoIWlzRXF1YWwodGFyZ2V0LnNlbGVjdGlvbiwgc291cmNlLnNlbGVjdGlvbikpIHtcbiAgICB0YXJnZXQuc2VsZWN0aW9uID0gc291cmNlLnNlbGVjdGlvbjtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIE1hdGguY2VpbChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICksXG4gICAgMSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJldmlvdXNQYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlID09PSAwXG4gICAgPyBudWxsXG4gICAgOiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgLSAxO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlczxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHBhZGRpbmcgPSA0O1xuICBjb25zdCBtaW4gPSAwO1xuICBjb25zdCBtYXggPSBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMTtcbiAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZFN0YXJ0ID0gTWF0aC5tYXgobWluLCBkZXNpcmVkU3RhcnQpO1xuICBjb25zdCBkZXNpcmVkRW5kID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlICsgcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgobWluLCBjbGFtcGVkU3RhcnQgLSAoZGVzaXJlZEVuZCAtIGNsYW1wZWRFbmQpKTtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4obWF4LCBjbGFtcGVkRW5kICsgKGNsYW1wZWRTdGFydCAtIGRlc2lyZWRTdGFydCkpO1xuICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xufVxuXG5mdW5jdGlvbiBnZXROZXh0UGFnZTxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICByZXR1cm4gbmV4dCA8PSBtYXggPyBuZXh0IDogbnVsbDtcbn1cblxuLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG5mdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IGJvb2xlYW4ge1xuICBjb25zdCBzbWFsbGVzdFBhZ2VTaXplID0gTWF0aC5taW4oLi4uWy4uLlJpdlRhYmxlLnBhZ2VTaXplc10pO1xuICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCA+IHNtYWxsZXN0UGFnZVNpemU7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbHVtbnM8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgc3VwcG9ydGVkQ29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbik6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10ge1xuICAvLyBJZiB0aGUgdGFibGUgb2ZmZXJzIG1vcmUgY29sdW1ucyB0aGFuIHRoZSB1c2VyIGhhcyBjb25maWd1cmF0aW9uIHNldHRpbmdzXG4gIC8vIGZvciAob3IgaWYgdGhlIHVzZXIgaGFzIG5vIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgeWV0KSwgd2UnbGwgYXBwZW5kIHRoZW1cbiAgLy8gdG8gdGhlIGVuZCAodW5sZXNzIHRoZXkgc2hvdWxkIGJlIHBpbm5lZCBieSBkZWZhdWx0LCBpbiB3aGljaCBjYXNlIHdlJ2xsXG4gIC8vIGFwcGVuZCB0aGVtIGFmdGVyIHRoZSBvdGhlciBwaW5uZWQgY29sdW1ucykuIFRoaXMgZW5zdXJlcyB0aGF0IG5ldyBjb2x1bW5zXG4gIC8vIHdlIGFkZCB0byBleGlzdGluZyB0YWJsZXMgb3ZlciB0aW1lICgxKSBnZXQgZGlzcGxheWVkIGV2ZW4gdGhvdWdoIHRoZXlcbiAgLy8gZG9uJ3QgYXBwZWFyIGluIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB5ZXQsIGFuZCAoMikgZG9uJ3RcbiAgLy8gaW50ZXJydXB0IHRoZWlyIGV4aXN0aW5nIHNldHVwLlxuICBjb25zdCBjb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MgPSBkaWZmZXJlbmNlKFxuICAgIFsuLi5zdXBwb3J0ZWRDb2x1bW5zLmtleXMoKV0sXG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSxcbiAgKTtcblxuICAvLyBUaHJvdyBvdXQgc2V0dGluZ3MgZm9yIGNvbHVtbnMgbm8gbG9uZ2VyIG9mZmVyZWQgYnkgdGhlIHRhYmxlLlxuICBjb25zdCBjb2x1bW5zV2l0aFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9XG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5maWx0ZXIoKHsgbmFtZSB9KSA9PlxuICAgICAgc3VwcG9ydGVkQ29sdW1ucy5oYXMobmFtZSksXG4gICAgKTtcblxuICBjb25zdCBjb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9IFtcbiAgICAuLi5jb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MsXG4gIF0ubWFwKChuYW1lOiBDKSA9PiAoe1xuICAgIG5hbWUsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwcmVmZXJyZWRXaWR0aDogJ2F1dG8nLFxuICAgIHBpbm5lZDogISFzdXBwb3J0ZWRDb2x1bW5zLmdldChuYW1lKT8uZGVmYXVsdFBpbm5lZCxcbiAgfSkpO1xuXG4gIHJldHVybiBvcmRlckJ5UGlubmVkKFtcbiAgICAuLi5jb2x1bW5zV2l0aFVzZXJTZXR0aW5ncyxcbiAgICAuLi5jb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5ncyxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIG9yZGVyQnlQaW5uZWQ8QyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbj4oXG4gIGNvbHVtbnM6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10sXG4pOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdIHtcbiAgcmV0dXJuIG9yZGVyQnkoY29sdW1ucywgdiA9PiAodi5waW5uZWQgPyAxIDogMCksICdkZXNjJyk7XG59XG5cbmZ1bmN0aW9uIGdldEFsaWdubWVudChcbiAgbWV0YWRhdGE6IFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhLFxuICBpbmRleDogbnVtYmVyLFxuICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db2x1bW5BbGlnbm1lbnQge1xuICBpZiAoaW5kZXggPT09IDAgJiYgIWFsbG93U2VsZWN0aW9uKSByZXR1cm4gJ2xlZnQnO1xuICBzd2l0Y2ggKG1ldGFkYXRhLmRhdGFUeXBlKSB7XG4gICAgY2FzZSAnZGF0ZSc6XG4gICAgY2FzZSAnbG9uZ1RleHQnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdhZHZhbmNlZCc6XG4gICAgY2FzZSAnaWNvbic6XG4gICAgY2FzZSAnc2hvcnRUZXh0JzpcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb2x1bW5zPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIHN1cHBvcnRlZENvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGFsbG93U2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdIHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIHN1cHBvcnRlZENvbHVtbnMpO1xuICByZXR1cm4gYWxsQ29sdW1uc1xuICAgIC5maWx0ZXIoKHsgZW5hYmxlZCB9KSA9PiBlbmFibGVkKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgICAgIHNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPixcbiAgICAgICAgaTogbnVtYmVyLFxuICAgICAgKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdID0+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBzdXBwb3J0ZWRDb2x1bW5zLmdldChzZXR0aW5ncy5uYW1lKSE7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPVxuICAgICAgICAgIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoID09PSAnYXV0bydcbiAgICAgICAgICAgID8gbWV0YWRhdGEubWluV2lkdGhcbiAgICAgICAgICAgIDogTWF0aC5tYXgobWV0YWRhdGEubWluV2lkdGgsIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4gfCB1bmRlZmluZWQgPVxuICAgICAgICAgIGZ1bGxDb2x1bW5zW2kgLSAxXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5mdWxsQ29sdW1ucyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxuICAgICAgICAgICAgd2lkdGg6IHJlc29sdmVkV2lkdGgsXG4gICAgICAgICAgICBsZWZ0OiBzZXR0aW5ncy5waW5uZWRcbiAgICAgICAgICAgICAgPyBwcmV2aW91c0NvbHVtblxuICAgICAgICAgICAgICAgID8gKHByZXZpb3VzQ29sdW1uLmxlZnQgfHwgMCkgKyBwcmV2aW91c0NvbHVtbi53aWR0aFxuICAgICAgICAgICAgICAgIDogYWxsb3dTZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IDQwXG4gICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KG1ldGFkYXRhLCBpLCBhbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRaZXJvU3RhdGVNZXNzYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiwgZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiAwKSByZXR1cm4gbnVsbDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LnNlYXJjaClcbiAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQuYDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LmZpbHRlcnMpIHJldHVybiBgTm8gJHtlbnRpdHl9IG1hdGNoIHlvdXIgY3VycmVudCBmaWx0ZXJzLmA7XG4gIHJldHVybiBgTm8gJHtlbnRpdHl9LmA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtblBpbjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBjb2x1bW46IEMsXG4gIHBpbm5lZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVyQnlQaW5uZWQoXG4gICAgICAgIGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIHBpbm5lZDogYy5uYW1lID09PSBjb2x1bW4gPyBwaW5uZWQgOiBjLnBpbm5lZCxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gIG5ld0luZGV4OiBudW1iZXIsXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucyk7XG5cbiAgLy8gRmlyc3QsIHB1dCB0aGUgY29sdW1ucyBpbiB0aGUgZGVzaXJlZCBvcmRlci5cbiAgY29uc3QgaXRlbSA9IGFsbENvbHVtbnNbcHJldmlvdXNJbmRleF07XG4gIGNvbnN0IHdpdGhvdXRJdGVtID0gYWxsQ29sdW1ucy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IHByZXZpb3VzSW5kZXgpO1xuICBjb25zdCByZW9yZGVyZWQgPSBbXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgbmV3SW5kZXgpLFxuICAgIGl0ZW0sXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UobmV3SW5kZXgpLFxuICBdO1xuXG4gIC8vIFRoZW4sIHdlIG1heSBuZWVkIHRvIGZpeCB0aGUgcGlucyAoYWxsIHBpbm5lZCBjb2x1bW5zIGFwcGVhciBhdCB0aGVcbiAgLy8gYmVnaW5uaW5nIG9mIHRoZSBjb2x1bW5zIGFycmF5KSBzaW5jZSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGRyYWdcbiAgLy8gYW5kIGRyb3AgY29sdW1ucyB0byBhbmQgZnJvbSB0aGUgcGlubmVkIGFyZWEuIElmIHRoZSB1c2VyIGRyYWdzIGFcbiAgLy8gY29sdW1uIGFjcm9zcyB0aGF0IHRocmVzaG9sZCwgdXBkYXRlIGl0cyBwaW5uZWQgc3RhdHVzLlxuICBjb25zdCB1cGRhdGVkID0gcmVvcmRlcmVkLm1hcCgoc2V0dGluZ3MsIGksIGFycikgPT4ge1xuICAgIGlmIChuZXdJbmRleCA9PT0gaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIHBpbm5lZDogc2V0dGluZ3MucGlubmVkXG4gICAgICAgICAgPyBhcnJbaSAtIDFdPy5waW5uZWQgPz8gdHJ1ZVxuICAgICAgICAgIDogYXJyW2kgKyAxXT8ucGlubmVkID8/IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgcmV0dXJuIHNldHRpbmdzO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogdXBkYXRlZCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5FbmFibGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgZW5hYmxlZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgLi4uYyxcbiAgICAgICAgZW5hYmxlZDogYy5uYW1lID09PSBjb2x1bW4gPyBlbmFibGVkIDogYy5lbmFibGVkLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtbldpZHRoPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgcHJlZmVycmVkV2lkdGg6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+WydwcmVmZXJyZWRXaWR0aCddLFxuKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMpO1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAuLi5jLFxuICAgICAgICBwcmVmZXJyZWRXaWR0aDogYy5uYW1lID09PSBjb2x1bW4gPyBwcmVmZXJyZWRXaWR0aCA6IGMucHJlZmVycmVkV2lkdGgsXG4gICAgICB9KSksXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGlkOiBSWydpZCddKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAoc3RhdGUuc2VsZWN0aW9uLm1vZGUpIHtcbiAgICBjYXNlICdpbmNsdWRlJzpcbiAgICAgIHJldHVybiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuaGFzKGlkKTtcbiAgICBjYXNlICdleGNsdWRlJzpcbiAgICAgIHJldHVybiAhc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkLmhhcyhpZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5NdWx0aVNlbGVjdGlvblN0YXRlIHtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gMCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJlxuICAgICAgc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemUgPT09IHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQpXG4gIClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuc2l6ZSA9PT0gMClcbiAgKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbn1cblxuZnVuY3Rpb24gaXNDdXJyZW50UGFnZVNlbGVjdGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IFJpdlRhYmxlLk11bHRpU2VsZWN0aW9uU3RhdGUge1xuICBjb25zdCBzZWxlY3RlZFN0YXRlcyA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEubWFwKCh7IGlkIH0pID0+XG4gICAgaXNSb3dTZWxlY3RlZChzdGF0ZSwgaWQpLFxuICApO1xuICBpZiAoc2VsZWN0ZWRTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChzZWxlY3RlZFN0YXRlcy5ldmVyeSh2ID0+IHYpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc2VsZWN0ZWRTdGF0ZXMuc29tZSh2ID0+IHYpKSByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0ZWRDb3VudDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIge1xuICBzd2l0Y2ggKHN0YXRlLnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgY2FzZSAnaW5jbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemU7XG4gICAgY2FzZSAnZXhjbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCAtIHN0YXRlLnNlbGVjdGlvbi5leGNsdWRlZC5zaXplO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWZyZXNoUmVzdWx0V2l0aDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBzb3VyY2U6IFJpdlRhYmxlLlNvdXJjZTxSLCBDLCBGPixcbiAgbW9zdFJlY2VudEFjdGlvbjogUml2VGFibGUuQWN0aW9uPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHlpZWxkIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsb2FkOiB7XG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSxcbiAgfTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzb3VyY2Uoc3RhdGUucXVlcnksIG1vc3RSZWNlbnRBY3Rpb24pO1xuICAgIHlpZWxkIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZDoge1xuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICB9LFxuICAgICAgcmVzdWx0LFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkOiB7XG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBpZDogUlsnaWQnXSxcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gIGNvbnRpZ3VvdXM6IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoc2VsZWN0ZWQpIHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBuZXcgU2V0PFJbJ2lkJ10+KFtpZF0pO1xuICAgIGlmIChjb250aWd1b3VzICYmIHN0YXRlLnNlbGVjdGlvbi5tb3N0UmVjZW50bHlTZWxlY3RlZCkge1xuICAgICAgY29uc3Qgc3RhcnRJZHggPSBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLmZpbmRJbmRleChcbiAgICAgICAgcm93ID0+IHJvdy5pZCA9PT0gc3RhdGUuc2VsZWN0aW9uLm1vc3RSZWNlbnRseVNlbGVjdGVkLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZElkeCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZmluZEluZGV4KFxuICAgICAgICByb3cgPT4gcm93LmlkID09PSBpZCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZW9mIHN0YXJ0SWR4ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZW5kSWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCBpID0gTWF0aC5taW4oc3RhcnRJZHgsIGVuZElkeCk7XG4gICAgICAgICAgaSA8PSBNYXRoLm1heChzdGFydElkeCwgZW5kSWR4KTtcbiAgICAgICAgICBpKytcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV3U2VsZWN0aW9uLmFkZChzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhW2ldLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IGlkLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWRdLCBbLi4ubmV3U2VsZWN0aW9uXSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoXG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZShbLi4uc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkXSwgWy4uLm5ld1NlbGVjdGlvbl0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgIG1vc3RSZWNlbnRseVNlbGVjdGVkOiBudWxsLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UoWy4uLnN0YXRlLnNlbGVjdGlvbi5pbmNsdWRlZF0sIFtpZF0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtb2RlOiAnZXhjbHVkZScsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVkOiBuZXcgU2V0KHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWRdLCBbaWRdKSksXG4gICAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVQYWdlU2VsZWN0ZWQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgaXNQYWdlRnVsbHlTZWxlY3RlZCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZXZlcnkoKHsgaWQgfSkgPT5cbiAgICBpc1Jvd1NlbGVjdGVkKHN0YXRlLCBpZCksXG4gICk7XG4gIHJldHVybiBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLnJlZHVjZSgoYWNjdW11bGF0ZWRTdGF0ZSwgcm93KSA9PiB7XG4gICAgcmV0dXJuIHNldFJvd1NlbGVjdGVkKFxuICAgICAgYWNjdW11bGF0ZWRTdGF0ZSxcbiAgICAgIHJvdy5pZCxcbiAgICAgICFpc1BhZ2VGdWxseVNlbGVjdGVkLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiB0b2dnbGVBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoaXNBbGxTZWxlY3RlZChzdGF0ZSkgPT09IHRydWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGNvbHVtbjogQyk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBxdWVyeToge1xuICAgICAgICAuLi5zdGF0ZS5xdWVyeSxcbiAgICAgICAgb3JkZXI6XG4gICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBxdWVyeToge1xuICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICBvcmRlcjoge1xuICAgICAgICBjb2x1bW4sXG4gICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWR1Y2U8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgYWN0aW9uOiBSaXZUYWJsZS5BY3Rpb248UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIHNvdXJjZTogUml2VGFibGUuU291cmNlPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlICdsb2FkJzpcbiAgICAgIHlpZWxkKiByZWZyZXNoUmVzdWx0V2l0aChzdGF0ZSwgc291cmNlLCBhY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDaGFuZ2UnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgICAgb3JkZXI6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDb2x1bW5Ub2dnbGUnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB0b2dnbGVDb2x1bW5PcmRlcihzdGF0ZSwgYWN0aW9uLmNvbHVtbiksXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlYXJjaENoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnaW5hdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwcmV2aW91c1BhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldFByZXZpb3VzUGFnZShzdGF0ZSkgPz8gMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbmV4dFBhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldE5leHRQYWdlKHN0YXRlKSA/PyBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGFjdGlvbi5wYWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYWdlU2l6ZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBhY3Rpb24uc2l6ZSxcbiAgICAgICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZmlsdGVyc0NoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBmaWx0ZXJzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGVjdGlvbjoge1xuICAgICAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICBpbmNsdWRlZDogbmV3IFNldCgpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtblNldHRpbmdzQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICAgIGNvbHVtblNldHRpbmdzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5QaW5DaGFuZ2UnOlxuICAgICAgeWllbGQgY2hhbmdlQ29sdW1uUGluKHN0YXRlLCBjb2x1bW5zLCBhY3Rpb24uY29sdW1uLCBhY3Rpb24ucGlubmVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbk9yZGVyQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbk9yZGVyKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGFjdGlvbi5uZXdJbmRleCxcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5FbmFibGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbkVuYWJsZWQoc3RhdGUsIGNvbHVtbnMsIGFjdGlvbi5jb2x1bW4sIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbldpZHRoQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbldpZHRoKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLmNvbHVtbixcbiAgICAgICAgYWN0aW9uLnByZWZlcnJlZFdpZHRoLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlbGVjdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3Rpb246IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Jvd1NlbGVjdGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHNldFJvd1NlbGVjdGVkKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgYWN0aW9uLmlkLFxuICAgICAgICBhY3Rpb24uc2VsZWN0ZWQsXG4gICAgICAgIGFjdGlvbi5jb250aWd1b3VzLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3BhZ2VTZWxlY3RlZENoYW5nZSc6XG4gICAgICB5aWVsZCB0b2dnbGVQYWdlU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYWxsU2VsZWN0ZWRDaGFuZ2UnOlxuICAgICAgeWllbGQgdG9nZ2xlQWxsU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cbiJdfQ==
675
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQXNCLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLE9BQU8sRUFDUCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBRUwsV0FBVyxFQUNYLElBQUksRUFDSixHQUFHLEVBQ0gsU0FBUyxFQUVULGFBQWEsRUFDYixJQUFJLEVBQ0osT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBR2QsTUFBTSxLQUFXLFFBQVEsQ0E0Z0J4QjtBQTVnQkQsV0FBaUIsUUFBUTtJQXlDVixrQkFBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFVLENBQUM7SUEyUXJELFNBQWdCLGFBQWEsQ0FLM0IsTUFBdUIsRUFDdkIsT0FBK0IsRUFDL0IsZ0JBQXdCLEVBQ3hCLE9BQWlDO1FBRWpDLGtDQUFrQztRQUNsQyxNQUFNLFlBQVksR0FBdUI7WUFDdkMsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxJQUFJO2dCQUNYLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsQ0FBQztvQkFDUCxRQUFRLEVBQUUsRUFBRTtpQkFDYjtnQkFDRCxPQUFPLEVBQUUsSUFBSTthQUNkO1lBQ0QsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLE1BQU0sRUFBRTtnQkFDTixlQUFlLEVBQUUsRUFBRTtnQkFDbkIscUJBQXFCLEVBQUUsQ0FBQzthQUN6QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsRUFBRTthQUNuQjtZQUNELFNBQVMs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LEtBQUssb0JBQW9CO1lBQ3ZCLE1BQU0sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsTUFBTTtRQUNSLEtBQUssbUJBQW1CO1lBQ3RCLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsTUFBTTtLQUNUO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcmFtcywgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgRnVzZSwgeyBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRzRGVlcCxcbiAgZGlmZmVyZW5jZSxcbiAgaXNFcXVhbCxcbiAgb3JkZXJCeSxcbiAgcmFuZ2UsXG4gIHVuaW9uLFxufSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGFibGUsXG4gIGNvbm5lY3RhYmxlLFxuICBmcm9tLFxuICBtYXAsXG4gIG1lcmdlU2NhbixcbiAgT2JzZXJ2YWJsZSxcbiAgUmVwbGF5U3ViamVjdCxcbiAgc2NhbixcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFJpdlRhYmxlIHtcbiAgZXhwb3J0IHR5cGUgUm93ID0geyBpZDogc3RyaW5nIHwgbnVtYmVyIH07XG4gIGV4cG9ydCB0eXBlIENvbHVtbiA9IHN0cmluZztcbiAgZXhwb3J0IHR5cGUgRmlsdGVycyA9IGFueTtcblxuICAvKipcbiAgICogUml2VGFibGUncyBzdGF0ZSBhbmQgdXNlciBhY3Rpb25zIGFyZSBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBjaHVua3M6XG4gICAqXG4gICAqIC0gUXVlcnkgKGZvciB0aGluZ3MgbGlrZSBmaWx0ZXJzLCBwYWdpbmF0aW9uLCBzZWFyY2gsIGV0Yy4pXG4gICAqIC0gTG9hZGluZyAoZm9yIHdoZXRoZXIgb3Igbm90IHRoZSB0YWJsZSBpcyBsb2FkaW5nIHJvdyBkYXRhKVxuICAgKiAtIFJlc3VsdCAoZm9yIHRoZSByb3cgZGF0YSBpdHNlbGYpXG4gICAqIC0gRGlzcGxheSAoZm9yIHRoaW5ncyBsaWtlIGNvbHVtbiBjb25maWd1cmF0aW9uKVxuICAgKiAtIFNlbGVjdGlvbiAoZm9yIHRyYWNraW5nIHRoZSB1c2VyJ3Mgcm93IHNlbGVjdGlvbnMpXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgZGF0YSBmbG93IGlzIHVuaWRpcmVjdGlvbmFsOiB0aGUgVUkgaXNzdWVzIGFjdGlvbnMsIHdoaWNoXG4gICAqIGFmZmVjdCB0aGUgc3RhdGUsIGFuZCB0aGUgc3RhdGUgZ2V0cyBwYXNzZWQgYmFjayB0byB0aGUgVUkgZm9yIGRpc3BsYXkuXG4gICAqXG4gICAqIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAgKiDilIIgIFVJICDil4TilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgICog4pSU4pSA4pSA4pSs4pSA4pSA4pSA4pSYICAgICAgICDilIJcbiAgICogICAg4pSCICAgICAgICAgICAg4pSCXG4gICAqIOKUjOKUgOKUgOKWvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgIOKUglxuICAgKiDilIIgIEFjdGlvbnMgIOKUgiAgIOKUglxuICAgKiDilJTilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilJggICDilIJcbiAgICogICAg4pSCICAgICAgICAgICAg4pSCXG4gICAqIOKUjOKUgOKUgOKWvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUkFxuICAgKiDilIIgIFN0YXRlIHJlZHVjZXIgIOKUglxuICAgKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgICpcbiAgICogRnJvbSB0aGUgY29yZSBzdGF0ZSwgY2FsY3VsYXRlZCBzdGF0ZSBpcyBkZXJpdmVkIGFuZCBhZGRlZCB0byB0aGUgY29yZVxuICAgKiBzdGF0ZSAoZS5nLiwgZnJvbSB0aGUgcmF3IHNlbGVjdGlvbiBzdGF0ZSB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90XG4gICAqIGFsbCB0aGUgcm93cyBvbiB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBwYWdlIGFyZSBzZWxlY3RlZCwgZXRjLikuXG4gICAqL1xuXG4gIC8vLy8vLy8vLy8vXG4gIC8vIFF1ZXJ5IC8vXG4gIC8vLy8vLy8vLy8vXG5cbiAgLy8gUXVlcnkgc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBPcmRlckRpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuICBleHBvcnQgY29uc3QgcGFnZVNpemVzID0gWzI1LCA1MCwgMTAwLCAyNTBdIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBRdWVyeTxDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPSB7XG4gICAgb3JkZXI6IHtcbiAgICAgIGRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb247XG4gICAgICBjb2x1bW46IEM7XG4gICAgfSB8IG51bGw7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgZmlsdGVyczogRiB8IG51bGw7XG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgcGFnZTogbnVtYmVyO1xuICAgICAgcGFnZVNpemU6IG51bWJlcjtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFF1ZXJ5IGFjdGlvbnMgLy9cblxuICBleHBvcnQgdHlwZSBRdWVyeUFjdGlvbjxDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPVxuICAgIHwgeyB0eXBlOiAnbG9hZCcgfVxuICAgIHwgeyB0eXBlOiAnb3JkZXJDaGFuZ2UnOyBwYXlsb2FkOiBRdWVyeTxDLCBGPlsnb3JkZXInXSB9XG4gICAgfCB7IHR5cGU6ICdvcmRlckNvbHVtblRvZ2dsZSc7IGNvbHVtbjogQyB9XG4gICAgfCB7IHR5cGU6ICdzZWFyY2hDaGFuZ2UnOyBwYXlsb2FkOiBRdWVyeTxDLCBGPlsnc2VhcmNoJ10gfVxuICAgIHwgeyB0eXBlOiAnZmlsdGVyc0NoYW5nZSc7IHBheWxvYWQ6IFF1ZXJ5PEMsIEY+WydmaWx0ZXJzJ10gfVxuICAgIHwgeyB0eXBlOiAncGFnaW5hdGlvbkNoYW5nZSc7IHBheWxvYWQ6IFF1ZXJ5PEMsIEY+WydwYWdpbmF0aW9uJ10gfVxuICAgIHwgeyB0eXBlOiAnbmV4dFBhZ2VOYXZpZ2F0ZScgfVxuICAgIHwgeyB0eXBlOiAncHJldmlvdXNQYWdlTmF2aWdhdGUnIH1cbiAgICB8IHsgdHlwZTogJ3BhZ2VDaGFuZ2UnOyBwYWdlOiBudW1iZXIgfVxuICAgIHwgeyB0eXBlOiAncGFnZVNpemVDaGFuZ2UnOyBzaXplOiBudW1iZXIgfTtcblxuICAvLy8vLy8vLy8vXG4gIC8vIExvYWQgLy9cbiAgLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIExvYWQgPSB7XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICBlcnJvcjogdW5rbm93biB8IG51bGw7XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vXG4gIC8vIFJlc3VsdCAvL1xuICAvLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBSZXN1bHQ8UiBleHRlbmRzIFJvdz4gPSB7XG4gICAgLyoqXG4gICAgICogVGhlIGZ1bGwgcm93IGRhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UsIGFmdGVyIGZpbHRlcnMsIHNlYXJjaCBxdWVyeSwgYW5kXG4gICAgICogcm93IG9yZGVyaW5nIGFyZSBhcHBsaWVkLlxuICAgICAqL1xuICAgIGN1cnJlbnRQYWdlRGF0YTogUltdO1xuICAgIC8qKlxuICAgICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyAocmVnYXJkbGVzcyBvZiBwYWdpbmF0aW9uKSB0aGF0IG1hdGNoIHRoZVxuICAgICAqIGZpbHRlcnMgYW5kIHNlYXJjaCBxdWVyeS5cbiAgICAgKi9cbiAgICB0b3RhbE1hdGNoaW5nUm93Q291bnQ6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgU291cmNlPFIgZXh0ZW5kcyBSb3csIEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9IChcbiAgICBxdWVyeTogUml2VGFibGUuUXVlcnk8QywgRj4sXG4gICAgbW9zdFJlY2VudEFjdGlvbjogUml2VGFibGUuQWN0aW9uPFIsIEMsIEY+LFxuICApID0+IFByb21pc2U8UmVzdWx0PFI+PjtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIERpc3BsYXkgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIC8vIERpc3BsYXkgc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBDb2x1bW5TZXR0aW5nczxDIGV4dGVuZHMgQ29sdW1uPiA9IHtcbiAgICBuYW1lOiBDO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJlZmVycmVkV2lkdGg6IG51bWJlciB8ICdhdXRvJztcbiAgICBwaW5uZWQ6IGJvb2xlYW47XG4gIH07XG4gIGV4cG9ydCB0eXBlIERpc3BsYXk8QyBleHRlbmRzIENvbHVtbj4gPSB7XG4gICAgY29sdW1uU2V0dGluZ3M6IENvbHVtblNldHRpbmdzPEM+W107XG4gIH07XG5cbiAgLy8gRGlzcGxheSBhY3Rpb25zIC8vXG5cbiAgZXhwb3J0IHR5cGUgRGlzcGxheUFjdGlvbjxDIGV4dGVuZHMgQ29sdW1uPiA9XG4gICAgfCB7IHR5cGU6ICdjb2x1bW5TZXR0aW5nc0NoYW5nZSc7IHBheWxvYWQ6IERpc3BsYXk8Qz5bJ2NvbHVtblNldHRpbmdzJ10gfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnY29sdW1uUGluQ2hhbmdlJztcbiAgICAgICAgY29sdW1uOiBDO1xuICAgICAgICBwaW5uZWQ6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdjb2x1bW5PcmRlckNoYW5nZSc7XG4gICAgICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2NvbHVtbkVuYWJsZWRDaGFuZ2UnO1xuICAgICAgICBjb2x1bW46IEM7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdjb2x1bW5XaWR0aENoYW5nZSc7XG4gICAgICAgIGNvbHVtbjogQztcbiAgICAgICAgcHJlZmVycmVkV2lkdGg6IG51bWJlciB8ICdhdXRvJztcbiAgICAgIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFNlbGVjdGlvbiAvL1xuICAvLy8vLy8vLy8vLy8vLy9cblxuICAvLyBTZWxlY3Rpb24gc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBTZWxlY3Rpb248UiBleHRlbmRzIFJvdz4gPSB7XG4gICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IFJbJ2lkJ10gfCBudWxsO1xuICB9ICYgKFxuICAgIHwge1xuICAgICAgICBtb2RlOiAnaW5jbHVkZSc7XG4gICAgICAgIGluY2x1ZGVkOiBTZXQ8UlsnaWQnXT47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIG1vZGU6ICdleGNsdWRlJztcbiAgICAgICAgZXhjbHVkZWQ6IFNldDxSWydpZCddPjtcbiAgICAgIH1cbiAgKTtcblxuICAvLyBTZWxlY3Rpb24gYWN0aW9ucyAvL1xuXG4gIGV4cG9ydCB0eXBlIFNlbGVjdGlvbkFjdGlvbjxSIGV4dGVuZHMgUm93PiA9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3Rpb25DaGFuZ2UnO1xuICAgICAgICBwYXlsb2FkOiBTZWxlY3Rpb248Uj47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdyb3dTZWxlY3RlZENoYW5nZSc7XG4gICAgICAgIGlkOiBSWydpZCddO1xuICAgICAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICAgICAgY29udGlndW91czogYm9vbGVhbjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3BhZ2VTZWxlY3RlZENoYW5nZSc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdhbGxTZWxlY3RlZENoYW5nZSc7XG4gICAgICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyIC8vXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgLy8gQ29tYmluZWQgc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBDb3JlU3RhdGU8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID0ge1xuICAgIHF1ZXJ5OiBRdWVyeTxDLCBGPjtcbiAgICBsb2FkOiBMb2FkO1xuICAgIHJlc3VsdDogUmVzdWx0PFI+O1xuICAgIGRpc3BsYXk6IERpc3BsYXk8Qz47XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb248Uj47XG4gIH07XG5cbiAgLy8gQ29tYmluZWQgYWN0aW9ucyAvL1xuXG4gIGV4cG9ydCB0eXBlIEFjdGlvbjxSIGV4dGVuZHMgUm93LCBDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPVxuICAgIHwgUXVlcnlBY3Rpb248QywgRj5cbiAgICB8IERpc3BsYXlBY3Rpb248Qz5cbiAgICB8IFNlbGVjdGlvbkFjdGlvbjxSPjtcblxuICAvLyBGdWxsIHN0YXRlIChjb3JlIHN0YXRlIHBsdXMgcHVyZSBkZXJpdmF0aW9ucykgLy9cblxuICBleHBvcnQgdHlwZSBDb2x1bW5EYXRhVHlwZSA9XG4gICAgfCAnYWR2YW5jZWQnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdpY29uJ1xuICAgIHwgJ2xvbmdUZXh0J1xuICAgIHwgJ251bWJlcidcbiAgICB8ICdzaG9ydFRleHQnO1xuICBleHBvcnQgdHlwZSBDb2x1bW5BbGlnbm1lbnQgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG4gIGV4cG9ydCB0eXBlIENvbHVtbk1ldGFkYXRhID0ge1xuICAgIG9yZGVyYWJsZTogYm9vbGVhbjtcbiAgICBtaW5XaWR0aDogbnVtYmVyO1xuICAgIGRhdGFUeXBlOiBDb2x1bW5EYXRhVHlwZTtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBkZWZhdWx0UGlubmVkPzogYm9vbGVhbjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgRXh0ZXJuYWxSb3dMaW5rID0ge1xuICAgIHR5cGU6ICdleHRlcm5hbCc7XG4gICAgaHJlZjogc3RyaW5nO1xuICB9O1xuICBleHBvcnQgdHlwZSBJbnRlcm5hbFJvd0xpbmsgPSB7XG4gICAgdHlwZTogJ2ludGVybmFsJztcbiAgICByb3V0ZXJMaW5rOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBxdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUm93TGluayA9IEV4dGVybmFsUm93TGluayB8IEludGVybmFsUm93TGluaztcbiAgZXhwb3J0IHR5cGUgRnVsbFJvdzxSIGV4dGVuZHMgUm93PiA9IFIgJiB7XG4gICAgcm93TGluazogUm93TGluayB8IG51bGw7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIH07XG4gIGV4cG9ydCB0eXBlIEZ1bGxDb2x1bW48QyBleHRlbmRzIENvbHVtbj4gPSBDb2x1bW5TZXR0aW5nczxDPiAmXG4gICAgQ29sdW1uTWV0YWRhdGEgJiB7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgbGVmdDogbnVtYmVyIHwgbnVsbDtcbiAgICAgIGFsaWdubWVudDogQ29sdW1uQWxpZ25tZW50O1xuICAgIH07XG4gIGV4cG9ydCB0eXBlIE11bHRpU2VsZWN0aW9uU3RhdGUgPSBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnO1xuXG4gIGV4cG9ydCB0eXBlIENzdkNlbGxGb3JtYXR0ZXI8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbj4gPSAoXG4gICAgcm93OiBSLFxuICAgIGNvbHVtbjogRnVsbENvbHVtbjxDPixcbiAgKSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG4gIGV4cG9ydCB0eXBlIENzdlJvdyA9IHN0cmluZ1tdO1xuICBleHBvcnQgdHlwZSBDc3YgPSBDc3ZSb3dbXTtcbiAgZXhwb3J0IHR5cGUgQ3N2TW9kZSA9ICdmdWxsJyB8ICdzZWxlY3Rpb24nO1xuICBleHBvcnQgdHlwZSBDc3ZPdXRwdXQgPVxuICAgIHwgeyBsb2FkaW5nOiB0cnVlOyBkYXRhOiBudWxsIH1cbiAgICB8IHsgbG9hZGluZzogZmFsc2U7IGRhdGE6IENzdiB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4gPSBDb3JlU3RhdGU8UiwgQywgRj4gJiB7XG4gICAgcXVlcnk6IHtcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgcHJldmlvdXM6IG51bWJlciB8IG51bGw7XG4gICAgICAgIHBhZ2VzOiBudW1iZXJbXTtcbiAgICAgICAgbmV4dDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgcGFnZUNvdW50OiBudW1iZXI7XG4gICAgICAgIHNob3dDb250cm9sczogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXN1bHQ6IHtcbiAgICAgIHJvd3M6IEZ1bGxSb3c8Uj5bXTtcbiAgICAgIGNzdkRhdGE6IChtb2RlPzogQ3N2TW9kZSkgPT4gQXN5bmNHZW5lcmF0b3I8Q3N2T3V0cHV0PjtcbiAgICAgIGNzdkZpbGVuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICBkaXNwbGF5OiB7XG4gICAgICBjb2x1bW5zOiBGdWxsQ29sdW1uPEM+W107XG4gICAgICBhbGxDb2x1bW5zOiBDb2x1bW5TZXR0aW5nczxDPltdO1xuICAgICAgemVyb1N0YXRlTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIHNlbGVjdGlvbjoge1xuICAgICAgYWxsb3dTZWxlY3Rpb246IGJvb2xlYW47XG4gICAgICBpc0FsbFNlbGVjdGVkOiBNdWx0aVNlbGVjdGlvblN0YXRlO1xuICAgICAgaXNDdXJyZW50UGFnZVNlbGVjdGVkOiBNdWx0aVNlbGVjdGlvblN0YXRlO1xuICAgICAgc2VsZWN0ZWRDb3VudDogbnVtYmVyO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtYW5hZ2VyIGlzIHdoYXQgc2V0cyB1cCB0aGUgaW5pdGlhbCBzdGF0ZSBhbmQgdHJhbnNsYXRlcyB1c2VyIGFjdGlvbnNcbiAgICogKGxpa2UgcGFnaW5hdGlvbiBvciBmaWx0ZXIgY2hhbmdlcywgZXRjLikgaW50byBuZXcgcm93IGRhdGEgYnkgY2FsbGluZyB0aGVcbiAgICogcmVkdWNlciBmdW5jdGlvbi4gSXQgYWxzbyBhdWdtZW50cyB0aGUgY29yZSBzdGF0ZSB3aXRoIGFkZGl0aW9uYWwgZGVyaXZlZFxuICAgKiBzdGF0ZS5cbiAgICovXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxSIGV4dGVuZHMgUm93LCBDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPSB7XG4gICAgYWN0aW9uczogU3ViamVjdDxBY3Rpb248UiwgQywgRj4+O1xuICAgIHN0YXRlOiBDb25uZWN0YWJsZTxGdWxsU3RhdGU8UiwgQywgRj4+O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXJPcHRpb25zPFxuICAgIFIgZXh0ZW5kcyBSb3csXG4gICAgQyBleHRlbmRzIENvbHVtbixcbiAgICBGIGV4dGVuZHMgRmlsdGVycyxcbiAgPiA9IHtcbiAgICBpbml0aWFsU3RhdGU/OiBEZWVwUGFydGlhbDxDb3JlU3RhdGU8UiwgQywgRj4+O1xuICAgIHJvd0xpbms/OiAocm93OiBSKSA9PiBSb3dMaW5rO1xuICAgIGNzdkNlbGxGb3JtYXR0ZXI/OiBDc3ZDZWxsRm9ybWF0dGVyPFIsIEM+O1xuICAgIGNzdkZpbGVCYXNlbmFtZT86IHN0cmluZztcbiAgICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+KFxuICAgIHNvdXJjZTogU291cmNlPFIsIEMsIEY+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBDb2x1bW5NZXRhZGF0YT4sXG4gICAgcGx1cmFsRW50aXR5TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPixcbiAgKTogTWFuYWdlcjxSLCBDLCBGPiB7XG4gICAgLy8gU2V0IHVwIHRoZSBpbml0aWFsIHRhYmxlIHN0YXRlLlxuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFIsIEMsIEY+ID0ge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgb3JkZXI6IG51bGwsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgIH0sXG4gICAgICBsb2FkOiB7IGxvYWRpbmc6IGZhbHNlLCBlcnJvcjogbnVsbCB9LFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIGN1cnJlbnRQYWdlRGF0YTogW10sXG4gICAgICAgIHRvdGFsTWF0Y2hpbmdSb3dDb3VudDogMCxcbiAgICAgIH0sXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBbXSxcbiAgICAgIH0sXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxSLCBDLCBGPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICAvLyBXaXJlIHVwIHJlZHVjZWQgc3RhdGUgZnJvbSBhY3Rpb25zIGFuZCBpbml0aWFsIHN0YXRlLlxuICAgIGNvbnN0IGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFIsIEMsIEY+PiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgY29yZVN0YXRlOiBPYnNlcnZhYmxlPENvcmVTdGF0ZTxSLCBDLCBGPj4gPSBhY3Rpb25zLnBpcGUoXG4gICAgICBtZXJnZVNjYW4oXG4gICAgICAgIChzdGF0ZSwgYWN0aW9uKSA9PiBmcm9tKHJlZHVjZShzdGF0ZSwgYWN0aW9uLCBjb2x1bW5zLCBzb3VyY2UpKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gQXVnbWVudCBzdGF0ZSB3aXRoIGRlcml2ZWQgc3RhdGUsIGFuZCBzdWJzY3JpYmUuXG4gICAgY29uc3Qgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxSLCBDLCBGPj4gPSBjb25uZWN0YWJsZShcbiAgICAgIGNvcmVTdGF0ZS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKHM6IENvcmVTdGF0ZTxSLCBDLCBGPik6IEZ1bGxTdGF0ZTxSLCBDLCBGPiA9PiAoe1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIC4uLnMucXVlcnksXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgICAgcHJldmlvdXM6IGdldFByZXZpb3VzUGFnZShzKSxcbiAgICAgICAgICAgICAgICBwYWdlczogZ2V0UGFnZXMocyksXG4gICAgICAgICAgICAgICAgbmV4dDogZ2V0TmV4dFBhZ2UocyksXG4gICAgICAgICAgICAgICAgcGFnZUNvdW50OiBnZXRQYWdlQ291bnQocyksXG4gICAgICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzKHMpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgICAuLi5zLnJlc3VsdCxcbiAgICAgICAgICAgICAgcm93czogcy5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLm1hcChyb3cgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICAgICAgcm93TGluazogb3B0aW9ucz8ucm93TGluayA/IG9wdGlvbnMucm93TGluayhyb3cpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNSb3dTZWxlY3RlZChzLCByb3cuaWQpLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgIGNzdkRhdGE6IGFzeW5jIGZ1bmN0aW9uKiAobW9kZSA9ICdmdWxsJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxGb3JtYXR0ZXIgPSBvcHRpb25zPy5jc3ZDZWxsRm9ybWF0dGVyO1xuICAgICAgICAgICAgICAgIGlmICghY2VsbEZvcm1hdHRlcilcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMuY3N2Q2VsbEZvcm1hdHRlciBpcyByZXF1aXJlZCBmb3IgQ1NWIGV4cG9ydCcsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHlpZWxkIHsgbG9hZGluZzogdHJ1ZSwgZGF0YTogbnVsbCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFTZXQgPSBhd2FpdCBzb3VyY2UoXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnMucXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBzLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnbG9hZCcgfSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxDb2x1bW5zID0gcmVzb2x2ZUNvbHVtbnMoXG4gICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhOiBDc3YgPSBbXTtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goZnVsbENvbHVtbnMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGRhdGFTZXQuY3VycmVudFBhZ2VEYXRhKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ3NlbGVjdGlvbicgJiYgIWlzUm93U2VsZWN0ZWQocywgcmVjb3JkLmlkKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICBjb25zdCByb3c6IENzdlJvdyA9IFtdO1xuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgZnVsbENvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LnB1c2goYXdhaXQgY2VsbEZvcm1hdHRlcihyZWNvcmQsIGNvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHlpZWxkIHsgbG9hZGluZzogZmFsc2UsIGRhdGEgfTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY3N2RmlsZW5hbWU6XG4gICAgICAgICAgICAgICAgKG9wdGlvbnM/LmNzdkZpbGVCYXNlbmFtZT8uc2xpY2UoMCwgMjAwKSA/PyBwbHVyYWxFbnRpdHlOYW1lKSArXG4gICAgICAgICAgICAgICAgJy5jc3YnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAgICAgLi4ucy5kaXNwbGF5LFxuICAgICAgICAgICAgICBjb2x1bW5zOiByZXNvbHZlQ29sdW1ucyhzLCBjb2x1bW5zLCBvcHRpb25zPy5hbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgICAgIGFsbENvbHVtbnM6IGdldEFsbENvbHVtbnMocywgY29sdW1ucyksXG4gICAgICAgICAgICAgIHplcm9TdGF0ZU1lc3NhZ2U6IGdldFplcm9TdGF0ZU1lc3NhZ2UocywgcGx1cmFsRW50aXR5TmFtZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnMuc2VsZWN0aW9uLFxuICAgICAgICAgICAgICBhbGxvd1NlbGVjdGlvbjogISFvcHRpb25zPy5hbGxvd1NlbGVjdGlvbixcbiAgICAgICAgICAgICAgaXNBbGxTZWxlY3RlZDogaXNBbGxTZWxlY3RlZChzKSxcbiAgICAgICAgICAgICAgaXNDdXJyZW50UGFnZVNlbGVjdGVkOiBpc0N1cnJlbnRQYWdlU2VsZWN0ZWQocyksXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQocyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgICBzY2FuKChzdGFibGUsIG5ld1N0YXRlKSA9PiBzdGFibGVTdGF0ZShzdGFibGUsIG5ld1N0YXRlKSksXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICByZXNldE9uRGlzY29ubmVjdDogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG4gICAgc3RhdGUuY29ubmVjdCgpO1xuXG4gICAgLy8gTG9hZCBpbml0aWFsIHRhYmxlIHJvdyBkYXRhLlxuICAgIGFjdGlvbnMubmV4dCh7IHR5cGU6ICdsb2FkJyB9KTtcblxuICAgIHJldHVybiB7IGFjdGlvbnMsIHN0YXRlIH07XG4gIH1cblxuICAvKipcbiAgICogTW9zdCB0YWJsZXMgdXNlIHJlbW90ZSBiYWNrZW5kcyB0byBmZXRjaCBkYXRhIGFzeW5jaHJvbm91c2x5LCBidXQgYW5cbiAgICogaW4tbWVtb3J5IHNvdXJjZSBpcyB1c2VmdWwgZm9yIHNtYWxsIGRhdGFzZXRzLCB3aGVuIFJpdlRhYmxlIGZlYXR1cmVzIGxpa2VcbiAgICogb3JkZXJpbmcgYW5kIHBhZ2luYXRpb24gYXJlIGRlc2lyZWQuXG4gICAqL1xuXG4gIGV4cG9ydCB0eXBlIEluTWVtb3J5Q29sdW1uTWV0YWRhdGE8UiBleHRlbmRzIFJvdz4gPSBPbWl0PFxuICAgIENvbHVtbk1ldGFkYXRhLFxuICAgICdvcmRlcmFibGUnXG4gID4gJiB7IG9yZGVyS2V5Pzoga2V5b2YgUiB9O1xuXG4gIGV4cG9ydCB0eXBlIEluTWVtb3J5TWFuYWdlck9wdGlvbnM8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+ID0gTWFuYWdlck9wdGlvbnM8UiwgQywgRj4gJiB7XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Uj47XG4gICAgZmlsdGVyPzogKGZpbHRlcnM6IEYgfCBudWxsLCByb3c6IFIpID0+IGJvb2xlYW47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluTWVtb3J5TWFuYWdlcjxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4oXG4gICAgZmV0Y2hEYXRhc2V0OiAoKSA9PiBQcm9taXNlPFJbXT4gfCBSW10sXG4gICAgY29sdW1uczogTWFwPEMsIEluTWVtb3J5Q29sdW1uTWV0YWRhdGE8Uj4+LFxuICAgIHBsdXJhbEVudGl0eU5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSW5NZW1vcnlNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPixcbiAgKTogTWFuYWdlcjxSLCBDLCBGPiB7XG4gICAgbGV0IGRhdGE6IFJbXTtcbiAgICBsZXQgZnVzZTogRnVzZTxSPjtcblxuICAgIGNvbnN0IHNvdXJjZTogU291cmNlPFIsIEMsIEY+ID0gYXN5bmMgKHF1ZXJ5LCBtb3N0UmVjZW50QWN0aW9uKSA9PiB7XG4gICAgICBpZiAobW9zdFJlY2VudEFjdGlvbi50eXBlID09PSAnbG9hZCcpIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IGZldGNoRGF0YXNldCgpO1xuICAgICAgICBmdXNlID0gbmV3IEZ1c2UoZGF0YSwgb3B0aW9ucz8uZnVzZU9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3JkZXJDb2x1bW46IGtleW9mIFIgfCB1bmRlZmluZWQgPSBxdWVyeS5vcmRlclxuICAgICAgICA/IGNvbHVtbnMuZ2V0KHF1ZXJ5Lm9yZGVyLmNvbHVtbik/Lm9yZGVyS2V5XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgb3JkZXJlZCA9IHF1ZXJ5LnNlYXJjaFxuICAgICAgICA/IGZ1c2Uuc2VhcmNoKHF1ZXJ5LnNlYXJjaCkubWFwKHJlc3VsdCA9PiByZXN1bHQuaXRlbSlcbiAgICAgICAgOiBxdWVyeS5vcmRlciAmJiBvcmRlckNvbHVtblxuICAgICAgICA/IG9yZGVyQnkoZGF0YSwgb3JkZXJDb2x1bW4sIHF1ZXJ5Lm9yZGVyLmRpcmVjdGlvbilcbiAgICAgICAgOiBkYXRhO1xuICAgICAgY29uc3QgZmlsdGVyID0gb3B0aW9ucz8uZmlsdGVyO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBmaWx0ZXJcbiAgICAgICAgPyBvcmRlcmVkLmZpbHRlcihyb3cgPT4gZmlsdGVyKHF1ZXJ5LmZpbHRlcnMsIHJvdykpXG4gICAgICAgIDogb3JkZXJlZDtcbiAgICAgIGNvbnN0IHN0YXJ0SWR4ID0gcXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZSAqIHF1ZXJ5LnBhZ2luYXRpb24ucGFnZTtcbiAgICAgIGNvbnN0IGVuZElkeCA9IHN0YXJ0SWR4ICsgcXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICAgIGNvbnN0IHBhZ2luYXRlZCA9IGZpbHRlcmVkLnNsaWNlKHN0YXJ0SWR4LCBlbmRJZHgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudFBhZ2VEYXRhOiBwYWdpbmF0ZWQsXG4gICAgICAgIHRvdGFsTWF0Y2hpbmdSb3dDb3VudDogZmlsdGVyZWQubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGNvbHVtbk1ldGFkYXRhOiBNYXA8QywgQ29sdW1uTWV0YWRhdGE+ID0gbmV3IE1hcChcbiAgICAgIFsuLi5jb2x1bW5zLmVudHJpZXMoKV0ubWFwKChbbmFtZSwgbWV0YWRhdGFdKSA9PiBbXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICBvcmRlcmFibGU6ICEhbWV0YWRhdGEub3JkZXJLZXksXG4gICAgICAgICAgZGVzY3JpcHRpb246IG1ldGFkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIG1pbldpZHRoOiBtZXRhZGF0YS5taW5XaWR0aCxcbiAgICAgICAgICBkYXRhVHlwZTogbWV0YWRhdGEuZGF0YVR5cGUsXG4gICAgICAgICAgZGVmYXVsdFBpbm5lZDogbWV0YWRhdGEuZGVmYXVsdFBpbm5lZCxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZU1hbmFnZXIoc291cmNlLCBjb2x1bW5NZXRhZGF0YSwgcGx1cmFsRW50aXR5TmFtZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGtlZXBzIHRoZSBzdGF0ZSBvYmplY3QgcmVmZXJlbmNlcyBhcyBzdGFibGUgYXMgcG9zc2libGUsIHdoaWNoXG4gKiBoZWxwcyBBbmd1bGFyIHJlZHVjZSB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzLiBGb3Igbm93LCBzaW1wbGUgaXNFcXVhbCgpXG4gKiBjaGVja3MgYXQgdGhlIHN0YXRlJ3MgdG9wLWxldmVsIGtleXMgYXJlIHN1ZmZpY2llbnQgdG8gZHJhbWF0aWNhbGx5IHNwZWVkIHVwXG4gKiByZW5kZXJpbmcsIGJ1dCBpZiBvdGhlciBwZXJmb3JtYW5jZSBpc3N1ZXMgYXJpc2UsIHdlIGNvdWxkIGltcGxlbWVudCBtb3JlXG4gKiBncmFudWxhciBjaGVja3Mvc3VyZ2ljYWwgdXBkYXRlcyBhcyBuZWVkZWQgKHRoZSBzdGF0ZS5yZXN1bHQgYmVpbmcgdGhlIG1vc3RcbiAqIGxpa2VseSBjYW5kaWRhdGUsIHNpbmNlIG1hbnkgdHlwZXMgb2Ygc3RhdGUgdXBkYXRlcyBhZmZlY3QgcGFydHMgb2YgdGhlXG4gKiByZXN1bHQgcm93cykuXG4gKi9cbmZ1bmN0aW9uIHN0YWJsZVN0YXRlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHRhcmdldDogUml2VGFibGUuRnVsbFN0YXRlPFIsIEMsIEY+LFxuICBzb3VyY2U6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGPixcbik6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGPiB7XG4gIGlmICghaXNFcXVhbCh0YXJnZXQucXVlcnksIHNvdXJjZS5xdWVyeSkpIHtcbiAgICB0YXJnZXQucXVlcnkgPSBzb3VyY2UucXVlcnk7XG4gIH1cbiAgaWYgKCFpc0VxdWFsKHRhcmdldC5sb2FkLCBzb3VyY2UubG9hZCkpIHtcbiAgICB0YXJnZXQubG9hZCA9IHNvdXJjZS5sb2FkO1xuICB9XG4gIGlmICghaXNFcXVhbCh0YXJnZXQucmVzdWx0LCBzb3VyY2UucmVzdWx0KSkge1xuICAgIHRhcmdldC5yZXN1bHQgPSBzb3VyY2UucmVzdWx0O1xuICB9XG4gIGlmICghaXNFcXVhbCh0YXJnZXQuZGlzcGxheSwgc291cmNlLmRpc3BsYXkpKSB7XG4gICAgdGFyZ2V0LmRpc3BsYXkgPSBzb3VyY2UuZGlzcGxheTtcbiAgfVxuICBpZiAoIWlzRXF1YWwodGFyZ2V0LnNlbGVjdGlvbiwgc291cmNlLnNlbGVjdGlvbikpIHtcbiAgICB0YXJnZXQuc2VsZWN0aW9uID0gc291cmNlLnNlbGVjdGlvbjtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIE1hdGguY2VpbChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICksXG4gICAgMSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJldmlvdXNQYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlID09PSAwXG4gICAgPyBudWxsXG4gICAgOiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgLSAxO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlczxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHBhZGRpbmcgPSA0O1xuICBjb25zdCBtaW4gPSAwO1xuICBjb25zdCBtYXggPSBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMTtcbiAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZFN0YXJ0ID0gTWF0aC5tYXgobWluLCBkZXNpcmVkU3RhcnQpO1xuICBjb25zdCBkZXNpcmVkRW5kID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlICsgcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgobWluLCBjbGFtcGVkU3RhcnQgLSAoZGVzaXJlZEVuZCAtIGNsYW1wZWRFbmQpKTtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4obWF4LCBjbGFtcGVkRW5kICsgKGNsYW1wZWRTdGFydCAtIGRlc2lyZWRTdGFydCkpO1xuICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xufVxuXG5mdW5jdGlvbiBnZXROZXh0UGFnZTxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICByZXR1cm4gbmV4dCA8PSBtYXggPyBuZXh0IDogbnVsbDtcbn1cblxuLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG5mdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IGJvb2xlYW4ge1xuICBjb25zdCBzbWFsbGVzdFBhZ2VTaXplID0gTWF0aC5taW4oLi4uWy4uLlJpdlRhYmxlLnBhZ2VTaXplc10pO1xuICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCA+IHNtYWxsZXN0UGFnZVNpemU7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbHVtbnM8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgc3VwcG9ydGVkQ29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbik6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10ge1xuICAvLyBJZiB0aGUgdGFibGUgb2ZmZXJzIG1vcmUgY29sdW1ucyB0aGFuIHRoZSB1c2VyIGhhcyBjb25maWd1cmF0aW9uIHNldHRpbmdzXG4gIC8vIGZvciAob3IgaWYgdGhlIHVzZXIgaGFzIG5vIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgeWV0KSwgd2UnbGwgYXBwZW5kIHRoZW1cbiAgLy8gdG8gdGhlIGVuZCAodW5sZXNzIHRoZXkgc2hvdWxkIGJlIHBpbm5lZCBieSBkZWZhdWx0LCBpbiB3aGljaCBjYXNlIHdlJ2xsXG4gIC8vIGFwcGVuZCB0aGVtIGFmdGVyIHRoZSBvdGhlciBwaW5uZWQgY29sdW1ucykuIFRoaXMgZW5zdXJlcyB0aGF0IG5ldyBjb2x1bW5zXG4gIC8vIHdlIGFkZCB0byBleGlzdGluZyB0YWJsZXMgb3ZlciB0aW1lICgxKSBnZXQgZGlzcGxheWVkIGV2ZW4gdGhvdWdoIHRoZXlcbiAgLy8gZG9uJ3QgYXBwZWFyIGluIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB5ZXQsIGFuZCAoMikgZG9uJ3RcbiAgLy8gaW50ZXJydXB0IHRoZWlyIGV4aXN0aW5nIHNldHVwLlxuICBjb25zdCBjb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MgPSBkaWZmZXJlbmNlKFxuICAgIFsuLi5zdXBwb3J0ZWRDb2x1bW5zLmtleXMoKV0sXG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSxcbiAgKTtcblxuICAvLyBUaHJvdyBvdXQgc2V0dGluZ3MgZm9yIGNvbHVtbnMgbm8gbG9uZ2VyIG9mZmVyZWQgYnkgdGhlIHRhYmxlLlxuICBjb25zdCBjb2x1bW5zV2l0aFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9XG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5maWx0ZXIoKHsgbmFtZSB9KSA9PlxuICAgICAgc3VwcG9ydGVkQ29sdW1ucy5oYXMobmFtZSksXG4gICAgKTtcblxuICBjb25zdCBjb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9IFtcbiAgICAuLi5jb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MsXG4gIF0ubWFwKChuYW1lOiBDKSA9PiAoe1xuICAgIG5hbWUsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwcmVmZXJyZWRXaWR0aDogJ2F1dG8nLFxuICAgIHBpbm5lZDogISFzdXBwb3J0ZWRDb2x1bW5zLmdldChuYW1lKT8uZGVmYXVsdFBpbm5lZCxcbiAgfSkpO1xuXG4gIHJldHVybiBvcmRlckJ5UGlubmVkKFtcbiAgICAuLi5jb2x1bW5zV2l0aFVzZXJTZXR0aW5ncyxcbiAgICAuLi5jb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5ncyxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIG9yZGVyQnlQaW5uZWQ8QyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbj4oXG4gIGNvbHVtbnM6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10sXG4pOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdIHtcbiAgcmV0dXJuIG9yZGVyQnkoY29sdW1ucywgdiA9PiAodi5waW5uZWQgPyAxIDogMCksICdkZXNjJyk7XG59XG5cbmZ1bmN0aW9uIGdldEFsaWdubWVudChcbiAgbWV0YWRhdGE6IFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhLFxuICBpbmRleDogbnVtYmVyLFxuICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db2x1bW5BbGlnbm1lbnQge1xuICBpZiAoaW5kZXggPT09IDAgJiYgIWFsbG93U2VsZWN0aW9uKSByZXR1cm4gJ2xlZnQnO1xuICBzd2l0Y2ggKG1ldGFkYXRhLmRhdGFUeXBlKSB7XG4gICAgY2FzZSAnZGF0ZSc6XG4gICAgY2FzZSAnbG9uZ1RleHQnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdhZHZhbmNlZCc6XG4gICAgY2FzZSAnaWNvbic6XG4gICAgY2FzZSAnc2hvcnRUZXh0JzpcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb2x1bW5zPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIHN1cHBvcnRlZENvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGFsbG93U2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdIHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIHN1cHBvcnRlZENvbHVtbnMpO1xuICByZXR1cm4gYWxsQ29sdW1uc1xuICAgIC5maWx0ZXIoKHsgZW5hYmxlZCB9KSA9PiBlbmFibGVkKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgICAgIHNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPixcbiAgICAgICAgaTogbnVtYmVyLFxuICAgICAgKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdID0+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBzdXBwb3J0ZWRDb2x1bW5zLmdldChzZXR0aW5ncy5uYW1lKSE7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPVxuICAgICAgICAgIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoID09PSAnYXV0bydcbiAgICAgICAgICAgID8gbWV0YWRhdGEubWluV2lkdGhcbiAgICAgICAgICAgIDogTWF0aC5tYXgobWV0YWRhdGEubWluV2lkdGgsIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4gfCB1bmRlZmluZWQgPVxuICAgICAgICAgIGZ1bGxDb2x1bW5zW2kgLSAxXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5mdWxsQ29sdW1ucyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxuICAgICAgICAgICAgd2lkdGg6IHJlc29sdmVkV2lkdGgsXG4gICAgICAgICAgICBsZWZ0OiBzZXR0aW5ncy5waW5uZWRcbiAgICAgICAgICAgICAgPyBwcmV2aW91c0NvbHVtblxuICAgICAgICAgICAgICAgID8gKHByZXZpb3VzQ29sdW1uLmxlZnQgfHwgMCkgKyBwcmV2aW91c0NvbHVtbi53aWR0aFxuICAgICAgICAgICAgICAgIDogYWxsb3dTZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IDQwXG4gICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KG1ldGFkYXRhLCBpLCBhbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRaZXJvU3RhdGVNZXNzYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiwgZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiAwKSByZXR1cm4gbnVsbDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LnNlYXJjaClcbiAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQuYDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LmZpbHRlcnMpIHJldHVybiBgTm8gJHtlbnRpdHl9IG1hdGNoIHlvdXIgY3VycmVudCBmaWx0ZXJzLmA7XG4gIHJldHVybiBgTm8gJHtlbnRpdHl9LmA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtblBpbjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBjb2x1bW46IEMsXG4gIHBpbm5lZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVyQnlQaW5uZWQoXG4gICAgICAgIGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIHBpbm5lZDogYy5uYW1lID09PSBjb2x1bW4gPyBwaW5uZWQgOiBjLnBpbm5lZCxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gIG5ld0luZGV4OiBudW1iZXIsXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucyk7XG5cbiAgLy8gRmlyc3QsIHB1dCB0aGUgY29sdW1ucyBpbiB0aGUgZGVzaXJlZCBvcmRlci5cbiAgY29uc3QgaXRlbSA9IGFsbENvbHVtbnNbcHJldmlvdXNJbmRleF07XG4gIGNvbnN0IHdpdGhvdXRJdGVtID0gYWxsQ29sdW1ucy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IHByZXZpb3VzSW5kZXgpO1xuICBjb25zdCByZW9yZGVyZWQgPSBbXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgbmV3SW5kZXgpLFxuICAgIGl0ZW0sXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UobmV3SW5kZXgpLFxuICBdO1xuXG4gIC8vIFRoZW4sIHdlIG1heSBuZWVkIHRvIGZpeCB0aGUgcGlucyAoYWxsIHBpbm5lZCBjb2x1bW5zIGFwcGVhciBhdCB0aGVcbiAgLy8gYmVnaW5uaW5nIG9mIHRoZSBjb2x1bW5zIGFycmF5KSBzaW5jZSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGRyYWdcbiAgLy8gYW5kIGRyb3AgY29sdW1ucyB0byBhbmQgZnJvbSB0aGUgcGlubmVkIGFyZWEuIElmIHRoZSB1c2VyIGRyYWdzIGFcbiAgLy8gY29sdW1uIGFjcm9zcyB0aGF0IHRocmVzaG9sZCwgdXBkYXRlIGl0cyBwaW5uZWQgc3RhdHVzLlxuICBjb25zdCB1cGRhdGVkID0gcmVvcmRlcmVkLm1hcCgoc2V0dGluZ3MsIGksIGFycikgPT4ge1xuICAgIGlmIChuZXdJbmRleCA9PT0gaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIHBpbm5lZDogc2V0dGluZ3MucGlubmVkXG4gICAgICAgICAgPyBhcnJbaSAtIDFdPy5waW5uZWQgPz8gdHJ1ZVxuICAgICAgICAgIDogYXJyW2kgKyAxXT8ucGlubmVkID8/IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgcmV0dXJuIHNldHRpbmdzO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogdXBkYXRlZCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5FbmFibGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgZW5hYmxlZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgLi4uYyxcbiAgICAgICAgZW5hYmxlZDogYy5uYW1lID09PSBjb2x1bW4gPyBlbmFibGVkIDogYy5lbmFibGVkLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtbldpZHRoPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgcHJlZmVycmVkV2lkdGg6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+WydwcmVmZXJyZWRXaWR0aCddLFxuKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMpO1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAuLi5jLFxuICAgICAgICBwcmVmZXJyZWRXaWR0aDogYy5uYW1lID09PSBjb2x1bW4gPyBwcmVmZXJyZWRXaWR0aCA6IGMucHJlZmVycmVkV2lkdGgsXG4gICAgICB9KSksXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGlkOiBSWydpZCddKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAoc3RhdGUuc2VsZWN0aW9uLm1vZGUpIHtcbiAgICBjYXNlICdpbmNsdWRlJzpcbiAgICAgIHJldHVybiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuaGFzKGlkKTtcbiAgICBjYXNlICdleGNsdWRlJzpcbiAgICAgIHJldHVybiAhc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkLmhhcyhpZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5NdWx0aVNlbGVjdGlvblN0YXRlIHtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gMCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJlxuICAgICAgc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemUgPT09IHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQpXG4gIClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuc2l6ZSA9PT0gMClcbiAgKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbn1cblxuZnVuY3Rpb24gaXNDdXJyZW50UGFnZVNlbGVjdGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IFJpdlRhYmxlLk11bHRpU2VsZWN0aW9uU3RhdGUge1xuICBjb25zdCBzZWxlY3RlZFN0YXRlcyA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEubWFwKCh7IGlkIH0pID0+XG4gICAgaXNSb3dTZWxlY3RlZChzdGF0ZSwgaWQpLFxuICApO1xuICBpZiAoc2VsZWN0ZWRTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChzZWxlY3RlZFN0YXRlcy5ldmVyeSh2ID0+IHYpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc2VsZWN0ZWRTdGF0ZXMuc29tZSh2ID0+IHYpKSByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0ZWRDb3VudDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIge1xuICBzd2l0Y2ggKHN0YXRlLnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgY2FzZSAnaW5jbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemU7XG4gICAgY2FzZSAnZXhjbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCAtIHN0YXRlLnNlbGVjdGlvbi5leGNsdWRlZC5zaXplO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWZyZXNoUmVzdWx0V2l0aDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBzb3VyY2U6IFJpdlRhYmxlLlNvdXJjZTxSLCBDLCBGPixcbiAgbW9zdFJlY2VudEFjdGlvbjogUml2VGFibGUuQWN0aW9uPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHlpZWxkIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsb2FkOiB7XG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSxcbiAgfTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzb3VyY2Uoc3RhdGUucXVlcnksIG1vc3RSZWNlbnRBY3Rpb24pO1xuICAgIHlpZWxkIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZDoge1xuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICB9LFxuICAgICAgcmVzdWx0LFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkOiB7XG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBpZDogUlsnaWQnXSxcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gIGNvbnRpZ3VvdXM6IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoc2VsZWN0ZWQpIHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBuZXcgU2V0PFJbJ2lkJ10+KFtpZF0pO1xuICAgIGlmIChjb250aWd1b3VzICYmIHN0YXRlLnNlbGVjdGlvbi5tb3N0UmVjZW50bHlTZWxlY3RlZCkge1xuICAgICAgY29uc3Qgc3RhcnRJZHggPSBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLmZpbmRJbmRleChcbiAgICAgICAgcm93ID0+IHJvdy5pZCA9PT0gc3RhdGUuc2VsZWN0aW9uLm1vc3RSZWNlbnRseVNlbGVjdGVkLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZElkeCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZmluZEluZGV4KFxuICAgICAgICByb3cgPT4gcm93LmlkID09PSBpZCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZW9mIHN0YXJ0SWR4ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZW5kSWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCBpID0gTWF0aC5taW4oc3RhcnRJZHgsIGVuZElkeCk7XG4gICAgICAgICAgaSA8PSBNYXRoLm1heChzdGFydElkeCwgZW5kSWR4KTtcbiAgICAgICAgICBpKytcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV3U2VsZWN0aW9uLmFkZChzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhW2ldLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IGlkLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWRdLCBbLi4ubmV3U2VsZWN0aW9uXSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoXG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZShbLi4uc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkXSwgWy4uLm5ld1NlbGVjdGlvbl0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgIG1vc3RSZWNlbnRseVNlbGVjdGVkOiBudWxsLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UoWy4uLnN0YXRlLnNlbGVjdGlvbi5pbmNsdWRlZF0sIFtpZF0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtb2RlOiAnZXhjbHVkZScsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVkOiBuZXcgU2V0KHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWRdLCBbaWRdKSksXG4gICAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVQYWdlU2VsZWN0ZWQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgaXNQYWdlRnVsbHlTZWxlY3RlZCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZXZlcnkoKHsgaWQgfSkgPT5cbiAgICBpc1Jvd1NlbGVjdGVkKHN0YXRlLCBpZCksXG4gICk7XG4gIHJldHVybiBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLnJlZHVjZSgoYWNjdW11bGF0ZWRTdGF0ZSwgcm93KSA9PiB7XG4gICAgcmV0dXJuIHNldFJvd1NlbGVjdGVkKFxuICAgICAgYWNjdW11bGF0ZWRTdGF0ZSxcbiAgICAgIHJvdy5pZCxcbiAgICAgICFpc1BhZ2VGdWxseVNlbGVjdGVkLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiB0b2dnbGVBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoaXNBbGxTZWxlY3RlZChzdGF0ZSkgPT09IHRydWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGNvbHVtbjogQyk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBxdWVyeToge1xuICAgICAgICAuLi5zdGF0ZS5xdWVyeSxcbiAgICAgICAgb3JkZXI6XG4gICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBxdWVyeToge1xuICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICBvcmRlcjoge1xuICAgICAgICBjb2x1bW4sXG4gICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWR1Y2U8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgYWN0aW9uOiBSaXZUYWJsZS5BY3Rpb248UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIHNvdXJjZTogUml2VGFibGUuU291cmNlPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlICdsb2FkJzpcbiAgICAgIHlpZWxkKiByZWZyZXNoUmVzdWx0V2l0aChzdGF0ZSwgc291cmNlLCBhY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDaGFuZ2UnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgICAgb3JkZXI6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDb2x1bW5Ub2dnbGUnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB0b2dnbGVDb2x1bW5PcmRlcihzdGF0ZSwgYWN0aW9uLmNvbHVtbiksXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlYXJjaENoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnaW5hdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwcmV2aW91c1BhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldFByZXZpb3VzUGFnZShzdGF0ZSkgPz8gMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbmV4dFBhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldE5leHRQYWdlKHN0YXRlKSA/PyBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGFjdGlvbi5wYWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYWdlU2l6ZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBhY3Rpb24uc2l6ZSxcbiAgICAgICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZmlsdGVyc0NoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBmaWx0ZXJzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGVjdGlvbjoge1xuICAgICAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICBpbmNsdWRlZDogbmV3IFNldCgpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtblNldHRpbmdzQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICAgIGNvbHVtblNldHRpbmdzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5QaW5DaGFuZ2UnOlxuICAgICAgeWllbGQgY2hhbmdlQ29sdW1uUGluKHN0YXRlLCBjb2x1bW5zLCBhY3Rpb24uY29sdW1uLCBhY3Rpb24ucGlubmVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbk9yZGVyQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbk9yZGVyKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGFjdGlvbi5uZXdJbmRleCxcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5FbmFibGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbkVuYWJsZWQoc3RhdGUsIGNvbHVtbnMsIGFjdGlvbi5jb2x1bW4sIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbldpZHRoQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbldpZHRoKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLmNvbHVtbixcbiAgICAgICAgYWN0aW9uLnByZWZlcnJlZFdpZHRoLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlbGVjdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3Rpb246IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Jvd1NlbGVjdGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHNldFJvd1NlbGVjdGVkKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgYWN0aW9uLmlkLFxuICAgICAgICBhY3Rpb24uc2VsZWN0ZWQsXG4gICAgICAgIGFjdGlvbi5jb250aWd1b3VzLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3BhZ2VTZWxlY3RlZENoYW5nZSc6XG4gICAgICB5aWVsZCB0b2dnbGVQYWdlU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYWxsU2VsZWN0ZWRDaGFuZ2UnOlxuICAgICAgeWllbGQgdG9nZ2xlQWxsU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cbiJdfQ==