gamma-app-controller 1.2.28 → 1.3.1

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 (58) hide show
  1. package/esm2020/lib/application-controller/application-content.service.mjs +3 -3
  2. package/esm2020/lib/application-controller/application-controller.module.mjs +9 -5
  3. package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +2 -2
  4. package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +3 -3
  5. package/esm2020/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.mjs +15 -39
  6. package/esm2020/lib/application-controller/application-menu-controller/application-menus/application-menus.component.mjs +5 -5
  7. package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +4 -1
  8. package/esm2020/lib/application-controller/common.mjs +1 -1
  9. package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +12 -6
  10. package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +19 -4
  11. package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +8 -4
  12. package/esm2020/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.mjs +3 -3
  13. package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +9 -5
  14. package/esm2020/lib/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +3 -3
  15. package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +1 -4
  16. package/esm2020/lib/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +1 -3
  17. package/esm2020/lib/shared/permission-helper.mjs +54 -0
  18. package/esm2020/lib/shared/security_principal.mjs +3 -0
  19. package/esm2020/lib/shared/shared.module.mjs +119 -0
  20. package/esm2020/lib/shared/template-dataset-call-service.mjs +376 -0
  21. package/esm2020/lib/shared/user-access/user-access.component.mjs +51 -0
  22. package/esm2020/lib/template-module/KpiCreationModule/create-kpi-tree.component.mjs +38 -4
  23. package/esm2020/lib/template-module/KpiCreationModule/kpiCreation.module.mjs +7 -3
  24. package/esm2020/lib/template-module/bookmarked-template/bookmarked-dataset-call.service.mjs +12 -344
  25. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +2 -2
  26. package/esm2020/lib/template-module/defaulLandingComponent/landing-dataset-call.service.mjs +12 -344
  27. package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.component.mjs +1 -3
  28. package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/multi-landing-dataset-call.service.mjs +12 -344
  29. package/esm2020/lib/template-module/kpiWithMultiLayout/multi-layout-dataset-call.service.mjs +13 -345
  30. package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +55 -26
  31. package/esm2020/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.mjs +12 -347
  32. package/esm2020/public-api.mjs +6 -1
  33. package/fesm2015/gamma-app-controller.mjs +2925 -3940
  34. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  35. package/fesm2020/gamma-app-controller.mjs +1237 -2257
  36. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  37. package/lib/application-controller/application-content.service.d.ts +1 -1
  38. package/lib/application-controller/application-controller.module.d.ts +2 -1
  39. package/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.d.ts +2 -4
  40. package/lib/application-controller/page-controller/page-controller/page-controller.component.d.ts +3 -1
  41. package/lib/application-controller/support-components/dash-chart/dash-chart.component.d.ts +2 -0
  42. package/lib/application-controller/support-components/dash-table/dash-table.component.d.ts +1 -0
  43. package/lib/application-controller/support-components/table-with-bar/table-with-bar.component.d.ts +1 -0
  44. package/lib/shared/permission-helper.d.ts +8 -0
  45. package/lib/shared/security_principal.d.ts +2 -0
  46. package/lib/shared/shared.module.d.ts +10 -0
  47. package/lib/shared/template-dataset-call-service.d.ts +23 -0
  48. package/lib/shared/user-access/user-access.component.d.ts +20 -0
  49. package/lib/template-module/KpiCreationModule/create-kpi-tree.component.d.ts +2 -0
  50. package/lib/template-module/KpiCreationModule/kpiCreation.module.d.ts +2 -1
  51. package/lib/template-module/bookmarked-template/bookmarked-dataset-call.service.d.ts +6 -13
  52. package/lib/template-module/defaulLandingComponent/landing-dataset-call.service.d.ts +5 -12
  53. package/lib/template-module/defaulLandingMultiLayoutComponent/multi-landing-dataset-call.service.d.ts +5 -12
  54. package/lib/template-module/kpiWithMultiLayout/multi-layout-dataset-call.service.d.ts +6 -13
  55. package/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.d.ts +4 -2
  56. package/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.d.ts +5 -14
  57. package/package.json +1 -1
  58. package/public-api.d.ts +5 -0
@@ -1224,4 +1224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1224
1224
  type: Injectable,
1225
1225
  args: [{ providedIn: "root" }]
1226
1226
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ToastrService }, { type: i3.DomSanitizer }]; } });
1227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sTUFBTSxDQUFDO0FBRWQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxhQUFhO0lBd0Z0QixZQUFvQixJQUFnQixFQUFVLE1BQXFCLEVBQVUsU0FBdUI7UUFBaEYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBdEZwRyx5QkFBb0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSx1QkFBa0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsdUJBQWtCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDL0QsNkJBQXdCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJeEQsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLG1DQUE4QixHQUFHLE1BQU0sQ0FBQztRQUMvQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFNekIsa0JBQWEsR0FBRyx1REFBdUQsQ0FBQztRQUtqRSxtQkFBYyxHQUNqQixpTkFBaU4sQ0FBQztRQUMvTSxxQkFBZ0IsR0FDbkIsaU5BQWlOLENBQUM7UUFDL00seUJBQW9CLEdBQ3ZCLHFVQUFxVSxDQUFDO1FBQ25VLGlCQUFZLEdBQ2Ysc09BQXNPLENBQUM7UUFDcE8sa0JBQWEsR0FDaEIsd1NBQXdTLENBQUM7UUFDdFMsb0JBQWUsR0FDbEIsdU5BQXVOLENBQUM7UUFDck4saUJBQVksR0FDZiwyTUFBMk0sQ0FBQztRQUN6TSxtQkFBYyxHQUNqQiwyTUFBMk0sQ0FBQztRQUN6TSxxQkFBZ0IsR0FDbkIsaUxBQWlMLENBQUM7UUFDL0ssb0JBQWUsR0FDbEIsd05BQXdOLENBQUM7UUFDdE4sYUFBUSxHQUFHLHdQQUF3UCxDQUFDO1FBS3BRLG1CQUFjLEdBQUcsZ09BQWdPLENBQUM7UUFDbFAsbUJBQWMsR0FBRyxnT0FBZ08sQ0FBQztRQUNsUCxtQkFBYyxHQUFHLGdPQUFnTyxDQUFDO1FBR2xQLG1CQUFjLEdBQUcseU5BQXlOLENBQUM7UUFDM08sbUJBQWMsR0FBRyx5TkFBeU4sQ0FBQztRQUMzTyxtQkFBYyxHQUFHLHlOQUF5TixDQUFDO1FBQzNPLHFCQUFnQixHQUFHLG9PQUFvTyxDQUFDO1FBR3hQLGtCQUFhLEdBQUcsbU5BQW1OLENBQUM7UUFDcE8sa0JBQWEsR0FBRyxtTkFBbU4sQ0FBQztRQUNwTyxrQkFBYSxHQUFHLG1OQUFtTixDQUFDO1FBR3BPLG1CQUFjLEdBQUcseUxBQXlMLENBQUM7UUFDM00sbUJBQWMsR0FBRyx5TEFBeUwsQ0FBQztRQUMzTSxtQkFBYyxHQUFHLHlMQUF5TCxDQUFDO1FBRzNNLGdCQUFXLEdBQUcsOE9BQThPLENBQUM7UUFDN1AsZ0JBQVcsR0FBRyw4T0FBOE8sQ0FBQztRQUM3UCxnQkFBVyxHQUFHLDhPQUE4TyxDQUFDO1FBRzdQLGlCQUFZLEdBQUcsaVVBQWlVLENBQUM7UUFDalYsaUJBQVksR0FBRyxpVUFBaVUsQ0FBQztRQUNqVixpQkFBWSxHQUFHLGlVQUFpVSxDQUFDO1FBRWpWLGtCQUFhLEdBQUcsc09BQXNPLENBQUM7UUFDdlAsa0JBQWEsR0FBRyxzT0FBc08sQ0FBQztRQUN2UCxrQkFBYSxHQUFHLHNPQUFzTyxDQUFDO1FBRXZQLGlCQUFZLEdBQUcsZ1BBQWdQLENBQUM7UUFDaFEsa0JBQWEsR0FBRyxtVEFBbVQsQ0FBQztRQUVwVSxzQkFBaUIsR0FBRywwTkFBME4sQ0FBQztRQTA0Q3RQLFdBQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO0lBMTRDc0csQ0FBQztJQUV6RyxRQUFRLEtBQUssQ0FBQztJQUVkLGNBQWMsQ0FBQyxPQUFZO1FBQ3ZCLElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUNyQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUMvQixNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDMUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUNuQiwwRkFBMEYsQ0FBQztRQUMvRixNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUM5QixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDakMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNqQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDN0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNoQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDL0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5QixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDcEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5QixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM1QixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDakMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDbkMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNyQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDaEMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMvQixNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNsQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxVQUFlLEVBQUUsVUFBZTtRQUM5QyxJQUFJLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDckIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDbEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDbkIsMkZBQTJGLENBQUM7UUFDaEcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDOUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMxQixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDM0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDOUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM3QixNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDaEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDN0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDbkMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMvQixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDcEMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNwQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDcEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDNUIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN2QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDckMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqQyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDcEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDbEMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFdkMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUdELGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUztRQUUvQyxJQUFJLE9BQU8sR0FBRyxPQUFPLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUU1RSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFHYixHQUFHLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUc5QixJQUFJLFNBQVMsRUFBRTtZQUNYLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUdiLEtBQUssSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUUxQixHQUFHLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQzthQUN0QjtZQUVELEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBR3ZCLEdBQUcsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO1FBR0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBR2IsS0FBSyxJQUFJLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFCLEdBQUcsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN6QztZQUVELEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFHN0IsR0FBRyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFFRCxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDWCxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdEIsT0FBTztTQUNWO1FBR0QsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBRXpCLFFBQVEsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUczQyxJQUFJLEdBQUcsR0FBRyx1Q0FBdUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFRbkUsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUVoQixJQUFJLFdBQVcsS0FBSywwQkFBMEIsRUFBRTtZQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQztTQUMzRTthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUM7U0FDM0U7UUFLRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBR0QsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUN6QixPQUFPLENBQ0g7b0VBQ3dELEtBQUssd0JBQXdCLEtBQUs7a0RBQ3BELElBQUk7OzttQkFHbkMsQ0FDVixDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUN0QyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDZCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM5QyxPQUFPLE9BQU8sR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBR0QsbUNBQW1DLENBQUMsS0FBSztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELHFDQUFxQyxDQUFDLEtBQUssRUFBRSxHQUFHO1FBQzVDLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRTtZQUNsQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRTtnQkFDM0MscUJBQXFCLEVBQUUsR0FBRzthQUM3QixDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxxQ0FBcUMsQ0FBQyxLQUFLLEVBQUUsR0FBRztRQUU1QyxJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRTtZQUNsQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO2FBQU0sSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ25CLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDSCxHQUFHLEdBQUcsS0FBSyxDQUFDO1NBQ2Y7UUFDRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQ3pDLHFCQUFxQixFQUFFLEdBQUc7WUFDMUIscUJBQXFCLEVBQUUsR0FBRztTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QscUNBQXFDLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2hELElBQUksR0FBRyxDQUFDO1FBR1IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdEIsR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUVILElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtnQkFDZCxHQUFHLEdBQUcsR0FBRyxDQUFDO2dCQUNWLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7aUJBQU07Z0JBRUgsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDWixPQUFPLEdBQUcsQ0FBQzthQUNkO1NBRUo7UUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQ3pDLHFCQUFxQixFQUFFLEdBQUc7WUFDMUIscUJBQXFCLEVBQUUsR0FBRztTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQscUNBQXFDLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2hELElBQUksR0FBRyxDQUFDO1FBR1IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdEIsR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNILElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtnQkFDZCxHQUFHLEdBQUcsR0FBRyxDQUFDO2dCQUNWLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ0gsT0FBTyxHQUFHLENBQUM7YUFDZDtTQUNKO1FBR0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELDJDQUEyQyxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN0RCxJQUFJLEdBQUcsQ0FBQztRQUdSLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3RCLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDSCxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ1YsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUVELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUU7WUFDekMscUJBQXFCLEVBQUUsR0FBRztZQUMxQixxQkFBcUIsRUFBRSxHQUFHO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsR0FBRztRQUM1QixJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNuQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7UUFFRCxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUc5QixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBRUgsR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUNiO1FBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRTtZQUN6QyxxQkFBcUIsRUFBRSxHQUFHO1lBQzFCLHFCQUFxQixFQUFFLEdBQUc7U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELHFCQUFxQixDQUFDLEtBQUssRUFBRSxHQUFHO1FBQzVCLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ25CLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDWDtRQUVELEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBRzlCLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFFSCxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ2I7UUFDRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQ3pDLHFCQUFxQixFQUFFLEdBQUc7WUFDMUIscUJBQXFCLEVBQUUsR0FBRztTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQUc7UUFDekIsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDbkIsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNYO1FBRUQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFHM0IsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUVILEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDYjtRQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUU7WUFDekMscUJBQXFCLEVBQUUsR0FBRztZQUMxQixxQkFBcUIsRUFBRSxHQUFHO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFNO1FBQ25CLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTSxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3hCLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7UUFDMUMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDM0I7YUFBTTtZQUNILFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFFRCxPQUFPLENBQ0gsZ0NBQWdDO1lBQ2hDLG9EQUFvRDtZQUNwRCxLQUFLO1lBQ0wsdUJBQXVCO1lBQ3ZCLFdBQVc7WUFDWCxJQUFJO1lBQ0osMkNBQTJDO1lBQzNDLDhDQUE4QztZQUM5QyxJQUFJLENBQUMsbUNBQW1DLENBQUMsVUFBVSxDQUFDO1lBQ3BELFFBQVE7WUFDUixRQUFRLENBQ1gsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUc7UUFDdEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUNELEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNmLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUVYLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM3RCxPQUFPLEdBQUcsQ0FBQztTQUNkO1FBR0QsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRzNFLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxHQUFHO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7SUFDcEMsQ0FBQztJQUlELHFCQUFxQixDQUFDLElBQUksRUFBRSxHQUFHO1FBQzNCLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUNyQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDWixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDbkMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO2FBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksR0FBRyxHQUFHLENBQUM7U0FDZDtRQUNELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxHQUFHLDJCQUEyQixDQUFDO1lBQ25DLFdBQVcsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUN2QzthQUFNLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNqQixXQUFXO2dCQUNQLGlDQUFpQztvQkFDakMsSUFBSTtvQkFDSiw4Q0FBOEMsQ0FBQztTQUN0RDthQUFNO1lBQ0gsV0FBVztnQkFDUCx5QkFBeUI7b0JBQ3pCLElBQUk7b0JBQ0osK0NBQStDLENBQUM7U0FDdkQ7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQVM7UUFDZCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFO1lBQ3hCLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM1QztpQkFBTSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0gsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQU87UUFDbEIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUFJLEdBQUcsT0FBTyxFQUNkLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdkMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxFQUNGLEdBQUcsR0FBRyxFQUFFLEVBQ1IsQ0FBQyxFQUNELEdBQUcsRUFDSCxTQUFTLENBQUM7UUFDZCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsa0NBQWtDLENBQUMsS0FBSztRQUNwQyxPQUFPLEtBQUs7YUFDUCxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQzthQUNsQixPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO2FBQ25DLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUM7YUFDeEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFJO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBSztRQUNoQixJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDN0IsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDO1FBQzdCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxLQUFLLElBQUksYUFBYSxFQUFFO1lBQ3hCLElBQUksUUFBUSxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDaEMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUU7Z0JBQ2IsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNILE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQzthQUN4QjtTQUNKO2FBQU0sSUFBSSxLQUFLLElBQUksY0FBYyxFQUFFO1lBQ2hDLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDM0IsT0FBTyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxLQUFLLElBQUksYUFBYSxFQUFFO1lBQy9CLElBQUksR0FBRyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDeEIsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxLQUFLLElBQUksYUFBYSxFQUFFO1lBQy9CLElBQUksR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdkIsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxHQUFHLE1BQU0sQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVE7UUFDdkIsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ1osT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDYixJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFDbEIsSUFBSSxRQUFRLElBQUksU0FBUyxJQUFJLFFBQVEsSUFBSSxFQUFFLEVBQUU7WUFDekMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsT0FBTyxVQUFVLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVE7UUFFekIsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ1osT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELElBQUksS0FBSyxJQUFJLFNBQVMsRUFBRTtZQUNwQixPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNiLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUNsQixJQUFJLFFBQVEsSUFBSSxTQUFTLElBQUksUUFBUSxJQUFJLEVBQUUsRUFBRTtZQUN6QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxJQUFJLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2IsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLElBQUksUUFBUSxJQUFJLFNBQVMsSUFBSSxRQUFRLElBQUksRUFBRSxFQUFFO1lBQ3pDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDVjtRQUNELElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxDQUFDO0lBRWIsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLElBQUksUUFBUSxJQUFJLFNBQVMsSUFBSSxRQUFRLElBQUksRUFBRSxFQUFFO1lBQ3pDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDVjtRQUNELElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxDQUFDO0lBRWIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLO1FBQ2hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNmLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksVUFBVSxDQUFDO1lBQ2YsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRTtnQkFDakQsVUFBVSxHQUFHLFVBQVUsQ0FDbkIsQ0FBQyxTQUFTLElBQUksQ0FBQztvQkFDWCxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FDM0IsQ0FBQztnQkFDRixJQUFJLGlCQUFpQixHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JFLElBQUksaUJBQWlCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDL0IsTUFBTTtpQkFDVDthQUNKO1lBQ0QsUUFBUSxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUk7UUFDaEIsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7WUFDbkMsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTTtRQUMzQixJQUFJLFFBQVEsQ0FBQztRQUNiLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztRQUNyQyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU07UUFDN0IsSUFBSSxRQUFRLENBQUM7UUFDYixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDckMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQzNCLElBQUksZUFBZSxDQUFDO1FBR3BCLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNiLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDMUI7YUFBTTtZQUNILElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3BELGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkU7UUFHRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU07UUFDN0IsSUFBSSxVQUFVLENBQUM7UUFHZixJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDYixVQUFVLElBQUksSUFBSSxDQUFDO1NBQ3RCO2FBQU07WUFDSCxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDbkQ7UUFFRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUk7UUFDakIsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFJLElBQUksSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsT0FBTyxDQUNILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNkLDBEQUEwRCxDQUM3RCxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsT0FBTyxDQUNILElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4RCw2REFBNkQsQ0FDaEUsQ0FBQzthQUNMO1NBQ0o7YUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDVixPQUFPLENBQ0gsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hELDJEQUEyRCxDQUM5RCxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsT0FBTyxDQUNILElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4RCw4REFBOEQsQ0FDakUsQ0FBQzthQUNMO1NBQ0o7YUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPLENBQ0gsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hELDhEQUE4RCxDQUNqRSxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBR0QsMkJBQTJCO1FBQ3ZCLE9BQU87WUFDSCxLQUFLLEVBQUUsU0FBUztZQUNoQixLQUFLLEVBQUUsU0FBUztZQUNoQixLQUFLLEVBQUUsU0FBUztZQUNoQixLQUFLLEVBQUUsU0FBUztZQUNoQixLQUFLLEVBQUUsU0FBUztTQUNuQixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU87WUFDSCxLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFLFVBQVU7WUFDakIsS0FBSyxFQUFFLE9BQU87WUFDZCxLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFBO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU87WUFDSCxLQUFLLEVBQUUsd3JLQUF3cks7WUFDL3JLLEtBQUssRUFBRSxneFlBQWd4WTtZQUN2eFksS0FBSyxFQUFFLDRqUkFBNGpSO1lBQ25rUixLQUFLLEVBQUUsd29HQUF3b0c7WUFDL29HLEtBQUssRUFBRSx3b0VBQXdvRTtTQUNscEUsQ0FBQTtJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFNO1FBQ3JCLElBQUksZ0JBQWdCLEdBQUc7WUFDbkIsS0FBSyxFQUFFO2dCQUNILElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLE1BQU0sRUFBRSxFQUFFO2dCQUNWLE9BQU8sRUFBRSwwRUFBMEU7Z0JBQ25GLEtBQUssRUFBRSxFQUFFO2FBQ1o7WUFDRCxLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLHVDQUF1QztnQkFDN0MsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLGlDQUFpQztnQkFDMUMsS0FBSyxFQUFFLEVBQUU7YUFDWjtZQUNELEtBQUssRUFBRTtnQkFDSCxJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixNQUFNLEVBQUUsY0FBYztnQkFDdEIsT0FBTyxFQUFFLG1EQUFtRDtnQkFDNUQsS0FBSyxFQUFFLEVBQUU7YUFDWjtZQUNELEtBQUssRUFBRTtnQkFDSCxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixNQUFNLEVBQUUsRUFBRTtnQkFDVixPQUFPLEVBQUUsNkRBQTZEO2dCQUN0RSxLQUFLLEVBQUUsRUFBRTthQUNaO1lBQ0QsS0FBSyxFQUFFO2dCQUNILElBQUksRUFBRSxzREFBc0Q7Z0JBQzVELE1BQU0sRUFBRSxFQUFFO2dCQUNWLE9BQU8sRUFBRSwyREFBMkQ7Z0JBQ3BFLEtBQUssRUFBRSxFQUFFO2FBQ1o7U0FDSixDQUFBO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBc0RELDhCQUE4QixDQUFDLElBQUk7UUFDL0IsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7WUFDbkMsT0FBTyxDQUFDLENBQUM7U0FDWjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBSTtRQUNmLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsaUNBQWlDLENBQUMsS0FBSztRQUNuQyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUEwQ0QsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU07UUFHNUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPLENBQUMsQ0FBQztTQUNaO1FBQ0QsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUdELE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ1QsT0FBTyxDQUFDLENBQUM7U0FDWjthQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2I7UUFDRCxTQUFTLGFBQWEsQ0FBQyxLQUFLO1lBQ3hCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUMzQixJQUFJLEdBQVEsQ0FBQztnQkFDYixHQUFHLEdBQUcsS0FBSyxDQUFDO2dCQUNaLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUIsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFFBQVE7UUFFdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTlELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5GLElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDYjtRQUNELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEMsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELElBQUksYUFBYSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFHRCxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxDQUFDO1NBQ1o7YUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDaEIsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsU0FBUyxhQUFhLENBQUMsS0FBSztZQUN4QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDM0IsSUFBSSxHQUFRLENBQUM7Z0JBQ2IsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDWixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBRWIsQ0FBQztJQVNELGdCQUFnQixDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQUk7UUFHbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUc7WUFDdEIsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO29CQUMzQixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUN4QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzlEO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFPO1FBQ3RCLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3BELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN6QztTQUNKO0lBQ0wsQ0FBQztJQUVELHNDQUFzQyxDQUFDLE9BQU8sRUFBRSxJQUFJO1FBRWhELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHO1lBQ3RCLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFBRTtvQkFDM0IsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQzt3QkFDM0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNyRTthQUVKO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPO1FBQ25DLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRCxJQUFJLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhFLE9BQU8sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLGFBQWE7UUFDN0IsSUFBSSxXQUFnQixDQUFDO1FBQ3JCLFdBQVcsR0FBRztZQUNWLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztZQUNsQyxNQUFNLEVBQUU7Z0JBQ0osY0FBYyxFQUFFO29CQUNaLFNBQVMsRUFBRSxLQUFLO29CQUNoQixVQUFVLEVBQUU7d0JBQ1I7NEJBQ0ksVUFBVSxFQUFFLFdBQVc7NEJBQ3ZCLFVBQVUsRUFBRSxhQUFhOzRCQUN6QixRQUFRLEVBQUUsdUJBQXVCOzRCQUNqQyxJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUsYUFBYSxDQUFDLFNBQVM7NEJBQzlCLFNBQVMsRUFDTCxvRUFBb0U7NEJBQ3hFLFlBQVksRUFBRSxrQ0FBa0M7eUJBQ25EO3dCQUNEOzRCQUNJLFVBQVUsRUFBRSxTQUFTOzRCQUNyQixVQUFVLEVBQUUsYUFBYTs0QkFDekIsUUFBUSxFQUFFLG9CQUFvQjs0QkFDOUIsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxPQUFPOzRCQUM1QixTQUFTLEVBQ0wsb0VBQW9FOzRCQUN4RSxZQUFZLEVBQUUsa0NBQWtDO3lCQUNuRDtxQkFDSjtpQkFDSjthQUNKO1NBQ0osQ0FBQztRQUVGLElBQUksYUFBYSxDQUFDLE9BQU8sSUFBSSxTQUFTLElBQUksYUFBYSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDckUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDOUMsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixRQUFRLEVBQUUsYUFBYSxDQUFDLGVBQWU7Z0JBQ3ZDLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTzthQUMvQixDQUFDLENBQUM7U0FDTjtRQUNELElBQUksYUFBYSxDQUFDLFVBQVUsSUFBSSxTQUFTLElBQUksYUFBYSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDM0UsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDOUMsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLE9BQU8sRUFBRSxhQUFhLENBQUMsVUFBVTthQUNwQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLFdBQVcsSUFBSSxTQUFTO1lBQ3RDLGFBQWEsQ0FBQyxXQUFXLElBQUksSUFBSSxFQUNuQztZQUNFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsV0FBVzthQUNuQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLFlBQVksSUFBSSxTQUFTO1lBQ3ZDLGFBQWEsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUNwQztZQUNFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixVQUFVLEVBQUUsVUFBVTtnQkFDdEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsWUFBWTthQUNwQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLGFBQWEsSUFBSSxTQUFTO1lBQ3hDLGFBQWEsQ0FBQyxhQUFhLElBQUksSUFBSSxFQUNyQztZQUNFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixVQUFVLEVBQUUsV0FBVztnQkFDdkIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsYUFBYTthQUNyQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLFNBQVMsSUFBSSxTQUFTO1lBQ3BDLGFBQWEsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUNqQztZQUNFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxjQUFjO2dCQUMxQixVQUFVLEVBQUUsWUFBWTtnQkFDeEIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO2dCQUM5RCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsYUFBYSxDQUFDLFNBQVM7YUFDakMsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUNJLGFBQWEsQ0FBQyxLQUFLLElBQUksU0FBUztZQUNoQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksRUFDN0I7WUFDRSxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLO2FBQy9CLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFDSSxhQUFhLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDcEMsYUFBYSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQ2pDO1lBQ0UsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDOUMsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxTQUFTO2FBQ2pDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxhQUFhLENBQUMsT0FBTyxJQUFJLFNBQVMsSUFBSSxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtZQUNyRSxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxVQUFVLEVBQUUsU0FBUztnQkFDckIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU87YUFDL0IsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLGFBQWEsQ0FBQyxHQUFHLElBQUksU0FBUyxJQUFJLGFBQWEsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFO1lBQzdELFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixVQUFVLEVBQUUsS0FBSztnQkFDakIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsR0FBRzthQUMzQixDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQ3JDLGFBQWEsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUNsQztZQUNFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxZQUFZO2dCQUN4QixVQUFVLEVBQUUsY0FBYztnQkFDMUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsVUFBVTthQUNsQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLFdBQVcsSUFBSSxTQUFTO1lBQ3RDLGFBQWEsQ0FBQyxXQUFXLElBQUksSUFBSSxFQUNuQztZQUNFLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixVQUFVLEVBQUUsY0FBYztnQkFDMUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsV0FBVzthQUNuQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQ0ksYUFBYSxDQUFDLGdCQUFnQixJQUFJLFNBQVM7WUFDM0MsYUFBYSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFDeEM7WUFDRSxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUM5QyxVQUFVLEVBQUUsaUJBQWlCO2dCQUM3QixVQUFVLEVBQUUsV0FBVztnQkFDdkIsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsZ0JBQWdCO2FBQ3hDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFDSSxhQUFhLENBQUMsV0FBVyxJQUFJLFNBQVM7WUFDdEMsYUFBYSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQ25DO1lBQ0UsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDOUMsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixRQUFRLEVBQUUsV0FBVztnQkFDckIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxXQUFXO2FBQ25DLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUdELGdCQUFnQixDQUFDLE1BQU07UUFDbkIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxJQUFJLFlBQVksQ0FBQztRQUNyQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFJRCxZQUFZLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxDQUFNLEVBQUUsQ0FBTTtRQUN2QyxPQUFPLGtFQUFrRTtZQUNyRSxvREFBb0QsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZO1lBQ2pGLHNFQUFzRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFlBQVk7WUFDbkcsVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsTUFBTTtRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFFMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDNUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUk7UUFDcEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtnQkFDWixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkI7U0FDSjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEMsT0FBTztnQkFDSCxPQUFPLEVBQUUsSUFBSTtnQkFDYixTQUFTLEVBQUUsR0FBRztnQkFDZCxPQUFPLEVBQUUsR0FBRzthQUNmLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxVQUFVO1FBQ3pDLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFFakIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUU3QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNsQixJQUFJLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUVwQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDMUU7eUJBQU07d0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDeEI7aUJBQ0o7cUJBQU07b0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLE1BQWdCO1FBQ25FLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLE9BQU8sV0FBVyxJQUFJLGFBQWEsRUFBRTtZQUNqQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFaEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksS0FBSyxLQUFLLFlBQVksRUFBRTtvQkFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ3BEO3FCQUFNO29CQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDthQUNKO1lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsMkJBQTJCLENBQUMsTUFBTSxFQUFFLEdBQUc7UUFDbkMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxJQUFJLFlBQVksQ0FBQztRQUNyQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQWlCO1FBQzdCLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxZQUFZO1FBQ3JDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksT0FBTyxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxPQUFPLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUUxQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxVQUFVLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM3RDtRQUNELElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxVQUFVLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM3RDtRQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBR0QsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE9BQU87UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBT0QsYUFBYSxDQUFDLEtBQUs7UUFDZixJQUFJLE1BQU0sR0FBRyxLQUFLO2FBQ2IsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7YUFDbEIsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQzthQUNuQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsS0FBSztZQUNsQyxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVQLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxVQUFVLEtBQUs7WUFDbkQsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztRQUVkLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDSiw2QkFBNkIsQ0FBQyxLQUFLLEVBQUMsY0FBcUI7UUFDbEQsSUFBSSxHQUFHLENBQUM7UUFDUixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN0QixHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO2dCQUNkLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ1YsT0FBTyxHQUFHLENBQUM7YUFDZDtpQkFBTTtnQkFDSCxPQUFPLEdBQUcsQ0FBQzthQUNkO1NBQ0o7UUFDRCxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBSztRQUVsQyxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkQsQ0FBQztJQUlELGlCQUFpQixDQUFDLEtBQUs7UUFDbkIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzswR0F2aERRLGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgXCJyeGpzXCI7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG4vLyBkZWNsYXJlIGxldCAkO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XG4gICAga3BpTGlzdERhdGFPYmplY3Q6IGFueTtcbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURSA9IG1vbWVudCgpLnN1YnRyYWN0KFwiMzBcIiwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgR19ERUZBVUxUX0VORF9EQVRFID0gbW9tZW50KCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICBkZWZhdWx0Q3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoXCJZWVlZLU1NLUREX2hoOm1tOnNzOlNTXCIpO1xuICAgIGRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyA9IG1vbWVudCgpLmZvcm1hdChcIllZWVlNTUREaGhtbXNzU1NcIik7XG4gICAgZ2xvYmFsX2xvYWRpbmc6IGFueTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcGVyYXRvcjogYW55O1xuICAgIHB1YmxpYyBLcGlJZDogYW55O1xuICAgIHB1YmxpYyBrcGlVcmxPYmplY3RDb250YWluZXIgPSBbXTtcbiAgICBwdWJsaWMgYWxsS3BpYnJvd3NlckRldGFpbENvbnRhaW5lcjogYW55O1xuICAgIHB1YmxpYyBHbE9CQUxfQVVUT19SRUxPQURJTkdfVElNRV9TRVQgPSAzMDAwMDA7XG4gICAgYnJlYWRDdW1ic0xpc3RBcnJheSA9IFtdO1xuICAgIGJyZWFkQ3VtYnNMaXN0SWQ6IGFueTtcbiAgICBwdWJsaWMgY3VycmVudFVybDogYW55O1xuICAgIGdsb2JhbF9rcGlfbmFtZTogYW55O1xuICAgIC8vIHNlbGVjdFBpY2tlclJlZnJlc2ggPSAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgLy8gc2VsZWN0UGlja2VyRGVzdG9yeSA9IFwiJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcignZGVzdHJveScpXCI7XG4gICAgZ2xvYmFsRG9jTGluayA9IFwiaHR0cDovLzIwMy4yMTUuMzMuMjIyOjMzMDAxL3Byb2R1Y3QvUHJvbnRvL2twaS9SUzIwMDJcIjtcbiAgICBtYXBDaGFydERldGFpbEhvbGRlciE6IG9iamVjdDtcbiAgICBmdXNpb25UaGVtZU5hbWU6IGFueTtcblxuICAgIC8vYnV0dG9ucyBzdGFydFxuICAgIHB1YmxpYyBidG5QcmltYXJ5Qmx1ZSA9XG4gICAgICAgIFwidGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlU20gPVxuICAgICAgICBcInRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMS41IG1yLTIgbWItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5TZWNvbmRhcnlBbHRlcm5ldCA9XG4gICAgICAgIFwicHktMi41IHB4LTUgbXItMiBtYi0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgYmctd2hpdGUgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtYmx1ZS03MDAgZm9jdXM6ei0xMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuRGFya0JsYWNrID1cbiAgICAgICAgXCJ0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuTGlnaHRXaGl0ZSA9XG4gICAgICAgIFwidGV4dC1ncmF5LTkwMCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGZvY3VzOm91dGxpbmUtbm9uZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0blN1Y2Nlc3NHcmVlbiA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZCA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctcmVkLTcwMCBob3ZlcjpiZy1yZWQtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLXJlZC02MDAgZGFyazpob3ZlcjpiZy1yZWQtNzAwIGRhcms6Zm9jdXM6cmluZy1yZWQtOTAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZFNtID1cbiAgICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0xLjUgbXItMiBtYi0yIGRhcms6YmctcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC03MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIjtcbiAgICBwdWJsaWMgYnRuV2FybmluZ1llbGxvdyA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5PdGhlcnNQdXJwbGUgPVxuICAgICAgICBcImZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLXB1cnBsZS03MDAgaG92ZXI6YmctcHVycGxlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTIuNSBtYi0yIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmhvdmVyOmJnLXB1cnBsZS03MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDBcIjtcbiAgICBwdWJsaWMgaW5wdXRPbmUgPSBcImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiO1xuICAgIC8vYnV0dG9ucyBlbmRcblxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVN1Y2Nlc3MgL2dyZWVuIEJ1dHRvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYnRuX3N1Y2Nlc3NfbGcgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLWdyZWVuLTcwMCBob3ZlcjpiZy1ncmVlbi04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiAgZGFyazpiZy1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi03MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fc3VjY2Vzc19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yICBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bl9zdWNjZXNzX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1ncmVlbi03MDAgaG92ZXI6YmctZ3JlZW4tODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6aG92ZXI6YmctZ3JlZW4tNzAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJpbWFyeS8gQmx1ZSBCdXR0b25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9wcmltYXJ5X2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fcHJpbWFyeV9tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcbiAgICBwdWJsaWMgYnRuX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJhZGdlX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIGlubGluZSBweC0wLjUgcHktMC41IG1yLTEgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGFuZ2VyLyBSZWQgQnV0dG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBidG5fZGFuZ2VyX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX21kID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdhcm5pbmcvIFllbGxvdyBCdXR0b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl93YXJuaW5nX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC1ibGFjayBiZy15ZWxsb3ctNDAwIGhvdmVyOmJnLXllbGxvdy01MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIjtcbiAgICBwdWJsaWMgYnRuX3dhcm5pbmdfbWQgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LWJsYWNrIGJnLXllbGxvdy00MDAgaG92ZXI6YmcteWVsbG93LTUwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy15ZWxsb3ctMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0zIHB5LTMgbXItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5fd2FybmluZ19zbSA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctOTAwXCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXJlc2V0LyBHcmF5IEJ1dHRvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9kYXJrX2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFya19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgYnRuX2Rhcmtfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctZ3JheS04MDAgaG92ZXI6YmctZ3JheS05MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0xIHB5LTEgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG5cblxuICAgIHB1YmxpYyBidG5fbGlnaHRfbGcgPSBcIm1zLTMgdGV4dC1ncmF5LTUwMCBiZy13aGl0ZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctYmx1ZS0zMDAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHRleHQtc20gZm9udC1tZWRpdW0gcHgtNSBweS01IGhvdmVyOnRleHQtZ3JheS05MDAgZm9jdXM6ei0xMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDBcIjtcbiAgICBwdWJsaWMgYnRuX2xpZ2h0X21kID0gXCJtcy0zIHRleHQtZ3JheS01MDAgYmctd2hpdGUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWJsdWUtMzAwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHB4LTMgcHktMyBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnotMTAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNjAwXCI7XG4gICAgcHVibGljIGJ0bl9saWdodF9zbSA9IFwibXMtMyB0ZXh0LWdyYXktNTAwIGJnLXdoaXRlIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctNCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy1ibHVlLTMwMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgdGV4dC1zbSBmb250LW1lZGl1bSBweC0xIHB5LTEgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp6LTEwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNTAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTYwMFwiO1xuXG4gICAgcHVibGljIGJ0bl9wdXJwbGVfbGcgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLXB1cnBsZS03MDAgaG92ZXI6YmctcHVycGxlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiAgZGFyazpiZy1wdXJwbGUtNjAwIGRhcms6aG92ZXI6YmctcHVycGxlLTcwMCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fcHVycGxlX21kID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1wdXJwbGUtNzAwIGhvdmVyOmJnLXB1cnBsZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcHVycGxlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmhvdmVyOmJnLXB1cnBsZS03MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS04MDBcIjtcbiAgICBwdWJsaWMgYnRuX3B1cnBsZV9zbSA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctcHVycGxlLTcwMCBob3ZlcjpiZy1wdXJwbGUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yICBkYXJrOmJnLXB1cnBsZS02MDAgZGFyazpob3ZlcjpiZy1wdXJwbGUtNzAwIGRhcms6Zm9jdXM6cmluZy1wdXJwbGUtODAwXCI7XG5cbiAgICBwdWJsaWMgYnRuRGFya0JsYWNrID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0bkxpZ2h0V2hpdGUgPSBcImN1cnNvci1wb2ludGVyIHRleHQtZ3JheS05MDAgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBmb2N1czpvdXRsaW5lLW5vbmUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgLy8gc21hbGwgYnV0dG9uXG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlX3NtID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtc21hbGwgcm91bmRlZCB0ZXh0LXNtIHB4LTIgcHktMS41IG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHsgfVxuXG4gICAgY2hhcnRSZW5kZXJOZXcoY2FwdGlvbjogYW55KSB7XG4gICAgICAgIGxldCBjaGFydHM6IGFueSA9IHt9O1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udFwiXSA9IFwiVmVyZGFuYVwiO1xuICAgICAgICBjaGFydHNbXCJjYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViQ2FwdGlvblwiXSA9IGNhcHRpb247XG4gICAgICAgIGNoYXJ0c1tcInN1YmNhcHRpb25Gb250Q29sb3JcIl0gPSBcIiNkNGQwZDBcIjtcbiAgICAgICAgY2hhcnRzW1wieEF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wieUF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicFlBeGlzTmFtZVwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInNZQXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzaG93VmFsdWVzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcIm51bWJlclByZWZpeFwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInBhbGV0dGVDb2xvcnNcIl0gPVxuICAgICAgICAgICAgXCIjMWU4OGU1LCNmNDQzMzYsIzFhYWY1ZCwjMWZiNjIyLCM3ZTAwYjAsI0U3NEMzQywjQUFCN0I4LCNEMzU0MDAsIzI3Mzc0NiwjMTdBNTg5LCMyNzM3NDYsXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzQyNDI0Mic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhbnZhc0JnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInVzZVBsb3RHcmFkaWVudENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RCb3JkZXJBbHBoYVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQm9yZGVyQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQmdBbHBoYVwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJsZWdlbmRTaGFkb3dcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0hvdmVyRWZmZWN0XCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcInZhbHVlRm9udENvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInJvdGF0ZVZhbHVlc1wiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJwbGFjZVZhbHVlc0luc2lkZVwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJkaXZsaW5lQ29sb3JcIl0gPSBcIiM2Njk5Y2NcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUlzRGFzaGVkXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVEYXNoTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVHYXBMZW5cIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUFscGhhXCJdID0gXCI2MFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlVkdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbJ2NhbnZhc0JnQ29sb3InXSA9ICcjNDI0MjQyJztcbiAgICAgICAgY2hhcnRzW1wiY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJjYXB0aW9uRm9udFNpemVcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEVuYWJsZWRcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0Rm9ybWF0c1wiXSA9IFwiUE5HfEpQR1wiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRGaWxlTmFtZVwiXSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjaGFydHNbXCJzbGFudExhYmVsc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dBbHRlcm5hdGVIR3JpZENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBDb2xvclwiXSA9IFwiI2ZmZmZmZlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyVGhpY2tuZXNzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0NvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0FscGhhXCJdID0gXCI4MFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJsYWJlbERpc3BsYXlcIl0gPSBcInJvdGF0ZVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG4gICAgICAgIHJldHVybiBjaGFydHM7XG4gICAgfVxuXG4gICAgZ2V0TmV3bXNjb21iaWR5MmQocFlBeGlzTmFtZTogYW55LCBzWUF4aXNOYW1lOiBhbnkpIHtcbiAgICAgICAgbGV0IGNoYXJ0czogYW55ID0ge307XG4gICAgICAgIGNoYXJ0c1tcImJhc2VGb250XCJdID0gXCJWZXJkYW5hXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25cIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJDYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRDb2xvclwiXSA9IFwiI2Q0ZDBkMFwiO1xuICAgICAgICBjaGFydHNbXCJ4QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJ5QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJwWUF4aXNOYW1lXCJdID0gcFlBeGlzTmFtZTtcbiAgICAgICAgY2hhcnRzW1wic1lBeGlzTmFtZVwiXSA9IHNZQXhpc05hbWU7XG4gICAgICAgIGNoYXJ0c1tcInNob3dWYWx1ZXNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibnVtYmVyUHJlZml4XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicGFsZXR0ZUNvbG9yc1wiXSA9XG4gICAgICAgICAgICBcIiMxZTg4ZTUsI2Y0NDMzNiwjMWFhZjVkLCNjZmUzMjAsIzdlMDBiMCwjRTc0QzNDLCNBQUI3QjgsI0QzNTQwMCwjMjczNzQ2LCMxN0E1ODksIzI3Mzc0NiwgXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dCb3JkZXJcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ1c2VQbG90R3JhZGllbnRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJwbG90Qm9yZGVyQWxwaGFcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJvcmRlckFscGhhXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kU2hhZG93XCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dIb3ZlckVmZmVjdFwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJ2YWx1ZUZvbnRDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJyb3RhdGVWYWx1ZXNcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wicGxhY2VWYWx1ZXNJbnNpZGVcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2bGluZUNvbG9yXCJdID0gXCIjNjY5OWNjXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVJc0Rhc2hlZFwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lRGFzaExlblwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lR2FwTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVBbHBoYVwiXSA9IFwiNjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0FsdGVybmF0ZVZHcmlkQ29sb3JcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzWydjYW52YXNCZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25Gb250U2l6ZVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMFwiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRFbmFibGVkXCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEZvcm1hdHNcIl0gPSBcIlBOR3xKUEdcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0RmlsZU5hbWVcIl0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY2hhcnRzW1wibGFiZWxEaXNwbGF5XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic2xhbnRMYWJlbHNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlSEdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQ29sb3JcIl0gPSBcIiNmZmZmZmZcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEJvcmRlclRoaWNrbmVzc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdBbHBoYVwiXSA9IFwiODBcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcImxhYmVsRGlzcGxheVwiXSA9IFwicm90YXRlXCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIGNoYXJ0cztcbiAgICB9XG5cbiAgICAvLyBqc29uIHRvIGNzdiBjb252ZXJ0b3JcbiAgICBKU09OVG9DU1ZDb252ZXJ0b3IoSlNPTkRhdGEsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcbiAgICAgICAgLy9JZiBKU09ORGF0YSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gSlNPTi5wYXJzZSB3aWxsIHBhcnNlIHRoZSBKU09OIHN0cmluZyBpbiBhbiBPYmplY3RcbiAgICAgICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gXCJvYmplY3RcIiA/IEpTT04ucGFyc2UoSlNPTkRhdGEpIDogSlNPTkRhdGE7XG5cbiAgICAgICAgbGV0IENTViA9IFwiXCI7XG4gICAgICAgIC8vU2V0IFJlcG9ydCB0aXRsZSBpbiBmaXJzdCByb3cgb3IgbGluZVxuXG4gICAgICAgIENTViArPSBSZXBvcnRUaXRsZSArIFwiXFxyXFxuXFxuXCI7XG5cbiAgICAgICAgLy9UaGlzIGNvbmRpdGlvbiB3aWxsIGdlbmVyYXRlIHRoZSBMYWJlbC9IZWFkZXJcbiAgICAgICAgaWYgKFNob3dMYWJlbCkge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFwiXCI7XG5cbiAgICAgICAgICAgIC8vVGhpcyBsb29wIHdpbGwgZXh0cmFjdCB0aGUgbGFiZWwgZnJvbSAxc3QgaW5kZXggb2Ygb24gYXJyYXlcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbMF0pIHtcbiAgICAgICAgICAgICAgICAvL05vdyBjb252ZXJ0IGVhY2ggdmFsdWUgdG8gc3RyaW5nIGFuZCBjb21tYS1zZXByYXRlZFxuICAgICAgICAgICAgICAgIHJvdyArPSBpbmRleCArIFwiLFwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgICAgICAvL2FwcGVuZCBMYWJlbCByb3cgd2l0aCBsaW5lIGJyZWFrXG4gICAgICAgICAgICBDU1YgKz0gcm93ICsgXCJcXHJcXG5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vMXN0IGxvb3AgaXMgdG8gZXh0cmFjdCBlYWNoIHJvd1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBcIlwiO1xuXG4gICAgICAgICAgICAvLzJuZCBsb29wIHdpbGwgZXh0cmFjdCBlYWNoIGNvbHVtbiBhbmQgY29udmVydCBpdCBpbiBzdHJpbmcgY29tbWEtc2VwcmF0ZWRcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbaV0pIHtcbiAgICAgICAgICAgICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1baW5kZXhdICsgJ1wiLCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvdy5zbGljZSgwLCByb3cubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgIC8vYWRkIGEgbGluZSBicmVhayBhZnRlciBlYWNoIHJvd1xuICAgICAgICAgICAgQ1NWICs9IHJvdyArIFwiXFxyXFxuXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQ1NWID09IFwiXCIpIHtcbiAgICAgICAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9HZW5lcmF0ZSBhIGZpbGUgbmFtZVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcInJlcG9ydF9cIjtcbiAgICAgICAgLy90aGlzIHdpbGwgcmVtb3ZlIHRoZSBibGFuay1zcGFjZXMgZnJvbSB0aGUgdGl0bGUgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiB1bmRlcnNjb3JlXG4gICAgICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCIgXCIpO1xuXG4gICAgICAgIC8vSW5pdGlhbGl6ZSBmaWxlIGZvcm1hdCB5b3Ugd2FudCBjc3Ygb3IgeGxzXG4gICAgICAgIGxldCB1cmkgPSBcImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwlRUYlQkIlQkZcIiArIGVuY29kZVVSSShDU1YpO1xuXG4gICAgICAgIC8vIE5vdyB0aGUgbGl0dGxlIHRyaWNreSBwYXJ0LlxuICAgICAgICAvLyB5b3UgY2FuIHVzZSBlaXRoZXI+PiB3aW5kb3cub3Blbih1cmkpO1xuICAgICAgICAvLyBidXQgdGhpcyB3aWxsIG5vdCB3b3JrIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gb3IgeW91IHdpbGwgbm90IGdldCB0aGUgY29ycmVjdCBmaWxlIGV4dGVuc2lvblxuXG4gICAgICAgIC8vdGhpcyB0cmljayB3aWxsIGdlbmVyYXRlIGEgdGVtcCA8YSAvPiB0YWdcbiAgICAgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJpO1xuXG4gICAgICAgIGlmIChSZXBvcnRUaXRsZSA9PT0gXCJEYXRhc291cmNlIE1pc3NpbmcgRmlsZXNcIikge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLnR4dFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLmNzdlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9zZXQgdGhlIHZpc2liaWxpdHkgaGlkZGVuIHNvIGl0IHdpbGwgbm90IGVmZmVjdCBvbiB5b3VyIHdlYi1sYXlvdXRcblxuICAgICAgICAvL3RoaXMgcGFydCB3aWxsIGFwcGVuZCB0aGUgYW5jaG9yIHRhZyBhbmQgcmVtb3ZlIGl0IGFmdGVyIGF1dG9tYXRpYyBjbGlja1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuXG4gICAgLy8gaHRtbCBmb3IgY29sb3IgYmFyXG4gICAgY3JlYXRlSHRtbCh3aWR0aCwgZGF0YSwgY29sb3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXBhZGRpbmdcIiBzdHlsZT1cImZsb2F0OmxlZnQ7IHdpZHRoOiAke3dpZHRofSU7IGJhY2tncm91bmQtY29sb3I6ICR7Y29sb3J9O1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC13aGl0ZSBiYXJcIj4ke2RhdGF9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICAgICAgPC9kaXY+YFxuICAgICAgICApO1xuICAgIH1cbiAgICAvLyBzY2FsZSBmb3IgY29sb3JiYXJcbiAgICBzY2FsZU51bWJlcihpbnB1dFksIHlNaW4sIHlNYXgsIHhNaW4sIHhNYXgpIHtcbiAgICAgICAgaWYgKHlNaW4gPT0geU1heCkge1xuICAgICAgICAgICAgaWYgKGlucHV0WSA9PSB5TWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHhNYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geE1pbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwZXJjZW50ID0gKGlucHV0WSAtIHlNaW4pIC8gKHlNYXggLSB5TWluKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJjZW50ICogKHhNYXggLSB4TWluKSArIHhNaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiBcbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSkge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYyKHZhbHVlLCBleHApIHtcbiAgICAgICAgaWYgKGV4cCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4cCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91bmRPZmZUaWxsVHdvKHZhbHVlLCBleHApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjModmFsdWUsIGV4cCkge1xuXG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmIChleHAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gMCkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsID0gXCJOQU5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNCh2YWx1ZSwgZXhwID0gMCkge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgYWxyZWFkeSBvbmVcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHsgLy8gQ2hlY2sgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIGEgbnVtYmVyXG4gICAgICAgICAgICB2YWwgPSBudW1lcmljVmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gXCItXCIpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBcIi1cIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHZhbCA9IFwiTkFOXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsgLy8gRWFybHkgcmV0dXJuIGFzIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBub3QgbWVhbmluZ2Z1bFxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9ybWF0IHRoZSBudW1iZXIgd2l0aCB0aG91c2FuZCBzZXBhcmF0b3IgYW5kIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlc1xuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gZm9yIG51bWJlciByZXR1cm5cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclY1KHZhbHVlLCBleHAgPSAwKSB7XG4gICAgICAgIGxldCB2YWw7XG5cbiAgICAgICAgLy8gQ29udmVydCB2YWx1ZSB0byBhIG51bWJlciBpZiBpdCdzIG5vdCBhbHJlYWR5IG9uZVxuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkgeyAvLyBDaGVjayBpZiB0aGUgY29udmVyc2lvbiByZXN1bHQgaXMgYSBudW1iZXJcbiAgICAgICAgICAgIHZhbCA9IG51bWVyaWNWYWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gXCItXCIpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBcIi1cIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmFOOyAvLyBSZXR1cm4gTmFOIHRvIGluZGljYXRlIGFuIGludmFsaWQgbnVtYmVyXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBOYU47IC8vIFJldHVybiBOYU4gdG8gaW5kaWNhdGUgYW4gaW52YWxpZCBudW1iZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyBiYWNrIHRvIGEgbnVtYmVyXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKTtcbiAgICB9XG5cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcklmcnNUeXBlKHZhbHVlLCBleHAgPSAwKSB7XG4gICAgICAgIGxldCB2YWw7XG5cbiAgICAgICAgLy8gQ29udmVydCB2YWx1ZSB0byBhIG51bWJlciBpZiBpdCdzIG5vdCBhbHJlYWR5IG9uZVxuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkgeyAvLyBDaGVjayBpZiB0aGUgY29udmVyc2lvbiByZXN1bHQgaXMgYSBudW1iZXJcbiAgICAgICAgICAgIHZhbCA9IG51bWVyaWNWYWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWwgPSBcIi1cIjtcbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9ybWF0IHRoZSBudW1iZXIgd2l0aCB0aG91c2FuZCBzZXBhcmF0b3IgYW5kIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlc1xuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3JhbXRlVmFsdWVGb3JBbW91bnQodmFsdWUsIGV4cCkge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAoZXhwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4cCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGl2aWRlIHRoZSB2YWx1ZSBieSAxMDAwMCBhdCB0aGUgb3V0c2V0XG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKSAvIDEwMDAwO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXN1bHQgaXMgYSBmaW5pdGUgbnVtYmVyXG4gICAgICAgIGlmIChpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBpbnB1dCBvciB0aGUgZGl2aXNpb24gcmVzdWx0IGlzIG5vdCBhIG51bWJlciwgaGFuZGxlIGdyYWNlZnVsbHlcbiAgICAgICAgICAgIHZhbCA9IFwiMFwiOyAvLyBEZWZhdWx0aW5nIHRvIFwiMFwiIHRvIGVuc3VyZSB0aGUgdG9Mb2NhbGVTdHJpbmcgY2FsbCBkb2VzIG5vdCBmYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvcmFtdGVWYWx1ZUZvckNoYXJnZSh2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmIChleHAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZXhwID0gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXZpZGUgdGhlIHZhbHVlIGJ5IDEwMDAwIGF0IHRoZSBvdXRzZXRcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpIC8gMTAwMDA7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJlc3VsdCBpcyBhIGZpbml0ZSBudW1iZXJcbiAgICAgICAgaWYgKGlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IG9yIHRoZSBkaXZpc2lvbiByZXN1bHQgaXMgbm90IGEgbnVtYmVyLCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgICAgICAgdmFsID0gXCIwXCI7IC8vIERlZmF1bHRpbmcgdG8gXCIwXCIgdG8gZW5zdXJlIHRoZSB0b0xvY2FsZVN0cmluZyBjYWxsIGRvZXMgbm90IGZhaWxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9yYW10ZVZhbHVlRm9yTW9VKHZhbHVlLCBleHApIHtcbiAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgaWYgKGV4cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpdmlkZSB0aGUgdmFsdWUgYnkgMTAwMDAgYXQgdGhlIG91dHNldFxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSkgLyA2MDtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVzdWx0IGlzIGEgZmluaXRlIG51bWJlclxuICAgICAgICBpZiAoaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5wdXQgb3IgdGhlIGRpdmlzaW9uIHJlc3VsdCBpcyBub3QgYSBudW1iZXIsIGhhbmRsZSBncmFjZWZ1bGx5XG4gICAgICAgICAgICB2YWwgPSBcIjBcIjsgLy8gRGVmYXVsdGluZyB0byBcIjBcIiB0byBlbnN1cmUgdGhlIHRvTG9jYWxlU3RyaW5nIGNhbGwgZG9lcyBub3QgZmFpbFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFiYnJldmlhdGVOdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIGxldCBTSV9QT1NURklYRVMgPSBbXCJcIiwgXCJLXCIsIFwiTVwiLCBcIkJcIiwgXCJUXCJdO1xuICAgICAgICBsZXQgdGllciA9IChNYXRoLmxvZzEwKE1hdGguYWJzKG51bWJlcikpIC8gMykgfCAwO1xuICAgICAgICBpZiAodGllciA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3VuZE9mZlRpbGxUd28obnVtYmVyLCAyKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcG9zdGZpeCA9IFNJX1BPU1RGSVhFU1t0aWVyXTtcbiAgICAgICAgbGV0IHNjYWxlID0gTWF0aC5wb3coMTAsIHRpZXIgKiAzKTtcbiAgICAgICAgbGV0IHNjYWxlZCA9IG51bWJlciAvIHNjYWxlO1xuICAgICAgICBsZXQgZm9ybWF0dGVkID0gc2NhbGVkLnRvRml4ZWQoMSkgKyBcIlwiO1xuICAgICAgICBpZiAoL1xcLjAkLy50ZXN0KGZvcm1hdHRlZCkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZCA9IGZvcm1hdHRlZC5zdWJzdHIoMCwgZm9ybWF0dGVkLmxlbmd0aCAtIDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWQgKyBwb3N0Zml4O1xuICAgIH1cblxuICAgIGNyZWF0ZVZhcmlhbmNlSHRtbEZvckNvdW50KHdpZHRoLCBkYXRhMSwgZGF0YTIpIHtcbiAgICAgICAgbGV0IGNvbHVtbkNvbG9yID0gXCJcIjtcbiAgICAgICAgbGV0IGNvbHVtbkRhdGEgPSBkYXRhMSAtIGRhdGEyO1xuICAgICAgICBpZiAoY29sdW1uRGF0YSA+IDApIHtcbiAgICAgICAgICAgIGNvbHVtbkNvbG9yID0gXCIjZmQwMDAwXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5Db2xvciA9IFwiI2RiMTUwMFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICc8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+ICcgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJuby1wYWRkaW5nXCIgc3R5bGU9XCJmbG9hdDpsZWZ0OyB3aWR0aDogJyArXG4gICAgICAgICAgICB3aWR0aCArXG4gICAgICAgICAgICBcIiU7IGJhY2tncm91bmQtY29sb3I6IFwiICtcbiAgICAgICAgICAgIGNvbHVtbkNvbG9yICtcbiAgICAgICAgICAgIFwiOyBcIiArXG4gICAgICAgICAgICAnaGVpZ2h0OiAxNXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9kaXY+JyArXG4gICAgICAgICAgICAnPGRpdiBjbGFzcz1cIm5vLXBhZGRpbmdcIiBzdHlsZT1cImZsb2F0OiBsZWZ0XCI+JyArXG4gICAgICAgICAgICB0aGlzLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKGNvbHVtbkRhdGEpICtcbiAgICAgICAgICAgIFwiPC9kaXY+XCIgK1xuICAgICAgICAgICAgXCI8L2Rpdj5cIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJvdW5kT2ZmVGlsbFR3byh2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwID09PSBcInVuZGVmaW5lZFwiIHx8ICtleHAgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9ICt2YWx1ZTtcbiAgICAgICAgZXhwID0gK2V4cDtcblxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpIHx8ICEodHlwZW9mIGV4cCA9PT0gXCJudW1iZXJcIiAmJiBleHAgJSAxID09PSAwKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNoaWZ0XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdChcImVcIik7XG4gICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCgrKHZhbHVlWzBdICsgXCJlXCIgKyAodmFsdWVbMV0gPyArdmFsdWVbMV0gKyBleHAgOiBleHApKSk7XG5cbiAgICAgICAgLy8gU2hpZnQgYmFja1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCJlXCIpO1xuICAgICAgICByZXR1cm4gKyh2YWx1ZVswXSArIFwiZVwiICsgKHZhbHVlWzFdID8gK3ZhbHVlWzFdIC0gZXhwIDogLWV4cCkpO1xuICAgIH1cblxuICAgIGdldG1hcENoYXJ0RGV0YWlsSG9sZGVyKHZhbCkge1xuICAgICAgICB0aGlzLm1hcENoYXJ0RGV0YWlsSG9sZGVyID0gdmFsO1xuICAgIH1cblxuXG5cbiAgICBnZXRfcGVyY2VudGFnZV9jaGFuZ2UocHJldiwgbm93KSB7XG4gICAgICAgIGxldCBwZXJjID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocHJldiAhPT0gMCkge1xuICAgICAgICAgICAgcGVyYyA9ICgobm93IC0gcHJldikgLyBwcmV2KSAqIDEwMDtcbiAgICAgICAgICAgIHBlcmMgPSB0aGlzLnJvdW5kT2ZmVGlsbFR3byhwZXJjLCAyKTtcbiAgICAgICAgfSBlbHNlIGlmIChub3cgIT09IDApIHtcbiAgICAgICAgICAgIHBlcmMgPSAxMDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGJhZGdlX2xhYmVsID0gXCJcIjtcbiAgICAgICAgaWYgKHBlcmMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGVyYyA9IFwiPGIgY2xhc3M9J3dpZy1uYSc+IE5BPC9iPlwiO1xuICAgICAgICAgICAgYmFkZ2VfbGFiZWwgPSBcIjxiPlwiICsgcGVyYyArIFwiPC9iPlwiO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcmMgPiAwKSB7XG4gICAgICAgICAgICBiYWRnZV9sYWJlbCA9XG4gICAgICAgICAgICAgICAgJzxzcGFuPjxiIGNsYXNzPVwiZ3JlZW4tYmFkZ2VcIj4gKycgK1xuICAgICAgICAgICAgICAgIHBlcmMgK1xuICAgICAgICAgICAgICAgICc8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tdXBcIiA+PC9pPjwvYj48L3NwYW4+JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhZGdlX2xhYmVsID1cbiAgICAgICAgICAgICAgICAnPHNwYW4+PGIgY2xhc3M9XCJyLWJnXCI+ICcgK1xuICAgICAgICAgICAgICAgIHBlcmMgK1xuICAgICAgICAgICAgICAgICc8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiID48L2k+PC9iPjxzcGFuPic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhZGdlX2xhYmVsO1xuICAgIH1cblxuICAgIGdldExhYmVsKGF0dHJfbmFtZSkge1xuICAgICAgICBsZXQgbGFiZWxfbmFtZSA9IFwiXCI7XG4gICAgICAgIGlmIChhdHRyX25hbWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoYXR0cl9uYW1lLmluZGV4T2YoXCItXCIpID4gMCkge1xuICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IGF0dHJfbmFtZS5yZXBsYWNlKC8tL2csIFwiIFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cl9uYW1lLmluZGV4T2YoXCJfXCIpID4gMCkge1xuICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IGF0dHJfbmFtZS5yZXBsYWNlKC9fL2csIFwiIFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0cl9uYW1lID0gYXR0cl9uYW1lLnJlcGxhY2UoLyhbQS1aXSkvZywgXCIgJDFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYWJlbF9uYW1lID0gdGhpcy5jYXBpdGFsaXNlV29yZChhdHRyX25hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYWJlbF9uYW1lO1xuICAgIH1cblxuICAgIGNhcGl0YWxpc2VXb3JkKGNvbnRlbnQpIHtcbiAgICAgICAgbGV0IHJldCA9IFwiXCI7XG4gICAgICAgIGxldCB0ZXh0ID0gY29udGVudCxcbiAgICAgICAgICAgIHRva2VucyA9IHRleHQuc3BsaXQoXCIgXCIpLmZpbHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ICE9IFwiXCI7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJlcyA9IFtdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGxlbixcbiAgICAgICAgICAgIGNvbXBvbmVudDtcbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSB0b2tlbnNbaV07XG4gICAgICAgICAgICByZXMucHVzaChjb21wb25lbnQuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgICAgICAgcmVzLnB1c2goY29tcG9uZW50LnN1YnN0cmluZygxKSk7XG4gICAgICAgICAgICByZXMucHVzaChcIiBcIik7IC8vIHB1dCBzcGFjZSBiYWNrIGluXG4gICAgICAgIH1cbiAgICAgICAgcmV0ICs9IHJlcy5qb2luKFwiXCIpO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGNvbnZlcnRUb1NwYWNlU2VwYXJhdGVkQ2FwaXRhbGl6ZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0XG4gICAgICAgICAgICAucmVwbGFjZSgvXy9nLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oW0EtWl0pKFtBLVpdW2Etel0pL2csICckMSAkMicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiXFx3L2csIGZpcnN0Q2hhciA9PiBmaXJzdENoYXIudG9VcHBlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBmb3JtYXRNaWxsaXNlYyh2YWx1ZSk6IGFueSB7XG4gICAgICAgIGxldCBtaWxsaXNlY0luRGF5ID0gODY0MDAwMDA7XG4gICAgICAgIGxldCBtaWxsaXNlY0luSG91ciA9IDM2MDAwMDA7XG4gICAgICAgIGxldCBtaWxsaXNlY0luTWluID0gNjAwMDA7XG4gICAgICAgIGxldCBtaWxsaXNlY0luU2VjID0gMTAwMDtcblxuICAgICAgICBpZiAodmFsdWUgPj0gbWlsbGlzZWNJbkRheSkge1xuICAgICAgICAgICAgbGV0IGRheVZhbHVlID0gdmFsdWUgLyA4NjQwMDAwMDtcbiAgICAgICAgICAgIGxldCBkYXkgPSBkYXlWYWx1ZS50b0ZpeGVkKDEpO1xuICAgICAgICAgICAgaWYgKGRheSA9PT0gXCIxXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5ICsgXCIgZGF5XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXkgKyBcIiBkYXlzXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gbWlsbGlzZWNJbkhvdXIpIHtcbiAgICAgICAgICAgIGxldCBob3VyID0gdmFsdWUgLyAzNjAwMDAwO1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyBcIiBoclwiO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5NaW4pIHtcbiAgICAgICAgICAgIGxldCBtaW4gPSB2YWx1ZSAvIDYwMDAwO1xuICAgICAgICAgICAgcmV0dXJuIG1pbiArIFwiIG1pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5TZWMpIHtcbiAgICAgICAgICAgIGxldCBzZWMgPSB2YWx1ZSAvIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gc2VjICsgXCIgc2VjXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPCAxMDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKyBcIiBtaWxcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvcm1hdEJ5dGVzKGJ5dGVzLCBkZWNpbWFscykge1xuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiMCBCeXRlXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGsgPSAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xuICAgICAgICBsZXQgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChkbSkpICsgXCIgXCIgKyBzaXplc1tpXTtcbiAgICB9XG5cbiAgICBmb3JtYXRCeXRlc3YyKGJ5dGVzLCBkZWNpbWFscykge1xuXG4gICAgICAgIGlmIChieXRlcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJ5dGVzID09IFwiTm8gRGF0YVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJObyBEYXRhXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGsgPSAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xuICAgICAgICBsZXQgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChkbSkpICsgXCIgXCIgKyBzaXplc1tpXTtcbiAgICB9XG5cbiAgICBmb3JtYXRCeXRzVG9LYihieXRlcywgZGVjaW1hbHMpIHtcbiAgICAgICAgaWYgKGJ5dGVzID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjBcIjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgayA9IDEwMjQ7XG4gICAgICAgIGxldCBkbSA9IGRlY2ltYWxzO1xuICAgICAgICBpZiAoZGVjaW1hbHMgPT0gdW5kZWZpbmVkIHx8IGRlY2ltYWxzID09IFwiXCIpIHtcbiAgICAgICAgICAgIGRtID0gMjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaSA9IGJ5dGVzIC8gaztcbiAgICAgICAgLy8gcmV0dXJuIHBhcnNlRmxvYXQoaSkudG9Mb2NhbGVTdHJpbmcoKS50b0ZpeGVkKGRtKSArICcgJyArICdLQic7XG4gICAgICAgIGxldCB2ID0gTnVtYmVyKGkpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGRtIH0pO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgLy8gY29uc29sZS5sb2codilcbiAgICB9XG4gICAgZm9ybWF0Qnl0c1RvR2IoYnl0ZXMsIGRlY2ltYWxzKSB7XG4gICAgICAgIGlmIChieXRlcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGcgPSAxMDI0ICogMTAyNCAqIDEwMjQ7XG4gICAgICAgIGxldCBkbSA9IGRlY2ltYWxzO1xuICAgICAgICBpZiAoZGVjaW1hbHMgPT0gdW5kZWZpbmVkIHx8IGRlY2ltYWxzID09IFwiXCIpIHtcbiAgICAgICAgICAgIGRtID0gMjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaSA9IGJ5dGVzIC8gZztcbiAgICAgICAgLy8gcmV0dXJuIHBhcnNlRmxvYXQoaSkudG9Mb2NhbGVTdHJpbmcoKS50b0ZpeGVkKGRtKSArICcgJyArICdLQic7XG4gICAgICAgIGxldCB2ID0gTnVtYmVyKGkpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGRtIH0pO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgLy8gY29uc29sZS5sb2codilcbiAgICB9XG5cbiAgICByZWZvcm1hdE51bWJlcih2YWx1ZSkge1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBcIlwiO1xuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgPj0gMTAwMCkge1xuICAgICAgICAgICAgbGV0IHN1ZmZpeGVzID0gW1wiXCIsIFwiS1wiLCBcIk1cIiwgXCJCXCIsIFwiVFwiXTtcbiAgICAgICAgICAgIGxldCBzdWZmaXhOdW0gPSBNYXRoLmZsb29yKChcIlwiICsgdmFsdWUpLmxlbmd0aCAvIDMpO1xuICAgICAgICAgICAgbGV0IHNob3J0VmFsdWU7XG4gICAgICAgICAgICBmb3IgKGxldCBwcmVjaXNpb24gPSAyOyBwcmVjaXNpb24gPj0gMTsgcHJlY2lzaW9uLS0pIHtcbiAgICAgICAgICAgICAgICBzaG9ydFZhbHVlID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgKHN1ZmZpeE51bSAhPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlIC8gTWF0aC5wb3coMTAwMCwgc3VmZml4TnVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICApLnRvUHJlY2lzaW9uKHByZWNpc2lvbilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBkb3RMZXNzU2hvcnRWYWx1ZSA9IChzaG9ydFZhbHVlICsgXCJcIikucmVwbGFjZShcImEteiBBLVogMC05XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChkb3RMZXNzU2hvcnRWYWx1ZS5sZW5ndGggPD0gMikge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNob3J0VmFsdWUgKyBzdWZmaXhlc1tzdWZmaXhOdW1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICB9XG5cbiAgICBpZk51bGxVbmRlZmluZWQoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIgXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgZ2V0VmFyaWFuY2VPZk1vdSh2YWx1ZTEsIHZhbHVlMikge1xuICAgICAgICBsZXQgdmFyaWFuY2U7XG4gICAgICAgIHZhcmlhbmNlID0gTWF0aC5hYnModmFsdWUxIC0gdmFsdWUyKTtcbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cblxuICAgIGdldFZhcmlhbmNlT2ZDb3VudCh2YWx1ZTEsIHZhbHVlMikge1xuICAgICAgICBsZXQgdmFyaWFuY2U7XG4gICAgICAgIHZhcmlhbmNlID0gTWF0aC5hYnModmFsdWUxIC0gdmFsdWUyKTtcbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cblxuICAgIGdldFBlcmNlbnRhZ2VNb3UodmFsdWUxLCB2YWx1ZTIpIHtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2VWYWx1ZTtcbiAgICAgICAgLy8gdmFsdWUxID0gNDM0NDU2OS45OTg1O1xuICAgICAgICAvLyB2YWx1ZTIgPSA2NTU4OTc4Ljk0NDU7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gMCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZVZhbHVlID0gXCJOQVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHBlcmNlbnRhZ2UgPSAoKHZhbHVlMSAtIHZhbHVlMikgKiAxMDApIC8gdmFsdWUxO1xuICAgICAgICAgICAgcGVyY2VudGFnZVZhbHVlID0gTWF0aC5hYnModGhpcy5yb3VuZE9mZlRpbGxUd28ocGVyY2VudGFnZSwgMikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0bXQgKz0gcGVyY2VudGFnZSArIFwiPGkgY2xhc3MgPSdmYSBmYS1jbG9jayc+PC9pPlwiO1xuXG4gICAgICAgIHJldHVybiBwZXJjZW50YWdlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0UGVyY2VudGFnZUNvdW50KHZhbHVlMSwgdmFsdWUyKSB7XG4gICAgICAgIGxldCBwZXJjZW50YWdlO1xuICAgICAgICAvLyB2YWx1ZTEgPSA0MzQ0NTY5Ljk5ODU7XG4gICAgICAgIC8vIHZhbHVlMiA9IDY1NTg5NzguOTQ0NTtcbiAgICAgICAgaWYgKHZhbHVlMSA8PSAwKSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlICs9IFwiTkFcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSAoKHZhbHVlMSAtIHZhbHVlMikgKiAxMDApIC8gdmFsdWUxO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0bXQgKz0gcGVyY2VudGFnZSArIFwiPGkgY2xhc3MgPSdmYSBmYS1jbG9jayc+PC9pPlwiO1xuICAgICAgICBsZXQgcGVyY2VudGFnZVZhbHVlID0gTWF0aC5hYnModGhpcy5yb3VuZE9mZlRpbGxUd28ocGVyY2VudGFnZSwgMikpO1xuICAgICAgICByZXR1cm4gcGVyY2VudGFnZVZhbHVlO1xuICAgIH1cbiAgICAvLyBmb3IgY2hhbmdpbmcgc3BhbiBjb2xvciBjb2RlXG4gICAgZ2V0Q29sb3JDb2RlU3BhbihkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhID49IC0xICYmIGRhdGEgPD0gMSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGRhdGEpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWNoZWNrLWNpcmNsZSB0ZXh0LWdyZWVuLTQwMCc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiA8aSBjbGFzcz0nZmEgZmEtbGcgZmEtYXJyb3ctY2lyY2xlLXVwIHRleHQtZ3JlZW4tNDAwJz48L2k+XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPCAtMSB8fCBkYXRhID4gMSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiA8aSBjbGFzcz0nZmEgZmEtbGcgZmEtYXJyb3ctY2lyY2xlLXVwIHRleHQtcmVkLTUwMCc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiA8aSBjbGFzcz0nZmEgZmEtbGcgZmEtYXJyb3ctY2lyY2xlLWRvd24gdGV4dC1yZWQtNTAwICc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09IFwiTkFcIiB8fCBkYXRhID09IGlzTmFOKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJOQVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKE1hdGguYWJzKGRhdGEpKSArXG4gICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS1kb3duIHRleHQtcmVkLTUwMCAnPjwvaT5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9wZXJhdG9yIGNvbG9yIG1hcFxuICAgIGdldF9vcGVyYXRvcl9jb2xvcl9jb2RlX21hcCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFGR0FUOiBcIiNkMWQyZDRcIixcbiAgICAgICAgICAgIEFGR0FXOiBcIiNmNDdhMjBcIixcbiAgICAgICAgICAgIEFGR0VBOiBcIiNiN2NjODdcIixcbiAgICAgICAgICAgIEFGR0FSOiBcIiNmZmNiMDVcIixcbiAgICAgICAgICAgIEFGR1REOiBcIiNmYmI2YzJcIixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvckJ5S2V5KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgQUZHQVQ6IFwiQUZURUxcIixcbiAgICAgICAgICAgIEFGR0FXOiBcIkFXQ0NcIixcbiAgICAgICAgICAgIEFGR0VBOiBcIkVUSVNBTEFUXCIsXG4gICAgICAgICAgICBBRkdBUjogXCJNVE5BRlwiLFxuICAgICAgICAgICAgQUZHVEQ6IFwiUk9TSEFOXCIsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvckJ5bG9nbygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFGR0FUOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCRkNBWUFBQUM4RWtQSEFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUR4dEpSRUZVZUp6dFhBbVVWTVVWWlJQWkZaQkZrYVVSZDdicEx0RUlZbHd3NUxpRnhDMFJSUVFSbUduVWlMZ1FFNHd4S2k0SUJsQkVtT2x4aVJGUjR4b2pycmdTR0VYakZrVlFFZHdPSGhCRlpjbTlYZmN6TmIvLy96MHpqRXpyZEoxem9idnFWZFdydWxXdnFsNVZUNzE2T1J5NlRTM3JFcHRhOXAwd3VyYjFxZk1CaEhRRkVWdUVzYld0ejA4eW9HTjNBcExBcFlDSmtzMFRzaDBDT3JZRjhMSTZlVnFVYko2UTdSQmlVeGFSbE5ucTVHZUFKbUd5ZVVLMlUwRG5EZ1UyQXl1QnZjTGs2andoc2FsTEdxTGhld0luQUJjQ2t5cUppY0F3b0EvUU9IczlaYjJBejRGTndQRmhjcmxPQ0hUcXJ2YWZ5N1V4U0FadDZDa1o5bWVuRUprV1hsKzZoZmNBNWdBZmFmUnVxUWErQUVwSmFuUkRsclIwMXBIcnd1UitCSVFjS2QyV0FWMURaRTV4K3ViQUlCbTBzNlBYVGk4VDkvdHZLWEtEYlB2VndFVSsvTjNwb1BYQUV5SnhCckFBV0t1MFJWUTJyQ0c3WHZzODY1d3UyWVZBc3hCRjZ4NGhuYWN1cm84UGR5dmlLMDIvRmdFRk53TmVrZHdhbXBwdWpubkM5eWJBU2NCbmtsa090STVveklreVdhdUFmVUlVclh1RTRKOTJ3RGVLdURlSURCVTh5T21jV1lFeU55elpRU2JMa3pzNW9qRUZ3SmZBOTJHenFhNFNNa3BmMWdGdEl5cS96ZW1jMEowUjBvNklXVmNINWU2TGtOc1pLSlBjWlNHSzFrbEN2QkY5YjViSzM1UGNKMW5rdUV2N1NMSXJzOGpPa2R5Q3JwaGRBWXJXU1VLODNjNGZzMVR1bWJXeUxIS2RnSGNrdTZuTkpVL1hqNUFkS3JrVlFDeEEwVHBKeUhKOUdaR2w4ZzJTVzVSRnJqUHdya2RJNjR1Zml5TEVPNDlzQkk0SlNLOFRoTVI4aEh5aUw2ZGtxZndEeWIyZlJXNWZwOHhzSm92bmtVV1N2U01nZmM4Y0orUTNsU0JrYURaQ2RNMndsWkJQWTFsMlJDcDR2dVI0YUd3ZklYZGN6RzVuS1R1L0VvMmFJZG12c1V0cjdrc2I2QkFTT1lOckkwQ25LNlFiVFhUZ0tSeng1MG5tWXlBUkl0T3ZPb1NNZERvbkdTTFRLRlp4Tnphc0VvMDZ6WkVmNkVzNzF4a0VSMmNyYTNzR3plNlhwRjladDZsTEFsMG5TSnNsR1o3aE1zNWIzYWFVOFJ3NHFqcUV0SEhNRm5kUi9iRXphdUNrTndYT2pObXpoVGRxV2xXaVlYRW56d1Fubm12UlVzVlR4LzJ5bGJXOVFzeWUzU2JIeXRmVmVUR25MeHk1N3JIeUhXZHh6SGRRUnA2R3NnSWVzU3NxVFlncUdCeXpwM1RQSnQ0UFRBTnVpRmszeW5xbFBRY01DTWpmWDdJdVpqdUV2S0c0Vkt4OFkwRHc5TTh0OGswNWdCTGdOVWMzejFYa2w2T2xXT2JJTFBTbGMrWThBS3gyWkNaV2lSQjFLZzkrTDhiS0QzOHUxcWd6dTRma0hSdVFKdys3eTd3SGFGbGxRdFN4UEdWenkwZUhJNmZ1TlVBaFlJQWRJL0lkQmR5VngxWndGbkZqTUFSbzduVlNsUW5KaHg4dzVBbkpzWkFuSk1kQ25wQWNDM2xDY2l6a0dpRm1YT25ld0owV3FjRFQ3MDg2NUNBaC9ZRXRGcW1PdGEzUGRnOTVRbklzNUFuSnNaQW5KTWRDR0NIeDVCeDJ6aTdxb0ZPQlFtQXM4R3NnRG9RKzhlbDkxbXprVGUwSW1YMkJ3Y0J3WUNSd0hOQVhDSHpad2xCWlFwRGVIT2dCSEE0TUE4NENUZ0FLb3NyM2xkRU82S2Q4STRBemdWK3kzRVF5MVRBaVh3eElBSjMwdlJHd0gzQXlVQ1JkRGdNcVBCcEpqRXMxbE03SHF5OUhTditZT1ZzUGVZSUlnVUJqNEhSZ01mQk5lUWR0eFZyZ0ZlQU1vS2xQMlRiQVJPQko0Qk5nc3kvdkd1RGZ3RUdKd3RJcUV5SWlSZ1BQQUI4Q0czM2xmd2s4Q3h4cnhwVmt1TVJWUmlmZ091QjFZTDB2L3lhVk96bHMwQ0YrTnJBT21BRzBCNllCcTMxdC9RNG9Bd1lwVDNmZ1N1QUQxZUhLclFER283Mk5NZ2lKSjB2cmFiUjhCV3dBbmdkbUFsY0Exd01QQXUrb0kzNExOUEFwdTcrSVlQcWJ3RHpnYXVBYVlJRkQ4R3RBdDJvUTBsNTVxZHN5NlhNdGNCWHdUM1VVODY4QytvVjA2RUNIdkJlQVdjclBqbjBKK0Y3NlR6Ykowb3kzeW9pL1RmbVhxSDNyTkVDbWkraDdnQzhrOHpsd3FNamZvSUU4UjMzSnZKOUtqbldlbGtFSUluY0dGb2x0S3RuU1ZTYWVUTlhYQ0tQNXlmZ3BBZUoyQU1ZQVE0Q09CWVczdUdrMFk2Y1pPMHRZZnNiTll6WkNFc2tTMWs4VGVnelFOVDZ1dUVGNVd0b2svRTZOWXhreitoYk95U0FFY2pReGx4cHJkaW84WStXc1VJZHQwY2c5SW9LUVRlcndZVzQ1Y2F2ano1M0I4WVUrLzlWd0daQjVrZ2s3VWlSUmJta1FJWHNZTzYyK0JUSXVtYlkxaUxDSHBVREd3NFpzaEdRTGlXUXBPK05SbGNIUjN6UjdyZ3dkRHREczRTeTVOQ0Q5dG5JZFM2Y0FnZXNONGxPTzNHVC80RTdyQ3d1RCtLRWV3VUdFZEFEZTBBaStNbWdXYkd0UUk2akFZd0ZwMjd6TFF0NEx2UkdITWtKZlkwYmszeDM0bjhxWUdwRHVFVUx6T3pDb0RNbU5jd2pwRlNHM2p5ZVhTWWlkOW5lYThnWDRQRlBKWFV0bGc0aG0rUXNDMG1xQ2tFS1Y4UnBHNEM3VnlOL1IyUFdQWmZ3dElOMGpoT3RVNEVOeHlZMlEzR2JNM05DQkRSMDdoeEtpZ2lqd25NTXVGL2piYVUvalJhV0JPNWNLRlJUZTZxMUZYRWNtQWJjYXU0QTlCRHd1Mjd4TmhHZ20vd0s0QkxnWitJZXhDL3pqenVpT0pNVFlyZXJaeGk2d3hjQjhtZE9GcG56M0ZVVUlOemVCejM4a2Q2Ymsxa2IxbDhsR2lJU2FhOHE5NXhDelJZMGR4WVV4cFBBK3h0cndEYjU4bTBYc1ovcS9Xb1Fndmd0UUdsQSs4YlhLWHh0RmlMRUw3dUtBL0J1Vjl6TlR2cDJPSW9TbXZVTkVSM3VFckFtVGtWeDJRcnlRc0FjOGJ0dTQ1MTduS1A4Q3pOc3V2b0lQTW5iTHUwV3lYTWdPUlJudDQyUG5ObkRrcGxlSEVNUjFNK1dtaFBYd1BNQ0RYS2VDd3BKR2p0eWtNRUtNUFpSNW5jMXp3aWhqdCtwdENrYlBiaUNacnNadXFYT1BFRi9HMXVwa3IwRjNBZWxYak9qMHhxWjg5L1FxRUk4b1oyWTFDWm1tdEpWQTM0ankveEpFQ093NHQ3c2ZlblZENTR3WDk4cFA0cGZuUENGT0FlTlZBTGZHaHp1TmVGL3hGNGJsalJlbXVNMTdzS3FFNElEV0RIRXZLNjBrTnJ3NFNyLzdnd2pCOXdIT0REOHVJai9ON3BvZkV5RjkvQTNELzNzQ0h5a3U5TytTR0hzQnRiS3FoQ1RzSnFGTWFhRi9jTUJZWDVGM01QUVRjb3lqOTZFUlpWemd5TlV1SWNiNnNkb2tpbEpSQlp5cUFuaDQ2cSs0WFlHM0ZIOGpSblNHT1RDMlUrYzZKcThxaEZDdnA1WEdUVU9RbDZDSnNUc3Vyek45aEtTNFZuaitwc0QzeVlqZnl5RStKd2hoNGlQRytvZTRyZHhYY1FRYk5NS1pDVnljMjZRN3pKNWZTaFJQVndFUGZ6Mk5QV1J4OWh3TFBHWHNZY3JiNFZSMURabW9EdVZ1aXV0RVhIclJjVWV2NlR5bFBTTFNLeEFTVDZiTjVYOVUvc2ZHZW5tN3F3eTI4M1NSd1ozbHFsd2k1QjBKY09xdmxvTEVwK29RTnBiclFGdGZ3ZnY3UmhlM2orK0tRT2Joem9pSE51Nk12cTBHSVR5dy9jdFlIeEwxK0ZMbHIxQjUzTEwrM3RqenhTby9JU3BqZ05ya3RXK0YyclphT3Y3WFdPZGphYTRRUWw4VDkrbmMwZENEdWRSWVUvU21SallQWUtlWWdOTjdsNU9tZUw0d09pV2Zsc0xNeDhXWU82cytxb1BPU1c1Wi94U2czRDRhNlVCcTU0QjBIZ2d2a202dlM3Y2w2aVRxVFY5V1MyTzlydGNuQXZ4SGlPOXRySWQzc2ZLekhCNkU2ZnpyRVI4OWx6SkRwRWZHNzFLTVBaOHg3UVlnOUNHR0taKzFKVmtJYWV1MW1ZUWNIN08vTCs4Y0lOaFl3cnVtUjJleXRGWFBVY1ZSWmFkRDM3RzNlbm5iYTFRM3o1cXBpZ0c2Y0wxb0o5MWE5Um1UNmRXTkNqMVBta1FkV3lrL3kybktBWlVQK1pBUCtaQVArWkFQTlJ6aUlROFVmdkpCZS9ZcTM2cFZveDRld0hiM3h4ZU1uRm5mRkticSsyUjNBbDQwanI5SnU3M0x1YTJ1UVoyNEF3ejl1eTNiTXhoN2VKNWVUd2VyRTJ1NGNCNTBMamJPR1FDZkh6TStweVBPR2ExMXJobmhPZ3YxQ0lGZWdONU8vazQ2TTRUNm9LcWhKNzBSdC90MDRqTW11dTkvMEVkNlBIemlqSFMwMTI1anZRNGIrWUhQWGtiVmNHVjhXY0pUK2xGT0hLK0ZyL0xKTlZIakIyVXJNMkZkLzN5ZE1hUUc5ZVNnZWRnWHg0ZDg5RFljVWtOMTBESk0xL1ZFK2tHZVB0UG5OaitoMXlvSmUvRzJoUm1lQU02dGljcTlFRS9Pclk5S0sveEdYU2Z6eUQ4TDY4ait5bGczRFUvUG5hUndVNW14NFRXbEo4bzZCM2pTSHg5UHByTCszY2dxMUtGblBxbk84Z1Rjd2tOb0lsbTZZNktvZE9zUFpCUDJrSm9taEs4SXozY0tvSk9RTjRSRFRZRGJvZktLcEtlK3V3YmNuTGFSOWpPZGZMMk12VmVoUzRXdUZyN3phcTVIRm5TRjNDMFR4ZnZ1MW9sa0NjMFlYeVNPQ1drNDB5TWZZeGg3TGIyZjg1MSt0V2UzZmsrbTI5NVBSUEhKN0c0RnlWVG9IOCtwWEQrazlkcGZuOXViOHVlbnJJdCt0Vzc4SGk5S3QyOHpFK2lzRys4VVFNY2ZIVzcwaGdhNnFDdXBDRzNpZXM4V3ErTm42UE1oeHI3OVlnZmZCTnhucktQd1Q4YmVsOURKUjBMcGJlYjkrK0NDVWNYZTREa25wRDRTbXZrMnRhSU1COWx5ejBkbTdQdmFoZnljR0pkKzNNYjA5NlVYL1Z0THBmZUJRS3VDd3VKcWsyUHNPK2tCM2lEbmJTVStQNUNlTlhvNGg4OGJLaEFDSWRwMDNqVmNydEh6YUx3b1ZhM3RKMFkwUndBOXA2ZXFNcGNRamtKZXBSYnE5ZDdldHFOS3B4cjdrSmtQR09qbVA4cFlyKzRFNWFOYi9ieVFCdDloQWp5elBobWF2VmU5V2VZU1lxdy9pMzNCeDlLMDhkeUJEZGRnNFhwSVIrUmgxZWtMbGMvQnhTZXdmWjA0bHMvSGZCMzBmUjMvZWR3anhGaFBLenVSQ3hzZk5EOFY5cnFra2tyd3p2MHlmWjYxbFpCazJtU2RvZEZJNHZrbTkyMWdqMFJSZXFTT1V3ZDQ5eTducUF4MldPQjZaNnlKZzFrTUgwQjl4NlRmTGZOTjJEemxLZHBLU0ZINmlleHVSaGRmK0wrWlp2SzFHaUQwWEIrd0RYM0IyY0ZyamNPZHVKOXBKaDZzNyt2NUQ5OWIzYU5SeTA1YUpqSTRraVlZNjA1UFZCRjhpamxZSFRwVWxmM1oySWZiQjZzdVhxZlNMVS96UkhQRmExT2FCcU9PR0svQndWMWdiOWhZa2tpWGZtRmdnNU9sZzR5OUErRTl4akJqWGZIOVZPYVI2bnp1OVBpTTZRTHBkS0owSEtoNkQ5Qkkvb094bDJtOEorR201eUVOa0tNbFY5WCtZUG04NS85V0E1UDE4SVVPdC9aOEE5YTU3NWhpdG04VGxlcWpqdUlDeWpNSm44ZnpEb1AyL0RwVGZoZnloZzlCY1Y2OGwwWXoxVlNONXk2RGE4RGJTbDhxSmMvWG9IalZ5Yzg2ZWJQSCs0WXVpZlFENy9SekpOcmN3THYvZ2pFbDN1WFdYQkh0NnNLNk9MdDR5M2dJZGpTTnBGTUxZMDJkMjBhYUZacnRDZW9ibWpuYWZ6NkRlajFMdThQaTNoYkJrNldiVngvdmRBNnpBeXJGRGNmSDlSekZPQk42cVdONFZjb0xHdSthazZmSUhsVUF5K29FOCtQL3FRSWIxODNZZFlLTmJDaGxPRHJhS0sySHlLdXdZOUtqWk83VkkvL2swMTdqYnVSc1llTm9mcnFycm5ZbS9HRWZGOWV1cXBleTdZUE1kRUZSTVUxYWh5cjJnNGV1MEtscFgydU8yenAxT1FmbjlGcWE2VFV3OXFFeUdlVTBuUm92bkx0TjI3N2FERVozN3JXdHh6WUZQYmZoRDJ1NG1GNWMyL3BVTjJCRThtVFA5V2NtZjY5UjIvcHNVOUIwNSs3cmpxamYydVY2QUNsc1I4YTlmQzZIL3dOQXdybjIvRm16TGdBQUFBQkpSVTVFcmtKZ2dnPT1cIixcbiAgICAgICAgICAgIEFGR0FXOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFDTENBWUFBQUNYOER3REFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUpGNUpSRUZVZUp6dG5RZFlGVmZheDBWTjNNU3hVa1NRSXZiZXUwYU5mWk50eVpaazk5dHY5NHZHRXRPTXE5SFlHMnJzR3NVR0VVUXBpZ1ZwSWlJV05QYXUySHRYTENGdEV6M2YvNTF6NXQ1ejU4NWNMb2lDaFBNOC8wZnZ6TndwNXpmLzl6M3Z1WmU1eFlvVnRhSlcxSXBhVVh2V3JlSEs4eFVicmpqMysvcmhaOGZWWDM1MmNiMndNMkYxUTg4c3FMUHM5S2RRaTFwZm55cVIzK2RZNkZ1VHlBdkZHa2RlOEdrY2NXRm1vNVhudndVVTFpRDhISFNXQVFpckM5VUpQYzBBaE5YKyt0U0JXaUVaWFdxR1pKVE03L011bEszWnFrdGV6YUl2aGphTnV2Zzl3REJBWVlEQzRCSVZDRnpDb1lTZTBZQXd1SVFCU0ZxTjRJd0dOWUpQdXVUM05SU0sxakxtU29rV01aZmJObDkxNlp0bTBaY1lnREI3SU9kWWZSV0tuVXNJQ0FPUUt3RFN2OXJTaytYeSszcGU2TlpxN2RWNkxkZGNpV2dSY3lXcitlckxERkFZWEdJT1JlOFNxSllWeW1NQU9WSnR5WWwvQml3K1VlU1duTFIyc2RkS3RWbC83ZVBXNjY2ZUFSUUdLQXd1WVFSRmRVbTBBQklwZ0ZBdWNSQzZhb1pBd1Jtc2V2QkpCaWlQQUdRRlZEVy9yN1BBdHc3eE40cTFqN3ZScHQyRzZ6dmFyci9HQUlWcFFCQzZPQkFEbHpUVXVhUytCa1NFTHNrbHJQcFNRRmx5Z2dGSVp0WEZKLzRUc09oNHFmeSs3Z0xYT2lYZGR1bVllS3ZWYXdrMzF3REt6NERDMnNaZVY0SEFKY3pPSlFKS0UwQnBuTE1FRHlpcVN3Z0lBeEFHSU9lcUxqeitudi9DWTBwKzkwT0JhSzhuMzZuUWVlT2R3WjJTYmwzdm1IQ0xkWWkveVFnSVhBSW9WcGVvVUdJRUZCV0llWUp2WUpEZ1RWekN3U3c4L25QVmhjY2lxd1lkcStjZmRLeDRmdmRKdnJTdW0rK1Y2cEp5ZDJDWFRYZVBBQXFEU3hoY3d1QVNRTG5Cb1JpNmhJY3VmWUp2bEtNRUwxeXl4T0lTZ2dJZHV3Y293VldEamxiSjcvNTVycTNibHZ2TnVxWm1oZ1BLOTREQ0NBaGNZb1ZDTG9tM2RVbnJ0UWFoSzlzRWY4WStkQ0hCMTdBbWVOa2xCSVFCeUdNQTJlKy80R2p2cXZPUEZtNjM5Tmoyb0Z6M3JROFdkVXU3LzB1M0xaa01RRmpYbEhzTUxtR2FTeEM2YkYxQ1VGU1hYTE54U1Fzbmg4RnlncS90S0hSWlhRSW9SMW5WQmREOG80Zjk1eDlwbGQvOWx1ZXQ1ODV2eS9kSWZ6U294NDZINXdHRmRkOTZud0VLZzBzRWxMc3FGQnVYYUZCVWx6aEk4SHFYT0pQZ2JZZkJsZ1JmZFpIRkpSWW9BUElkRk9ZLzczQXQ2TVYyVEk4ZEQxeDY3bnpVcStldWIvZmczeWVBd25wc2Z3Z2dEMVFncWtzSWl1UVNEUW9IWXB2Z05TQ2tGazRtZUxtQ3I1dGRncmR4eVRITkpRU0YrWDkxNUE2QWpQYWJkL2pWL083WFhMWHVXek5yZDk5MmYzblA5SWZmd1NGTUZRSFo4WkJ4bDNBb1hmV2hDMEE2R3lSNFk1ZFlhNU9tMGpBNDJ3UnZOQXdXVUtvYWh5NEN3Z0RrQ1lEczg1OTc2QzNmdVlkZWpObmt6dkZYWCsyNjZkWUgzYmJjeTZEUUJKZW9JT0FTSzVUdEdoVGIwS1YzQ1VFeEdnWlRnbS9wYUJqc0lNSFhzYW5nTTZ3SlhnTmltK0E1Rkt0TENBb0RsUHQrY3c4dDlKdHp5RCsvKzl0aGE3L2hjcy9PU1RmT0FBanJsbnFYZFUrN2g0Ni9yN3BDaGJGTGNva1V1dXhjb2cyRGsreGRZcFRnelNwNFU1ZllKZmlUTnFITDRwSWduVXZtVzRBd3VJUUJTSmJ2bkVPVC9XWWZMRGhUL00wak00cTNXbk8rZVp2MWw2TGJ4MTE5MGpIeE9zTE9UZFl0NVRaeXhEMTBlaVk2MzlZbFBXeENseE1KUHA1RGFaZlRCRzh5ejFYSElNSFhDTllWaS9vRWIrOFM1c2VoTUFBNTRUdjc0THZRSy9rS28wVkVobHZMNkxQVFdxMjU4TEQxdWt2b3NDdm92R3ZJQVRmUXFYREo1anM2bHp5U1hHSU5YWFlKWHF0TmhFczY2aEo4bTFqYmVTNm5FL3h5aDFQMFJoVzhjWUxYQVlGTDdnREdNc2dyWDBBMEREbFVzbW40aWI3TkkwNmRhQlY5OWttcm1QT0k2eGZRU1pmUmFWZVo1cEt1NUJJMWRHa3VlV2liUy9RSlB0VSt3ZXRka3UwOGw4RXd1S0hCTUxpT1BzRUgyODV6bVlVdWYydUNKMTBCbENHQTRnY28rVE9sM3lEa2NOTkdvY2RTbW9TZlpNMVhackNXVVdkWXExWG5HRnlDRHJySTJtNjRqSTY3aG82RVM1SzVTeWgwY1pjWWhDN0tKVnJvMGx4aWsrQnZaNWZnZjBDQ3Z3aVhYQUNVN3h3bWVMc1BzaHduZUR1WFdFUFhFNyt2anNRQmlHZStRS0JXSzJpdlc1M0ZCMmJYRHpuOFU4TmxSMW5qNVNkWTB4V0FFbkdLdFl3R0ZJdExLSFJkUlRLK2pzNkVTemFSUys1d2w1Z2xlTWtsUmhXOHlUQjRZK3YxMXpyQkpTOXI1OWh5OWVVU0FOSUtRRllnd1Q4Mm5xSS9hNS9nRFliQjFmVHpYQUtJUHc5ZEl3SEY0YkEzYTdqL1MxRGVENDJyenQxVnV2cjgzZjliTTJqdnBkcUw5N082U3creEJsOGZZWEFKYXhKK2dqV0RTMXBFbm9aTHpnb29GeEhqRWJyaXI3Sk9pY0lsRGhKOHoyd1MvT3ZKTmduK0NVTFhPUUQ1ZTd1NEd5K1puVE9BRkFlUUxnQ1NDaUEvT0RzTXJtWG1FbXVDL3hsUUJnR0tUWGhDeHhlSFdrS1RvVjNRUTRoQnYwQVhvVmpvL3lCUEtQY3dmR2VsKy92UDJia21ZTjQzck1hQ1Bheld3bjJzenBJRHJGN3dJYWE2Sk95NDFTVVV1bFpyb1VzaytBUks4T1FTMndUZlUzT0pLdnRoc0lsTGZrS0NudytYK0RoNy9nRHlDb0M4QlYwMUhRWTdtS0lQc0svZ2x3S0lIa1o1S0F6NlRrQndwTFBRZTFET2g4bFZwbTJ0NHpOeiszRy8yZWxQNEJJR2x6QzRoTlZlUkM0NXlCQzZ1RXVXVzEyQ0VaZXRTNlFFMzAxTDhGdWxCTytvZ3JlNjVBbWdwQ0RCZHdLVVhJVUFBS2tNSUdNQjVJRnA2TklsZUx2WjRFWEgwd0hGVndlak1YVEVDUkN5Zm9RQ29USk9YNEQzbE5ScVZhYW1IZmFadm8zNXp0ekI0QkttdW1TK2NNbGk0UktFTHRVbFNQRE43RnhDQ1o0UGd6dEp3MkExZEdrSlhob0c5NVRtdVNoMGRlVUovbWFYbEh0OUFDVlBZakdBZUVFYjVPOXoxUSt6em5QVk5oOEdQMFkrZVZNSHd3TTZsVU1Zc3VZNGRkSWU0NUpLVmc1TVNRTVVWdVhMcmN4bkJxRE1TbWZra21wZjdXWTE0SkphaXloMGNaZG9DYjRaaGE3SVU5d2xxODlqT0Fvb1NQRGtFa3J3NmpEWVVzSHpCTy9BSmJmZ2tqR0FVakV2UU9pZ0ZJTkQya0twQVBLamsvTmNCd0RGTXFtSXppd0xiWDBLR0tRbjBPK3lQV0gzY1VrOVBDZHVZbDZCbTVuMzFDME1vUXN1MmM3OFo1TkxLSFR0NGFGTHVNU2E0RStxb2F0bGxFandhODV6bDhSZXNSMEd5d2xlRElON1dSUDhUM0JKSEtCMHlXc1ErZ2FIVklRR0FjZzVKUGduOVJ3VmkwdFB6cFRmaTQ1OFN5VHNwd0hDaE1QTVA4dDNIYktxbE52WXhETWVFNUtaNTZRVTVqMlpYSkxHMU5BMWk0ZXVhbC9aSnZqNndZY2RKL2oxV29LL3JsYnczQ1g2Q2w0ZEJtOEZrSzZvVFY0MlBjRThibkFJeVFOUWhnTElYWk1Qc2g0Z24vU1MzNGRPVE1rREdKcitaWHFDcmlOaTI3aU9TV1R1NHpheVNnWXVRWUpuVmVkcENYNGY0OFBnZzFhWExEY1lCcSt6RG9QVkJKOXNsK0FmQU1RWEFKSnZSUmFBbEFDUTVzZ2xpUmdHLzZMN1B0ZFpoQzQvYlZzUnJwd1pVVG1yVU5NVGN4MFZQNWlBdUkxTll1N2p1VXU4eUNWVGhVdmtCRzgyREE0M0h3WjNTTENaNTNvTWw2eEhQcW4xWEhyZGlRYUhGQWVRWG5ESkZXa1l2QWN1c1h4U2lBNThJdzloa0E1QnhqV1Y2K2o0K1FSRWhVSXVtYkNKVlNhWFVJS2ZSZ2xldUlTR3dTTEJ5OE5nT2NHckxoSEQ0RmJ5TURqaCttTWsrR1NFcnQ4Q1NvSDhTQlF3eWtCOTRaSUxnSklzcjBQbkRjbGpJT2NoNDhHTDYraUVwUm9RVjgwbEZMb21ieFl1MmNwZE1wdTdSRTN3MGpCWURWMXdpVFhCMjdvRUNmNG1FdnhrVlBEbG4wdlBQbVVEakxxQTBsOWVoczRibGNkQUxrSHVoaWNBRUxNdFFJUkxMQWwraWtqd2NBa2xlRDRNRnFITGJoaDgzSGFlYS9XNUxFQ1pEQ2pWbjB0UFBzT0d6dXVkeDBBeXNzeEdXb0F3VXdaaWx1QjkxQVN2dVVSVThHYnpYRkdudHlQQi93bWg2N21ObnA1bHkrTFZlVjRDb1hyR09IUUR3SFE5RUVyd21rdThESWJCRGhMOFhTVDRmd0JLb2Z2cXY0ajdlUVZrbk9tQmpJRFlKL2d0aGdsZW0rZXF2UkNWL0p3ZGFZRGk5Q1RnaTlheStGeFVYc0Q0TDlUQTlFQm1RQ2pCZTBnSjN0dGdHRXlocTlyME5GYjVrMURtL243UVROT0RGSUtHVHF3SjNjMERJUE95SEUzSG13S1JFbnpsUU5zRTd6Y3JuZmw5dVlWNURZbGtIbjBYTXZjK0M1amIrMEV6bmx2djVFTkRKN3BrOFduMEg1NEN4bW1vZ3NNRFlkaHJDb1FQZ3pjeTZ6eFhtZ3JGYTlSNlZtbGdpQXBDMWZ0QnpMMXYwUFRuMURmNTF0Q1pwYUQ1dVlSeEZYb3oyNE80amttWVpncEVTdkNWa2VBcmo0bGpIaDhFVzBIMENSSXc0SkoraTZZOWh6N0o5eWFjTWdCNm5BTVlOTXgxYnZnUElGODZBcUlPZzBkdVlCNkRWa2dnN0dBdzkvNkxwejdqdmloUURSM2NESXFBYm1ieGFYV2o1SDBzaTFmNWJ2SjdmYWJ0S3drWmowVFI0ZVpBUnNVenQ4RlJ2Tk1sR0c3dmN4Z2VWaGpNWThDU0tjK2xKd3BReStLZnExZko0bFB6TTZCSUtGUkFhQXVWMXI4SElJcEQ3eEVVdzUyaTQ2Y2FocXJQWTVqN2dLVTZWMWhoYU03dzREQVF5cFpPZnVZOWtNOU4zTm1tWDdSdzR2Mi9nWUtnZlk2QVRMR0JNU0tXdVgwVWFnZkNESVk3aDhFOEJnYi9Hb0FFUUZ1Z042QWNmY1NNN2V0QVNSQ0REcHVDQllSQUM0aEJLM21IRzhCdzEyRDBXOGc4YkoxQk1GaWxEMzgxUURKRnA5NFFkL3Vmb0pwUUJRMlNDRXNLVkIzNkc3UVMrbEc4THhzZ28rSUR6Y0tUYmxockZLWXcvQ1VZSWF6U1J5R0ZIb2p2bDNzQ2ZLZnR6WVNZMUxta3ExQXlGQUo5QlMyQllxR0x1dTAwSFlHTTUvbmMreThKTkFXaGgwRWdER0Y4elNwOXZLendBNWtLSUZQM1pBSU1JeWdHWUp5VkF5QjlGa3cwZytFbXdkQ0hLWUxoWVlYQktuMFMraXNBc2h0QWRtY0NDbE1sd1Bqa0hNeFJ5UGhwRW1aQUxEQTBFSG9ZSDBrd1BnMWxub1BDQ2orUUtkOEVRQUN5bTNGWndmamt6REVPZ1V3d0RWT3lLN1FFL21FdzVRdUFBSXhQTERCWTVjK1dGMzRnazNjRitFNEdrQ25mTUM1N01FNkdzbU0wQkRZOGlDMlFJR01ZQkVMTEdjWXdtTmZnOE1JUEpCQkFBbmRsQWd3REdHWUJZK0NZYkVLWlF5RGpiWWExdHRXM2RWaXJnK0dwd1JnY3pyeitzNEo1RDFsWjZJSDRUTm9aNEJPNE05TTNjQ2NER0M0WmpKRmpMSEJzZ0J5SGpQOFVEakRHeVFXZlVZMmhEMU9la2pPOEFhUEtrSlhNWjJqRXJ3Qkllb0R2cFBSTS9NdDhWQ2dDakpPT2tjQ1lBd0dNY1NaVElXSllHeXlOcEtRd0JXY1FETytoZ1BGNUJQTWRGbG5vZ1ZTWm1CNEFxVUI4Q1lvQkdEK0E4Y3NlekFuZmFmdU1IMGFBZkRIV3pCbVZiSWUxM0JrOFgzQm5XR0JFTWIvaDBZVWVpUGVFN1FGUVpwV0pPeGpBc0NvYWxPekEySWV5RTVBSmtINkx4aG81dzhNT1JwZ0tvN0lSakMraW1mK0lWWVVlaU5mNGJRRmU0N2RuQWdvak9RdkdJSlNkZ0V5QTlGODh4dDI4K3JhQllldU1TT1k3UElyNUEwYlZrYXRZd0tqVmhSL0l1SzBCVUtiWHVHME1jSmpUWUVUeWx4eHpFbURzcHViVkJtZU10bmRHaUFNWUVSWVlmbFlZck5xWU5ZVWVTT1d4V3dNcUF3akV2RlFSbU8xMllId2NPRWFBT1Frd0prQStXRHE2a2tHWThyU3RNVENzRlRDR1JTSmZ5TTZJSVJpcyt0aTFoUjZJNTlpMGdNcGoweklCaG5sQ3RtQU1IRFBSRm95UDFURVpnR1A4elVVazcxRU9DejVlWStoZ3JBS00xUUxHV2xaOTNEcFdZL3k2UWcrazBwZ3RBVkFtd0RBdVFNa2RtQXk0eGdUSWg4RWpWV2M0Z09FandwUUtZNFF0akJxQVVYUENlbFp6WW15aEIrSXhPalVBeWdRVXBrcUF5WVZqVHFISU5QNERVRGhqcEZIQjUyVXQrS3pPTUlGUmEySXNxejFwUTZFSDRqWXFOY0FkUUFDRmtUUXduaElZSngwRElPa21RRDcrZW9RZEREVm5jQmkrRmhqUkxJQmdqRGFFd2VvRXh2OEtnR3dPZ0RJaDVpNmdtSUlacHdlakpYK0NzdU0wb0pRMVBJam5KNkVqS3VtbVFsUVluOHN3K0VncVlMU2F2Q1VZR3dBamp0V2RITS9xVGtrbzlFQmNSNlpVaGU2NWpVeGg3b0JpQnFhU0NrV0VNanN3Y016NDdhY0J4d1RJb0xBdjVLa1FhOEVYcVJWOHBqRHFCSElZOWFZbXN2cGZKazE2enYzejNGdkZFWnRxdTQ1SXlRSVVSaUl3Ymc3QTJDUi9XekJuSU9OZmJVQ05NZHhwR09OTllFemJ5QnBNVHk3MFh5V3QrRVZ5TCtnSndEQ0FZYzZDcVNTQkVZNEJrSzNHUUpBdmhwdE1oZkNDVHc5amtnWWpRWUt4aVRXY21aTGFjRmJxaS9HUXlGeTBDc00zdWxUNFltTm9oUytTR2FraUtmZGd6a0xHZitJSEdNUGtxUkMxK2phQlVkc0dSaEpnSkdzd0dHRGNiVFJuUzZIOU9ZaHl3NUo4eWcvYmVLdjg4STBBc3RFS0pYZGdBQ1ROR0FoY01jeFNZK2lyYjdYZ3N4bEpVZkttZk1GaHpDQVltMW1qMmFtczBkdzAxbmpldGtMNWhXdmw4OFJpWlQ5UG5GbDJXQklyTjJ5aktoWE1jQTRtRjQ0NUJ4bi9XUUx5eGVlK3hsTWhLb3lhRTJLdHp0QmdUTGVGMFpoZ2ZMV05OWm0vNDJIVGhUdTdQZWYrZXVaTkdaclF2Y3puaVk4QWhaSEs2Y0hrM0RIbklHTWdjTVpRRG1PMXpobnJqSjJod1poRk1MYW9NSm9BUnRQNU8xaXpvSFRXYk5HdXJCWkxkci9STW5odndYbU1haTZiTWlTdWVPa2g4VjBCNUZ1SWtjb0lLTGtGSTRiTDUxRmtHditkT3BMM1VHZGcxSE1FWXdIQjJNbWFMOXJGQUlPMUN0NzdxUFhYKzFlMURUM1lxdTN5d3k4a21OTC9pZk9HbHBRZUVwZXBESWxuQU1NMEtNNkNjUkRLemtQR1FGQjlENVVuQ1d0S09hT3V4UmtiQll3VUJ6QyswV0F3d0dCdFFnK3lkc3NQcy9ZcmpxM3RFSEg4aGZsajBOS2Z4Ull2UFRoMllPbkJHMjREQ05NRXQ3RGNnQ2x2RE9hOHF4a1FqS1ErTXF1K2VjR24xaGhXR0hNQVk5NVd3TmpPWVN3RWpNWGZzSlpMOTFoZ3RBMERqSERBV0htTWRZZzR3ZHBIbmZ5cC9lcFRVenJFbktuWlllM1pBdmtuMDhxbjY4b29nOWI5V1JtMC9peWdNRldETjNCSllPQVlGVXFPd05nbi8xTUFZenlYVlczczJyL1l6a3RacGtLMGdpOWJHQzBJUm9pQUFXZTBEejlDenRCZ3NBNnJUakhBWUIzV25qdlpNZmJDMjUzakxqbi9xTHRuM01wOHNyWUVWRWY1ZEcwNG9Id1BLQXhRVkhFb2VRakdHc3IyQUlweHpRWVlBUlpuMkZmZnJBR3ZNWFF3MG0yZEViSVBNQTVZWUhTQU05b0RSb2VvREJrR0F3d0dHRDkzVGJ5NnAvdkc2ejE3YkxxWnIyNHArL0VhRDJnSmdOeUZHS0JBNjdqMFlCdzRKcnRRWmpCY1htcDZVaGphRm9jekR0bFUzeUpNTmRURG1BOFlOSkphdU1zR1JwdGxnQkYyeUFvamttQlluZkdhRlFicm1uQ1ZkVXU2eGdBanMwZnE3VGs5MCs1VmZvNE0xRmIybzlVbHkzMFU4MDdaajJNT1FrOEFoUkVRVFE3Qk9IQk1EbkxNdngyZUlHQzhZWjBLU2JiQVVBdStPVWplT2hndERHRWNWWE9HQ2lNYXpsZ05HR3NBWTkwNTFna3dYbys3ek9BTUJtY1FETllqOVE3cnVmVWU2N245d1hlOTBoK042clhyMjJjZXhzcDl1QXBhM1JvNkJDaU1LNFlCaXRBYVZ0WlpNTGwzekQyQU1mNDgzUUprY2tLSmVsT1Q5cWhoYW9hWUNyRlczMVR3OFJwaklSL1cyc0ZZUVRDT1N6Qk9DeGpuQWVPaWdIR053MGl4d3VpMS9RSHJ0Zk1ScEQ1N01hUEh0dnR2OTlpYTZmaGtjOUVxZkJEbFV1R0Q2TnJsQjBhdkxEOXcxUThBd3dCRjFiTUVZNUJqbmdETVA1dzZhVGpqelFiVE45M1JuTkY0amdaanV4WEdZc0FJM3NOYUN4anRwRERWQVREYVc1eHhWZ2ZEM2htMk1CNlNVeGhnL05KOXk3MGwzVkp1MSttYWZDdFBIblJXWVVCVUdhZzNvSndIRkFZb1hDb1VQWmdZT3pCUEU4cGV0UWV6RTNMdWowYmhqT0lOWjI1K0V6WEdRN1hHbU1lcjc2YTgrdWJPMEdvTUZjWmhFMmNBeG5yQTJBQVk4UUpHOGcwNDQ1YUFrYWwyUG9Hd3dyaFBNRmozTFhmVlp6TUNSbWJueE92elhvdTdtdXVmZ3FqWVA4S2xZdi9JZHlzT2lEd0lJTDlBREZDRUpEQURiY0dVZXdySEtDYU9FV0JTQUNWbnp3NkRNMG9DUmw4NDR5YWZDckZXM3kyWFNqQ280RVBPUU1FSEdDZnR3NVNBMFUxekJzSFl3bUgwMmdFWTZYYk9BSXg3R2d6MUdZMnZ4Vjk3M0M3Mnl1RTI2eTYrMDJiTmhSejlhSXBydjVYK2J2MGl3bHo3Unp3RUZFYXFNSUFVeGF4Z29oMkN5VVBIUEFHVVhZQlNBOG9SRDB0cnNtQkhsYVpCT3pmWVZkL0xMTlUzaHJYSGVZMmh3Vmg3bG5XRU16cHZ1TVM2eEY5UlIxSVdaK0RPNzdsTndKQ2MwUVBPb0Fjc2QwL1ZuSEdUd1JucWs3SGJ4VjVtYmRaZFltM29XY0NyejExdUZYV21kOHZJMHc3dDd0RjN4YXZ1ZlZmTWRlKzc4bHUzdml1Wld6OVNCSUJveWkyWVhPZVlCd0R6TDBCNStnZTV3Umt1Z1BFT1lPd0FqRitrcVJBcmpGV0FFYVBCdUNEQnVNNWhiSlpoUEJRd0huRVk5UHhlQ1VZWHdPaWt3cmdxWUZ3RWpBdXNOVDE2TnVvTWF4RnhpaDYwdWFkSjJQRjNHaTQ3WXZPZEpvOCt5OHRVNmhQZXU5TDc0ZWM5M2wvQkFFYVZPMEdSd0xnK1B6QTNBR1lXb09UOWN5WUJvelFLdnVHQWNZMVgzOGVsNnZzMEwvZzBHQW1TTXdDalo1b0JqQjBjaHV5TUxoczVqQTV4VmhpdENRWTlURFBxdEFhRE5WMStuRFVPUGZxa1Fjamg3ZldXSFB4dFFHQnFLWS9lWWMwQTVBQ0FQSVlZb0tqS0p6QS9Rb2tBVXgxUW5sM1IyM2I1WVJjazhBQTRZeUZnL0dBSEk4NEtReDFKYmI0TkdLZ3gwUEZHTUhwZ1hYZDZTUDhtQVNPQncyaExNTllDUmd3NTQ1ejZDUE1XS3pOVUdFMEFvOUd5b3d3d0dHQ3dPb3YyLzFCOVZ2cCtyOC9XM0hmdkhjWThTSDJXTXhWS25vREpjZkkvRENpL0JaRG45eU9VU09DbEVLYmVCb3dEUmpDNE04eGdQTERDSUdkc01uQ0dEUXdLVTRBUkRoaGh0akRvc1lLMWd2YXlHdk4zczRCWjZjeDdWQ0tyTkNDQ1ErbTkzQTZNQ2tVUHBoK1hhejhybE96QnJESUNrd1VvVTh0OEhKTi9NOW9kMXAwcjBUSDJ3ajhBNHhHZkNybHU0NHhlU05hOTB1MWhkQmZPb0dmQmQ5bDRnenRqQTV5eFhvTnhYczBaU043cWIxM0pNT29ISDJKMWx4d0FqSDJzNW9LOTZ1TUZBK2J1WXY2ejA5VkhvdnRNMjhxOFJzVHpEamQxakRtWTdKTy9vV05XQWtyKy9TYVZ2blZKdU9vR0dETUI0M2FQVkJuR0kzc1lXNnd3WGdlTWpnblhXSHNWQmtaUzlETVhoakNPcWI5WFlvR3hVTUQ0NmhzVkJqMlEwM2NHaDFGbDZoYm1IYmlaZVk1UFpoNUQxakgzZnJaZ0xIRE1RcG5rbUd4QzJjOEFzNzNjd09nZWdGSWdQMG9vQmhoMUFTTVIxZmQvTFREb0IxdlVHc1BXR2E4bmFUQ3UyTUJvWlFQamhBcWowVElCWTdFR1k0LzZOTlNxbWpNMEdGTUVqSW1ibU1mNGplcFQ4RnhISlRDM3oyS1lPem8vTjJCTUhITk5WUDNHZi9SZmtCcXE3VktBOEVmQTJHOVg4QkdNWkFFRE5RWTlEOTRDZzM0SUp0b0tveWxnTkphZFlRTUR6cGl6ay9uTjJtSGpEQzhiR0xwbmY0MklZMjZEVmpOM2dNZ1JHTnZrL3oyZ1RBRVVQNmhndXNLc0FZWUxZRXdFalB0OEt1U09wZnBXWVFobjhHR3RnSUZoYmZNVmdMRWNNRUlGaktVSDFlZkwxNUpnVkxYQTJHWnhoZ1hHT01CdzlLakMwWERNaDFFcWxCdzZaamZrbC8yVkYvRFdMZld1SjJxTUJhaStiNG1wRU5ZKzlvcW92clVhNDR4VVkzQVk2a2hLaFVFanFYM3FTS3JhUEZzWTlHVFVLbE5TbWRla0ZCV0dlM1l3WkkyRVl6NVpaUnZLZXR1QitTL0E3QWFVN2xDdW55Qlg0QnFxNytJSVUxM2hqQzN0WXEvODBsYUdFVzBQbzJISUVTc01PSU1lWjI0RFl6cWNBUmplR293SkhJWlRJUFFhSHNzZDAwZHp6SExOTVRjQVpxekgrK0hQL1lPejU5WXdtbm9aMWZjQXdMaG9EME90dnEwd3BCckRBbVBtRHZXcDJqNnlNNTRHaHF4aEFQTkJCRUg1RVlvRm1CZm1HekpQMVpBelhBQ2pDbURNQUl4N1d2WE5ZVkNZT21RSGczNnpoR0JZbkRHWnc2ZzBJUmt3a3A0ZUJ0ZGo1SmQ5Ymg5SGQzZC9MelIvZjRvN3Z4cEdVZ0VvK0hicXBrSjBNSGpCSjRlcHlua1BJOHQxZE9JQTE1SHhMK1NYK2ZLOFlWajdCZ3ErOU5xTDl2OWNVNXNLRVRXR0gxWGZnS0VXZkpNM2N4Z28rdHpINWdtTU85QTAxQ3B1MlovbHI2elZYcmkzQXFydmlkWG43NzVJdjVsb0N5Tk5MZmdxVDh3ekdEOUFxWEJGMTRvajR3dmtiMkVWaU9ZN0xya1luT0VOR0YraTRIdGtNeFdpRm56SnZQcCtPaGo3a1N1NlE3L09QSkdiQmxlVUJJeWVnTEVOTUo1VUZ0WDNVenJqRVJ3eEVTQnkvZm44cjc1Vm5yQ3BPSnp4TzFUZk41MHUrSXcwT21HWjY2aDQ0MTlESzJvNWIyNmpFOHU2OGgrY3VaSURFRDlDNlVqWXIxY2N0RHEvTDZId05kemx4ZEhCVGFFZ0tFTWtacU5hNGdiY2tPSTZNcTV2eFdIcmkwWlB6N3FoMDBubG9IclFtOUEvb1g4QnhOdUEwQUlRdk1zUFhGazBjaXBxUmEyb0ZiV2lWdFMwcG5RWitTZG92YVJRNkErUTNlZklXUFlaRkFrRlE1WEVzcEZpMldMSUZYSVhyMGtmaVcwK0ZLK1hRVjY2WTJ2YnRwR1d0NFhXQ1AzTjREdytrTjVYVXl6ckRFV0pkU1hGc2pDeHpReTZIckdOOWo2N1g5L0VzaExRdjZGRmtOMXZ3R09aSHpRWEdnUmwxNiswci9HaVB5ZHA1MlMwWVMreGdhYk5FRE9RM1E5SGlnNmlkWmxRZ0ZpV0lwYmRobndoZjJrZks4VTI0ZUoxRmxSYjJ0OG9hZHUvU3N2L0lpMGZZM0Flb2RMNk5tTFpDZkg2a1FUcEI3R00xcjBLOVpiZVovZkFBeXpyQk4yVnoxMjNmcGIwL3RhaTA1dEFrMFhmSkVIem9aZUVEb2h0ajBERzMvZkZpdWttQUVpL1NQOS9RZ2ZUdlhkdEFRYXlYcnkrQUxubkVrZzk2SkpZUDhkZy9SZGkzWCtoNmxDQzZDZTVEdzlTNStjR0NPM29PK21rU1FPaE44UmRScStqZE85ZGw4ZEFSdWNoRU9ydzMwRSswbmJaQXNHLzVSUitsMnQ2RDVvTnZTWXQweHhYR25vWGFrZkFwSDE5Qy8zMHRFQytod1pBVTZRZDk0ZGVnWTZMMTNSQkphVDNhbmRoWGdFWmsxZEFUSzdWR1NCMHZuVEhQM2FnbGJyOVVwN1Vvc2xocUtGaURmMjVCa0tkODBmb1B6b2dsUHlPU3NzVTZiMGJDaUVRMGo1cHVaRjY2ZlpiWDFvM1d5eUxleFpBd2dTVXE5S3lnZUpDU0lmRU1ncDF3OFF5T1prT2dUNlgzcnRiYlBPTmVQMmp3a2RsMnY1aXBXMFhTc3VEY2dCa2tkaW5rWDUyQUdTR2REenQ3cjZ1OElIT1VNV2FMeWtVOVpHMjdhMjdrVGFLWlllZkJaQ0NxT3lBT0NNaklFYWkwTlZKSENNOGg4ZlE5TlJBL2xmaElTaXJBT29COUhlRGE2QjY2SmJDaDZqWjZRNFVMVHJvWDA0Y2syb01GNFdIN2R5Y016bXJoRGplVHJGc3R5TWdWSXpOVTdobEd3cWExYURhSnFvRDlZQitMMTVUL0h3YjZ1amdQV2FpVVZBdnNjOW0wTjhVUHA3WDF0Y1QrKzRpWHRQUTBtNUdsNVpCUGdyUFY5bkpEM3BGdksrOEUrZm9LWURrOU5vMFZSREhjaEhIcDJWVjZiVWhrSncyN0tnNWRGUGhPWUtxMkM4Vm5pd3BERlRKd1g0b1VUOVUrQjNiSGxxcThCaFBBNFZTWXB0UHhiNVBRZDU1Y2dHRnJTbTJJeDZhSHRrdS9rK2QyVGdIKzVHcjNMNktkV1J6VHJxclZrdjdidlRzcnVvRmJ1aVlNdEE0aFljNU54R3k2TzZtMFpmVFgwd1c0WUlLcmtDRkYyTVU4bFpBZjVLMjhSUDcvaXduK3k1cVJTM3ZtMGlNbERUbHdxK2NTTGF5YWtucktmblRqS21IdEl5U29MLzAramZpZlM5SnkyZ1dPRUIzL0ZwMFBPbTFJdDdub3R1T3F1THEwbXRQWGVLc0s1YlJ1ZmxJeTdUekowZS9MTFl2WlhCOURSUStLcUsrcUtnN2RrbXhYdDZlcGxKK0k5WlR4T2dBTlZYRXdFRXNweEZXQzRWUHZ4Zy9qZFFBQ0ZYVjZkQS9wV1ZkRlY0Y3lWb2pMdkpqNkR4MEQ5cExCeFB2b2RBMVd3ZU4zdWNwTGFOSnVUMktOQVd0OE9IaElnMkF1SURyaW02YVd1RWpya1RGbXZocFp2VXo4WCs2Z1dobytXY29SSVJXR2pXbVFxZWhZMUNHT0phbnVPWnIwR1dGVHlKZUV1K25tNEdLNGovcWpsMUI0VVd0dlAxSmNZM1ZSRC9jRWZ1azRyS3N1UGtXUURmRU9pb1kzM0FHQ0UyaVBSSVhXMTRzbzRuRksrTGtpd3U1aURzalUzUU8zV1VqRkY3TjAzWlVtUytUOWx0VDRZblpXN3l1cVBEQ2lFWllyMHZiYVlPRHY0blg3Y1RybDNUbldWRmNYQ3VGVCs1UnNYVldyS3NyMWpVUW5UNWJzVTc5L0Zsc1F3VmhtampuQU9nTWdkRWRnenFTcGo3ZU5UZzIzWVQxRFBxUFpobStFakM5dFU1WCtFekhCUUdmamszbFF2WmYybFA0Uk9GTVFieXpCSVR1QmcvZHR2UUJVNUwwK2hWeFI3K3FBWkVBMXRZQitUOW9sOExkUUIvdXlFQTJpenZJMVF5STJKYk9rVDU0NnFid0l1dVJBRTlUR3NuaVRqWURRbzZod2pCUUF1SXZuYTh6UUJySU42aFlSemZ5bCtMWThnUXM5ZFVwQWNUNDkyOE5McENva3FWYmlnc0psSURReGRKYzBnd2hpdlZVdmE0WDIxQjFUM05XZ3dtY0FFSVhHU0lVb3dGUnVMdW9NNllxUE5iU1hOaXJFcEMzRkI3SzZIT1IxeHdBb1UvNGFLNkw1cWNvdEd4VGVOVk5ueEJPRnNmUkE0a1Y1eDhpYnJKT0FzaERzYitsUWdGT0FJbVJ0bjlicktNaWw5eTVTZUhsd0RzQ0dMbjJvTGh4SWtWZk9mN2VHRGI0aDdpenFpaDhMaXREN0l5QTNCTUF0SWswYngyUWY0c1RvK243eGdKSW1qaWhkOFMyR3BBcW9qUGVFcS9wT0owa0lHK0lqcUtaNHVFT2dOQmR0MStBNkNPT1NRNC9xMWhEaFI0SU9YS3N1SjUzQmJRQTBZbjBzY05maEZ5ZEFESkkycjZCV0VlaUJQOC80amlVWDNxSzVYU2pVbDRiS09EUThONjRVaGR2b0E2a2VTS3lGdVVDS3NSZVU4eERGaFZ5VzZYWEJPSyt3cWM2VEhPSXdxZHBhTjhYeExFSTRqTFJPUnFRbHdWZzdaTTZJeUJVMldjS2NDM0VYVWgzT3MwZ2FCOGUyWVVzaGVjY2N0UWFjWnk4ekNFdTB2L3BacWJ2R1V3Ui9TdXZvNXVCUGw4eWZpYUs2RXk2OEZyaVJFZ1VEbUlkQVBFVkZ4OGk3cEo5NG03OWpRTWdOUlFlVW9aS3gzbFQ0Wk9DdmhvUThSNGFMV25UK0VaQWFQQkFJWUJHVHhYRnNqT2k0N1VocUZrT0lZRDBpVjVuQVlSR2N1U3lQd2gxazRCUVR2aXRFTTI1K1FzZ0gwbmIwelZRM3Rncyt1MnZDZzlMdE4rM3hmWFN1ZEtnaWVicWFFQ3pRWEhnRUFvNTYzVExYb2QyaUg4VEZkMTRYR3hERTR4YkJHMjY2N3lrL1kyVHRxTnFtMFpDOU0wUmlxOTFwWFUwYnFmUER6b0p1QjJrZFg4Vjc3UDdkb2JDNndUS0g0TVVhMUtsdkRSSzJvWUdLQlIreVFtcm9LNWkrY3ZpN3FVaHNiYzRoaXo2WEp5Y05GZTNuSEpiY3dGS1hyNVRnUDJ6Nkt1all0dEo0anliQ1ZBSHhUb0tWK2FQK2xQRWFFRzNURnZ1SXY1MTlONVg1UFhhZTV6Wmw4RTZGNE4xWnNkMjBXMnZmNjN0dDVqQnZpM25vbGhIUzdMTWxydVliUy90dDVUSlRVVEZZY0YvSkVkUksyb0ZydjAvMUFuMWwvbERhbEFBQUFBQVNVVk9SSzVDWUlJPVwiLFxuICAgICAgICAgICAgQUZHRUE6IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUNRQ0FZQUFBRCs0YzViQUFBQUFYTlNSMElCMmNrc2Z3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBR1VCSlJFRlVlSnp0WFFsNFZjVVZSbkd0Q3lvdVVBU2tyYTFhSlNUc3U0Q0NyY3BpRmF1MWRRUHJBcTFXY0dncEx1eUJCTUlXRnRHUWxRUkNnTENHSkN6SkJSSFFWcXUyRnF2VzFxMWZjV0ZURk83citkL01UU1kzZDEvZWU2R1o3L3MvNWQwN2M4L01QM1Btekpremt5Wk5YS2I4clhOUEoxeEhHRUhJSkpRVDNpWWNJQndqUkFnbkNGOFIva1A0TzZHS1VFUklKVHhNNkV0b1F6alQ3ZmNiVTVNb0NjQmxoSkdFTXNMWG91SDk0QXRCMUR6Q1BZU3JDV2ZGdTY0Sm42aVJMaFE5KzBBQUpGamhXOEkvQ2FzSW93aFhFVTZKZC8wVEtsR0RYRU40TldRaXpQQVpZUnZoS2FFaTQ5MGM4VTNVQVAyTlJzV3lMVlBWaFdzZlYrZXVlbENkVlhTM09uUDU3ZXFNZ3FHRUlaSG9mNWZmZGlLdGNMZzZlOFU5OU00SU5YUHRhUFdGVFUrcnVSWHBxaytDTUUvTkpIdy8zbTBUODBTVlR0TEl5S3VjSFhsKzQzZzFvL2crZFZydVQ5U0pXYjBqM3RBbk1pMzNKald0OEE1MVhzbEQ2cEwxVDZsRWJyUjhENnB0Uno0M0tscWY5Q01ubjF0UmY4cmZPaWV5YU4yVDZsUnFSTzhrV0dQU3NyNFJsRDlyeGQzcTRuVmoxWnp5bVc3Sk9TVG1uSDZFcHZGdXUxQVNWZXhaOU55WnkzK21vbGVIUllZUkptZjNKN1UzVEoyLytoSDF4YzBUM2FpNDQ0U2RoTkdFWnZGdXc4QVNWZWJjRnpZOWMyaEs5b0NZRW1HR0tUazMwancwVWwxV050VU5PUWNKOHdrWHg3czlmYWNGcXg4ZGlWNGFieUtNa0pvL09EcHlzc3FtT0NVR2k5UjhRamZDYWZGdVc5ZXBlbTlTOHhsNXZWNk5kOFBiQWZNTzFPbFNNalJ5SzJjNVZXZWJDTW1FVStQZHpvNlNzcTk5azAzVnlRdW41ZllLYlFJUEF6QUlZTEhScUhHaTByNGhiQmJtZkdJVFE0UzBMYW5zZUREZURld0hHU3Z2SlVQZ09hZHp6VHJDdGZGdWQ4T0UwVUdZbUx1eGM0TWFIV2FBbFFaejNjSDZCdVFWRTdvbTFJZ2hNczRudkxaMFRkZVRnaENaR0t4dEhCQnpKSi83NnI0YmJ5NmlpY2pvVDFBemk3dWZWSVJvZ0hkaHdacFJUb2o1bkRBZXBuKzhDUmxIaU14ZDBlTkV2QnN2VEV6TkhVUWpab3dLRDRRTk1lOFRCc2FUa09VZ1pFNVJ6QWxSSnkvRDZoeW1iTytZamM1cGVUOVZGNVkrNFdURVZCRGE1OGZhVjBaazdBeWJFR3J3eU16OG51cmkxZDNVUERJZVZsVjBWRXUzcDZnYnFsSWlHd25yZDZTb2E3WjJWRmRzNmFUbWJ1aWlMcUgzTWdwN3FOTnplMFVtaFNRVFg4dE1zQnN4MlBHRSsvODdzU1RrUFJBeWIyWHdjd2dhZE5tNkx1cG1KVm10MnRzK2d1KzR3Zlk5U1JIa1hWbmVLVXBTYWw3UFFHWEVJaFBlWndmbThqN0NUMkpGeUFGVVBuTlZ0OEFxaTE2OWtNcmJzck9EYXhLc3NIVjNrcnFhUnRMU3RWM1ZJQmV4azdNSFJPYVdqTVNlalJVcGh3bmpDT2VFVGNnUlZCYVZESW9NV21TcVFSSmhoR29hY1ZCMWkwdTZxVkNKUWNnK05XZGdaRkhwNyt4R0N6YktPb1JKeUZGVU1JZDB0KytlUmcxVFhORXBkREwwcUhpcGc1cTl2b3RLODFRZ3hLUVgzYWxtbFUyMkl1WkxNVnJPQ0lPUXoxRXBUS2grSzVLL3FYUE15WkN4ZytZY2RJajA1ZjdubWtuTHJvOHNXUE9ZblRWV1NXZ1ZOQ0gvUW1WZzlmZ1orck9XOTFEUklQRWtwQTR4WkFoQUpuL0U5SW5HQ1dSdG5tUTFXdDRsREFqTVBLWUt2S1lOZTY4VEplYU5kVVJvdkluUUEvTU1Sc3gwbndZQXJMRjVKYisySWdXQmdlT0RJcVJNcThEc1FtODlpdFl3YXJVSHN6YVdJd1p6NUxTY1hyN1VXTnJ5MnpGYXJGUllicjdmblVvUytFVk5jTmo2WGdRdGlQUGM0UlRsdXpxb1dHLzVXV3hpUjNYSituRldDOG85aEpaK0NKbWdDYng4c3pjWFBCWnY4VzVzcDhCSWhsbU9SYXNmRlRaNzVUMDA0WnZ1V01JZjFzc3JJWGRxd202b1NuWk55SlRzWGcyR0RCbFFZMzRYdy9DTElVTEhoSlNqbU95OUVOS2VjQnhDVnUxcEgxMUx1SjAvNHQyNGZrWUwzREorNWhaRTZDeFp6OHhVR0lMNjdzMTNFNk5NZ2pVbnZLTUptVkhrYm1LSHc5QkRZeURQcDRSZGhBSkNCbUVLSVkyd2xMQ2U4S2JDM1RxaEU3NnBPaG1MU2w5Um1RdldQR3BtaGVHa3dBakhwSkJBcHhCV2FNSmh4ZXRHR0RnUFhWVCtZOUg0WFJXK1Uya2wxNm1pczNRbWpCWWtIUTZMbEcwdkowWG0rM0t3OW9rZzNOWmtJWWtBaTRmZGpKSnhtbUFicWxKY0NRVjN1b01LZjBQSUlWemdXQ2hqT2M4alBFSFlHd1lwVlRTdkxQWm9hV3BJTDd6VGpCU0VJOTN0dEtLOVpjSGN1TGtkbUx6L0piaWYzT3hsVGlITUZXb3R1SGxsbjMrL1htckJFSnJzcDVuTktVT2RWTzRTd2hlYVVHNTZpUTBoOEpNTkM1b01uZXd3U2hZcHdtc2RDQ2w3M2F0dVBYQTh3eVI0L0NPQ3VhNFdsY0k4c2xNVENINmdBRlRXQ2NKZGlzVThFVEF4UHlZc0lYd2JGREdZSC8yUWdnQUxHaWxHay8wSGhMWjJGVXJUQkNuZjJVRjFhdjZpSjVsVWFBY2hlUGUwZFIxT0k5eEJlQ01JUXJCV2VYNk52emxsUnNIUVNFNUZtdEZJV1dWcGVaRUFOMm05QzNyVXFhY1VHMXNHbGZtYWNHTU11ZERYNVV6Q05ERktmVS8wYnBjQ2VrelB1OFZzTnpMVnFoSXdRMnZXSTA1MUtMWnFEU3BTUllqN0FScVM0V2JDaDM1SktWT1MxUmw1L2phLzBvdnVJdXNydzhnY1RyR3FRSllteEJaU1cwNzJSektNVitvc2h1MXVtVWlXVmdURkx5bXJLenY2M3ZUS1dQa3JvL2tFUjhPTmo0UFRoKy9SQklDbDRVUnRwZVlaK3JMNnhiamRMUlBKY3hHaDBnOGhVT1B6VnZpTnpPa1Q0Y0Y2OWZaU25qUVQvRkpGY2xVc2M2YTJqRUo4V3NTNHpXMFRWQ2loeEE4cGNMNjY5ZlhwZ1FnWEE4c0xwckR4VVR6NjhENU5BRVIxT1BsSTJjNDY3bmM0S2hNbm1seEtDbC9wbC9zWkpVRkU1K0EwbU1GaG8wZk1oSjRvQytCa1d4ZXhVcExnQjJQY3pxNFN5ZGVNOEtwWFVqWldKL3ZhNE5Ld1lIVTlaeVF1YURqZlNPQXJGY2xjZExLTHFJczJTV2hDa0VqR2pvUmpYZ2lCZWs0cjhCL1ZBdFdWdldXNlRBcitmNUNad0hzMEFSQzhZRmY0a3JvdStFTXhibDlQaWVRYzYzV1VCQlZVT0l0TVlkMG9NUTVkVWFSdFhTRE5acThBMXBqMC9yRVl0NjJucFBCVnZhY1ZmUkF4YkJ4OW9sZVZTSVM4Ymlac0oxbHQyZmwwcHViMGltemJYU2NtcTBFY1F5WTVIL1JDU0RTR0xSQkNla2ZtbFl5VUNmbldUTkN6Q1BzMUFaenN0ZXZpc2k2S2NkdDZTZ3BmbjN6cWVtS3ZTbzZlYXdtQ0VPekx5MjRWSzJIbjFFeGtlNUlpTTJ6VWxtN25zTUhjMkVPeVpyb2xCTXVCb0FLOG9iWjRXSkU5SVZjUnZuS3F0aEJrSnduZFBZWnQ2aXVScklQY0VsSmM0ZCtOSW1OTzhYMk9DTUhLOWhWTkNEallyRmFwMFhuazVacDV4SDVYTEVFU1JyUGljZy9GNythVkhvZ2Z0aVZFQ0R0ZUV3S0x4RGsyYm1ocEh2bE5qTnJUZDFLNHUrZ0xwMlRBeCtjMTVOYTBNK2NPaWdoUDhNZDJ3aWJKd21BQmFGV3d0SHM0TTBidDZUdVJyQmNyNGtpR0UyeTIwUlJlTUNYN0J1M0d2ZFZPQkg1TEU2WmlWd2RMUXVBTkZlK3VqVUZiQnBKSTFqWUszMUN6SHgyRUpUNTNFRzBJdWN1SndKTmxvVElzaHVzVU1nVjM3RWtDS1FoeWF5aHJrYjVPUndkOGRzRlpWL0w4T3dpaFEvdE1QYjQ2Z1Z2SzFsYUp6VVlOVnJGQ0ovODRCdTNwTzVHY3M1eVFzWlVXdnFrK0FyU3RRSk02d29OKzZrYm9MWnBnMlBoSGdMVlo0WXRLb240dDRPY2h0bU1naVdTOGtQQ1JIUm1vTStvVkJobWNrQ0hyaVpEVDNRaCt2eXlnVmR3V21iOXFOWDl2ZG9odEdVaFNlQlNrSlJudzdpNG83aDRLRVVCNlFjOGp4ZVdkM0IxZFVQaSs5TUVhWFdxanRqWldSVGVzRUVpZHNEZFRrMnlYRVQ2eFUxTitRMHV0Z0RNcUc2cVNFYlBzYmtOUDRZRjBtelJCdDlNQ2NKcUZQczNsNWkvbWtVdERhazlmU2VGaFFydXR5S2g4cVlOS3ZUZTBrWUZ3M1RKKzBLbW4xMG9NVTZUOTloZEx6ZmNFNXRhYXY3RzVqc0pGSXBsT0o3eGdSUWJ1WXZGendzb09hVVMwSUdPRlp5MUNHYzhtL0ZNVEdtY3F6RDVJazM3ME9iMDNMK0QyOUpWSW5uUGtrYTRIdGhEQ25MeUJoVlIrRlQ4K2pyMFlmMzhOZ2dxWUwwOTI2UlpibVlnZ0Z3UW1SQVFLeWRGTk1kbExoeFZWUk9hNmxSb09ZcjRvTEt2eFpDQjQ3NW9nS3RWZnJvaVZCeGorSG1GdC9US0E5dlFqTTFUVXc0ckJhbHk3TDhYL0JRUG13RUlTQjRIS2Q5VmN4QU16T3ptb3ltSGI4Mk90UWxZYlZ4QkVoQWRWQnZKeGIvSjJVSGpRZDcwWVgrejYrVDBpYlFkMHlyWGJVdVF6L084UnJndTZrdWx5eGF3MnJzVFpFU0NtRzFaaXZrTmNRTDNJRW93SWYwZlg3SUUyS2RwUzd4S2VhcGphWVZUMkNybkhGVmljYlljcTJNNzNTSmJHWWswaUp1M0hDUCtRR3dNeXdLVVR0TnRjcnhFdzR1QmEwdDFxOFJuaDkwcVlSek1VY1Q4S0FQUE5TbEFNV2JFbTZSR2lQRkNsdHhJcVpOT2MxaExSRHBNZTRod0JpeExuM2VGNHJLNXZNQ0FLdEhkWTlaWWJZTHo4WWFzanhabTF4eFVRNnhYbzNZVUtEOGE0VCtIUjdhcG1NYUZ4Y08wdEdpc3NJdUQxTGl6cnBPTFNIZ1BMRGNjNjdnOTFWT2dhQXBGL3h6VUJYckFJSE1ObURucXFhREFFcC9tTysxWDRXWlpSQ25mUFJPV0FBWUVOTW95R01GemtBRzRWZW41TlZ4VTdveVpYVVVFOVRWVzRoenlJcG5iY0lEQWxhL2JiUzIyaUc3R3FGKzlpN2tIc3NLdkRQQXEvRHIwRllUaWhtUEFWMWtIWXZjdmQyQ1cwdVFFV0dDWm95RjlhMTFxU2dicGhFMjhNSVg2WE1DdVNwelRxMjhveGQ4a2pBR0pEVmJKTUNpeTExbGE5U09IK3BuWUt2NHRsSWVFRDVJZUt3QVE5bjFUUzVKQlVFczY4NEM1SFROQlM0SVlleDRVYXhraXRIeVFkNjZUd2FJMmFqU3U3ZUZjNDZuVFJqZkFlYjFWNC9OY2ZDRXlNbnNVS1B6THdQdUVZZWlYY01MalBGMEVXWVpHQWF3RVJUUUt6Mk9abVBLeXlaeWo4Tm9xNEg5dXJTY0t5K1lzbUtLd3B1MHBucnVxdWl2bkVlZytDR2dScU1KdEl3T1FaMXVRTVZhZVJzTjE4SkFDNGlXSzdtS2d2aituODRDYVJZS21hME51NDJySnRCS2l2TEtHVDRlSUdObFNsbk1CQ0NzWUJDQWhyVXNaT0p5TDE0YzJsMGVya1NoQ2MzWWZiNVpKNHQ3V2pSSUwya1N2Zy93eGU0QVJFUjBIV3VpN1JEdURna2s3Y0JyRmJxTkRyRW5Za21DV2h0bXFPSGNQaWlUY0pPUEdGbzlyWTFhdzBYaVBvOGJVWUNROHBQQ1FvWVhjNUhTVXh3VVVyNStSd1Q5REFPZ2RIczlFWjhIMmJ1VUFETHF6QjV0QURoTzhsMU9Uc04xRmwrbWtWUlV4V1dQcGZQeGRnSXdtandNVmR3YmlmZUlIQzkwVWFSTXlZcDZSdzkwWE5UVHdMUXZoTFBkb293S1lYTENJSFY5SkNWV0hmb1pUd0c4SzFEVzQrOEpNVXZwNnc5ZjY2SlFIZTRqeFNSYmplMWNFSWdLc2RoNHl3amhtb3hIUFZITzlFbFg5V2F4aW5aOXZOU01BS3ZLaXNFLzdVaFpPUmdOTlArY0kweGVuaG1ONCtsTEJKOU1qYWVjUWxFWHdrZElhYndtNGs0UGxmRlg3cXFlOUpOUmtIbVJRZWRGWVRTRGZMZ2JNUFo3MHhKNVJaWDhLTVovOG1yRlM0bTczTi85VmM0RFVwL0xSVlRVU0htVHNlS2duK0tOeVZhMk9lSXFLd1VKQ1FFRkVyRFM1Und6MmpOYWplcjRVb3ZheDFYYU9qd1dKZWVGdmhYbUNvdi9oN1R4dDZva2E4VVd0YzdGVkFIV0d0QUIrVkJRbFlvR1VUZWpTcW9vQ1R3amVRRGprd1R6VVNjTnViOHhEOHh1UXVpWG5rZFJNU3NDbjFqbEJyVjhkYjF2K2JSSTA5VTBjRS91QVlMZzBib0FRYzROQ1lIQ1NGMzUyTDFmS2Z4UVNkMHFpV1R0TEV4ayt3ZXRhSjBEQTJrUnA2b29ZK2wvQUx3aDhObmwxREtDQjhSYmd5SHZJNVRTVGZhWVJ1aEJ4Q3VIOHQxRThpNFV3M2hORHJDWDhuUkFoWkJzK2ZGODhpRFlDUVBNSnh3a2VKVHNqREJNTUpuMzcvZ2RUZ1JvUXNhMENFdkNYa1RGeENTTEFMQ2YrQjZqRjVudENFMERkSGlsRTZnWEFlSVUzOHU3UEJ1dzJDa0R1RWtJWm4yaE9aRVByZStRUlZmUHNWd2dPU0xIY2F2TjhnQ0hsS0NMblU1SGtpRTNLUjlPMnRoRWVrZnc4eGVMOUJFUEtnRUJKV1VtdUQ1NGxNeU5tRVoySDlDV3V2ay9qM2IyRVpHcnpmSUFpNVdsZ2VFSFNXd2ZPRUpjUnRDcFVRS3ZCVU1hRmxpaDV5S1NGVi9QdG1GK1djUVhoRENQb1pvWlh1ZWN3SW9meE54TVRjV3ZUNEZFSjd3bVhNWWxGcVVrNjlxSmF3Q1dsQk9DUSs4RHJoVjFMRFBPdXlyUEZTM2xTNThtRVRRbm5PSWlRUnhoQzJFVDRSNmpNaTRRdkNRK2lFRHNxRDFmZ0h3aTBHejBJbHBCWGhxUGpBUzRRUlVnV00vL1NDZVZtWFNZMXdtUEJENlZrb2hOQzdiUW1UQ1c4VFR1Z0lNTUxYaE90dHl1eEgrRlM4Zjd2QjgxQUphVWFZVHBoQjZNSzRTeUNkY1h2YzFLdEx6NW9TNnQzdFFiOHRseXFmSnYwZUtDR011MkdlSmh5eGFId1E5Q1hoVzkzdmxucUxubytXM3IzTjRIbmlUT3FDaUo4VDNpVHNOM2orSTlFTElmQkJRblB4dTB6SVFvTjhwb1RRdis4amRCWC9EOXhLK0lldWtVRU1WTlh2Q1RlSWtkOVU1SUg2K1pQMGJycE5IY01qQkwxY1ZoMStFK056em9kQ29IcUVpSGRXU3hWNlR2eDJwZlRiRElNOFZvVEE2TmpEdUhsNkM2czdOM3dqdnRlYldmdlNKaVFLSVRjVHhycktaRjBlZXQ0QkcwTDZzVnA5RG9PaE9lUHFVS3ZrNHdaNTdFWUlWdEp3WjN3bXZmYys0U1lySXFReWZwY29oRXdpbExyS1pGMmVFMEpnOGJ3aFZRbzkvQmZTdit0ZHp1eUFrQWlyZFc5b1pGenJRbTZ2aEF3M2VPNkxrR0xHblg2Ky9waXdWSjR0SWVLOXU2UktWUkxXU2YrdTk1Y3hIUktpQVpPMHEwdGZmQkFTckMrTE1td1JQU3VRUHc3cGdoRG8rNyt5V2xOVG0rai96UXdXWnk0SmNmMm4vQktKa0xVaTgyWW51dFpCZVk0SUVlK08wVFVrc05qa1hhZUV3SXgxSFdTUlNJU2tTdnAzbXBmSzZNcHpRd2pjTUVlbHlrSFZHRjVwNUlLUWxSN2xUaGhDZXJPNmsrSEhqQzhDWVQ1ZTd3RjNpRjdxaEJENHQrVDFRb0hGdTluU2UzQlpqSkNRS3oxYnEzdm1GRVZTR1N0czZqaFhlamZ3U1IwYjhxWFNCNExFS3hiZnhSeVNMNzJMVVdXNkhxSm5DMEtTMFM4R0JFcUlLQUR1a2JLQUJjV28rNjNKOTdEdTJDcTlDN1YxcTQyTTNWbnR4SjhvZ0grc1hyQzRiMEpFSVZpeFl4TUpRM2ViVDJ3ZzNFODQwK0E3RnpQZTJ4V0Jhc0pRWnVQMnB1ZW5NSzVHTVpkczFHRy9hQUFRdHNYZ3VSL0FIQy9WQVdvUmF0M3c5ano2dlpDd1c3VEQyWjRJYWNpSmNXTUVoSlRZRWR1WVlwREVxSWJhNnhCdldScFRreWdoME9WTFdBRHJxTWJrTXpIdVhTNW5BYmwrR3BQUEpBaHBqTHJYRWpWR1M4S2pqTWRkL2NEaVBldzB3bFhpYXRzM3JNVDRSdHE5ak85K2pnNjQ3TDZFc1lUWTMvUk5INTBvMmVXRFRkNUI1TXBmeERzSjhRZU5SVWM2TEdSU0FpejNUTUk3b3R5WGd5clhqUUJ6SFJCeU91RTk4YzZYc1piUktKRWNiVmp0UWpOSVFzNWhmRUdZMElSQVBTd2lyQ1E4RUdzWmpWS0RJWVJ4M3hhRVJSQ1paWHdTUGY4dXErdjB3ODdmOXdqdENHZm8zajFWSzlla0xPQVNrZDhJYll6a0VlVzJNOG1EMzgyT1A1Z1N3cmhYNEFvTFdRemRJWXp2aEY3TGFrT0UvaXpsYVdXVXg2eGhFWFV4aXZHNEt6bEFBSkVhY0I4TU4yamdoY3phendNdmJsdXBncHVONWhEeDdGRko3MW9CWlp3cjVZVzN1TndtRDF6Nk94bmZXN2NsUkJDODFxYk00NkxNSVV5c2ZVUWJmbVNUYjRvVE11Qk9mcyttSURnSzRkTzVRTXEzMFNZUFZzN3R4YnVuU2QvUUV6S2ExWFgvMnpuekxwTHlRajI4NVRBdjVMbE55bXRHQ0dSOXhXR1p5RDlZNUx1YzFZL3YwaVBQam93a0hhdHc5R0dqQnBFb2NPU05JL3hOZWw0aTlRaUU3VHd1ZW9yMkhJNi9wd1FHc3RxNEozbFNQeVo5SDNQTEorSjNSS0hrU1BuMWdNbU1xSE45SGZEYldKTThDRjB0bEFoL2xZazFpeGtoVXJ1TXNTZ3psOVZHemJ6R3VLcEN2c0dNeHo4ZkZNOCtrUEk5Z1c5YWtZSEcwTHlrS056d3J6NkxqeTJWR24yWTdybGJLMHNtNUNvcEx6eS92dStLTi9sK3NmZ0dZclRhaWQ5OFRlcU1IMERWMnU0YTZYZHZrN3BnVTJ1TVRLdkdvR2NYU0I5WnBYdm1oNURPVXQ0U3g4SzdUS3p1NWxaUDhadGZRdVpKWlE2VWZ2ZE1pTmJySVpUbFg4VmhQSFJmbTNUeDM2YlNNeitFWEM3bFJlUTVRbEF2OFR0U2hQcEFiQytzckZHU0NnRnVFTys0SWtTVWljYUc5ZlZyVmpjZ2I1ajBubWRDWGhLWi9pVUthU2w2TEN3SFdEMklHTThpVkloM3RJL3ZZNUpYMVNjaHdHWXB2MFlNSnVvMWhLbUVYeEtTbVhWZ2R6dlJTQmpwbXhnUHdrT2pITk9WN1pnUVVlYURva3hzTk1IVDhDRXozcldValFYUGhHaG53cUVEanh0OHhNeXFHS1FyeHpNaDR0blpvc0pPcktRNWhHWlNYbGhFMDVuOU1RUForckVraFBHNTlXbVhaUTZXOG5zbTVFM2RCMERLNTR3SHFxR0hZV1RnQVB4TXhpME9SSlBVdS9ITkx5SGlPZFlpbU9CSGlPK3RaOXk2ZzFyUW04U1Y0bjNrUzVPZW80RjJFV1l4cnFadUkzUmwvRXhLdWd0Q25wSElPQzdLUkVlQWVmNHp4cDJrTFhWbEJrSkloY2owWDhLTmhPOHpyci9SWTkyVTQ1c1FrenhZb0NFWTRqckdWZGNCNlRzZzd6eXA0cW9nd1hEdWNVb0k0NDdCZDFtdFJRWnoxZkR5elRBSW1hRTFFTUh6SDZnUGl4QmRmb0JKM3hraU9wQ21haEV4WTNYVVlJNURRbUJrYUo2S1RXWUVHNVFaQ0NGOXBRS3hKKzFwa3ljV2hJZ3lSa3JmR2NycXJtRU13MCtsdkJYTUdTR3dvTFM1WVpsTm1XdU42dTJIRUdDSFZDZ1dUejgwRzZJVzVXUklaWXcwZWNmdkNFSFBsWDFXVUdOUVo1b2FRL1Mrb2ZPTzhYbEVObHFzQ0RsZmFrekkyODZrekNSVzE5clNFNklkV01JODZQekNaOGJQanNzbUxVeE8rS2dRTUpCcGd1R3NydG43UnlrL0tvR1RTTkRuT0szYlFyeGpadlppKzNXeUdHVkd3T0lMM3VSM3BXL2cvNXVLRGxVZy9ZN0pkNWpvVkcwWlArYjhHT1BuUkdTandHNVNYeXk5Q3hNZnhzR1B4UHZ3NU9LVTduNWRtVEloc1B6ZUZyL0RPRUJZNnBPTUx5WDZNNE5qMUhwUzhMRXE1dHpCaDE3WlhNcVAzdnFweWJ1bE5vUTg1L0NiR21BQjlwZnlYeXdxTEwrRFJqaW1xNC9zTExRanBCbXJ1NlZnVnFaODRLaU9xcmFvRjlSaEhkZVRHU213V05DalMwVVBSTEQwUVJNZ0dMdUZsQmNtYUI4cEw5NDVLckJENmpYN2hVQ0hwYnhUeFc5V3dKRTNuSS9IQmhjTytldGxoNHJBaUlUNjFiWmtJK0w3aUI2RXMvUnk2ZnNEUkw3V3JQWUU3ZzVkbWJBMDBhTXJXZTBaZlFBVC9sN0duYTRnRkVzSFdHTzNHTWcwVHJ3TGRYcEVhcFA3dGZmK0I3T2RVZDZLVk1LMEFBQUFBRWxGVGtTdVFtQ0NcIixcbiAgICAgICAgICAgIEFGR0FSOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCTENBTUFBQUN4eHRLRkFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUFydFFURlJGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGd05BcmdBQUFPbDBVazVUQUJjMlVXaDNnWWlPa0ltQ2VHcFVPQnNCRERGZmxMN2M5Ly80MzhHWlpEVVBIbHluMi96OXJXTWpDRCtiNVBicTROalQwZW4xcEVjTEFqdU0vcUtFWjBRbUNrR2Y0ZTVEQkJDMWhrNFRTYkRkYmhZVWZQUDVnRFF0ZWJ0diszSXZCd1lwYTdyamVoSkd5dXVST1FreTVWUHloU0h0dlpvZGl5Z3UxOUE2d3p6aURwUHNNd01nQmF4c1pqQWlRbHNrV3RyV1RaZFZmWGJFbmVheTUvbzlTemRJdUNwd3M4bDF0OFovbFdJUjhkSWNMTzkwbUZZWWNRM1p2S3ZQc1p5TnhWQ2hKVjVBVi9CTTZLNFpXV0dtSHhySG9CVktKNlZQM3NpUGZzRFZyN2JVeTg1WWxsMnFvMm0zZEsrZkFBQUZQVWxFUVZSNG5PM1lmMUJVUlJ3QThPK2lwVTBjQ1hFeWdDVjRqaWtJak9pVUlDcWNPSU5COFhOU0JsUitqU0RFcjFJSkZKQUFCWWtPS1c1Q1N3Z2tEa2ZvR2dJcUVCZ0VxWEZNZzhUcHg4RVZVc1poUkY2VFlucnRlM2ZBdmNmZWNjYzEvdEhjL3NIYnQ3dTNuOTMzWTk5K1FmQUlFaklpUnNTSUdCRWpZa1NtVzA0bFVKaW9jdVAvSFdJeDFia0dWbW9vWWsvMUl0ZmFoUE9YS1VLM3RFNUtDK0tBK3g5amxIQlZsMHN4YW8xdU1tcHM4Ulg4VW0vRURhRjdJNm84YjJLY25oRnFWeCtDd3VhSFcxdjZYUDZXcUFxY3JycWl6L1JCZGx5My9GVTF4S1c0ODBhTll3U3djNzdnUGFpYThBc0lOZWlLQkNQVVRSMDNYOXFFUHRmcENRcEZxRjlHZDNmN2lUOTBRU3hlYkRYQkIrOE9Qa0tWdWdoMGlzUVRibGJnakI5QzVYTWljYWdmWCtWQS9KdDNkQmFVS2NLc1BPNGNQbHB2S2RHT2JQemFCVDgydXhBcTFsTlFwaVgveE5YZ1BnTUhXN1FnOWlHOUV2QzJSb1h6SXVqKzBxcndSUXRZY2x3amtvSE9BRVNqZDNWZExvaHA3L0xUQUd2ZGN6UWdYbHZMZ1RmcG0yMElnVk1pdDFvTzhlZ0lFUWxhY3dhNGF4MFBHMmdBbUR1N2lzQXlOSU9BSEVjbkFTVVhxRitxQ0ljK0dMeEVaNHUrQVpBRVg1dXBXL2Y2Z2xCd3phV2FDNjZBODBDbE9sUFMwdzBMVmswdkVET0lwYm1jTTN5RU1ZOGQ5aC9ER3lWRE9NY1B3SGN5eWZUWVROM2hWMk9hd0RRbEFXZFQ2bURwaEpReEdXRnZHeTlzL3l6RUlyc0FzZ3VZVFNrRWpvNWgrTFZhSUNHUTgxMHhFWEZJellMY2xubzJZdVlzeVVOUmpKWktoSnNhQ1pVWjFNdWNaTk1QMENlOUF4N0xBWHA3S0FRSzl4QVJxQzY5Q1VYaGJLVG1BQlFQc1c0NmpVQzByRy9iQjlScFVqcitZL2ZVS095a1gya2FnYmREaVFpSVVxRmtKd3VKR1BrV1RyN0NhcWhFb1BSOEYyaEVsajNaU1VUT0owTGd0bUFtRWhTZUFNOTFFaEN1REhpRENsQWdFaUk4SkFjYnUyZElTTlQzRXU4MUdVeEVISWZnUFg4Q2tya3NGdWM0MFNVa3hERjVIOEJwRkVOQTBxb1ZjR0kzRTJsdUZVRSs2NzdUeU9pblZPbjR3ZmVKaU5kQU8zQU9aaEVRZ1ZCdUdudUFpZkJsWTNEcUpSTFNKTTJCeXV6dFpLVHRyVlhVUkFsSVV3dzRjZXFaQ0h5eEZ4N2NaNjJNTlBLZ0NBLzBwMHdOQ0pUbElpTFN1Z2VxTTN0WnlBa0JjSE5aTjBXSjBGbU5DQ1Ewa0JDeFNTemNuZ1FXRXJ2NEhKeXRydFFmQ2JJU3owYnkzY0tnUEhtSWpVQnRtY1JiZEY5L0JMSVhDbWNocS85VXdFZGVVMmN6Q0Q4ckZNcWUzcXJlbE45ZkQxM0s3OEpGdks1Y3BCWUV2cWNuQ0VYMHFHd2gvR2NxMC8wUU9qdlY5MlRRRXo4SzZkZW5OeFJxM3hOQnpRZzRIWFVIdzFQY2hrd282eXlkUGxmL01yb1hCOEZtejRsMEE0bjhoVFV5VUlnM3pwUXd2dkVmcmc0QStLUnVmanVWcVhRNS9hNEV5bTIycTcwT3pOMUtuaG4rTnUyU2hmdk1tMGlNYUJZQ1dKVnRVaTlrN2J2UUZRRitZRXdXUFpUT2k3Q1lFT0JSY2xaNlpEQ0syVHRJdDhlOXFJZkNKdFV4dmxkUHdid2p1WlM2QkxiWkRSWE1tdGw3NGF2dWRkUnlGTysvcmpGTTl3MlllUmVTL2tKdHBqejJXem15SzBtNyt0RE1mWFRRNFpjbzkvdGRKOEtodmlKSytlcTkrVmpFN0dweWZCSWw4dTFXVm5kNEtEaER4RFpUNlRJeU85dWlqTHRRM0ZncHFZbW1TTXZPNUZoVG16TEx1K01mc3FFOXpJY2RFZGk5dk1KMytObjJLbFdveFdubXUyaUlsclRFakdsanV5VnFlMDFRY01WZnBaVFd1cTNuSVdITW92eHI2bEdqZDE3Zm9Sc2FlOUllL1ZvMFR2TDhaRnFiNElEc3grRVZ2MG0xdFpnN2pvL2tleGFraGppMUVhcE1QZGY3b1RMeHdGeGQ2UG9mQ1o5N25BbnVTby9DdXJzWFlOdGk5SHpWalNEcEtVWEYzRC9VQnpFb0dSRWpZa1NNaUJINTN5UC9BblA2Mmx2b1dHQnNBQUFBQUVsRlRrU3VRbUNDXCIsXG4gICAgICAgICAgICBBRkdURDogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVFQUFBQW9DQVlBQUFDaERKZlhBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFCZmRKUkVGVWVKenRtZ3RNVjFVY3gvRXZRcVJqa0pxdmJPdkJZN1ppeSt3aEJmYmFVa2RsR0pscnBWbnBjRDBZcTBrUHNBZHBXWlpKT1cxcnRhWHJaV0lTaUhOS2EyUHJ0VFZEaGJTQW10TTZNNTByaEdIWjk4ZjludjQvN3Y5ZS9nWCt1Y0k2MjJmOGY3L3pPL2VjMysrZWMrNjV2MHRjM0FBckppNXpEL2d1NkhFRVdpUUFvQ0hXbmR3RjdvaHBKNzBvR05NdzhDaVlETkxCVXBBVWk0NkdnZzV3NUpSZnZJOEZZOG9CSjhFbjRIWCtqczNOd29XdkJMTmljdkUrRkl3cEVaU0F5MEFhbUFlRzlFZkhoYUFLaklwNVo5NzlKNE5hVUt4MHI0QjNsTHdBMUlCemxlNU1zQVRVZVZBZ05xSHIxb1hBSTJCR3RFRlVjOXBOajRHUFVRdjZ6V2IvOVVyWFJsMEs1US8xMHNEZk1XQWZkVjU4S25ad1BoMmNCSTNTNkg3Qlp4QmIyVEN2UDV6MjZQOGE5ditGMG5WUWR4YmxqeW5Qb2Z3ODVaOUFtZWhCTGlpbmZxdll3ZmtNQnFFcHprYklaeEMxQVFjaDF5TUk5bzZtVXQ1RStVN0tPeWpQYzEycndCV0V6SUVjaEU3WFRQaUk4bTJVdDFGK3luV3QyNm12RmxrRm9URmFFT3h5Mk1DcDFkKzh4ZjUvVmpvN0U1WlJQa3c1bldOZVRQbFBVS0hhZmVBVGhEM1JnbERUd3daek9sR2h4bnlHbWgxZVZERUlHUkZCTUI2bkwraStaTjE2NDV6UVRrZXU4TG1CbDRMSGxaM2RPell6Q0ZrTXdpNHhibVRsRXRkRjdsWUJtdURWMFVBcEdQK0ZZRHQ5S1JjZG5DOWdFS3JGNEFIWGRQbkZKYThPMm9uL1dqRG00V0NMY1E1SFg0Ry82TXNCTUZwczRId1ZnMUJrRytVWjUyU29uVzhCSllGNjA4dUNjV2Q0M05oVllLelV3L0U4QnVCM2tPcHVQTkk0THlvVEF4bjlLU3p3WVNxNEdvelhlamc5QlJ4bkVPWUdOYjVBQ2h5T0J5V2dEWFNDK1VHUHFkOEtuQjBHRm9GbWUwSUVPVUdQSytZRlRpYUJtV0FsT0FCT2dGb3dHOFQrOVR0V0JZTWZDcWFSWEpBSVJsSytIandCS3NGblhQTUdiQVFMSWphL2dWbzRyVzhBcGVBRlVFYzJnVFhVTHdTM2dFbEJqL2YvTWlBTHBrNHJkMDJOUEVJK0I0dmQ5bmp1amdOdm1QRGJXenY0R2p6alBsNURqZ2N2QWtQYlg4Rk80K1FLUjlOR2pyU1NMWHJQbzY5endGRlE0elYyNktlRDMrUjA2Rk8vd3UvVUM5MTU0SGhYVys2YzRuZzkyS25vcEw1VU5aek5odllrMWtTbmpsQ1d2em5LL2psMVlwTlgzd2JWZGdWdGJNNGc0bHVDdkJ5eHJ0V2pMc2wxeEwvWncyYWpxaTkwMVYxbGZkQkJjSitzN3FGK243b3I3V3dveVpaeDZvS1NxdC9BT3BraHlkUWZvaTVOMmFhQysreEpyZzlCV01nNm0wL2NaVnpaWnhOT3ZRa253TFdxenVZdnYrOHBDRGRSMzh4R3I5cEdJTkZqVUNHK2I0ak52ZFExcTZCbHVkdlFKcWVISUV4aFhZdExMOHVzbFhWWnhubFJrdCt6WEhZMnIyRHJqOW9iWXB4UEM2SnIxRUhJNS9OWG1LdjJpbkkyc3EraXk3eWNvYzFxMnF5aFBNZTFmR1J2ZUJmTVZHMXlWYjBmcmE1KzVsTmZTWGthNWQxNk5xamxzTWc0V1NaN0UxUFVjdWdXQkM4cTdBbkxoTjh5eS81RkVOWXAzVVJRYXB5OW8wTTU5aVRyYlVhNXpVUitJN0M1amhaMXZSQWRFWDB4ZzVpcmxzV3R5dFltVW1UcHlKSzFTZGdkcXQrOU9nakx3Vkx3TEY4eVJEZERYZkJwTnBJblFZSkhBR1NLL2tDYmZKOGdEV2RBeE9ZWUIyWUhFL0dsMldzNXFGbmdSNE95cmJRemdYS0tDcXpObW5YYkdQODVXdUozc2QwUHJCN0daeHZuY1NRTjY4RkZxck5MVERncCt3MTFDV0N0Y1RiTXFjcjJZaE5lbnpvSTMzb0V3VzZNTGVxYXN1OUlra1MrTDdoVGJVMjB6NlA5WmgwRTZzWWJKN2xpZzladFkweFJRVWdBdTZtWDgwSWlMeUR2NXdmVkJmYUNQNVFzYTNJc2JTZUJIMTIyZFdwSjJMM0c3Z2xlUWJqY3FEM0JoRFBKNjMxbVdyNmRyVjR6UWRsbG12QTVwMnRQMkFJT2daQTJoSHdCT014QXZHL3IwV2dFZU5CRXJ0K0haRW00T2hzQ2JnUXJqYk0rclcyUjRRYUd2K2VEL1dDVmgxUHlMVkxXNzFyS3k0M3pUeG9aWGtHZ3pkdkdPWS9JbzFnKzVjdFRKTnNud1BLL0RyNTduQTNFNUpDVGd1cEtTSUlSUFRZWXJBV09aNE9ERElRc2tiVG9yUVpoZ2VQSjRDVytweDhEUlNBK2VzdEJXT0Q0R1BBYTZKRGpOSGhZQWhUMHVBSXBjSHdVZUF6czUreDRreG1lQ2FHQm5MN3FUUkdIUVE0b0E5dTVpYmFEUm1aOXRvR1hRV0gwcXdWWC9nYmFiUDVjQ1JhRjJBQUFBQUJKUlU1RXJrSmdnZz09XCIsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvclByb2ZpbGUob3BOYW1lKSB7XG4gICAgICAgIGxldCBvcGVyYXRvcl9wcm9maWxlID0ge1xuICAgICAgICAgICAgQUZHQVc6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQWZnaGFuIFRlbGVjb20nLFxuICAgICAgICAgICAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIjR0aCBGbG9vciBQb3N0IFBhcmNlbCBCdWlsZGluZyBNb2hhbW1hZCBKYW4gS2hhbiBXYXR0IEthYnVsIEFmZ2hhbmlzdGFuIFwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHQVQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQWZnaGFuIFdpcmVsZXNzIENvbW11bmljYXRpb24gQ29tcGFueScsXG4gICAgICAgICAgICAgICAgbW9iaWxlOiBcIlwiLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiU2hhci1lLU5hdywgQ2hhcmF5ZWUgSGFoaSBZYXFvYlwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHRUE6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRXRpc2FsYXQgIEFmZ2hhbmlzdGFuJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiMDcwMCA4MzAgODMwXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCJEYXJ1bGFtYW4gUm9hZCwgSGFqYXJpIE5hamFyaSwgS2FidWwsIEFmZ2hhbmlzdGFuXCIsXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBBRkdBUjoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdNVE4gQWZnaGFuaXN0YW4nLFxuICAgICAgICAgICAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIlBhcmsgUGxhemEsIE9wcG9zaXRlIFBhcmstZS1TaGFoci1lLU5hdywgS2FidWwsIEFmZ2hhbmlzdGFuXCIsXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBBRkdURDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdSb3NoYW4vVGVsZWNvbSBEZXZlbG9wbWVudCBDb21wYW55IEFmZ2hhbmlzdGFuIENvcnAuJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCJIb3VzZSMxMyBNYWluIFN0cmVldCwgV2F6aXIgQWtiYXIgS2hhbiwgS2FidWwgQWZnaGFuaXN0YW5cIixcbiAgICAgICAgICAgICAgICBlbWFpbDogXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yX3Byb2ZpbGVbb3BOYW1lXTtcbiAgICB9XG5cblxuXG4gICAgLy8gY29udmVydF9tc19wYXlsb2FkX2RhdGVfdG9fbGF0ZXN0KGRhdGEsIHNlcmllc0tleXMsIGRheUtleSwgZGF5S2V5Rm9ybWF0LCBkYXlLZXlPcmRlckFzYykgXG4gICAgLy8gICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiBkYXRhO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChkYXlLZXkgPT0gdW5kZWZpbmVkIHx8IGRheUtleSA9PSBudWxsKSB7XG4gICAgLy8gICAgICAgICBkYXlLZXkgPSAncmVjb3JkRGF0ZSc7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgaWYgKHNlcmllc0tleXMgPT0gdW5kZWZpbmVkIHx8IHNlcmllc0tleXMgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgc2VyaWVzS2V5cyA9ICdzZXJpZXMnO0NvbW1vblNlcnZpY2VcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBpZiAoZGF5S2V5Rm9ybWF0ID09IHVuZGVmaW5lZCB8fCBkYXlLZXlGb3JtYXQgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgZGF5S2V5Rm9ybWF0ID0gJ1lZWVktTU0tREQnO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChkYXlLZXlPcmRlckFzYyA9PSB1bmRlZmluZWQgfHwgZGF5S2V5T3JkZXJBc2MgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgZGF5S2V5T3JkZXJBc2MgPSB0cnVlO1xuICAgIC8vICAgICB9XG5cbiAgICAvLyAgICAgaWYgKGRhdGFbJ3JldHVybkNvZGUnXSA9PSAyMDApIHtcbiAgICAvLyAgICAgICAgIGxldCBzZXJpZXNfY29udGFpbmVyID0ge307XG4gICAgLy8gICAgICAgICBsZXQgcGF5bG9hZEFycmF5ID0gW107XG4gICAgLy8gICAgICAgICBpZiAoZGF5S2V5T3JkZXJBc2MpIHtcbiAgICAvLyAgICAgICAgICAgICBkYXRhWydQYXlsb2FkJ10ucmV2ZXJzZSgpO1xuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICAkLmVhY2goZGF0YVsnUGF5bG9hZCddLCBmdW5jdGlvbiAoaW5kZXgsIHJlY29yZCkge1xuICAgIC8vICAgICAgICAgICAgIGxldCBzID0gJyc7XG4gICAgLy8gICAgICAgICAgICAgbGV0IHNhID0gc2VyaWVzS2V5cy5zcGxpdCgnfCcpO1xuICAgIC8vICAgICAgICAgICAgICQuZWFjaChzYSwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgcyArPSByZWNvcmRbdl07XG4gICAgLy8gICAgICAgICAgICAgICAgIHMgKz0gJyMnO1xuICAgIC8vICAgICAgICAgICAgIH0pO1xuICAgIC8vICAgICAgICAgICAgIGxldCBrZXk7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHMgaW4gc2VyaWVzX2NvbnRhaW5lcikge1xuICAgIC8vICAgICAgICAgICAgICAgICBrZXkgPSBzZXJpZXNfY29udGFpbmVyW3NdO1xuICAgIC8vICAgICAgICAgICAgICAgICBrZXkgPSBtb21lbnQoa2V5LCBkYXlLZXlGb3JtYXQpLnN1YnRyYWN0KDEsICdkYXlzJykuZm9ybWF0KGRheUtleUZvcm1hdCk7XG4gICAgLy8gICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgICAgICAgICAga2V5ID0gbW9tZW50KCkuZm9ybWF0KGRheUtleUZvcm1hdCk7XG4gICAgLy8gICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgIHNlcmllc19jb250YWluZXJbc10gPSBrZXk7XG4gICAgLy8gICAgICAgICAgICAgcmVjb3JkW2RheUtleV0gPSBrZXk7XG4gICAgLy8gICAgICAgICAgICAgcGF5bG9hZEFycmF5LnB1c2gocmVjb3JkKTtcbiAgICAvLyAgICAgICAgIH0pO1xuICAgIC8vICAgICAgICAgaWYgKGRheUtleU9yZGVyQXNjKSB7XG4gICAgLy8gICAgICAgICAgICAgcGF5bG9hZEFycmF5LnJldmVyc2UoKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIGRhdGFbJ1BheWxvYWQnXSA9IHBheWxvYWRBcnJheTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyB9XG5cbiAgICBpc0VtcHR5T3JOdWxsT3JVbmRlZmluZWRGb3JOYW4oZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0YWJzb2x1dGVWYWwoZGF0YSkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuTnVsbFZhbHVlSWZFbXB0eU9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjdXN0b21WYWx1ZVNvcnRlcih2YWx1ZTEsIHZhbHVlMik6IGFueSB7XG5cbiAgICAvLyAgICAgLy8gSGFuZGxpbmcgbnVsbCB2YWx1ZXNcbiAgICAvLyAgICAgaWYgKCF2YWx1ZTEgJiYgdmFsdWUyKSB7IHJldHVybiAtMTsgfVxuICAgIC8vICAgICBpZiAoIXZhbHVlMSAmJiAhdmFsdWUyKSB7IHJldHVybiAwOyB9XG4gICAgLy8gICAgIGlmICh2YWx1ZTEgJiYgIXZhbHVlMikgeyByZXR1cm4gMTsgfVxuXG4gICAgLy8gICAgIC8vIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBsb2NhbGVcbiAgICAvLyAgICAgbGV0IG8xLCBvMjtcbiAgICAvLyAgICAgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgTUInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgR0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgVEInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgS0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgQnl0ZScsICcnKTtcbiAgICAvLyAgICAgICAgIG8xID0gdmFsdWUxLnJlcGxhY2UoJyBCeXRlcycsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBNQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBHQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBUQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBLQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBCeXRlJywgJycpO1xuICAgIC8vICAgICAgICAgbzIgPSB2YWx1ZTIucmVwbGFjZSgnIEJ5dGVzJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSBvMS5yZXBsYWNlQWxsKCcsJywgJycpO1xuICAgIC8vICAgICAgICAgbzIgPSBvMi5yZXBsYWNlQWxsKCcsJywgJycpO1xuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTE7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMjtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBjb25zdCB2MSA9IHBhcnNlRmxvYXQobzEpO1xuICAgIC8vICAgICBjb25zdCB2MiA9IHBhcnNlRmxvYXQobzIpO1xuICAgIC8vICAgICAvLyByZXR1cm4gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKTtcbiAgICAvLyAgICAgaWYgKHYxID4gdjIpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiAxO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGVsc2UgaWYgKHYxIDwgdjIpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiAtMTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gMDtcbiAgICAvLyB9XG5cbiAgICBjdXN0b21WYWx1ZVNvcnRlcih2YWx1ZTEsIHZhbHVlMik6IGFueSB7XG5cbiAgICAgICAgLy8gSGFuZGxpbmcgbnVsbCB2YWx1ZXNcbiAgICAgICAgaWYgKCF2YWx1ZTEgJiYgdmFsdWUyKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZTEgJiYgIXZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlMSAmJiAhdmFsdWUyKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIGVxdWl2YWxlbnQgaW4gdGhlIGN1cnJlbnQgbG9jYWxlXG5cbiAgICAgICAgY29uc3QgdjEgPSBjb252ZXJ0U3RyaW5nKHZhbHVlMSk7XG4gICAgICAgIGNvbnN0IHYyID0gY29udmVydFN0cmluZyh2YWx1ZTIpO1xuICAgICAgICAvLyByZXR1cm4gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKTtcbiAgICAgICAgaWYgKHYxID4gdjIpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKHYxIDwgdjIpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjb252ZXJ0U3RyaW5nKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbGV0IG91dDogYW55O1xuICAgICAgICAgICAgICAgIG91dCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiTUJcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJHQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIlRCXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlQWxsKFwiLFwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGN1c3RvbVZhbHVlU29ydGVyRm9yQmFyKHZhbHVlT25lLCB2YWx1ZVR3bykge1xuXG4gICAgICAgIGNvbnN0IHBhcnNlcjEgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIGNvbnN0IHBhcnNlcjIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIGNvbnN0IGRvY09uZSA9IHBhcnNlcjEucGFyc2VGcm9tU3RyaW5nKHZhbHVlT25lLCAndGV4dC9odG1sJyk7XG4gICAgICAgIGNvbnN0IGRvY1R3byA9IHBhcnNlcjIucGFyc2VGcm9tU3RyaW5nKHZhbHVlVHdvLCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVFbGVtZW50ID0gZG9jT25lLnF1ZXJ5U2VsZWN0b3IoJy5iYXInKTtcbiAgICAgICAgY29uc3QgbnVtYmVyVGV4dE9uZSA9IE51bWJlcih2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLnJlcGxhY2UoLywvZywgJycpKTtcbiAgICAgICAgY29uc3QgdmFsdWVFbGVtZW50VHdvID0gZG9jVHdvLnF1ZXJ5U2VsZWN0b3IoJy5iYXInKTtcbiAgICAgICAgY29uc3QgbnVtYmVyVGV4dFR3byA9IE51bWJlcih2YWx1ZUVsZW1lbnRUd28udGV4dENvbnRlbnQudHJpbSgpLnJlcGxhY2UoLywvZywgJycpKTtcblxuICAgICAgICBpZiAoIW51bWJlclRleHRPbmUgJiYgbnVtYmVyVGV4dFR3bykge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbnVtYmVyVGV4dE9uZSAmJiAhbnVtYmVyVGV4dFR3bykge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlclRleHRPbmUgJiYgIW51bWJlclRleHRUd28pIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBsb2NhbGVcblxuICAgICAgICBjb25zdCB2MSA9IGNvbnZlcnRTdHJpbmcobnVtYmVyVGV4dE9uZSk7XG4gICAgICAgIGNvbnN0IHYyID0gY29udmVydFN0cmluZyhudW1iZXJUZXh0VHdvKTtcbiAgICAgICAgLy8gcmV0dXJuIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgICAgIGlmICh2MSA+IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmICh2MSA8IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29udmVydFN0cmluZyh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGxldCBvdXQ6IGFueTtcbiAgICAgICAgICAgICAgICBvdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIk1CXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiR0JcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJUQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZUFsbChcIixcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQob3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcblxuICAgIH1cblxuICAgIC8vIGZvcm1hdFRvQnl0ZSh2YWx1ZSwgc2l6ZSkge1xuICAgIC8vICAgICBsZXQgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgLy8gICAgIGxldCBpbmRleCA9IHNpemVzLmZpbmRJbmRleCh4ID0+IHggPT09IHNpemUpO1xuXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGluZGV4KTtcbiAgICAvLyB9XG5cbiAgICBvbkV4Y2VsRXhwb3J0aW5nKGUsIGV4Y2VsX2RhdGEsIHJlcG9ydF9uYW1lKSB7XG4gICAgICAgIHRoaXMuSlNPTlRvQ1NWQ29udmVydG9yKGV4Y2VsX2RhdGEsIHJlcG9ydF9uYW1lLCB0cnVlKTtcbiAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJlbW92ZUh0bWxDb250ZW50RnJvbURhdGEoY29sdW1ucywgcm93cykge1xuICAgICAgICAvLyAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xuXG4gICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgICAgICBsZXQgcm93VmFsdWVzID0gcm93LnZhbHVlcztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd1ZhbHVlc1tpXSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd1ZhbHVlc1tpXS50b1N0cmluZygpLmluY2x1ZGVzKFwiPC9pPlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd1ZhbHVlc1tpXSA9IHJvd1ZhbHVlc1tpXS5yZXBsYWNlKC9bXjAtOVxcLlxcLF0vZywgXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjdXN0b21pemVFeGNlbENlbGwob3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSAmJiB0eXBlb2Ygb3B0aW9ucy52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgbnVtZXJpY1N0cmluZyA9IG9wdGlvbnMudmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKE51bWJlcihudW1lcmljU3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnZhbHVlID0gTnVtYmVyKG51bWVyaWNTdHJpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlSHRtbEZvckpvYnN1bW1hcnlDb250ZW50RnJvbURhdGEoY29sdW1ucywgcm93cykge1xuICAgICAgICAvLyAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xuICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgbGV0IHJvd1ZhbHVlcyA9IHJvdy52YWx1ZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd1ZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0udG9TdHJpbmcoKS5pbmNsdWRlcyhcIjwvc3Bhbj5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dWYWx1ZXNbaV0gPSByb3dWYWx1ZXNbaV0ucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXREYXlzQmV0d2VlbkRhdGVzKHN0YXJ0LCBlbmQsIGRheU5hbWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBsZXQgZGF5cyA9IHsgc3VuOiAwLCBtb246IDEsIHR1ZTogMiwgd2VkOiAzLCB0aHU6IDQsIGZyaTogNSwgc2F0OiA2IH07XG4gICAgICAgIGxldCBkYXkgPSBkYXlzW2RheU5hbWUudG9Mb3dlckNhc2UoKS5zdWJzdHIoMCwgMyldO1xuICAgICAgICAvLyBDb3B5IHN0YXJ0IGRhdGVcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBuZXcgRGF0ZShzdGFydCk7XG4gICAgICAgIC8vIFNoaWZ0IHRvIG5leHQgb2YgcmVxdWlyZWQgZGF5c1xuICAgICAgICBjdXJyZW50LnNldERhdGUoY3VycmVudC5nZXREYXRlKCkgKyAoKGRheSAtIGN1cnJlbnQuZ2V0RGF5KCkgKyA3KSAlIDcpKTtcbiAgICAgICAgLy8gV2hpbGUgbGVzcyB0aGFuIGVuZCBkYXRlLCBhZGQgZGF0ZXMgdG8gcmVzdWx0IGFycmF5XG4gICAgICAgIHdoaWxlIChjdXJyZW50IDwgbmV3IERhdGUoZW5kKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGUoK2N1cnJlbnQpKTtcbiAgICAgICAgICAgIGN1cnJlbnQuc2V0RGF0ZShjdXJyZW50LmdldERhdGUoKSArIDcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0QWxsU2V2aWNlQXBpSnNvbihhcGlKc29uT2JqZWN0KSB7XG4gICAgICAgIGxldCBzZXJ2aWNlX2FwaTogYW55O1xuICAgICAgICBzZXJ2aWNlX2FwaSA9IHtcbiAgICAgICAgICAgIHJlcXVlc3RJZDogYXBpSnNvbk9iamVjdC5yZXF1ZXN0SWQsXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb25Hcm91cDoge1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3I6IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJncmVhdGVyVGhhbk9yRXF1YWxzVG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hDbHo6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29tLmdhbW1hLmNvbXBvbmVudHMuYXBpYXV0b21hdGlvbi5lbnJpY2htZW50LkFwaUdlbmVyaWNFbnJpY2htZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoTWV0aG9kOiBcImNvbnZlcnROYXJyb3dTdHJpbmdUb1Nob3J0U3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiZW5kRGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJsZXNzVGhhbk9yRXF1YWxzVG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LmVuZERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoQ2x6OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbS5nYW1tYS5jb21wb25lbnRzLmFwaWF1dG9tYXRpb24uZW5yaWNobWVudC5BcGlHZW5lcmljRW5yaWNobWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaE1ldGhvZDogXCJjb252ZXJ0TmFycm93U3RyaW5nVG9TaG9ydFN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYXBpSnNvbk9iamVjdC5zcnZUeXBlICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LnNydlR5cGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJzcnZUeXBlXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJzcnZfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBhcGlKc29uT2JqZWN0LnNydlR5cGVPcGVyYXRvcixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnNydlR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBpSnNvbk9iamVjdC5yZWNvcmRUeXBlICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LnJlY29yZFR5cGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgXCJzb3VyY2VOYW1lXCI6IFwicmVjb3JkVHlwZVwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0TmFtZVwiOiBcInJlY29yZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJvcGVyYXRvclwiOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwidmFsdWVcIjogYXBpSnNvbk9iamVjdC5yZWNvcmRUeXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnNvdXJjZVZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5zb3VyY2VWYWx1ZSAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJzb3VyY2VcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInNvdXJjZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3Quc291cmNlVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmluVHJ1bmtWYWx1ZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuaW5UcnVua1ZhbHVlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImluVHJ1bmtcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImluX3RydW5rXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5pblRydW5rVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm91dFRydW5rVmFsdWUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm91dFRydW5rVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwib3V0VHJ1bmtcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcIm91dF90cnVua1wiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3Qub3V0VHJ1bmtWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnRUeXBlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ldmVudFR5cGUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiZXZlbnRUeXBlS2V5XCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJldmVudF90eXBlXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IGFwaUpzb25PYmplY3QuZXZlbnRUeXBlLmxlbmd0aCA+IDEgPyBcImluXCIgOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuZXZlbnRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ldmVudCAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnQgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIFwic291cmNlTmFtZVwiOiBcImV2ZW50X3R5cGVcIixcbiAgICAgICAgICAgICAgICBcInRhcmdldE5hbWVcIjogXCJldmVudF90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJvcGVyYXRvclwiOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwidmFsdWVcIjogYXBpSnNvbk9iamVjdC5ldmVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmRpcmVjdGlvbiAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZGlyZWN0aW9uICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImRpcmVjdGlvblwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiZGlyZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5kaXJlY3Rpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBpSnNvbk9iamVjdC5jb3VudHJ5ICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LmNvdW50cnkgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJjb3VudHJ5XCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJjb3VudHJ5XCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5jb3VudHJ5LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3QuYXBuICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LmFwbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImFwblwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiYXBuXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5hcG4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm53Q2FsbFR5cGUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm53Q2FsbFR5cGUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwibndDYWxsVHlwZVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwibndfY2FsbF90eXBlXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5ud0NhbGxUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5yYXRpbmdHcm91cCAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QucmF0aW5nR3JvdXAgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwicmF0aW5nR3JvdXBcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInJhdGluZ19ncm91cFwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QucmF0aW5nR3JvdXAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnRlcm1pbmF0aW9uVmFsdWUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnRlcm1pbmF0aW9uVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwidGVybWluYXRpb25Db2RlXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJ0ZXJtX2NvZGVcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJub3RlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnRlcm1pbmF0aW9uVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmNlbGxJZFZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5jZWxsSWRWYWx1ZSAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJjZWxsSWRcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImNlbGxfaWRcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJub3RlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LmNlbGxJZFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VydmljZV9hcGk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzYW9tZSByZW5kb21lIG51bWJlclxuICAgIHByaW1lcnlSZW5kb21lSWQobGVuZ3RoKSB7XG4gICAgICAgIGxldCBtYXNrID0gXCJcIjtcbiAgICAgICAgbWFzayArPSBcIjAxMjM0NTY3ODlcIjtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW5ndGg7IGkgPiAwOyAtLWkpXG4gICAgICAgICAgICByZXN1bHQgKz0gbWFza1tNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAobWFzay5sZW5ndGggLSAxKSldO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG4gICAgLy8gZm9yIGNoYXJ0IHRvb2x0aXBcbiAgICBjaGFydFRvb2x0aXAoYTogYW55LCBiOiBhbnksIGM6IGFueSwgZDogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuICc8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MzAgYm9yZGVyPTAgIHN0eWxlPVxcJ2ZvbnQtc2l6ZTogMTNweFxcJz4nICtcbiAgICAgICAgICAgICc8dHI+PHRkIHN0eWxlPVxcJ3RleHQtYWxpZ246IGxlZnQ7IGNvbG9yOiB3aGl0ZVxcJz4gJyArIGEgKyAnOicgKyBiICsgJzwvdGQ+PC90cj4nICtcbiAgICAgICAgICAgICc8dHI+PHRkIHN0eWxlPVxcJ3RleHQtYWxpZ246IGxlZnQ7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZy10b3A6IDVweFxcJz4gJyArIGMgKyAnOicgKyBkICsgJzwvdGQ+PC90cj4nICtcbiAgICAgICAgICAgICc8L3RhYmxlPic7XG4gICAgfVxuXG5cbiAgICBjb252ZXJ0VG9UaXRsZUNhc2UodmFsdWUpIHtcbiAgICAgICAgY29uc3Qgd29yZHMgPSB2YWx1ZS5zcGxpdCgvKD89W0EtWl0pfF8vKTtcbiAgICAgICAgY29uc3QgY2FwaXRhbGl6ZWRXb3JkcyA9IHdvcmRzLm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FwaXRhbGl6ZWRXb3Jkcy5qb2luKCcgJyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmb3JtYXRLZXlWYWx1ZVBhaXJzKGtleXMsIHZhbHVlcykge1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignS2V5cyBhbmQgdmFsdWVzIGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRQYWlycyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5jb252ZXJ0VG9UaXRsZUNhc2Uoa2V5c1tpXSk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICAgICAgICAgIGZvcm1hdHRlZFBhaXJzLnB1c2goYCR7a2V5fSA9ICR7dmFsdWV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXR0ZWRQYWlycy5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZXNCeUtleShvYmosIGtleXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChvYmpba2V5XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtSGVhZGVyQXNLZXlOYW1lKG1haW5vYmo6IGFueSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG1haW5vYmopLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFGaWVsZDoga2V5LFxuICAgICAgICAgICAgICAgIGNhcHRpb246IGtleVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9ybWF0RGVjaW1hbFZhbHVlc0ZvckNkckRhdGFUYWJsZShkYXRhU291cmNlKSB7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdJdGVtID0ge307XG5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBpdGVtW2tleV07XG4gICAgICAgICAgICAgICAgbGV0IG51bVZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4obnVtVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1WYWx1ZSAlIDEgIT09IDApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3SXRlbVtrZXldID0gdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYzKG51bVZhbHVlLCAyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3SXRlbVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdJdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVNhbXBsZURhdGEoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZywgZmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICAgICAgbGV0IGRhdGFzZXQgPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnREYXRlID0gbW9tZW50KHN0YXJ0RGF0ZSk7XG4gICAgICAgIGNvbnN0IGVuZERhdGVNb21lbnQgPSBtb21lbnQoZW5kRGF0ZSk7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnREYXRlIDw9IGVuZERhdGVNb21lbnQpIHtcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSB7fTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQgPT09ICdyZWNvcmREYXRlJykge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRbZmllbGRdID0gY3VycmVudERhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkW2ZpZWxkXSA9IHRoaXMuZ2V0UmVuZG9tTnVtYmVyV2l0aGRlY2ltYWxzKDMsIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YXNldC5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlLmFkZCgxLCAnZGF5cycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFzZXQ7XG4gICAgfVxuICAgIGdldFJlbmRvbU51bWJlcldpdGhkZWNpbWFscyhsZW5ndGgsIGV4cCkge1xuICAgICAgICBsZXQgbWFzayA9IFwiXCI7XG4gICAgICAgIG1hc2sgKz0gXCIwMTIzNDU2Nzg5XCI7XG4gICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKVxuICAgICAgICAgICAgcmVzdWx0ICs9IG1hc2tbTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1hc2subGVuZ3RoIC0gMSkpXTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNChyZXN1bHQsIGV4cCk7XG4gICAgfVxuXG4gICAgZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbnVtZXJpY1RpbWVzdGFtcCA9IHBhcnNlSW50KHRpbWVzdGFtcCwgMTApO1xuICAgICAgICByZXR1cm4gbW9tZW50KG51bWVyaWNUaW1lc3RhbXApLmZvcm1hdCgnZGRkZCwgREQgTU1NTSBZWVlZIEhIOm1tOnNzLlNTUyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZm9ybWF0RHVyYXRpb25Gcm9tTWlsaXNlY29uZChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgbGV0IHRvdGFsU2Vjb25kcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgICAgIGxldCBzZWNvbmRzID0gdG90YWxTZWNvbmRzICUgNjA7XG4gICAgICAgIGxldCB0b3RhbE1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsU2Vjb25kcyAvIDYwKTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSB0b3RhbE1pbnV0ZXMgJSA2MDtcbiAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcih0b3RhbE1pbnV0ZXMgLyA2MCk7XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIGlmIChob3VycyA+IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2hvdXJzfSBob3VyJHtob3VycyA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWludXRlcyA+IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke21pbnV0ZXN9IG1pbnV0ZSR7bWludXRlcyA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2Vjb25kcyA+IDAgfHwgcmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7c2Vjb25kc30gc2Vjb25kJHtzZWNvbmRzID4gMSA/ICdzJyA6ICcnfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gICAgfVxuXG5cbiAgICByZW1vdmVEdXBsaWNhdGVzKGpvYkFycmF5LCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gICAgICAgIHJldHVybiBqb2JBcnJheS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkdXBsaWNhdGUgPSBzZWVuLmhhcyhpdGVtW2NvbnRleHRdKTtcbiAgICAgICAgICAgIHNlZW4uYWRkKGl0ZW1bY29udGV4dF0pO1xuICAgICAgICAgICAgcmV0dXJuICFkdXBsaWNhdGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEtleSA9IChvYmopID0+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIHJldHVybiBrZXlzLmZpbmQoa2V5ID0+IGtleSAhPT0gXCJldmVudF9kYXRlXCIpO1xuICAgIH07XG5cbiAgICBjb252ZXJ0U3RyaW5nKGlucHV0KSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBpbnB1dFxuICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiKFthLXpdKS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2gudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8oW0EtWl17Mix9KS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuIGZvcm1hdE51bWJlcldpdGhEZWNpbWFsUGxhY2VzKHZhbHVlLG51bWJlck9mRGlnaXRzOm51bWJlcikge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IG51bWVyaWNWYWx1ZS50b0ZpeGVkKG51bWJlck9mRGlnaXRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcIi1cIikge1xuICAgICAgICAgICAgICAgIHZhbCA9IFwiLVwiO1xuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBhcnRzID0gdmFsLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuICAgICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xuXG4gICAgfVxuXG4gICAgVGhvdXNhbmRTZXBhcmF0b3JXaXRoVHdvRGVjaW1hbHModmFsdWUpIHtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE51bWJlcldpdGhEZWNpbWFsUGxhY2VzKHZhbHVlLDIpO1xuXG4gICAgfVxuXG5cbiAgICAvLyB0aG91c2VuZCBzZXBhcmV0b3JcbiAgICBUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSkge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKS50b1N0cmluZygpLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG59XG4iXX0=
1227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sTUFBTSxDQUFDO0FBRWQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxhQUFhO0lBd0Z0QixZQUFvQixJQUFnQixFQUFVLE1BQXFCLEVBQVUsU0FBdUI7UUFBaEYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBdEZwRyx5QkFBb0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSx1QkFBa0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsdUJBQWtCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDL0QsNkJBQXdCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJeEQsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLG1DQUE4QixHQUFHLE1BQU0sQ0FBQztRQUMvQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFNekIsa0JBQWEsR0FBRyx1REFBdUQsQ0FBQztRQUtqRSxtQkFBYyxHQUNqQixpTkFBaU4sQ0FBQztRQUMvTSxxQkFBZ0IsR0FDbkIsaU5BQWlOLENBQUM7UUFDL00seUJBQW9CLEdBQ3ZCLHFVQUFxVSxDQUFDO1FBQ25VLGlCQUFZLEdBQ2Ys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Q0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBSztRQUVsQyxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkQsQ0FBQztJQUlELGlCQUFpQixDQUFDLEtBQUs7UUFDbkIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzswR0F2aERRLGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgXCJyeGpzXCI7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG4vLyBkZWNsYXJlIGxldCAkO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XG4gICAga3BpTGlzdERhdGFPYmplY3Q6IGFueTtcbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURSA9IG1vbWVudCgpLnN1YnRyYWN0KFwiMzBcIiwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgR19ERUZBVUxUX0VORF9EQVRFID0gbW9tZW50KCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICBkZWZhdWx0Q3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoXCJZWVlZLU1NLUREX2hoOm1tOnNzOlNTXCIpO1xuICAgIGRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyA9IG1vbWVudCgpLmZvcm1hdChcIllZWVlNTUREaGhtbXNzU1NcIik7XG4gICAgZ2xvYmFsX2xvYWRpbmc6IGFueTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcGVyYXRvcjogYW55O1xuICAgIHB1YmxpYyBLcGlJZDogYW55O1xuICAgIHB1YmxpYyBrcGlVcmxPYmplY3RDb250YWluZXIgPSBbXTtcbiAgICBwdWJsaWMgYWxsS3BpYnJvd3NlckRldGFpbENvbnRhaW5lcjogYW55O1xuICAgIHB1YmxpYyBHbE9CQUxfQVVUT19SRUxPQURJTkdfVElNRV9TRVQgPSAzMDAwMDA7XG4gICAgYnJlYWRDdW1ic0xpc3RBcnJheSA9IFtdO1xuICAgIGJyZWFkQ3VtYnNMaXN0SWQ6IGFueTtcbiAgICBwdWJsaWMgY3VycmVudFVybDogYW55O1xuICAgIGdsb2JhbF9rcGlfbmFtZTogYW55O1xuICAgIC8vIHNlbGVjdFBpY2tlclJlZnJlc2ggPSAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgLy8gc2VsZWN0UGlja2VyRGVzdG9yeSA9IFwiJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcignZGVzdHJveScpXCI7XG4gICAgZ2xvYmFsRG9jTGluayA9IFwiaHR0cDovLzIwMy4yMTUuMzMuMjIyOjMzMDAxL3Byb2R1Y3QvUHJvbnRvL2twaS9SUzIwMDJcIjtcbiAgICBtYXBDaGFydERldGFpbEhvbGRlciE6IG9iamVjdDtcbiAgICBmdXNpb25UaGVtZU5hbWU6IGFueTtcblxuICAgIC8vYnV0dG9ucyBzdGFydFxuICAgIHB1YmxpYyBidG5QcmltYXJ5Qmx1ZSA9XG4gICAgICAgIFwidGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlU20gPVxuICAgICAgICBcInRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMS41IG1yLTIgbWItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5TZWNvbmRhcnlBbHRlcm5ldCA9XG4gICAgICAgIFwicHktMi41IHB4LTUgbXItMiBtYi0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgYmctd2hpdGUgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtYmx1ZS03MDAgZm9jdXM6ei0xMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuRGFya0JsYWNrID1cbiAgICAgICAgXCJ0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuTGlnaHRXaGl0ZSA9XG4gICAgICAgIFwidGV4dC1ncmF5LTkwMCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGZvY3VzOm91dGxpbmUtbm9uZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0blN1Y2Nlc3NHcmVlbiA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZCA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctcmVkLTcwMCBob3ZlcjpiZy1yZWQtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLXJlZC02MDAgZGFyazpob3ZlcjpiZy1yZWQtNzAwIGRhcms6Zm9jdXM6cmluZy1yZWQtOTAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZFNtID1cbiAgICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0xLjUgbXItMiBtYi0yIGRhcms6YmctcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC03MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIjtcbiAgICBwdWJsaWMgYnRuV2FybmluZ1llbGxvdyA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5PdGhlcnNQdXJwbGUgPVxuICAgICAgICBcImZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLXB1cnBsZS03MDAgaG92ZXI6YmctcHVycGxlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTIuNSBtYi0yIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmhvdmVyOmJnLXB1cnBsZS03MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDBcIjtcbiAgICBwdWJsaWMgaW5wdXRPbmUgPSBcImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiO1xuICAgIC8vYnV0dG9ucyBlbmRcblxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVN1Y2Nlc3MgL2dyZWVuIEJ1dHRvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYnRuX3N1Y2Nlc3NfbGcgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLWdyZWVuLTcwMCBob3ZlcjpiZy1ncmVlbi04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiAgZGFyazpiZy1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi03MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fc3VjY2Vzc19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yICBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bl9zdWNjZXNzX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1ncmVlbi03MDAgaG92ZXI6YmctZ3JlZW4tODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6aG92ZXI6YmctZ3JlZW4tNzAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJpbWFyeS8gQmx1ZSBCdXR0b25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9wcmltYXJ5X2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fcHJpbWFyeV9tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcbiAgICBwdWJsaWMgYnRuX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJhZGdlX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIGlubGluZSBweC0wLjUgcHktMC41IG1yLTEgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGFuZ2VyLyBSZWQgQnV0dG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBidG5fZGFuZ2VyX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX21kID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdhcm5pbmcvIFllbGxvdyBCdXR0b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl93YXJuaW5nX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC1ibGFjayBiZy15ZWxsb3ctNDAwIGhvdmVyOmJnLXllbGxvdy01MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIjtcbiAgICBwdWJsaWMgYnRuX3dhcm5pbmdfbWQgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LWJsYWNrIGJnLXllbGxvdy00MDAgaG92ZXI6YmcteWVsbG93LTUwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy15ZWxsb3ctMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0zIHB5LTMgbXItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5fd2FybmluZ19zbSA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctOTAwXCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXJlc2V0LyBHcmF5IEJ1dHRvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9kYXJrX2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFya19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgYnRuX2Rhcmtfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctZ3JheS04MDAgaG92ZXI6YmctZ3JheS05MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0xIHB5LTEgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG5cblxuICAgIHB1YmxpYyBidG5fbGlnaHRfbGcgPSBcIm1zLTMgdGV4dC1ncmF5LTUwMCBiZy13aGl0ZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctYmx1ZS0zMDAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHRleHQtc20gZm9udC1tZWRpdW0gcHgtNSBweS01IGhvdmVyOnRleHQtZ3JheS05MDAgZm9jdXM6ei0xMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDBcIjtcbiAgICBwdWJsaWMgYnRuX2xpZ2h0X21kID0gXCJtcy0zIHRleHQtZ3JheS01MDAgYmctd2hpdGUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWJsdWUtMzAwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHB4LTMgcHktMyBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnotMTAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNjAwXCI7XG4gICAgcHVibGljIGJ0bl9saWdodF9zbSA9IFwibXMtMyB0ZXh0LWdyYXktNTAwIGJnLXdoaXRlIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctNCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy1ibHVlLTMwMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgdGV4dC1zbSBmb250LW1lZGl1bSBweC0xIHB5LTEgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp6LTEwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNTAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTYwMFwiO1xuXG4gICAgcHVibGljIGJ0bl9wdXJwbGVfbGcgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLXB1cnBsZS03MDAgaG92ZXI6YmctcHVycGxlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiAgZGFyazpiZy1wdXJwbGUtNjAwIGRhcms6aG92ZXI6YmctcHVycGxlLTcwMCBkYXJrOmZvY3VzOnJpbmctcHVycGxlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fcHVycGxlX21kID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1wdXJwbGUtNzAwIGhvdmVyOmJnLXB1cnBsZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcHVycGxlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmhvdmVyOmJnLXB1cnBsZS03MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS04MDBcIjtcbiAgICBwdWJsaWMgYnRuX3B1cnBsZV9zbSA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctcHVycGxlLTcwMCBob3ZlcjpiZy1wdXJwbGUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXB1cnBsZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yICBkYXJrOmJnLXB1cnBsZS02MDAgZGFyazpob3ZlcjpiZy1wdXJwbGUtNzAwIGRhcms6Zm9jdXM6cmluZy1wdXJwbGUtODAwXCI7XG5cbiAgICBwdWJsaWMgYnRuRGFya0JsYWNrID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0bkxpZ2h0V2hpdGUgPSBcImN1cnNvci1wb2ludGVyIHRleHQtZ3JheS05MDAgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBmb2N1czpvdXRsaW5lLW5vbmUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgLy8gc21hbGwgYnV0dG9uXG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlX3NtID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtc21hbGwgcm91bmRlZCB0ZXh0LXNtIHB4LTIgcHktMS41IG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHsgfVxuXG4gICAgY2hhcnRSZW5kZXJOZXcoY2FwdGlvbjogYW55KSB7XG4gICAgICAgIGxldCBjaGFydHM6IGFueSA9IHt9O1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udFwiXSA9IFwiVmVyZGFuYVwiO1xuICAgICAgICBjaGFydHNbXCJjYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViQ2FwdGlvblwiXSA9IGNhcHRpb247XG4gICAgICAgIGNoYXJ0c1tcInN1YmNhcHRpb25Gb250Q29sb3JcIl0gPSBcIiNkNGQwZDBcIjtcbiAgICAgICAgY2hhcnRzW1wieEF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wieUF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicFlBeGlzTmFtZVwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInNZQXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzaG93VmFsdWVzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcIm51bWJlclByZWZpeFwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInBhbGV0dGVDb2xvcnNcIl0gPVxuICAgICAgICAgICAgXCIjMWU4OGU1LCNmNDQzMzYsIzFhYWY1ZCwjMWZiNjIyLCM3ZTAwYjAsI0U3NEMzQywjQUFCN0I4LCNEMzU0MDAsIzI3Mzc0NiwjMTdBNTg5LCMyNzM3NDYsXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzQyNDI0Mic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhbnZhc0JnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInVzZVBsb3RHcmFkaWVudENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RCb3JkZXJBbHBoYVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQm9yZGVyQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQmdBbHBoYVwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJsZWdlbmRTaGFkb3dcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0hvdmVyRWZmZWN0XCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcInZhbHVlRm9udENvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInJvdGF0ZVZhbHVlc1wiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJwbGFjZVZhbHVlc0luc2lkZVwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJkaXZsaW5lQ29sb3JcIl0gPSBcIiM2Njk5Y2NcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUlzRGFzaGVkXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVEYXNoTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVHYXBMZW5cIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUFscGhhXCJdID0gXCI2MFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlVkdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbJ2NhbnZhc0JnQ29sb3InXSA9ICcjNDI0MjQyJztcbiAgICAgICAgY2hhcnRzW1wiY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJjYXB0aW9uRm9udFNpemVcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEVuYWJsZWRcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0Rm9ybWF0c1wiXSA9IFwiUE5HfEpQR1wiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRGaWxlTmFtZVwiXSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjaGFydHNbXCJzbGFudExhYmVsc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dBbHRlcm5hdGVIR3JpZENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBDb2xvclwiXSA9IFwiI2ZmZmZmZlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyVGhpY2tuZXNzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0NvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0FscGhhXCJdID0gXCI4MFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJsYWJlbERpc3BsYXlcIl0gPSBcInJvdGF0ZVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG4gICAgICAgIHJldHVybiBjaGFydHM7XG4gICAgfVxuXG4gICAgZ2V0TmV3bXNjb21iaWR5MmQocFlBeGlzTmFtZTogYW55LCBzWUF4aXNOYW1lOiBhbnkpIHtcbiAgICAgICAgbGV0IGNoYXJ0czogYW55ID0ge307XG4gICAgICAgIGNoYXJ0c1tcImJhc2VGb250XCJdID0gXCJWZXJkYW5hXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25cIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJDYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRDb2xvclwiXSA9IFwiI2Q0ZDBkMFwiO1xuICAgICAgICBjaGFydHNbXCJ4QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJ5QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJwWUF4aXNOYW1lXCJdID0gcFlBeGlzTmFtZTtcbiAgICAgICAgY2hhcnRzW1wic1lBeGlzTmFtZVwiXSA9IHNZQXhpc05hbWU7XG4gICAgICAgIGNoYXJ0c1tcInNob3dWYWx1ZXNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibnVtYmVyUHJlZml4XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicGFsZXR0ZUNvbG9yc1wiXSA9XG4gICAgICAgICAgICBcIiMxZTg4ZTUsI2Y0NDMzNiwjMWFhZjVkLCNjZmUzMjAsIzdlMDBiMCwjRTc0QzNDLCNBQUI3QjgsI0QzNTQwMCwjMjczNzQ2LCMxN0E1ODksIzI3Mzc0NiwgXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dCb3JkZXJcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ1c2VQbG90R3JhZGllbnRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJwbG90Qm9yZGVyQWxwaGFcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJvcmRlckFscGhhXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kU2hhZG93XCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dIb3ZlckVmZmVjdFwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJ2YWx1ZUZvbnRDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJyb3RhdGVWYWx1ZXNcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wicGxhY2VWYWx1ZXNJbnNpZGVcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2bGluZUNvbG9yXCJdID0gXCIjNjY5OWNjXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVJc0Rhc2hlZFwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lRGFzaExlblwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lR2FwTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVBbHBoYVwiXSA9IFwiNjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0FsdGVybmF0ZVZHcmlkQ29sb3JcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzWydjYW52YXNCZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25Gb250U2l6ZVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMFwiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRFbmFibGVkXCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEZvcm1hdHNcIl0gPSBcIlBOR3xKUEdcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0RmlsZU5hbWVcIl0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY2hhcnRzW1wibGFiZWxEaXNwbGF5XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic2xhbnRMYWJlbHNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlSEdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQ29sb3JcIl0gPSBcIiNmZmZmZmZcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEJvcmRlclRoaWNrbmVzc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdBbHBoYVwiXSA9IFwiODBcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcImxhYmVsRGlzcGxheVwiXSA9IFwicm90YXRlXCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIGNoYXJ0cztcbiAgICB9XG5cbiAgICAvLyBqc29uIHRvIGNzdiBjb252ZXJ0b3JcbiAgICBKU09OVG9DU1ZDb252ZXJ0b3IoSlNPTkRhdGEsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcbiAgICAgICAgLy9JZiBKU09ORGF0YSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gSlNPTi5wYXJzZSB3aWxsIHBhcnNlIHRoZSBKU09OIHN0cmluZyBpbiBhbiBPYmplY3RcbiAgICAgICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gXCJvYmplY3RcIiA/IEpTT04ucGFyc2UoSlNPTkRhdGEpIDogSlNPTkRhdGE7XG5cbiAgICAgICAgbGV0IENTViA9IFwiXCI7XG4gICAgICAgIC8vU2V0IFJlcG9ydCB0aXRsZSBpbiBmaXJzdCByb3cgb3IgbGluZVxuXG4gICAgICAgIENTViArPSBSZXBvcnRUaXRsZSArIFwiXFxyXFxuXFxuXCI7XG5cbiAgICAgICAgLy9UaGlzIGNvbmRpdGlvbiB3aWxsIGdlbmVyYXRlIHRoZSBMYWJlbC9IZWFkZXJcbiAgICAgICAgaWYgKFNob3dMYWJlbCkge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFwiXCI7XG5cbiAgICAgICAgICAgIC8vVGhpcyBsb29wIHdpbGwgZXh0cmFjdCB0aGUgbGFiZWwgZnJvbSAxc3QgaW5kZXggb2Ygb24gYXJyYXlcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbMF0pIHtcbiAgICAgICAgICAgICAgICAvL05vdyBjb252ZXJ0IGVhY2ggdmFsdWUgdG8gc3RyaW5nIGFuZCBjb21tYS1zZXByYXRlZFxuICAgICAgICAgICAgICAgIHJvdyArPSBpbmRleCArIFwiLFwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgICAgICAvL2FwcGVuZCBMYWJlbCByb3cgd2l0aCBsaW5lIGJyZWFrXG4gICAgICAgICAgICBDU1YgKz0gcm93ICsgXCJcXHJcXG5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vMXN0IGxvb3AgaXMgdG8gZXh0cmFjdCBlYWNoIHJvd1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBcIlwiO1xuXG4gICAgICAgICAgICAvLzJuZCBsb29wIHdpbGwgZXh0cmFjdCBlYWNoIGNvbHVtbiBhbmQgY29udmVydCBpdCBpbiBzdHJpbmcgY29tbWEtc2VwcmF0ZWRcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbaV0pIHtcbiAgICAgICAgICAgICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1baW5kZXhdICsgJ1wiLCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvdy5zbGljZSgwLCByb3cubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgIC8vYWRkIGEgbGluZSBicmVhayBhZnRlciBlYWNoIHJvd1xuICAgICAgICAgICAgQ1NWICs9IHJvdyArIFwiXFxyXFxuXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQ1NWID09IFwiXCIpIHtcbiAgICAgICAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9HZW5lcmF0ZSBhIGZpbGUgbmFtZVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcInJlcG9ydF9cIjtcbiAgICAgICAgLy90aGlzIHdpbGwgcmVtb3ZlIHRoZSBibGFuay1zcGFjZXMgZnJvbSB0aGUgdGl0bGUgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiB1bmRlcnNjb3JlXG4gICAgICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCIgXCIpO1xuXG4gICAgICAgIC8vSW5pdGlhbGl6ZSBmaWxlIGZvcm1hdCB5b3Ugd2FudCBjc3Ygb3IgeGxzXG4gICAgICAgIGxldCB1cmkgPSBcImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwlRUYlQkIlQkZcIiArIGVuY29kZVVSSShDU1YpO1xuXG4gICAgICAgIC8vIE5vdyB0aGUgbGl0dGxlIHRyaWNreSBwYXJ0LlxuICAgICAgICAvLyB5b3UgY2FuIHVzZSBlaXRoZXI+PiB3aW5kb3cub3Blbih1cmkpO1xuICAgICAgICAvLyBidXQgdGhpcyB3aWxsIG5vdCB3b3JrIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gb3IgeW91IHdpbGwgbm90IGdldCB0aGUgY29ycmVjdCBmaWxlIGV4dGVuc2lvblxuXG4gICAgICAgIC8vdGhpcyB0cmljayB3aWxsIGdlbmVyYXRlIGEgdGVtcCA8YSAvPiB0YWdcbiAgICAgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJpO1xuXG4gICAgICAgIGlmIChSZXBvcnRUaXRsZSA9PT0gXCJEYXRhc291cmNlIE1pc3NpbmcgRmlsZXNcIikge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLnR4dFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLmNzdlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9zZXQgdGhlIHZpc2liaWxpdHkgaGlkZGVuIHNvIGl0IHdpbGwgbm90IGVmZmVjdCBvbiB5b3VyIHdlYi1sYXlvdXRcblxuICAgICAgICAvL3RoaXMgcGFydCB3aWxsIGFwcGVuZCB0aGUgYW5jaG9yIHRhZyBhbmQgcmVtb3ZlIGl0IGFmdGVyIGF1dG9tYXRpYyBjbGlja1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuXG4gICAgLy8gaHRtbCBmb3IgY29sb3IgYmFyXG4gICAgY3JlYXRlSHRtbCh3aWR0aCwgZGF0YSwgY29sb3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXBhZGRpbmdcIiBzdHlsZT1cImZsb2F0OmxlZnQ7IHdpZHRoOiAke3dpZHRofSU7IGJhY2tncm91bmQtY29sb3I6ICR7Y29sb3J9O1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC13aGl0ZSBiYXJcIj4ke2RhdGF9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICAgICAgPC9kaXY+YFxuICAgICAgICApO1xuICAgIH1cbiAgICAvLyBzY2FsZSBmb3IgY29sb3JiYXJcbiAgICBzY2FsZU51bWJlcihpbnB1dFksIHlNaW4sIHlNYXgsIHhNaW4sIHhNYXgpIHtcbiAgICAgICAgaWYgKHlNaW4gPT0geU1heCkge1xuICAgICAgICAgICAgaWYgKGlucHV0WSA9PSB5TWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHhNYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geE1pbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwZXJjZW50ID0gKGlucHV0WSAtIHlNaW4pIC8gKHlNYXggLSB5TWluKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJjZW50ICogKHhNYXggLSB4TWluKSArIHhNaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiBcbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSkge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYyKHZhbHVlLCBleHApIHtcbiAgICAgICAgaWYgKGV4cCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4cCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91bmRPZmZUaWxsVHdvKHZhbHVlLCBleHApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjModmFsdWUsIGV4cCkge1xuXG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmIChleHAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gMCkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsID0gXCJOQU5cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNCh2YWx1ZSwgZXhwID0gMCkge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgYWxyZWFkeSBvbmVcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHsgLy8gQ2hlY2sgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIGEgbnVtYmVyXG4gICAgICAgICAgICB2YWwgPSBudW1lcmljVmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gXCItXCIpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBcIi1cIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHZhbCA9IFwiTkFOXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsgLy8gRWFybHkgcmV0dXJuIGFzIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBub3QgbWVhbmluZ2Z1bFxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9ybWF0IHRoZSBudW1iZXIgd2l0aCB0aG91c2FuZCBzZXBhcmF0b3IgYW5kIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlc1xuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gZm9yIG51bWJlciByZXR1cm5cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclY1KHZhbHVlLCBleHAgPSAwKSB7XG4gICAgICAgIGxldCB2YWw7XG5cbiAgICAgICAgLy8gQ29udmVydCB2YWx1ZSB0byBhIG51bWJlciBpZiBpdCdzIG5vdCBhbHJlYWR5IG9uZVxuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkgeyAvLyBDaGVjayBpZiB0aGUgY29udmVyc2lvbiByZXN1bHQgaXMgYSBudW1iZXJcbiAgICAgICAgICAgIHZhbCA9IG51bWVyaWNWYWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gXCItXCIpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBcIi1cIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmFOOyAvLyBSZXR1cm4gTmFOIHRvIGluZGljYXRlIGFuIGludmFsaWQgbnVtYmVyXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBOYU47IC8vIFJldHVybiBOYU4gdG8gaW5kaWNhdGUgYW4gaW52YWxpZCBudW1iZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyBiYWNrIHRvIGEgbnVtYmVyXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKTtcbiAgICB9XG5cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcklmcnNUeXBlKHZhbHVlLCBleHAgPSAwKSB7XG4gICAgICAgIGxldCB2YWw7XG5cbiAgICAgICAgLy8gQ29udmVydCB2YWx1ZSB0byBhIG51bWJlciBpZiBpdCdzIG5vdCBhbHJlYWR5IG9uZVxuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkgeyAvLyBDaGVjayBpZiB0aGUgY29udmVyc2lvbiByZXN1bHQgaXMgYSBudW1iZXJcbiAgICAgICAgICAgIHZhbCA9IG51bWVyaWNWYWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWwgPSBcIi1cIjtcbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9ybWF0IHRoZSBudW1iZXIgd2l0aCB0aG91c2FuZCBzZXBhcmF0b3IgYW5kIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlc1xuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3JhbXRlVmFsdWVGb3JBbW91bnQodmFsdWUsIGV4cCkge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAoZXhwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4cCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGl2aWRlIHRoZSB2YWx1ZSBieSAxMDAwMCBhdCB0aGUgb3V0c2V0XG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKSAvIDEwMDAwO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXN1bHQgaXMgYSBmaW5pdGUgbnVtYmVyXG4gICAgICAgIGlmIChpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBpbnB1dCBvciB0aGUgZGl2aXNpb24gcmVzdWx0IGlzIG5vdCBhIG51bWJlciwgaGFuZGxlIGdyYWNlZnVsbHlcbiAgICAgICAgICAgIHZhbCA9IFwiMFwiOyAvLyBEZWZhdWx0aW5nIHRvIFwiMFwiIHRvIGVuc3VyZSB0aGUgdG9Mb2NhbGVTdHJpbmcgY2FsbCBkb2VzIG5vdCBmYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvcmFtdGVWYWx1ZUZvckNoYXJnZSh2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmIChleHAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZXhwID0gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXZpZGUgdGhlIHZhbHVlIGJ5IDEwMDAwIGF0IHRoZSBvdXRzZXRcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpIC8gMTAwMDA7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJlc3VsdCBpcyBhIGZpbml0ZSBudW1iZXJcbiAgICAgICAgaWYgKGlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IG9yIHRoZSBkaXZpc2lvbiByZXN1bHQgaXMgbm90IGEgbnVtYmVyLCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgICAgICAgdmFsID0gXCIwXCI7IC8vIERlZmF1bHRpbmcgdG8gXCIwXCIgdG8gZW5zdXJlIHRoZSB0b0xvY2FsZVN0cmluZyBjYWxsIGRvZXMgbm90IGZhaWxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9yYW10ZVZhbHVlRm9yTW9VKHZhbHVlLCBleHApIHtcbiAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgaWYgKGV4cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpdmlkZSB0aGUgdmFsdWUgYnkgMTAwMDAgYXQgdGhlIG91dHNldFxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSkgLyA2MDtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVzdWx0IGlzIGEgZmluaXRlIG51bWJlclxuICAgICAgICBpZiAoaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5wdXQgb3IgdGhlIGRpdmlzaW9uIHJlc3VsdCBpcyBub3QgYSBudW1iZXIsIGhhbmRsZSBncmFjZWZ1bGx5XG4gICAgICAgICAgICB2YWwgPSBcIjBcIjsgLy8gRGVmYXVsdGluZyB0byBcIjBcIiB0byBlbnN1cmUgdGhlIHRvTG9jYWxlU3RyaW5nIGNhbGwgZG9lcyBub3QgZmFpbFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFiYnJldmlhdGVOdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIGxldCBTSV9QT1NURklYRVMgPSBbXCJcIiwgXCJLXCIsIFwiTVwiLCBcIkJcIiwgXCJUXCJdO1xuICAgICAgICBsZXQgdGllciA9IChNYXRoLmxvZzEwKE1hdGguYWJzKG51bWJlcikpIC8gMykgfCAwO1xuICAgICAgICBpZiAodGllciA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3VuZE9mZlRpbGxUd28obnVtYmVyLCAyKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcG9zdGZpeCA9IFNJX1BPU1RGSVhFU1t0aWVyXTtcbiAgICAgICAgbGV0IHNjYWxlID0gTWF0aC5wb3coMTAsIHRpZXIgKiAzKTtcbiAgICAgICAgbGV0IHNjYWxlZCA9IG51bWJlciAvIHNjYWxlO1xuICAgICAgICBsZXQgZm9ybWF0dGVkID0gc2NhbGVkLnRvRml4ZWQoMSkgKyBcIlwiO1xuICAgICAgICBpZiAoL1xcLjAkLy50ZXN0KGZvcm1hdHRlZCkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZCA9IGZvcm1hdHRlZC5zdWJzdHIoMCwgZm9ybWF0dGVkLmxlbmd0aCAtIDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWQgKyBwb3N0Zml4O1xuICAgIH1cblxuICAgIGNyZWF0ZVZhcmlhbmNlSHRtbEZvckNvdW50KHdpZHRoLCBkYXRhMSwgZGF0YTIpIHtcbiAgICAgICAgbGV0IGNvbHVtbkNvbG9yID0gXCJcIjtcbiAgICAgICAgbGV0IGNvbHVtbkRhdGEgPSBkYXRhMSAtIGRhdGEyO1xuICAgICAgICBpZiAoY29sdW1uRGF0YSA+IDApIHtcbiAgICAgICAgICAgIGNvbHVtbkNvbG9yID0gXCIjZmQwMDAwXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5Db2xvciA9IFwiI2RiMTUwMFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICc8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+ICcgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJuby1wYWRkaW5nXCIgc3R5bGU9XCJmbG9hdDpsZWZ0OyB3aWR0aDogJyArXG4gICAgICAgICAgICB3aWR0aCArXG4gICAgICAgICAgICBcIiU7IGJhY2tncm91bmQtY29sb3I6IFwiICtcbiAgICAgICAgICAgIGNvbHVtbkNvbG9yICtcbiAgICAgICAgICAgIFwiOyBcIiArXG4gICAgICAgICAgICAnaGVpZ2h0OiAxNXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9kaXY+JyArXG4gICAgICAgICAgICAnPGRpdiBjbGFzcz1cIm5vLXBhZGRpbmdcIiBzdHlsZT1cImZsb2F0OiBsZWZ0XCI+JyArXG4gICAgICAgICAgICB0aGlzLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKGNvbHVtbkRhdGEpICtcbiAgICAgICAgICAgIFwiPC9kaXY+XCIgK1xuICAgICAgICAgICAgXCI8L2Rpdj5cIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJvdW5kT2ZmVGlsbFR3byh2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwID09PSBcInVuZGVmaW5lZFwiIHx8ICtleHAgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9ICt2YWx1ZTtcbiAgICAgICAgZXhwID0gK2V4cDtcblxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpIHx8ICEodHlwZW9mIGV4cCA9PT0gXCJudW1iZXJcIiAmJiBleHAgJSAxID09PSAwKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNoaWZ0XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdChcImVcIik7XG4gICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCgrKHZhbHVlWzBdICsgXCJlXCIgKyAodmFsdWVbMV0gPyArdmFsdWVbMV0gKyBleHAgOiBleHApKSk7XG5cbiAgICAgICAgLy8gU2hpZnQgYmFja1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCJlXCIpO1xuICAgICAgICByZXR1cm4gKyh2YWx1ZVswXSArIFwiZVwiICsgKHZhbHVlWzFdID8gK3ZhbHVlWzFdIC0gZXhwIDogLWV4cCkpO1xuICAgIH1cblxuICAgIGdldG1hcENoYXJ0RGV0YWlsSG9sZGVyKHZhbCkge1xuICAgICAgICB0aGlzLm1hcENoYXJ0RGV0YWlsSG9sZGVyID0gdmFsO1xuICAgIH1cblxuXG5cbiAgICBnZXRfcGVyY2VudGFnZV9jaGFuZ2UocHJldiwgbm93KSB7XG4gICAgICAgIGxldCBwZXJjID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocHJldiAhPT0gMCkge1xuICAgICAgICAgICAgcGVyYyA9ICgobm93IC0gcHJldikgLyBwcmV2KSAqIDEwMDtcbiAgICAgICAgICAgIHBlcmMgPSB0aGlzLnJvdW5kT2ZmVGlsbFR3byhwZXJjLCAyKTtcbiAgICAgICAgfSBlbHNlIGlmIChub3cgIT09IDApIHtcbiAgICAgICAgICAgIHBlcmMgPSAxMDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGJhZGdlX2xhYmVsID0gXCJcIjtcbiAgICAgICAgaWYgKHBlcmMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGVyYyA9IFwiPGIgY2xhc3M9J3dpZy1uYSc+IE5BPC9iPlwiO1xuICAgICAgICAgICAgYmFkZ2VfbGFiZWwgPSBcIjxiPlwiICsgcGVyYyArIFwiPC9iPlwiO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcmMgPiAwKSB7XG4gICAgICAgICAgICBiYWRnZV9sYWJlbCA9XG4gICAgICAgICAgICAgICAgJzxzcGFuPjxiIGNsYXNzPVwiZ3JlZW4tYmFkZ2VcIj4gKycgK1xuICAgICAgICAgICAgICAgIHBlcmMgK1xuICAgICAgICAgICAgICAgICc8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tdXBcIiA+PC9pPjwvYj48L3NwYW4+JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhZGdlX2xhYmVsID1cbiAgICAgICAgICAgICAgICAnPHNwYW4+PGIgY2xhc3M9XCJyLWJnXCI+ICcgK1xuICAgICAgICAgICAgICAgIHBlcmMgK1xuICAgICAgICAgICAgICAgICc8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiID48L2k+PC9iPjxzcGFuPic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhZGdlX2xhYmVsO1xuICAgIH1cblxuICAgIGdldExhYmVsKGF0dHJfbmFtZSkge1xuICAgICAgICBsZXQgbGFiZWxfbmFtZSA9IFwiXCI7XG4gICAgICAgIGlmIChhdHRyX25hbWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoYXR0cl9uYW1lLmluZGV4T2YoXCItXCIpID4gMCkge1xuICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IGF0dHJfbmFtZS5yZXBsYWNlKC8tL2csIFwiIFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cl9uYW1lLmluZGV4T2YoXCJfXCIpID4gMCkge1xuICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IGF0dHJfbmFtZS5yZXBsYWNlKC9fL2csIFwiIFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0cl9uYW1lID0gYXR0cl9uYW1lLnJlcGxhY2UoLyhbQS1aXSkvZywgXCIgJDFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYWJlbF9uYW1lID0gdGhpcy5jYXBpdGFsaXNlV29yZChhdHRyX25hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYWJlbF9uYW1lO1xuICAgIH1cblxuICAgIGNhcGl0YWxpc2VXb3JkKGNvbnRlbnQpIHtcbiAgICAgICAgbGV0IHJldCA9IFwiXCI7XG4gICAgICAgIGxldCB0ZXh0ID0gY29udGVudCxcbiAgICAgICAgICAgIHRva2VucyA9IHRleHQuc3BsaXQoXCIgXCIpLmZpbHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ICE9IFwiXCI7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJlcyA9IFtdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGxlbixcbiAgICAgICAgICAgIGNvbXBvbmVudDtcbiAgICAgICAgZm9yIChpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSB0b2tlbnNbaV07XG4gICAgICAgICAgICByZXMucHVzaChjb21wb25lbnQuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgICAgICAgcmVzLnB1c2goY29tcG9uZW50LnN1YnN0cmluZygxKSk7XG4gICAgICAgICAgICByZXMucHVzaChcIiBcIik7IC8vIHB1dCBzcGFjZSBiYWNrIGluXG4gICAgICAgIH1cbiAgICAgICAgcmV0ICs9IHJlcy5qb2luKFwiXCIpO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIGNvbnZlcnRUb1NwYWNlU2VwYXJhdGVkQ2FwaXRhbGl6ZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0XG4gICAgICAgICAgICAucmVwbGFjZSgvXy9nLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oW0EtWl0pKFtBLVpdW2Etel0pL2csICckMSAkMicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiXFx3L2csIGZpcnN0Q2hhciA9PiBmaXJzdENoYXIudG9VcHBlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBmb3JtYXRNaWxsaXNlYyh2YWx1ZSk6IGFueSB7XG4gICAgICAgIGxldCBtaWxsaXNlY0luRGF5ID0gODY0MDAwMDA7XG4gICAgICAgIGxldCBtaWxsaXNlY0luSG91ciA9IDM2MDAwMDA7XG4gICAgICAgIGxldCBtaWxsaXNlY0luTWluID0gNjAwMDA7XG4gICAgICAgIGxldCBtaWxsaXNlY0luU2VjID0gMTAwMDtcblxuICAgICAgICBpZiAodmFsdWUgPj0gbWlsbGlzZWNJbkRheSkge1xuICAgICAgICAgICAgbGV0IGRheVZhbHVlID0gdmFsdWUgLyA4NjQwMDAwMDtcbiAgICAgICAgICAgIGxldCBkYXkgPSBkYXlWYWx1ZS50b0ZpeGVkKDEpO1xuICAgICAgICAgICAgaWYgKGRheSA9PT0gXCIxXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5ICsgXCIgZGF5XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXkgKyBcIiBkYXlzXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gbWlsbGlzZWNJbkhvdXIpIHtcbiAgICAgICAgICAgIGxldCBob3VyID0gdmFsdWUgLyAzNjAwMDAwO1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyBcIiBoclwiO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5NaW4pIHtcbiAgICAgICAgICAgIGxldCBtaW4gPSB2YWx1ZSAvIDYwMDAwO1xuICAgICAgICAgICAgcmV0dXJuIG1pbiArIFwiIG1pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5TZWMpIHtcbiAgICAgICAgICAgIGxldCBzZWMgPSB2YWx1ZSAvIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gc2VjICsgXCIgc2VjXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPCAxMDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKyBcIiBtaWxcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvcm1hdEJ5dGVzKGJ5dGVzLCBkZWNpbWFscykge1xuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiMCBCeXRlXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGsgPSAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xuICAgICAgICBsZXQgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChkbSkpICsgXCIgXCIgKyBzaXplc1tpXTtcbiAgICB9XG5cbiAgICBmb3JtYXRCeXRlc3YyKGJ5dGVzLCBkZWNpbWFscykge1xuXG4gICAgICAgIGlmIChieXRlcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJ5dGVzID09IFwiTm8gRGF0YVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJObyBEYXRhXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGsgPSAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xuICAgICAgICBsZXQgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChkbSkpICsgXCIgXCIgKyBzaXplc1tpXTtcbiAgICB9XG5cbiAgICBmb3JtYXRCeXRzVG9LYihieXRlcywgZGVjaW1hbHMpIHtcbiAgICAgICAgaWYgKGJ5dGVzID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjBcIjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgayA9IDEwMjQ7XG4gICAgICAgIGxldCBkbSA9IGRlY2ltYWxzO1xuICAgICAgICBpZiAoZGVjaW1hbHMgPT0gdW5kZWZpbmVkIHx8IGRlY2ltYWxzID09IFwiXCIpIHtcbiAgICAgICAgICAgIGRtID0gMjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaSA9IGJ5dGVzIC8gaztcbiAgICAgICAgLy8gcmV0dXJuIHBhcnNlRmxvYXQoaSkudG9Mb2NhbGVTdHJpbmcoKS50b0ZpeGVkKGRtKSArICcgJyArICdLQic7XG4gICAgICAgIGxldCB2ID0gTnVtYmVyKGkpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGRtIH0pO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgLy8gY29uc29sZS5sb2codilcbiAgICB9XG4gICAgZm9ybWF0Qnl0c1RvR2IoYnl0ZXMsIGRlY2ltYWxzKSB7XG4gICAgICAgIGlmIChieXRlcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGcgPSAxMDI0ICogMTAyNCAqIDEwMjQ7XG4gICAgICAgIGxldCBkbSA9IGRlY2ltYWxzO1xuICAgICAgICBpZiAoZGVjaW1hbHMgPT0gdW5kZWZpbmVkIHx8IGRlY2ltYWxzID09IFwiXCIpIHtcbiAgICAgICAgICAgIGRtID0gMjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaSA9IGJ5dGVzIC8gZztcbiAgICAgICAgLy8gcmV0dXJuIHBhcnNlRmxvYXQoaSkudG9Mb2NhbGVTdHJpbmcoKS50b0ZpeGVkKGRtKSArICcgJyArICdLQic7XG4gICAgICAgIGxldCB2ID0gTnVtYmVyKGkpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGRtIH0pO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgLy8gY29uc29sZS5sb2codilcbiAgICB9XG5cbiAgICByZWZvcm1hdE51bWJlcih2YWx1ZSkge1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBcIlwiO1xuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgPj0gMTAwMCkge1xuICAgICAgICAgICAgbGV0IHN1ZmZpeGVzID0gW1wiXCIsIFwiS1wiLCBcIk1cIiwgXCJCXCIsIFwiVFwiXTtcbiAgICAgICAgICAgIGxldCBzdWZmaXhOdW0gPSBNYXRoLmZsb29yKChcIlwiICsgdmFsdWUpLmxlbmd0aCAvIDMpO1xuICAgICAgICAgICAgbGV0IHNob3J0VmFsdWU7XG4gICAgICAgICAgICBmb3IgKGxldCBwcmVjaXNpb24gPSAyOyBwcmVjaXNpb24gPj0gMTsgcHJlY2lzaW9uLS0pIHtcbiAgICAgICAgICAgICAgICBzaG9ydFZhbHVlID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgKHN1ZmZpeE51bSAhPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlIC8gTWF0aC5wb3coMTAwMCwgc3VmZml4TnVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICApLnRvUHJlY2lzaW9uKHByZWNpc2lvbilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBkb3RMZXNzU2hvcnRWYWx1ZSA9IChzaG9ydFZhbHVlICsgXCJcIikucmVwbGFjZShcImEteiBBLVogMC05XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChkb3RMZXNzU2hvcnRWYWx1ZS5sZW5ndGggPD0gMikge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNob3J0VmFsdWUgKyBzdWZmaXhlc1tzdWZmaXhOdW1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICB9XG5cbiAgICBpZk51bGxVbmRlZmluZWQoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIgXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgZ2V0VmFyaWFuY2VPZk1vdSh2YWx1ZTEsIHZhbHVlMikge1xuICAgICAgICBsZXQgdmFyaWFuY2U7XG4gICAgICAgIHZhcmlhbmNlID0gTWF0aC5hYnModmFsdWUxIC0gdmFsdWUyKTtcbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cblxuICAgIGdldFZhcmlhbmNlT2ZDb3VudCh2YWx1ZTEsIHZhbHVlMikge1xuICAgICAgICBsZXQgdmFyaWFuY2U7XG4gICAgICAgIHZhcmlhbmNlID0gTWF0aC5hYnModmFsdWUxIC0gdmFsdWUyKTtcbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cblxuICAgIGdldFBlcmNlbnRhZ2VNb3UodmFsdWUxLCB2YWx1ZTIpIHtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2VWYWx1ZTtcbiAgICAgICAgLy8gdmFsdWUxID0gNDM0NDU2OS45OTg1O1xuICAgICAgICAvLyB2YWx1ZTIgPSA2NTU4OTc4Ljk0NDU7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gMCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZVZhbHVlID0gXCJOQVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHBlcmNlbnRhZ2UgPSAoKHZhbHVlMSAtIHZhbHVlMikgKiAxMDApIC8gdmFsdWUxO1xuICAgICAgICAgICAgcGVyY2VudGFnZVZhbHVlID0gTWF0aC5hYnModGhpcy5yb3VuZE9mZlRpbGxUd28ocGVyY2VudGFnZSwgMikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0bXQgKz0gcGVyY2VudGFnZSArIFwiPGkgY2xhc3MgPSdmYSBmYS1jbG9jayc+PC9pPlwiO1xuXG4gICAgICAgIHJldHVybiBwZXJjZW50YWdlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0UGVyY2VudGFnZUNvdW50KHZhbHVlMSwgdmFsdWUyKSB7XG4gICAgICAgIGxldCBwZXJjZW50YWdlO1xuICAgICAgICAvLyB2YWx1ZTEgPSA0MzQ0NTY5Ljk5ODU7XG4gICAgICAgIC8vIHZhbHVlMiA9IDY1NTg5NzguOTQ0NTtcbiAgICAgICAgaWYgKHZhbHVlMSA8PSAwKSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlICs9IFwiTkFcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSAoKHZhbHVlMSAtIHZhbHVlMikgKiAxMDApIC8gdmFsdWUxO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0bXQgKz0gcGVyY2VudGFnZSArIFwiPGkgY2xhc3MgPSdmYSBmYS1jbG9jayc+PC9pPlwiO1xuICAgICAgICBsZXQgcGVyY2VudGFnZVZhbHVlID0gTWF0aC5hYnModGhpcy5yb3VuZE9mZlRpbGxUd28ocGVyY2VudGFnZSwgMikpO1xuICAgICAgICByZXR1cm4gcGVyY2VudGFnZVZhbHVlO1xuICAgIH1cbiAgICAvLyBmb3IgY2hhbmdpbmcgc3BhbiBjb2xvciBjb2RlXG4gICAgZ2V0Q29sb3JDb2RlU3BhbihkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhID49IC0xICYmIGRhdGEgPD0gMSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGRhdGEpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWNoZWNrLWNpcmNsZSB0ZXh0LWdyZWVuLTQwMCc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiA8aSBjbGFzcz0nZmEgZmEtbGcgZmEtYXJyb3ctY2lyY2xlLXVwIHRleHQtZ3JlZW4tNDAwJz48L2k+XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPCAtMSB8fCBkYXRhID4gMSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiA8aSBjbGFzcz0nZmEgZmEtbGcgZmEtYXJyb3ctY2lyY2xlLXVwIHRleHQtcmVkLTUwMCc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiA8aSBjbGFzcz0nZmEgZmEtbGcgZmEtYXJyb3ctY2lyY2xlLWRvd24gdGV4dC1yZWQtNTAwICc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09IFwiTkFcIiB8fCBkYXRhID09IGlzTmFOKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJOQVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKE1hdGguYWJzKGRhdGEpKSArXG4gICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS1kb3duIHRleHQtcmVkLTUwMCAnPjwvaT5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9wZXJhdG9yIGNvbG9yIG1hcFxuICAgIGdldF9vcGVyYXRvcl9jb2xvcl9jb2RlX21hcCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFGR0FUOiBcIiNkMWQyZDRcIixcbiAgICAgICAgICAgIEFGR0FXOiBcIiNmNDdhMjBcIixcbiAgICAgICAgICAgIEFGR0VBOiBcIiNiN2NjODdcIixcbiAgICAgICAgICAgIEFGR0FSOiBcIiNmZmNiMDVcIixcbiAgICAgICAgICAgIEFGR1REOiBcIiNmYmI2YzJcIixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvckJ5S2V5KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgQUZHQVQ6IFwiQUZURUxcIixcbiAgICAgICAgICAgIEFGR0FXOiBcIkFXQ0NcIixcbiAgICAgICAgICAgIEFGR0VBOiBcIkVUSVNBTEFUXCIsXG4gICAgICAgICAgICBBRkdBUjogXCJNVE5BRlwiLFxuICAgICAgICAgICAgQUZHVEQ6IFwiUk9TSEFOXCIsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvckJ5bG9nbygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFGR0FUOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCRkNBWUFBQUM4RWtQSEFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUR4dEpSRUZVZUp6dFhBbVVWTVVWWlJQWkZaQkZrYVVSZDdicEx0RUlZbHd3NUxpRnhDMFJSUVFSbUduVWlMZ1FFNHd4S2k0SUJsQkVtT2x4aVJGUjR4b2pycmdTR0VYakZrVlFFZHdPSGhCRlpjbTlYZmN6TmIvLy96MHpqRXpyZEoxem9idnFWZFdydWxXdnFsNVZUNzE2T1J5NlRTM3JFcHRhOXAwd3VyYjFxZk1CaEhRRkVWdUVzYld0ejA4eW9HTjNBcExBcFlDSmtzMFRzaDBDT3JZRjhMSTZlVnFVYko2UTdSQmlVeGFSbE5ucTVHZUFKbUd5ZVVLMlUwRG5EZ1UyQXl1QnZjTGs2andoc2FsTEdxTGhld0luQUJjQ2t5cUppY0F3b0EvUU9IczlaYjJBejRGTndQRmhjcmxPQ0hUcXJ2YWZ5N1V4U0FadDZDa1o5bWVuRUprV1hsKzZoZmNBNWdBZmFmUnVxUWErQUVwSmFuUkRsclIwMXBIcnd1UitCSVFjS2QyV0FWMURaRTV4K3ViQUlCbTBzNlBYVGk4VDkvdHZLWEtEYlB2VndFVSsvTjNwb1BYQUV5SnhCckFBV0t1MFJWUTJyQ0c3WHZzODY1d3UyWVZBc3hCRjZ4NGhuYWN1cm84UGR5dmlLMDIvRmdFRk53TmVrZHdhbXBwdWpubkM5eWJBU2NCbmtsa090STVveklreVdhdUFmVUlVclh1RTRKOTJ3RGVLdURlSURCVTh5T21jV1lFeU55elpRU2JMa3pzNW9qRUZ3SmZBOTJHenFhNFNNa3BmMWdGdEl5cS96ZW1jMEowUjBvNklXVmNINWU2TGtOc1pLSlBjWlNHSzFrbEN2QkY5YjViSzM1UGNKMW5rdUV2N1NMSXJzOGpPa2R5Q3JwaGRBWXJXU1VLODNjNGZzMVR1bWJXeUxIS2RnSGNrdTZuTkpVL1hqNUFkS3JrVlFDeEEwVHBKeUhKOUdaR2w4ZzJTVzVSRnJqUHdya2RJNjR1Zml5TEVPNDlzQkk0SlNLOFRoTVI4aEh5aUw2ZGtxZndEeWIyZlJXNWZwOHhzSm92bmtVV1N2U01nZmM4Y0orUTNsU0JrYURaQ2RNMndsWkJQWTFsMlJDcDR2dVI0YUd3ZklYZGN6RzVuS1R1L0VvMmFJZG12c1V0cjdrc2I2QkFTT1lOckkwQ25LNlFiVFhUZ0tSeng1MG5tWXlBUkl0T3ZPb1NNZERvbkdTTFRLRlp4Tnphc0VvMDZ6WkVmNkVzNzF4a0VSMmNyYTNzR3plNlhwRjladDZsTEFsMG5TSnNsR1o3aE1zNWIzYWFVOFJ3NHFqcUV0SEhNRm5kUi9iRXphdUNrTndYT2pObXpoVGRxV2xXaVlYRW56d1Fubm12UlVzVlR4LzJ5bGJXOVFzeWUzU2JIeXRmVmVUR25MeHk1N3JIeUhXZHh6SGRRUnA2R3NnSWVzU3NxVFlncUdCeXpwM1RQSnQ0UFRBTnVpRmszeW5xbFBRY01DTWpmWDdJdVpqdUV2S0c0Vkt4OFkwRHc5TTh0OGswNWdCTGdOVWMzejFYa2w2T2xXT2JJTFBTbGMrWThBS3gyWkNaV2lSQjFLZzkrTDhiS0QzOHUxcWd6dTRma0hSdVFKdys3eTd3SGFGbGxRdFN4UEdWenkwZUhJNmZ1TlVBaFlJQWRJL0lkQmR5VngxWndGbkZqTUFSbzduVlNsUW5KaHg4dzVBbkpzWkFuSk1kQ25wQWNDM2xDY2l6a0dpRm1YT25ld0owV3FjRFQ3MDg2NUNBaC9ZRXRGcW1PdGEzUGRnOTVRbklzNUFuSnNaQW5KTWRDR0NIeDVCeDJ6aTdxb0ZPQlFtQXM4R3NnRG9RKzhlbDkxbXprVGUwSW1YMkJ3Y0J3WUNSd0hOQVhDSHpad2xCWlFwRGVIT2dCSEE0TUE4NENUZ0FLb3NyM2xkRU82S2Q4STRBemdWK3kzRVF5MVRBaVh3eElBSjMwdlJHd0gzQXlVQ1JkRGdNcVBCcEpqRXMxbE03SHF5OUhTditZT1ZzUGVZSUlnVUJqNEhSZ01mQk5lUWR0eFZyZ0ZlQU1vS2xQMlRiQVJPQko0Qk5nc3kvdkd1RGZ3RUdKd3RJcUV5SWlSZ1BQQUI4Q0czM2xmd2s4Q3h4cnhwVmt1TVJWUmlmZ091QjFZTDB2L3lhVk96bHMwQ0YrTnJBT21BRzBCNllCcTMxdC9RNG9Bd1lwVDNmZ1N1QUQxZUhLclFER283Mk5NZ2lKSjB2cmFiUjhCV3dBbmdkbUFsY0Exd01QQXUrb0kzNExOUEFwdTcrSVlQcWJ3RHpnYXVBYVlJRkQ4R3RBdDJvUTBsNTVxZHN5NlhNdGNCWHdUM1VVODY4QytvVjA2RUNIdkJlQVdjclBqbjBKK0Y3NlR6Ykowb3kzeW9pL1RmbVhxSDNyTkVDbWkraDdnQzhrOHpsd3FNamZvSUU4UjMzSnZKOUtqbldlbGtFSUluY0dGb2x0S3RuU1ZTYWVUTlhYQ0tQNXlmZ3BBZUoyQU1ZQVE0Q09CWVczdUdrMFk2Y1pPMHRZZnNiTll6WkNFc2tTMWs4VGVnelFOVDZ1dUVGNVd0b2svRTZOWXhreitoYk95U0FFY2pReGx4cHJkaW84WStXc1VJZHQwY2c5SW9LUVRlcndZVzQ1Y2F2ano1M0I4WVUrLzlWd0daQjVrZ2s3VWlSUmJta1FJWHNZTzYyK0JUSXVtYlkxaUxDSHBVREd3NFpzaEdRTGlXUXBPK05SbGNIUjN6UjdyZ3dkRHREczRTeTVOQ0Q5dG5JZFM2Y0FnZXNONGxPTzNHVC80RTdyQ3d1RCtLRWV3VUdFZEFEZTBBaStNbWdXYkd0UUk2akFZd0ZwMjd6TFF0NEx2UkdITWtKZlkwYmszeDM0bjhxWUdwRHVFVUx6T3pDb0RNbU5jd2pwRlNHM2p5ZVhTWWlkOW5lYThnWDRQRlBKWFV0bGc0aG0rUXNDMG1xQ2tFS1Y4UnBHNEM3VnlOL1IyUFdQWmZ3dElOMGpoT3RVNEVOeHlZMlEzR2JNM05DQkRSMDdoeEtpZ2lqd25NTXVGL2piYVUvalJhV0JPNWNLRlJUZTZxMUZYRWNtQWJjYXU0QTlCRHd1Mjd4TmhHZ20vd0s0QkxnWitJZXhDL3pqenVpT0pNVFlyZXJaeGk2d3hjQjhtZE9GcG56M0ZVVUlOemVCejM4a2Q2Ymsxa2IxbDhsR2lJU2FhOHE5NXhDelJZMGR4WVV4cFBBK3h0cndEYjU4bTBYc1ovcS9Xb1Fndmd0UUdsQSs4YlhLWHh0RmlMRUw3dUtBL0J1Vjl6TlR2cDJPSW9TbXZVTkVSM3VFckFtVGtWeDJRcnlRc0FjOGJ0dTQ1MTduS1A4Q3pOc3V2b0lQTW5iTHUwV3lYTWdPUlJudDQyUG5ObkRrcGxlSEVNUjFNK1dtaFBYd1BNQ0RYS2VDd3BKR2p0eWtNRUtNUFpSNW5jMXp3aWhqdCtwdENrYlBiaUNacnNadXFYT1BFRi9HMXVwa3IwRjNBZWxYak9qMHhxWjg5L1FxRUk4b1oyWTFDWm1tdEpWQTM0ankveEpFQ093NHQ3c2ZlblZENTR3WDk4cFA0cGZuUENGT0FlTlZBTGZHaHp1TmVGL3hGNGJsalJlbXVNMTdzS3FFNElEV0RIRXZLNjBrTnJ3NFNyLzdnd2pCOXdIT0REOHVJai9ON3BvZkV5RjkvQTNELzNzQ0h5a3U5TytTR0hzQnRiS3FoQ1RzSnFGTWFhRi9jTUJZWDVGM01QUVRjb3lqOTZFUlpWemd5TlV1SWNiNnNkb2tpbEpSQlp5cUFuaDQ2cSs0WFlHM0ZIOGpSblNHT1RDMlUrYzZKcThxaEZDdnA1WEdUVU9RbDZDSnNUc3Vyek45aEtTNFZuaitwc0QzeVlqZnl5RStKd2hoNGlQRytvZTRyZHhYY1FRYk5NS1pDVnljMjZRN3pKNWZTaFJQVndFUGZ6Mk5QV1J4OWh3TFBHWHNZY3JiNFZSMURabW9EdVZ1aXV0RVhIclJjVWV2NlR5bFBTTFNLeEFTVDZiTjVYOVUvc2ZHZW5tN3F3eTI4M1NSd1ozbHFsd2k1QjBKY09xdmxvTEVwK29RTnBiclFGdGZ3ZnY3UmhlM2orK0tRT2Joem9pSE51Nk12cTBHSVR5dy9jdFlIeEwxK0ZMbHIxQjUzTEwrM3RqenhTby9JU3BqZ05ya3RXK0YyclphT3Y3WFdPZGphYTRRUWw4VDkrbmMwZENEdWRSWVUvU21SallQWUtlWWdOTjdsNU9tZUw0d09pV2Zsc0xNeDhXWU82cytxb1BPU1c1Wi94U2czRDRhNlVCcTU0QjBIZ2d2a202dlM3Y2w2aVRxVFY5V1MyTzlydGNuQXZ4SGlPOXRySWQzc2ZLekhCNkU2ZnpyRVI4OWx6SkRwRWZHNzFLTVBaOHg3UVlnOUNHR0taKzFKVmtJYWV1MW1ZUWNIN08vTCs4Y0lOaFl3cnVtUjJleXRGWFBVY1ZSWmFkRDM3RzNlbm5iYTFRM3o1cXBpZ0c2Y0wxb0o5MWE5Um1UNmRXTkNqMVBta1FkV3lrL3kybktBWlVQK1pBUCtaQVArWkFQTlJ6aUlROFVmdkpCZS9ZcTM2cFZveDRld0hiM3h4ZU1uRm5mRkticSsyUjNBbDQwanI5SnU3M0x1YTJ1UVoyNEF3ejl1eTNiTXhoN2VKNWVUd2VyRTJ1NGNCNTBMamJPR1FDZkh6TStweVBPR2ExMXJobmhPZ3YxQ0lGZWdONU8vazQ2TTRUNm9LcWhKNzBSdC90MDRqTW11dTkvMEVkNlBIemlqSFMwMTI1anZRNGIrWUhQWGtiVmNHVjhXY0pUK2xGT0hLK0ZyL0xKTlZIakIyVXJNMkZkLzN5ZE1hUUc5ZVNnZWRnWHg0ZDg5RFljVWtOMTBESk0xL1ZFK2tHZVB0UG5OaitoMXlvSmUvRzJoUm1lQU02dGljcTlFRS9Pclk5S0sveEdYU2Z6eUQ4TDY4ait5bGczRFUvUG5hUndVNW14NFRXbEo4bzZCM2pTSHg5UHByTCszY2dxMUtGblBxbk84Z1Rjd2tOb0lsbTZZNktvZE9zUFpCUDJrSm9taEs4SXozY0tvSk9RTjRSRFRZRGJvZktLcEtlK3V3YmNuTGFSOWpPZGZMMk12VmVoUzRXdUZyN3phcTVIRm5TRjNDMFR4ZnZ1MW9sa0NjMFlYeVNPQ1drNDB5TWZZeGg3TGIyZjg1MSt0V2UzZmsrbTI5NVBSUEhKN0c0RnlWVG9IOCtwWEQrazlkcGZuOXViOHVlbnJJdCt0Vzc4SGk5S3QyOHpFK2lzRys4VVFNY2ZIVzcwaGdhNnFDdXBDRzNpZXM4V3ErTm42UE1oeHI3OVlnZmZCTnhucktQd1Q4YmVsOURKUjBMcGJlYjkrK0NDVWNYZTREa25wRDRTbXZrMnRhSU1COWx5ejBkbTdQdmFoZnljR0pkKzNNYjA5NlVYL1Z0THBmZUJRS3VDd3VKcWsyUHNPK2tCM2lEbmJTVStQNUNlTlhvNGg4OGJLaEFDSWRwMDNqVmNydEh6YUx3b1ZhM3RKMFkwUndBOXA2ZXFNcGNRamtKZXBSYnE5ZDdldHFOS3B4cjdrSmtQR09qbVA4cFlyKzRFNWFOYi9ieVFCdDloQWp5elBobWF2VmU5V2VZU1lxdy9pMzNCeDlLMDhkeUJEZGRnNFhwSVIrUmgxZWtMbGMvQnhTZXdmWjA0bHMvSGZCMzBmUjMvZWR3anhGaFBLenVSQ3hzZk5EOFY5cnFra2tyd3p2MHlmWjYxbFpCazJtU2RvZEZJNHZrbTkyMWdqMFJSZXFTT1V3ZDQ5eTducUF4MldPQjZaNnlKZzFrTUgwQjl4NlRmTGZOTjJEemxLZHBLU0ZINmlleHVSaGRmK0wrWlp2SzFHaUQwWEIrd0RYM0IyY0ZyamNPZHVKOXBKaDZzNyt2NUQ5OWIzYU5SeTA1YUpqSTRraVlZNjA1UFZCRjhpamxZSFRwVWxmM1oySWZiQjZzdVhxZlNMVS96UkhQRmExT2FCcU9PR0svQndWMWdiOWhZa2tpWGZtRmdnNU9sZzR5OUErRTl4akJqWGZIOVZPYVI2bnp1OVBpTTZRTHBkS0owSEtoNkQ5Qkkvb094bDJtOEorR201eUVOa0tNbFY5WCtZUG04NS85V0E1UDE4SVVPdC9aOEE5YTU3NWhpdG04VGxlcWpqdUlDeWpNSm44ZnpEb1AyL0RwVGZoZnloZzlCY1Y2OGwwWXoxVlNONXk2RGE4RGJTbDhxSmMvWG9IalZ5Yzg2ZWJQSCs0WXVpZlFENy9SekpOcmN3THYvZ2pFbDN1WFdYQkh0NnNLNk9MdDR5M2dJZGpTTnBGTUxZMDJkMjBhYUZacnRDZW9ibWpuYWZ6NkRlajFMdThQaTNoYkJrNldiVngvdmRBNnpBeXJGRGNmSDlSekZPQk42cVdONFZjb0xHdSthazZmSUhsVUF5K29FOCtQL3FRSWIxODNZZFlLTmJDaGxPRHJhS0sySHlLdXdZOUtqWk83VkkvL2swMTdqYnVSc1llTm9mcnFycm5ZbS9HRWZGOWV1cXBleTdZUE1kRUZSTVUxYWh5cjJnNGV1MEtscFgydU8yenAxT1FmbjlGcWE2VFV3OXFFeUdlVTBuUm92bkx0TjI3N2FERVozN3JXdHh6WUZQYmZoRDJ1NG1GNWMyL3BVTjJCRThtVFA5V2NtZjY5UjIvcHNVOUIwNSs3cmpxamYydVY2QUNsc1I4YTlmQzZIL3dOQXdybjIvRm16TGdBQUFBQkpSVTVFcmtKZ2dnPT1cIixcbiAgICAgICAgICAgIEFGR0FXOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFDTENBWUFBQUNYOER3REFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUpGNUpSRUZVZUp6dG5RZFlGVmZheDBWTjNNU3hVa1NRSXZiZXUwYU5mWk50eVpaazk5dHY5NHZHRXRPTXE5SFlHMnJzR3NVR0VVUXBpZ1ZwSWlJV05QYXUySHRYTENGdEV6M2YvNTF6NXQ1ejU4NWNMb2lDaFBNOC8wZnZ6TndwNXpmLzl6M3Z1WmU1eFlvVnRhSlcxSXBhVVh2V3JlSEs4eFVicmpqMysvcmhaOGZWWDM1MmNiMndNMkYxUTg4c3FMUHM5S2RRaTFwZm55cVIzK2RZNkZ1VHlBdkZHa2RlOEdrY2NXRm1vNVhudndVVTFpRDhISFNXQVFpckM5VUpQYzBBaE5YKyt0U0JXaUVaWFdxR1pKVE03L011bEszWnFrdGV6YUl2aGphTnV2Zzl3REJBWVlEQzRCSVZDRnpDb1lTZTBZQXd1SVFCU0ZxTjRJd0dOWUpQdXVUM05SU0sxakxtU29rV01aZmJObDkxNlp0bTBaY1lnREI3SU9kWWZSV0tuVXNJQ0FPUUt3RFN2OXJTaytYeSszcGU2TlpxN2RWNkxkZGNpV2dSY3lXcitlckxERkFZWEdJT1JlOFNxSllWeW1NQU9WSnR5WWwvQml3K1VlU1duTFIyc2RkS3RWbC83ZVBXNjY2ZUFSUUdLQXd1WVFSRmRVbTBBQklwZ0ZBdWNSQzZhb1pBd1Jtc2V2QkpCaWlQQUdRRlZEVy9yN1BBdHc3eE40cTFqN3ZScHQyRzZ6dmFyci9HQUlWcFFCQzZPQkFEbHpUVXVhUytCa1NFTHNrbHJQcFNRRmx5Z2dGSVp0WEZKLzRUc09oNHFmeSs3Z0xYT2lYZGR1bVllS3ZWYXdrMzF3REt6NERDMnNaZVY0SEFKY3pPSlFKS0UwQnBuTE1FRHlpcVN3Z0lBeEFHSU9lcUxqeitudi9DWTBwKzkwT0JhSzhuMzZuUWVlT2R3WjJTYmwzdm1IQ0xkWWkveVFnSVhBSW9WcGVvVUdJRUZCV0llWUp2WUpEZ1RWekN3U3c4L25QVmhjY2lxd1lkcStjZmRLeDRmdmRKdnJTdW0rK1Y2cEp5ZDJDWFRYZVBBQXFEU3hoY3d1QVNRTG5Cb1JpNmhJY3VmWUp2bEtNRUwxeXl4T0lTZ2dJZHV3Y293VldEamxiSjcvNTVycTNibHZ2TnVxWm1oZ1BLOTREQ0NBaGNZb1ZDTG9tM2RVbnJ0UWFoSzlzRWY4WStkQ0hCMTdBbWVOa2xCSVFCeUdNQTJlKy80R2p2cXZPUEZtNjM5Tmoyb0Z6M3JROFdkVXU3LzB1M0xaa01RRmpYbEhzTUxtR2FTeEM2YkYxQ1VGU1hYTE54U1Fzbmg4RnlncS90S0hSWlhRSW9SMW5WQmREOG80Zjk1eDlwbGQvOWx1ZXQ1ODV2eS9kSWZ6U294NDZINXdHRmRkOTZud0VLZzBzRWxMc3FGQnVYYUZCVWx6aEk4SHFYT0pQZ2JZZkJsZ1JmZFpIRkpSWW9BUElkRk9ZLzczQXQ2TVYyVEk4ZEQxeDY3bnpVcStldWIvZmczeWVBd25wc2Z3Z2dEMVFncWtzSWl1UVNEUW9IWXB2Z05TQ2tGazRtZUxtQ3I1dGRncmR4eVRITkpRU0YrWDkxNUE2QWpQYWJkL2pWL083WFhMWHVXek5yZDk5MmYzblA5SWZmd1NGTUZRSFo4WkJ4bDNBb1hmV2hDMEE2R3lSNFk1ZFlhNU9tMGpBNDJ3UnZOQXdXVUtvYWh5NEN3Z0RrQ1lEczg1OTc2QzNmdVlkZWpObmt6dkZYWCsyNjZkWUgzYmJjeTZEUUJKZW9JT0FTSzVUdEdoVGIwS1YzQ1VFeEdnWlRnbS9wYUJqc0lNSFhzYW5nTTZ3SlhnTmltK0E1Rkt0TENBb0RsUHQrY3c4dDlKdHp5RCsvKzl0aGE3L2hjcy9PU1RmT0FBanJsbnFYZFUrN2g0Ni9yN3BDaGJGTGNva1V1dXhjb2cyRGsreGRZcFRnelNwNFU1ZllKZmlUTnFITDRwSWduVXZtVzRBd3VJUUJTSmJ2bkVPVC9XWWZMRGhUL00wak00cTNXbk8rZVp2MWw2TGJ4MTE5MGpIeE9zTE9UZFl0NVRaeXhEMTBlaVk2MzlZbFBXeENseE1KUHA1RGFaZlRCRzh5ejFYSElNSFhDTllWaS9vRWIrOFM1c2VoTUFBNTRUdjc0THZRSy9rS28wVkVobHZMNkxQVFdxMjU4TEQxdWt2b3NDdm92R3ZJQVRmUXFYREo1anM2bHp5U1hHSU5YWFlKWHF0TmhFczY2aEo4bTFqYmVTNm5FL3h5aDFQMFJoVzhjWUxYQVlGTDdnREdNc2dyWDBBMEREbFVzbW40aWI3TkkwNmRhQlY5OWttcm1QT0k2eGZRU1pmUmFWZVo1cEt1NUJJMWRHa3VlV2liUy9RSlB0VSt3ZXRka3UwOGw4RXd1S0hCTUxpT1BzRUgyODV6bVlVdWYydUNKMTBCbENHQTRnY28rVE9sM3lEa2NOTkdvY2RTbW9TZlpNMVhackNXVVdkWXExWG5HRnlDRHJySTJtNjRqSTY3aG82RVM1SzVTeWgwY1pjWWhDN0tKVnJvMGx4aWsrQnZaNWZnZjBDQ3Z3aVhYQUNVN3h3bWVMc1BzaHduZUR1WFdFUFhFNyt2anNRQmlHZStRS0JXSzJpdlc1M0ZCMmJYRHpuOFU4TmxSMW5qNVNkWTB4V0FFbkdLdFl3R0ZJdExLSFJkUlRLK2pzNkVTemFSUys1d2w1Z2xlTWtsUmhXOHlUQjRZK3YxMXpyQkpTOXI1OWh5OWVVU0FOSUtRRllnd1Q4Mm5xSS9hNS9nRFliQjFmVHpYQUtJUHc5ZEl3SEY0YkEzYTdqL1MxRGVENDJyenQxVnV2cjgzZjliTTJqdnBkcUw5N082U3creEJsOGZZWEFKYXhKK2dqV0RTMXBFbm9aTHpnb29GeEhqRWJyaXI3Sk9pY0lsRGhKOHoyd1MvT3ZKTmduK0NVTFhPUUQ1ZTd1NEd5K1puVE9BRkFlUUxnQ1NDaUEvT0RzTXJtWG1FbXVDL3hsUUJnR0tUWGhDeHhlSFdrS1RvVjNRUTRoQnYwQVhvVmpvL3lCUEtQY3dmR2VsKy92UDJia21ZTjQzck1hQ1Bheld3bjJzenBJRHJGN3dJYWE2Sk95NDFTVVV1bFpyb1VzaytBUks4T1FTMndUZlUzT0pLdnRoc0lsTGZrS0NudytYK0RoNy9nRHlDb0M4QlYwMUhRWTdtS0lQc0svZ2x3S0lIa1o1S0F6NlRrQndwTFBRZTFET2g4bFZwbTJ0NHpOeiszRy8yZWxQNEJJR2x6QzRoTlZlUkM0NXlCQzZ1RXVXVzEyQ0VaZXRTNlFFMzAxTDhGdWxCTytvZ3JlNjVBbWdwQ0RCZHdLVVhJVUFBS2tNSUdNQjVJRnA2TklsZUx2WjRFWEgwd0hGVndlak1YVEVDUkN5Zm9RQ29USk9YNEQzbE5ScVZhYW1IZmFadm8zNXp0ekI0QkttdW1TK2NNbGk0UktFTHRVbFNQRE43RnhDQ1o0UGd6dEp3MkExZEdrSlhob0c5NVRtdVNoMGRlVUovbWFYbEh0OUFDVlBZakdBZUVFYjVPOXoxUSt6em5QVk5oOEdQMFkrZVZNSHd3TTZsVU1Zc3VZNGRkSWU0NUpLVmc1TVNRTVVWdVhMcmN4bkJxRE1TbWZra21wZjdXWTE0SkphaXloMGNaZG9DYjRaaGE3SVU5d2xxODlqT0Fvb1NQRGtFa3J3NmpEWVVzSHpCTy9BSmJmZ2tqR0FVakV2UU9pZ0ZJTkQya0twQVBLamsvTmNCd0RGTXFtSXppd0xiWDBLR0tRbjBPK3lQV0gzY1VrOVBDZHVZbDZCbTVuMzFDME1vUXN1MmM3OFo1TkxLSFR0NGFGTHVNU2E0RStxb2F0bGxFandhODV6bDhSZXNSMEd5d2xlRElON1dSUDhUM0JKSEtCMHlXc1ErZ2FIVklRR0FjZzVKUGduOVJ3VmkwdFB6cFRmaTQ1OFN5VHNwd0hDaE1QTVA4dDNIYktxbE52WXhETWVFNUtaNTZRVTVqMlpYSkxHMU5BMWk0ZXVhbC9aSnZqNndZY2RKL2oxV29LL3JsYnczQ1g2Q2w0ZEJtOEZrSzZvVFY0MlBjRThibkFJeVFOUWhnTElYWk1Qc2g0Z24vU1MzNGRPVE1rREdKcitaWHFDcmlOaTI3aU9TV1R1NHpheVNnWXVRWUpuVmVkcENYNGY0OFBnZzFhWExEY1lCcSt6RG9QVkJKOXNsK0FmQU1RWEFKSnZSUmFBbEFDUTVzZ2xpUmdHLzZMN1B0ZFpoQzQvYlZzUnJwd1pVVG1yVU5NVGN4MFZQNWlBdUkxTll1N2p1VXU4eUNWVGhVdmtCRzgyREE0M0h3WjNTTENaNTNvTWw2eEhQcW4xWEhyZGlRYUhGQWVRWG5ESkZXa1l2QWN1c1h4U2lBNThJdzloa0E1QnhqV1Y2K2o0K1FSRWhVSXVtYkNKVlNhWFVJS2ZSZ2xldUlTR3dTTEJ5OE5nT2NHckxoSEQ0RmJ5TURqaCttTWsrR1NFcnQ4Q1NvSDhTQlF3eWtCOTRaSUxnSklzcjBQbkRjbGpJT2NoNDhHTDYraUVwUm9RVjgwbEZMb21ieFl1MmNwZE1wdTdSRTN3MGpCWURWMXdpVFhCMjdvRUNmNG1FdnhrVlBEbG4wdlBQbVVEakxxQTBsOWVoczRibGNkQUxrSHVoaWNBRUxNdFFJUkxMQWwraWtqd2NBa2xlRDRNRnFITGJoaDgzSGFlYS9XNUxFQ1pEQ2pWbjB0UFBzT0d6dXVkeDBBeXNzeEdXb0F3VXdaaWx1QjkxQVN2dVVSVThHYnpYRkdudHlQQi93bWg2N21ObnA1bHkrTFZlVjRDb1hyR09IUUR3SFE5RUVyd21rdThESWJCRGhMOFhTVDRmd0JLb2Z2cXY0ajdlUVZrbk9tQmpJRFlKL2d0aGdsZW0rZXF2UkNWL0p3ZGFZRGk5Q1RnaTlheStGeFVYc0Q0TDlUQTlFQm1RQ2pCZTBnSjN0dGdHRXlocTlyME5GYjVrMURtL243UVROT0RGSUtHVHF3SjNjMERJUE95SEUzSG13S1JFbnpsUU5zRTd6Y3JuZmw5dVlWNURZbGtIbjBYTXZjK0M1amIrMEV6bmx2djVFTkRKN3BrOFduMEg1NEN4bW1vZ3NNRFlkaHJDb1FQZ3pjeTZ6eFhtZ3JGYTlSNlZtbGdpQXBDMWZ0QnpMMXYwUFRuMURmNTF0Q1pwYUQ1dVlSeEZYb3oyNE80amttWVpncEVTdkNWa2VBcmo0bGpIaDhFVzBIMENSSXc0SkoraTZZOWh6N0o5eWFjTWdCNm5BTVlOTXgxYnZnUElGODZBcUlPZzBkdVlCNkRWa2dnN0dBdzkvNkxwejdqdmloUURSM2NESXFBYm1ieGFYV2o1SDBzaTFmNWJ2SjdmYWJ0S3drWmowVFI0ZVpBUnNVenQ4RlJ2Tk1sR0c3dmN4Z2VWaGpNWThDU0tjK2xKd3BReStLZnExZko0bFB6TTZCSUtGUkFhQXVWMXI4SElJcEQ3eEVVdzUyaTQ2Y2FocXJQWTVqN2dLVTZWMWhoYU03dzREQVF5cFpPZnVZOWtNOU4zTm1tWDdSdzR2Mi9nWUtnZlk2QVRMR0JNU0tXdVgwVWFnZkNESVk3aDhFOEJnYi9Hb0FFUUZ1Z042QWNmY1NNN2V0QVNSQ0REcHVDQllSQUM0aEJLM21IRzhCdzEyRDBXOGc4YkoxQk1GaWxEMzgxUURKRnA5NFFkL3Vmb0pwUUJRMlNDRXNLVkIzNkc3UVMrbEc4THhzZ28rSUR6Y0tUYmxockZLWXcvQ1VZSWF6U1J5R0ZIb2p2bDNzQ2ZLZnR6WVNZMUxta3ExQXlGQUo5QlMyQllxR0x1dTAwSFlHTTUvbmMreThKTkFXaGgwRWdER0Y4elNwOXZLendBNWtLSUZQM1pBSU1JeWdHWUp5VkF5QjlGa3cwZytFbXdkQ0hLWUxoWVlYQktuMFMraXNBc2h0QWRtY0NDbE1sd1Bqa0hNeFJ5UGhwRW1aQUxEQTBFSG9ZSDBrd1BnMWxub1BDQ2orUUtkOEVRQUN5bTNGWndmamt6REVPZ1V3d0RWT3lLN1FFL21FdzVRdUFBSXhQTERCWTVjK1dGMzRnazNjRitFNEdrQ25mTUM1N01FNkdzbU0wQkRZOGlDMlFJR01ZQkVMTEdjWXdtTmZnOE1JUEpCQkFBbmRsQWd3REdHWUJZK0NZYkVLWlF5RGpiWWExdHRXM2RWaXJnK0dwd1JnY3pyeitzNEo1RDFsWjZJSDRUTm9aNEJPNE05TTNjQ2NER0M0WmpKRmpMSEJzZ0J5SGpQOFVEakRHeVFXZlVZMmhEMU9la2pPOEFhUEtrSlhNWjJqRXJ3Qkllb0R2cFBSTS9NdDhWQ2dDakpPT2tjQ1lBd0dNY1NaVElXSllHeXlOcEtRd0JXY1FETytoZ1BGNUJQTWRGbG5vZ1ZTWm1CNEFxVUI4Q1lvQkdEK0E4Y3NlekFuZmFmdU1IMGFBZkRIV3pCbVZiSWUxM0JrOFgzQm5XR0JFTWIvaDBZVWVpUGVFN1FGUVpwV0pPeGpBc0NvYWxPekEySWV5RTVBSmtINkx4aG81dzhNT1JwZ0tvN0lSakMraW1mK0lWWVVlaU5mNGJRRmU0N2RuQWdvak9RdkdJSlNkZ0V5QTlGODh4dDI4K3JhQllldU1TT1k3UElyNUEwYlZrYXRZd0tqVmhSL0l1SzBCVUtiWHVHME1jSmpUWUVUeWx4eHpFbURzcHViVkJtZU10bmRHaUFNWUVSWVlmbFlZck5xWU5ZVWVTT1d4V3dNcUF3akV2RlFSbU8xMllId2NPRWFBT1Frd0prQStXRHE2a2tHWThyU3RNVENzRlRDR1JTSmZ5TTZJSVJpcyt0aTFoUjZJNTlpMGdNcGoweklCaG5sQ3RtQU1IRFBSRm95UDFURVpnR1A4elVVazcxRU9DejVlWStoZ3JBS00xUUxHV2xaOTNEcFdZL3k2UWcrazBwZ3RBVkFtd0RBdVFNa2RtQXk0eGdUSWg4RWpWV2M0Z09FandwUUtZNFF0akJxQVVYUENlbFp6WW15aEIrSXhPalVBeWdRVXBrcUF5WVZqVHFISU5QNERVRGhqcEZIQjUyVXQrS3pPTUlGUmEySXNxejFwUTZFSDRqWXFOY0FkUUFDRmtUUXduaElZSngwRElPa21RRDcrZW9RZEREVm5jQmkrRmhqUkxJQmdqRGFFd2VvRXh2OEtnR3dPZ0RJaDVpNmdtSUlacHdlakpYK0NzdU0wb0pRMVBJam5KNkVqS3VtbVFsUVluOHN3K0VncVlMU2F2Q1VZR3dBamp0V2RITS9xVGtrbzlFQmNSNlpVaGU2NWpVeGg3b0JpQnFhU0NrV0VNanN3Y016NDdhY0J4d1RJb0xBdjVLa1FhOEVYcVJWOHBqRHFCSElZOWFZbXN2cGZKazE2enYzejNGdkZFWnRxdTQ1SXlRSVVSaUl3Ymc3QTJDUi9XekJuSU9OZmJVQ05NZHhwR09OTllFemJ5QnBNVHk3MFh5V3QrRVZ5TCtnSndEQ0FZYzZDcVNTQkVZNEJrSzNHUUpBdmhwdE1oZkNDVHc5amtnWWpRWUt4aVRXY21aTGFjRmJxaS9HUXlGeTBDc00zdWxUNFltTm9oUytTR2FraUtmZGd6a0xHZitJSEdNUGtxUkMxK2phQlVkc0dSaEpnSkdzd0dHRGNiVFJuUzZIOU9ZaHl3NUo4eWcvYmVLdjg4STBBc3RFS0pYZGdBQ1ROR0FoY01jeFNZK2lyYjdYZ3N4bEpVZkttZk1GaHpDQVltMW1qMmFtczBkdzAxbmpldGtMNWhXdmw4OFJpWlQ5UG5GbDJXQklyTjJ5aktoWE1jQTRtRjQ0NUJ4bi9XUUx5eGVlK3hsTWhLb3lhRTJLdHp0QmdUTGVGMFpoZ2ZMV05OWm0vNDJIVGhUdTdQZWYrZXVaTkdaclF2Y3puaVk4QWhaSEs2Y0hrM0RIbklHTWdjTVpRRG1PMXpobnJqSjJod1poRk1MYW9NSm9BUnRQNU8xaXpvSFRXYk5HdXJCWkxkci9STW5odndYbU1haTZiTWlTdWVPa2g4VjBCNUZ1SWtjb0lLTGtGSTRiTDUxRmtHditkT3BMM1VHZGcxSE1FWXdIQjJNbWFMOXJGQUlPMUN0NzdxUFhYKzFlMURUM1lxdTN5d3k4a21OTC9pZk9HbHBRZUVwZXBESWxuQU1NMEtNNkNjUkRLemtQR1FGQjlENVVuQ1d0S09hT3V4UmtiQll3VUJ6QyswV0F3d0dCdFFnK3lkc3NQcy9ZcmpxM3RFSEg4aGZsajBOS2Z4Ull2UFRoMllPbkJHMjREQ05NRXQ3RGNnQ2x2RE9hOHF4a1FqS1ErTXF1K2VjR24xaGhXR0hNQVk5NVd3TmpPWVN3RWpNWGZzSlpMOTFoZ3RBMERqSERBV0htTWRZZzR3ZHBIbmZ5cC9lcFRVenJFbktuWlllM1pBdmtuMDhxbjY4b29nOWI5V1JtMC9peWdNRldETjNCSllPQVlGVXFPd05nbi8xTUFZenlYVlczczJyL1l6a3RacGtLMGdpOWJHQzBJUm9pQUFXZTBEejlDenRCZ3NBNnJUakhBWUIzV25qdlpNZmJDMjUzakxqbi9xTHRuM01wOHNyWUVWRWY1ZEcwNG9Id1BLQXhRVkhFb2VRakdHc3IyQUlweHpRWVlBUlpuMkZmZnJBR3ZNWFF3MG0yZEViSVBNQTVZWUhTQU05b0RSb2VvREJrR0F3d0dHRDkzVGJ5NnAvdkc2ejE3YkxxWnIyNHArL0VhRDJnSmdOeUZHS0JBNjdqMFlCdzRKcnRRWmpCY1htcDZVaGphRm9jekR0bFUzeUpNTmRURG1BOFlOSkphdU1zR1JwdGxnQkYyeUFvamttQlluZkdhRlFicm1uQ1ZkVXU2eGdBanMwZnE3VGs5MCs1VmZvNE0xRmIybzlVbHkzMFU4MDdaajJNT1FrOEFoUkVRVFE3Qk9IQk1EbkxNdngyZUlHQzhZWjBLU2JiQVVBdStPVWplT2hndERHRWNWWE9HQ2lNYXpsZ05HR3NBWTkwNTFna3dYbys3ek9BTUJtY1FETllqOVE3cnVmVWU2N245d1hlOTBoK042clhyMjJjZXhzcDl1QXBhM1JvNkJDaU1LNFlCaXRBYVZ0WlpNTGwzekQyQU1mNDgzUUprY2tLSmVsT1Q5cWhoYW9hWUNyRlczMVR3OFJwaklSL1cyc0ZZUVRDT1N6Qk9DeGpuQWVPaWdIR053MGl4d3VpMS9RSHJ0Zk1ScEQ1N01hUEh0dnR2OTlpYTZmaGtjOUVxZkJEbFV1R0Q2TnJsQjBhdkxEOXcxUThBd3dCRjFiTUVZNUJqbmdETVA1dzZhVGpqelFiVE45M1JuTkY0amdaanV4WEdZc0FJM3NOYUN4anRwRERWQVREYVc1eHhWZ2ZEM2htMk1CNlNVeGhnL05KOXk3MGwzVkp1MSttYWZDdFBIblJXWVVCVUdhZzNvSndIRkFZb1hDb1VQWmdZT3pCUEU4cGV0UWV6RTNMdWowYmhqT0lOWjI1K0V6WEdRN1hHbU1lcjc2YTgrdWJPMEdvTUZjWmhFMmNBeG5yQTJBQVk4UUpHOGcwNDQ1YUFrYWwyUG9Hd3dyaFBNRmozTFhmVlp6TUNSbWJueE92elhvdTdtdXVmZ3FqWVA4S2xZdi9JZHlzT2lEd0lJTDlBREZDRUpEQURiY0dVZXdySEtDYU9FV0JTQUNWbnp3NkRNMG9DUmw4NDR5YWZDckZXM3kyWFNqQ280RVBPUU1FSEdDZnR3NVNBMFUxekJzSFl3bUgwMmdFWTZYYk9BSXg3R2d6MUdZMnZ4Vjk3M0M3Mnl1RTI2eTYrMDJiTmhSejlhSXBydjVYK2J2MGl3bHo3Unp3RUZFYXFNSUFVeGF4Z29oMkN5VVBIUEFHVVhZQlNBOG9SRDB0cnNtQkhsYVpCT3pmWVZkL0xMTlUzaHJYSGVZMmh3Vmg3bG5XRU16cHZ1TVM2eEY5UlIxSVdaK0RPNzdsTndKQ2MwUVBPb0Fjc2QwL1ZuSEdUd1JucWs3SGJ4VjVtYmRaZFltM29XY0NyejExdUZYV21kOHZJMHc3dDd0RjN4YXZ1ZlZmTWRlKzc4bHUzdml1Wld6OVNCSUJveWkyWVhPZVlCd0R6TDBCNStnZTV3Umt1Z1BFT1lPd0FqRitrcVJBcmpGV0FFYVBCdUNEQnVNNWhiSlpoUEJRd0huRVk5UHhlQ1VZWHdPaWt3cmdxWUZ3RWpBdXNOVDE2TnVvTWF4RnhpaDYwdWFkSjJQRjNHaTQ3WXZPZEpvOCt5OHRVNmhQZXU5TDc0ZWM5M2wvQkFFYVZPMEdSd0xnK1B6QTNBR1lXb09UOWN5WUJvelFLdnVHQWNZMVgzOGVsNnZzMEwvZzBHQW1TTXdDalo1b0JqQjBjaHV5TUxoczVqQTV4VmhpdENRWTlURFBxdEFhRE5WMStuRFVPUGZxa1Fjamg3ZldXSFB4dFFHQnFLWS9lWWMwQTVBQ0FQSVlZb0tqS0p6QS9Rb2tBVXgxUW5sM1IyM2I1WVJjazhBQTRZeUZnL0dBSEk4NEtReDFKYmI0TkdLZ3gwUEZHTUhwZ1hYZDZTUDhtQVNPQncyaExNTllDUmd3NTQ1ejZDUE1XS3pOVUdFMEFvOUd5b3d3d0dHQ3dPb3YyLzFCOVZ2cCtyOC9XM0hmdkhjWThTSDJXTXhWS25vREpjZkkvRENpL0JaRG45eU9VU09DbEVLYmVCb3dEUmpDNE04eGdQTERDSUdkc01uQ0dEUXdLVTRBUkRoaGh0akRvc1lLMWd2YXlHdk4zczRCWjZjeDdWQ0tyTkNDQ1ErbTkzQTZNQ2tVUHBoK1hhejhybE96QnJESUNrd1VvVTh0OEhKTi9NOW9kMXAwcjBUSDJ3ajhBNHhHZkNybHU0NHhlU05hOTB1MWhkQmZPb0dmQmQ5bDRnenRqQTV5eFhvTnhYczBaU043cWIxM0pNT29ISDJKMWx4d0FqSDJzNW9LOTZ1TUZBK2J1WXY2ejA5VkhvdnRNMjhxOFJzVHpEamQxakRtWTdKTy9vV05XQWtyKy9TYVZ2blZKdU9vR0dETUI0M2FQVkJuR0kzc1lXNnd3WGdlTWpnblhXSHNWQmtaUzlETVhoakNPcWI5WFlvR3hVTUQ0NmhzVkJqMlEwM2NHaDFGbDZoYm1IYmlaZVk1UFpoNUQxakgzZnJaZ0xIRE1RcG5rbUd4QzJjOEFzNzNjd09nZWdGSWdQMG9vQmhoMUFTTVIxZmQvTFREb0IxdlVHc1BXR2E4bmFUQ3UyTUJvWlFQamhBcWowVElCWTdFR1k0LzZOTlNxbWpNMEdGTUVqSW1ibU1mNGplcFQ4RnhISlRDM3oyS1lPem8vTjJCTUhITk5WUDNHZi9SZmtCcXE3VktBOEVmQTJHOVg4QkdNWkFFRE5RWTlEOTRDZzM0SUp0b0tveWxnTkphZFlRTUR6cGl6ay9uTjJtSGpEQzhiR0xwbmY0MklZMjZEVmpOM2dNZ1JHTnZrL3oyZ1RBRVVQNmhndXNLc0FZWUxZRXdFalB0OEt1U09wZnBXWVFobjhHR3RnSUZoYmZNVmdMRWNNRUlGaktVSDFlZkwxNUpnVkxYQTJHWnhoZ1hHT01CdzlLakMwWERNaDFFcWxCdzZaamZrbC8yVkYvRFdMZld1SjJxTUJhaStiNG1wRU5ZKzlvcW92clVhNDR4VVkzQVk2a2hLaFVFanFYM3FTS3JhUEZzWTlHVFVLbE5TbWRla0ZCV0dlM1l3WkkyRVl6NVpaUnZLZXR1QitTL0E3QWFVN2xDdW55Qlg0QnFxNytJSVUxM2hqQzN0WXEvODBsYUdFVzBQbzJISUVTc01PSU1lWjI0RFl6cWNBUmplR293SkhJWlRJUFFhSHNzZDAwZHp6SExOTVRjQVpxekgrK0hQL1lPejU5WXdtbm9aMWZjQXdMaG9EME90dnEwd3BCckRBbVBtRHZXcDJqNnlNNTRHaHF4aEFQTkJCRUg1RVlvRm1CZm1HekpQMVpBelhBQ2pDbURNQUl4N1d2WE5ZVkNZT21RSGczNnpoR0JZbkRHWnc2ZzBJUmt3a3A0ZUJ0ZGo1SmQ5Ymg5SGQzZC9MelIvZjRvN3Z4cEdVZ0VvK0hicXBrSjBNSGpCSjRlcHlua1BJOHQxZE9JQTE1SHhMK1NYK2ZLOFlWajdCZ3ErOU5xTDl2OWNVNXNLRVRXR0gxWGZnS0VXZkpNM2N4Z28rdHpINWdtTU85QTAxQ3B1MlovbHI2elZYcmkzQXFydmlkWG43NzVJdjVsb0N5Tk5MZmdxVDh3ekdEOUFxWEJGMTRvajR3dmtiMkVWaU9ZN0xya1luT0VOR0YraTRIdGtNeFdpRm56SnZQcCtPaGo3a1N1NlE3L09QSkdiQmxlVUJJeWVnTEVOTUo1VUZ0WDNVenJqRVJ3eEVTQnkvZm44cjc1Vm5yQ3BPSnp4TzFUZk41MHUrSXcwT21HWjY2aDQ0MTlESzJvNWIyNmpFOHU2OGgrY3VaSURFRDlDNlVqWXIxY2N0RHEvTDZId05kemx4ZEhCVGFFZ0tFTWtacU5hNGdiY2tPSTZNcTV2eFdIcmkwWlB6N3FoMDBubG9IclFtOUEvb1g4QnhOdUEwQUlRdk1zUFhGazBjaXBxUmEyb0ZiV2lWdFMwcG5RWitTZG92YVJRNkErUTNlZklXUFlaRkFrRlE1WEVzcEZpMldMSUZYSVhyMGtmaVcwK0ZLK1hRVjY2WTJ2YnRwR1d0NFhXQ1AzTjREdytrTjVYVXl6ckRFV0pkU1hGc2pDeHpReTZIckdOOWo2N1g5L0VzaExRdjZGRmtOMXZ3R09aSHpRWEdnUmwxNiswci9HaVB5ZHA1MlMwWVMreGdhYk5FRE9RM1E5SGlnNmlkWmxRZ0ZpV0lwYmRobndoZjJrZks4VTI0ZUoxRmxSYjJ0OG9hZHUvU3N2L0lpMGZZM0Flb2RMNk5tTFpDZkg2a1FUcEI3R00xcjBLOVpiZVovZkFBeXpyQk4yVnoxMjNmcGIwL3RhaTA1dEFrMFhmSkVIem9aZUVEb2h0ajBERzMvZkZpdWttQUVpL1NQOS9RZ2ZUdlhkdEFRYXlYcnkrQUxubkVrZzk2SkpZUDhkZy9SZGkzWCtoNmxDQzZDZTVEdzlTNStjR0NPM29PK21rU1FPaE44UmRScStqZE85ZGw4ZEFSdWNoRU9ydzMwRSswbmJaQXNHLzVSUitsMnQ2RDVvTnZTWXQweHhYR25vWGFrZkFwSDE5Qy8zMHRFQytod1pBVTZRZDk0ZGVnWTZMMTNSQkphVDNhbmRoWGdFWmsxZEFUSzdWR1NCMHZuVEhQM2FnbGJyOVVwN1Vvc2xocUtGaURmMjVCa0tkODBmb1B6b2dsUHlPU3NzVTZiMGJDaUVRMGo1cHVaRjY2ZlpiWDFvM1d5eUxleFpBd2dTVXE5S3lnZUpDU0lmRU1ncDF3OFF5T1prT2dUNlgzcnRiYlBPTmVQMmp3a2RsMnY1aXBXMFhTc3VEY2dCa2tkaW5rWDUyQUdTR2REenQ3cjZ1OElIT1VNV2FMeWtVOVpHMjdhMjdrVGFLWlllZkJaQ0NxT3lBT0NNaklFYWkwTlZKSENNOGg4ZlE5TlJBL2xmaElTaXJBT29COUhlRGE2QjY2SmJDaDZqWjZRNFVMVHJvWDA0Y2syb01GNFdIN2R5Y016bXJoRGplVHJGc3R5TWdWSXpOVTdobEd3cWExYURhSnFvRDlZQitMMTVUL0h3YjZ1amdQV2FpVVZBdnNjOW0wTjhVUHA3WDF0Y1QrKzRpWHRQUTBtNUdsNVpCUGdyUFY5bkpEM3BGdksrOEUrZm9LWURrOU5vMFZSREhjaEhIcDJWVjZiVWhrSncyN0tnNWRGUGhPWUtxMkM4Vm5pd3BERlRKd1g0b1VUOVUrQjNiSGxxcThCaFBBNFZTWXB0UHhiNVBRZDU1Y2dHRnJTbTJJeDZhSHRrdS9rK2QyVGdIKzVHcjNMNktkV1J6VHJxclZrdjdidlRzcnVvRmJ1aVlNdEE0aFljNU54R3k2TzZtMFpmVFgwd1c0WUlLcmtDRkYyTVU4bFpBZjVLMjhSUDcvaXduK3k1cVJTM3ZtMGlNbERUbHdxK2NTTGF5YWtucktmblRqS21IdEl5U29MLzAramZpZlM5SnkyZ1dPRUIzL0ZwMFBPbTFJdDdub3R1T3F1THEwbXRQWGVLc0s1YlJ1ZmxJeTdUekowZS9MTFl2WlhCOURSUStLcUsrcUtnN2RrbXhYdDZlcGxKK0k5WlR4T2dBTlZYRXdFRXNweEZXQzRWUHZ4Zy9qZFFBQ0ZYVjZkQS9wV1ZkRlY0Y3lWb2pMdkpqNkR4MEQ5cExCeFB2b2RBMVd3ZU4zdWNwTGFOSnVUMktOQVd0OE9IaElnMkF1SURyaW02YVd1RWpya1RGbXZocFp2VXo4WCs2Z1dobytXY29SSVJXR2pXbVFxZWhZMUNHT0phbnVPWnIwR1dGVHlKZUV1K25tNEdLNGovcWpsMUI0VVd0dlAxSmNZM1ZSRC9jRWZ1azRyS3N1UGtXUURmRU9pb1kzM0FHQ0UyaVBSSVhXMTRzbzRuRksrTGtpd3U1aURzalUzUU8zV1VqRkY3TjAzWlVtUytUOWx0VDRZblpXN3l1cVBEQ2lFWllyMHZiYVlPRHY0blg3Y1RybDNUbldWRmNYQ3VGVCs1UnNYVldyS3NyMWpVUW5UNWJzVTc5L0Zsc1F3VmhtampuQU9nTWdkRWRnenFTcGo3ZU5UZzIzWVQxRFBxUFpobStFakM5dFU1WCtFekhCUUdmamszbFF2WmYybFA0Uk9GTVFieXpCSVR1QmcvZHR2UUJVNUwwK2hWeFI3K3FBWkVBMXRZQitUOW9sOExkUUIvdXlFQTJpenZJMVF5STJKYk9rVDU0NnFid0l1dVJBRTlUR3NuaVRqWURRbzZod2pCUUF1SXZuYTh6UUJySU42aFlSemZ5bCtMWThnUXM5ZFVwQWNUNDkyOE5McENva3FWYmlnc0psSURReGRKYzBnd2hpdlZVdmE0WDIxQjFUM05XZ3dtY0FFSVhHU0lVb3dGUnVMdW9NNllxUE5iU1hOaXJFcEMzRkI3SzZIT1IxeHdBb1UvNGFLNkw1cWNvdEd4VGVOVk5ueEJPRnNmUkE0a1Y1eDhpYnJKT0FzaERzYitsUWdGT0FJbVJ0bjlicktNaWw5eTVTZUhsd0RzQ0dMbjJvTGh4SWtWZk9mN2VHRGI0aDdpenFpaDhMaXREN0l5QTNCTUF0SWswYngyUWY0c1RvK243eGdKSW1qaWhkOFMyR3BBcW9qUGVFcS9wT0owa0lHK0lqcUtaNHVFT2dOQmR0MStBNkNPT1NRNC9xMWhEaFI0SU9YS3N1SjUzQmJRQTBZbjBzY05maEZ5ZEFESkkycjZCV0VlaUJQOC80amlVWDNxSzVYU2pVbDRiS09EUThONjRVaGR2b0E2a2VTS3lGdVVDS3NSZVU4eERGaFZ5VzZYWEJPSyt3cWM2VEhPSXdxZHBhTjhYeExFSTRqTFJPUnFRbHdWZzdaTTZJeUJVMldjS2NDM0VYVWgzT3MwZ2FCOGUyWVVzaGVjY2N0UWFjWnk4ekNFdTB2L3BacWJ2R1V3Ui9TdXZvNXVCUGw4eWZpYUs2RXk2OEZyaVJFZ1VEbUlkQVBFVkZ4OGk3cEo5NG03OWpRTWdOUlFlVW9aS3gzbFQ0Wk9DdmhvUThSNGFMV25UK0VaQWFQQkFJWUJHVHhYRnNqT2k0N1VocUZrT0lZRDBpVjVuQVlSR2N1U3lQd2gxazRCUVR2aXRFTTI1K1FzZ0gwbmIwelZRM3Rncyt1MnZDZzlMdE4rM3hmWFN1ZEtnaWVicWFFQ3pRWEhnRUFvNTYzVExYb2QyaUg4VEZkMTRYR3hERTR4YkJHMjY2N3lrL1kyVHRxTnFtMFpDOU0wUmlxOTFwWFUwYnFmUER6b0p1QjJrZFg4Vjc3UDdkb2JDNndUS0g0TVVhMUtsdkRSSzJvWUdLQlIreVFtcm9LNWkrY3ZpN3FVaHNiYzRoaXo2WEp5Y05GZTNuSEpiY3dGS1hyNVRnUDJ6Nkt1all0dEo0anliQ1ZBSHhUb0tWK2FQK2xQRWFFRzNURnZ1SXY1MTlONVg1UFhhZTV6Wmw4RTZGNE4xWnNkMjBXMnZmNjN0dDVqQnZpM25vbGhIUzdMTWxydVliUy90dDVUSlRVVEZZY0YvSkVkUksyb0ZydjAvMUFuMWwvbERhbEFBQUFBQVNVVk9SSzVDWUlJPVwiLFxuICAgICAgICAgICAgQUZHRUE6IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUNRQ0FZQUFBRCs0YzViQUFBQUFYTlNSMElCMmNrc2Z3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBR1VCSlJFRlVlSnp0WFFsNFZjVVZSbkd0Q3lvdVVBU2tyYTFhSlNUc3U0Q0NyY3BpRmF1MWRRUHJBcTFXY0dncEx1eUJCTUlXRnRHUWxRUkNnTENHSkN6SkJSSFFWcXUyRnF2VzFxMWZjV0ZURk83citkL01UU1kzZDEvZWU2R1o3L3MvNWQwN2M4L01QM1Btekpremt5Wk5YS2I4clhOUEoxeEhHRUhJSkpRVDNpWWNJQndqUkFnbkNGOFIva1A0TzZHS1VFUklKVHhNNkV0b1F6alQ3ZmNiVTVNb0NjQmxoSkdFTXNMWG91SDk0QXRCMUR6Q1BZU3JDV2ZGdTY0Sm42aVJMaFE5KzBBQUpGamhXOEkvQ2FzSW93aFhFVTZKZC8wVEtsR0RYRU40TldRaXpQQVpZUnZoS2FFaTQ5MGM4VTNVQVAyTlJzV3lMVlBWaFdzZlYrZXVlbENkVlhTM09uUDU3ZXFNZ3FHRUlaSG9mNWZmZGlLdGNMZzZlOFU5OU00SU5YUHRhUFdGVFUrcnVSWHBxaytDTUUvTkpIdy8zbTBUODBTVlR0TEl5S3VjSFhsKzQzZzFvL2crZFZydVQ5U0pXYjBqM3RBbk1pMzNKald0OEE1MVhzbEQ2cEwxVDZsRWJyUjhENnB0Uno0M0tscWY5Q01ubjF0UmY4cmZPaWV5YU4yVDZsUnFSTzhrV0dQU3NyNFJsRDlyeGQzcTRuVmoxWnp5bVc3Sk9TVG1uSDZFcHZGdXUxQVNWZXhaOU55WnkzK21vbGVIUllZUkptZjNKN1UzVEoyLytoSDF4YzBUM2FpNDQ0U2RoTkdFWnZGdXc4QVNWZWJjRnpZOWMyaEs5b0NZRW1HR0tUazMwancwVWwxV050VU5PUWNKOHdrWHg3czlmYWNGcXg4ZGlWNGFieUtNa0pvL09EcHlzc3FtT0NVR2k5UjhRamZDYWZGdVc5ZXBlbTlTOHhsNXZWNk5kOFBiQWZNTzFPbFNNalJ5SzJjNVZXZWJDTW1FVStQZHpvNlNzcTk5azAzVnlRdW41ZllLYlFJUEF6QUlZTEhScUhHaTByNGhiQmJtZkdJVFE0UzBMYW5zZUREZURld0hHU3Z2SlVQZ09hZHp6VHJDdGZGdWQ4T0UwVUdZbUx1eGM0TWFIV2FBbFFaejNjSDZCdVFWRTdvbTFJZ2hNczRudkxaMFRkZVRnaENaR0t4dEhCQnpKSi83NnI0YmJ5NmlpY2pvVDFBemk3dWZWSVJvZ0hkaHdacFJUb2o1bkRBZXBuKzhDUmxIaU14ZDBlTkV2QnN2VEV6TkhVUWpab3dLRDRRTk1lOFRCc2FUa09VZ1pFNVJ6QWxSSnkvRDZoeW1iTytZamM1cGVUOVZGNVkrNFdURVZCRGE1OGZhVjBaazdBeWJFR3J3eU16OG51cmkxZDNVUERJZVZsVjBWRXUzcDZnYnFsSWlHd25yZDZTb2E3WjJWRmRzNmFUbWJ1aWlMcUgzTWdwN3FOTnplMFVtaFNRVFg4dE1zQnN4MlBHRSsvODdzU1RrUFJBeWIyWHdjd2dhZE5tNkx1cG1KVm10MnRzK2d1KzR3Zlk5U1JIa1hWbmVLVXBTYWw3UFFHWEVJaFBlWndmbThqN0NUMkpGeUFGVVBuTlZ0OEFxaTE2OWtNcmJzck9EYXhLc3NIVjNrcnFhUnRMU3RWM1ZJQmV4azdNSFJPYVdqTVNlalJVcGh3bmpDT2VFVGNnUlZCYVZESW9NV21TcVFSSmhoR29hY1ZCMWkwdTZxVkNKUWNnK05XZGdaRkhwNyt4R0N6YktPb1JKeUZGVU1JZDB0KytlUmcxVFhORXBkREwwcUhpcGc1cTl2b3RLODFRZ3hLUVgzYWxtbFUyMkl1WkxNVnJPQ0lPUXoxRXBUS2grSzVLL3FYUE15WkN4ZytZY2RJajA1ZjdubWtuTHJvOHNXUE9ZblRWV1NXZ1ZOQ0gvUW1WZzlmZ1orck9XOTFEUklQRWtwQTR4WkFoQUpuL0U5SW5HQ1dSdG5tUTFXdDRsREFqTVBLWUt2S1lOZTY4VEplYU5kVVJvdkluUUEvTU1Sc3gwbndZQXJMRjVKYisySWdXQmdlT0RJcVJNcThEc1FtODlpdFl3YXJVSHN6YVdJd1p6NUxTY1hyN1VXTnJ5MnpGYXJGUllicjdmblVvUytFVk5jTmo2WGdRdGlQUGM0UlRsdXpxb1dHLzVXV3hpUjNYSituRldDOG85aEpaK0NKbWdDYng4c3pjWFBCWnY4VzVzcDhCSWhsbU9SYXNmRlRaNzVUMDA0WnZ1V01JZjFzc3JJWGRxd202b1NuWk55SlRzWGcyR0RCbFFZMzRYdy9DTElVTEhoSlNqbU95OUVOS2VjQnhDVnUxcEgxMUx1SjAvNHQyNGZrWUwzREorNWhaRTZDeFp6OHhVR0lMNjdzMTNFNk5NZ2pVbnZLTUptVkhrYm1LSHc5QkRZeURQcDRSZGhBSkNCbUVLSVkyd2xMQ2U4S2JDM1RxaEU3NnBPaG1MU2w5Um1RdldQR3BtaGVHa3dBakhwSkJBcHhCV2FNSmh4ZXRHR0RnUFhWVCtZOUg0WFJXK1Uya2wxNm1pczNRbWpCWWtIUTZMbEcwdkowWG0rM0t3OW9rZzNOWmtJWWtBaTRmZGpKSnhtbUFicWxKY0NRVjN1b01LZjBQSUlWemdXQ2hqT2M4alBFSFlHd1lwVlRTdkxQWm9hV3BJTDd6VGpCU0VJOTN0dEtLOVpjSGN1TGtkbUx6L0piaWYzT3hsVGlITUZXb3R1SGxsbjMrL1htckJFSnJzcDVuTktVT2RWTzRTd2hlYVVHNTZpUTBoOEpNTkM1b01uZXd3U2hZcHdtc2RDQ2w3M2F0dVBYQTh3eVI0L0NPQ3VhNFdsY0k4c2xNVENINmdBRlRXQ2NKZGlzVThFVEF4UHlZc0lYd2JGREdZSC8yUWdnQUxHaWxHay8wSGhMWjJGVXJUQkNuZjJVRjFhdjZpSjVsVWFBY2hlUGUwZFIxT0k5eEJlQ01JUXJCV2VYNk52emxsUnNIUVNFNUZtdEZJV1dWcGVaRUFOMm05QzNyVXFhY1VHMXNHbGZtYWNHTU11ZERYNVV6Q05ERktmVS8wYnBjQ2VrelB1OFZzTnpMVnFoSXdRMnZXSTA1MUtMWnFEU3BTUllqN0FScVM0V2JDaDM1SktWT1MxUmw1L2phLzBvdnVJdXNydzhnY1RyR3FRSllteEJaU1cwNzJSektNVitvc2h1MXVtVWlXVmdURkx5bXJLenY2M3ZUS1dQa3JvL2tFUjhPTmo0UFRoKy9SQklDbDRVUnRwZVlaK3JMNnhiamRMUlBKY3hHaDBnOGhVT1B6VnZpTnpPa1Q0Y0Y2OWZaU25qUVQvRkpGY2xVc2M2YTJqRUo4V3NTNHpXMFRWQ2loeEE4cGNMNjY5ZlhwZ1FnWEE4c0xwckR4VVR6NjhENU5BRVIxT1BsSTJjNDY3bmM0S2hNbm1seEtDbC9wbC9zWkpVRkU1K0EwbU1GaG8wZk1oSjRvQytCa1d4ZXhVcExnQjJQY3pxNFN5ZGVNOEtwWFVqWldKL3ZhNE5Ld1lIVTlaeVF1YURqZlNPQXJGY2xjZExLTHFJczJTV2hDa0VqR2pvUmpYZ2lCZWs0cjhCL1ZBdFdWdldXNlRBcitmNUNad0hzMEFSQzhZRmY0a3JvdStFTXhibDlQaWVRYzYzV1VCQlZVT0l0TVlkMG9NUTVkVWFSdFhTRE5acThBMXBqMC9yRVl0NjJucFBCVnZhY1ZmUkF4YkJ4OW9sZVZTSVM4Ymlac0oxbHQyZmwwcHViMGltemJYU2NtcTBFY1F5WTVIL1JDU0RTR0xSQkNla2ZtbFl5VUNmbldUTkN6Q1BzMUFaenN0ZXZpc2k2S2NkdDZTZ3BmbjN6cWVtS3ZTbzZlYXdtQ0VPekx5MjRWSzJIbjFFeGtlNUlpTTJ6VWxtN25zTUhjMkVPeVpyb2xCTXVCb0FLOG9iWjRXSkU5SVZjUnZuS3F0aEJrSnduZFBZWnQ2aXVScklQY0VsSmM0ZCtOSW1OTzhYMk9DTUhLOWhWTkNEallyRmFwMFhuazVacDV4SDVYTEVFU1JyUGljZy9GNythVkhvZ2Z0aVZFQ0R0ZUV3S0x4RGsyYm1ocEh2bE5qTnJUZDFLNHUrZ0xwMlRBeCtjMTVOYTBNK2NPaWdoUDhNZDJ3aWJKd21BQmFGV3d0SHM0TTBidDZUdVJyQmNyNGtpR0UyeTIwUlJlTUNYN0J1M0d2ZFZPQkg1TEU2WmlWd2RMUXVBTkZlK3VqVUZiQnBKSTFqWUszMUN6SHgyRUpUNTNFRzBJdWN1SndKTmxvVElzaHVzVU1nVjM3RWtDS1FoeWF5aHJrYjVPUndkOGRzRlpWL0w4T3dpaFEvdE1QYjQ2Z1Z2SzFsYUp6VVlOVnJGQ0ovODRCdTNwTzVHY3M1eVFzWlVXdnFrK0FyU3RRSk02d29OKzZrYm9MWnBnMlBoSGdMVlo0WXRLb240dDRPY2h0bU1naVdTOGtQQ1JIUm1vTStvVkJobWNrQ0hyaVpEVDNRaCt2eXlnVmR3V21iOXFOWDl2ZG9odEdVaFNlQlNrSlJudzdpNG83aDRLRVVCNlFjOGp4ZVdkM0IxZFVQaSs5TUVhWFdxanRqWldSVGVzRUVpZHNEZFRrMnlYRVQ2eFUxTitRMHV0Z0RNcUc2cVNFYlBzYmtOUDRZRjBtelJCdDlNQ2NKcUZQczNsNWkvbWtVdERhazlmU2VGaFFydXR5S2g4cVlOS3ZUZTBrWUZ3M1RKKzBLbW4xMG9NVTZUOTloZEx6ZmNFNXRhYXY3RzVqc0pGSXBsT0o3eGdSUWJ1WXZGendzb09hVVMwSUdPRlp5MUNHYzhtL0ZNVEdtY3F6RDVJazM3ME9iMDNMK0QyOUpWSW5uUGtrYTRIdGhEQ25MeUJoVlIrRlQ4K2pyMFlmMzhOZ2dxWUwwOTI2UlpibVlnZ0Z3UW1SQVFLeWRGTk1kbExoeFZWUk9hNmxSb09ZcjRvTEt2eFpDQjQ3NW9nS3RWZnJvaVZCeGorSG1GdC9US0E5dlFqTTFUVXc0ckJhbHk3TDhYL0JRUG13RUlTQjRIS2Q5VmN4QU16T3ptb3ltSGI4Mk90UWxZYlZ4QkVoQWRWQnZKeGIvSjJVSGpRZDcwWVgrejYrVDBpYlFkMHlyWGJVdVF6L084UnJndTZrdWx5eGF3MnJzVFpFU0NtRzFaaXZrTmNRTDNJRW93SWYwZlg3SUUyS2RwUzd4S2VhcGphWVZUMkNybkhGVmljYlljcTJNNzNTSmJHWWswaUp1M0hDUCtRR3dNeXdLVVR0TnRjcnhFdzR1QmEwdDFxOFJuaDkwcVlSek1VY1Q4S0FQUE5TbEFNV2JFbTZSR2lQRkNsdHhJcVpOT2MxaExSRHBNZTRod0JpeExuM2VGNHJLNXZNQ0FLdEhkWTlaWWJZTHo4WWFzanhabTF4eFVRNnhYbzNZVUtEOGE0VCtIUjdhcG1NYUZ4Y08wdEdpc3NJdUQxTGl6cnBPTFNIZ1BMRGNjNjdnOTFWT2dhQXBGL3h6VUJYckFJSE1ObURucXFhREFFcC9tTysxWDRXWlpSQ25mUFJPV0FBWUVOTW95R01GemtBRzRWZW41TlZ4VTdveVpYVVVFOVRWVzRoenlJcG5iY0lEQWxhL2JiUzIyaUc3R3FGKzlpN2tIc3NLdkRQQXEvRHIwRllUaWhtUEFWMWtIWXZjdmQyQ1cwdVFFV0dDWm95RjlhMTFxU2dicGhFMjhNSVg2WE1DdVNwelRxMjhveGQ4a2pBR0pEVmJKTUNpeTExbGE5U09IK3BuWUt2NHRsSWVFRDVJZUt3QVE5bjFUUzVKQlVFczY4NEM1SFROQlM0SVlleDRVYXhraXRIeVFkNjZUd2FJMmFqU3U3ZUZjNDZuVFJqZkFlYjFWNC9OY2ZDRXlNbnNVS1B6THdQdUVZZWlYY01MalBGMEVXWVpHQWF3RVJUUUt6Mk9abVBLeXlaeWo4Tm9xNEg5dXJTY0t5K1lzbUtLd3B1MHBucnVxdWl2bkVlZytDR2dScU1KdEl3T1FaMXVRTVZhZVJzTjE4SkFDNGlXSzdtS2d2aituODRDYVJZS21hME51NDJySnRCS2l2TEtHVDRlSUdObFNsbk1CQ0NzWUJDQWhyVXNaT0p5TDE0YzJsMGVya1NoQ2MzWWZiNVpKNHQ3V2pSSUwya1N2Zy93eGU0QVJFUjBIV3VpN1JEdURna2s3Y0JyRmJxTkRyRW5Za21DV2h0bXFPSGNQaWlUY0pPUEdGbzlyWTFhdzBYaVBvOGJVWUNROHBQQ1FvWVhjNUhTVXh3VVVyNStSd1Q5REFPZ2RIczlFWjhIMmJ1VUFETHF6QjV0QURoTzhsMU9Uc04xRmwrbWtWUlV4V1dQcGZQeGRnSXdtandNVmR3YmlmZUlIQzkwVWFSTXlZcDZSdzkwWE5UVHdMUXZoTFBkb293S1lYTENJSFY5SkNWV0hmb1pUd0c4SzFEVzQrOEpNVXZwNnc5ZjY2SlFIZTRqeFNSYmplMWNFSWdLc2RoNHl3amhtb3hIUFZITzlFbFg5V2F4aW5aOXZOU01BS3ZLaXNFLzdVaFpPUmdOTlArY0kweGVuaG1ONCtsTEJKOU1qYWVjUWxFWHdrZElhYndtNGs0UGxmRlg3cXFlOUpOUmtIbVJRZWRGWVRTRGZMZ2JNUFo3MHhKNVJaWDhLTVovOG1yRlM0bTczTi85VmM0RFVwL0xSVlRVU0htVHNlS2duK0tOeVZhMk9lSXFLd1VKQ1FFRkVyRFM1Und6MmpOYWplcjRVb3ZheDFYYU9qd1dKZWVGdmhYbUNvdi9oN1R4dDZva2E4VVd0YzdGVkFIV0d0QUIrVkJRbFlvR1VUZWpTcW9vQ1R3amVRRGprd1R6VVNjTnViOHhEOHh1UXVpWG5rZFJNU3NDbjFqbEJyVjhkYjF2K2JSSTA5VTBjRS91QVlMZzBib0FRYzROQ1lIQ1NGMzUyTDFmS2Z4UVNkMHFpV1R0TEV4ayt3ZXRhSjBEQTJrUnA2b29ZK2wvQUx3aDhObmwxREtDQjhSYmd5SHZJNVRTVGZhWVJ1aEJ4Q3VIOHQxRThpNFV3M2hORHJDWDhuUkFoWkJzK2ZGODhpRFlDUVBNSnh3a2VKVHNqREJNTUpuMzcvZ2RUZ1JvUXNhMENFdkNYa1RGeENTTEFMQ2YrQjZqRjVudENFMERkSGlsRTZnWEFlSVUzOHU3UEJ1dzJDa0R1RWtJWm4yaE9aRVByZStRUlZmUHNWd2dPU0xIY2F2TjhnQ0hsS0NMblU1SGtpRTNLUjlPMnRoRWVrZnc4eGVMOUJFUEtnRUJKV1VtdUQ1NGxNeU5tRVoySDlDV3V2ay9qM2IyRVpHcnpmSUFpNVdsZ2VFSFNXd2ZPRUpjUnRDcFVRS3ZCVU1hRmxpaDV5S1NGVi9QdG1GK1djUVhoRENQb1pvWlh1ZWN3SW9meE54TVRjV3ZUNEZFSjd3bVhNWWxGcVVrNjlxSmF3Q1dsQk9DUSs4RHJoVjFMRFBPdXlyUEZTM2xTNThtRVRRbm5PSWlRUnhoQzJFVDRSNmpNaTRRdkNRK2lFRHNxRDFmZ0h3aTBHejBJbHBCWGhxUGpBUzRRUlVnV00vL1NDZVZtWFNZMXdtUEJENlZrb2hOQzdiUW1UQ1c4VFR1Z0lNTUxYaE90dHl1eEgrRlM4Zjd2QjgxQUphVWFZVHBoQjZNSzRTeUNkY1h2YzFLdEx6NW9TNnQzdFFiOHRseXFmSnYwZUtDR011MkdlSmh5eGFId1E5Q1hoVzkzdmxucUxubytXM3IzTjRIbmlUT3FDaUo4VDNpVHNOM2orSTlFTElmQkJRblB4dTB6SVFvTjhwb1RRdis4amRCWC9EOXhLK0lldWtVRU1WTlh2Q1RlSWtkOVU1SUg2K1pQMGJycE5IY01qQkwxY1ZoMStFK056em9kQ29IcUVpSGRXU3hWNlR2eDJwZlRiRElNOFZvVEE2TmpEdUhsNkM2czdOM3dqdnRlYldmdlNKaVFLSVRjVHhycktaRjBlZXQ0QkcwTDZzVnA5RG9PaE9lUHFVS3ZrNHdaNTdFWUlWdEp3WjN3bXZmYys0U1lySXFReWZwY29oRXdpbExyS1pGMmVFMEpnOGJ3aFZRbzkvQmZTdit0ZHp1eUFrQWlyZFc5b1pGenJRbTZ2aEF3M2VPNkxrR0xHblg2Ky9waXdWSjR0SWVLOXU2UktWUkxXU2YrdTk1Y3hIUktpQVpPMHEwdGZmQkFTckMrTE1td1JQU3VRUHc3cGdoRG8rNyt5V2xOVG0rai96UXdXWnk0SmNmMm4vQktKa0xVaTgyWW51dFpCZVk0SUVlK08wVFVrc05qa1hhZUV3SXgxSFdTUlNJU2tTdnAzbXBmSzZNcHpRd2pjTUVlbHlrSFZHRjVwNUlLUWxSN2xUaGhDZXJPNmsrSEhqQzhDWVQ1ZTd3RjNpRjdxaEJENHQrVDFRb0hGdTluU2UzQlpqSkNRS3oxYnEzdm1GRVZTR1N0czZqaFhlamZ3U1IwYjhxWFNCNExFS3hiZnhSeVNMNzJMVVdXNkhxSm5DMEtTMFM4R0JFcUlLQUR1a2JLQUJjV28rNjNKOTdEdTJDcTlDN1YxcTQyTTNWbnR4SjhvZ0grc1hyQzRiMEpFSVZpeFl4TUpRM2ViVDJ3ZzNFODQwK0E3RnpQZTJ4V0Jhc0pRWnVQMnB1ZW5NSzVHTVpkczFHRy9hQUFRdHNYZ3VSL0FIQy9WQVdvUmF0M3c5ano2dlpDd1c3VEQyWjRJYWNpSmNXTUVoSlRZRWR1WVlwREVxSWJhNnhCdldScFRreWdoME9WTFdBRHJxTWJrTXpIdVhTNW5BYmwrR3BQUEpBaHBqTHJYRWpWR1M4S2pqTWRkL2NEaVBldzB3bFhpYXRzM3JNVDRSdHE5ak85K2pnNjQ3TDZFc1lUWTMvUk5INTBvMmVXRFRkNUI1TXBmeERzSjhRZU5SVWM2TEdSU0FpejNUTUk3b3R5WGd5clhqUUJ6SFJCeU91RTk4YzZYc1piUktKRWNiVmp0UWpOSVFzNWhmRUdZMElSQVBTd2lyQ1E4RUdzWmpWS0RJWVJ4M3hhRVJSQ1paWHdTUGY4dXErdjB3ODdmOXdqdENHZm8zajFWSzlla0xPQVNrZDhJYll6a0VlVzJNOG1EMzgyT1A1Z1N3cmhYNEFvTFdRemRJWXp2aEY3TGFrT0UvaXpsYVdXVXg2eGhFWFV4aXZHNEt6bEFBSkVhY0I4TU4yamdoY3phendNdmJsdXBncHVONWhEeDdGRko3MW9CWlp3cjVZVzN1TndtRDF6Nk94bmZXN2NsUkJDODFxYk00NkxNSVV5c2ZVUWJmbVNUYjRvVE11Qk9mcyttSURnSzRkTzVRTXEzMFNZUFZzN3R4YnVuU2QvUUV6S2ExWFgvMnpuekxwTHlRajI4NVRBdjVMbE55bXRHQ0dSOXhXR1p5RDlZNUx1YzFZL3YwaVBQam93a0hhdHc5R0dqQnBFb2NPU05JL3hOZWw0aTlRaUU3VHd1ZW9yMkhJNi9wd1FHc3RxNEozbFNQeVo5SDNQTEorSjNSS0hrU1BuMWdNbU1xSE45SGZEYldKTThDRjB0bEFoL2xZazFpeGtoVXJ1TXNTZ3psOVZHemJ6R3VLcEN2c0dNeHo4ZkZNOCtrUEk5Z1c5YWtZSEcwTHlrS056d3J6NkxqeTJWR24yWTdybGJLMHNtNUNvcEx6eS92dStLTi9sK3NmZ0dZclRhaWQ5OFRlcU1IMERWMnU0YTZYZHZrN3BnVTJ1TVRLdkdvR2NYU0I5WnBYdm1oNURPVXQ0U3g4SzdUS3p1NWxaUDhadGZRdVpKWlE2VWZ2ZE1pTmJySVpUbFg4VmhQSFJmbTNUeDM2YlNNeitFWEM3bFJlUTVRbEF2OFR0U2hQcEFiQytzckZHU0NnRnVFTys0SWtTVWljYUc5ZlZyVmpjZ2I1ajBubWRDWGhLWi9pVUthU2w2TEN3SFdEMklHTThpVkloM3RJL3ZZNUpYMVNjaHdHWXB2MFlNSnVvMWhLbUVYeEtTbVhWZ2R6dlJTQmpwbXhnUHdrT2pITk9WN1pnUVVlYURva3hzTk1IVDhDRXozcldValFYUGhHaG53cUVEanh0OHhNeXFHS1FyeHpNaDR0blpvc0pPcktRNWhHWlNYbGhFMDVuOU1RUForckVraFBHNTlXbVhaUTZXOG5zbTVFM2RCMERLNTR3SHFxR0hZV1RnQVB4TXhpME9SSlBVdS9ITkx5SGlPZFlpbU9CSGlPK3RaOXk2ZzFyUW04U1Y0bjNrUzVPZW80RjJFV1l4cnFadUkzUmwvRXhLdWd0Q25wSElPQzdLUkVlQWVmNHp4cDJrTFhWbEJrSkloY2owWDhLTmhPOHpyci9SWTkyVTQ1c1FrenhZb0NFWTRqckdWZGNCNlRzZzd6eXA0cW9nd1hEdWNVb0k0NDdCZDFtdFJRWnoxZkR5elRBSW1hRTFFTUh6SDZnUGl4QmRmb0JKM3hraU9wQ21haEV4WTNYVVlJNURRbUJrYUo2S1RXWUVHNVFaQ0NGOXBRS3hKKzFwa3ljV2hJZ3lSa3JmR2NycXJtRU13MCtsdkJYTUdTR3dvTFM1WVpsTm1XdU42dTJIRUdDSFZDZ1dUejgwRzZJVzVXUklaWXcwZWNmdkNFSFBsWDFXVUdOUVo1b2FRL1Mrb2ZPTzhYbEVObHFzQ0RsZmFrekkyODZrekNSVzE5clNFNklkV01JODZQekNaOGJQanNzbUxVeE8rS2dRTUpCcGd1R3NydG43UnlrL0tvR1RTTkRuT0szYlFyeGpadlppKzNXeUdHVkd3T0lMM3VSM3BXL2cvNXVLRGxVZy9ZN0pkNWpvVkcwWlArYjhHT1BuUkdTandHNVNYeXk5Q3hNZnhzR1B4UHZ3NU9LVTduNWRtVEloc1B6ZUZyL0RPRUJZNnBPTUx5WDZNNE5qMUhwUzhMRXE1dHpCaDE3WlhNcVAzdnFweWJ1bE5vUTg1L0NiR21BQjlwZnlYeXdxTEwrRFJqaW1xNC9zTExRanBCbXJ1NlZnVnFaODRLaU9xcmFvRjlSaEhkZVRHU213V05DalMwVVBSTEQwUVJNZ0dMdUZsQmNtYUI4cEw5NDVLckJENmpYN2hVQ0hwYnhUeFc5V3dKRTNuSS9IQmhjTytldGxoNHJBaUlUNjFiWmtJK0w3aUI2RXMvUnk2ZnNEUkw3V3JQWUU3ZzVkbWJBMDBhTXJXZTBaZlFBVC9sN0duYTRnRkVzSFdHTzNHTWcwVHJ3TGRYcEVhcFA3dGZmK0I3T2RVZDZLVk1LMEFBQUFBRWxGVGtTdVFtQ0NcIixcbiAgICAgICAgICAgIEFGR0FSOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCTENBTUFBQUN4eHRLRkFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUFydFFURlJGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGd05BcmdBQUFPbDBVazVUQUJjMlVXaDNnWWlPa0ltQ2VHcFVPQnNCRERGZmxMN2M5Ly80MzhHWlpEVVBIbHluMi96OXJXTWpDRCtiNVBicTROalQwZW4xcEVjTEFqdU0vcUtFWjBRbUNrR2Y0ZTVEQkJDMWhrNFRTYkRkYmhZVWZQUDVnRFF0ZWJ0diszSXZCd1lwYTdyamVoSkd5dXVST1FreTVWUHloU0h0dlpvZGl5Z3UxOUE2d3p6aURwUHNNd01nQmF4c1pqQWlRbHNrV3RyV1RaZFZmWGJFbmVheTUvbzlTemRJdUNwd3M4bDF0OFovbFdJUjhkSWNMTzkwbUZZWWNRM1p2S3ZQc1p5TnhWQ2hKVjVBVi9CTTZLNFpXV0dtSHhySG9CVktKNlZQM3NpUGZzRFZyN2JVeTg1WWxsMnFvMm0zZEsrZkFBQUZQVWxFUVZSNG5PM1lmMUJVUlJ3QThPK2lwVTBjQ1hFeWdDVjRqaWtJak9pVUlDcWNPSU5COFhOU0JsUitqU0RFcjFJSkZKQUFCWWtPS1c1Q1N3Z2tEa2ZvR2dJcUVCZ0VxWEZNZzhUcHg4RVZVc1poUkY2VFlucnRlM2ZBdmNmZWNjYzEvdEhjL3NIYnQ3dTNuOTMzWTk5K1FmQUlFaklpUnNTSUdCRWpZa1NtVzA0bFVKaW9jdVAvSFdJeDFia0dWbW9vWWsvMUl0ZmFoUE9YS1VLM3RFNUtDK0tBK3g5amxIQlZsMHN4YW8xdU1tcHM4Ulg4VW0vRURhRjdJNm84YjJLY25oRnFWeCtDd3VhSFcxdjZYUDZXcUFxY3JycWl6L1JCZGx5My9GVTF4S1c0ODBhTll3U3djNzdnUGFpYThBc0lOZWlLQkNQVVRSMDNYOXFFUHRmcENRcEZxRjlHZDNmN2lUOTBRU3hlYkRYQkIrOE9Qa0tWdWdoMGlzUVRibGJnakI5QzVYTWljYWdmWCtWQS9KdDNkQmFVS2NLc1BPNGNQbHB2S2RHT2JQemFCVDgydXhBcTFsTlFwaVgveE5YZ1BnTUhXN1FnOWlHOUV2QzJSb1h6SXVqKzBxcndSUXRZY2x3amtvSE9BRVNqZDNWZExvaHA3L0xUQUd2ZGN6UWdYbHZMZ1RmcG0yMElnVk1pdDFvTzhlZ0lFUWxhY3dhNGF4MFBHMmdBbUR1N2lzQXlOSU9BSEVjbkFTVVhxRitxQ0ljK0dMeEVaNHUrQVpBRVg1dXBXL2Y2Z2xCd3phV2FDNjZBODBDbE9sUFMwdzBMVmswdkVET0lwYm1jTTN5RU1ZOGQ5aC9ER3lWRE9NY1B3SGN5eWZUWVROM2hWMk9hd0RRbEFXZFQ2bURwaEpReEdXRnZHeTlzL3l6RUlyc0FzZ3VZVFNrRWpvNWgrTFZhSUNHUTgxMHhFWEZJellMY2xubzJZdVlzeVVOUmpKWktoSnNhQ1pVWjFNdWNaTk1QMENlOUF4N0xBWHA3S0FRSzl4QVJxQzY5Q1VYaGJLVG1BQlFQc1c0NmpVQzByRy9iQjlScFVqcitZL2ZVS095a1gya2FnYmREaVFpSVVxRmtKd3VKR1BrV1RyN0NhcWhFb1BSOEYyaEVsajNaU1VUT0owTGd0bUFtRWhTZUFNOTFFaEN1REhpRENsQWdFaUk4SkFjYnUyZElTTlQzRXU4MUdVeEVISWZnUFg4Q2tya3NGdWM0MFNVa3hERjVIOEJwRkVOQTBxb1ZjR0kzRTJsdUZVRSs2NzdUeU9pblZPbjR3ZmVKaU5kQU8zQU9aaEVRZ1ZCdUdudUFpZkJsWTNEcUpSTFNKTTJCeXV6dFpLVHRyVlhVUkFsSVV3dzRjZXFaQ0h5eEZ4N2NaNjJNTlBLZ0NBLzBwMHdOQ0pUbElpTFN1Z2VxTTN0WnlBa0JjSE5aTjBXSjBGbU5DQ1Ewa0JDeFNTemNuZ1FXRXJ2NEhKeXRydFFmQ2JJU3owYnkzY0tnUEhtSWpVQnRtY1JiZEY5L0JMSVhDbWNocS85VXdFZGVVMmN6Q0Q4ckZNcWUzcXJlbE45ZkQxM0s3OEpGdks1Y3BCWUV2cWNuQ0VYMHFHd2gvR2NxMC8wUU9qdlY5MlRRRXo4SzZkZW5OeFJxM3hOQnpRZzRIWFVIdzFQY2hrd282eXlkUGxmL01yb1hCOEZtejRsMEE0bjhoVFV5VUlnM3pwUXd2dkVmcmc0QStLUnVmanVWcVhRNS9hNEV5bTIycTcwT3pOMUtuaG4rTnUyU2hmdk1tMGlNYUJZQ1dKVnRVaTlrN2J2UUZRRitZRXdXUFpUT2k3Q1lFT0JSY2xaNlpEQ0syVHRJdDhlOXFJZkNKdFV4dmxkUHdid2p1WlM2QkxiWkRSWE1tdGw3NGF2dWRkUnlGTysvcmpGTTl3MlllUmVTL2tKdHBqejJXem15SzBtNyt0RE1mWFRRNFpjbzkvdGRKOEtodmlKSytlcTkrVmpFN0dweWZCSWw4dTFXVm5kNEtEaER4RFpUNlRJeU85dWlqTHRRM0ZncHFZbW1TTXZPNUZoVG16TEx1K01mc3FFOXpJY2RFZGk5dk1KMytObjJLbFdveFdubXUyaUlsclRFakdsanV5VnFlMDFRY01WZnBaVFd1cTNuSVdITW92eHI2bEdqZDE3Zm9Sc2FlOUllL1ZvMFR2TDhaRnFiNElEc3grRVZ2MG0xdFpnN2pvL2tleGFraGppMUVhcE1QZGY3b1RMeHdGeGQ2UG9mQ1o5N25BbnVTby9DdXJzWFlOdGk5SHpWalNEcEtVWEYzRC9VQnpFb0dSRWpZa1NNaUJINTN5UC9BblA2Mmx2b1dHQnNBQUFBQUVsRlRrU3VRbUNDXCIsXG4gICAgICAgICAgICBBRkdURDogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVFQUFBQW9DQVlBQUFDaERKZlhBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFCZmRKUkVGVWVKenRtZ3RNVjFVY3gvRXZRcVJqa0pxdmJPdkJZN1ppeSt3aEJmYmFVa2RsR0pscnBWbnBjRDBZcTBrUHNBZHBXWlpKT1cxcnRhWHJaV0lTaUhOS2EyUHJ0VFZEaGJTQW10TTZNNTByaEdIWjk4ZjludjQvN3Y5ZS9nWCt1Y0k2MjJmOGY3L3pPL2VjMysrZWMrNjV2MHRjM0FBckppNXpEL2d1NkhFRVdpUUFvQ0hXbmR3RjdvaHBKNzBvR05NdzhDaVlETkxCVXBBVWk0NkdnZzV3NUpSZnZJOEZZOG9CSjhFbjRIWCtqczNOd29XdkJMTmljdkUrRkl3cEVaU0F5MEFhbUFlRzlFZkhoYUFLaklwNVo5NzlKNE5hVUt4MHI0QjNsTHdBMUlCemxlNU1zQVRVZVZBZ05xSHIxb1hBSTJCR3RFRlVjOXBOajRHUFVRdjZ6V2IvOVVyWFJsMEs1US8xMHNEZk1XQWZkVjU4S25ad1BoMmNCSTNTNkg3Qlp4QmIyVEN2UDV6MjZQOGE5ditGMG5WUWR4YmxqeW5Qb2Z3ODVaOUFtZWhCTGlpbmZxdll3ZmtNQnFFcHprYklaeEMxQVFjaDF5TUk5bzZtVXQ1RStVN0tPeWpQYzEycndCV0V6SUVjaEU3WFRQaUk4bTJVdDFGK3luV3QyNm12RmxrRm9URmFFT3h5Mk1DcDFkKzh4ZjUvVmpvN0U1WlJQa3c1bldOZVRQbFBVS0hhZmVBVGhEM1JnbERUd3daek9sR2h4bnlHbWgxZVZERUlHUkZCTUI2bkwraStaTjE2NDV6UVRrZXU4TG1CbDRMSGxaM2RPell6Q0ZrTXdpNHhibVRsRXRkRjdsWUJtdURWMFVBcEdQK0ZZRHQ5S1JjZG5DOWdFS3JGNEFIWGRQbkZKYThPMm9uL1dqRG00V0NMY1E1SFg0Ry82TXNCTUZwczRId1ZnMUJrRytVWjUyU29uVzhCSllGNjA4dUNjV2Q0M05oVllLelV3L0U4QnVCM2tPcHVQTkk0THlvVEF4bjlLU3p3WVNxNEdvelhlamc5QlJ4bkVPWUdOYjVBQ2h5T0J5V2dEWFNDK1VHUHFkOEtuQjBHRm9GbWUwSUVPVUdQSytZRlRpYUJtV0FsT0FCT2dGb3dHOFQrOVR0V0JZTWZDcWFSWEpBSVJsSytIandCS3NGblhQTUdiQVFMSWphL2dWbzRyVzhBcGVBRlVFYzJnVFhVTHdTM2dFbEJqL2YvTWlBTHBrNHJkMDJOUEVJK0I0dmQ5bmp1amdOdm1QRGJXenY0R2p6alBsNURqZ2N2QWtQYlg4Rk80K1FLUjlOR2pyU1NMWHJQbzY5endGRlE0elYyNktlRDMrUjA2Rk8vd3UvVUM5MTU0SGhYVys2YzRuZzkyS25vcEw1VU5aek5odllrMWtTbmpsQ1d2em5LL2psMVlwTlgzd2JWZGdWdGJNNGc0bHVDdkJ5eHJ0V2pMc2wxeEwvWncyYWpxaTkwMVYxbGZkQkJjSitzN3FGK243b3I3V3dveVpaeDZvS1NxdC9BT3BraHlkUWZvaTVOMmFhQysreEpyZzlCV01nNm0wL2NaVnpaWnhOT3ZRa253TFdxenVZdnYrOHBDRGRSMzh4R3I5cEdJTkZqVUNHK2I0ak52ZFExcTZCbHVkdlFKcWVISUV4aFhZdExMOHVzbFhWWnhubFJrdCt6WEhZMnIyRHJqOW9iWXB4UEM2SnIxRUhJNS9OWG1LdjJpbkkyc3EraXk3eWNvYzFxMnF5aFBNZTFmR1J2ZUJmTVZHMXlWYjBmcmE1KzVsTmZTWGthNWQxNk5xamxzTWc0V1NaN0UxUFVjdWdXQkM4cTdBbkxoTjh5eS81RkVOWXAzVVJRYXB5OW8wTTU5aVRyYlVhNXpVUitJN0M1amhaMXZSQWRFWDB4ZzVpcmxzV3R5dFltVW1UcHlKSzFTZGdkcXQrOU9nakx3Vkx3TEY4eVJEZERYZkJwTnBJblFZSkhBR1NLL2tDYmZKOGdEV2RBeE9ZWUIyWUhFL0dsMldzNXFGbmdSNE95cmJRemdYS0tDcXpObW5YYkdQODVXdUozc2QwUHJCN0daeHZuY1NRTjY4RkZxck5MVERncCt3MTFDV0N0Y1RiTXFjcjJZaE5lbnpvSTMzb0V3VzZNTGVxYXN1OUlra1MrTDdoVGJVMjB6NlA5WmgwRTZzWWJKN2xpZzladFkweFJRVWdBdTZtWDgwSWlMeUR2NXdmVkJmYUNQNVFzYTNJc2JTZUJIMTIyZFdwSjJMM0c3Z2xlUWJqY3FEM0JoRFBKNjMxbVdyNmRyVjR6UWRsbG12QTVwMnRQMkFJT2daQTJoSHdCT014QXZHL3IwV2dFZU5CRXJ0K0haRW00T2hzQ2JnUXJqYk0rclcyUjRRYUd2K2VEL1dDVmgxUHlMVkxXNzFyS3k0M3pUeG9aWGtHZ3pkdkdPWS9JbzFnKzVjdFRKTnNud1BLL0RyNTduQTNFNUpDVGd1cEtTSUlSUFRZWXJBV09aNE9ERElRc2tiVG9yUVpoZ2VQSjRDVytweDhEUlNBK2VzdEJXT0Q0R1BBYTZKRGpOSGhZQWhUMHVBSXBjSHdVZUF6czUreDRreG1lQ2FHQm5MN3FUUkdIUVE0b0E5dTVpYmFEUm1aOXRvR1hRV0gwcXdWWC9nYmFiUDVjQ1JhRjJBQUFBQUJKUlU1RXJrSmdnZz09XCIsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvclByb2ZpbGUob3BOYW1lKSB7XG4gICAgICAgIGxldCBvcGVyYXRvcl9wcm9maWxlID0ge1xuICAgICAgICAgICAgQUZHQVc6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQWZnaGFuIFRlbGVjb20nLFxuICAgICAgICAgICAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIjR0aCBGbG9vciBQb3N0IFBhcmNlbCBCdWlsZGluZyBNb2hhbW1hZCBKYW4gS2hhbiBXYXR0IEthYnVsIEFmZ2hhbmlzdGFuIFwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHQVQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQWZnaGFuIFdpcmVsZXNzIENvbW11bmljYXRpb24gQ29tcGFueScsXG4gICAgICAgICAgICAgICAgbW9iaWxlOiBcIlwiLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiU2hhci1lLU5hdywgQ2hhcmF5ZWUgSGFoaSBZYXFvYlwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHRUE6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRXRpc2FsYXQgIEFmZ2hhbmlzdGFuJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiMDcwMCA4MzAgODMwXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCJEYXJ1bGFtYW4gUm9hZCwgSGFqYXJpIE5hamFyaSwgS2FidWwsIEFmZ2hhbmlzdGFuXCIsXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBBRkdBUjoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdNVE4gQWZnaGFuaXN0YW4nLFxuICAgICAgICAgICAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIlBhcmsgUGxhemEsIE9wcG9zaXRlIFBhcmstZS1TaGFoci1lLU5hdywgS2FidWwsIEFmZ2hhbmlzdGFuXCIsXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBBRkdURDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdSb3NoYW4vVGVsZWNvbSBEZXZlbG9wbWVudCBDb21wYW55IEFmZ2hhbmlzdGFuIENvcnAuJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCJIb3VzZSMxMyBNYWluIFN0cmVldCwgV2F6aXIgQWtiYXIgS2hhbiwgS2FidWwgQWZnaGFuaXN0YW5cIixcbiAgICAgICAgICAgICAgICBlbWFpbDogXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yX3Byb2ZpbGVbb3BOYW1lXTtcbiAgICB9XG5cblxuXG4gICAgLy8gY29udmVydF9tc19wYXlsb2FkX2RhdGVfdG9fbGF0ZXN0KGRhdGEsIHNlcmllc0tleXMsIGRheUtleSwgZGF5S2V5Rm9ybWF0LCBkYXlLZXlPcmRlckFzYykgXG4gICAgLy8gICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiBkYXRhO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChkYXlLZXkgPT0gdW5kZWZpbmVkIHx8IGRheUtleSA9PSBudWxsKSB7XG4gICAgLy8gICAgICAgICBkYXlLZXkgPSAncmVjb3JkRGF0ZSc7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgaWYgKHNlcmllc0tleXMgPT0gdW5kZWZpbmVkIHx8IHNlcmllc0tleXMgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgc2VyaWVzS2V5cyA9ICdzZXJpZXMnO0NvbW1vblNlcnZpY2VcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBpZiAoZGF5S2V5Rm9ybWF0ID09IHVuZGVmaW5lZCB8fCBkYXlLZXlGb3JtYXQgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgZGF5S2V5Rm9ybWF0ID0gJ1lZWVktTU0tREQnO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChkYXlLZXlPcmRlckFzYyA9PSB1bmRlZmluZWQgfHwgZGF5S2V5T3JkZXJBc2MgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgZGF5S2V5T3JkZXJBc2MgPSB0cnVlO1xuICAgIC8vICAgICB9XG5cbiAgICAvLyAgICAgaWYgKGRhdGFbJ3JldHVybkNvZGUnXSA9PSAyMDApIHtcbiAgICAvLyAgICAgICAgIGxldCBzZXJpZXNfY29udGFpbmVyID0ge307XG4gICAgLy8gICAgICAgICBsZXQgcGF5bG9hZEFycmF5ID0gW107XG4gICAgLy8gICAgICAgICBpZiAoZGF5S2V5T3JkZXJBc2MpIHtcbiAgICAvLyAgICAgICAgICAgICBkYXRhWydQYXlsb2FkJ10ucmV2ZXJzZSgpO1xuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICAkLmVhY2goZGF0YVsnUGF5bG9hZCddLCBmdW5jdGlvbiAoaW5kZXgsIHJlY29yZCkge1xuICAgIC8vICAgICAgICAgICAgIGxldCBzID0gJyc7XG4gICAgLy8gICAgICAgICAgICAgbGV0IHNhID0gc2VyaWVzS2V5cy5zcGxpdCgnfCcpO1xuICAgIC8vICAgICAgICAgICAgICQuZWFjaChzYSwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgcyArPSByZWNvcmRbdl07XG4gICAgLy8gICAgICAgICAgICAgICAgIHMgKz0gJyMnO1xuICAgIC8vICAgICAgICAgICAgIH0pO1xuICAgIC8vICAgICAgICAgICAgIGxldCBrZXk7XG4gICAgLy8gICAgICAgICAgICAgaWYgKHMgaW4gc2VyaWVzX2NvbnRhaW5lcikge1xuICAgIC8vICAgICAgICAgICAgICAgICBrZXkgPSBzZXJpZXNfY29udGFpbmVyW3NdO1xuICAgIC8vICAgICAgICAgICAgICAgICBrZXkgPSBtb21lbnQoa2V5LCBkYXlLZXlGb3JtYXQpLnN1YnRyYWN0KDEsICdkYXlzJykuZm9ybWF0KGRheUtleUZvcm1hdCk7XG4gICAgLy8gICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgICAgICAgICAga2V5ID0gbW9tZW50KCkuZm9ybWF0KGRheUtleUZvcm1hdCk7XG4gICAgLy8gICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgIHNlcmllc19jb250YWluZXJbc10gPSBrZXk7XG4gICAgLy8gICAgICAgICAgICAgcmVjb3JkW2RheUtleV0gPSBrZXk7XG4gICAgLy8gICAgICAgICAgICAgcGF5bG9hZEFycmF5LnB1c2gocmVjb3JkKTtcbiAgICAvLyAgICAgICAgIH0pO1xuICAgIC8vICAgICAgICAgaWYgKGRheUtleU9yZGVyQXNjKSB7XG4gICAgLy8gICAgICAgICAgICAgcGF5bG9hZEFycmF5LnJldmVyc2UoKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIGRhdGFbJ1BheWxvYWQnXSA9IHBheWxvYWRBcnJheTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyB9XG5cbiAgICBpc0VtcHR5T3JOdWxsT3JVbmRlZmluZWRGb3JOYW4oZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0YWJzb2x1dGVWYWwoZGF0YSkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuTnVsbFZhbHVlSWZFbXB0eU9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjdXN0b21WYWx1ZVNvcnRlcih2YWx1ZTEsIHZhbHVlMik6IGFueSB7XG5cbiAgICAvLyAgICAgLy8gSGFuZGxpbmcgbnVsbCB2YWx1ZXNcbiAgICAvLyAgICAgaWYgKCF2YWx1ZTEgJiYgdmFsdWUyKSB7IHJldHVybiAtMTsgfVxuICAgIC8vICAgICBpZiAoIXZhbHVlMSAmJiAhdmFsdWUyKSB7IHJldHVybiAwOyB9XG4gICAgLy8gICAgIGlmICh2YWx1ZTEgJiYgIXZhbHVlMikgeyByZXR1cm4gMTsgfVxuXG4gICAgLy8gICAgIC8vIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBsb2NhbGVcbiAgICAvLyAgICAgbGV0IG8xLCBvMjtcbiAgICAvLyAgICAgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgTUInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgR0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgVEInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgS0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgQnl0ZScsICcnKTtcbiAgICAvLyAgICAgICAgIG8xID0gdmFsdWUxLnJlcGxhY2UoJyBCeXRlcycsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBNQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBHQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBUQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBLQicsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBCeXRlJywgJycpO1xuICAgIC8vICAgICAgICAgbzIgPSB2YWx1ZTIucmVwbGFjZSgnIEJ5dGVzJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSBvMS5yZXBsYWNlQWxsKCcsJywgJycpO1xuICAgIC8vICAgICAgICAgbzIgPSBvMi5yZXBsYWNlQWxsKCcsJywgJycpO1xuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTE7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMjtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBjb25zdCB2MSA9IHBhcnNlRmxvYXQobzEpO1xuICAgIC8vICAgICBjb25zdCB2MiA9IHBhcnNlRmxvYXQobzIpO1xuICAgIC8vICAgICAvLyByZXR1cm4gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKTtcbiAgICAvLyAgICAgaWYgKHYxID4gdjIpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiAxO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGVsc2UgaWYgKHYxIDwgdjIpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiAtMTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gMDtcbiAgICAvLyB9XG5cbiAgICBjdXN0b21WYWx1ZVNvcnRlcih2YWx1ZTEsIHZhbHVlMik6IGFueSB7XG5cbiAgICAgICAgLy8gSGFuZGxpbmcgbnVsbCB2YWx1ZXNcbiAgICAgICAgaWYgKCF2YWx1ZTEgJiYgdmFsdWUyKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZTEgJiYgIXZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlMSAmJiAhdmFsdWUyKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIGVxdWl2YWxlbnQgaW4gdGhlIGN1cnJlbnQgbG9jYWxlXG5cbiAgICAgICAgY29uc3QgdjEgPSBjb252ZXJ0U3RyaW5nKHZhbHVlMSk7XG4gICAgICAgIGNvbnN0IHYyID0gY29udmVydFN0cmluZyh2YWx1ZTIpO1xuICAgICAgICAvLyByZXR1cm4gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKTtcbiAgICAgICAgaWYgKHYxID4gdjIpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2UgaWYgKHYxIDwgdjIpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjb252ZXJ0U3RyaW5nKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbGV0IG91dDogYW55O1xuICAgICAgICAgICAgICAgIG91dCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiTUJcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJHQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIlRCXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlQWxsKFwiLFwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGN1c3RvbVZhbHVlU29ydGVyRm9yQmFyKHZhbHVlT25lLCB2YWx1ZVR3bykge1xuXG4gICAgICAgIGNvbnN0IHBhcnNlcjEgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIGNvbnN0IHBhcnNlcjIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIGNvbnN0IGRvY09uZSA9IHBhcnNlcjEucGFyc2VGcm9tU3RyaW5nKHZhbHVlT25lLCAndGV4dC9odG1sJyk7XG4gICAgICAgIGNvbnN0IGRvY1R3byA9IHBhcnNlcjIucGFyc2VGcm9tU3RyaW5nKHZhbHVlVHdvLCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVFbGVtZW50ID0gZG9jT25lLnF1ZXJ5U2VsZWN0b3IoJy5iYXInKTtcbiAgICAgICAgY29uc3QgbnVtYmVyVGV4dE9uZSA9IE51bWJlcih2YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLnJlcGxhY2UoLywvZywgJycpKTtcbiAgICAgICAgY29uc3QgdmFsdWVFbGVtZW50VHdvID0gZG9jVHdvLnF1ZXJ5U2VsZWN0b3IoJy5iYXInKTtcbiAgICAgICAgY29uc3QgbnVtYmVyVGV4dFR3byA9IE51bWJlcih2YWx1ZUVsZW1lbnRUd28udGV4dENvbnRlbnQudHJpbSgpLnJlcGxhY2UoLywvZywgJycpKTtcblxuICAgICAgICBpZiAoIW51bWJlclRleHRPbmUgJiYgbnVtYmVyVGV4dFR3bykge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbnVtYmVyVGV4dE9uZSAmJiAhbnVtYmVyVGV4dFR3bykge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlclRleHRPbmUgJiYgIW51bWJlclRleHRUd28pIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBsb2NhbGVcblxuICAgICAgICBjb25zdCB2MSA9IGNvbnZlcnRTdHJpbmcobnVtYmVyVGV4dE9uZSk7XG4gICAgICAgIGNvbnN0IHYyID0gY29udmVydFN0cmluZyhudW1iZXJUZXh0VHdvKTtcbiAgICAgICAgLy8gcmV0dXJuIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgICAgIGlmICh2MSA+IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmICh2MSA8IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29udmVydFN0cmluZyh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGxldCBvdXQ6IGFueTtcbiAgICAgICAgICAgICAgICBvdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIk1CXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiR0JcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJUQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZUFsbChcIixcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQob3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcblxuICAgIH1cblxuICAgIC8vIGZvcm1hdFRvQnl0ZSh2YWx1ZSwgc2l6ZSkge1xuICAgIC8vICAgICBsZXQgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgLy8gICAgIGxldCBpbmRleCA9IHNpemVzLmZpbmRJbmRleCh4ID0+IHggPT09IHNpemUpO1xuXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGluZGV4KTtcbiAgICAvLyB9XG5cbiAgICBvbkV4Y2VsRXhwb3J0aW5nKGUsIGV4Y2VsX2RhdGEsIHJlcG9ydF9uYW1lKSB7XG4gICAgICAgIHRoaXMuSlNPTlRvQ1NWQ29udmVydG9yKGV4Y2VsX2RhdGEsIHJlcG9ydF9uYW1lLCB0cnVlKTtcbiAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJlbW92ZUh0bWxDb250ZW50RnJvbURhdGEoY29sdW1ucywgcm93cykge1xuICAgICAgICAvLyAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xuXG4gICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgICAgICBsZXQgcm93VmFsdWVzID0gcm93LnZhbHVlcztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd1ZhbHVlc1tpXSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd1ZhbHVlc1tpXS50b1N0cmluZygpLmluY2x1ZGVzKFwiPC9pPlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd1ZhbHVlc1tpXSA9IHJvd1ZhbHVlc1tpXS5yZXBsYWNlKC9bXjAtOVxcLlxcLF0vZywgXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjdXN0b21pemVFeGNlbENlbGwob3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSAmJiB0eXBlb2Ygb3B0aW9ucy52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgbnVtZXJpY1N0cmluZyA9IG9wdGlvbnMudmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKE51bWJlcihudW1lcmljU3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnZhbHVlID0gTnVtYmVyKG51bWVyaWNTdHJpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlSHRtbEZvckpvYnN1bW1hcnlDb250ZW50RnJvbURhdGEoY29sdW1ucywgcm93cykge1xuICAgICAgICAvLyAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xuICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgbGV0IHJvd1ZhbHVlcyA9IHJvdy52YWx1ZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd1ZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0udG9TdHJpbmcoKS5pbmNsdWRlcyhcIjwvc3Bhbj5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dWYWx1ZXNbaV0gPSByb3dWYWx1ZXNbaV0ucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXREYXlzQmV0d2VlbkRhdGVzKHN0YXJ0LCBlbmQsIGRheU5hbWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBsZXQgZGF5cyA9IHsgc3VuOiAwLCBtb246IDEsIHR1ZTogMiwgd2VkOiAzLCB0aHU6IDQsIGZyaTogNSwgc2F0OiA2IH07XG4gICAgICAgIGxldCBkYXkgPSBkYXlzW2RheU5hbWUudG9Mb3dlckNhc2UoKS5zdWJzdHIoMCwgMyldO1xuICAgICAgICAvLyBDb3B5IHN0YXJ0IGRhdGVcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBuZXcgRGF0ZShzdGFydCk7XG4gICAgICAgIC8vIFNoaWZ0IHRvIG5leHQgb2YgcmVxdWlyZWQgZGF5c1xuICAgICAgICBjdXJyZW50LnNldERhdGUoY3VycmVudC5nZXREYXRlKCkgKyAoKGRheSAtIGN1cnJlbnQuZ2V0RGF5KCkgKyA3KSAlIDcpKTtcbiAgICAgICAgLy8gV2hpbGUgbGVzcyB0aGFuIGVuZCBkYXRlLCBhZGQgZGF0ZXMgdG8gcmVzdWx0IGFycmF5XG4gICAgICAgIHdoaWxlIChjdXJyZW50IDwgbmV3IERhdGUoZW5kKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGUoK2N1cnJlbnQpKTtcbiAgICAgICAgICAgIGN1cnJlbnQuc2V0RGF0ZShjdXJyZW50LmdldERhdGUoKSArIDcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0QWxsU2V2aWNlQXBpSnNvbihhcGlKc29uT2JqZWN0KSB7XG4gICAgICAgIGxldCBzZXJ2aWNlX2FwaTogYW55O1xuICAgICAgICBzZXJ2aWNlX2FwaSA9IHtcbiAgICAgICAgICAgIHJlcXVlc3RJZDogYXBpSnNvbk9iamVjdC5yZXF1ZXN0SWQsXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb25Hcm91cDoge1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3I6IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJncmVhdGVyVGhhbk9yRXF1YWxzVG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hDbHo6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29tLmdhbW1hLmNvbXBvbmVudHMuYXBpYXV0b21hdGlvbi5lbnJpY2htZW50LkFwaUdlbmVyaWNFbnJpY2htZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoTWV0aG9kOiBcImNvbnZlcnROYXJyb3dTdHJpbmdUb1Nob3J0U3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiZW5kRGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJsZXNzVGhhbk9yRXF1YWxzVG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LmVuZERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoQ2x6OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbS5nYW1tYS5jb21wb25lbnRzLmFwaWF1dG9tYXRpb24uZW5yaWNobWVudC5BcGlHZW5lcmljRW5yaWNobWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaE1ldGhvZDogXCJjb252ZXJ0TmFycm93U3RyaW5nVG9TaG9ydFN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYXBpSnNvbk9iamVjdC5zcnZUeXBlICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LnNydlR5cGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJzcnZUeXBlXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJzcnZfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBhcGlKc29uT2JqZWN0LnNydlR5cGVPcGVyYXRvcixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnNydlR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBpSnNvbk9iamVjdC5yZWNvcmRUeXBlICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LnJlY29yZFR5cGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgXCJzb3VyY2VOYW1lXCI6IFwicmVjb3JkVHlwZVwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0TmFtZVwiOiBcInJlY29yZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJvcGVyYXRvclwiOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwidmFsdWVcIjogYXBpSnNvbk9iamVjdC5yZWNvcmRUeXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnNvdXJjZVZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5zb3VyY2VWYWx1ZSAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJzb3VyY2VcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInNvdXJjZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3Quc291cmNlVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmluVHJ1bmtWYWx1ZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuaW5UcnVua1ZhbHVlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImluVHJ1bmtcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImluX3RydW5rXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5pblRydW5rVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm91dFRydW5rVmFsdWUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm91dFRydW5rVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwib3V0VHJ1bmtcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcIm91dF90cnVua1wiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3Qub3V0VHJ1bmtWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnRUeXBlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ldmVudFR5cGUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiZXZlbnRUeXBlS2V5XCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJldmVudF90eXBlXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IGFwaUpzb25PYmplY3QuZXZlbnRUeXBlLmxlbmd0aCA+IDEgPyBcImluXCIgOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuZXZlbnRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ldmVudCAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnQgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIFwic291cmNlTmFtZVwiOiBcImV2ZW50X3R5cGVcIixcbiAgICAgICAgICAgICAgICBcInRhcmdldE5hbWVcIjogXCJldmVudF90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJvcGVyYXRvclwiOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwidmFsdWVcIjogYXBpSnNvbk9iamVjdC5ldmVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmRpcmVjdGlvbiAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZGlyZWN0aW9uICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImRpcmVjdGlvblwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiZGlyZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5kaXJlY3Rpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBpSnNvbk9iamVjdC5jb3VudHJ5ICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LmNvdW50cnkgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJjb3VudHJ5XCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJjb3VudHJ5XCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5jb3VudHJ5LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3QuYXBuICE9IHVuZGVmaW5lZCB8fCBhcGlKc29uT2JqZWN0LmFwbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImFwblwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiYXBuXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5hcG4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm53Q2FsbFR5cGUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0Lm53Q2FsbFR5cGUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwibndDYWxsVHlwZVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwibndfY2FsbF90eXBlXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5ud0NhbGxUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5yYXRpbmdHcm91cCAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QucmF0aW5nR3JvdXAgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwicmF0aW5nR3JvdXBcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInJhdGluZ19ncm91cFwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QucmF0aW5nR3JvdXAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnRlcm1pbmF0aW9uVmFsdWUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnRlcm1pbmF0aW9uVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwidGVybWluYXRpb25Db2RlXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJ0ZXJtX2NvZGVcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJub3RlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnRlcm1pbmF0aW9uVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmNlbGxJZFZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5jZWxsSWRWYWx1ZSAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJjZWxsSWRcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImNlbGxfaWRcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJub3RlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LmNlbGxJZFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VydmljZV9hcGk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzYW9tZSByZW5kb21lIG51bWJlclxuICAgIHByaW1lcnlSZW5kb21lSWQobGVuZ3RoKSB7XG4gICAgICAgIGxldCBtYXNrID0gXCJcIjtcbiAgICAgICAgbWFzayArPSBcIjAxMjM0NTY3ODlcIjtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW5ndGg7IGkgPiAwOyAtLWkpXG4gICAgICAgICAgICByZXN1bHQgKz0gbWFza1tNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAobWFzay5sZW5ndGggLSAxKSldO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG4gICAgLy8gZm9yIGNoYXJ0IHRvb2x0aXBcbiAgICBjaGFydFRvb2x0aXAoYTogYW55LCBiOiBhbnksIGM6IGFueSwgZDogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuICc8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MzAgYm9yZGVyPTAgIHN0eWxlPVxcJ2ZvbnQtc2l6ZTogMTNweFxcJz4nICtcbiAgICAgICAgICAgICc8dHI+PHRkIHN0eWxlPVxcJ3RleHQtYWxpZ246IGxlZnQ7IGNvbG9yOiB3aGl0ZVxcJz4gJyArIGEgKyAnOicgKyBiICsgJzwvdGQ+PC90cj4nICtcbiAgICAgICAgICAgICc8dHI+PHRkIHN0eWxlPVxcJ3RleHQtYWxpZ246IGxlZnQ7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZy10b3A6IDVweFxcJz4gJyArIGMgKyAnOicgKyBkICsgJzwvdGQ+PC90cj4nICtcbiAgICAgICAgICAgICc8L3RhYmxlPic7XG4gICAgfVxuXG5cbiAgICBjb252ZXJ0VG9UaXRsZUNhc2UodmFsdWUpIHtcbiAgICAgICAgY29uc3Qgd29yZHMgPSB2YWx1ZS5zcGxpdCgvKD89W0EtWl0pfF8vKTtcbiAgICAgICAgY29uc3QgY2FwaXRhbGl6ZWRXb3JkcyA9IHdvcmRzLm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FwaXRhbGl6ZWRXb3Jkcy5qb2luKCcgJyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmb3JtYXRLZXlWYWx1ZVBhaXJzKGtleXMsIHZhbHVlcykge1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignS2V5cyBhbmQgdmFsdWVzIGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRQYWlycyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5jb252ZXJ0VG9UaXRsZUNhc2Uoa2V5c1tpXSk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICAgICAgICAgIGZvcm1hdHRlZFBhaXJzLnB1c2goYCR7a2V5fSA9ICR7dmFsdWV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXR0ZWRQYWlycy5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZXNCeUtleShvYmosIGtleXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChvYmpba2V5XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtSGVhZGVyQXNLZXlOYW1lKG1haW5vYmo6IGFueSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG1haW5vYmopLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFGaWVsZDoga2V5LFxuICAgICAgICAgICAgICAgIGNhcHRpb246IGtleVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9ybWF0RGVjaW1hbFZhbHVlc0ZvckNkckRhdGFUYWJsZShkYXRhU291cmNlKSB7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdJdGVtID0ge307XG5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBpdGVtW2tleV07XG4gICAgICAgICAgICAgICAgbGV0IG51bVZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4obnVtVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1WYWx1ZSAlIDEgIT09IDApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3SXRlbVtrZXldID0gdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYzKG51bVZhbHVlLCAyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3SXRlbVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdJdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVNhbXBsZURhdGEoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZywgZmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICAgICAgbGV0IGRhdGFzZXQgPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnREYXRlID0gbW9tZW50KHN0YXJ0RGF0ZSk7XG4gICAgICAgIGNvbnN0IGVuZERhdGVNb21lbnQgPSBtb21lbnQoZW5kRGF0ZSk7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnREYXRlIDw9IGVuZERhdGVNb21lbnQpIHtcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSB7fTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQgPT09ICdyZWNvcmREYXRlJykge1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRbZmllbGRdID0gY3VycmVudERhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkW2ZpZWxkXSA9IHRoaXMuZ2V0UmVuZG9tTnVtYmVyV2l0aGRlY2ltYWxzKDMsIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YXNldC5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlLmFkZCgxLCAnZGF5cycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFzZXQ7XG4gICAgfVxuICAgIGdldFJlbmRvbU51bWJlcldpdGhkZWNpbWFscyhsZW5ndGgsIGV4cCkge1xuICAgICAgICBsZXQgbWFzayA9IFwiXCI7XG4gICAgICAgIG1hc2sgKz0gXCIwMTIzNDU2Nzg5XCI7XG4gICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKVxuICAgICAgICAgICAgcmVzdWx0ICs9IG1hc2tbTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1hc2subGVuZ3RoIC0gMSkpXTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNChyZXN1bHQsIGV4cCk7XG4gICAgfVxuXG4gICAgZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbnVtZXJpY1RpbWVzdGFtcCA9IHBhcnNlSW50KHRpbWVzdGFtcCwgMTApO1xuICAgICAgICByZXR1cm4gbW9tZW50KG51bWVyaWNUaW1lc3RhbXApLmZvcm1hdCgnZGRkZCwgREQgTU1NTSBZWVlZIEhIOm1tOnNzLlNTUyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZm9ybWF0RHVyYXRpb25Gcm9tTWlsaXNlY29uZChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgbGV0IHRvdGFsU2Vjb25kcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgICAgIGxldCBzZWNvbmRzID0gdG90YWxTZWNvbmRzICUgNjA7XG4gICAgICAgIGxldCB0b3RhbE1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsU2Vjb25kcyAvIDYwKTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSB0b3RhbE1pbnV0ZXMgJSA2MDtcbiAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcih0b3RhbE1pbnV0ZXMgLyA2MCk7XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIGlmIChob3VycyA+IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2hvdXJzfSBob3VyJHtob3VycyA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWludXRlcyA+IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke21pbnV0ZXN9IG1pbnV0ZSR7bWludXRlcyA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2Vjb25kcyA+IDAgfHwgcmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7c2Vjb25kc30gc2Vjb25kJHtzZWNvbmRzID4gMSA/ICdzJyA6ICcnfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gICAgfVxuXG5cbiAgICByZW1vdmVEdXBsaWNhdGVzKGpvYkFycmF5LCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gICAgICAgIHJldHVybiBqb2JBcnJheS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkdXBsaWNhdGUgPSBzZWVuLmhhcyhpdGVtW2NvbnRleHRdKTtcbiAgICAgICAgICAgIHNlZW4uYWRkKGl0ZW1bY29udGV4dF0pO1xuICAgICAgICAgICAgcmV0dXJuICFkdXBsaWNhdGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEtleSA9IChvYmopID0+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIHJldHVybiBrZXlzLmZpbmQoa2V5ID0+IGtleSAhPT0gXCJldmVudF9kYXRlXCIpO1xuICAgIH07XG5cbiAgICBjb252ZXJ0U3RyaW5nKGlucHV0KSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBpbnB1dFxuICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiKFthLXpdKS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2gudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8oW0EtWl17Mix9KS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuIGZvcm1hdE51bWJlcldpdGhEZWNpbWFsUGxhY2VzKHZhbHVlLG51bWJlck9mRGlnaXRzOm51bWJlcikge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IG51bWVyaWNWYWx1ZS50b0ZpeGVkKG51bWJlck9mRGlnaXRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcIi1cIikge1xuICAgICAgICAgICAgICAgIHZhbCA9IFwiLVwiO1xuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBhcnRzID0gdmFsLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuICAgICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCIuXCIpO1xuXG4gICAgfVxuXG4gICAgVGhvdXNhbmRTZXBhcmF0b3JXaXRoVHdvRGVjaW1hbHModmFsdWUpIHtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE51bWJlcldpdGhEZWNpbWFsUGxhY2VzKHZhbHVlLDIpO1xuXG4gICAgfVxuXG5cbiAgICAvLyB0aG91c2VuZCBzZXBhcmV0b3JcbiAgICBUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSkge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKS50b1N0cmluZygpLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG5cblxuXG59XG4iXX0=