@annalib/anna-core 4.4.4 → 4.5.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.
Files changed (27) hide show
  1. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +4 -4
  2. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +1 -1
  3. package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +39 -41
  4. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +34 -47
  5. package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +77 -5
  6. package/esm2020/lib/anna-core.module.mjs +4 -9
  7. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +14 -16
  8. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +33 -27
  9. package/esm2020/public-api.mjs +1 -3
  10. package/fesm2015/annalib-anna-core.mjs +199 -467
  11. package/fesm2015/annalib-anna-core.mjs.map +1 -1
  12. package/fesm2020/annalib-anna-core.mjs +199 -463
  13. package/fesm2020/annalib-anna-core.mjs.map +1 -1
  14. package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +1 -1
  15. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +2 -2
  16. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +4 -4
  17. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +15 -1
  18. package/lib/anna-core.module.d.ts +11 -12
  19. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +13 -4
  20. package/package.json +2 -2
  21. package/public-api.d.ts +0 -2
  22. package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +25 -0
  23. package/src/lib/anna-common-scss/_generic-table-common.scss +59 -0
  24. package/esm2020/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +0 -282
  25. package/esm2020/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +0 -41
  26. package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +0 -34
  27. package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +0 -7
@@ -33,7 +33,6 @@ import { AnnaFixedRowSizeTableVirtualScrollStrategyDirective } from './anna-gene
33
33
  import { AnnaVirtualTableDirective } from './anna-generic-table-lib/directives/anna-virtual-table';
34
34
  import { AnnaTypeofDataPipe } from './anna-core-shared-lib/pipes/annaTypeOfData.pipe';
35
35
  import { AnnaReplaceCharPipe } from './anna-core-shared-lib/pipes/annaReplaceChar.pipe';
36
- import { DigitOnlyDirective } from './anna-core-shared-lib/directives/digits-only/digits-only.directive';
37
36
  import * as i0 from "@angular/core";
38
37
  import * as i1 from "ng-circle-progress";
39
38
  export class AnnaCoreModule {
@@ -58,8 +57,7 @@ AnnaCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
58
57
  AnnaVirtualTableDirective,
59
58
  AnnaNonEditableGenericTableComponent,
60
59
  AnnaTableVirtualScrollViewportComponent,
61
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
62
- DigitOnlyDirective], imports: [CommonModule,
60
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective], imports: [CommonModule,
63
61
  NgbModule,
64
62
  FormsModule,
65
63
  MatRadioModule,
@@ -86,8 +84,7 @@ AnnaCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
86
84
  AnnaVirtualTableDirective,
87
85
  AnnaNonEditableGenericTableComponent,
88
86
  AnnaTableVirtualScrollViewportComponent,
89
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
90
- DigitOnlyDirective] });
87
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective] });
91
88
  AnnaCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaCoreModule, imports: [[
92
89
  CommonModule,
93
90
  NgbModule,
@@ -131,7 +128,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
131
128
  AnnaNonEditableGenericTableComponent,
132
129
  AnnaTableVirtualScrollViewportComponent,
133
130
  AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
134
- DigitOnlyDirective
135
131
  ],
136
132
  imports: [
137
133
  CommonModule,
@@ -172,9 +168,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
172
168
  AnnaVirtualTableDirective,
173
169
  AnnaNonEditableGenericTableComponent,
174
170
  AnnaTableVirtualScrollViewportComponent,
175
- AnnaFixedRowSizeTableVirtualScrollStrategyDirective,
176
- DigitOnlyDirective
171
+ AnnaFixedRowSizeTableVirtualScrollStrategyDirective
177
172
  ]
178
173
  }]
179
174
  }] });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb3JlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCwwQ0FBMEM7QUFDMUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0saUhBQWlILENBQUM7QUFDekssT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkZBQTZGLENBQUM7QUFDNUks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IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9yYWRpb1wiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcclxuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBOZ3hTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci1zbGlkZXIvbmd4LXNsaWRlcic7XHJcbmltcG9ydCB7IE5neFNrZWxldG9uTG9hZGVyTW9kdWxlIH0gZnJvbSAnbmd4LXNrZWxldG9uLWxvYWRlcic7XHJcbmltcG9ydCB7IE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICduZy1jaXJjbGUtcHJvZ3Jlc3MnO1xyXG5cclxuLy9Bbm5hLWNvcmUgVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEFubmFGaWx0ZXJTZWFyY2hlZFRleHRQaXBlIH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9waXBlcy9hbm5hRmlsdGVyU2VhcmNoZWRUZXh0LnBpcGUnO1xyXG5pbXBvcnQgeyBBbm5hTm9EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtbm8tZGF0YS9hbm5hLW5vLWRhdGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYUljb25Db2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2FubmEtY29yZS1zaGFyZWQtbGliL2NvbXBvbmVudHMvYW5uYS1pY29uLWNvbHVtbi9hbm5hLWljb24tY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFCdXllckFwcHJvdmFsSWNvblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtYnV5ZXItYXBwcm92YWwtaWNvbi10ZW1wbGF0ZS9hbm5hLWJ1eWVyLWFwcHJvdmFsLWljb24tdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYUxpdmVJY29uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2FubmEtY29yZS1zaGFyZWQtbGliL2NvbXBvbmVudHMvYW5uYS1saXZlLWljb24tdGVtcGxhdGUvYW5uYS1saXZlLWljb24tdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYU5vdGlmeUljb25UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvY29tcG9uZW50cy9hbm5hLW5vdGlmeS1pY29uLXRlbXBsYXRlL2FubmEtbm90aWZ5LWljb24tdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYVBheUZvclBlcmZvcm1hbmNlSWNvblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtcGF5LWZvci1wZXJmb3JtYW5jZS1pY29uLXRlbXBsYXRlL2FubmEtcGF5LWZvci1wZXJmb3JtYW5jZS1pY29uLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFSZWplY3RlZEljb25UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvY29tcG9uZW50cy9hbm5hLXJlamVjdGVkLWljb24tdGVtcGxhdGUvYW5uYS1yZWplY3RlZC1pY29uLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IHNob3dFbGxpcHNpc1RleHRPbkhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9kaXJlY3RpdmVzL3Nob3ctZWxsaXBzaXMtdGV4dC9zaG93LWVsbGlwc2lzLXRleHQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQW5uYUNvbnZlcnRaZXJvT3JOdWxsT3JVbmRlZmluZWRQaXBlIH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9waXBlcy9hbm5hQ29udmVydFplcm9Pck51bGxPclVuZGVmaW5lZC5waXBlJztcclxuXHJcbi8vQW5uYS1kcm9wZG93bi1saWIgVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzIFxyXG5pbXBvcnQgeyBBbm5hV2Vla0NhbGVuZGFyQ29tcG9uZW50ICB9IGZyb20gJy4vYW5uYS1kcm9wZG93bi1saWIvY29tcG9uZW50cy9hbm5hLXdlZWstY2FsZW5kYXItZmlsdGVyL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYUNhbGVuZGFyRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtY2FsZW5kYXItZmlsdGVyL2FubmEtY2FsZW5kYXItZmlsdGVyLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLy9Bbm5hLWdlbmVyaWMtdGFibGUgVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbm5hU29ydENvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtc29ydC9hbm5hLXNvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYVRhYmxlVmlydHVhbFNjcm9sbFZpZXdwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS10YWJsZS12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydC9hbm5hLXRhYmxlLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFGaXhlZFJvd1NpemVUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneURpcmVjdGl2ZSB9IGZyb20gJy4vYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9kaXJlY3RpdmVzL2FubmEtZml4ZWQtcm93LXNpemUtdGFibGUtdmlydHVhbC1zY3JvbGwtc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBBbm5hVmlydHVhbFRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2RpcmVjdGl2ZXMvYW5uYS12aXJ0dWFsLXRhYmxlJztcclxuaW1wb3J0IHsgQW5uYVR5cGVvZkRhdGFQaXBlIH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9waXBlcy9hbm5hVHlwZU9mRGF0YS5waXBlJztcclxuaW1wb3J0IHsgQW5uYVJlcGxhY2VDaGFyUGlwZSB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvcGlwZXMvYW5uYVJlcGxhY2VDaGFyLnBpcGUnO1xyXG5pbXBvcnQgeyBEaWdpdE9ubHlEaXJlY3RpdmUgfSBmcm9tICcuL2FubmEtY29yZS1zaGFyZWQtbGliL2RpcmVjdGl2ZXMvZGlnaXRzLW9ubHkvZGlnaXRzLW9ubHkuZGlyZWN0aXZlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQW5uYU5vRGF0YUNvbXBvbmVudCxcclxuICAgIEFubmFGaWx0ZXJTZWFyY2hlZFRleHRQaXBlLFxyXG4gICAgQW5uYUNvbnZlcnRaZXJvT3JOdWxsT3JVbmRlZmluZWRQaXBlLFxyXG4gICAgQW5uYVR5cGVvZkRhdGFQaXBlLFxyXG4gICAgQW5uYUZpbHRlclNlYXJjaGVkVGV4dFBpcGUsXHJcbiAgICBBbm5hUmVwbGFjZUNoYXJQaXBlLFxyXG4gICAgQW5uYUJ1eWVyQXBwcm92YWxJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hTGl2ZUljb25UZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIEFubmFOb3RpZnlJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hUGF5Rm9yUGVyZm9ybWFuY2VJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hUmVqZWN0ZWRJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlckRpcmVjdGl2ZSxcclxuICAgIEFubmFJY29uQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgQW5uYVdlZWtDYWxlbmRhckNvbXBvbmVudCxcclxuICAgIEFubmFDYWxlbmRhckZpbHRlckNvbXBvbmVudCxcclxuICAgIEFubmFTb3J0Q29tcG9uZW50LFxyXG4gICAgQW5uYVZpcnR1YWxUYWJsZURpcmVjdGl2ZSxcclxuICAgIEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCxcclxuICAgIEFubmFUYWJsZVZpcnR1YWxTY3JvbGxWaWV3cG9ydENvbXBvbmVudCxcclxuICAgIEFubmFGaXhlZFJvd1NpemVUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneURpcmVjdGl2ZSxcclxuICAgIERpZ2l0T25seURpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTmdiTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRSYWRpb01vZHVsZSxcclxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTmd4U2xpZGVyTW9kdWxlLFxyXG4gICAgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLmZvclJvb3Qoe1xyXG4gICAgICByYWRpdXM6IDEwMCxcclxuICAgICAgb3V0ZXJTdHJva2VXaWR0aDogMTYsXHJcbiAgICAgIGlubmVyU3Ryb2tlV2lkdGg6IDgsXHJcbiAgICAgIG91dGVyU3Ryb2tlQ29sb3I6ICcjNzhDMDAwJyxcclxuICAgICAgaW5uZXJTdHJva2VDb2xvcjogJyNDN0U1OTYnLFxyXG4gICAgICBhbmltYXRpb25EdXJhdGlvbjogMzAwLFxyXG4gICAgfSksXHJcbiAgXSxcclxuICBleHBvcnRzIDogW1xyXG4gICAgQW5uYU5vRGF0YUNvbXBvbmVudCxcclxuICAgIEFubmFGaWx0ZXJTZWFyY2hlZFRleHRQaXBlLFxyXG4gICAgQW5uYUNvbnZlcnRaZXJvT3JOdWxsT3JVbmRlZmluZWRQaXBlLFxyXG4gICAgQW5uYVR5cGVvZkRhdGFQaXBlLFxyXG4gICAgQW5uYVJlcGxhY2VDaGFyUGlwZSxcclxuICAgIEFubmFGaWx0ZXJTZWFyY2hlZFRleHRQaXBlLFxyXG4gICAgQW5uYUJ1eWVyQXBwcm92YWxJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hTGl2ZUljb25UZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIEFubmFOb3RpZnlJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hUGF5Rm9yUGVyZm9ybWFuY2VJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hUmVqZWN0ZWRJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlckRpcmVjdGl2ZSxcclxuICAgIEFubmFJY29uQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgQW5uYVdlZWtDYWxlbmRhckNvbXBvbmVudCxcclxuICAgIEFubmFDYWxlbmRhckZpbHRlckNvbXBvbmVudCxcclxuICAgIEFubmFTb3J0Q29tcG9uZW50LFxyXG4gICAgQW5uYVZpcnR1YWxUYWJsZURpcmVjdGl2ZSxcclxuICAgIEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCxcclxuICAgIEFubmFUYWJsZVZpcnR1YWxTY3JvbGxWaWV3cG9ydENvbXBvbmVudCxcclxuICAgIEFubmFGaXhlZFJvd1NpemVUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneURpcmVjdGl2ZSxcclxuICAgIERpZ2l0T25seURpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFDb3JlTW9kdWxlIHsgfVxyXG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb3JlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCwwQ0FBMEM7QUFDMUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0saUhBQWlILENBQUM7QUFDekssT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkZBQTZGLENBQUM7QUFDNUks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O3dCQUMxQyxpQ0FBaUM7d0JBQ2pDLGdDQUFnQzt3QkFDaEMsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsaUJBQWlCO3dCQUNqQix5QkFBeUI7d0JBQ3pCLG9DQUFvQzt3QkFDcEMsdUNBQXVDO3dCQUN2QyxtREFBbUQ7cUJBQ3BEO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixzQkFBc0IsQ0FBQyxPQUFPLENBQUM7NEJBQzdCLE1BQU0sRUFBRSxHQUFHOzRCQUNYLGdCQUFnQixFQUFFLEVBQUU7NEJBQ3BCLGdCQUFnQixFQUFFLENBQUM7NEJBQ25CLGdCQUFnQixFQUFFLFNBQVM7NEJBQzNCLGdCQUFnQixFQUFFLFNBQVM7NEJBQzNCLGlCQUFpQixFQUFFLEdBQUc7eUJBQ3ZCLENBQUM7cUJBQ0g7b0JBQ0QsT0FBTyxFQUFHO3dCQUNSLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixvQ0FBb0M7d0JBQ3BDLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLHNDQUFzQzt3QkFDdEMsNkJBQTZCO3dCQUM3QiwrQkFBK0I7d0JBQy9CLDBDQUEwQzt3QkFDMUMsaUNBQWlDO3dCQUNqQyxnQ0FBZ0M7d0JBQ2hDLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLGlCQUFpQjt3QkFDakIseUJBQXlCO3dCQUN6QixvQ0FBb0M7d0JBQ3BDLHVDQUF1Qzt3QkFDdkMsbURBQW1EO3FCQUNwRDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW9cIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgTmd4U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXItc2xpZGVyL25neC1zbGlkZXInO1xyXG5pbXBvcnQgeyBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSB9IGZyb20gJ25neC1za2VsZXRvbi1sb2FkZXInO1xyXG5pbXBvcnQgeyBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlIH0gZnJvbSAnbmctY2lyY2xlLXByb2dyZXNzJztcclxuXHJcbi8vQW5uYS1jb3JlIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VhcmNoZWRUZXh0UGlwZSB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvcGlwZXMvYW5uYUZpbHRlclNlYXJjaGVkVGV4dC5waXBlJztcclxuaW1wb3J0IHsgQW5uYU5vRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvY29tcG9uZW50cy9hbm5hLW5vLWRhdGEvYW5uYS1uby1kYXRhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFJY29uQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtaWNvbi1jb2x1bW4vYW5uYS1pY29uLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbm5hQnV5ZXJBcHByb3ZhbEljb25UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvY29tcG9uZW50cy9hbm5hLWJ1eWVyLWFwcHJvdmFsLWljb24tdGVtcGxhdGUvYW5uYS1idXllci1hcHByb3ZhbC1pY29uLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFMaXZlSWNvblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9jb21wb25lbnRzL2FubmEtbGl2ZS1pY29uLXRlbXBsYXRlL2FubmEtbGl2ZS1pY29uLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFOb3RpZnlJY29uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2FubmEtY29yZS1zaGFyZWQtbGliL2NvbXBvbmVudHMvYW5uYS1ub3RpZnktaWNvbi10ZW1wbGF0ZS9hbm5hLW5vdGlmeS1pY29uLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFQYXlGb3JQZXJmb3JtYW5jZUljb25UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvY29tcG9uZW50cy9hbm5hLXBheS1mb3ItcGVyZm9ybWFuY2UtaWNvbi10ZW1wbGF0ZS9hbm5hLXBheS1mb3ItcGVyZm9ybWFuY2UtaWNvbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbm5hUmVqZWN0ZWRJY29uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2FubmEtY29yZS1zaGFyZWQtbGliL2NvbXBvbmVudHMvYW5uYS1yZWplY3RlZC1pY29uLXRlbXBsYXRlL2FubmEtcmVqZWN0ZWQtaWNvbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvZGlyZWN0aXZlcy9zaG93LWVsbGlwc2lzLXRleHQvc2hvdy1lbGxpcHNpcy10ZXh0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEFubmFDb252ZXJ0WmVyb09yTnVsbE9yVW5kZWZpbmVkUGlwZSB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvcGlwZXMvYW5uYUNvbnZlcnRaZXJvT3JOdWxsT3JVbmRlZmluZWQucGlwZSc7XHJcblxyXG4vL0FubmEtZHJvcGRvd24tbGliIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50cyBcclxuaW1wb3J0IHsgQW5uYVdlZWtDYWxlbmRhckNvbXBvbmVudCAgfSBmcm9tICcuL2FubmEtZHJvcGRvd24tbGliL2NvbXBvbmVudHMvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci9hbm5hLXdlZWstY2FsZW5kYXItZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFDYWxlbmRhckZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1kcm9wZG93bi1saWIvY29tcG9uZW50cy9hbm5hLWNhbGVuZGFyLWZpbHRlci9hbm5hLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8vQW5uYS1nZW5lcmljLXRhYmxlIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQW5uYVNvcnRDb21wb25lbnQgfSBmcm9tICcuL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLXNvcnQvYW5uYS1zb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFUYWJsZVZpcnR1YWxTY3JvbGxWaWV3cG9ydENvbXBvbmVudCB9IGZyb20gJy4vYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtdGFibGUtdmlydHVhbC1zY3JvbGwtdmlld3BvcnQvYW5uYS10YWJsZS12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbm5hRml4ZWRSb3dTaXplVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3lEaXJlY3RpdmUgfSBmcm9tICcuL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvZGlyZWN0aXZlcy9hbm5hLWZpeGVkLXJvdy1zaXplLXRhYmxlLXZpcnR1YWwtc2Nyb2xsLXN0cmF0ZWd5JztcclxuaW1wb3J0IHsgQW5uYVZpcnR1YWxUYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9kaXJlY3RpdmVzL2FubmEtdmlydHVhbC10YWJsZSc7XHJcbmltcG9ydCB7IEFubmFUeXBlb2ZEYXRhUGlwZSB9IGZyb20gJy4vYW5uYS1jb3JlLXNoYXJlZC1saWIvcGlwZXMvYW5uYVR5cGVPZkRhdGEucGlwZSc7XHJcbmltcG9ydCB7IEFubmFSZXBsYWNlQ2hhclBpcGUgfSBmcm9tICcuL2FubmEtY29yZS1zaGFyZWQtbGliL3BpcGVzL2FubmFSZXBsYWNlQ2hhci5waXBlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQW5uYU5vRGF0YUNvbXBvbmVudCxcclxuICAgIEFubmFGaWx0ZXJTZWFyY2hlZFRleHRQaXBlLFxyXG4gICAgQW5uYUNvbnZlcnRaZXJvT3JOdWxsT3JVbmRlZmluZWRQaXBlLFxyXG4gICAgQW5uYVR5cGVvZkRhdGFQaXBlLFxyXG4gICAgQW5uYUZpbHRlclNlYXJjaGVkVGV4dFBpcGUsXHJcbiAgICBBbm5hUmVwbGFjZUNoYXJQaXBlLFxyXG4gICAgQW5uYUJ1eWVyQXBwcm92YWxJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hTGl2ZUljb25UZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIEFubmFOb3RpZnlJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hUGF5Rm9yUGVyZm9ybWFuY2VJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hUmVqZWN0ZWRJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlckRpcmVjdGl2ZSxcclxuICAgIEFubmFJY29uQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgQW5uYVdlZWtDYWxlbmRhckNvbXBvbmVudCxcclxuICAgIEFubmFDYWxlbmRhckZpbHRlckNvbXBvbmVudCxcclxuICAgIEFubmFTb3J0Q29tcG9uZW50LFxyXG4gICAgQW5uYVZpcnR1YWxUYWJsZURpcmVjdGl2ZSxcclxuICAgIEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCxcclxuICAgIEFubmFUYWJsZVZpcnR1YWxTY3JvbGxWaWV3cG9ydENvbXBvbmVudCxcclxuICAgIEFubmFGaXhlZFJvd1NpemVUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneURpcmVjdGl2ZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE5nYk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0UmFkaW9Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE5neFNsaWRlck1vZHVsZSxcclxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxyXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxyXG4gICAgTmdDaXJjbGVQcm9ncmVzc01vZHVsZS5mb3JSb290KHtcclxuICAgICAgcmFkaXVzOiAxMDAsXHJcbiAgICAgIG91dGVyU3Ryb2tlV2lkdGg6IDE2LFxyXG4gICAgICBpbm5lclN0cm9rZVdpZHRoOiA4LFxyXG4gICAgICBvdXRlclN0cm9rZUNvbG9yOiAnIzc4QzAwMCcsXHJcbiAgICAgIGlubmVyU3Ryb2tlQ29sb3I6ICcjQzdFNTk2JyxcclxuICAgICAgYW5pbWF0aW9uRHVyYXRpb246IDMwMCxcclxuICAgIH0pLFxyXG4gIF0sXHJcbiAgZXhwb3J0cyA6IFtcclxuICAgIEFubmFOb0RhdGFDb21wb25lbnQsXHJcbiAgICBBbm5hRmlsdGVyU2VhcmNoZWRUZXh0UGlwZSxcclxuICAgIEFubmFDb252ZXJ0WmVyb09yTnVsbE9yVW5kZWZpbmVkUGlwZSxcclxuICAgIEFubmFUeXBlb2ZEYXRhUGlwZSxcclxuICAgIEFubmFSZXBsYWNlQ2hhclBpcGUsXHJcbiAgICBBbm5hRmlsdGVyU2VhcmNoZWRUZXh0UGlwZSxcclxuICAgIEFubmFCdXllckFwcHJvdmFsSWNvblRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgQW5uYUxpdmVJY29uVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBBbm5hTm90aWZ5SWNvblRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgQW5uYVBheUZvclBlcmZvcm1hbmNlSWNvblRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgQW5uYVJlamVjdGVkSWNvblRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgc2hvd0VsbGlwc2lzVGV4dE9uSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBBbm5hSWNvbkNvbHVtbkNvbXBvbmVudCxcclxuICAgIEFubmFXZWVrQ2FsZW5kYXJDb21wb25lbnQsXHJcbiAgICBBbm5hQ2FsZW5kYXJGaWx0ZXJDb21wb25lbnQsXHJcbiAgICBBbm5hU29ydENvbXBvbmVudCxcclxuICAgIEFubmFWaXJ0dWFsVGFibGVEaXJlY3RpdmUsXHJcbiAgICBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQsXHJcbiAgICBBbm5hVGFibGVWaXJ0dWFsU2Nyb2xsVmlld3BvcnRDb21wb25lbnQsXHJcbiAgICBBbm5hRml4ZWRSb3dTaXplVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3lEaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hQ29yZU1vZHVsZSB7IH1cclxuIl19
@@ -3,7 +3,7 @@ import { DatePipe } from "@angular/common";
3
3
  import { Component, EventEmitter, Input, Output } from "@angular/core";
4
4
  // Third party import statements
5
5
  import { NgbCalendar, NgbDate, NgbDatepickerConfig } from "@ng-bootstrap/ng-bootstrap";
6
- import dayjs from "dayjs";
6
+ import moment from "moment";
7
7
  import { AnnaDateTimeFormatService } from '../../../anna-core-shared-lib/services/anna-date-time-format.service';
8
8
  import { AnnaGlobalConfigService } from '../../../anna-core-shared-lib/services/anna-global-config.service';
9
9
  import * as i0 from "@angular/core";
@@ -53,19 +53,17 @@ export class AnnaWeekCalendarComponent {
53
53
  }
54
54
  }
55
55
  getWeekNumber(week, firstDayOfWeek) {
56
- const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), "MM/DD/YYYY");
56
+ const weekStartDate = moment(convertNgbDateToMoment(week[0]), "MM/DD/YYYY");
57
57
  const weekYear = weekStartDate.year();
58
- const yearStartDate = dayjs(`01/01/${weekYear}`, "MM/DD/YYYY");
58
+ const yearStartDate = moment(`01/01/${weekYear}`, "MM/DD/YYYY");
59
59
  const weekDay = yearStartDate.day();
60
60
  const noOfDays = weekStartDate.diff(yearStartDate, "d") + 1;
61
61
  function convertNgbDateToMoment(ngbDate) {
62
- let formatType = "MM/DD/YYYY";
63
- let converted = null;
64
- if (ngbDate && ngbDate.month && ngbDate.day && ngbDate.year) {
65
- converted = ngbDate.month + "/" + ngbDate.day + "/" + ngbDate.year;
66
- converted = dayjs(converted).format(formatType);
67
- }
68
- return converted;
62
+ let converted = moment();
63
+ converted.month(ngbDate.month - 1);
64
+ converted.date(ngbDate.day);
65
+ converted.year(ngbDate.year);
66
+ return converted.format("MM/DD/YYYY");
69
67
  }
70
68
  function checkIfYearIsBroadcastLeapYear() {
71
69
  let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;
@@ -140,15 +138,15 @@ export class AnnaWeekCalendarComponent {
140
138
  this.toDate = this.constructEndDate(dateObject)(constructDate);
141
139
  }
142
140
  if (this.disabledDates.length > 0) {
143
- let dayjsStartDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), "MM/DD/YYYY");
144
- let dayjsEndDate = dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), "MM/DD/YYYY");
141
+ let momentStartDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), "MM/DD/YYYY");
142
+ let momentEndDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), "MM/DD/YYYY");
145
143
  let ngbDate;
146
- while (!dayjsStartDate.isSame(dayjsEndDate)) {
147
- ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, "MM/DD/YYYY");
144
+ while (!momentStartDate.isSame(momentEndDate)) {
145
+ ngbDate = this.annaDateTimeFormatService.convertToNgbDate(momentStartDate, "MM/DD/YYYY");
148
146
  if (this.checkIfDateIsDisabled(ngbDate)) {
149
147
  break;
150
148
  }
151
- dayjsStartDate.add(1, "d");
149
+ momentStartDate.add(1, "d");
152
150
  }
153
151
  let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);
154
152
  let constructDate = this.buildDate(newDateObject);
@@ -361,4 +359,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
361
359
  type: Output,
362
360
  args: ["toggle-calendar"]
363
361
  }] } });
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFeEgsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFILE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUcxQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQzs7Ozs7OztBQUU1RyxpQ0FBaUM7QUFTakMsTUFBTSxPQUFPLHlCQUF5QjtJQWdFcEMsWUFDVSxRQUFxQixFQUNyQixnQkFBcUMsRUFDckMseUJBQW9ELEVBQ3BELG1CQUE0QztRQUg1QyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsOEJBQXlC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LENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxhQUFrQjtRQUNoQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7c0hBdllVLHlCQUF5QjswR0FBekIseUJBQXlCLDZhQ3JCdEMsd2lLQWlJQTsyRkQ1R2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLG9DQUFvQztrTkF3QjFCLGdCQUFnQjtzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQUNBLGVBQWU7c0JBQWhDLEtBQUs7dUJBQUMsU0FBUztnQkFDUyxhQUFhO3NCQUFyQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDZCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQVF5QixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFDWix3QkFBd0I7c0JBQXhDLE1BQU07dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiRGF0ZSwgTmdiRGF0ZXBpY2tlckNvbmZpZywgTmdiRGF0ZVN0cnVjdCwgTmdiSW5wdXREYXRlcGlja2VyIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IHsgV2Vla09iamVjdCB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdlbmVyaWMtZGF0YS10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgSVdlZWtDYWxlbmRhciB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdsb2JhbC1kcm9wZG93bi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hR2xvYmFsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZ2xvYmFsLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hbm5hLXdlZWstY2FsZW5kYXItZmlsdGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hV2Vla0NhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIGZyb21EYXRlOiBOZ2JEYXRlIHwgbnVsbDtcclxuICBob3ZlcmVkRGF0ZTogTmdiRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHRvRGF0ZTogTmdiRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHRvZGF5OiBOZ2JEYXRlO1xyXG5cclxuICBtb2RlbDogTmdiRGF0ZVN0cnVjdDtcclxuXHJcbiAgd2Vla051bWJlcnM6IHN0cmluZ1tdID0gW107XHJcbiAgcGlwZTogRGF0ZVBpcGU7XHJcbiAgZGF0ZVRvRGlzcGxheTogc3RyaW5nID0gXCJcIjtcclxuICB3ZWVrT2JqZWN0czogV2Vla09iamVjdFtdO1xyXG4gIG11bHRpU2VsZWN0RHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGF0ZXBpY2tlcjogTmdiSW5wdXREYXRlcGlja2VyO1xyXG4gIHByaXZhdGUgZm9ybWF0dGVyOiBhbnk7XHJcbiAgcHVibGljIGZvcm1hdHRlZFN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBmb3JtYXR0ZWRFbmREYXRlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjYWxlbmRhck1hcCA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGZsYWcxOiBib29sZWFuO1xyXG4gIHByaXZhdGUgZmxhZzI6IGJvb2xlYW47XHJcbiAgQElucHV0KFwiZnJvbS1kYXRlXCIpIHNlbGVjdGVkRnJvbURhdGU6IE5nYkRhdGVTdHJ1Y3Q7XHJcbiAgQElucHV0KFwidG8tZGF0ZVwiKSBzZWxlY3RlZEVuZERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XHJcbiAgQElucHV0KFwiZGlzYWJsZWQtZGF0ZXNcIikgZGlzYWJsZWREYXRlczogTmdiRGF0ZVtdID0gW107XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogYW55O1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU6IGFueTtcclxuXHJcbiAgZGlzYWJsZWRGdW5jOiBhbnk7XHJcbiAgc3RhdGU6IGFueTtcclxuXHJcbiAgLy9TZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVlcztcclxuICBwcml2YXRlIF9kZWZhdWx0VmFsdWVzOiBJV2Vla0NhbGVuZGFyO1xyXG5cclxuICBASW5wdXQoXCJ3ZWVrLWNhbGVuZGFyLWNvbmZpZ1wiKSBjb25maWc6IElXZWVrQ2FsZW5kYXI7XHJcbiAgQE91dHB1dChcImFwcGx5XCIpIGFwcGx5V2Vla0NhbGVuZGFyQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KFwidG9nZ2xlLWNhbGVuZGFyXCIpIGNhbGVuZGFyVG9nZ2xlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgLy9pZiBzb21lIHZhbHVlcyBhcmUgbm90IHNlbnQsIHNldHRpbmcgdGhlIGRlZmF1bHQgdmFsdWVzXHJcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWVzID0gdGhpcy5nbG9iYWxDb25maWdTZXJ2aWNlLmRlZmF1bHRXZWVrQ2FsZW5kYXJDb25maWc7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5fZGVmYXVsdFZhbHVlcywgLi4udGhpcy5jb25maWcgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuc2VsZWN0Q3VycmVudFdlZWspIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplV2Vla0RhdGEoKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSAmJiB0aGlzLnNlbGVjdFdlZWsodGhpcy5mcm9tRGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlZERhdGVzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGcm9tRGF0ZSAmJiB0aGlzLnNlbGVjdGVkRW5kRGF0ZSAmJiB0aGlzLmNvbmZpZykge1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdFdlZWsodGhpcy5mcm9tRGF0ZSk7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBOZ2JEYXRlLmZyb20odGhpcy5zZWxlY3RlZEZyb21EYXRlKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSBOZ2JEYXRlLmZyb20odGhpcy5zZWxlY3RlZEVuZERhdGUpO1xyXG4gICAgICB0aGlzLndlZWtOdW1iZXJHZW5lcmF0b3IoKTtcclxuICAgICAgdGhpcy5kaXNwbGF5VG9VSSgpO1xyXG4gICAgICB0aGlzLnNldENhbGVuZGFyTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWRGdW5jID0gKGRhdGU6IE5nYkRhdGUsIGN1cnJlbnQ6IHsgbW9udGg6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tJZkRhdGVJc0Rpc2FibGVkKGRhdGUpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhbGVuZGFyOiBOZ2JDYWxlbmRhcixcclxuICAgIHByaXZhdGUgZGF0ZVBpY2tlckNvbmZpZzogTmdiRGF0ZXBpY2tlckNvbmZpZyxcclxuICAgIHByaXZhdGUgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsQ29uZmlnU2VydmljZTogQW5uYUdsb2JhbENvbmZpZ1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuXHJcbiAgZ2V0V2Vla051bWJlcih3ZWVrOiBhbnksIGZpcnN0RGF5T2ZXZWVrOiBhbnkpIHtcclxuICAgIGNvbnN0IHdlZWtTdGFydERhdGUgPSBkYXlqcyhjb252ZXJ0TmdiRGF0ZVRvTW9tZW50KHdlZWtbMF0pLCBcIk1NL0REL1lZWVlcIik7XHJcbiAgICBjb25zdCB3ZWVrWWVhciA9IHdlZWtTdGFydERhdGUueWVhcigpO1xyXG4gICAgY29uc3QgeWVhclN0YXJ0RGF0ZSA9IGRheWpzKGAwMS8wMS8ke3dlZWtZZWFyfWAsIFwiTU0vREQvWVlZWVwiKTtcclxuICAgIGNvbnN0IHdlZWtEYXkgPSB5ZWFyU3RhcnREYXRlLmRheSgpO1xyXG5cclxuICAgIGNvbnN0IG5vT2ZEYXlzID0gd2Vla1N0YXJ0RGF0ZS5kaWZmKHllYXJTdGFydERhdGUsIFwiZFwiKSArIDE7XHJcblxyXG4gICAgZnVuY3Rpb24gY29udmVydE5nYkRhdGVUb01vbWVudChuZ2JEYXRlOiBOZ2JEYXRlKTogc3RyaW5nIHtcclxuICAgICAgbGV0IGZvcm1hdFR5cGUgPSBcIk1NL0REL1lZWVlcIjtcclxuICAgICAgbGV0IGNvbnZlcnRlZCA9IG51bGw7XHJcbiAgICAgIGlmKG5nYkRhdGUgJiYgbmdiRGF0ZS5tb250aCAmJiBuZ2JEYXRlLmRheSAmJiBuZ2JEYXRlLnllYXIpe1xyXG4gICAgICAgIGNvbnZlcnRlZCA9IG5nYkRhdGUubW9udGgrIFwiL1wiICsgIG5nYkRhdGUuZGF5ICsgXCIvXCIgKyBuZ2JEYXRlLnllYXI7XHJcbiAgICAgICAgY29udmVydGVkID0gZGF5anMoY29udmVydGVkKS5mb3JtYXQoZm9ybWF0VHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbnZlcnRlZDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjaGVja0lmWWVhcklzQnJvYWRjYXN0TGVhcFllYXIoKSB7XHJcbiAgICAgIGxldCBpc0xlYXBZZWFyID0gKHdlZWtZZWFyICUgNCA9PSAwICYmIHdlZWtZZWFyICUgMTAwICE9IDApIHx8IHdlZWtZZWFyICUgNDAwID09IDA7XHJcbiAgICAgIHJldHVybiAoaXNMZWFwWWVhciAmJiAod2Vla0RheSA9PSAwIHx8IHdlZWtEYXkgPT0gNikpIHx8ICghaXNMZWFwWWVhciAmJiB3ZWVrRGF5ID09IDApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzTGVhcFllYXIgPSBjaGVja0lmWWVhcklzQnJvYWRjYXN0TGVhcFllYXIoKTtcclxuICAgIGNvbnN0IGRpdmlkZXIgPSBpc0xlYXBZZWFyID8gNTMgOiA1MjtcclxuICAgIGNvbnN0IGFkZGVyID0gaXNMZWFwWWVhciA/IDIgOiAxO1xyXG5cclxuICAgIGxldCBicm9hZGNhc3ROdW1iZXJPZkRheXMgPSB3ZWVrRGF5ICsgbm9PZkRheXM7XHJcbiAgICBsZXQgYnJvYWRjYXN0V2Vla051bWJlciA9IGJyb2FkY2FzdE51bWJlck9mRGF5cyAlIDcgPiAwID8gYnJvYWRjYXN0TnVtYmVyT2ZEYXlzIC8gNyArIGFkZGVyIDogYnJvYWRjYXN0TnVtYmVyT2ZEYXlzIC8gNztcclxuXHJcbiAgICBpZiAoTWF0aC5mbG9vcihicm9hZGNhc3RXZWVrTnVtYmVyICUgZGl2aWRlcikgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGRpdmlkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihicm9hZGNhc3RXZWVrTnVtYmVyICUgZGl2aWRlcik7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBDSEFOR0VTQEFOTkFMSUIgQ2hhbmdlZCB0aGlzLlxyXG4gICAgLy8gdGhpcy5jYWxlbmRhcltcIl9fcHJvdG9fX1wiXS5nZXRXZWVrTnVtYmVyID0gdGhpcy5nZXRXZWVrTnVtYmVyO1xyXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMuY2FsZW5kYXIsIHtnZXRXZWVrTnVtYmVyOiB0aGlzLmdldFdlZWtOdW1iZXJ9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnNlbGVjdFdlZWsodGhpcy5mcm9tRGF0ZSk7XHJcbiAgICB0aGlzLnNldENhbGVuZGFyTWFwKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV2Vla0RhdGEoKSB7XHJcbiAgICB0aGlzLndlZWtPYmplY3RzID0gW107XHJcblxyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuICAgIHRoaXMudG9kYXkgPSB0aGlzLmNhbGVuZGFyLmdldFRvZGF5KCk7XHJcblxyXG4gICAgbGV0IGJhY2tEYXRlZFBlcmlvZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyRGV0YWlsc1wiKSB8fCAne30nKS5sb2NraW5nX3BlcmlvZF9kYXlzO1xyXG4gICAgaWYgKGJhY2tEYXRlZFBlcmlvZCA8IDApIHtcclxuICAgICAgbGV0IGRhdGU6IE5nYkRhdGUgPSB0aGlzLmNhbGVuZGFyLmdldFByZXYodGhpcy5jYWxlbmRhci5nZXRUb2RheSgpLCBcImRcIiwgTWF0aC5hYnMoYmFja0RhdGVkUGVyaW9kKSk7XHJcbiAgICAgIHRoaXMudG9kYXkgPSBOZ2JEYXRlLmZyb20oZGF0ZSk7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBOZ2JEYXRlLmZyb20oZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGlzYWJsZSBtb250aHMgYmVmb3JlIG51bWJlck9mTW9udGhzVG9FbmFibGVcclxuICAgIHRoaXMuZGF0ZVBpY2tlckNvbmZpZy5tYXJrRGlzYWJsZWQgPSAoZGF0ZTogTmdiRGF0ZVN0cnVjdCkgPT4ge1xyXG4gICAgICBsZXQgcHJldmlvdXNNb250aCA9IHRoaXMuY2FsZW5kYXIuZ2V0UHJldih0aGlzLnRvZGF5LCBcIm1cIiwgdGhpcy5jb25maWcubnVtYmVyT2ZNb250aHNUb0VuYWJsZUluUGFzdCk7XHJcbiAgICAgIGxldCBwcmV2aW91c0RheSA9IHRoaXMuY2FsZW5kYXIuZ2V0UHJldihwcmV2aW91c01vbnRoLCBcImRcIiwgMSk7XHJcbiAgICAgIHJldHVybiAhTmdiRGF0ZS5mcm9tKHByZXZpb3VzRGF5KS5iZWZvcmUoZGF0ZSk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5mb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlZERhdGVzKCk7XHJcbiAgICB0aGlzLmZsYWcxID0gZmFsc2U7XHJcbiAgICB0aGlzLmZsYWcyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RXZWVrKGRhdGU6IE5nYkRhdGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggLSAxLCBkYXRlLmRheSk7XHJcbiAgICBsZXQgY29uc3RydWN0RGF0ZSA9IHRoaXMuYnVpbGREYXRlKGRhdGVPYmplY3QpO1xyXG5cclxuICAgIGlmICghdGhpcy5jb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrcykge1xyXG4gICAgICAvL1NpbmdsZSB3ZWVrIHNlbGVjdGlvblxyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jb25zdHJ1Y3RTdGFydERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB0aGlzLndlZWtOdW1iZXJHZW5lcmF0b3IoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChkYXRlLmJlZm9yZSh0aGlzLmZyb21EYXRlKSkge1xyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSB0aGlzLmNvbnN0cnVjdFN0YXJ0RGF0ZShkYXRlT2JqZWN0KShjb25zdHJ1Y3REYXRlKTtcclxuICAgICAgICBpZiAodGhpcy5mbGFnMSkge1xyXG4gICAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNvbnN0cnVjdEVuZERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmxhZzEgPSAhdGhpcy5mbGFnMTtcclxuICAgICAgfSBlbHNlIGlmIChkYXRlLmFmdGVyKHRoaXMudG9EYXRlKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmZsYWcyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jb25zdHJ1Y3RTdGFydERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgICAgICAvL3RoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZsYWcyID0gIXRoaXMuZmxhZzI7XHJcbiAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNvbnN0cnVjdEVuZERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY29uc3RydWN0U3RhcnREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgZGF5anNTdGFydERhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudCh0aGlzLmZyb21EYXRlKSwgXCJNTS9ERC9ZWVlZXCIpO1xyXG4gICAgICAgIGxldCBkYXlqc0VuZERhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudCh0aGlzLnRvRGF0ZSksIFwiTU0vREQvWVlZWVwiKTtcclxuICAgICAgICBsZXQgbmdiRGF0ZTtcclxuICAgICAgICB3aGlsZSAoIWRheWpzU3RhcnREYXRlLmlzU2FtZShkYXlqc0VuZERhdGUpKSB7XHJcbiAgICAgICAgICBuZ2JEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoZGF5anNTdGFydERhdGUsIFwiTU0vREQvWVlZWVwiKTtcclxuICAgICAgICAgIGlmICh0aGlzLmNoZWNrSWZEYXRlSXNEaXNhYmxlZChuZ2JEYXRlKSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRheWpzU3RhcnREYXRlLmFkZCgxLCBcImRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdEYXRlT2JqZWN0ID0gbmV3IERhdGUobmdiRGF0ZS55ZWFyLCBuZ2JEYXRlLm1vbnRoIC0gMSwgbmdiRGF0ZS5kYXkgLSAxKTtcclxuICAgICAgICBsZXQgY29uc3RydWN0RGF0ZSA9IHRoaXMuYnVpbGREYXRlKG5ld0RhdGVPYmplY3QpO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKG5ld0RhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLndlZWtOdW1iZXJHZW5lcmF0b3IoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLnNob3dBc0Ryb3Bkb3duKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3ZWVrTnVtYmVyR2VuZXJhdG9yKCk6IHZvaWQge1xyXG4gICAgbGV0IGRhdGVzID0gW107XHJcbiAgICBsZXQgd2VlayA9IFtdO1xyXG5cclxuICAgIGxldCBzdGFydERhdGUgPSBOZ2JEYXRlLmZyb20odGhpcy5mcm9tRGF0ZSk7XHJcbiAgICBsZXQgZW5kRGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLnRvRGF0ZSk7XHJcblxyXG4gICAgd2Vlay5wdXNoKHN0YXJ0RGF0ZSk7XHJcbiAgICB3aGlsZSAoZW5kRGF0ZSAhPSBudWxsICYmICFzdGFydERhdGUuZXF1YWxzKGVuZERhdGUpKSB7XHJcbiAgICAgIGxldCBkYXRlID0gdGhpcy5jYWxlbmRhci5nZXROZXh0KHN0YXJ0RGF0ZSwgXCJkXCIsIDEpO1xyXG4gICAgICBzdGFydERhdGUgPSBkYXRlO1xyXG4gICAgICB3ZWVrLnB1c2goZGF0ZSk7XHJcblxyXG4gICAgICAvLyBDb2xsZWN0IGFsbCBkYXlzIGluIHdlZWsgdG8gY2FsY3VsYXRlIHRoZSB3ZWVrIG51bWJlclxyXG4gICAgICBpZiAod2Vlay5sZW5ndGggPT0gNykge1xyXG4gICAgICAgIGRhdGVzLnB1c2god2Vlayk7XHJcbiAgICAgICAgd2VlayA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoKCh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2VsZWN0ID8/IDApID4gMCAmJiBkYXRlcy5sZW5ndGggPiAodGhpcy5jb25maWcubWF4V2Vla3NUb1NlbGVjdCA/PyAwKSkpIHtcclxuICAgICAgZGF0ZXMuc3BsaWNlKCh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2VsZWN0ID8/IDApLCBkYXRlcy5sZW5ndGggLSAodGhpcy5jb25maWcubWF4V2Vla3NUb1NlbGVjdCA/PyAwKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZXMoZGF0ZXMpO1xyXG5cclxuICAgIHRoaXMud2Vla051bWJlcnMgPSBbXTtcclxuICAgIHRoaXMud2Vla09iamVjdHMgPSBbXTtcclxuICAgIGlmIChkYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGRhdGUgb2YgZGF0ZXMpIHtcclxuICAgICAgICB0aGlzLndlZWtOdW1iZXJzLnB1c2goXCIgV2VlayBcIiArIHRoaXMuY2FsZW5kYXIuZ2V0V2Vla051bWJlcihkYXRlLCB0aGlzLmNvbmZpZy5maXJzdERheU9mV2VlaykpO1xyXG4gICAgICAgIGxldCBkYXRlcyA9IHRoaXMuZm9ybWF0dGVyKGRhdGVbMF0sIGRhdGVbNl0pO1xyXG4gICAgICAgIGxldCBkYXRlT2JqZWN0cyA9IHsgc3RhcnREYXRlOiBkYXRlcy5mb3JtYXR0ZWRTdGFydERhdGUsIGVuZERhdGU6IGRhdGVzLmZvcm1hdHRlZEVuZERhdGUgfTtcclxuICAgICAgICB0aGlzLndlZWtPYmplY3RzLnB1c2goZGF0ZU9iamVjdHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc3BsYXlUb1VJKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZERhdGVzKGRhdGVzOiBhbnkpIHtcclxuICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlc1swXVswXTtcclxuICAgIHRoaXMudG9EYXRlID0gZGF0ZXNbZGF0ZXMubGVuZ3RoIC0gMV1bNl07XHJcbiAgfVxyXG5cclxuICBmb3JtYXR0ZWREYXRlcygpIHtcclxuICAgIGxldCBwaXBlID0gbmV3IERhdGVQaXBlKFwiZW4tVVNcIik7XHJcbiAgICBsZXQgdGhpc09iaiA9IHRoaXM7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGZyb21EYXRlOiBOZ2JEYXRlLCB0b0RhdGU6IE5nYkRhdGUpIHtcclxuICAgICAgbGV0IGZyb21EYXRlT2JqZWN0ID0gbmV3IERhdGUoZnJvbURhdGUueWVhciwgZnJvbURhdGUubW9udGggLSAxLCBmcm9tRGF0ZS5kYXkpO1xyXG4gICAgICBsZXQgdG9EYXRlT2JqZWN0ID0gbmV3IERhdGUodG9EYXRlLnllYXIsIHRvRGF0ZS5tb250aCAtIDEsIHRvRGF0ZS5kYXkpO1xyXG4gICAgICB0aGlzT2JqLmZvcm1hdHRlZFN0YXJ0RGF0ZSA9IHBpcGUudHJhbnNmb3JtKGZyb21EYXRlT2JqZWN0LCB0aGlzT2JqLmNvbmZpZy5kYXRlRm9ybWF0Rm9yUmVxdWVzdCk7XHJcbiAgICAgIHRoaXNPYmouZm9ybWF0dGVkRW5kRGF0ZSA9IHBpcGUudHJhbnNmb3JtKHRvRGF0ZU9iamVjdCwgdGhpc09iai5jb25maWcuZGF0ZUZvcm1hdEZvclJlcXVlc3QpO1xyXG5cclxuICAgICAgdGhpc09iai5kYXRlVG9EaXNwbGF5ID1cclxuICAgICAgICBwaXBlLnRyYW5zZm9ybShmcm9tRGF0ZU9iamVjdCwgdGhpc09iai5jb25maWcuZGF0ZUZvcm1hdFRvRGlzcGxheSkgK1xyXG4gICAgICAgIFwiIHRvIFwiICtcclxuICAgICAgICBwaXBlLnRyYW5zZm9ybSh0b0RhdGVPYmplY3QsIHRoaXNPYmouY29uZmlnLmRhdGVGb3JtYXRUb0Rpc3BsYXkpO1xyXG4gICAgICByZXR1cm4gdGhpc09iajtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5VG9VSSgpIHtcclxuICAgIGlmICghdGhpcy5jb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrcyAmJiB0aGlzLmZyb21EYXRlICYmIHRoaXMudG9EYXRlKSB7XHJcbiAgICAgIC8vIERpc3BsYXkgZm9yIG9ubHkgU2luZ2xlIFdlZWtcclxuICAgICAgdGhpcy5mb3JtYXR0ZXIodGhpcy5mcm9tRGF0ZSwgdGhpcy50b0RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRGlzcGxheSBmb3IgTXVsdGlwbGUgV2Vla3NcclxuICAgICAgaWYgKHRoaXMud2Vla051bWJlcnMubGVuZ3RoID4gKHRoaXMuY29uZmlnLm1heFdlZWtzVG9TaG93V2l0aFJlbWFpbmluZ0NvdW50ID8/IDApKSB7XHJcbiAgICAgICAgbGV0IHdlZWtEaXNwbGF5ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAodGhpcy5jb25maWcubWF4V2Vla3NUb1Nob3dXaXRoUmVtYWluaW5nQ291bnQgPz8gMCk7IGkrKykge1xyXG4gICAgICAgICAgd2Vla0Rpc3BsYXkucHVzaCh0aGlzLndlZWtOdW1iZXJzLnNoaWZ0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmVtYWluaW5nV2Vla3MgPSB0aGlzLndlZWtOdW1iZXJzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLndlZWtOdW1iZXJzID0gW107XHJcbiAgICAgICAgdGhpcy53ZWVrTnVtYmVycy5wdXNoKHdlZWtEaXNwbGF5ICsgXCIgK1wiICsgcmVtYWluaW5nV2Vla3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RTdGFydERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGZpcnN0RGF5T2ZXZWVrID0gdGhpcy5jb25maWcuZmlyc3REYXlPZldlZWs7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGNvbnN0cnVjdERhdGU6IGFueSkge1xyXG4gICAgICBsZXQgc3RhcnREYXkgPSBkYXRlLmdldERheSgpICE9IDAgPyAoZmlyc3REYXlPZldlZWsgPz8gMCkgLSBkYXRlLmdldERheSgpIDogLTY7XHJcbiAgICAgIHJldHVybiBjb25zdHJ1Y3REYXRlKHN0YXJ0RGF5KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RFbmREYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIGxldCBmaXJzdERheU9mV2VlayA9IHRoaXMuY29uZmlnLmZpcnN0RGF5T2ZXZWVrO1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjb25zdHJ1Y3REYXRlOiBhbnkpIHtcclxuICAgICAgbGV0IGVuZERheSA9IGRhdGUuZ2V0RGF5KCkgIT0gMCA/IChmaXJzdERheU9mV2VlayA/PyAwKSArIDYgLSBkYXRlLmdldERheSgpIDogMDtcclxuICAgICAgcmV0dXJuIGNvbnN0cnVjdERhdGUoZW5kRGF5KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBidWlsZERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXI6IG51bWJlcik6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgICAgbGV0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpICsgbnVtYmVyO1xyXG4gICAgICBjb25zdCBkYXRlT2JqZWN0ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRheSk7XHJcblxyXG4gICAgICBsZXQgbmdiRGF0ZU9iamVjdCA9IHt9IGFzIE5nYkRhdGU7XHJcbiAgICAgIG5nYkRhdGVPYmplY3QuZGF5ID0gZGF5O1xyXG5cclxuICAgICAgaWYgKG5nYkRhdGVPYmplY3QuZGF5ID4gMzEgfHwgbmdiRGF0ZU9iamVjdC5kYXkgPCAxKSB7XHJcbiAgICAgICAgbmdiRGF0ZU9iamVjdC5kYXkgPSBkYXRlT2JqZWN0LmdldERhdGUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbmdiRGF0ZU9iamVjdC5tb250aCA9IGRhdGVPYmplY3QuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgIG5nYkRhdGVPYmplY3QueWVhciA9IGRhdGVPYmplY3QuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgcmV0dXJuIE5nYkRhdGUuZnJvbShuZ2JEYXRlT2JqZWN0KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpc0hvdmVyZWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmZyb21EYXRlICYmICF0aGlzLnRvRGF0ZSAmJiB0aGlzLmhvdmVyZWREYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiYgZGF0ZS5iZWZvcmUodGhpcy5ob3ZlcmVkRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBpc0luc2lkZShkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMudG9EYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiYgZGF0ZS5iZWZvcmUodGhpcy50b0RhdGUpO1xyXG4gIH1cclxuXHJcbiAgaXNSYW5nZShkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHwgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHwgdGhpcy5pc0luc2lkZShkYXRlKSB8fCB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByZXZpb3VzV2VlaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZyb21EYXRlKSB7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jYWxlbmRhci5nZXRQcmV2KHRoaXMuZnJvbURhdGUsIFwiZFwiLCAxKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0UHJldih0aGlzLmZyb21EYXRlLCBcImRcIiwgdGhpcy5jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcclxuICAgIH1cclxuICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5leHRXZWVrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLmZyb21EYXRlLCBcImRcIiwgdGhpcy5jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNhbGVuZGFyLmdldE5leHQodGhpcy5mcm9tRGF0ZSwgXCJkXCIsIHRoaXMuY2FsZW5kYXIuZ2V0RGF5c1BlcldlZWsoKSAtIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53ZWVrTnVtYmVyR2VuZXJhdG9yKCk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2FsZW5kYXJNYXAoKSB7XHJcbiAgICBsZXQgZGF0ZU9iaiA9IHsgZnJvbURhdGU6IHRoaXMuZnJvbURhdGUsIHRvRGF0ZTogdGhpcy50b0RhdGUgfTtcclxuICAgIHRoaXMuY2FsZW5kYXJNYXAuc2V0KFwib2xkRGF0ZXNcIiwgZGF0ZU9iaik7XHJcbiAgfVxyXG5cclxuICBhcHBseUNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm11bHRpU2VsZWN0RHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVtaXRNdWx0aXBsZVdlZWtPYmplY3RzKSB7XHJcbiAgICAgIGxldCBkYXRlcyA9IHt9IGFzIFdlZWtPYmplY3Q7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlcyA9IHRoaXMuZm9ybWF0dGVyKHRoaXMuZnJvbURhdGUsIHRoaXMudG9EYXRlKTtcclxuICAgICAgZGF0ZXMuc3RhcnREYXRlID0gZm9ybWF0dGVkRGF0ZXMuZm9ybWF0dGVkU3RhcnREYXRlO1xyXG4gICAgICBkYXRlcy5lbmREYXRlID0gZm9ybWF0dGVkRGF0ZXMuZm9ybWF0dGVkRW5kRGF0ZTtcclxuICAgICAgdGhpcy5hcHBseVdlZWtDYWxlbmRhckNoYW5nZXMuZW1pdChkYXRlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFwcGx5V2Vla0NhbGVuZGFyQ2hhbmdlcy5lbWl0KHRoaXMud2Vla09iamVjdHMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRDYWxlbmRhck1hcCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJUb2dnbGVkLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaXNEcm9wZG93bk9wZW5lZEZvckNhbGVuZGFyKGRhdGVwaWNrZXI6IE5nYklucHV0RGF0ZXBpY2tlcikge1xyXG4gICAgdGhpcy5kYXRlcGlja2VyID0gZGF0ZXBpY2tlcjtcclxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIuaXNPcGVuKCkpIHtcclxuICAgICAgdGhpcy5yZXZlcnREYXRlcygpO1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgICAgdGhpcy5tdWx0aVNlbGVjdERyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlcGlja2VyLm9wZW4oKTtcclxuICAgICAgdGhpcy5tdWx0aVNlbGVjdERyb3Bkb3duT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnREYXRlcygpIHtcclxuICAgIHRoaXMubXVsdGlTZWxlY3REcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmNhbGVuZGFyTWFwLmdldChcIm9sZERhdGVzXCIpKSB7XHJcbiAgICAgIGxldCBkYXRlT2JqID0gdGhpcy5jYWxlbmRhck1hcC5nZXQoXCJvbGREYXRlc1wiKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGVPYmouZnJvbURhdGU7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gZGF0ZU9iai50b0RhdGU7XHJcbiAgICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgICB0aGlzLmRpc3BsYXlUb1VJKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0lmRGF0ZUlzRGlzYWJsZWQoZGF0ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JGdW5jID0gKG5nYkRhdGU6IE5nYkRhdGUpID0+IG5nYkRhdGUueWVhciA9PT0gZGF0ZS55ZWFyICYmIG5nYkRhdGUubW9udGggPT09IGRhdGUubW9udGggJiYgbmdiRGF0ZS5kYXkgPT09IGRhdGUuZGF5O1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKHZhbGlkYXRvckZ1bmMpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEYXRlcGlja2VyKGRhdGVwaWNrZXJSZWY6IGFueSkge1xyXG4gICAgZGF0ZXBpY2tlclJlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCIgKm5nSWY9XCJjb25maWcuc2hvd0FzRHJvcGRvd25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJkYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0KT1cInNlbGVjdFdlZWsoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoY2xvc2VkKT1cImlzRm9jdXNlZChmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlNb250aHNdPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbZGF5VGVtcGxhdGVdPVwidFwiXHJcbiAgICAgICAgICAgICAgICBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiXHJcbiAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiY29uZmlnLmZpcnN0RGF5T2ZXZWVrXCJcclxuICAgICAgICAgICAgICAgIFtzaG93V2Vla051bWJlcnNdPVwiY29uZmlnLnNob3dXZWVrTnVtYmVyc1wiXHJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXHJcbiAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLVNpbmdsZSB3ZWVrIHNlbGVjdC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrc1wiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiAzMHB4OyBmb250LXNpemU6IDEycHhcIj4gJm5ic3A7e3sgd2Vla051bWJlcnMgfX0gPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS13ZWVrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBuZXh0LXJvdW5kLWJ0blwiIChjbGljayk9XCJwcmV2aW91c1dlZWsoKVwiPiBuYXZpZ2F0ZV9uZXh0IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgI2RwRnJvbURhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBXZWVrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb25maWcuY3VzdG9tQ2xhc3MgPT0gJycgPyAnJyA6IGNvbmZpZy5jdXN0b21DbGFzc11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRlVG9EaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXNGb2N1c2VkKHRydWUpOyBpc0Ryb3Bkb3duT3BlbmVkRm9yQ2FsZW5kYXIoZGF0ZXBpY2tlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93blwiICpuZ0lmPSchZGF0ZXBpY2tlci5pc09wZW4oKScgKGNsaWNrKT1cImRhdGVwaWNrZXIub3BlbigpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSdtZGkgbWRpLW1lbnUtdXAnICpuZ0lmPVwiZGF0ZXBpY2tlci5pc09wZW4oKVwiIChjbGljayk9XCJpc0Ryb3Bkb3duT3BlbmVkRm9yQ2FsZW5kYXIoZGF0ZXBpY2tlcilcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcm91bmQtYnRuXCIgKGNsaWNrKT1cIm5leHRXZWVrKClcIj4gbmF2aWdhdGVfbmV4dCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tTXVsdGlwbGUgd2VlayBzZWxlY3QtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJjb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtd2Vla3NcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICNkcEZyb21EYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFdlZWtzXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29uZmlnLmN1c3RvbUNsYXNzID09ICcnID8gJycgOiBjb25maWcuY3VzdG9tQ2xhc3NdXCJcclxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ3ZWVrTnVtYmVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzRm9jdXNlZCh0cnVlKTsgaXNEcm9wZG93bk9wZW5lZEZvckNhbGVuZGFyKGRhdGVwaWNrZXIpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFtdWx0aVNlbGVjdERyb3Bkb3duT3BlblwiIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gbXVsdGlzZWxlY3QtaW5wdXQtYXJyb3dcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm11bHRpU2VsZWN0RHJvcGRvd25PcGVuXCIgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgbXVsdGlzZWxlY3QtaW5wdXQtYXJyb3dcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxuZ2ItZGF0ZXBpY2tlclxyXG4gICAgI3dlZWtQaWNrZXJcclxuICAgICpuZ0lmPVwiIWNvbmZpZy5zaG93QXNEcm9wZG93blwiXHJcbiAgICBbZGlzcGxheU1vbnRoc109XCIxXCJcclxuICAgIFtzdGFydERhdGVdPVwiZnJvbURhdGUhXCJcclxuICAgIFtmaXJzdERheU9mV2Vla109XCJjb25maWcuZmlyc3REYXlPZldlZWtcIlxyXG4gICAgW3Nob3dXZWVrTnVtYmVyc109XCJjb25maWcuc2hvd1dlZWtOdW1iZXJzXCJcclxuICAgIFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxyXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAoZGF0ZVNlbGVjdCk9XCJzZWxlY3RXZWVrKCRldmVudClcIlxyXG4gICAgW21hcmtEaXNhYmxlZF09XCJkaXNhYmxlZEZ1bmNcIlxyXG4+XHJcbjwvbmdiLWRhdGVwaWNrZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG0tMiBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5Q2hhbmdlcygpOyBjbG9zZURhdGVwaWNrZXIoZGF0ZXBpY2tlcilcIlxyXG4gICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzI2OGJmZjsgY29sb3I6ICNmZmZmZmZcIlxyXG4gICAgPlxyXG4gICAgICAgIEFwcGx5XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwicmV2ZXJ0RGF0ZXMoKTsgY2xvc2VEYXRlcGlja2VyKGRhdGVwaWNrZXIpXCJcclxuICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDEzOSwgMjU1LCAwLjEyKTsgY29sb3I6ICMyNjhiZmZcIlxyXG4gICAgPlxyXG4gICAgICAgIENhbmNlbFxyXG4gICAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3QgbGV0LWRhdGUgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCIgbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cclxuICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJjdXN0b20tZGF5XCJcclxuICAgICAgICBbY2xhc3MuZm9jdXNlZF09XCJmb2N1c2VkXCJcclxuICAgICAgICBbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKVwiXHJcbiAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlcmVkRGF0ZSA9IGRhdGVcIlxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWREYXRlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1cclxuXHJcbjxocj5cclxuXHJcbjxwcmU+RnJvbToge3sgZnJvbURhdGUgfCBqc29uIH19IDwvcHJlPlxyXG48cHJlPlRvOiB7eyB0b0RhdGUgfCBqc29uIH19IDwvcHJlPlxyXG48cHJlPndlZWtOdW1iZXJzOiB7eyB3ZWVrTnVtYmVycyB8IGpzb24gfX0gPC9wcmU+XHJcblxyXG4tLT5cclxuIl19
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWRyb3Bkb3duLWxpYi9jb21wb25lbnRzL2FubmEtd2Vlay1jYWxlbmRhci1maWx0ZXIvYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFeEgsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUc1QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQzs7Ozs7OztBQUU1RyxpQ0FBaUM7QUFTakMsTUFBTSxPQUFPLHlCQUF5QjtJQWdFcEMsWUFDVSxRQUFxQixFQUNyQixnQkFBcUMsRUFDckMseUJBQW9ELEVBQ3BELG1CQUE0QztRQUg1QyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBbEV0RCxnQkFBVyxHQUFtQixJQUFJLENBQUM7UUFDbkMsV0FBTSxHQUFtQixJQUFJLENBQUM7UUFLOUIsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0Isa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBS2pDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUtQLGtCQUFhLEdBQWMsRUFBRSxDQUFDO1FBV3RDLDZCQUF3QixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBbUM1RCxDQUFDO0lBakNMLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMseUJBQXlCLENBQUM7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV6RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUU7WUFDakMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqRDtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoRSxrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFhLEVBQUUsT0FBMEIsRUFBRSxFQUFFO2dCQUNoRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUM7U0FDSDtJQUNILENBQUM7SUFVRCxhQUFhLENBQUMsSUFBUyxFQUFFLGNBQW1CO1FBQzFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM1RSxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsUUFBUSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXBDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1RCxTQUFTLHNCQUFzQixDQUFDLE9BQWdCO1lBQzlDLElBQUksU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELFNBQVMsOEJBQThCO1lBQ3JDLElBQUksVUFBVSxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNuRixPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakMsSUFBSSxxQkFBcUIsR0FBRyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQy9DLElBQUksbUJBQW1CLEdBQUcscUJBQXFCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBRXhILElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkQsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWU7UUFDYixnQ0FBZ0M7UUFDaEMsaUVBQWlFO1FBQ2pFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsUUFBUTtRQUNOLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXRDLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUNsRyxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEdBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFFRCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxDQUFDLElBQW1CLEVBQUUsRUFBRTtZQUMzRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDckcsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFhO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUU7WUFDcEMsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUNoRTtnQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMxQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25FLGlFQUFpRTtpQkFDbEU7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNoRTtZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDakgsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQzdHLElBQUksT0FBTyxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFO29CQUM3QyxPQUFPLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDekYsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3ZDLE1BQU07cUJBQ1A7b0JBQ0QsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELElBQUksYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkU7WUFFRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtZQUMvQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVkLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckIsT0FBTyxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVoQix3REFBd0Q7WUFDeEQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQzthQUNYO1NBQ0Y7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25HLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkc7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEIsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNoRyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxXQUFXLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDM0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDcEM7U0FDRjtRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixPQUFPLFVBQVUsUUFBaUIsRUFBRSxNQUFlO1lBQ2pELElBQUksY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9FLElBQUksWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDakcsT0FBTyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUU3RixPQUFPLENBQUMsYUFBYTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbEUsTUFBTTtvQkFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDbkUsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDcEUsK0JBQStCO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLDZCQUE2QjtZQUM3QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDakYsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdDQUFnQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUM1RSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztpQkFDNUM7Z0JBQ0QsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLGNBQWMsQ0FBQyxDQUFDO2FBQzVEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBVTtRQUMzQixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUNoRCxPQUFPLFVBQVUsYUFBa0I7WUFDakMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBVTtRQUN6QixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUNoRCxPQUFPLFVBQVUsYUFBa0I7WUFDakMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBVTtRQUNsQixPQUFPLFVBQVUsTUFBYztZQUM3QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFdEUsSUFBSSxhQUFhLEdBQUcsRUFBYSxDQUFDO1lBQ2xDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBRXhCLElBQUksYUFBYSxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7Z0JBQ25ELGFBQWEsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzFDO1lBRUQsYUFBYSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELGFBQWEsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFRCxRQUFRLENBQUMsSUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFhO1FBQ25CLE9BQU8sQ0FDTCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ3ZILENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQzNGO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3RjtRQUNELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFO1lBQ3hDLElBQUksS0FBSyxHQUFHLEVBQWdCLENBQUM7WUFDN0IsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRSxLQUFLLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztZQUNwRCxLQUFLLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN0RDtRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDJCQUEyQixDQUFDLFVBQThCO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFTO1FBQzdCLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZSxDQUFDLGFBQWtCO1FBQ2hDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDOztzSEFyWVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNmFDckJ0Qyx3aUtBaUlBOzJGRDVHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0NBQW9DO2tOQXdCMUIsZ0JBQWdCO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ0EsZUFBZTtzQkFBaEMsS0FBSzt1QkFBQyxTQUFTO2dCQUNTLGFBQWE7c0JBQXJDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUXlCLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUNaLHdCQUF3QjtzQkFBeEMsTUFBTTt1QkFBQyxPQUFPO2dCQUNZLGVBQWU7c0JBQXpDLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlLCBOZ2JEYXRlcGlja2VyQ29uZmlnLCBOZ2JEYXRlU3RydWN0LCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IFdlZWtPYmplY3QgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nZW5lcmljLWRhdGEtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IElXZWVrQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nbG9iYWwtZHJvcGRvd24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZGF0ZS10aW1lLWZvcm1hdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYUdsb2JhbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWdsb2JhbC1jb25maWcuc2VydmljZSc7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYW5uYS1jb3JlLXdlZWstY2FsZW5kYXItZmlsdGVyLWxpYlwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYW5uYS13ZWVrLWNhbGVuZGFyLWZpbHRlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9hbm5hLXdlZWstY2FsZW5kYXItZmlsdGVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYVdlZWtDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBmcm9tRGF0ZTogTmdiRGF0ZSB8IG51bGw7XHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuICB0b2RheTogTmdiRGF0ZTtcclxuXHJcbiAgbW9kZWw6IE5nYkRhdGVTdHJ1Y3Q7XHJcblxyXG4gIHdlZWtOdW1iZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHBpcGU6IERhdGVQaXBlO1xyXG4gIGRhdGVUb0Rpc3BsYXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2Vla09iamVjdHM6IFdlZWtPYmplY3RbXTtcclxuICBtdWx0aVNlbGVjdERyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGVwaWNrZXI6IE5nYklucHV0RGF0ZXBpY2tlcjtcclxuICBwcml2YXRlIGZvcm1hdHRlcjogYW55O1xyXG4gIHB1YmxpYyBmb3JtYXR0ZWRTdGFydERhdGU6IHN0cmluZztcclxuICBwdWJsaWMgZm9ybWF0dGVkRW5kRGF0ZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgY2FsZW5kYXJNYXAgPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBmbGFnMTogYm9vbGVhbjtcclxuICBwcml2YXRlIGZsYWcyOiBib29sZWFuO1xyXG4gIEBJbnB1dChcImZyb20tZGF0ZVwiKSBzZWxlY3RlZEZyb21EYXRlOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dChcInRvLWRhdGVcIikgc2VsZWN0ZWRFbmREYXRlOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dChcImRpc2FibGVkLWRhdGVzXCIpIGRpc2FibGVkRGF0ZXM6IE5nYkRhdGVbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IGFueTtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBhbnk7XHJcblxyXG4gIGRpc2FibGVkRnVuYzogYW55O1xyXG4gIHN0YXRlOiBhbnk7XHJcblxyXG4gIC8vU2V0dGluZyB0aGUgZGVmYXVsdCB2YWx1ZXM7XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdFZhbHVlczogSVdlZWtDYWxlbmRhcjtcclxuXHJcbiAgQElucHV0KFwid2Vlay1jYWxlbmRhci1jb25maWdcIikgY29uZmlnOiBJV2Vla0NhbGVuZGFyO1xyXG4gIEBPdXRwdXQoXCJhcHBseVwiKSBhcHBseVdlZWtDYWxlbmRhckNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dChcInRvZ2dsZS1jYWxlbmRhclwiKSBjYWxlbmRhclRvZ2dsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vaWYgc29tZSB2YWx1ZXMgYXJlIG5vdCBzZW50LCBzZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVlc1xyXG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlcyA9IHRoaXMuZ2xvYmFsQ29uZmlnU2VydmljZS5kZWZhdWx0V2Vla0NhbGVuZGFyQ29uZmlnO1xyXG4gICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuX2RlZmF1bHRWYWx1ZXMsIC4uLnRoaXMuY29uZmlnIH07XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnNlbGVjdEN1cnJlbnRXZWVrKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVdlZWtEYXRhKCk7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiYgdGhpcy5zZWxlY3RXZWVrKHRoaXMuZnJvbURhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZWREYXRlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRnJvbURhdGUgJiYgdGhpcy5zZWxlY3RlZEVuZERhdGUgJiYgdGhpcy5jb25maWcpIHtcclxuICAgICAgLy8gdGhpcy5zZWxlY3RXZWVrKHRoaXMuZnJvbURhdGUpO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gTmdiRGF0ZS5mcm9tKHRoaXMuc2VsZWN0ZWRGcm9tRGF0ZSk7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gTmdiRGF0ZS5mcm9tKHRoaXMuc2VsZWN0ZWRFbmREYXRlKTtcclxuICAgICAgdGhpcy53ZWVrTnVtYmVyR2VuZXJhdG9yKCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheVRvVUkoKTtcclxuICAgICAgdGhpcy5zZXRDYWxlbmRhck1hcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkRGF0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmRpc2FibGVkRnVuYyA9IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50OiB7IG1vbnRoOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrSWZEYXRlSXNEaXNhYmxlZChkYXRlKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsXHJcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJDb25maWc6IE5nYkRhdGVwaWNrZXJDb25maWcsXHJcbiAgICBwcml2YXRlIGFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2U6IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbENvbmZpZ1NlcnZpY2U6IEFubmFHbG9iYWxDb25maWdTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gIGdldFdlZWtOdW1iZXIod2VlazogYW55LCBmaXJzdERheU9mV2VlazogYW55KSB7XHJcbiAgICBjb25zdCB3ZWVrU3RhcnREYXRlID0gbW9tZW50KGNvbnZlcnROZ2JEYXRlVG9Nb21lbnQod2Vla1swXSksIFwiTU0vREQvWVlZWVwiKTtcclxuICAgIGNvbnN0IHdlZWtZZWFyID0gd2Vla1N0YXJ0RGF0ZS55ZWFyKCk7XHJcbiAgICBjb25zdCB5ZWFyU3RhcnREYXRlID0gbW9tZW50KGAwMS8wMS8ke3dlZWtZZWFyfWAsIFwiTU0vREQvWVlZWVwiKTtcclxuICAgIGNvbnN0IHdlZWtEYXkgPSB5ZWFyU3RhcnREYXRlLmRheSgpO1xyXG5cclxuICAgIGNvbnN0IG5vT2ZEYXlzID0gd2Vla1N0YXJ0RGF0ZS5kaWZmKHllYXJTdGFydERhdGUsIFwiZFwiKSArIDE7XHJcblxyXG4gICAgZnVuY3Rpb24gY29udmVydE5nYkRhdGVUb01vbWVudChuZ2JEYXRlOiBOZ2JEYXRlKTogc3RyaW5nIHtcclxuICAgICAgbGV0IGNvbnZlcnRlZCA9IG1vbWVudCgpO1xyXG4gICAgICBjb252ZXJ0ZWQubW9udGgobmdiRGF0ZS5tb250aCAtIDEpO1xyXG4gICAgICBjb252ZXJ0ZWQuZGF0ZShuZ2JEYXRlLmRheSk7XHJcbiAgICAgIGNvbnZlcnRlZC55ZWFyKG5nYkRhdGUueWVhcik7XHJcbiAgICAgIHJldHVybiBjb252ZXJ0ZWQuZm9ybWF0KFwiTU0vREQvWVlZWVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjaGVja0lmWWVhcklzQnJvYWRjYXN0TGVhcFllYXIoKSB7XHJcbiAgICAgIGxldCBpc0xlYXBZZWFyID0gKHdlZWtZZWFyICUgNCA9PSAwICYmIHdlZWtZZWFyICUgMTAwICE9IDApIHx8IHdlZWtZZWFyICUgNDAwID09IDA7XHJcbiAgICAgIHJldHVybiAoaXNMZWFwWWVhciAmJiAod2Vla0RheSA9PSAwIHx8IHdlZWtEYXkgPT0gNikpIHx8ICghaXNMZWFwWWVhciAmJiB3ZWVrRGF5ID09IDApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzTGVhcFllYXIgPSBjaGVja0lmWWVhcklzQnJvYWRjYXN0TGVhcFllYXIoKTtcclxuICAgIGNvbnN0IGRpdmlkZXIgPSBpc0xlYXBZZWFyID8gNTMgOiA1MjtcclxuICAgIGNvbnN0IGFkZGVyID0gaXNMZWFwWWVhciA/IDIgOiAxO1xyXG5cclxuICAgIGxldCBicm9hZGNhc3ROdW1iZXJPZkRheXMgPSB3ZWVrRGF5ICsgbm9PZkRheXM7XHJcbiAgICBsZXQgYnJvYWRjYXN0V2Vla051bWJlciA9IGJyb2FkY2FzdE51bWJlck9mRGF5cyAlIDcgPiAwID8gYnJvYWRjYXN0TnVtYmVyT2ZEYXlzIC8gNyArIGFkZGVyIDogYnJvYWRjYXN0TnVtYmVyT2ZEYXlzIC8gNztcclxuXHJcbiAgICBpZiAoTWF0aC5mbG9vcihicm9hZGNhc3RXZWVrTnVtYmVyICUgZGl2aWRlcikgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGRpdmlkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihicm9hZGNhc3RXZWVrTnVtYmVyICUgZGl2aWRlcik7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBDSEFOR0VTQEFOTkFMSUIgQ2hhbmdlZCB0aGlzLlxyXG4gICAgLy8gdGhpcy5jYWxlbmRhcltcIl9fcHJvdG9fX1wiXS5nZXRXZWVrTnVtYmVyID0gdGhpcy5nZXRXZWVrTnVtYmVyO1xyXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMuY2FsZW5kYXIsIHtnZXRXZWVrTnVtYmVyOiB0aGlzLmdldFdlZWtOdW1iZXJ9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnNlbGVjdFdlZWsodGhpcy5mcm9tRGF0ZSk7XHJcbiAgICB0aGlzLnNldENhbGVuZGFyTWFwKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV2Vla0RhdGEoKSB7XHJcbiAgICB0aGlzLndlZWtPYmplY3RzID0gW107XHJcblxyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuICAgIHRoaXMudG9kYXkgPSB0aGlzLmNhbGVuZGFyLmdldFRvZGF5KCk7XHJcblxyXG4gICAgbGV0IGJhY2tEYXRlZFBlcmlvZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyRGV0YWlsc1wiKSB8fCAne30nKS5sb2NraW5nX3BlcmlvZF9kYXlzO1xyXG4gICAgaWYgKGJhY2tEYXRlZFBlcmlvZCA8IDApIHtcclxuICAgICAgbGV0IGRhdGU6IE5nYkRhdGUgPSB0aGlzLmNhbGVuZGFyLmdldFByZXYodGhpcy5jYWxlbmRhci5nZXRUb2RheSgpLCBcImRcIiwgTWF0aC5hYnMoYmFja0RhdGVkUGVyaW9kKSk7XHJcbiAgICAgIHRoaXMudG9kYXkgPSBOZ2JEYXRlLmZyb20oZGF0ZSk7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBOZ2JEYXRlLmZyb20oZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGlzYWJsZSBtb250aHMgYmVmb3JlIG51bWJlck9mTW9udGhzVG9FbmFibGVcclxuICAgIHRoaXMuZGF0ZVBpY2tlckNvbmZpZy5tYXJrRGlzYWJsZWQgPSAoZGF0ZTogTmdiRGF0ZVN0cnVjdCkgPT4ge1xyXG4gICAgICBsZXQgcHJldmlvdXNNb250aCA9IHRoaXMuY2FsZW5kYXIuZ2V0UHJldih0aGlzLnRvZGF5LCBcIm1cIiwgdGhpcy5jb25maWcubnVtYmVyT2ZNb250aHNUb0VuYWJsZUluUGFzdCk7XHJcbiAgICAgIGxldCBwcmV2aW91c0RheSA9IHRoaXMuY2FsZW5kYXIuZ2V0UHJldihwcmV2aW91c01vbnRoLCBcImRcIiwgMSk7XHJcbiAgICAgIHJldHVybiAhTmdiRGF0ZS5mcm9tKHByZXZpb3VzRGF5KS5iZWZvcmUoZGF0ZSk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5mb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlZERhdGVzKCk7XHJcbiAgICB0aGlzLmZsYWcxID0gZmFsc2U7XHJcbiAgICB0aGlzLmZsYWcyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RXZWVrKGRhdGU6IE5nYkRhdGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggLSAxLCBkYXRlLmRheSk7XHJcbiAgICBsZXQgY29uc3RydWN0RGF0ZSA9IHRoaXMuYnVpbGREYXRlKGRhdGVPYmplY3QpO1xyXG5cclxuICAgIGlmICghdGhpcy5jb25maWcuc2VsZWN0TXVsdGlwbGVXZWVrcykge1xyXG4gICAgICAvL1NpbmdsZSB3ZWVrIHNlbGVjdGlvblxyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jb25zdHJ1Y3RTdGFydERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB0aGlzLndlZWtOdW1iZXJHZW5lcmF0b3IoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChkYXRlLmJlZm9yZSh0aGlzLmZyb21EYXRlKSkge1xyXG4gICAgICAgIHRoaXMuZnJvbURhdGUgPSB0aGlzLmNvbnN0cnVjdFN0YXJ0RGF0ZShkYXRlT2JqZWN0KShjb25zdHJ1Y3REYXRlKTtcclxuICAgICAgICBpZiAodGhpcy5mbGFnMSkge1xyXG4gICAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNvbnN0cnVjdEVuZERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmxhZzEgPSAhdGhpcy5mbGFnMTtcclxuICAgICAgfSBlbHNlIGlmIChkYXRlLmFmdGVyKHRoaXMudG9EYXRlKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmZsYWcyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jb25zdHJ1Y3RTdGFydERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgICAgICAvL3RoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZsYWcyID0gIXRoaXMuZmxhZzI7XHJcbiAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNvbnN0cnVjdEVuZERhdGUoZGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMuY29uc3RydWN0U3RhcnREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICAgIHRoaXMudG9EYXRlID0gdGhpcy5jb25zdHJ1Y3RFbmREYXRlKGRhdGVPYmplY3QpKGNvbnN0cnVjdERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgbW9tZW50U3RhcnREYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KHRoaXMuZnJvbURhdGUpLCBcIk1NL0REL1lZWVlcIik7XHJcbiAgICAgICAgbGV0IG1vbWVudEVuZERhdGUgPSBtb21lbnQodGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQodGhpcy50b0RhdGUpLCBcIk1NL0REL1lZWVlcIik7XHJcbiAgICAgICAgbGV0IG5nYkRhdGU7XHJcbiAgICAgICAgd2hpbGUgKCFtb21lbnRTdGFydERhdGUuaXNTYW1lKG1vbWVudEVuZERhdGUpKSB7XHJcbiAgICAgICAgICBuZ2JEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobW9tZW50U3RhcnREYXRlLCBcIk1NL0REL1lZWVlcIik7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lmRGF0ZUlzRGlzYWJsZWQobmdiRGF0ZSkpIHtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBtb21lbnRTdGFydERhdGUuYWRkKDEsIFwiZFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG5ld0RhdGVPYmplY3QgPSBuZXcgRGF0ZShuZ2JEYXRlLnllYXIsIG5nYkRhdGUubW9udGggLSAxLCBuZ2JEYXRlLmRheSAtIDEpO1xyXG4gICAgICAgIGxldCBjb25zdHJ1Y3REYXRlID0gdGhpcy5idWlsZERhdGUobmV3RGF0ZU9iamVjdCk7XHJcbiAgICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNvbnN0cnVjdEVuZERhdGUobmV3RGF0ZU9iamVjdCkoY29uc3RydWN0RGF0ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMud2Vla051bWJlckdlbmVyYXRvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jb25maWcuc2hvd0FzRHJvcGRvd24pIHtcclxuICAgICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdlZWtOdW1iZXJHZW5lcmF0b3IoKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0ZXMgPSBbXTtcclxuICAgIGxldCB3ZWVrID0gW107XHJcblxyXG4gICAgbGV0IHN0YXJ0RGF0ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLmZyb21EYXRlKTtcclxuICAgIGxldCBlbmREYXRlID0gTmdiRGF0ZS5mcm9tKHRoaXMudG9EYXRlKTtcclxuXHJcbiAgICB3ZWVrLnB1c2goc3RhcnREYXRlKTtcclxuICAgIHdoaWxlIChlbmREYXRlICE9IG51bGwgJiYgIXN0YXJ0RGF0ZS5lcXVhbHMoZW5kRGF0ZSkpIHtcclxuICAgICAgbGV0IGRhdGUgPSB0aGlzLmNhbGVuZGFyLmdldE5leHQoc3RhcnREYXRlLCBcImRcIiwgMSk7XHJcbiAgICAgIHN0YXJ0RGF0ZSA9IGRhdGU7XHJcbiAgICAgIHdlZWsucHVzaChkYXRlKTtcclxuXHJcbiAgICAgIC8vIENvbGxlY3QgYWxsIGRheXMgaW4gd2VlayB0byBjYWxjdWxhdGUgdGhlIHdlZWsgbnVtYmVyXHJcbiAgICAgIGlmICh3ZWVrLmxlbmd0aCA9PSA3KSB7XHJcbiAgICAgICAgZGF0ZXMucHVzaCh3ZWVrKTtcclxuICAgICAgICB3ZWVrID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICgoKHRoaXMuY29uZmlnLm1heFdlZWtzVG9TZWxlY3QgPz8gMCkgPiAwICYmIGRhdGVzLmxlbmd0aCA+ICh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2VsZWN0ID8/IDApKSkge1xyXG4gICAgICBkYXRlcy5zcGxpY2UoKHRoaXMuY29uZmlnLm1heFdlZWtzVG9TZWxlY3QgPz8gMCksIGRhdGVzLmxlbmd0aCAtICh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2VsZWN0ID8/IDApKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyhkYXRlcyk7XHJcblxyXG4gICAgdGhpcy53ZWVrTnVtYmVycyA9IFtdO1xyXG4gICAgdGhpcy53ZWVrT2JqZWN0cyA9IFtdO1xyXG4gICAgaWYgKGRhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgZGF0ZSBvZiBkYXRlcykge1xyXG4gICAgICAgIHRoaXMud2Vla051bWJlcnMucHVzaChcIiBXZWVrIFwiICsgdGhpcy5jYWxlbmRhci5nZXRXZWVrTnVtYmVyKGRhdGUsIHRoaXMuY29uZmlnLmZpcnN0RGF5T2ZXZWVrKSk7XHJcbiAgICAgICAgbGV0IGRhdGVzID0gdGhpcy5mb3JtYXR0ZXIoZGF0ZVswXSwgZGF0ZVs2XSk7XHJcbiAgICAgICAgbGV0IGRhdGVPYmplY3RzID0geyBzdGFydERhdGU6IGRhdGVzLmZvcm1hdHRlZFN0YXJ0RGF0ZSwgZW5kRGF0ZTogZGF0ZXMuZm9ybWF0dGVkRW5kRGF0ZSB9O1xyXG4gICAgICAgIHRoaXMud2Vla09iamVjdHMucHVzaChkYXRlT2JqZWN0cyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheVRvVUkoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkRGF0ZXMoZGF0ZXM6IGFueSkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGVzWzBdWzBdO1xyXG4gICAgdGhpcy50b0RhdGUgPSBkYXRlc1tkYXRlcy5sZW5ndGggLSAxXVs2XTtcclxuICB9XHJcblxyXG4gIGZvcm1hdHRlZERhdGVzKCkge1xyXG4gICAgbGV0IHBpcGUgPSBuZXcgRGF0ZVBpcGUoXCJlbi1VU1wiKTtcclxuICAgIGxldCB0aGlzT2JqID0gdGhpcztcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZnJvbURhdGU6IE5nYkRhdGUsIHRvRGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgICBsZXQgZnJvbURhdGVPYmplY3QgPSBuZXcgRGF0ZShmcm9tRGF0ZS55ZWFyLCBmcm9tRGF0ZS5tb250aCAtIDEsIGZyb21EYXRlLmRheSk7XHJcbiAgICAgIGxldCB0b0RhdGVPYmplY3QgPSBuZXcgRGF0ZSh0b0RhdGUueWVhciwgdG9EYXRlLm1vbnRoIC0gMSwgdG9EYXRlLmRheSk7XHJcbiAgICAgIHRoaXNPYmouZm9ybWF0dGVkU3RhcnREYXRlID0gcGlwZS50cmFuc2Zvcm0oZnJvbURhdGVPYmplY3QsIHRoaXNPYmouY29uZmlnLmRhdGVGb3JtYXRGb3JSZXF1ZXN0KTtcclxuICAgICAgdGhpc09iai5mb3JtYXR0ZWRFbmREYXRlID0gcGlwZS50cmFuc2Zvcm0odG9EYXRlT2JqZWN0LCB0aGlzT2JqLmNvbmZpZy5kYXRlRm9ybWF0Rm9yUmVxdWVzdCk7XHJcblxyXG4gICAgICB0aGlzT2JqLmRhdGVUb0Rpc3BsYXkgPVxyXG4gICAgICAgIHBpcGUudHJhbnNmb3JtKGZyb21EYXRlT2JqZWN0LCB0aGlzT2JqLmNvbmZpZy5kYXRlRm9ybWF0VG9EaXNwbGF5KSArXHJcbiAgICAgICAgXCIgdG8gXCIgK1xyXG4gICAgICAgIHBpcGUudHJhbnNmb3JtKHRvRGF0ZU9iamVjdCwgdGhpc09iai5jb25maWcuZGF0ZUZvcm1hdFRvRGlzcGxheSk7XHJcbiAgICAgIHJldHVybiB0aGlzT2JqO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRpc3BsYXlUb1VJKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zZWxlY3RNdWx0aXBsZVdlZWtzICYmIHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgLy8gRGlzcGxheSBmb3Igb25seSBTaW5nbGUgV2Vla1xyXG4gICAgICB0aGlzLmZvcm1hdHRlcih0aGlzLmZyb21EYXRlLCB0aGlzLnRvRGF0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBEaXNwbGF5IGZvciBNdWx0aXBsZSBXZWVrc1xyXG4gICAgICBpZiAodGhpcy53ZWVrTnVtYmVycy5sZW5ndGggPiAodGhpcy5jb25maWcubWF4V2Vla3NUb1Nob3dXaXRoUmVtYWluaW5nQ291bnQgPz8gMCkpIHtcclxuICAgICAgICBsZXQgd2Vla0Rpc3BsYXkgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICh0aGlzLmNvbmZpZy5tYXhXZWVrc1RvU2hvd1dpdGhSZW1haW5pbmdDb3VudCA/PyAwKTsgaSsrKSB7XHJcbiAgICAgICAgICB3ZWVrRGlzcGxheS5wdXNoKHRoaXMud2Vla051bWJlcnMuc2hpZnQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByZW1haW5pbmdXZWVrcyA9IHRoaXMud2Vla051bWJlcnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMud2Vla051bWJlcnMgPSBbXTtcclxuICAgICAgICB0aGlzLndlZWtOdW1iZXJzLnB1c2god2Vla0Rpc3BsYXkgKyBcIiArXCIgKyByZW1haW5pbmdXZWVrcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdFN0YXJ0RGF0ZShkYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgZmlyc3REYXlPZldlZWsgPSB0aGlzLmNvbmZpZy5maXJzdERheU9mV2VlaztcclxuICAgIHJldHVybiBmdW5jdGlvbiAoY29uc3RydWN0RGF0ZTogYW55KSB7XHJcbiAgICAgIGxldCBzdGFydERheSA9IGRhdGUuZ2V0RGF5KCkgIT0gMCA/IChmaXJzdERheU9mV2VlayA/PyAwKSAtIGRhdGUuZ2V0RGF5KCkgOiAtNjtcclxuICAgICAgcmV0dXJuIGNvbnN0cnVjdERhdGUoc3RhcnREYXkpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEVuZERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGZpcnN0RGF5T2ZXZWVrID0gdGhpcy5jb25maWcuZmlyc3REYXlPZldlZWs7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGNvbnN0cnVjdERhdGU6IGFueSkge1xyXG4gICAgICBsZXQgZW5kRGF5ID0gZGF0ZS5nZXREYXkoKSAhPSAwID8gKGZpcnN0RGF5T2ZXZWVrID8/IDApICsgNiAtIGRhdGUuZ2V0RGF5KCkgOiAwO1xyXG4gICAgICByZXR1cm4gY29uc3RydWN0RGF0ZShlbmREYXkpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRGF0ZShkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlcjogbnVtYmVyKTogTmdiRGF0ZSB8IG51bGwge1xyXG4gICAgICBsZXQgZGF5ID0gZGF0ZS5nZXREYXRlKCkgKyBudW1iZXI7XHJcbiAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF5KTtcclxuXHJcbiAgICAgIGxldCBuZ2JEYXRlT2JqZWN0ID0ge30gYXMgTmdiRGF0ZTtcclxuICAgICAgbmdiRGF0ZU9iamVjdC5kYXkgPSBkYXk7XHJcblxyXG4gICAgICBpZiAobmdiRGF0ZU9iamVjdC5kYXkgPiAzMSB8fCBuZ2JEYXRlT2JqZWN0LmRheSA8IDEpIHtcclxuICAgICAgICBuZ2JEYXRlT2JqZWN0LmRheSA9IGRhdGVPYmplY3QuZ2V0RGF0ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuZ2JEYXRlT2JqZWN0Lm1vbnRoID0gZGF0ZU9iamVjdC5nZXRNb250aCgpICsgMTtcclxuICAgICAgbmdiRGF0ZU9iamVjdC55ZWFyID0gZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpO1xyXG4gICAgICByZXR1cm4gTmdiRGF0ZS5mcm9tKG5nYkRhdGVPYmplY3QpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlzSG92ZXJlZChkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlICYmIHRoaXMuaG92ZXJlZERhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy50b0RhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLnRvRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBpc1JhbmdlKGRhdGU6IE5nYkRhdGUpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBkYXRlLmVxdWFscyh0aGlzLmZyb21EYXRlKSB8fCAodGhpcy50b0RhdGUgJiYgZGF0ZS5lcXVhbHModGhpcy50b0RhdGUpKSB8fCB0aGlzLmlzSW5zaWRlKGRhdGUpIHx8IHRoaXMuaXNIb3ZlcmVkKGRhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNXZWVrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmNhbGVuZGFyLmdldFByZXYodGhpcy5mcm9tRGF0ZSwgXCJkXCIsIDEpO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jYWxlbmRhci5nZXRQcmV2KHRoaXMuZnJvbURhdGUsIFwiZFwiLCB0aGlzLmNhbGVuZGFyLmdldERheXNQZXJXZWVrKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53ZWVrTnVtYmVyR2VuZXJhdG9yKCk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFdlZWsoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mcm9tRGF0ZSkge1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5jYWxlbmRhci5nZXROZXh0KHRoaXMuZnJvbURhdGUsIFwiZFwiLCB0aGlzLmNhbGVuZGFyLmdldERheXNQZXJXZWVrKCkpO1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLmZyb21EYXRlLCBcImRcIiwgdGhpcy5jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpIC0gMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndlZWtOdW1iZXJHZW5lcmF0b3IoKTtcclxuICAgIHRoaXMuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYWxlbmRhck1hcCgpIHtcclxuICAgIGxldCBkYXRlT2JqID0geyBmcm9tRGF0ZTogdGhpcy5mcm9tRGF0ZSwgdG9EYXRlOiB0aGlzLnRvRGF0ZSB9O1xyXG4gICAgdGhpcy5jYWxlbmRhck1hcC5zZXQoXCJvbGREYXRlc1wiLCBkYXRlT2JqKTtcclxuICB9XHJcblxyXG4gIGFwcGx5Q2hhbmdlcygpIHtcclxuICAgIHRoaXMubXVsdGlTZWxlY3REcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIGlmICghdGhpcy5jb25maWcuZW1pdE11bHRpcGxlV2Vla09iamVjdHMpIHtcclxuICAgICAgbGV0IGRhdGVzID0ge30gYXMgV2Vla09iamVjdDtcclxuICAgICAgbGV0IGZvcm1hdHRlZERhdGVzID0gdGhpcy5mb3JtYXR0ZXIodGhpcy5mcm9tRGF0ZSwgdGhpcy50b0RhdGUpO1xyXG4gICAgICBkYXRlcy5zdGFydERhdGUgPSBmb3JtYXR0ZWREYXRlcy5mb3JtYXR0ZWRTdGFydERhdGU7XHJcbiAgICAgIGRhdGVzLmVuZERhdGUgPSBmb3JtYXR0ZWREYXRlcy5mb3JtYXR0ZWRFbmREYXRlO1xyXG4gICAgICB0aGlzLmFwcGx5V2Vla0NhbGVuZGFyQ2hhbmdlcy5lbWl0KGRhdGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXBwbHlXZWVrQ2FsZW5kYXJDaGFuZ2VzLmVtaXQodGhpcy53ZWVrT2JqZWN0cyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENhbGVuZGFyTWFwKCk7XHJcbiAgfVxyXG5cclxuICBpc0ZvY3VzZWQodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5jYWxlbmRhclRvZ2dsZWQuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBpc0Ryb3Bkb3duT3BlbmVkRm9yQ2FsZW5kYXIoZGF0ZXBpY2tlcjogTmdiSW5wdXREYXRlcGlja2VyKSB7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIgPSBkYXRlcGlja2VyO1xyXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlci5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLnJldmVydERhdGVzKCk7XHJcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB0aGlzLm11bHRpU2VsZWN0RHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVwaWNrZXIub3BlbigpO1xyXG4gICAgICB0aGlzLm11bHRpU2VsZWN0RHJvcGRvd25PcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldmVydERhdGVzKCkge1xyXG4gICAgdGhpcy5tdWx0aVNlbGVjdERyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJNYXAuZ2V0KFwib2xkRGF0ZXNcIikpIHtcclxuICAgICAgbGV0IGRhdGVPYmogPSB0aGlzLmNhbGVuZGFyTWFwLmdldChcIm9sZERhdGVzXCIpO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gZGF0ZU9iai5mcm9tRGF0ZTtcclxuICAgICAgdGhpcy50b0RhdGUgPSBkYXRlT2JqLnRvRGF0ZTtcclxuICAgICAgdGhpcy53ZWVrTnVtYmVyR2VuZXJhdG9yKCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheVRvVUkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrSWZEYXRlSXNEaXNhYmxlZChkYXRlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvckZ1bmMgPSAobmdiRGF0ZTogTmdiRGF0ZSkgPT4gbmdiRGF0ZS55ZWFyID09PSBkYXRlLnllYXIgJiYgbmdiRGF0ZS5tb250aCA9PT0gZGF0ZS5tb250aCAmJiBuZ2JEYXRlLmRheSA9PT0gZGF0ZS5kYXk7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUodmFsaWRhdG9yRnVuYyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURhdGVwaWNrZXIoZGF0ZXBpY2tlclJlZjogYW55KSB7XHJcbiAgICBkYXRlcGlja2VyUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiAqbmdJZj1cImNvbmZpZy5zaG93QXNEcm9wZG93blwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgaGlkZGVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgKGRhdGVTZWxlY3QpPVwic2VsZWN0V2VlaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjbG9zZWQpPVwiaXNGb2N1c2VkKGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzcGxheU1vbnRoc109XCIxXCJcclxuICAgICAgICAgICAgICAgIFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuICAgICAgICAgICAgICAgIFtzdGFydERhdGVdPVwiZnJvbURhdGUhXCJcclxuICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCJjb25maWcuZmlyc3REYXlPZldlZWtcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dXZWVrTnVtYmVyc109XCJjb25maWcuc2hvd1dlZWtOdW1iZXJzXCJcclxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcclxuICAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tU2luZ2xlIHdlZWsgc2VsZWN0LS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWNvbmZpZy5zZWxlY3RNdWx0aXBsZVdlZWtzXCI+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IDMwcHg7IGZvbnQtc2l6ZTogMTJweFwiPiAmbmJzcDt7eyB3ZWVrTnVtYmVycyB9fSA8L3NwYW4+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLXdlZWtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG5leHQtcm91bmQtYnRuXCIgKGNsaWNrKT1cInByZXZpb3VzV2VlaygpXCI+IG5hdmlnYXRlX25leHQgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHBGcm9tRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFdlZWtzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbmZpZy5jdXN0b21DbGFzcyA9PSAnJyA/ICcnIDogY29uZmlnLmN1c3RvbUNsYXNzXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGVUb0Rpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpc0ZvY3VzZWQodHJ1ZSk7IGlzRHJvcGRvd25PcGVuZWRGb3JDYWxlbmRhcihkYXRlcGlja2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duXCIgKm5nSWY9JyFkYXRlcGlja2VyLmlzT3BlbigpJyAoY2xpY2spPVwiZGF0ZXBpY2tlci5vcGVuKClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9J21kaSBtZGktbWVudS11cCcgKm5nSWY9XCJkYXRlcGlja2VyLmlzT3BlbigpXCIgKGNsaWNrKT1cImlzRHJvcGRvd25PcGVuZWRGb3JDYWxlbmRhcihkYXRlcGlja2VyKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyByb3VuZC1idG5cIiAoY2xpY2spPVwibmV4dFdlZWsoKVwiPiBuYXZpZ2F0ZV9uZXh0IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS1NdWx0aXBsZSB3ZWVrIHNlbGVjdC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImNvbmZpZy5zZWxlY3RNdWx0aXBsZVdlZWtzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXBsZS13ZWVrc1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgI2RwRnJvbURhdGVcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgV2Vla3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb25maWcuY3VzdG9tQ2xhc3MgPT0gJycgPyAnJyA6IGNvbmZpZy5jdXN0b21DbGFzc11cIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIndlZWtOdW1iZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXNGb2N1c2VkKHRydWUpOyBpc0Ryb3Bkb3duT3BlbmVkRm9yQ2FsZW5kYXIoZGF0ZXBpY2tlcilcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIW11bHRpU2VsZWN0RHJvcGRvd25PcGVuXCIgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBtdWx0aXNlbGVjdC1pbnB1dC1hcnJvd1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibXVsdGlTZWxlY3REcm9wZG93bk9wZW5cIiBjbGFzcz1cIm1kaSBtZGktbWVudS11cCBtdWx0aXNlbGVjdC1pbnB1dC1hcnJvd1wiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPG5nYi1kYXRlcGlja2VyXHJcbiAgICAjd2Vla1BpY2tlclxyXG4gICAgKm5nSWY9XCIhY29uZmlnLnNob3dBc0Ryb3Bkb3duXCJcclxuICAgIFtkaXNwbGF5TW9udGhzXT1cIjFcIlxyXG4gICAgW3N0YXJ0RGF0ZV09XCJmcm9tRGF0ZSFcIlxyXG4gICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImNvbmZpZy5maXJzdERheU9mV2Vla1wiXHJcbiAgICBbc2hvd1dlZWtOdW1iZXJzXT1cImNvbmZpZy5zaG93V2Vla051bWJlcnNcIlxyXG4gICAgW2RheVRlbXBsYXRlXT1cInRcIlxyXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcclxuICAgIChkYXRlU2VsZWN0KT1cInNlbGVjdFdlZWsoJGV2ZW50KVwiXHJcbiAgICBbbWFya0Rpc2FibGVkXT1cImRpc2FibGVkRnVuY1wiXHJcbj5cclxuPC9uZ2ItZGF0ZXBpY2tlcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlDaGFuZ2VzKCk7IGNsb3NlRGF0ZXBpY2tlcihkYXRlcGlja2VyKVwiXHJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjMjY4YmZmOyBjb2xvcjogI2ZmZmZmZlwiXHJcbiAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtLTIgZmxvYXQtcmlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXZlcnREYXRlcygpOyBjbG9zZURhdGVwaWNrZXIoZGF0ZXBpY2tlcilcIlxyXG4gICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMTM5LCAyNTUsIDAuMTIpOyBjb2xvcjogIzI2OGJmZlwiXHJcbiAgICA+XHJcbiAgICAgICAgQ2FuY2VsXHJcbiAgICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdCBsZXQtZGF0ZSBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxyXG4gICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImN1c3RvbS1kYXlcIlxyXG4gICAgICAgIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIlxyXG4gICAgICAgIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICBbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IGlzSW5zaWRlKGRhdGUpXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyZWREYXRlID0gZGF0ZVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZERhdGUgPSBudWxsXCJcclxuICAgID5cclxuICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLVxyXG5cclxuPGhyPlxyXG5cclxuPHByZT5Gcm9tOiB7eyBmcm9tRGF0ZSB8IGpzb24gfX0gPC9wcmU+XHJcbjxwcmU+VG86IHt7IHRvRGF0ZSB8IGpzb24gfX0gPC9wcmU+XHJcbjxwcmU+d2Vla051bWJlcnM6IHt7IHdlZWtOdW1iZXJzIHwganNvbiB9fSA8L3ByZT5cclxuXHJcbi0tPlxyXG4iXX0=