@firestitch/report 18.10.2 → 18.11.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 (81) hide show
  1. package/app/reports/components/report-canvas/report-canvas.component.d.ts +0 -1
  2. package/app/reports/data/report.data.d.ts +8 -12
  3. package/app/reports/export/report-export-collector.service.d.ts +0 -1
  4. package/app/reports/export/report-filter-lines.d.ts +0 -2
  5. package/app/reports/interfaces/report-chat-viewer-state.interface.d.ts +0 -2
  6. package/app/reports/interfaces/report-export-snapshot.interface.d.ts +2 -3
  7. package/app/reports/interfaces/report-saved-filter-changes.interface.d.ts +4 -0
  8. package/app/reports/interfaces/report-saved-filter.interface.d.ts +6 -0
  9. package/app/reports/interfaces/{report-view-config.interface.d.ts → report-state-snapshot.interface.d.ts} +1 -2
  10. package/app/reports/interfaces/report-viewer-feature.type.d.ts +1 -1
  11. package/app/reports/report-chat-viewer-state.d.ts +3 -3
  12. package/app/reports/report-saved-filters.d.ts +3 -0
  13. package/app/reports/report-state.d.ts +15 -0
  14. package/app/reports/services/report-filter-state.service.d.ts +9 -25
  15. package/app/reports/tile-data-state.d.ts +5 -5
  16. package/app/reports/views/report/fs-ai-report.component.d.ts +12 -5
  17. package/esm2022/app/reports/canvas-landing-page.mjs +3 -3
  18. package/esm2022/app/reports/components/component-list/component-list.component.mjs +3 -3
  19. package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +8 -12
  20. package/esm2022/app/reports/components/report-component/report-component.component.mjs +25 -30
  21. package/esm2022/app/reports/data/report.data.mjs +24 -41
  22. package/esm2022/app/reports/export/report-export-collector.service.mjs +11 -18
  23. package/esm2022/app/reports/export/report-filter-lines.mjs +5 -15
  24. package/esm2022/app/reports/filter-settings-rules.mjs +2 -2
  25. package/esm2022/app/reports/interfaces/canvas-landing-input.interface.mjs +1 -1
  26. package/esm2022/app/reports/interfaces/report-chat-viewer-state.interface.mjs +1 -1
  27. package/esm2022/app/reports/interfaces/report-export-snapshot.interface.mjs +1 -1
  28. package/esm2022/app/reports/interfaces/report-saved-filter-changes.interface.mjs +2 -0
  29. package/esm2022/app/reports/interfaces/report-saved-filter.interface.mjs +2 -0
  30. package/esm2022/app/reports/interfaces/report-state-snapshot.interface.mjs +2 -0
  31. package/esm2022/app/reports/interfaces/report-temporary-state.interface.mjs +1 -1
  32. package/esm2022/app/reports/interfaces/report-tile-state.interface.mjs +1 -1
  33. package/esm2022/app/reports/interfaces/report-viewer-feature.type.mjs +1 -1
  34. package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
  35. package/esm2022/app/reports/mark-click.mjs +2 -2
  36. package/esm2022/app/reports/report-chat-viewer-state.mjs +3 -3
  37. package/esm2022/app/reports/report-date-presets.mjs +2 -2
  38. package/esm2022/app/reports/report-saved-filters.mjs +92 -0
  39. package/esm2022/app/reports/report-state.mjs +169 -0
  40. package/esm2022/app/reports/report-viewer-features.mjs +2 -4
  41. package/esm2022/app/reports/services/report-filter-state.service.mjs +83 -310
  42. package/esm2022/app/reports/tile-data-state.mjs +4 -4
  43. package/esm2022/app/reports/tile-loads.mjs +5 -6
  44. package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +192 -102
  45. package/esm2022/app/reports/views/report/report.component.mjs +14 -16
  46. package/esm2022/public_api.mjs +4 -8
  47. package/fesm2022/{firestitch-report-echarts-CyHkFToO.mjs → firestitch-report-echarts-B0RWUjR8.mjs} +2 -2
  48. package/fesm2022/{firestitch-report-echarts-CyHkFToO.mjs.map → firestitch-report-echarts-B0RWUjR8.mjs.map} +1 -1
  49. package/fesm2022/{firestitch-report-firestitch-report-DftB7M1o.mjs → firestitch-report-firestitch-report-CJW0lLdW.mjs} +480 -1450
  50. package/fesm2022/firestitch-report-firestitch-report-CJW0lLdW.mjs.map +1 -0
  51. package/fesm2022/firestitch-report.mjs +1 -1
  52. package/package.json +1 -1
  53. package/public_api.d.ts +3 -7
  54. package/app/reports/components/report-view-picker/report-view-picker.component.d.ts +0 -21
  55. package/app/reports/dialogs/report-view/report-view-dialog.component.d.ts +0 -13
  56. package/app/reports/interfaces/report-view-create.interface.d.ts +0 -7
  57. package/app/reports/interfaces/report-view-deleted.interface.d.ts +0 -4
  58. package/app/reports/interfaces/report-view-dialog-data.interface.d.ts +0 -7
  59. package/app/reports/interfaces/report-view-dropped.interface.d.ts +0 -5
  60. package/app/reports/interfaces/report-view-menu-item.interface.d.ts +0 -10
  61. package/app/reports/interfaces/report-view-summary.interface.d.ts +0 -11
  62. package/app/reports/interfaces/report-view.interface.d.ts +0 -7
  63. package/app/reports/interfaces/report-views.interface.d.ts +0 -7
  64. package/app/reports/report-view-config.d.ts +0 -34
  65. package/app/reports/report-view-menu.d.ts +0 -15
  66. package/app/reports/services/report-view.service.d.ts +0 -39
  67. package/esm2022/app/reports/components/report-view-picker/report-view-picker.component.mjs +0 -115
  68. package/esm2022/app/reports/dialogs/report-view/report-view-dialog.component.mjs +0 -52
  69. package/esm2022/app/reports/interfaces/report-view-config.interface.mjs +0 -2
  70. package/esm2022/app/reports/interfaces/report-view-create.interface.mjs +0 -2
  71. package/esm2022/app/reports/interfaces/report-view-deleted.interface.mjs +0 -2
  72. package/esm2022/app/reports/interfaces/report-view-dialog-data.interface.mjs +0 -2
  73. package/esm2022/app/reports/interfaces/report-view-dropped.interface.mjs +0 -2
  74. package/esm2022/app/reports/interfaces/report-view-menu-item.interface.mjs +0 -2
  75. package/esm2022/app/reports/interfaces/report-view-summary.interface.mjs +0 -2
  76. package/esm2022/app/reports/interfaces/report-view.interface.mjs +0 -2
  77. package/esm2022/app/reports/interfaces/report-views.interface.mjs +0 -2
  78. package/esm2022/app/reports/report-view-config.mjs +0 -587
  79. package/esm2022/app/reports/report-view-menu.mjs +0 -119
  80. package/esm2022/app/reports/services/report-view.service.mjs +0 -218
  81. package/fesm2022/firestitch-report-firestitch-report-DftB7M1o.mjs.map +0 -1
@@ -27,4 +27,4 @@ export var ReportState;
27
27
  ReportState["Active"] = "active";
28
28
  ReportState["Deleted"] = "deleted";
29
29
  })(ReportState || (ReportState = {}));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQTBTbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFrdEJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtdWxhIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm11bGEuZW51bSc7XG5cbmltcG9ydCB7IENvbXBvbmVudERhdGFBcHBsaWVkIH0gZnJvbSAnLi9jb21wb25lbnQtZGF0YS1hcHBsaWVkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnREYXRhRHJpbGwgfSBmcm9tICcuL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL3JlcG9ydC1kcmlsbC1zdGVwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRWaWV3ZXJGZWF0dXJlIH0gZnJvbSAnLi9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZSc7XG5cbi8vIEEgQkNQIDQ3IGxhbmd1YWdlIHRhZyBuYW1pbmcgaG93IG51bWJlcnMgYW5kIGRhdGVzIGFyZSB3cml0dGVuLCBlLmcuICdmci1DQScuXG4vLyBUaGUgc2V0IGlzIG9wZW4gKHRoZSBzZXJ2ZXIncyBwcm92aWRlciBkZWNpZGVzIHdoaWNoIGl0IG9mZmVycyksIHNvIHRoaXMgaXMgYVxuLy8gbmFtZWQgYWxpYXMgcmF0aGVyIHRoYW4gYSB1bmlvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydExvY2FsZVRhZyA9IHN0cmluZztcblxuLy8gQW4gSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgZS5nLiAnQ0FEJy4gT3BlbiBmb3IgdGhlIHNhbWUgcmVhc29uLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q3VycmVuY3lDb2RlID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgSUFOQSB6b25lIChlLmcuIEFtZXJpY2EvTmV3X1lvcmspLiBudWxsID0gdGhlXG4gIC8vIHJlcG9ydCBmb2xsb3dzIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQgcmVwb3J0aW5nIHpvbmUuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgem9uZSBldmVyeSBkYXRlIGZpbHRlciwgdGltZSBidWNrZXQgYW5kIGRhdGUgY2VsbCBvZiB0aGlzIHJlcG9ydCB1c2VzLlxuICAvLyBSZXNvbHZlZCBzZXJ2ZXItc2lkZTsgdGhlIHNhbWUgZm9yIGV2ZXJ5IHZpZXdlciwgZXhwb3J0IGFuZCB0aGUgYXNzaXN0YW50LlxuICAvLyBPcHRpb25hbCBvbmx5IGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyByZXNvbHZlUmVwb3J0VGltZXpvbmUoKSB0aGVuXG4gIC8vIGZhbGxzIGJhY2sgdG8gdGhlIHJlcG9ydCdzIG93biBgdGltZXpvbmVgLCB0aGVuIHRoZSBicm93c2VyJ3Mgem9uZS4gUmVzb2x2ZVxuICAvLyB0aGUgem9uZSBmb3IgcmVuZGVyaW5nIHRocm91Z2ggcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgKGZvcm1hdC50cyk7IHJlYWQgdGhlXG4gIC8vIGZpZWxkIGRpcmVjdGx5IG9ubHkgdG8gY2hlY2sgd2hldGhlciB0aGUgc2VydmVyIHNlbnQgaXQuXG4gIGVmZmVjdGl2ZVRpbWV6b25lPzogc3RyaW5nO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBsb2NhbGUuIG51bGwgPSB0aGUgcmVwb3J0IGZvbGxvd3MgdGhlIGRlZmF1bHQuXG4gIGxvY2FsZT86IFJlcG9ydExvY2FsZVRhZyB8IG51bGw7XG4gIC8vIFRoZSBsb2NhbGUgZXZlcnkgbnVtYmVyIGFuZCBkYXRlIG9mIHRoaXMgcmVwb3J0IGlzIHdyaXR0ZW4gaW4sIHJlc29sdmVkXG4gIC8vIHNlcnZlci1zaWRlICh0aGUgcmVwb3J0J3Mgb3duLCBlbHNlIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQsIGVsc2VcbiAgLy8gZW4tVVMpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcmVwb3J0cyB0aGVuIHJlYWQgZW4tVVMuIFJlc29sdmUgaXRcbiAgLy8gZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVGb3JtYXRDb250ZXh0KCkgKGZvcm1hdC50cyksIG5ldmVyIGRpcmVjdGx5LlxuICBlZmZlY3RpdmVMb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIGN1cnJlbmN5LiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBjdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW5jeSBtb25leSBhbW91bnRzIGFyZSBsYWJlbGVkIGluLCByZXNvbHZlZCBsaWtlIGVmZmVjdGl2ZUxvY2FsZVxuICAvLyAoZmFsbGluZyBiYWNrIHRvIHRoZSBsb2NhbGUncyBvd24gY3VycmVuY3ksIHRoZW4gVVNEKS4gQSBsYWJlbCBvbmx5OlxuICAvLyBhbW91bnRzIGFyZSBuZXZlciBjb252ZXJ0ZWQuXG4gIGVmZmVjdGl2ZUN1cnJlbmN5PzogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBIb3cgdGhlIHNlcnZlciBzZW5kcyBhIHBlcmNlbnQgbWVhc3VyZTogJ3JhdGlvJyA9IGEgMC0xIHJhdGlvICgwLjM4NSByZWFkc1xuICAvLyAzOC41JSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aG9zZSBwZXJjZW50IHZhbHVlcyBhcmUgYWxyZWFkeSB4MTAwXG4gIC8vICgzOC41IHJlYWRzIDM4LjUlKS5cbiAgcGVyY2VudEZvcm1hdD86ICdyYXRpbyc7XG4gIC8vIFJlcG9ydC1sZXZlbCBjb25maWc6IHR5cG9ncmFwaGljIHN0eWxlcywgZXRjLiAoY2FtZWxDYXNlIEpTT04gY29sdW1uKS5cbiAgY29uZmlnOiBSZXBvcnRDb25maWc7XG4gIC8vIFRoZSBwYWdlIGluIElOQ0hFUyAodGhlIHJlcG9ydCdzIG5hdGl2ZSB1bml0IOKAlCBQREZzIGFuZCBQb3dlclBvaW50IGFyZVxuICAvLyBpbmNoLWJhc2VkLCBzbyBleHBvcnRzIGFyZSBkaW1lbnNpb25hbGx5IGV4YWN0KS4gT3JpZW50YXRpb24gaXMgbm90IGEgZmllbGRcbiAgLy8gb2YgaXRzIG93bjogYSBwYWdlIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCBJUyBsYW5kc2NhcGUuXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VzOiBSZXBvcnRQYWdlW107XG4gIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlcjogdGhlIHJlcG9ydCdzIG1hc3RlciBwYWdlLCB3aG9zZSBjb21wb25lbnRzIGRyYXdcbiAgLy8gdW5kZXIgZXZlcnkgcGFnZSB0aGF0IGRvZXMgbm90IGhpZGUgdGhlbSAoUG93ZXJQb2ludCdzIHNsaWRlIG1hc3RlcikuIE51bGxcbiAgLy8gdW50aWwgYW55dGhpbmcgaGFzIGJlZW4gcGxhY2VkIGluIHRoZW0uXG4gIG1hc3RlcjogUmVwb3J0TWFzdGVyIHwgbnVsbDtcbiAgZmlsdGVyR3JvdXBzOiBSZXBvcnRGaWx0ZXJHcm91cFtdO1xuICAvLyBUaGUgdmlld2VyIGZlYXR1cmVzIHRoaXMgc2VydmVyIHNlcnZlcyBmb3IgdGhlIHJlcG9ydC4gVGhlIHZpZXdlciBvZmZlcnNcbiAgLy8gYSBjb250cm9sIG9ubHkgd2hlbiBpdHMgZmVhdHVyZSBpcyBsaXN0ZWQuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aGljaFxuICAvLyBzZXJ2ZSBub25lLlxuICB2aWV3ZXJGZWF0dXJlcz86IFJlcG9ydFZpZXdlckZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbiAgLy8gVGhlIHZhbHVlcyB0aGUgaGVhZGVyIGFuZCBmb290ZXIgdGV4dCBzaG93cywgYXMgUmVwb3J0UGFnZS52YWx1ZXMuXG4gIHZhbHVlcz86IFJlcG9ydENvbXBvbmVudFtdO1xufVxuXG4vLyBIb3cgdGhlIG9wZW4gcmVwb3J0IHdyaXRlcyBpdHMgbnVtYmVycyBhbmQgZGF0ZXMsIHJlc29sdmVkIG9uY2UgcGVyIHJlcG9ydFxuLy8gKHJlc29sdmVGb3JtYXRDb250ZXh0KSBhbmQgcmVhZCBieSB0aGUgdmlld2VyLCB0aGUgUERGIGFuZCBQb3dlclBvaW50IGFsaWtlLlxuLy8gTmV2ZXIgdGhlIGJyb3dzZXIncyBsb2NhbGUuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvcm1hdENvbnRleHQge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgY3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gV2hldGhlciBhIHBlcmNlbnQgbWVhc3VyZSBhcnJpdmVzIGFzIGEgMC0xIHJhdGlvICh0aGUgcmVwb3J0J3NcbiAgLy8gcGVyY2VudEZvcm1hdCkuIEFuIG9sZGVyIHNlcnZlciBzZW5kcyBpdCBhbHJlYWR5IHgxMDAuXG4gIHJhdGlvUGVyY2VudDogYm9vbGVhbjtcbn1cblxuLy8gT25lIGxvY2FsZSB0aGUgc2VydmVyIG9mZmVycywgd2l0aCB0aGUgY3VycmVuY3kgYSByZXBvcnQgaW4gaXQgdXNlcyB3aGVuIGl0XG4vLyBuYW1lcyBub25lIG9mIGl0cyBvd24uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZU9wdGlvbiB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBkZWZhdWx0Q3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbn1cblxuLy8gR0VUIHJlcG9ydHMvbG9jYWxlczogd2hhdCB0aGUgcmVwb3J0IHNldHRpbmdzJyBMb2NhbGUgYW5kIEN1cnJlbmN5IHNlbGVjdHNcbi8vIG9mZmVyLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVzIHtcbiAgZGVmYXVsdExvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBvcHRpb25zOiBSZXBvcnRMb2NhbGVPcHRpb25bXTtcbiAgY3VycmVuY2llczogUmVwb3J0Q3VycmVuY3lDb2RlW107XG59XG5cbi8vIFRoZSBkZXB0aCBvZiB0aGUgaGVhZGVyIGJhbmQgKHRvcCBvZiBldmVyeSBwYWdlKSBhbmQgdGhlIGZvb3RlciBiYW5kIChib3R0b21cbi8vIG9mIGV2ZXJ5IHBhZ2UpLCBpbiBJTkNIRVMuIFRoZSBiYW5kcyBob2xkIG5vIGNvbnRlbnQgb2YgdGhlaXIgb3duIOKAlCB0aGVcbi8vIG1hc3RlcidzIGNvbXBvbmVudHMgc2l0IGluIHRoZW0g4oCUIHRoZXkgYXJlIHRoZSByZXNlcnZlZCBtYXJnaW5zIHRoZSBlZGl0b3Jcbi8vIGRyYXdzIGFzIGd1aWRlcyBhbmQgc25hcHMgdG8uIEFsd2F5cyBhcnJpdmVzIHJlc29sdmVkICgwID0gbm8gYmFuZCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEhlYWRlckZvb3RlciB7XG4gIGhlYWRlckhlaWdodDogbnVtYmVyO1xuICBmb290ZXJIZWlnaHQ6IG51bWJlcjtcbn1cblxuLy8gUmVwb3J0LWxldmVsIHN0eWxpbmcuIFNpemVzIGFyZSBpbiBQT0lOVFMgKDEvNzJcIikg4oCUIHRoZSByZXBvcnQncyB0eXBvZ3JhcGh5XG4vLyBtYXBzIDE6MSB0byBQREYgKDcycHQvaW4pIGFuZCBQb3dlclBvaW50IChwb2ludCBmb250IHNpemVzKSwgc28gYSBwb2ludFxuLy8gdmFsdWUgaXMgZGltZW5zaW9uYWxseSBleGFjdCBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29uZmlnIHtcbiAgc3R5bGVzPzogUmVwb3J0U3R5bGVzO1xuICAvLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbC4gT3B0aW9uYWwgb24gdGhlIHR5cGUgYmVjYXVzZSBhIFJlcG9ydENvbmZpZ1xuICAvLyBsaXRlcmFsIG5lZWQgbm90IGNhcnJ5IGl0OyB0aGUgQVBJIGFsd2F5cyBzZW5kcyBpdCwgcmVzb2x2ZWQuXG4gIGdyb3VwQnk/OiBSZXBvcnRHcm91cEJ5O1xuICAvLyBSZXNvbHZlZCBieSB0aGUgQVBJIGxpa2UgZ3JvdXBCeS5cbiAgaGVhZGVyRm9vdGVyPzogUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG4vLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCDigJQgdGhlIG9uZSBzd2l0Y2ggdGhhdCByZS1idWNrZXRzIGV2ZXJ5XG4vLyB0aW1lLXNlcmllcyBjaGFydCBvbiB0aGUgcmVwb3J0IGJldHdlZW4gZGF5LCB3ZWVrLCBtb250aCwgcXVhcnRlciBhbmQgeWVhci5cbi8vXG4vLyBJdCBpcyBOT1QgYSBmaWx0ZXI6IGEgZmlsdGVyIG5hcnJvd3Mgd2hpY2ggcm93cyBhcmUgY291bnRlZCwgdGhpcyBjaGFuZ2VzIGhvd1xuLy8gdGhlIHN1cnZpdmluZyByb3dzIGFyZSBidWNrZXRlZC4gSXQgc2hhcmVzIHRoZSByZXBvcnQncyBmaWx0ZXIgYmFyIGJlY2F1c2Vcbi8vIHRoYXQgaXMgdGhlIG9uZSByb3cgb2YgY29udHJvbHMgYSB2aWV3ZXIgcmVhZHMgYSByZXBvcnQgdGhyb3VnaCDigJQgdGhlXG4vLyBzZXBhcmF0aW9uIHRoYXQgbWF0dGVycyBpcyBpbiB0aGUgbW9kZWwsIG5vdCBpbiB3aGVyZSB0aGUgY29udHJvbCBpcyBwYWludGVkLlxuLy9cbi8vIEFsd2F5cyBhcnJpdmVzIFJFU09MVkVEICh0aGUgYmFja2VuZCBmaWxscyBhbiBhYnNlbnQgb3IgcGFydGlhbCBzdG9yZWQgYmxvY2tcbi8vIGluIGZyb20gaXRzIG93biBkZWZhdWx0cyksIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGVmYXVsdCBoZXJlIOKAlCByZW5kZXIgd2hhdFxuLy8geW91IGFyZSBnaXZlbi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0R3JvdXBCeSB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGdyYW51bGFyaXRpZXM6IENoYXJ0R3JhbnVsYXJpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTdHlsZXMge1xuICBoZWFkaW5nPzogeyBzaXplPzogbnVtYmVyIH07XG59XG5cbi8vIENvbnRlbnQgcGFkZGluZyBhcm91bmQgYSBjb21wb25lbnQncyBib2R5LCBpbiBJTkNIRVMgKHRoZSBnZW9tZXRyeSB1bml0KS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UGFkZGluZyB7XG4gIHRvcD86IG51bWJlcjtcbiAgcmlnaHQ/OiBudW1iZXI7XG4gIGJvdHRvbT86IG51bWJlcjtcbiAgbGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgLy8gVGhlIHBhZ2Ugb3B0cyBvdXQgb2YgdGhlIHJlcG9ydCdzIGhlYWRlciBhbmQgZm9vdGVyIChhIHRpdGxlIHBhZ2UpLlxuICBtYXN0ZXJIaWRkZW46IGJvb2xlYW47XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBFdmVyeSBhY3RpdmUgdmFsdWUgb2YgdGhlIHBhZ2UsIGluIGlkIG9yZGVyOiB0aG9zZSBpdHMgdGV4dCBzaG93cyBhbmRcbiAgLy8gdGhvc2Ugbm8gdGV4dCBzaG93cyBhbnkgbW9yZSAoa2VwdCB1bnRpbCBhIHRleHQsIHZhbHVlIG9yIHBhZ2UgZGVsZXRlLCBzb1xuICAvLyBhIGNoaXAgcGFzdGVkIGJhY2sgc3RpbGwgbmFtZXMgb25lKS4gTmV2ZXIgZHJhd24sIGFuZCBuZXZlciBpblxuICAvLyBgY29tcG9uZW50c2AuIE9wdGlvbmFsIGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0LlxuICB2YWx1ZXM/OiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuLy8gJ3ZhbHVlJyBpcyBvbmUgbnVtYmVyIHNob3duIGluc2lkZSBhIHRleHQgYmxvY2sncyB3b3JkcyAoe3t2YWx1ZS5rZXl9fSk7IGl0XG4vLyBoYXMgYSBxdWVyeSBidXQgbm8gcGxhY2Ugb2YgaXRzIG93biBvbiB0aGUgcGFnZS5cbmV4cG9ydCB0eXBlIFJlcG9ydENvbXBvbmVudFR5cGUgPSAnY2hhcnQnIHwgJ2xpc3QnIHwgJ2twaScgfCAndGV4dCcgfCAndmFsdWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbXBvbmVudCB7XG4gIGlkOiBudW1iZXI7XG4gIHR5cGU6IFJlcG9ydENvbXBvbmVudFR5cGU7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICAvLyBHZW9tZXRyeSBpbiBJTkNIRVM6IGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIGNhbnZhcy5cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgaDogbnVtYmVyO1xuICAvLyBIZWlnaHQgbW9kZSwgREVSSVZFRCBmcm9tIHR5cGUgc2VydmVyLXNpZGUgKG5vdCBzdG9yZWQsIHJlYWQtb25seSk6IGxpc3RzXG4gIC8vIGFuZCBLUEkgdGlsZXMgYXJlIGF1dG8gKHRoZSBib3ggc2l6ZXMgdG8gaXRzIGNvbnRlbnQsIGBoYCBpZ25vcmVkKTsgY2hhcnRzXG4gIC8vIGFyZSBhbHdheXMgZml4ZWQgKHVzZSBgaGApIHNvIHRoZXkgZml0IHRoZSBib3ggYW5kIG5ldmVyIG92ZXJmbG93LlxuICBhdXRvSGVpZ2h0OiBib29sZWFuO1xuICAvLyBUaGUgc3RvcmVkIFNRTCBvZiBhIGxlZ2FjeSBzcWwtbW9kZSBjb21wb25lbnQuIE5VTEwgZm9yIGEgZGVyaXZlZCBvbmUsXG4gIC8vIHdob3NlIHN0YXRlbWVudCBkb2VzIG5vdCBleGlzdCB1bnRpbCBpdHMgZG9jdW1lbnQgaXMgY29tcGlsZWQg4oCUIHRoZSBTUUwgdGFiXG4gIC8vIGZldGNoZXMgdGhhdCBzZXBhcmF0ZWx5IChzZWUgUmVwb3J0Q29tcG9uZW50U3FsKS5cbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBjb25maWc6IENoYXJ0Q29uZmlnICYgTGlzdENvbmZpZyAmIEtwaUNvbmZpZyAmIFRleHRDb25maWcgJiBWYWx1ZUNvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZ1xuICAgICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBXaGF0IHRoZSBTUUwgdGFiIGZldGNoZXM6IHRoZSBzdGF0ZW1lbnQgYSBjb21wb25lbnQgcnVucy5cbi8vXG4vLyBGb3IgYSBkZXJpdmVkIGNvbXBvbmVudCBgYmFzZWxpbmVgIGlzIHRydWUgYW5kIGBzcWxgIGlzIHdoYXQgaXRzIGRvY3VtZW50XG4vLyBjb21waWxlcyB0byB3aXRoIE5PIHZpZXdlciBzdGF0ZSDigJQgbm8gZmlsdGVycywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGB0aW1lem9uZWAgaXMgdGhlIElBTkEgem9uZSB0aGUgc3RhdGVtZW50IHdhcyBjb21waWxlZCBpbjogdGhlIHJlcG9ydCdzXG4vLyBlZmZlY3RpdmUgem9uZS4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQ7IHRoZXkgY29tcGlsZWQgaW4gVVRDLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICB0aW1lem9uZT86IHN0cmluZztcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGVycm9yVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSB0ZXh0IGJsb2NrJ3MgY29udGVudDogYW4gaHRtbCBmcmFnbWVudCB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHJlYnVpbHQgZnJvbVxuLy8gYW4gYWxsb3dsaXN0LCB3aGljaCBtYXkgY2Fycnkge3twYWdlLm51bWJlcn19LCB7e3BhZ2UubmFtZX19IGFuZFxuLy8ge3tyZXBvcnQubmFtZX19IHRva2VucyAoc2VlIHRleHQudHMpLlxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q29uZmlnIHtcbiAgaHRtbD86IHN0cmluZztcbn1cblxuLy8gQSB2YWx1ZSdzIGtleTogd2hhdCBpdHMgdG9rZW4gaW4gYSB0ZXh0IGJsb2NrJ3MgaHRtbCBuYW1lcywgdW5pcXVlIHdpdGhpblxuLy8gdGhlIHBhZ2UuIEl0cyBudW1iZXIgaXMgZm9ybWF0dGVkIGJ5IGNvbmZpZy5tZWFzdXJlIChLcGlDb25maWcpLCBhcyBvbiBhIEtQSS5cbi8vIEEgZm9ybXVsYSB2YWx1ZSBoYXMgbm8gcXVlcnk6IGBmb3JtdWxhYCBuYW1lcyB3aGF0IGl0IHdvcmtzIG91dCBvZiB0aGVcbi8vIHBhZ2UncyBxdWVyeSB2YWx1ZXMsIGFuZCBpdHMgbWVhc3VyZSBob2xkcyBvbmx5IHRoZSBmb3JtYXQga2V5cyBpdHMgYXV0aG9yXG4vLyBnYXZlIChmb3JtYXQsIHByZWNpc2lvbiwgdW5pdHMpLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUNvbmZpZyB7XG4gIGtleT86IHN0cmluZztcbiAgZm9ybXVsYT86IFZhbHVlRm9ybXVsYUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgZm9ybXVsYSB2YWx1ZSdzIG9wZXJhdGlvbiBhbmQgb3BlcmFuZHM6IGBvZmAgbmFtZXMgcXVlcnkgdmFsdWVzIG9uIHRoZVxuLy8gc2FtZSBwYWdlICh0aGUgbWFzdGVyIGZvciBhIGhlYWRlciBvciBmb290ZXIpIGJ5IGtleSwgMiBvZiB0aGVtLCBvciAyIHRvIDEwXG4vLyBmb3IgYSBzdW0uIGBzaWduZWRgIGFic2VudCByZWFkcyB0cnVlIGZvciBhIGNoYW5nZSBhbmQgYSBwZXJjZW50IGNoYW5nZSxcbi8vIGZhbHNlIGZvciBhIHJhdGlvIGFuZCBhIHN1bS5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGb3JtdWxhQ29uZmlnIHtcbiAgb3A6IFJlcG9ydFZhbHVlRm9ybXVsYTtcbiAgb2Y6IHN0cmluZ1tdO1xuICBzaWduZWQ/OiBib29sZWFuIHwgbnVsbDtcbn1cblxuLy8gT25lIHJvdyBvZiBQT1NUIHBhZ2VzLzppZC92YWx1ZXM6IGEgdmFsdWUncyBudW1iZXIgZm9yIHRoZSBmaWx0ZXJzIHNlbnQuXG4vLyBUaGVyZSBpcyBvbmUgcm93IHBlciB2YWx1ZSB0aGUgbGF5ZXIgcmVhZHMsIGluIGlkIG9yZGVyOiBvbmUgc29tZSB0ZXh0IG9uXG4vLyB0aGF0IHBhZ2Ugc2hvd3MsIG9yIGFuIG9wZXJhbmQgb2YgYSBmb3JtdWxhIHNvbWUgdGV4dCBzaG93cy4gYHZhbHVlYCBpc1xuLy8gcmF3LCBhcyB0aGUgcXVlcnkgcmV0dXJuZWQgaXQgb3IgdGhlIHNlcnZlciB3b3JrZWQgaXQgb3V0IChudWxsIHdoZW4gdGhlcmVcbi8vIGlzIG5vIHJvdyBvciB0aGUgcmVzdWx0IGlzIG51bGwpOyBmb3JtYXR0aW5nIGlzIHRoZSB2aWV3ZXIncywgdGhyb3VnaCB0aGVcbi8vIHZhbHVlJ3MgbWVhc3VyZS4gYGVycm9yYCBpcyB0aGF0IHZhbHVlJ3Mgb3duIGZhaWx1cmUsIGFuZCB0aGUgcGFnZSdzIG90aGVyXG4vLyB2YWx1ZXMgYXJlIHJlYWQgcmVnYXJkbGVzcy5cbi8vIGByb2xlYCBpcyB0aGUgY29tcGFyaXNvbiByb2xlIHRoZSBudW1iZXIgcGxheXM6IGEgcXVlcnkgdmFsdWUncyBjb21wYXJpc29uXG4vLyBvdXRwdXQncywgY2hhbmdlIG9yIHBlcmNlbnRfY2hhbmdlIGZvciB0aG9zZSBmb3JtdWxhcywgZWxzZSBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlVmFsdWUge1xuICBpZDogbnVtYmVyO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICByb2xlPzogT3V0cHV0Um9sZSB8IG51bGw7XG59XG5cbi8vIENyb3NzLXR5cGUgbGF5b3V0L3N0eWxlIGtleXMgY2FycmllZCBpbiBhIGNvbXBvbmVudCdzIGNvbmZpZyAoYWxvbmdzaWRlIHRoZVxuLy8gdHlwZS1zcGVjaWZpYyBjaGFydC9saXN0L2twaSBrZXlzKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TGF5b3V0Q29uZmlnIHtcbiAgcGFkZGluZz86IENvbXBvbmVudFBhZGRpbmc7XG59XG5cbi8vIFRoZSBwcmVzZW50YXRpb24gc2V0dGluZ3MgYSBjb21wb25lbnQncyBzZXR0aW5ncyBkaWFsb2cgZWRpdHMuIFRpdGxlIGFuZFxuLy8gcGFkZGluZyBhcmUgbm90IHBhcnQgb2Ygd2hhdCB0aGUgY29tcG9uZW50IHF1ZXJpZXMsIHNvIGEgY2hhbmdlIHRvIHRoZW1cbi8vIHJlcGFpbnRzIHdpdGhvdXQgcmUtcnVubmluZyBhbnl0aGluZy4gQSBkZXJpdmVkIEtQSSdzIGNhcmQga2V5cyBhcmUgc2VudFxuLy8gdG9vOiB0aGUgc2VydmVyIGNvbXB1dGVzIHRoZSB0YXJnZXQncyBwcm9ncmVzcyBhbmQgdGhlIHNwYXJrbGluZSdzIHBvaW50c1xuLy8gd2l0aCB0aGUgZGF0YSwgc28gYSBjaGFuZ2UgdG8gdGhlbSByZWxvYWRzIGl0LlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTZXR0aW5ncyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhZGRpbmc6IENvbXBvbmVudFBhZGRpbmc7XG4gIGtwaT86IEtwaUNhcmRTZXR0aW5ncztcbn1cblxuLy8gQSBLUEkncyBjYXJkIGtleXMuIFRoZSBkaWFsb2cgc2VuZHMgdGhlbSAobnVsbCByZW1vdmVzIGEga2V5LCBpbmNyZWFzZUlzXG4vLyBudWxsIHJlYWRzIGdvb2QpLCBhbmQgQ29tcG9uZW50U2V0dGluZ3Mua3BpIGNhcnJpZXMgdGhlbSBhcyB0aGUgc2VydmVyXG4vLyBzYXZlZCB0aGVtLCByZWFkIGJhY2sgZnJvbSB0aGUgY29uZmlnIGl0IHJldHVybnMuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRTZXR0aW5ncyB7XG4gIGluY3JlYXNlSXM6IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgdGFyZ2V0OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICBzcGFya2xpbmU6IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIFdoZXJlIGEgY2hhcnQncyBsZWdlbmQgc2l0cyByZWxhdGl2ZSB0byB0aGUgcGxvdCwgb3IgJ2hpZGRlbicgdG8gZHJvcCBpdC5cbmV4cG9ydCB0eXBlIExlZ2VuZFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnaGlkZGVuJztcblxuZXhwb3J0IHR5cGUgQ2hhcnRHcmFudWxhcml0eSA9ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcblxuLy8gSG93IGVhY2ggZ3JhbnVsYXJpdHkgcmVhZHMgaW4gdGhlIGdyb3VwLWJ5IGNvbnRyb2wgYW5kIG9uIGFuIGV4cG9ydCBjb3ZlclxuLy8gc2hlZXQuIFdISUNIIG9mIHRoZW0gYSBnaXZlbiByZXBvcnQgb2ZmZXJzIGNvbWVzIGZyb20gaXRzIFJlcG9ydEdyb3VwQnk7XG4vLyB0aGlzIGlzIG9ubHkgdGhlIG5hbWluZy4gJ3llYXInIHJlYWRzIGFzIFwiQW5udWFsbHlcIi5cbmV4cG9ydCBjb25zdCBHUkFOVUxBUklUWV9PUFRJT05TOiB7IHZhbHVlOiBDaGFydEdyYW51bGFyaXR5OyBuYW1lOiBzdHJpbmcgfVtdID0gW1xuICB7IHZhbHVlOiAnZGF5JywgbmFtZTogJ0RheScgfSxcbiAgeyB2YWx1ZTogJ3dlZWsnLCBuYW1lOiAnV2VlaycgfSxcbiAgeyB2YWx1ZTogJ21vbnRoJywgbmFtZTogJ01vbnRoJyB9LFxuICB7IHZhbHVlOiAncXVhcnRlcicsIG5hbWU6ICdRdWFydGVyJyB9LFxuICB7IHZhbHVlOiAneWVhcicsIG5hbWU6ICdBbm51YWxseScgfSxcbl07XG5cbi8vIFRoZSBjaGFydCB0eXBlcyB0aGF0IHBsb3Qgc2VyaWVzIGFnYWluc3QgYSBjYXRlZ29yeSBhbmQgYSB2YWx1ZSBheGlzLCBhbmQgc29cbi8vIHRoZSB0eXBlcyBhIG1lYXN1cmUncyBvd24gc2VyaWVzIGNhbiBiZSBkcmF3biBhcy4gQSB3YXRlcmZhbGwgaGFzIHRoZSBzYW1lXG4vLyBheGVzIGJ1dCBpcyBub3Qgb25lIG9mIHRoZW06IGl0IGRyYXdzIGl0cyBvbmUgbWVhc3VyZSBhcyBmbG9hdGluZyBzdGVwcy5cbmV4cG9ydCB0eXBlIEF4aXNDaGFydFR5cGUgPSAnYmFyJyB8ICdsaW5lJyB8ICdhcmVhJztcblxuLy8gV2hhdCBvbmUgYmFyIG9mIGEgd2F0ZXJmYWxsIGRvZXMgdG8gdGhlIHJ1bm5pbmcgdG90YWwg4oCUIGVhY2ggaXMgZHJhd24gaW4gaXRzXG4vLyBvd24gY29sb3IuIFRoZSBjbG9zaW5nIHRvdGFsIGlzIHRoZSBsYXN0IGJhciwgc3RhbmRpbmcgb24gemVyby5cbmV4cG9ydCB0eXBlIFdhdGVyZmFsbFN0ZXBLaW5kID0gJ3Jpc2UnIHwgJ2ZhbGwnIHwgJ3RvdGFsJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGFydENvbmZpZyB7XG4gIC8vIEEgd2F0ZXJmYWxsIHRha2VzIE9ORSBtZWFzdXJlIHdob3NlIHZhbHVlIHBlciBjYXRlZ29yeSBpcyBob3cgZmFyIHRoZVxuICAvLyBydW5uaW5nIHRvdGFsIG1vdmVzIHRoZXJlOiBlYWNoIGJhciBzdGFydHMgd2hlcmUgdGhlIG9uZSBiZWZvcmUgaXQgZW5kZWQsXG4gIC8vIGFuZCBhIGNsb3NpbmcgVG90YWwgYmFyIHNob3dzIHRoZSBzdW0uXG4gIGNoYXJ0VHlwZT86IEF4aXNDaGFydFR5cGUgfCAnd2F0ZXJmYWxsJyB8ICdwaWUnIHwgJ2RvbnV0JztcbiAgLy8gRm9yIGtpbmQgJ3RpbWUnLCB0aGUgc2VydmVyIGJ1Y2tldHMgdGhlIHJhdyBkYXRldGltZSBjb2x1bW4gdG8gYGdyYW51bGFyaXR5YFxuICAvLyBpbiB0aGUgcmVwb3J0J3MgdGltZXpvbmUgKHRoZSBTUUwgZXhwb3NlcyB0aGUgcmF3IGNvbHVtbiwgdW5idWNrZXRlZCkuXG4gIC8vIGRhdGVMYWJlbCB3cml0ZXMgYSB0aW1lIGF4aXMncyBwZXJpb2QgbGFiZWxzIHNob3J0ICgnTWF5JywgdGhlIGRlZmF1bHQpLFxuICAvLyBsb25nICgnTWF5IDIwMjYnKSBvciBudW1lcmljICgnMjAyNi0wNScpOyBhIGNhdGVnb3J5IGF4aXMgaWdub3JlcyBpdC5cbiAgeEF4aXM/OiB7XG4gICAgY29sdW1uOiBzdHJpbmc7XG4gICAga2luZD86ICdjYXRlZ29yeScgfCAndGltZSc7XG4gICAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGRhdGVMYWJlbD86IFJlcG9ydENoYXJ0RGF0ZUxhYmVsO1xuICB9O1xuICBtZWFzdXJlcz86IENoYXJ0TWVhc3VyZVtdO1xuICAvLyBFYWNoIHZhbHVlIG9mIHRoaXMgY29sdW1uIGJlY29tZXMgaXRzIG93biBzZXJpZXMuIEl0IGNhcnJpZXMgbm8gbGFiZWw6IHRoZVxuICAvLyBsZWdlbmQgbmFtZXMgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLlxuICBzcGxpdEJ5PzogeyBjb2x1bW46IHN0cmluZyB9O1xuICAvLyBTaW5nbGUtZGltZW5zaW9uIGJhciBjaGFydHMgb25seTogY29sb3IgZWFjaCBiYXIgYnkgaXRzIG93biBjYXRlZ29yeSBhbmRcbiAgLy8gc2hvdyBhIGxlZ2VuZCwgV0lUSE9VVCBzcGxpdHRpbmcgaW50byBtdWx0aXBsZSBzZXJpZXMgKHdoaWNoIHNsaXZlcnMgdGhlXG4gIC8vIGJhcnMpLiB2MSBleHBlY3RzIGNvbG9yQnkuY29sdW1uID09PSB4QXhpcy5jb2x1bW4uIElnbm9yZWQgd2hlbiBzcGxpdEJ5IGlzXG4gIC8vIHNldCBvciB0aGUgY2hhcnQgaXNuJ3QgYSBiYXIgY2hhcnQuXG4gIGNvbG9yQnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBvcmllbnRhdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICAvLyBTdGFja3MgdGhlIHByaW1hcnkgYXhpcydzIGJhciBhbmQgYXJlYSBzZXJpZXMgYXMgc2hhcmVzIG9mIGVhY2hcbiAgLy8gY2F0ZWdvcnkncyB0b3RhbCwgc28gZXZlcnkgc3RhY2sgcmVhY2hlcyAxMDAlLiBUaGUgdmlld2VyIGNvbXB1dGVzIHRoZVxuICAvLyBzaGFyZXMgZnJvbSB0aGUgcm93cyBpdCByZWNlaXZlcywgYWZ0ZXIgdGhlIGZpbHRlcnMgcmFuOyB0aGUgcm93cyBhbmQgdGhlXG4gIC8vIENTViBrZWVwIHRoZSByYXcgdmFsdWVzLiBUaGUgdmFsdWUgYXhpcyB0aGVuIGFsd2F5cyBydW5zIDAgdG8gMTAwJSAoZnJvbVxuICAvLyAtMTAwJSB3aGVuIGEgc2hhcmUgaXMgbmVnYXRpdmUpLlxuICBwZXJjZW50U3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFZhbHVlcyBwcmludGVkIGJlc2lkZSB0aGUgcG9pbnRzIG9mIGEgYmFyLCBsaW5lIG9yIGFyZWEgc2VyaWVzOiBldmVyeVxuICAvLyBwb2ludCAoYWxsKSwgZWFjaCBzZXJpZXMnIGxhdGVzdCBwb2ludCAobGFzdCksIG9yIGV2ZXJ5IHBvaW50IHdob3NlIGxhYmVsXG4gIC8vIGZpdHMgd2l0aG91dCBvdmVybGFwcGluZyBhbm90aGVyIChhdXRvKS4gT21pdHRlZCBvciBub25lLCBubyBsYWJlbHMuIEFcbiAgLy8gcGllLCBhIGRvbnV0IGFuZCBhIHdhdGVyZmFsbCBuZXZlciBwcmludCB0aGVtLlxuICBkYXRhTGFiZWxzPzogUmVwb3J0Q2hhcnREYXRhTGFiZWxzO1xuICAvLyBUaGUgcHJpbWFyeSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFdmVyeSBzZXJpZXMgaXMgcGxvdHRlZCBhZ2FpbnN0XG4gIC8vIGl0IHVubGVzcyBpdHMgbWVhc3VyZSBpcyBzZWNvbmRhcnkuXG4gIHZhbHVlQXhpcz86IENoYXJ0VmFsdWVBeGlzO1xuICAvLyBUaGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgdGhhdCBzZWNvbmRhcnkgbWVhc3VyZXMgcGxvdCBhZ2FpbnN0LlxuICBzZWNvbmRhcnlBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIExhYmVsZWQgbGluZXMgYWNyb3NzIHRoZSBwbG90IGF0IGEgY29uc3RhbnQgdmFsdWUsIG9yIGJhbmRzIGJldHdlZW4gdHdvXG4gIC8vIHZhbHVlcywgYXQgbW9zdCA1LiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBhbmQgd2F0ZXJmYWxscyBvbmx5LlxuICByZWZlcmVuY2VzPzogQ2hhcnRSZWZlcmVuY2VbXTtcbiAgbGVnZW5kPzogTGVnZW5kUG9zaXRpb247XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuLy8gQSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFYWNoIGJvdW5kIGxlZnQgb3V0IGlzIHBpY2tlZCBmcm9tIHRoZSBkYXRhLFxuLy8gYW5kIHRoZSB0aWNrIHN0ZXAgd2l0aG91dCBhbiBpbnRlcnZhbC4gSXRzIHRpY2tzIHRha2UgdGhlIG51bWJlciBmb3JtYXQgb2Zcbi8vIHRoZSBtZWFzdXJlcyBwbG90dGVkIGFnYWluc3QgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0VmFsdWVBeGlzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICBpbnRlcnZhbD86IG51bWJlcjtcbn1cblxuLy8gQSByZWZlcmVuY2UgZHJhd24gYWNyb3NzIGEgY2hhcnQncyBwbG90OiBhIGxpbmUgYXQgYHZhbHVlYCwgb3Igd2l0aCBgdG9gIGFcbi8vIGJhbmQgYmV0d2VlbiB0aGUgdHdvLCBsYWJlbGVkIHdpdGggYGxhYmVsYC4gVGhlIHZhbHVlIGlzIG9uZSB0aGUgdXNlciBvclxuLy8gdGhlIG1vZGVsIHN0YXRlcywgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZSBkYXRhLiBzZWNvbmRhcnkgcGxvdHMgaXQgYWdhaW5zdFxuLy8gdGhlIHNlY29uZCB2YWx1ZSBheGlzLCB3aGVuIHRoZSBjaGFydCBoYXMgb25lLlxuZXhwb3J0IGludGVyZmFjZSBDaGFydFJlZmVyZW5jZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRvPzogbnVtYmVyO1xuICBzZWNvbmRhcnk/OiBib29sZWFuO1xufVxuXG4vLyBIb3cgb25lIG51bWVyaWMgc2xvdCBpcyBzaG93bjogYSBjaGFydCBtZWFzdXJlLCBhIEtQSSBtZWFzdXJlLCBhIGxpc3QgY29sdW1uXG4vLyBvciBhIGNyb3NzLXRhYidzIGNlbGxzLiBUaGUgZGF0YSBzdGF5cyByYXcgKGl0IHNvcnRzIGFuZCBleHBvcnRzIGFzIGFcbi8vIG51bWJlcik7IG9ubHkgdGhlIHJlbmRlcmVycyBmb3JtYXQgaXQsIHRoZSBzYW1lIHdheSBvbiBzY3JlZW4sIGluIHRoZSBQREZcbi8vIGFuZCBpbiBQb3dlclBvaW50IChmb3JtYXQudHMpLiBBbGwgdGhyZWUga2V5cyBhcmUgb3B0aW9uYWwsIGFuZCBwcmVjaXNpb24gb3Jcbi8vIHVuaXRzIHdpdGhvdXQgYSBmb3JtYXQgbWVhbiBudW1iZXIuXG4vL1xuLy8gRm9ybWF0dGluZyBpcyBvcHQtaW46IGEgbGlzdCBjb2x1bW4gb3IgY3Jvc3MtdGFiIGNlbGwgd2l0aG91dCB0aGVzZSBrZXlzXG4vLyBwcmludHMgaXRzIHZhbHVlIGFzIGl0IGNhbWUsIGFuZCBhIGNoYXJ0IHdpdGhvdXQgdGhlbSBrZWVwcyBpdHMgcGxhaW5cbi8vIGxvY2FsZS1ncm91cGVkIGF4aXMgYW5kIHRvb2x0aXBzLiBBIEtQSSB3aXRob3V0IHRoZW0gcHJpbnRzIGEgcGxhaW4gbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgLy8gcGVyY2VudCB0YWtlcyBhIDAtMSByYXRpbyAoMC4zIHJlYWRzIDMwJSkgd2hlbiB0aGUgcmVwb3J0J3MgcGVyY2VudEZvcm1hdFxuICAvLyBpcyAncmF0aW8nOyBhbiBvbGRlciBzZXJ2ZXIgbGVhdmVzIGl0IG91dCBhbmQgc2VuZHMgeDEwMC4gY3VycmVuY3kgbGFiZWxzXG4gIC8vIHRoZSBhbW91bnQgaW4gdGhlIHJlcG9ydCdzIGN1cnJlbmN5LCB3cml0dGVuIGluIGl0cyBsb2NhbGUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IHwgUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gSG93IG1hbnkgZGVjaW1hbCBwbGFjZXMgdGhlIHZhbHVlIGlzIHNob3duIHRvICgwLTYpLiBGaXhlZCByYXRoZXIgdGhhblxuICAvLyBtYXhpbXVtOiBhIGNvbHVtbiBvZiByYXRlcyBpcyB1bnJlYWRhYmxlIHdoZW4gZWFjaCBvbmUgc2hvd3MgYSBkaWZmZXJlbnRcbiAgLy8gbnVtYmVyIG9mIGRlY2ltYWxzLiBGb3IgcGVyY2VudCBpdCBjb3VudHMgdGhlIGRlY2ltYWxzIG9mIHRoZSBwZXJjZW50YWdlXG4gIC8vIChwcmVjaXNpb24gMSBzaG93cyAwLjMgYXMgMzAuMCUpLiBPbWl0dGVkIGxlYXZlcyB0aGUgZm9ybWF0J3Mgb3duIGRlZmF1bHQ6XG4gIC8vIGF0IG1vc3Qgb25lIGRlY2ltYWwgZm9yIHBlcmNlbnQgKGFuZCBmb3IgYW4gYWJicmV2aWF0ZWQgMS4ySyksIHdob2xlIHVuaXRzXG4gIC8vIGZvciBjdXJyZW5jeSwgdGhlIGxvY2FsZSdzIGRlZmF1bHQgZm9yIGEgbnVtYmVyLlxuICAvL1xuICAvLyBJdCBjYW5ub3QgYmUgYXBwbGllZCBpbiB0aGUgU1FMOiB0aGUgdmFsdWUgaXMgYWdncmVnYXRlZCBhZnRlciB0aGUgcmVwb3J0J3NcbiAgLy8gZmlsdGVycyBydW4sIHNvIHByZS1yb3VuZGluZyB3b3VsZCBicmVhayBsaXZlIHJlLWZpbHRlcmluZy5cbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICAvLyBBYmJyZXZpYXRlcyB0byB0aG91c2FuZHMgKDEuMkspIG9yIG1pbGxpb25zICgzLjRNKSwgb3IgcGlja3MgYnkgc2l6ZS5cbiAgdW5pdHM/OiBSZXBvcnROdW1iZXJVbml0cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFydE1lYXN1cmUgZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0aW9uPzogJ3N1bScgfCAnY291bnQnIHwgJ2F2ZycgfCAnbWluJyB8ICdtYXgnO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gRHJhd3MgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGFzIGEgZGlmZmVyZW50IHR5cGUgZnJvbSB0aGUgY2hhcnQncyBvd25cbiAgLy8gY2hhcnRUeXBlIOKAlCBjb3VudHMgYXMgYmFycyB3aXRoIGEgcmF0ZSBhcyBhIGxpbmUgb3ZlciB0aGVtIGlzIGEgY29tYm9cbiAgLy8gY2hhcnQuIE9taXR0ZWQsIHRoZSBzZXJpZXMgdGFrZXMgdGhlIGNoYXJ0J3MgdHlwZS4gQXhpcyBjaGFydHMgb25seSAoYSBwaWVcbiAgLy8gaWdub3JlcyBpdCkuXG4gIHR5cGU/OiBBeGlzQ2hhcnRUeXBlO1xuICAvLyBBIGNoYXJ0IG1lYXN1cmUncyBmb3JtYXQgc2hvd3Mgb24gaXRzIHRvb2x0aXBzLCBhbmQgb24gdGhlIHZhbHVlIGF4aXNcbiAgLy8gd2hlbiBldmVyeSBtZWFzdXJlIHNoYXJpbmcgdGhlIGF4aXMgYWdyZWVzIG9uIGl0LiBBIEtQSSdzIG1lYXN1cmUgZm9ybWF0c1xuICAvLyBpdHMgb25lIHZhbHVlLlxuICBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdDtcbiAgLy8gUGxvdHMgdGhpcyBtZWFzdXJlIGFnYWluc3QgdGhlIHNlY29uZCB2YWx1ZSBheGlzLCBvbiB0aGUgcmlnaHQsIGZvciBhXG4gIC8vIHF1YW50aXR5IG9uIGFub3RoZXIgc2NhbGUuIE9taXR0ZWQgb3IgZmFsc2UsIGl0IHNoYXJlcyB0aGUgcHJpbWFyeSBheGlzLlxuICAvLyBBIHZlcnRpY2FsIGF4aXMgY2hhcnQgb25seSwgd2l0aCBhdCBsZWFzdCBvbmUgbWVhc3VyZSBsZWZ0IG9uIHRoZSBwcmltYXJ5XG4gIC8vIGF4aXMuXG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG4gIC8vIFRoZSBwYWxldHRlIGNvbG9yIHRoaXMgbWVhc3VyZSdzIHNlcmllcyBpcyBkcmF3biBpbi4gT21pdHRlZCwgdGhlIHNlcmllc1xuICAvLyB0YWtlcyB0aGUgcGFsZXR0ZSBjb2xvciBvZiBpdHMgcG9zaXRpb24uIEEgY29sb3Igb24gdGhlIGZpcnN0IG1lYXN1cmVcbiAgLy8gdHVybnMgb2ZmIGEgY2F0ZWdvcnkgYmFyIGNoYXJ0J3MgZGVmYXVsdCBjb2xvciBwZXIgYmFyIChpc0NvbG9yQnkpLlxuICBjb2xvcj86IFJlcG9ydENoYXJ0Q29sb3I7XG4gIC8vIEhvdyBhIGxpbmUgc2VyaWVzJyBsaW5lIGlzIGRyYXduLiBPbWl0dGVkLCBzb2xpZC5cbiAgbGluZT86IFJlcG9ydENoYXJ0TGluZVN0eWxlO1xuICAvLyBXaGV0aGVyIGEgbGluZSBvciBhcmVhIHNlcmllcyBkcmF3cyBhIGRvdCBvbiBlYWNoIHBvaW50LiBPbWl0dGVkLCB0cnVlLlxuICBtYXJrZXJzPzogYm9vbGVhbjtcbiAgLy8gQSBsaW5lIGFjcm9zcyB0aGUgcGxvdCBhdCB0aGlzIHNlcmllcycgYXZlcmFnZSwgbWVkaWFuLCBsb3dlc3Qgb3IgaGlnaGVzdFxuICAvLyB2YWx1ZSBvdmVyIHRoZSBwb2ludHMgb24gc2NyZWVuLiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBvbmx5LlxuICBtYXJrTGluZT86IFJlcG9ydENoYXJ0TWFya1N0YXQ7XG59XG5cbi8vIE9uZSBhdXRob3JlZCBjb2x1bW4gb2YgYSBwbGFpbiBsaXN0LlxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29sdW1uIGV4dGVuZHMgTnVtYmVyRm9ybWF0U3BlYyB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gZGF0ZSBrZWVwcyB0aGUgY29sdW1uIGEgUkFXIHRpbWVzdGFtcCwgc28gdGhlIHJlcG9ydCB0aW1lem9uZSBhbmQgaXRzXG4gIC8vIGRhdGVSYW5nZSBmaWx0ZXJzIGtlZXAgd29ya2luZywgYW5kIHRoZSB2aWV3ZXIgcmVuZGVycyBpdCBhcyBhIGRheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3Mgem9uZSBhbmQgbG9jYWxlLiBudW1iZXIsIHBlcmNlbnQgYW5kIGN1cnJlbmN5IGZvcm1hdCB0aGUgdmFsdWUgYXNcbiAgLy8gYSBLUEkgbWVhc3VyZSBkb2VzLiBXaXRob3V0IGEgZm9ybWF0IHRoZSB2YWx1ZSBwcmludHMgYXMgaXQgY2FtZS5cbiAgZm9ybWF0PzogUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gQSBjb2x1bW4gdGhlIFNRTCBhbHJlYWR5IGZvcm1hdHRlZCBpcyB0ZXh0LCBzbyBpdCBuYW1lcyBgc29ydENvbHVtbmA6IHRoZVxuICAvLyByYXcgbnVtZXJpYyBhbGlhcyB0aGUgcXVlcnkgYWxzbyBvdXRwdXRzLCB3aGljaCB0aGUgc2VydmVyIG9yZGVycyBieVxuICAvLyBpbnN0ZWFkLlxuICBzb3J0Q29sdW1uPzogc3RyaW5nO1xuICAvLyBmYWxzZSBrZWVwcyB0aGUgY2VsbCBvbiBvbmUgbGluZS4gT21pdHRlZCwgYSBsb25nIHZhbHVlIHdyYXBzLlxuICB3cmFwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29uZmlnIHtcbiAgY29sdW1ucz86IExpc3RDb2x1bW5bXTtcbiAgLy8gQSBjcm9zcy10YWI6IGByb3dCeWAgc3RheXMgZG93biB0aGUgc2lkZSBhbmQgZXZlcnkgdmFsdWUgb2YgYHBpdm90QnlgXG4gIC8vIGJlY29tZXMgYSBjb2x1bW4uIFRoZSB0d28gYXJlIHNldCB0b2dldGhlciwgYGNvbHVtbnNgIGlzIG9taXR0ZWQgKHRoZVxuICAvLyBiYWNrZW5kIHJlamVjdHMgYXV0aG9yaW5nIGJvdGgpLCBhbmQgdGhlIGNvbHVtbiBzZXQgYXJyaXZlcyB3aXRoIHRoZSByb3dzXG4gIC8vIGluIENvbXBvbmVudERhdGEuY29sdW1ucyBiZWNhdXNlIG9ubHkgdGhlIHJlc3VsdCBrbm93cyB0aGUgcGl2b3QgdmFsdWVzLlxuICAvLyByb3dCeS5sYWJlbCBoZWFkcyB0aGUgc2lkZSBjb2x1bW4gb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQsIGFuZFxuICAvLyBkZWZhdWx0cyB0byB0aGUgY29sdW1uIG5hbWUuIHBpdm90QnkgY2FycmllcyBubyBsYWJlbDogaXRzIHZhbHVlcyBhcmUgdGhlXG4gIC8vIGhlYWRpbmdzLlxuICByb3dCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIHBpdm90Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFRoZSBhdXRob3JlZCBvcmRlciwgbW9zdCBpbXBvcnRhbnQgZmlyc3QuIEEgbGlzdCBzYXZlZCBiZWZvcmUgbXVsdGkta2V5XG4gIC8vIHNvcnRpbmcgc3RvcmVzIG9uZSBvYmplY3QsIHNvIHJlYWQgaXQgdGhyb3VnaCBsaXN0U29ydFRlcm1zKCkgb25seS5cbiAgc29ydD86IFJlcG9ydFNvcnQgfCBSZXBvcnRTb3J0W107XG4gIC8vIEhvdyBtYW55IGxlYWRpbmcgY29sdW1ucyBzdGF5IGluIHZpZXcgd2hpbGUgdGhlIGxpc3Qgc2Nyb2xscyBzaWRld2F5c1xuICAvLyAoMC0zKS4gVW5zZXQsIGEgY3Jvc3MtdGFiIHBpbnMgaXRzIHJvdy1rZXkgY29sdW1uIGFuZCBhIHBsYWluIGxpc3Qgbm9uZS5cbiAgcGlubmVkQ29sdW1ucz86IG51bWJlciB8IG51bGw7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICAvLyB0cnVlIGFkZHMgYSB0b3RhbHMgcm93IHVuZGVyIHRoZSBsaXN0OiB0aGUgc2VydmVyIHJ1bnMgdGhlIG1lYXN1cmVzIGFnYWluXG4gIC8vIG92ZXIgZXZlcnkgcm93IHRoZSBmaWx0ZXJzIGtlZXAsIHdpdGhvdXQgZ3JvdXBpbmcsIGFuZCBhIGNyb3NzLXRhYiB0b3RhbHNcbiAgLy8gZWFjaCBjb2x1bW4uXG4gIHRvdGFscz86IGJvb2xlYW47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IGhvdyBldmVyeSBjZWxsIG9mIHRoZSBncmlkIGlzIGZvcm1hdHRlZCwgd2l0aCBhIEtQSVxuICAvLyBtZWFzdXJlJ3Mga2V5cy4gVGhlIHJvdyBrZXkgY29sdW1uIHN0YXlzIGFzIGl0IGNhbWUuXG4gIGNlbGxGb3JtYXQ/OiBOdW1iZXJGb3JtYXRTcGVjICYgeyBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdCB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNvbmZpZyB7XG4gIG1lYXN1cmU/OiBDaGFydE1lYXN1cmU7XG4gIC8vIFdoZXRoZXIgYSByaXNlIGluIHRoZSB2YWx1ZSBpcyBnb29kIG5ld3MsIGJhZCBuZXdzIG9yIG5laXRoZXI6IGl0IHBpY2tzXG4gIC8vIHRoZSBkZWx0YSdzIGNvbG9yIGFuZCBkZWNpZGVzIHdoZW4gYSB0YXJnZXQgaXMgbWV0IChnb29kOiBhdCBvciBhYm92ZSBpdDtcbiAgLy8gYmFkOiBhdCBvciBiZWxvdyBpdDsgbmV1dHJhbDogbmV2ZXIganVkZ2VkKS4gT21pdHRlZCBvciBudWxsIHJlYWRzIGdvb2QuXG4gIGluY3JlYXNlSXM/OiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB8IG51bGw7XG4gIC8vIEEgbnVtYmVyIHRoZSB1c2VyIGdhdmUgZm9yIHRoZSB2YWx1ZSB0byByZWFjaCwgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZVxuICAvLyBkYXRhLiBUaGUgc2VydmVyIHNlbmRzIHRoZSBwcm9ncmVzcyB0b3dhcmQgaXQgd2l0aCB0aGUgZGF0YS5cbiAgdGFyZ2V0PzogS3BpVGFyZ2V0Q29uZmlnIHwgbnVsbDtcbiAgLy8gQSBzbWFsbCB0cmVuZCBsaW5lIG9mIHRoZSB2YWx1ZSBvdmVyIGl0cyBsYXN0IHBlcmlvZHMsIGRyYXduIHVuZGVyIGl0LlxuICBzcGFya2xpbmU/OiBLcGlTcGFya2xpbmVDb25maWcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHRhcmdldDogdGhlIHZhbHVlLCBhbmQgYW4gb3B0aW9uYWwgY2FwdGlvbiBmb3IgaXQgKCdHb2FsJykuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVRhcmdldENvbmZpZyB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmU6IGhvdyB3aWRlIGVhY2ggcG9pbnQncyBwZXJpb2QgaXMgKG51bGwgcmVhZHMgbW9udGgpIGFuZFxuLy8gaG93IG1hbnkgcGVyaW9kcyBpdCBkcmF3cywgMiB0byA2MCAobnVsbCByZWFkcyAxMikuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVNwYXJrbGluZUNvbmZpZyB7XG4gIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIHBlcmlvZHM/OiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNvcnQge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlclR5cGUgPSAnZGF0ZVJhbmdlJyB8ICdzZWxlY3QnIHwgJ2tleXdvcmQnIHwgJ251bWJlclJhbmdlJztcblxuLy8gV2hlcmUgYSBmaWx0ZXIgZ3JvdXAncyBjb250cm9sIGlzIGV4cG9zZWQuIEEgZ3JvdXAgY2FuIGJlIHNob3duIG9uIGl0c1xuLy8gY29tcG9uZW50cywgaW4gdGhlIHJlcG9ydCBiYXIsIG9yIEJPVEggYXQgb25jZSAodGhlIHR3byBhcmUgaW5kZXBlbmRlbnRcbi8vIHRvZ2dsZXMgaW4gdGhlIFVJKTsgYSBjb2x1bW4gd2l0aCBuZWl0aGVyIGV4cG9zZWQgc2ltcGx5IGhhcyBubyBmaWx0ZXIuXG4vLyAncGFnZScgc2hvd3MgaXQgaW4gdGhlIHJlcG9ydCBiYXIgb2Ygb25lIHBhZ2Ugb25seSAoUmVwb3J0RmlsdGVyR3JvdXAucGFnZUlkKS5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlckxldmVsID0gJ2NvbXBvbmVudCcgfCAncmVwb3J0JyB8ICdib3RoJyB8ICdwYWdlJztcblxuLy8gT25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBvZiBhIGNvbXBvbmVudCdzIFNRTCwgd2l0aCB0aGUgZmlsdGVyIGludGVyZmFjZVxuLy8gSU5GRVJSRUQgZnJvbSBpdHMgZGF0YSAodGhlIGh1bWFuIG5ldmVyIHBpY2tzIHRoZSBpbnRlcmZhY2Ug4oCUIGl0IGZvbGxvd3MgdGhlXG4vLyBjb2x1bW4ncyB0eXBlKS4gRHJpdmVzIHRoZSBGaWx0ZXJzIHRhYiBsaXN0aW5nLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJhYmxlQ29sdW1uIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIC8vIEV2ZXJ5IGludGVyZmFjZSB0aGUgY29sdW1uIGNhbiB0YWtlLCB0aGUgaW5mZXJyZWQgb25lICh0eXBlKSBmaXJzdDogYVxuICAvLyBudW1lcmljIGNvbHVtbiB0YWtlcyBbJ3NlbGVjdCcsICdudW1iZXJSYW5nZSddLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgdHlwZXM/OiBSZXBvcnRGaWx0ZXJUeXBlW107XG59XG5cbi8vIEdyb3VuZCB0cnV0aDogb25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBPTiBvbmUgY29tcG9uZW50J3MgU1FMLiBBbHdheXMgYVxuLy8gbWVtYmVyIG9mIGEgZmlsdGVyIGdyb3VwIOKAlCB0aGUgdW5pdCB0aGF0IGxpbmtzIGVxdWl2YWxlbnQgZmlsdGVycyBhY3Jvc3Ncbi8vIGNvbXBvbmVudHMgYW5kIGRlY2lkZXMgd2hlcmUgdGhlIGNvbnRyb2wgcmVuZGVycyAoY29tcG9uZW50IHZzIHJlcG9ydCBiYXIpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRJZDogbnVtYmVyO1xuICBmaWx0ZXJHcm91cElkOiBudW1iZXI7XG4gIGZpbHRlckNvbHVtbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaGFzT3B0aW9uczogYm9vbGVhbjtcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gT25lIGNob2ljZSBpbiBhIHNlbGVjdCBmaWx0ZXIncyBvcHRpb24gbGlzdC4gVGhlIHZhbHVlIGlzIHdoYXQgdGhlIGZpbHRlclxuLy8gbWF0Y2hlcyBvbiBhbmQgZ2V0cyBzdG9yZWQgaW4gYSBzYXZlZCBkZWZhdWx0IOKAlCBmb3IgYW4gZW50aXR5IHRoYXQgaXMgaXRzXG4vLyBzdGFibGUgaWQsIG5ldmVyIGl0cyBuYW1lLCBzbyByZW5hbWluZyB0aGUgZW50aXR5IG1vdmVzIHRoZSBsYWJlbCB3aXRob3V0XG4vLyBicmVha2luZyB0aGUgZGVmYXVsdC4gVGhlIGxhYmVsIGlzIG9ubHkgZXZlciB3aGF0IHRoZSB2aWV3ZXIgcmVhZHMuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlck9wdGlvbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlckdyb3VwIHtcbiAgaWQ6IG51bWJlcjtcbiAgLy8gVGhlIGdyb3VwJ3MgaWRlbnRpZmllciwgdW5pcXVlIGluIHRoZSByZXBvcnQ6IGNhbWVsQ2FzZSwgYSBsZXR0ZXIgZmlyc3QsXG4gIC8vIHRoZW4gbGV0dGVycyBhbmQgZGlnaXRzLiBTZXQgYXBhcnQgZnJvbSB0aGUgbGFiZWw6IGEgbmV3IGxhYmVsIG5ldmVyXG4gIC8vIGNoYW5nZXMgaXQsIGFuZCBpdCBpcyBlZGl0ZWQgb24gaXRzIG93biAoUmVwb3J0IHNldHRpbmdzID4gRmlsdGVycykuXG4gIC8vIFRpbGVzIGFuZCBzYXZlZCB2aWV3cyBiaW5kIHRoZSBncm91cCBieSBpZCwgbmV2ZXIgYnkgbmFtZS4gT3B0aW9uYWxcbiAgLy8gYmVjYXVzZSBhbiBvbGRlciBzZXJ2ZXIgc2VuZHMgbm9uZS5cbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIGxldmVsOiBSZXBvcnRGaWx0ZXJMZXZlbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgY29uZmlnOiB7IGRlZmF1bHQ/OiBGaWx0ZXJHcm91cERlZmF1bHQgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbiAgLy8gVGhlIHBhZ2Ugd2hvc2UgcmVwb3J0IGJhciBzaG93cyB0aGUgZ3JvdXA6IHNldCBvbmx5IHdoZW4gbGV2ZWwgaXMgJ3BhZ2UnLFxuICAvLyBudWxsIG90aGVyd2lzZS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIHBhZ2VJZD86IG51bWJlciB8IG51bGw7XG4gIC8vIFRoZSBjb21wb25lbnRzIG9mIHRoZSBncm91cCdzIGFjdGl2ZSwgZW5hYmxlZCBtZW1iZXJzIHRoYXQgYXJlIHRpbGVzXG4gIC8vIChjaGFydCwgbGlzdCwgS1BJKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIGNvbXBvbmVudElkcz86IG51bWJlcltdO1xuICAvLyBUcnVlIHdoZW4gYW4gZW5hYmxlZCBtZW1iZXIgYmluZHMgc2V2ZXJhbCBjb2x1bW5zLCB3aGVyZSB2YWx1ZXMgY2Fubm90XG4gIC8vIGJlIGxlZnQgb3V0OiB0aGUgZ3JvdXAgb2ZmZXJzIG5vICdFeGNsdWRlIHRoZXNlJyAob2ZmZXJzRXhjbHVkZSkuIEFic2VudFxuICAvLyBvbiBvbGRlciBzZXJ2ZXJzLlxuICBtdWx0aUNvbHVtbj86IGJvb2xlYW47XG4gIC8vIEEgc2VsZWN0IGdyb3VwJ3MgbGFiZWwgZm9yIGEgYmxhbmsgcm93LCBudWxsIHdoZW4gYmxhbmsgcm93cyBoYXZlIG5vbmU6XG4gIC8vIGFuIGV4Y2x1ZGUgbGluZSBzYXlzIHdoZXRoZXIgdGhlIGJsYW5rIHJvd3MgYXJlIGtlcHQuIFNlbnQgZm9yIHNlbGVjdFxuICAvLyBncm91cHMgb25seSwgYW5kIGFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICBibGFua0xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBmaWx0ZXIgZ3JvdXAncyB2YWx1ZSBpbiBpdHMgc3RvcmVkIHNoYXBlOiBpdHMgYXV0aG9yZWQgZGVmYXVsdCAodGhlIHZhbHVlXG4vLyB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uIGV2ZXJ5IG9wZW4pLCBhIHZhbHVlIHRoZSBhc3Npc3RhbnQgcnVucyBpdCBhdFxuLy8gYW5kIGl0cyB2YWx1ZSBpbiBhIHNhdmVkIHZpZXcuIFNoYXBlIGZvbGxvd3MgdGhlIGdyb3VwJ3MgdHlwZTogZGF0ZVJhbmdlXG4vLyB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZCBjYWxlbmRhci1kYXkgcmFuZ2UpIG9yIGEgcmVsYXRpdmUgcHJlc2V0OyBzZWxlY3Rcbi8vIHVzZXMgdmFsdWVzIG9yIGV4Y2x1ZGVWYWx1ZXMsIG5ldmVyIGJvdGg7IGtleXdvcmQgdXNlcyB2YWx1ZTsgbnVtYmVyUmFuZ2Vcbi8vIHVzZXMgbWluIGFuZCBtYXguXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwRGVmYXVsdCB7XG4gIC8vIGRhdGVSYW5nZSByZWxhdGl2ZSBwcmVzZXQsIHJlc29sdmVkIG9uIGV2ZXJ5IG9wZW4gYWdhaW5zdCB0b2RheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3MgZWZmZWN0aXZlIHpvbmUgKFJlcG9ydC5lZmZlY3RpdmVUaW1lem9uZSkuIE9uZSBvZjogdGhpc1dlZWssXG4gIC8vIGxhc3RXZWVrLCBsYXN0N0RheXMsIGxhc3QzMERheXMsIGxhc3QzTW9udGhzLCBsYXN0Nk1vbnRocywgbGFzdDEyTW9udGhzLFxuICAvLyB0aGlzTW9udGgsIHRoaXNRdWFydGVyLCB0aGlzWWVhci95ZWFyVG9EYXRlLiBXZWVrcyBydW4gTW9uZGF5IHRvIFN1bmRheSxcbiAgLy8gdGhlIHNhbWUgd2Vla3MgdGhlIHNlcnZlcidzIHdlZWtseSB0aW1lIGJ1Y2tldHMgdXNlLlxuICByZWxhdGl2ZT86IHN0cmluZztcbiAgc3RhcnQ/OiBzdHJpbmc7IC8vIGRhdGVSYW5nZSBmaXhlZCBzdGFydCAoeXl5eS1NTS1kZClcbiAgZW5kPzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgZW5kICh5eXl5LU1NLWRkKVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdCBkZWZhdWx0IHBpY2tlZCB2YWx1ZXNcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmQgZGVmYXVsdCB0ZXh0XG4gIC8vIHNlbGVjdDogdGhlIHZhbHVlcyB0byBsZWF2ZSBvdXQgKHJvd3Mgd2l0aCBhIGJsYW5rIHZhbHVlIGFyZSBrZXB0KS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kcywgZWl0aGVyIG9uZSBvcGVuIChhYnNlbnQpLiAwIGlzIGFuXG4gIC8vIGVuZCBsaWtlIGFueSBvdGhlci5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFRoZSBzZXNzaW9uIHZhbHVlIG9mIGEgZmlsdGVyIGdyb3VwOiBzaGFwZSBkZXBlbmRzIG9uIHRoZSBncm91cCdzIHR5cGUuIE5vdFxuLy8gc3RvcmVkIG9uIHRoZSBzZXJ2ZXI6IGl0IGxpdmVzIGluIHRoZSBvcGVuIHJlcG9ydCdzIHN0YXRlXG4vLyAoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlKSwgYW5kIGEgc2F2ZWQgdmlldyBrZWVwcyBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXBWYWx1ZSB7XG4gIHN0YXJ0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICBlbmQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIHZhbHVlcz86IHVua25vd25bXTsgLy8gc2VsZWN0XG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkXG4gIC8vIGRhdGVSYW5nZSBvbmx5OiB0aGUgcmVsYXRpdmUgcHJlc2V0IG5hbWUgdGhlc2UgZGF0ZXMgd2VyZSByZXNvbHZlZCBmcm9tXG4gIC8vIChhIEZpbHRlckdyb3VwRGVmYXVsdC5yZWxhdGl2ZSBuYW1lKS4gU2V0IG9ubHkgd2hlbiB0aGUgdmFsdWUgd2FzIHNlZWRlZFxuICAvLyBmcm9tIHRoZSBncm91cCdzIHJlbGF0aXZlIGRlZmF1bHQgb3Igb3BlbmVkIGZyb20gYSB2aWV3IHRoYXQga2VlcHMgb25lLFxuICAvLyBzbyB0aGUgcmFuZ2Uga2VlcHMgcm9sbGluZyAoJ2xhc3QzMERheXMnKSBpbnN0ZWFkIG9mIGZyZWV6aW5nIHR3byBkYXRlc1xuICAvLyAoYSB2aWV3IHNhdmVkIHdpdGggaXQga2VlcHMgdGhlIG5hbWUpLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGVcbiAgLy8gcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgZGF0ZSBwaWNrZXJcbiAgLy8gcHJlc2V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0LiBTd2l0Y2hpbmcgYSBzZWxlY3QgYmV0d2VlbiBrZWVwaW5nIGFuZFxuICAvLyBsZWF2aW5nIG91dCBtb3ZlcyBpdHMgbGlzdCBmcm9tIHZhbHVlcyB0byBleGNsdWRlVmFsdWVzLlxuICBleGNsdWRlVmFsdWVzPzogdW5rbm93bltdO1xuICAvLyBudW1iZXJSYW5nZTogdGhlIGxvdyBhbmQgaGlnaCBlbmRzOyBudWxsIG9yIGFic2VudCA9IG9wZW4uXG4gIG1pbj86IG51bWJlciB8IG51bGw7XG4gIG1heD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgcmVsYXRpdmUgZGF0ZSByYW5nZSB0aGUgc2VydmVyIHJlc29sdmVzIGFnYWluc3QgdG9kYXkgaW4gdGhlIHJlcG9ydCdzXG4vLyB6b25lOiB0aGUgbmFtZXMgYSBGaWx0ZXJHcm91cERlZmF1bHQucmVsYXRpdmUgYW5kIGEgdGltZWZyYW1lJ3MgcmFuZ2UgdGFrZS5cbi8vIE1pcnJvcnMgdGhlIHNlcnZlcidzIFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtIHZhbHVlIGZvciB2YWx1ZVxuLy8gKFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtVGVzdCBwaW5zIHRoZSBkYXlzIGVhY2ggb25lIGNvdmVycykuXG5leHBvcnQgdHlwZSBSZXBvcnRSZWxhdGl2ZVJhbmdlID1cbiAgfCAndGhpc1dlZWsnXG4gIHwgJ2xhc3RXZWVrJ1xuICB8ICdsYXN0N0RheXMnXG4gIHwgJ2xhc3QzMERheXMnXG4gIHwgJ2xhc3QzTW9udGhzJ1xuICB8ICdsYXN0Nk1vbnRocydcbiAgfCAnbGFzdDEyTW9udGhzJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNRdWFydGVyJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAneWVhclRvRGF0ZSc7XG5cbi8vIE9uZSByZXNvbHZlZCBmaWx0ZXIgc2VudCB3aXRoIGEgY29tcG9uZW50J3MgZGF0YSByZXF1ZXN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZEZpbHRlclZhbHVlIHtcbiAgZmlsdGVySWQ6IG51bWJlcjtcbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgdmFsdWVzPzogdW5rbm93bltdO1xuICB2YWx1ZT86IHN0cmluZztcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSByYW5nZSBzdGFydCBhbmQgZW5kIHN0aWxsIGFyZSwgc2VudCBvbmx5XG4gIC8vIHdoaWxlIHRoZXkgYXJlIGV4YWN0bHkgdGhhdCByYW5nZSByZXNvbHZlZCB0b2RheSBpbiB0aGUgcmVwb3J0J3Mgem9uZS4gSXRcbiAgLy8gdGVsbHMgdGhlIHNlcnZlciB3aGljaCBwZXJpb2QgdGhlIGRheXMgY292ZXIgKG9uIHRoZSBmaXJzdCBkYXlzIG9mIGFcbiAgLy8gcXVhcnRlciwgdGhpc01vbnRoIGFuZCB0aGlzUXVhcnRlciBhcmUgdGhlIHNhbWUgZGF5cyksIHNvIGEgY29tcGFyaXNvblxuICAvLyBzaGlmdHMgYnkgdGhlIHJpZ2h0IHVuaXQuIHN0YXJ0IGFuZCBlbmQgc3RheSB0aGUgd2luZG93OyBhIHNlcnZlciB0aGF0XG4gIC8vIGRvZXMgbm90IGtub3cgdGhlIGtleSBpZ25vcmVzIGl0LlxuICBwcmVzZXQ/OiBSZXBvcnRSZWxhdGl2ZVJhbmdlO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0IChzZW50IGluc3RlYWQgb2YgdmFsdWVzKS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kczsgYW4gb3BlbiBlbmQgaXMgbGVmdCBvdXQsIDAgaXMgc2VudC5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGVcbi8vIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbiAgLy8gQSBjaGFydCdzIGRyaWxsIHBhdGgsIHRvcCBmaXJzdC4gVGhlIGRyaWxsZWQgbGV2ZWwgd2lucyBvdmVyIGZyZXF1ZW5jeVxuICAvLyBmb3IgdGhpcyB0aWxlLlxuICBkcmlsbD86IFJlcG9ydERyaWxsU3RlcFtdO1xuICAvLyBXaGlsZSBtYXRjaCBpcyBhbnk6IHRoZSBlbGlnaWJsZSBncm91cHMgdGhhdCBoYXZlIGEgdmFsdWUuXG4gIG1hdGNoQW55R3JvdXBJZHM/OiBudW1iZXJbXTtcbiAgLy8gU2V0IG9ubHkgb24gYSByZXF1ZXN0IHNlbnQgYmVjYXVzZSB0aGUgY3Jvc3MtZmlsdGVyIGNoYW5nZWQsIGZvciBhIHRpbGVcbiAgLy8gd2hvc2UgbGFzdCByZWFkIGFwcGxpZWQgbm8gY3Jvc3MgZW50cnk6IHRoZSBzZXJ2ZXIgbWF5IGFuc3dlclxuICAvLyB1bmNoYW5nZWQgaW5zdGVhZCBvZiByZWFkaW5nIHRoZSByb3dzIGFnYWluLiBFeHBvcnRzIG5ldmVyIHNldCBpdC5cbiAgdW5jaGFuZ2VkSWZVbnJlYWNoZWQ/OiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGEge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgcGFnaW5nPzogeyB0b3RhbDogbnVtYmVyOyBwYWdlOiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfTtcbiAgdHJ1bmNhdGVkOiBib29sZWFuO1xuICAvLyBUaGUgZWZmZWN0aXZlIHRpbWUgYnVja2V0IHRoZSByb3dzIHdlcmUgZ3JvdXBlZCBpbnRvIChhZnRlciBhbnkgZ3JvdXAtYnlcbiAgLy8gb3ZlcnJpZGUpLCBvciBudWxsIGZvciBhIG5vbi10aW1lIGF4aXMuIERyaXZlcyB0aGUgY29tcGFjdCB4LWF4aXMgbGFiZWxzLlxuICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBzZWFyY2hlZCBsaXN0IHdob3NlIHNlYXJjaCBjb3VsZCBub3QgYXBwbHkgKHRoZSBsaXN0IGhhcyBub1xuICAvLyB0ZXh0IGNvbHVtbiB0byBzZWFyY2gpOiB3aHkgdGhlIHJvd3MgYXJlIG5vdCBuYXJyb3dlZC4gQWJzZW50IG90aGVyd2lzZS5cbiAgc2VhcmNoTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFBhZ2UgMSBvZiBhIGxpc3Qgd2l0aCBjb25maWcudG90YWxzIG9uOiBpdHMgdG90YWxzIHJvdywgYXMgcmF3IHZhbHVlc1xuICAvLyBrZXllZCBsaWtlIHRoZSBjb2x1bW5zIChhIHBsYWluIGxpc3QncyBtZWFzdXJlIGFsaWFzZXM7IGEgY3Jvc3MtdGFiJ3NcbiAgLy8gcGl2b3QgY2VsbCBjb2x1bW5zLCB0aGUgcm93LWtleSBjb2x1bW4gYWJzZW50KSwgb3IgbnVsbCB3aXRoIHRvdGFsc05vdGVcbiAgLy8gc2F5aW5nIHdoeSB0aGVyZSBpcyBub25lLiBBYnNlbnQgb24gZXZlcnkgb3RoZXIgcGFnZSBhbmQgbGlzdC5cbiAgdG90YWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICB0b3RhbHNOb3RlPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHdpbmRvdyBvZiBkYXlzIHRoZSBjb21wb25lbnQgcmVhZHMsIHdoZW4gaXRzIHF1ZXJ5IGhhcyBhIHRpbWVmcmFtZS5cbiAgLy8gQWJzZW50IG90aGVyd2lzZSwgYW5kIGZyb20gb2xkZXIgc2VydmVycy5cbiAgdGltZWZyYW1lPzogQ29tcG9uZW50VGltZWZyYW1lIHwgbnVsbDtcbiAgLy8gVGhlIGN1cnJlbnQgYW5kIHByaW9yIHdpbmRvd3Mgb2YgYSBjb21wb25lbnQgd2hvc2UgbWVhc3VyZXMgY29tcGFyZVxuICAvLyBhZ2FpbnN0IGFuIGVhcmxpZXIgcGVyaW9kLiBBYnNlbnQgd2hlbiBubyBtZWFzdXJlIGNvbXBhcmVzLiBTZW50IG9uIGV2ZXJ5XG4gIC8vIGxpc3QgcGFnZSBhbmQgb24gY2hhcnQgYW5kIEtQSSBkYXRhLlxuICBjb21wYXJpc29uPzogQ29tcG9uZW50Q29tcGFyaXNvbiB8IG51bGw7XG4gIC8vIFdoYXQgZWFjaCBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbiBpcywgYnkgYWxpYXMuXG4gIC8vIFBsYWluIG1lYXN1cmUgY29sdW1ucyBhcmUgbGVmdCBvdXQuXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBPdXRwdXRNZXRhPjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogdGhlIG1lYXN1cmUgYWxpYXMgZWFjaCBwaXZvdCBjZWxsIGNvbHVtbiBob2xkcywgc28gYVxuICAvLyBjZWxsIHRha2VzIGl0cyBtZWFzdXJlJ3Mgb3V0cHV0IG1lYW5pbmcuIE5ldmVyIHNlbnQgZm9yIGEgc3FsLW1vZGUgbGlzdC5cbiAgY2VsbE1lYXN1cmVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLy8gSG93IGVhY2ggd2luZG93ZWQgb3V0cHV0IGNvbHVtbiAocnVubmluZywgdG8tZGF0ZSBvciByb2xsaW5nKSB3YXNcbiAgLy8gY29tcHV0ZWQsIGJ5IGFsaWFzLlxuICB3aW5kb3dzPzogUmVjb3JkPHN0cmluZywgV2luZG93TWV0YT47XG4gIC8vIEEgS1BJIHdpdGggYSBjb21wYXJpc29uLCBhIHRhcmdldCBvciBhIHNwYXJrbGluZTogZXZlcnkgbnVtYmVyIHRoZSBjYXJkXG4gIC8vIHNob3dzIGJlc2lkZSBpdHMgdmFsdWUsIGRlY2lkZWQgYnkgdGhlIHNlcnZlci5cbiAga3BpPzogQ29tcG9uZW50S3BpIHwgbnVsbDtcbiAgLy8gVGhlIHRpbWUtYXhpcyB2YWx1ZSBvZiB0aGUgYnVja2V0IGNvbnRhaW5pbmcgdG9kYXksIHdyaXR0ZW4gYXMgdGhlIHJvd3NcbiAgLy8gd3JpdGUgaXQsIHdoZW4gdGhhdCBidWNrZXQgaXMgbm90IGZpbmlzaGVkIHlldDsgbnVsbCBvdGhlcndpc2UuIEEgY2hhcnRcbiAgLy8gbWFya3MgaXQgYXMgcGFydGlhbC5cbiAgcGFydGlhbFBlcmlvZD86IHN0cmluZyB8IG51bGw7XG4gIC8vIFdoaWNoIGZpbHRlcnMgdGhlIHJlYWQgYXBwbGllZC4gQWJzZW50IGZyb20gb2xkZXIgc2VydmVycy5cbiAgYXBwbGllZD86IENvbXBvbmVudERhdGFBcHBsaWVkO1xuICAvLyBBIGRyaWxsYWJsZSBjaGFydCdzIGRyaWxsIHN0YXRlLiBBYnNlbnQgb24gZXZlcnkgb3RoZXIgdGlsZSBhbmQgZnJvbVxuICAvLyBvbGRlciBzZXJ2ZXJzLlxuICBkcmlsbD86IENvbXBvbmVudERhdGFEcmlsbDtcbn1cblxuLy8gV2hlcmUgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgd2luZG93IGNhbWUgZnJvbTogYSB2aWV3ZXIgZGF0ZVJhbmdlIGJvdW5kIHRvXG4vLyB0aGUgdGltZWZyYW1lIGNvbHVtbiAod2hpY2ggcmVwbGFjZXMgdGhlIGF1dGhvcmVkIHJhbmdlLCBuZXZlciBuYXJyb3dzXG4vLyBpdCksIHRoZSBhdXRob3JlZCByZWxhdGl2ZSByYW5nZSwgdGhlIGF1dGhvcmVkIGZpeGVkIGRheXMsIG9yIG5vdGhpbmcgKGFuXG4vLyBvcGVuIHdpbmRvdykuXG5leHBvcnQgdHlwZSBUaW1lZnJhbWVTb3VyY2UgPSAnZmlsdGVyJyB8ICdyYW5nZScgfCAnZml4ZWQnIHwgJ25vbmUnO1xuXG4vLyBUaGUgd2luZG93IGEgY29tcG9uZW50J3MgdGltZWZyYW1lIHJlc29sdmVkIHRvLiBzdGFydCBhbmQgZW5kIGFyZVxuLy8gaW5jbHVzaXZlICd5eXl5LU1NLWRkJyBkYXlzIGluIHRoZSByZXBvcnQncyB6b25lLCB3cml0dGVuIHdpdGhvdXQgYSB6b25lLlxuLy8gdGhyb3VnaCBpcyB0aGUgVVRDICd5eXl5LU1NLWRkIEhIOm1tOnNzJyBpbnN0YW50IGEgd2luZG93IG9uIGEgZGF0ZXRpbWVcbi8vIGNvbHVtbiBpcyBjdXQgYXQ7IGl0IHJlYWRzIGFzIGEgdGltZSBpbiB0aGUgcmVwb3J0IHpvbmUuIEl0IGlzIHNldCBvbmx5IHdoZW5cbi8vIGEgY29tcGFyaXNvbiBjdXRzIGEgd2luZG93IHRoYXQgZW5kcyB0b2RheTogYSB0aW1lZnJhbWUgb24gaXRzIG93biByZWFkc1xuLy8gd2hvbGUgZGF5cywgc28gYSB3aW5kb3cgZW5kaW5nIHRvZGF5IHdpdGhvdXQgYSBjb21wYXJpc29uIHNlbmRzIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRpbWVmcmFtZSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICB0aHJvdWdoOiBzdHJpbmcgfCBudWxsO1xuICByYW5nZTogUmVwb3J0UmVsYXRpdmVSYW5nZSB8IG51bGw7XG4gIHNvdXJjZTogVGltZWZyYW1lU291cmNlO1xufVxuXG4vLyBIb3cgYSBjb21wYXJpc29uIGlzIGxhaWQgb3V0OiBvbmUgdmFsdWUgcGVyIHdpbmRvdyAocmFuZ2UpLCBhIHByaW9yIHNlcmllc1xuLy8gYmVzaWRlIGEgdGltZSBheGlzIChzZXJpZXMpLCBvciBlYWNoIHBlcmlvZCdzIHZhbHVlIHJlYWQgYXQgaXRzIGVuZCwgc2V0XG4vLyBhZ2FpbnN0IHRoZSB2YWx1ZSBhdCB0aGUgZW5kIG9mIGFuIGVhcmxpZXIgcGVyaW9kIChwZXJpb2RfZW5kKS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Nb2RlID0gJ3JhbmdlJyB8ICdzZXJpZXMnIHwgJ3BlcmlvZF9lbmQnO1xuXG4vLyB0b19kYXRlIGNvbXBhcmVzIGxpa2Ugd2l0aCBsaWtlICh0aGUgZmlyc3QgMiBkYXlzIG9mIGEgbW9udGggYWdhaW5zdCB0aGVcbi8vIGZpcnN0IDIgZGF5cyBvZiB0aGUgb25lIGJlZm9yZSk7IGZ1bGwgY29tcGFyZXMgd2hvbGUgcGVyaW9kcy5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BbGlnbiA9ICd0b19kYXRlJyB8ICdmdWxsJztcblxuLy8gV2hhdCBhIG1lYXN1cmUgaXMgY29tcGFyZWQgYWdhaW5zdC4gTWlycm9ycyB0aGUgc2VydmVyJ3Ncbi8vIENvbXBhcmlzb25BZ2FpbnN0RW51bSB2YWx1ZSBmb3IgdmFsdWUuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uQWdhaW5zdCA9XG4gIHwgJ3ByZXZpb3VzX3BlcmlvZCdcbiAgfCAncHJldmlvdXNfd2VlaydcbiAgfCAncHJldmlvdXNfbW9udGgnXG4gIHwgJ3ByZXZpb3VzX3F1YXJ0ZXInXG4gIHwgJ3ByZXZpb3VzX3llYXInXG4gIHwgJ3JhbmdlJztcblxuLy8gV2h5IGEgY29tcGFyaXNvbiByZWFkcyBhcyBpdCBkb2VzLiBUaGUgc2VydmVyIHNlbmRzIGNvZGVzLCBuZXZlclxuLy8gc2VudGVuY2VzOyB0aGUgdmlld2VyIHdvcmRzIHRoZW0uXG4vLyAtIG5vX3dpbmRvdzogbm8gZGF0ZSByYW5nZSB0byBjb21wYXJlIHlldDtcbi8vIC0gdW5pdF9pbmZlcnJlZDogdGhlIHBlcmlvZCB1bml0IHdhcyBpbmZlcnJlZCBmcm9tIHRoZSBkYXlzLCBub3QgbmFtZWQ7XG4vLyAtIHdpbmRvd19pbl9mdXR1cmU6IHRoZSB3aW5kb3cgc3RhcnRzIGFmdGVyIHRvZGF5O1xuLy8gLSBvdGhlcl9kYXRlX2ZpbHRlcjogYSBkYXRlIGZpbHRlciBvbiBhbm90aGVyIGNvbHVtbiBhbHNvIGFwcGxpZXM7XG4vLyAtIGdyYWluX2ZvbGxvd2VkOiB0aGUgcHJpb3IgZm9sbG93cyB0aGUgZ3JvdXAtYnkgZ3JhaW4gcGlja2VkIG9uIHRoZSByZXBvcnQuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uTm90ZUNvZGUgPVxuICB8ICdub193aW5kb3cnXG4gIHwgJ3VuaXRfaW5mZXJyZWQnXG4gIHwgJ3dpbmRvd19pbl9mdXR1cmUnXG4gIHwgJ290aGVyX2RhdGVfZmlsdGVyJ1xuICB8ICdncmFpbl9mb2xsb3dlZCc7XG5cbi8vIE9uZSBjb21wYXJpc29uIHdpbmRvdzogaW5jbHVzaXZlICd5eXl5LU1NLWRkJyBkYXlzIGluIHRoZSByZXBvcnQncyB6b25lLFxuLy8gYW5kIHRoZSBVVEMgaW5zdGFudCBpdCBpcyBjdXQgYXQgd2hlbiBpdCBlbmRzIHRvZGF5IG9uIGEgZGF0ZXRpbWUgY29sdW1uLlxuLy8gSW4gc2VyaWVzIG1vZGUgaXQgaXMgdGhlIHNwYW4gdGhlIGNoYXJ0IHNob3dzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uV2luZG93IHtcbiAgc3RhcnQ6IHN0cmluZztcbiAgZW5kOiBzdHJpbmc7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEhvdyBmYXIgYmFjayBvbmUgcHJpb3IgbGFuZSBzaXRzLiBBIGN1c3RvbSByYW5nZSBoYXMgbm8gdW5pdCBvciBjb3VudCwgYW5kXG4vLyBuZWl0aGVyIGRvZXMgcHJldmlvdXNfcGVyaW9kIHdoZW4gdGhlcmUgaXMgbm8gY3VycmVudCB3aW5kb3cgdG8gbWVhc3VyZVxuLy8gKG5vX3dpbmRvdywgd2luZG93X2luX2Z1dHVyZSk7IGEgc2hpZnQgYnkgdGhlIHdpbmRvdydzIGxlbmd0aCBpcyB1bml0IGRheVxuLy8gd2l0aCB0aGUgbGVuZ3RoIGFzIHRoZSBjb3VudDsgYSBwcmV2aW91cyB5ZWFyIGlzIDM2NCBkYXlzIG9uIGEgZGF5IGF4aXMgYW5kXG4vLyA1MiB3ZWVrcyBvbiBhIHdlZWsgYXhpcy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyaXNvbk9mZnNldCB7XG4gIGFnYWluc3Q6IENvbXBhcmlzb25BZ2FpbnN0O1xuICB1bml0OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgY291bnQ6IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgY29tcG9uZW50J3MgY29tcGFyaXNvbjogdGhlIHpvbmUgaXRzIGRheXMgYXJlIGluLCB0aGUgY3VycmVudCB3aW5kb3dcbi8vIChudWxsIHdoZW4gdGhlcmUgaXMgbm8gd2luZG93IHRvIGNvbXBhcmUgeWV0LCBvciB3aGVuIGEgdGltZSBheGlzIHJ1bnNcbi8vIG92ZXIgYWxsIHRoZSBkYXRhLCB3aGljaCBoYXMgbm8gZmlyc3QgZGF5IHRvIG5hbWUpIGFuZCB1cCB0byAyIHByaW9yXG4vLyBsYW5lczogb2Zmc2V0c1tpXSBkZXNjcmliZXMgbGFuZSBpICsgMSwgYW5kIHByaW9yc1tpXSBpdHMgd2luZG93LiBXaXRoIG5vXG4vLyBjdXJyZW50IHdpbmRvdyBwcmlvcnMgaXMgZW1wdHksIHdoaWxlIG9mZnNldHMgc3RpbGwgbmFtZXMgZXZlcnkgbGFuZS5cbi8vIGZsb29yIGlzIHRoZSAneXl5eS1NTS1kZCcgZGF5IG9mIHRoZSBmaXJzdCByb3cgdGhlIHF1ZXJ5J3Mgb3duIGNvbmRpdGlvbnNcbi8vIGtlZXAgKHZpZXdlciBmaWx0ZXJzIGFzaWRlKTogYSBwcmlvciB3aW5kb3cgd2hvbGx5IGJlZm9yZSBpdCBoYXMgbm8gZGF0YVxuLy8gcmF0aGVyIHRoYW4gYSB6ZXJvLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb21wYXJpc29uIHtcbiAgbW9kZTogQ29tcGFyaXNvbk1vZGU7XG4gIHRpbWV6b25lOiBzdHJpbmc7XG4gIGFsaWduOiBDb21wYXJpc29uQWxpZ247XG4gIGN1cnJlbnQ6IENvbXBhcmlzb25XaW5kb3cgfCBudWxsO1xuICBwcmlvcnM6IENvbXBhcmlzb25XaW5kb3dbXTtcbiAgb2Zmc2V0czogQ29tcGFyaXNvbk9mZnNldFtdO1xuICBmbG9vcjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IENvbXBhcmlzb25Ob3RlQ29kZVtdO1xufVxuXG4vLyBXaGF0IGFuIG91dHB1dCBjb2x1bW4gaG9sZHM6IGEgbWVhc3VyZSdzIHZhbHVlLCBpdHMgcmFuayBvciBpdHMgc2hhcmUuXG5leHBvcnQgdHlwZSBPdXRwdXRLaW5kID0gJ3ZhbHVlJyB8ICdyYW5rJyB8ICdzaGFyZSc7XG5cbi8vIFdoaWNoIHNpZGUgb2YgYSBjb21wYXJpc29uIGFuIG91dHB1dCBjb2x1bW4gaXM6IHRoZSBjdXJyZW50IHZhbHVlLCB0aGVcbi8vIHByaW9yIG9uZSwgdGhlaXIgZGlmZmVyZW5jZSwgb3IgdGhlIGRpZmZlcmVuY2UgYXMgYSAwLTEgZnJhY3Rpb24gb2YgdGhlXG4vLyBwcmlvci4gbnVsbCBmb3IgYW4gb3V0cHV0IHRoYXQgaXMgbm90IGNvbXBhcmVkLlxuZXhwb3J0IHR5cGUgT3V0cHV0Um9sZSA9ICdjdXJyZW50JyB8ICdwcmlvcicgfCAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIEhvdyB0aWVkIHZhbHVlcyByYW5rOiAxLCAxLCAzIChjb21wZXRpdGlvbikgb3IgMSwgMSwgMiAoZGVuc2UpLlxuZXhwb3J0IHR5cGUgT3V0cHV0UmFua01ldGhvZCA9ICdjb21wZXRpdGlvbicgfCAnZGVuc2UnO1xuXG4vLyBBIHJhbmsgb3V0cHV0OiBob3cgdGllcyByYW5rLCB3aGljaCBlbmQgcmFua3MgMSAoZGVzYzogdGhlIGxhcmdlc3QpLCBhbmRcbi8vIHRoZSBkaW1lbnNpb24gb3V0cHV0cyBpdCByZXN0YXJ0cyB3aXRoaW4gKG5vbmU6IHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSYW5rIHtcbiAgbWV0aG9kOiBPdXRwdXRSYW5rTWV0aG9kO1xuICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xuICB3aXRoaW46IHN0cmluZ1tdO1xufVxuXG4vLyBBIHNoYXJlIG91dHB1dDogdGhlIGRpbWVuc2lvbiBvdXRwdXRzIHdob3NlIHRvdGFsIGl0IGlzIGEgc2hhcmUgb2YgKG5vbmU6XG4vLyB0aGUgd2hvbGUgcmVzdWx0KS5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0U2hhcmUge1xuICB3aXRoaW46IHN0cmluZ1tdO1xufVxuXG4vLyBUaGUgbWVhbmluZyBvZiBvbmUgY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4uXG4vLyBtZWFzdXJlIGlzIHRoZSBzb3VyY2UgbWVhc3VyZSdzIGFsaWFzLCB3aG9zZSBmb3JtYXQgdGhlIGNvbHVtbiBpbmhlcml0cztcbi8vIG9mZnNldCBpcyB0aGUgcHJpb3IgbGFuZSBhIHByaW9yLCBjaGFuZ2Ugb3IgcGVyY2VudCBjaGFuZ2UgYmVsb25ncyB0byAoaXRzXG4vLyB3aW5kb3cgaXMgY29tcGFyaXNvbi5wcmlvcnNbb2Zmc2V0IC0gMV0pLiBVbmxlc3MgdGhlIGNvbmZpZyBmb3JtYXRzIGl0LCBhXG4vLyBzaGFyZSBwcmludHMgYXMgYSBwZXJjZW50IHRvIDEgZGVjaW1hbCBhbmQgYSByYW5rIGFzIGEgd2hvbGUgbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRNZXRhIHtcbiAgbWVhc3VyZTogc3RyaW5nO1xuICBraW5kOiBPdXRwdXRLaW5kO1xuICByb2xlOiBPdXRwdXRSb2xlIHwgbnVsbDtcbiAgb2Zmc2V0OiBudW1iZXIgfCBudWxsO1xuICB3aW5kb3c6IGJvb2xlYW47XG4gIHJhbms6IE91dHB1dFJhbmsgfCBudWxsO1xuICBzaGFyZTogT3V0cHV0U2hhcmUgfCBudWxsO1xufVxuXG4vLyBBIHdpbmRvdyBvdmVyIHRoZSByb3dzOiBhIHJ1bm5pbmcgdG90YWwsIGEgdG90YWwgdG8gZGF0ZSB3aXRoaW4gZWFjaFxuLy8gcGVyaW9kIChtb250aCB0byBkYXRlKSwgb3IgYSByb2xsaW5nIHNwYW4gb2YgcGVyaW9kcy5cbmV4cG9ydCB0eXBlIFdpbmRvd0tpbmQgPSAncnVubmluZycgfCAndG9fZGF0ZScgfCAncm9sbGluZyc7XG5cbi8vIFdoeSBhIHdpbmRvdyByZWFkcyBhcyBpdCBkb2VzLiBDb2RlcyBvbmx5OyB0aGUgdmlld2VyIHdvcmRzIHRoZW0uXG5leHBvcnQgdHlwZSBXaW5kb3dOb3RlQ29kZSA9XG4gIHwgJ3NuYXBwZWRfc3RhcnQnXG4gIHwgJ3NwYW5fY29udmVydGVkJ1xuICB8ICdncmFpbl90b29fY29hcnNlJ1xuICB8ICdlcXVhbF9ncmFpbl9wbGFpbidcbiAgfCAnb3duX2ZpbHRlcl9jYXBzX2xlYWRfaW4nXG4gIHwgJ3dlZWtfYnlfbW9uZGF5J1xuICB8ICdpbmNvbXBsZXRlX2hlYWQnO1xuXG4vLyBIb3cgb25lIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gd2FzIGNvbXB1dGVkLiBwZXJpb2RzIGFuZCB1bml0IHNpemUgYVxuLy8gcm9sbGluZyB3aW5kb3cgKGRyYXduUGVyaW9kcyBpcyB0aGF0IHNwYW4gY291bnRlZCBpbiB0aGUgZ3JhaW4gdGhlIHJvd3Ncbi8vIGFyZSBkcmF3biBhdCk7IHJlc2V0RXZlcnkgcmVzdGFydHMgYSB0by1kYXRlIHdpbmRvdzsgYXZlcmFnZSBtYWtlcyB0aGVcbi8vIHdpbmRvdyBhbiBhdmVyYWdlIHJhdGhlciB0aGFuIGEgdG90YWw7IGZyb21CZWdpbm5pbmdcbi8vIHJ1bnMgYSB0b3RhbCBmcm9tIHRoZSBmaXJzdCByb3cgZXZlciByYXRoZXIgdGhhbiBmcm9tIHRoZSBmaXJzdCByb3cgc2hvd24uXG4vLyBzdGFydCwgZW5kIGFuZCBsZWFkSW4gYXJlICd5eXl5LU1NLWRkJyByZXBvcnQtem9uZSBkYXlzOiB0aGUgcm93cyBzaG93bixcbi8vIGFuZCB0aGUgZWFybGllciBkYXkgdGhlIHdpbmRvdyByZWFkcyBmcm9tIHNvIGl0cyBmaXJzdCByb3dzIGFyZSB3aG9sZS5cbi8vIGRlc2NyaXB0aW9uIGlzIHRoZSBzZXJ2ZXIncyBFbmdsaXNoIGZvciB0aGUgYWdlbnQgYW5kIHRoZSBleHBvcnRzOyB0aGVcbi8vIHZpZXdlciBjb21wb3NlcyBpdHMgb3duIHdvcmRzIGZyb20gdGhlIGZpZWxkcy5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93TWV0YSB7XG4gIGtpbmQ6IFdpbmRvd0tpbmQ7XG4gIHBlcmlvZHM6IG51bWJlciB8IG51bGw7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBkcmF3blBlcmlvZHM6IG51bWJlciB8IG51bGw7XG4gIHJlc2V0RXZlcnk6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBhdmVyYWdlOiBib29sZWFuO1xuICBmcm9tQmVnaW5uaW5nOiBib29sZWFuO1xuICBkYXRlQ29sdW1uOiBzdHJpbmcgfCBudWxsO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICBsZWFkSW46IHN0cmluZyB8IG51bGw7XG4gIG5vdGVzOiBXaW5kb3dOb3RlQ29kZVtdO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vLyBXaGljaCBkZWx0YSBhIEtQSSBjYXJkIHNob3dzOiB0aGUgZGlmZmVyZW5jZSwgb3IgdGhlIHBlcmNlbnQgY2hhbmdlLlxuZXhwb3J0IHR5cGUgS3BpRGVsdGFTaG93ID0gJ2NoYW5nZScgfCAncGVyY2VudF9jaGFuZ2UnO1xuXG4vLyBXaHkgYSBLUEkncyBkZWx0YSByZWFkcyBhcyBpdCBkb2VzOlxuLy8gLSBub19wcmlvcl9kYXRhOiB0aGUgcHJpb3Igd2luZG93IGhhcyBubyB2YWx1ZTtcbi8vIC0gdXBfZnJvbV96ZXJvOiB0aGUgcHJpb3Igd2FzIDAsIHNvIHRoZXJlIGlzIG5vIHBlcmNlbnQgY2hhbmdlO1xuLy8gLSBub19jaGFuZ2U6IGJvdGggYXJlIDA7XG4vLyAtIG5vX2RhdGFfZWl0aGVyOiBuZWl0aGVyIHdpbmRvdyBoYXMgYSB2YWx1ZTtcbi8vIC0gc2lnbl9jaGFuZ2U6IHRoZSB2YWx1ZSBjcm9zc2VkIHplcm8sIHNvIHRoZXJlIGlzIG5vIHBlcmNlbnQgY2hhbmdlLlxuZXhwb3J0IHR5cGUgS3BpTm90ZUNvZGUgPVxuICB8ICdub19wcmlvcl9kYXRhJ1xuICB8ICd1cF9mcm9tX3plcm8nXG4gIHwgJ25vX2NoYW5nZSdcbiAgfCAnbm9fZGF0YV9laXRoZXInXG4gIHwgJ3NpZ25fY2hhbmdlJztcblxuLy8gQSBLUEkncyBwcm9ncmVzcyB0b3dhcmQgaXRzIGNvbmZpZ3VyZWQgdGFyZ2V0LiBwcm9ncmVzcyBpcyB2YWx1ZSAvIHRhcmdldFxuLy8gKG51bGwgd2hlbiB0aGUgdGFyZ2V0IGlzIDApOyBtZXQgZm9sbG93cyB0aGUgY29uZmlnJ3MgaW5jcmVhc2VJcyAobnVsbFxuLy8gd2hlbiBpdCBpcyBuZXV0cmFsKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpVGFyZ2V0IHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHByb2dyZXNzOiBudW1iZXIgfCBudWxsO1xuICBtZXQ6IGJvb2xlYW4gfCBudWxsO1xufVxuXG4vLyBPbmUgc3BhcmtsaW5lIHBvaW50OiB0aGUgcGVyaW9kLCB3cml0dGVuIGFzIGEgdGltZS1heGlzIHZhbHVlLCBhbmQgdGhlXG4vLyB2YWx1ZSBpbiBpdCAobnVsbCB3aGVuIGEgbm9uLWFkZGl0aXZlIG1lYXN1cmUgaGFzIG5vIHJvd3MgdGhlcmUpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlTcGFya2xpbmVQb2ludCB7XG4gIHBlcmlvZDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmUgcG9pbnRzLCBvbGRlc3QgZmlyc3QuIHBhcnRpYWwgc2F5cyB0aGUgbGFzdCBwZXJpb2QgaXNcbi8vIG5vdCBmaW5pc2hlZCB5ZXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZSB7XG4gIGdyYW51bGFyaXR5OiBDaGFydEdyYW51bGFyaXR5O1xuICBwYXJ0aWFsOiBib29sZWFuO1xuICBwb2ludHM6IENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50W107XG59XG5cbi8vIEV2ZXJ5IG51bWJlciBhIEtQSSBjYXJkIHNob3dzIGJlc2lkZSBpdHMgdmFsdWUuIHNob3cgbmFtZXMgdGhlIGRlbHRhIHRvXG4vLyBwcmludCwgZGVjaWRlZCBieSB0aGUgc2VydmVyLiBXaGVuIHZhbHVlIGlzIG51bGwgdGhlIGNhcmQgc2hvd3MgYSBkYXNoIGFuZFxuLy8gbm8gY29tcGFyaXNvbi5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpIHtcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG4gIHByaW9yOiBudW1iZXIgfCBudWxsO1xuICBjaGFuZ2U6IG51bWJlciB8IG51bGw7XG4gIHBlcmNlbnRDaGFuZ2U6IG51bWJlciB8IG51bGw7XG4gIHNob3c6IEtwaURlbHRhU2hvdztcbiAgbm90ZTogS3BpTm90ZUNvZGUgfCBudWxsO1xuICB0YXJnZXQ6IENvbXBvbmVudEtwaVRhcmdldCB8IG51bGw7XG4gIHNwYXJrbGluZTogQ29tcG9uZW50S3BpU3BhcmtsaW5lIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBDU1YgZXhwb3J0OiB0aGUgcHJlc2lnbmVkIGRvd25sb2FkIFVSTCwgcGx1cyBvbmUgc2VudGVuY2UgcGVyXG4vLyB3YXkgdGhlIGZpbGUgZmFsbHMgc2hvcnQgb2YgdGhlIGZ1bGwgcmVzdWx0IChjdXQgYXQgdGhlIGV4cG9ydCBjZWlsaW5nLCBvclxuLy8gY3V0IGFzIHRoZSBjaGFydCBpdHNlbGYgaXMpLiBFbXB0eSB3aGVuIHRoZSBmaWxlIGlzIGNvbXBsZXRlLiBPcHRpb25hbFxuLy8gYmVjYXVzZSBhIHNlcnZlciBvbiBhbiBvbGRlciBmcmFtZXdvcmsgYW5zd2VycyB3aXRoIHRoZSB1cmwgYWxvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEV4cG9ydFJlc3BvbnNlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIG5vdGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TGlzdEl0ZW0ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZGlmeURhdGU6IHN0cmluZztcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbiAgLy8gVGhlIGZvbGRlciB0aGUgcmVwb3J0IGlzIGZpbGVkIHVuZGVyLiBudWxsIGlzIGEgcmVhbCwgY29tbW9uIHZhbHVlIOKAlCB0aGVcbiAgLy8gcmVwb3J0IHNpdHMgYXQgdGhlIHJvb3Qgb2YgdGhlIGxpc3RpbmcgdHJlZSBhbG9uZ3NpZGUgdGhlIGZvbGRlcnMuXG4gIC8vXG4gIC8vIE9wdGlvbmFsIGxpa2UgYHN0YXRlYCBiZXNpZGUgaXQ6IHRoZSBiYWNrZW5kIGFsd2F5cyBzZW5kcyBpdCwgYnV0IG1ha2luZyBpdFxuICAvLyByZXF1aXJlZCBpcyBhIGJyZWFraW5nIHR5cGUgY2hhbmdlIGZvciBldmVyeSBjb25zdW1lciBob2xkaW5nIGFcbiAgLy8gUmVwb3J0TGlzdEl0ZW0gbGl0ZXJhbCAoZml4dHVyZXMsIG1vY2tzKSBhbmQgYnV5cyBub3RoaW5nIOKAlCB0aGUgbGlzdGluZ1xuICAvLyByZWFkcyBpdCBhcyBgPz8gbnVsbGAgZWl0aGVyIHdheS5cbiAgcmVwb3J0Rm9sZGVySWQ/OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBPbmUgZm9sZGVyIGluIHRoZSBsaXN0aW5nIHRyZWUg4oCUIGFuIGF1ZGllbmNlIGJ1Y2tldCAoXCJNYW5hZ2VtZW50XCIsXG4vLyBcIk9wZXJhdGlvbnNcIikgcmVwb3J0cyBhcmUgZmlsZWQgaW50by4gRm9sZGVycyBuZXN0IHZpYSBwYXJlbnRSZXBvcnRGb2xkZXJJZDtcbi8vIHJlcG9ydHMgbmV2ZXIgZG8sIHNvIHRoZSB0cmVlJ3Mgb25seSBicmFuY2ggbm9kZXMgYXJlIGZvbGRlcnMuXG4vL1xuLy8gYHN0YXRlYCBpcyB0aGUgZm9sZGVyJ3MgT1dOIHN0YXRlLiBEZWxldGluZyBhIGZvbGRlciB3cml0ZXMgb25seSB0aGF0LCBhbmRcbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaXQgY291bnRzIGFzIGRlbGV0ZWQgYnkgcG9zaXRpb24g4oCUIHNlZSBSZXBvcnROb2RlLmRlbGV0ZWQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvbGRlciB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50UmVwb3J0Rm9sZGVySWQ6IG51bWJlciB8IG51bGw7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG59XG5cbi8vIEdFVCAvYXBpL3JlcG9ydHMgcmV0dXJucyBib3RoIGhhbHZlcyBmbGF0OyB0aGUgbGlzdGluZyBuZXN0cyB0aGVtIGl0c2VsZi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VHJlZSB7XG4gIHJlcG9ydHM6IFJlcG9ydExpc3RJdGVtW107XG4gIGZvbGRlcnM6IFJlcG9ydEZvbGRlcltdO1xufVxuXG5leHBvcnQgZW51bSBSZXBvcnROb2RlVHlwZSB7XG4gIEZvbGRlciA9ICdmb2xkZXInLFxuICBSZXBvcnQgPSAncmVwb3J0Jyxcbn1cblxuLy8gT25lIG5vZGUgYXMgZnMtdHJlZSBzZWVzIGl0LiBGb2xkZXJzIGFuZCByZXBvcnRzIHNoYXJlIG9uZSBpZCBzcGFjZSBpbiB0aGVcbi8vIHZpZXcsIHNvIHRoZSBpZHMgYXJlIHByZWZpeGVkICgnZjoxMicgLyAncjozNCcpIOKAlCBgaWRgIGlzIHRoZSBvcmlnaW5hbCxcbi8vIHBlci10YWJsZSBpZCB0aGF0IHRoZSBBUEkgZW5kcG9pbnRzIHRha2UuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE5vZGUge1xuICBrZXk6IHN0cmluZztcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBSZXBvcnROb2RlVHlwZTtcbiAgLy8gT25seSBldmVyIHBvcHVsYXRlZCBvbiBhIGZvbGRlcjsgYSByZXBvcnQgaXMgYWx3YXlzIGEgbGVhZi5cbiAgY2hpbGRyZW46IFJlcG9ydE5vZGVbXTtcbiAgLy8gUHJlc2VudCBvbiByZXBvcnQgbm9kZXMgb25seS5cbiAgcmVwb3J0PzogUmVwb3J0TGlzdEl0ZW07XG4gIC8vIFRoZSBub2RlJ3Mgb3duIHJvdyBpcyBkZWxldGVkLiBXaGF0IGVhcm5zIHRoZSBcIkRlbGV0ZWRcIiBjaGlwIOKAlCB0aGlzIGlzXG4gIC8vIHdoYXQgc29tZWJvZHkgYWN0dWFsbHkgZGVsZXRlZC5cbiAgc3RhdGVEZWxldGVkOiBib29sZWFuO1xuICAvLyBEZWxldGVkIGl0c2VsZiBPUiBhbnl3aGVyZSBiZWxvdyBhIGRlbGV0ZWQgZm9sZGVyLiBPbmx5IGV2ZXIgdHJ1ZSBpbiBTaG93XG4gIC8vIERlbGV0ZWQgbW9kZSAodGhlIGRlZmF1bHQgbGlzdGluZyBuZXZlciByZXR1cm5zIHN1Y2ggYSBub2RlKSwgYW5kIGl0IGlzIHdoYXRcbiAgLy8gc3dhcHMgdGhlIHJvdydzIGFjdGlvbnMgZm9yIFJlc3RvcmUuXG4gIGRlbGV0ZWQ6IGJvb2xlYW47XG59XG5cbi8vIFJlcG9ydHMgYW5kIGZvbGRlcnMgYXJlIGJvdGggc29mdC1kZWxldGFibGUuIEEgZGVsZXRlZCByZXBvcnQga2VlcHMgaXRzIHBhZ2VzXG4vLyBhbmQgY29tcG9uZW50czsgYSBkZWxldGVkIGZvbGRlciBrZWVwcyBldmVyeXRoaW5nIGZpbGVkIHVuZGVyIGl0LCB3aGljaCBsZWF2ZXNcbi8vIHRoZSBsaXN0aW5nIHdpdGggaXQgYW5kIGNvbWVzIGJhY2sgd2l0aCBpdC4gXCJTaG93IERlbGV0ZWRcIiBzaG93cyB0aGUgd2hvbGVcbi8vIHRyZWUsIGxpdmUgYW5kIGRlbGV0ZWQgdG9nZXRoZXIsIHNvIGFueSBvZiBpdCBjYW4gYmUgcmVzdG9yZWQgaW4gcGxhY2UuXG5leHBvcnQgZW51bSBSZXBvcnRTdGF0ZSB7XG4gIEFjdGl2ZSA9ICdhY3RpdmUnLFxuICBEZWxldGVkID0gJ2RlbGV0ZWQnLFxufVxuXG4vLyBUaGUgY2hhdCB0dXJuIGZsYWdzIHRoaXMgY29udGV4dCdzIGJhY2tlbmQgYWRkcyAoUmVwb3J0c1xcQWlWaWV3KS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q2hhdFJlc3BvbnNlIHtcbiAgcmVwb3J0Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlcG9ydFJlbmFtZWQ/OiBib29sZWFuO1xufVxuXG4vLyBPbmUgdmVyc2lvbiBvZiB0aGUgZ2xvYmFsIEFJIGtub3dsZWRnZSBkb2N1bWVudCDigJQgdGhlIG9wZXJhdG9yLWF1dGhvcmVkXG4vLyBtYXJrZG93biBhcHBlbmRlZCB0byB0aGUgcmVwb3J0IGFnZW50J3Mgc3lzdGVtIGluc3RydWN0aW9ucyBvbiBldmVyeSB0dXJuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY3VycmVudDogYm9vbGVhbjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgbW9kaWZ5RGF0ZTogRGF0ZTtcbiAgYWNjb3VudElkOiBudW1iZXIgfCBudWxsO1xuICBhY2NvdW50TmFtZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gR0VUL1BVVCBpbnN0cnVjdGlvbnMgcGF5bG9hZDogdGhlIGN1cnJlbnQgdmVyc2lvbiAobnVsbCB1bnRpbCBvbmUgaXNcbi8vIGF1dGhvcmVkKSBwbHVzIHRoZSBmdWxsIGhpc3RvcnksIG5ld2VzdCBmaXJzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb25zIHtcbiAgaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbiB8IG51bGw7XG4gIHZlcnNpb25zOiBSZXBvcnRJbnN0cnVjdGlvbltdO1xufVxuXG4vLyBUaGUgbGF0ZXN0IHNlbWFudGljLWRhdGFiYXNlIGJ1aWxkIChhbiBmZl9wcm9jZXNzZXMgcm93KSDigJQgZW5vdWdoIGZvciB0aGVcbi8vIHNldHRpbmdzIGRpYWxvZyB0byBzYXkgd2hhdCBzdGF0ZSB0aGUgYnVpbGQgaXMgaW4gYW5kIHdoZW4gaXQgbGFzdCByYW4uXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGQge1xuICBpZDogbnVtYmVyO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwZXJjZW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgc3RhcnREYXRlOiBEYXRlO1xuICBlbmREYXRlOiBEYXRlO1xufVxuXG4vLyBBIGJ1aWxkIHN0YWdlJ3Mgc3RhdGUgb24gdGhlIGVudGl0eSBzY29yZWJvYXJkOiAnZG9uZScgPSBidWlsdCwgJ21pc3NpbmcnID1cbi8vIHN0aWxsIG5lZWRzIGJ1aWxkaW5nIChhIG1pc3Npbmcgc3RhZ2UgaXMgdW5idWlsdCBjb250ZW50LCBuZXZlciBhbiBlcnJvcikuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0J1aWxkU3RhZ2UgPSAnZG9uZScgfCAnbWlzc2luZyc7XG5cbi8vIE9uZSBlbnVtIGNvbHVtbiBvZiBhbiBlbnRpdHksIHdpdGggdGhlIGFsbG93ZWQgdmFsdWVzIHRoZSBidWlsZCBpbmxpbmVkLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW51bSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vLyBPbmUgZW50aXR5IHJvdyBvZiB0aGUgc2NvcmVib2FyZCAoYW4gZW50aXR5ID0gYSB0YWJsZSArIGEgbW9kZWwgKyBhXG4vLyBoYW5kbGVyKTogaXRzIHRhYmxlL3NoYXBlIGNvdW50cywgaW5saW5lZCBlbnVtIHZhbHVlcywgY29tcHV0ZWQgZmllbGRzLCBob3dcbi8vIG1hbnkgY29kZSBmdW5jdGlvbnMgd2VyZSBjYWNoZWQgKHNwbGl0IG1vZGVsIHZzIGhhbmRsZXIpLCBhbmQgdGhlIHBlci1zdGFnZVxuLy8gYnVpbHQvbWlzc2luZyBzdGF0ZS5cbi8vXG4vLyBgbW9kZWxgL2BoYW5kbGVyYCBhcmUgdGhlIGNsYXNzZXMgdGhlIGZ1bmN0aW9ucyB3ZXJlIHJlYWQgZnJvbSDigJQgd2hhdCBhXG4vLyByZWFkZXIgcmVjb2duaXplcyB0aGUgcm93IGJ5LCB3aGVyZSBga2V5YCBpcyB3aGF0IHRoZSByZXBvcnQgQUkgYWRkcmVzc2VzIGl0XG4vLyBieSBpbiBkZXNjcmliZV9lbnRpdHkgLyBjb21waWxlX3F1ZXJ5LlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW50aXR5IHtcbiAga2V5OiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyOiBzdHJpbmcgfCBudWxsO1xuICBjb2x1bW5zOiBudW1iZXI7XG4gIHJlbGF0aW9uc2hpcHM6IG51bWJlcjtcbiAgZW51bXM6IFNlbWFudGljQnVpbGRFbnVtW107XG4gIGNvbXB1dGVkRmllbGRzOiBzdHJpbmdbXTtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBtb2RlbEZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgaGFuZGxlckZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgc3RhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZW1hbnRpY0J1aWxkU3RhZ2U+O1xufVxuXG4vLyBPbmUgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIHRoZSBidWlsZCByZWFkOiBkb21haW4gbG9naWMgd2l0aCBubyB0YWJsZSBvZiBpdHNcbi8vIG93biAoYSBzdW1tYXJ5IG1vZGVsLCBhIGNhbGN1bGF0aW9uIHNlcnZpY2UpLiBUaGUgcmVwb3J0IEFJIHJlYWRzIGl0cyBjb2RlXG4vLyBleGFjdGx5IGxpa2UgYW4gZW50aXR5J3MsIGJ1dCBpdCBjYW4gbmV2ZXIgYmUgcXVlcmllZCDigJQgdGhlcmUgaXMgbm90aGluZyB0b1xuLy8gc2VsZWN0IGZyb20g4oCUIHNvIGl0IGNhcnJpZXMgbm8gdGFibGUsIGNvbHVtbnMgb3IgcmVsYXRpb25zaGlwcy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZENsYXNzIHtcbiAga2V5OiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG59XG5cbi8vIFdoYXQgdGhlIGJ1aWxkIGRlY2lkZWQgYSBwaHlzaWNhbCB0YWJsZSBpcy4gRW50aXR5IGFuZCBqdW5jdGlvbiBhcmUgYm90aFxuLy8gcmVhY2hhYmxlIGJ5IHRoZSByZXBvcnQgQUkg4oCUIGFuIGVudGl0eSBkaXJlY3RseSwgYSBqdW5jdGlvbiB0aHJvdWdoIHRoZVxuLy8gbWFueS10by1tYW55IGl0IGJyaWRnZXMuIEV4Y2x1ZGVkIGlzIG5vdCByZWFjaGFibGUgYXQgYWxsLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uID0gJ2VudGl0eScgfCAnanVuY3Rpb24nIHwgJ2V4Y2x1ZGVkJztcblxuLy8gT25lIHBoeXNpY2FsIHRhYmxlIGFzIHRoZSBidWlsZCBjbGFzc2lmaWVkIGl0LiBgcmVhc29uYCBhbnN3ZXJzIGEgc2luZ2xlXG4vLyBxdWVzdGlvbiDigJQgd2h5IGNhbid0IHRoZSByZXBvcnQgQUkgc2VlIHRoaXMgdGFibGU/IOKAlCBhbmQgaXMgbnVsbCB3aGVuIGl0IGNhbi5cbi8vIEEganVuY3Rpb24gd2l0aCBhIHJlYXNvbiBicmlkZ2VkIG5vdGhpbmcsIHNvIGl0IGlzIGp1c3QgYXMgaW52aXNpYmxlIGFzIGFuXG4vLyBleGNsdWRlZCB0YWJsZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFRhYmxlIHtcbiAgdGFibGU6IHN0cmluZztcbiAgY2xhc3NpZmljYXRpb246IFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbjtcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gVGhlIGJ1aWxkIHNjb3JlYm9hcmQgc2hpcHBlZCBhbG9uZ3NpZGUgdGhlIGJ1aWxkIHN0YXR1czogdGhlIHN1bW1hcnkgY291bnRzLFxuLy8gdGhlIGZ1bGwgYnJlYWtkb3duIHRoZSBzZXR0aW5ncyBkaWFsb2cgZHJpbGxzIGludG8g4oCUIEJPVEgga2luZHMgb2YgdW5pdCB0aGVcbi8vIGJ1aWxkIGNhY2hlcywgdGFibGUtYmFja2VkIGVudGl0aWVzIGFuZCBzdGFuZGFsb25lIGNvZGUgY2xhc3NlcyDigJQgYW5kIHRoZVxuLy8gY2F0YWxvZyBvZiBldmVyeSB0YWJsZSB0aGUgYnVpbGQgc2F3LCBzbyB0aGUgdGFiIGNhbiBzaG93IHdoYXQgdGhlIHJlcG9ydCBBSVxuLy8gY2FuJ3Qgc2VlLCBub3QganVzdCB3aGF0IGl0IGNhbi5cbi8vXG4vLyBgZnVuY3Rpb25Db3VudGAgc3BhbnMgZW50aXRpZXMgYW5kIGNsYXNzZXMgYWxpa2U6IGl0IGlzIHRoZSBzYW1lIHRvdGFsIHRoZVxuLy8gYnVpbGQgaXRzZWxmIHJlcG9ydHMgd2hlbiBpdCBmaW5pc2hlcy5cbi8vXG4vLyBgdGFibGVzYCBpcyBlbXB0eSBmb3IgYW4gYXJ0aWZhY3QgYnVpbHQgYmVmb3JlIHRoZSBjYXRhbG9nIGV4aXN0ZWQuIFJlYWQgdGhhdFxuLy8gYXMgXCJubyBjYXRhbG9nXCIsIG5ldmVyIGFzIFwibm90aGluZyB3YXMgZXhjbHVkZWRcIi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZERldGFpbCB7XG4gIC8vIFdoZXRoZXIgdGhlIGFydGlmYWN0IHdhcyBwcm9kdWNlZCBieSBhIGJ1aWxkIHRoYXQgcmFuIHRvIHRoZSBlbmQuIFJlYWQgaXRcbiAgLy8gYmVzaWRlIGBnZW5lcmF0ZWRBdGAsIG5ldmVyIGluc3RlYWQgb2YgaXQ6IHRoZSBzdHJ1Y3R1cmFsIGFydGlmYWN0IGlzXG4gIC8vIHB1Ymxpc2hlZCBCRUZPUkUgdGhlIEFJIGZ1bmN0aW9uIHBhc3MsIHNvIGEgYnVpbGQgd2hvc2UgQUkgcGFzcyBmYWlsZWQgc3RpbGxcbiAgLy8gY2FycmllcyBhIGRhdGUgYW5kIGEgZnVsbCBzZXQgb2YgY291bnRzLiBUaGUgZGF0ZSBzYXlzIHNvbWV0aGluZyB3YXNcbiAgLy8gd3JpdHRlbjsgb25seSB0aGlzIHNheXMgdGhlIGJ1aWxkIGZpbmlzaGVkIHdyaXRpbmcgaXQuXG4gIGNvbXBsZXRlOiBib29sZWFuO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGVudGl0eUNvdW50OiBudW1iZXI7XG4gIGNsYXNzQ291bnQ6IG51bWJlcjtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBlbnRpdGllczogU2VtYW50aWNCdWlsZEVudGl0eVtdO1xuICBjbGFzc2VzOiBTZW1hbnRpY0J1aWxkQ2xhc3NbXTtcbiAgdGFibGVDb3VudDogbnVtYmVyO1xuICBqdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHVubGlua2VkSnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBleGNsdWRlZENvdW50OiBudW1iZXI7XG4gIHRhYmxlczogU2VtYW50aWNCdWlsZFRhYmxlW107XG59XG5cbi8vIFdoaWNoIGNsYXNzIGEgY2FjaGVkIGZ1bmN0aW9uIHdhcyByZWFkIGZyb20uIEFuIGVudGl0eSdzIGNhY2hlIHNwbGl0cyBpbnRvXG4vLyAnbW9kZWwnIGFuZCAnaGFuZGxlcic7IGEgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIGhhcyBvbmUgZ3JvdXAsICdjbGFzcycuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0Z1bmN0aW9uU291cmNlID0gJ21vZGVsJyB8ICdoYW5kbGVyJyB8ICdjbGFzcyc7XG5cbi8vIE9uZSBBSS1jbGFzc2lmaWVkIGNvZGUgZnVuY3Rpb24gZnJvbSBhIG1vZGVsLCBoYW5kbGVyIG9yIHN0YW5kYWxvbmUgY2xhc3M6XG4vLyB3aGF0IGtpbmQgb2YgbG9naWMgaXQgaXMsIHdoYXQgaXQgZG9lcywgYW5kIHdoYXQgaXQgcHJvZHVjZXMg4oCUIHRoZSBidWlsZCdzXG4vLyBjYWNoZWQgXCJ3aGF0IHRoZSBjb2RlIGRvZXNcIiBrbm93bGVkZ2Ugc2hvd24gaW4gdGhlIGZ1bmN0aW9ucyBkaWFsb2cuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb24ge1xuICBjbGFzczogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICBwcm9kdWNlczogc3RyaW5nO1xuICBzb3VyY2U6IFNlbWFudGljRnVuY3Rpb25Tb3VyY2U7XG59XG5cbi8vIE9uZSBlbnRpdHkncyBjYWNoZWQgY29kZS1mdW5jdGlvbiBrbm93bGVkZ2UsIGZldGNoZWQgd2hlbiBhIGZ1bmN0aW9ucyBkaWFsb2dcbi8vIG9wZW5zICh0aGUgZnVsbCBzZXQgYWNyb3NzIGFsbCBlbnRpdGllcyBpcyB0b28gYmlnIHRvIHNoaXAgd2l0aCB0aGVcbi8vIHNjb3JlYm9hcmQpLiBPbmUgcGF5bG9hZCBzZXJ2ZXMgYm90aCBkaWFsb2dzIOKAlCBjb25zdW1lcnMgZmlsdGVyIGJ5IHNvdXJjZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbnMge1xuICBlbnRpdHk6IHN0cmluZztcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBtb2RlbENsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uczogU2VtYW50aWNFbnRpdHlGdW5jdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRTdGF0dXMge1xuICBidWlsZDogU2VtYW50aWNCdWlsZCB8IG51bGw7XG4gIGRldGFpbDogU2VtYW50aWNCdWlsZERldGFpbDtcbn1cblxuLy8gVGhlIHJlcG9ydCBtb2R1bGUncyBHZW5lcmFsIHNldHRpbmdzIChhIHNtYWxsIGdsb2JhbCBrZXkvdmFsdWUgc3RvcmUsIHRoZVxuLy8gcmVwb3J0aW5nIGNvdW50ZXJwYXJ0IG9mIHRoZSBhcHAtd2lkZSBzZXR0aW5ncykuIEVhY2ggdmFsdWUgc2hpcHMgd2l0aCB0aGVcbi8vIHNhZmUgYmFuZCBpdHMgZWRpdG9yIGZpZWxkIGlzIGJvdW5kZWQgdG8uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNldHRpbmdzIHtcbiAgLy8gSG93IG1hbnkgc3VtbWFyeSBjYWxscyB0aGUgc2VtYW50aWMgYnVpbGQgcnVucyBhdCBvbmNlLlxuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3k6IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWluOiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1heDogbnVtYmVyO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQTBTbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFndEJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtdWxhIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm11bGEuZW51bSc7XG5cbmltcG9ydCB7IENvbXBvbmVudERhdGFBcHBsaWVkIH0gZnJvbSAnLi9jb21wb25lbnQtZGF0YS1hcHBsaWVkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnREYXRhRHJpbGwgfSBmcm9tICcuL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL3JlcG9ydC1kcmlsbC1zdGVwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRWaWV3ZXJGZWF0dXJlIH0gZnJvbSAnLi9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZSc7XG5cbi8vIEEgQkNQIDQ3IGxhbmd1YWdlIHRhZyBuYW1pbmcgaG93IG51bWJlcnMgYW5kIGRhdGVzIGFyZSB3cml0dGVuLCBlLmcuICdmci1DQScuXG4vLyBUaGUgc2V0IGlzIG9wZW4gKHRoZSBzZXJ2ZXIncyBwcm92aWRlciBkZWNpZGVzIHdoaWNoIGl0IG9mZmVycyksIHNvIHRoaXMgaXMgYVxuLy8gbmFtZWQgYWxpYXMgcmF0aGVyIHRoYW4gYSB1bmlvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydExvY2FsZVRhZyA9IHN0cmluZztcblxuLy8gQW4gSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgZS5nLiAnQ0FEJy4gT3BlbiBmb3IgdGhlIHNhbWUgcmVhc29uLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q3VycmVuY3lDb2RlID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgSUFOQSB6b25lIChlLmcuIEFtZXJpY2EvTmV3X1lvcmspLiBudWxsID0gdGhlXG4gIC8vIHJlcG9ydCBmb2xsb3dzIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQgcmVwb3J0aW5nIHpvbmUuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgem9uZSBldmVyeSBkYXRlIGZpbHRlciwgdGltZSBidWNrZXQgYW5kIGRhdGUgY2VsbCBvZiB0aGlzIHJlcG9ydCB1c2VzLlxuICAvLyBSZXNvbHZlZCBzZXJ2ZXItc2lkZTsgdGhlIHNhbWUgZm9yIGV2ZXJ5IHZpZXdlciwgZXhwb3J0IGFuZCB0aGUgYXNzaXN0YW50LlxuICAvLyBPcHRpb25hbCBvbmx5IGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyByZXNvbHZlUmVwb3J0VGltZXpvbmUoKSB0aGVuXG4gIC8vIGZhbGxzIGJhY2sgdG8gdGhlIHJlcG9ydCdzIG93biBgdGltZXpvbmVgLCB0aGVuIHRoZSBicm93c2VyJ3Mgem9uZS4gUmVzb2x2ZVxuICAvLyB0aGUgem9uZSBmb3IgcmVuZGVyaW5nIHRocm91Z2ggcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgKGZvcm1hdC50cyk7IHJlYWQgdGhlXG4gIC8vIGZpZWxkIGRpcmVjdGx5IG9ubHkgdG8gY2hlY2sgd2hldGhlciB0aGUgc2VydmVyIHNlbnQgaXQuXG4gIGVmZmVjdGl2ZVRpbWV6b25lPzogc3RyaW5nO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBsb2NhbGUuIG51bGwgPSB0aGUgcmVwb3J0IGZvbGxvd3MgdGhlIGRlZmF1bHQuXG4gIGxvY2FsZT86IFJlcG9ydExvY2FsZVRhZyB8IG51bGw7XG4gIC8vIFRoZSBsb2NhbGUgZXZlcnkgbnVtYmVyIGFuZCBkYXRlIG9mIHRoaXMgcmVwb3J0IGlzIHdyaXR0ZW4gaW4sIHJlc29sdmVkXG4gIC8vIHNlcnZlci1zaWRlICh0aGUgcmVwb3J0J3Mgb3duLCBlbHNlIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQsIGVsc2VcbiAgLy8gZW4tVVMpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcmVwb3J0cyB0aGVuIHJlYWQgZW4tVVMuIFJlc29sdmUgaXRcbiAgLy8gZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVGb3JtYXRDb250ZXh0KCkgKGZvcm1hdC50cyksIG5ldmVyIGRpcmVjdGx5LlxuICBlZmZlY3RpdmVMb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIGN1cnJlbmN5LiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBjdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW5jeSBtb25leSBhbW91bnRzIGFyZSBsYWJlbGVkIGluLCByZXNvbHZlZCBsaWtlIGVmZmVjdGl2ZUxvY2FsZVxuICAvLyAoZmFsbGluZyBiYWNrIHRvIHRoZSBsb2NhbGUncyBvd24gY3VycmVuY3ksIHRoZW4gVVNEKS4gQSBsYWJlbCBvbmx5OlxuICAvLyBhbW91bnRzIGFyZSBuZXZlciBjb252ZXJ0ZWQuXG4gIGVmZmVjdGl2ZUN1cnJlbmN5PzogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBIb3cgdGhlIHNlcnZlciBzZW5kcyBhIHBlcmNlbnQgbWVhc3VyZTogJ3JhdGlvJyA9IGEgMC0xIHJhdGlvICgwLjM4NSByZWFkc1xuICAvLyAzOC41JSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aG9zZSBwZXJjZW50IHZhbHVlcyBhcmUgYWxyZWFkeSB4MTAwXG4gIC8vICgzOC41IHJlYWRzIDM4LjUlKS5cbiAgcGVyY2VudEZvcm1hdD86ICdyYXRpbyc7XG4gIC8vIFJlcG9ydC1sZXZlbCBjb25maWc6IHR5cG9ncmFwaGljIHN0eWxlcywgZXRjLiAoY2FtZWxDYXNlIEpTT04gY29sdW1uKS5cbiAgY29uZmlnOiBSZXBvcnRDb25maWc7XG4gIC8vIFRoZSBwYWdlIGluIElOQ0hFUyAodGhlIHJlcG9ydCdzIG5hdGl2ZSB1bml0IOKAlCBQREZzIGFuZCBQb3dlclBvaW50IGFyZVxuICAvLyBpbmNoLWJhc2VkLCBzbyBleHBvcnRzIGFyZSBkaW1lbnNpb25hbGx5IGV4YWN0KS4gT3JpZW50YXRpb24gaXMgbm90IGEgZmllbGRcbiAgLy8gb2YgaXRzIG93bjogYSBwYWdlIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCBJUyBsYW5kc2NhcGUuXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VzOiBSZXBvcnRQYWdlW107XG4gIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlcjogdGhlIHJlcG9ydCdzIG1hc3RlciBwYWdlLCB3aG9zZSBjb21wb25lbnRzIGRyYXdcbiAgLy8gdW5kZXIgZXZlcnkgcGFnZSB0aGF0IGRvZXMgbm90IGhpZGUgdGhlbSAoUG93ZXJQb2ludCdzIHNsaWRlIG1hc3RlcikuIE51bGxcbiAgLy8gdW50aWwgYW55dGhpbmcgaGFzIGJlZW4gcGxhY2VkIGluIHRoZW0uXG4gIG1hc3RlcjogUmVwb3J0TWFzdGVyIHwgbnVsbDtcbiAgZmlsdGVyR3JvdXBzOiBSZXBvcnRGaWx0ZXJHcm91cFtdO1xuICAvLyBUaGUgdmlld2VyIGZlYXR1cmVzIHRoaXMgc2VydmVyIHNlcnZlcyBmb3IgdGhlIHJlcG9ydC4gVGhlIHZpZXdlciBvZmZlcnNcbiAgLy8gYSBjb250cm9sIG9ubHkgd2hlbiBpdHMgZmVhdHVyZSBpcyBsaXN0ZWQuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aGljaFxuICAvLyBzZXJ2ZSBub25lLlxuICB2aWV3ZXJGZWF0dXJlcz86IFJlcG9ydFZpZXdlckZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbiAgLy8gVGhlIHZhbHVlcyB0aGUgaGVhZGVyIGFuZCBmb290ZXIgdGV4dCBzaG93cywgYXMgUmVwb3J0UGFnZS52YWx1ZXMuXG4gIHZhbHVlcz86IFJlcG9ydENvbXBvbmVudFtdO1xufVxuXG4vLyBIb3cgdGhlIG9wZW4gcmVwb3J0IHdyaXRlcyBpdHMgbnVtYmVycyBhbmQgZGF0ZXMsIHJlc29sdmVkIG9uY2UgcGVyIHJlcG9ydFxuLy8gKHJlc29sdmVGb3JtYXRDb250ZXh0KSBhbmQgcmVhZCBieSB0aGUgdmlld2VyLCB0aGUgUERGIGFuZCBQb3dlclBvaW50IGFsaWtlLlxuLy8gTmV2ZXIgdGhlIGJyb3dzZXIncyBsb2NhbGUuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvcm1hdENvbnRleHQge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgY3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gV2hldGhlciBhIHBlcmNlbnQgbWVhc3VyZSBhcnJpdmVzIGFzIGEgMC0xIHJhdGlvICh0aGUgcmVwb3J0J3NcbiAgLy8gcGVyY2VudEZvcm1hdCkuIEFuIG9sZGVyIHNlcnZlciBzZW5kcyBpdCBhbHJlYWR5IHgxMDAuXG4gIHJhdGlvUGVyY2VudDogYm9vbGVhbjtcbn1cblxuLy8gT25lIGxvY2FsZSB0aGUgc2VydmVyIG9mZmVycywgd2l0aCB0aGUgY3VycmVuY3kgYSByZXBvcnQgaW4gaXQgdXNlcyB3aGVuIGl0XG4vLyBuYW1lcyBub25lIG9mIGl0cyBvd24uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZU9wdGlvbiB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBkZWZhdWx0Q3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbn1cblxuLy8gR0VUIHJlcG9ydHMvbG9jYWxlczogd2hhdCB0aGUgcmVwb3J0IHNldHRpbmdzJyBMb2NhbGUgYW5kIEN1cnJlbmN5IHNlbGVjdHNcbi8vIG9mZmVyLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVzIHtcbiAgZGVmYXVsdExvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBvcHRpb25zOiBSZXBvcnRMb2NhbGVPcHRpb25bXTtcbiAgY3VycmVuY2llczogUmVwb3J0Q3VycmVuY3lDb2RlW107XG59XG5cbi8vIFRoZSBkZXB0aCBvZiB0aGUgaGVhZGVyIGJhbmQgKHRvcCBvZiBldmVyeSBwYWdlKSBhbmQgdGhlIGZvb3RlciBiYW5kIChib3R0b21cbi8vIG9mIGV2ZXJ5IHBhZ2UpLCBpbiBJTkNIRVMuIFRoZSBiYW5kcyBob2xkIG5vIGNvbnRlbnQgb2YgdGhlaXIgb3duIOKAlCB0aGVcbi8vIG1hc3RlcidzIGNvbXBvbmVudHMgc2l0IGluIHRoZW0g4oCUIHRoZXkgYXJlIHRoZSByZXNlcnZlZCBtYXJnaW5zIHRoZSBlZGl0b3Jcbi8vIGRyYXdzIGFzIGd1aWRlcyBhbmQgc25hcHMgdG8uIEFsd2F5cyBhcnJpdmVzIHJlc29sdmVkICgwID0gbm8gYmFuZCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEhlYWRlckZvb3RlciB7XG4gIGhlYWRlckhlaWdodDogbnVtYmVyO1xuICBmb290ZXJIZWlnaHQ6IG51bWJlcjtcbn1cblxuLy8gUmVwb3J0LWxldmVsIHN0eWxpbmcuIFNpemVzIGFyZSBpbiBQT0lOVFMgKDEvNzJcIikg4oCUIHRoZSByZXBvcnQncyB0eXBvZ3JhcGh5XG4vLyBtYXBzIDE6MSB0byBQREYgKDcycHQvaW4pIGFuZCBQb3dlclBvaW50IChwb2ludCBmb250IHNpemVzKSwgc28gYSBwb2ludFxuLy8gdmFsdWUgaXMgZGltZW5zaW9uYWxseSBleGFjdCBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29uZmlnIHtcbiAgc3R5bGVzPzogUmVwb3J0U3R5bGVzO1xuICAvLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbC4gT3B0aW9uYWwgb24gdGhlIHR5cGUgYmVjYXVzZSBhIFJlcG9ydENvbmZpZ1xuICAvLyBsaXRlcmFsIG5lZWQgbm90IGNhcnJ5IGl0OyB0aGUgQVBJIGFsd2F5cyBzZW5kcyBpdCwgcmVzb2x2ZWQuXG4gIGdyb3VwQnk/OiBSZXBvcnRHcm91cEJ5O1xuICAvLyBSZXNvbHZlZCBieSB0aGUgQVBJIGxpa2UgZ3JvdXBCeS5cbiAgaGVhZGVyRm9vdGVyPzogUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG4vLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCDigJQgdGhlIG9uZSBzd2l0Y2ggdGhhdCByZS1idWNrZXRzIGV2ZXJ5XG4vLyB0aW1lLXNlcmllcyBjaGFydCBvbiB0aGUgcmVwb3J0IGJldHdlZW4gZGF5LCB3ZWVrLCBtb250aCwgcXVhcnRlciBhbmQgeWVhci5cbi8vXG4vLyBJdCBpcyBOT1QgYSBmaWx0ZXI6IGEgZmlsdGVyIG5hcnJvd3Mgd2hpY2ggcm93cyBhcmUgY291bnRlZCwgdGhpcyBjaGFuZ2VzIGhvd1xuLy8gdGhlIHN1cnZpdmluZyByb3dzIGFyZSBidWNrZXRlZC4gSXQgc2hhcmVzIHRoZSByZXBvcnQncyBmaWx0ZXIgYmFyIGJlY2F1c2Vcbi8vIHRoYXQgaXMgdGhlIG9uZSByb3cgb2YgY29udHJvbHMgYSB2aWV3ZXIgcmVhZHMgYSByZXBvcnQgdGhyb3VnaCDigJQgdGhlXG4vLyBzZXBhcmF0aW9uIHRoYXQgbWF0dGVycyBpcyBpbiB0aGUgbW9kZWwsIG5vdCBpbiB3aGVyZSB0aGUgY29udHJvbCBpcyBwYWludGVkLlxuLy9cbi8vIEFsd2F5cyBhcnJpdmVzIFJFU09MVkVEICh0aGUgYmFja2VuZCBmaWxscyBhbiBhYnNlbnQgb3IgcGFydGlhbCBzdG9yZWQgYmxvY2tcbi8vIGluIGZyb20gaXRzIG93biBkZWZhdWx0cyksIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGVmYXVsdCBoZXJlIOKAlCByZW5kZXIgd2hhdFxuLy8geW91IGFyZSBnaXZlbi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0R3JvdXBCeSB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGdyYW51bGFyaXRpZXM6IENoYXJ0R3JhbnVsYXJpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTdHlsZXMge1xuICBoZWFkaW5nPzogeyBzaXplPzogbnVtYmVyIH07XG59XG5cbi8vIENvbnRlbnQgcGFkZGluZyBhcm91bmQgYSBjb21wb25lbnQncyBib2R5LCBpbiBJTkNIRVMgKHRoZSBnZW9tZXRyeSB1bml0KS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UGFkZGluZyB7XG4gIHRvcD86IG51bWJlcjtcbiAgcmlnaHQ/OiBudW1iZXI7XG4gIGJvdHRvbT86IG51bWJlcjtcbiAgbGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgLy8gVGhlIHBhZ2Ugb3B0cyBvdXQgb2YgdGhlIHJlcG9ydCdzIGhlYWRlciBhbmQgZm9vdGVyIChhIHRpdGxlIHBhZ2UpLlxuICBtYXN0ZXJIaWRkZW46IGJvb2xlYW47XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBFdmVyeSBhY3RpdmUgdmFsdWUgb2YgdGhlIHBhZ2UsIGluIGlkIG9yZGVyOiB0aG9zZSBpdHMgdGV4dCBzaG93cyBhbmRcbiAgLy8gdGhvc2Ugbm8gdGV4dCBzaG93cyBhbnkgbW9yZSAoa2VwdCB1bnRpbCBhIHRleHQsIHZhbHVlIG9yIHBhZ2UgZGVsZXRlLCBzb1xuICAvLyBhIGNoaXAgcGFzdGVkIGJhY2sgc3RpbGwgbmFtZXMgb25lKS4gTmV2ZXIgZHJhd24sIGFuZCBuZXZlciBpblxuICAvLyBgY29tcG9uZW50c2AuIE9wdGlvbmFsIGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0LlxuICB2YWx1ZXM/OiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuLy8gJ3ZhbHVlJyBpcyBvbmUgbnVtYmVyIHNob3duIGluc2lkZSBhIHRleHQgYmxvY2sncyB3b3JkcyAoe3t2YWx1ZS5rZXl9fSk7IGl0XG4vLyBoYXMgYSBxdWVyeSBidXQgbm8gcGxhY2Ugb2YgaXRzIG93biBvbiB0aGUgcGFnZS5cbmV4cG9ydCB0eXBlIFJlcG9ydENvbXBvbmVudFR5cGUgPSAnY2hhcnQnIHwgJ2xpc3QnIHwgJ2twaScgfCAndGV4dCcgfCAndmFsdWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbXBvbmVudCB7XG4gIGlkOiBudW1iZXI7XG4gIHR5cGU6IFJlcG9ydENvbXBvbmVudFR5cGU7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICAvLyBHZW9tZXRyeSBpbiBJTkNIRVM6IGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIGNhbnZhcy5cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgaDogbnVtYmVyO1xuICAvLyBIZWlnaHQgbW9kZSwgREVSSVZFRCBmcm9tIHR5cGUgc2VydmVyLXNpZGUgKG5vdCBzdG9yZWQsIHJlYWQtb25seSk6IGxpc3RzXG4gIC8vIGFuZCBLUEkgdGlsZXMgYXJlIGF1dG8gKHRoZSBib3ggc2l6ZXMgdG8gaXRzIGNvbnRlbnQsIGBoYCBpZ25vcmVkKTsgY2hhcnRzXG4gIC8vIGFyZSBhbHdheXMgZml4ZWQgKHVzZSBgaGApIHNvIHRoZXkgZml0IHRoZSBib3ggYW5kIG5ldmVyIG92ZXJmbG93LlxuICBhdXRvSGVpZ2h0OiBib29sZWFuO1xuICAvLyBUaGUgc3RvcmVkIFNRTCBvZiBhIGxlZ2FjeSBzcWwtbW9kZSBjb21wb25lbnQuIE5VTEwgZm9yIGEgZGVyaXZlZCBvbmUsXG4gIC8vIHdob3NlIHN0YXRlbWVudCBkb2VzIG5vdCBleGlzdCB1bnRpbCBpdHMgZG9jdW1lbnQgaXMgY29tcGlsZWQg4oCUIHRoZSBTUUwgdGFiXG4gIC8vIGZldGNoZXMgdGhhdCBzZXBhcmF0ZWx5IChzZWUgUmVwb3J0Q29tcG9uZW50U3FsKS5cbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBjb25maWc6IENoYXJ0Q29uZmlnICYgTGlzdENvbmZpZyAmIEtwaUNvbmZpZyAmIFRleHRDb25maWcgJiBWYWx1ZUNvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZ1xuICAgICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBXaGF0IHRoZSBTUUwgdGFiIGZldGNoZXM6IHRoZSBzdGF0ZW1lbnQgYSBjb21wb25lbnQgcnVucy5cbi8vXG4vLyBGb3IgYSBkZXJpdmVkIGNvbXBvbmVudCBgYmFzZWxpbmVgIGlzIHRydWUgYW5kIGBzcWxgIGlzIHdoYXQgaXRzIGRvY3VtZW50XG4vLyBjb21waWxlcyB0byB3aXRoIE5PIHZpZXdlciBzdGF0ZSDigJQgbm8gZmlsdGVycywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGB0aW1lem9uZWAgaXMgdGhlIElBTkEgem9uZSB0aGUgc3RhdGVtZW50IHdhcyBjb21waWxlZCBpbjogdGhlIHJlcG9ydCdzXG4vLyBlZmZlY3RpdmUgem9uZS4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQ7IHRoZXkgY29tcGlsZWQgaW4gVVRDLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICB0aW1lem9uZT86IHN0cmluZztcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGVycm9yVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSB0ZXh0IGJsb2NrJ3MgY29udGVudDogYW4gaHRtbCBmcmFnbWVudCB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHJlYnVpbHQgZnJvbVxuLy8gYW4gYWxsb3dsaXN0LCB3aGljaCBtYXkgY2Fycnkge3twYWdlLm51bWJlcn19LCB7e3BhZ2UubmFtZX19IGFuZFxuLy8ge3tyZXBvcnQubmFtZX19IHRva2VucyAoc2VlIHRleHQudHMpLlxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q29uZmlnIHtcbiAgaHRtbD86IHN0cmluZztcbn1cblxuLy8gQSB2YWx1ZSdzIGtleTogd2hhdCBpdHMgdG9rZW4gaW4gYSB0ZXh0IGJsb2NrJ3MgaHRtbCBuYW1lcywgdW5pcXVlIHdpdGhpblxuLy8gdGhlIHBhZ2UuIEl0cyBudW1iZXIgaXMgZm9ybWF0dGVkIGJ5IGNvbmZpZy5tZWFzdXJlIChLcGlDb25maWcpLCBhcyBvbiBhIEtQSS5cbi8vIEEgZm9ybXVsYSB2YWx1ZSBoYXMgbm8gcXVlcnk6IGBmb3JtdWxhYCBuYW1lcyB3aGF0IGl0IHdvcmtzIG91dCBvZiB0aGVcbi8vIHBhZ2UncyBxdWVyeSB2YWx1ZXMsIGFuZCBpdHMgbWVhc3VyZSBob2xkcyBvbmx5IHRoZSBmb3JtYXQga2V5cyBpdHMgYXV0aG9yXG4vLyBnYXZlIChmb3JtYXQsIHByZWNpc2lvbiwgdW5pdHMpLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUNvbmZpZyB7XG4gIGtleT86IHN0cmluZztcbiAgZm9ybXVsYT86IFZhbHVlRm9ybXVsYUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgZm9ybXVsYSB2YWx1ZSdzIG9wZXJhdGlvbiBhbmQgb3BlcmFuZHM6IGBvZmAgbmFtZXMgcXVlcnkgdmFsdWVzIG9uIHRoZVxuLy8gc2FtZSBwYWdlICh0aGUgbWFzdGVyIGZvciBhIGhlYWRlciBvciBmb290ZXIpIGJ5IGtleSwgMiBvZiB0aGVtLCBvciAyIHRvIDEwXG4vLyBmb3IgYSBzdW0uIGBzaWduZWRgIGFic2VudCByZWFkcyB0cnVlIGZvciBhIGNoYW5nZSBhbmQgYSBwZXJjZW50IGNoYW5nZSxcbi8vIGZhbHNlIGZvciBhIHJhdGlvIGFuZCBhIHN1bS5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGb3JtdWxhQ29uZmlnIHtcbiAgb3A6IFJlcG9ydFZhbHVlRm9ybXVsYTtcbiAgb2Y6IHN0cmluZ1tdO1xuICBzaWduZWQ/OiBib29sZWFuIHwgbnVsbDtcbn1cblxuLy8gT25lIHJvdyBvZiBQT1NUIHBhZ2VzLzppZC92YWx1ZXM6IGEgdmFsdWUncyBudW1iZXIgZm9yIHRoZSBmaWx0ZXJzIHNlbnQuXG4vLyBUaGVyZSBpcyBvbmUgcm93IHBlciB2YWx1ZSB0aGUgbGF5ZXIgcmVhZHMsIGluIGlkIG9yZGVyOiBvbmUgc29tZSB0ZXh0IG9uXG4vLyB0aGF0IHBhZ2Ugc2hvd3MsIG9yIGFuIG9wZXJhbmQgb2YgYSBmb3JtdWxhIHNvbWUgdGV4dCBzaG93cy4gYHZhbHVlYCBpc1xuLy8gcmF3LCBhcyB0aGUgcXVlcnkgcmV0dXJuZWQgaXQgb3IgdGhlIHNlcnZlciB3b3JrZWQgaXQgb3V0IChudWxsIHdoZW4gdGhlcmVcbi8vIGlzIG5vIHJvdyBvciB0aGUgcmVzdWx0IGlzIG51bGwpOyBmb3JtYXR0aW5nIGlzIHRoZSB2aWV3ZXIncywgdGhyb3VnaCB0aGVcbi8vIHZhbHVlJ3MgbWVhc3VyZS4gYGVycm9yYCBpcyB0aGF0IHZhbHVlJ3Mgb3duIGZhaWx1cmUsIGFuZCB0aGUgcGFnZSdzIG90aGVyXG4vLyB2YWx1ZXMgYXJlIHJlYWQgcmVnYXJkbGVzcy5cbi8vIGByb2xlYCBpcyB0aGUgY29tcGFyaXNvbiByb2xlIHRoZSBudW1iZXIgcGxheXM6IGEgcXVlcnkgdmFsdWUncyBjb21wYXJpc29uXG4vLyBvdXRwdXQncywgY2hhbmdlIG9yIHBlcmNlbnRfY2hhbmdlIGZvciB0aG9zZSBmb3JtdWxhcywgZWxzZSBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlVmFsdWUge1xuICBpZDogbnVtYmVyO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICByb2xlPzogT3V0cHV0Um9sZSB8IG51bGw7XG59XG5cbi8vIENyb3NzLXR5cGUgbGF5b3V0L3N0eWxlIGtleXMgY2FycmllZCBpbiBhIGNvbXBvbmVudCdzIGNvbmZpZyAoYWxvbmdzaWRlIHRoZVxuLy8gdHlwZS1zcGVjaWZpYyBjaGFydC9saXN0L2twaSBrZXlzKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TGF5b3V0Q29uZmlnIHtcbiAgcGFkZGluZz86IENvbXBvbmVudFBhZGRpbmc7XG59XG5cbi8vIFRoZSBwcmVzZW50YXRpb24gc2V0dGluZ3MgYSBjb21wb25lbnQncyBzZXR0aW5ncyBkaWFsb2cgZWRpdHMuIFRpdGxlIGFuZFxuLy8gcGFkZGluZyBhcmUgbm90IHBhcnQgb2Ygd2hhdCB0aGUgY29tcG9uZW50IHF1ZXJpZXMsIHNvIGEgY2hhbmdlIHRvIHRoZW1cbi8vIHJlcGFpbnRzIHdpdGhvdXQgcmUtcnVubmluZyBhbnl0aGluZy4gQSBkZXJpdmVkIEtQSSdzIGNhcmQga2V5cyBhcmUgc2VudFxuLy8gdG9vOiB0aGUgc2VydmVyIGNvbXB1dGVzIHRoZSB0YXJnZXQncyBwcm9ncmVzcyBhbmQgdGhlIHNwYXJrbGluZSdzIHBvaW50c1xuLy8gd2l0aCB0aGUgZGF0YSwgc28gYSBjaGFuZ2UgdG8gdGhlbSByZWxvYWRzIGl0LlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTZXR0aW5ncyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhZGRpbmc6IENvbXBvbmVudFBhZGRpbmc7XG4gIGtwaT86IEtwaUNhcmRTZXR0aW5ncztcbn1cblxuLy8gQSBLUEkncyBjYXJkIGtleXMuIFRoZSBkaWFsb2cgc2VuZHMgdGhlbSAobnVsbCByZW1vdmVzIGEga2V5LCBpbmNyZWFzZUlzXG4vLyBudWxsIHJlYWRzIGdvb2QpLCBhbmQgQ29tcG9uZW50U2V0dGluZ3Mua3BpIGNhcnJpZXMgdGhlbSBhcyB0aGUgc2VydmVyXG4vLyBzYXZlZCB0aGVtLCByZWFkIGJhY2sgZnJvbSB0aGUgY29uZmlnIGl0IHJldHVybnMuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRTZXR0aW5ncyB7XG4gIGluY3JlYXNlSXM6IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgdGFyZ2V0OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICBzcGFya2xpbmU6IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIFdoZXJlIGEgY2hhcnQncyBsZWdlbmQgc2l0cyByZWxhdGl2ZSB0byB0aGUgcGxvdCwgb3IgJ2hpZGRlbicgdG8gZHJvcCBpdC5cbmV4cG9ydCB0eXBlIExlZ2VuZFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnaGlkZGVuJztcblxuZXhwb3J0IHR5cGUgQ2hhcnRHcmFudWxhcml0eSA9ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcblxuLy8gSG93IGVhY2ggZ3JhbnVsYXJpdHkgcmVhZHMgaW4gdGhlIGdyb3VwLWJ5IGNvbnRyb2wgYW5kIG9uIGFuIGV4cG9ydCBjb3ZlclxuLy8gc2hlZXQuIFdISUNIIG9mIHRoZW0gYSBnaXZlbiByZXBvcnQgb2ZmZXJzIGNvbWVzIGZyb20gaXRzIFJlcG9ydEdyb3VwQnk7XG4vLyB0aGlzIGlzIG9ubHkgdGhlIG5hbWluZy4gJ3llYXInIHJlYWRzIGFzIFwiQW5udWFsbHlcIi5cbmV4cG9ydCBjb25zdCBHUkFOVUxBUklUWV9PUFRJT05TOiB7IHZhbHVlOiBDaGFydEdyYW51bGFyaXR5OyBuYW1lOiBzdHJpbmcgfVtdID0gW1xuICB7IHZhbHVlOiAnZGF5JywgbmFtZTogJ0RheScgfSxcbiAgeyB2YWx1ZTogJ3dlZWsnLCBuYW1lOiAnV2VlaycgfSxcbiAgeyB2YWx1ZTogJ21vbnRoJywgbmFtZTogJ01vbnRoJyB9LFxuICB7IHZhbHVlOiAncXVhcnRlcicsIG5hbWU6ICdRdWFydGVyJyB9LFxuICB7IHZhbHVlOiAneWVhcicsIG5hbWU6ICdBbm51YWxseScgfSxcbl07XG5cbi8vIFRoZSBjaGFydCB0eXBlcyB0aGF0IHBsb3Qgc2VyaWVzIGFnYWluc3QgYSBjYXRlZ29yeSBhbmQgYSB2YWx1ZSBheGlzLCBhbmQgc29cbi8vIHRoZSB0eXBlcyBhIG1lYXN1cmUncyBvd24gc2VyaWVzIGNhbiBiZSBkcmF3biBhcy4gQSB3YXRlcmZhbGwgaGFzIHRoZSBzYW1lXG4vLyBheGVzIGJ1dCBpcyBub3Qgb25lIG9mIHRoZW06IGl0IGRyYXdzIGl0cyBvbmUgbWVhc3VyZSBhcyBmbG9hdGluZyBzdGVwcy5cbmV4cG9ydCB0eXBlIEF4aXNDaGFydFR5cGUgPSAnYmFyJyB8ICdsaW5lJyB8ICdhcmVhJztcblxuLy8gV2hhdCBvbmUgYmFyIG9mIGEgd2F0ZXJmYWxsIGRvZXMgdG8gdGhlIHJ1bm5pbmcgdG90YWwg4oCUIGVhY2ggaXMgZHJhd24gaW4gaXRzXG4vLyBvd24gY29sb3IuIFRoZSBjbG9zaW5nIHRvdGFsIGlzIHRoZSBsYXN0IGJhciwgc3RhbmRpbmcgb24gemVyby5cbmV4cG9ydCB0eXBlIFdhdGVyZmFsbFN0ZXBLaW5kID0gJ3Jpc2UnIHwgJ2ZhbGwnIHwgJ3RvdGFsJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGFydENvbmZpZyB7XG4gIC8vIEEgd2F0ZXJmYWxsIHRha2VzIE9ORSBtZWFzdXJlIHdob3NlIHZhbHVlIHBlciBjYXRlZ29yeSBpcyBob3cgZmFyIHRoZVxuICAvLyBydW5uaW5nIHRvdGFsIG1vdmVzIHRoZXJlOiBlYWNoIGJhciBzdGFydHMgd2hlcmUgdGhlIG9uZSBiZWZvcmUgaXQgZW5kZWQsXG4gIC8vIGFuZCBhIGNsb3NpbmcgVG90YWwgYmFyIHNob3dzIHRoZSBzdW0uXG4gIGNoYXJ0VHlwZT86IEF4aXNDaGFydFR5cGUgfCAnd2F0ZXJmYWxsJyB8ICdwaWUnIHwgJ2RvbnV0JztcbiAgLy8gRm9yIGtpbmQgJ3RpbWUnLCB0aGUgc2VydmVyIGJ1Y2tldHMgdGhlIHJhdyBkYXRldGltZSBjb2x1bW4gdG8gYGdyYW51bGFyaXR5YFxuICAvLyBpbiB0aGUgcmVwb3J0J3MgdGltZXpvbmUgKHRoZSBTUUwgZXhwb3NlcyB0aGUgcmF3IGNvbHVtbiwgdW5idWNrZXRlZCkuXG4gIC8vIGRhdGVMYWJlbCB3cml0ZXMgYSB0aW1lIGF4aXMncyBwZXJpb2QgbGFiZWxzIHNob3J0ICgnTWF5JywgdGhlIGRlZmF1bHQpLFxuICAvLyBsb25nICgnTWF5IDIwMjYnKSBvciBudW1lcmljICgnMjAyNi0wNScpOyBhIGNhdGVnb3J5IGF4aXMgaWdub3JlcyBpdC5cbiAgeEF4aXM/OiB7XG4gICAgY29sdW1uOiBzdHJpbmc7XG4gICAga2luZD86ICdjYXRlZ29yeScgfCAndGltZSc7XG4gICAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGRhdGVMYWJlbD86IFJlcG9ydENoYXJ0RGF0ZUxhYmVsO1xuICB9O1xuICBtZWFzdXJlcz86IENoYXJ0TWVhc3VyZVtdO1xuICAvLyBFYWNoIHZhbHVlIG9mIHRoaXMgY29sdW1uIGJlY29tZXMgaXRzIG93biBzZXJpZXMuIEl0IGNhcnJpZXMgbm8gbGFiZWw6IHRoZVxuICAvLyBsZWdlbmQgbmFtZXMgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLlxuICBzcGxpdEJ5PzogeyBjb2x1bW46IHN0cmluZyB9O1xuICAvLyBTaW5nbGUtZGltZW5zaW9uIGJhciBjaGFydHMgb25seTogY29sb3IgZWFjaCBiYXIgYnkgaXRzIG93biBjYXRlZ29yeSBhbmRcbiAgLy8gc2hvdyBhIGxlZ2VuZCwgV0lUSE9VVCBzcGxpdHRpbmcgaW50byBtdWx0aXBsZSBzZXJpZXMgKHdoaWNoIHNsaXZlcnMgdGhlXG4gIC8vIGJhcnMpLiB2MSBleHBlY3RzIGNvbG9yQnkuY29sdW1uID09PSB4QXhpcy5jb2x1bW4uIElnbm9yZWQgd2hlbiBzcGxpdEJ5IGlzXG4gIC8vIHNldCBvciB0aGUgY2hhcnQgaXNuJ3QgYSBiYXIgY2hhcnQuXG4gIGNvbG9yQnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBvcmllbnRhdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICAvLyBTdGFja3MgdGhlIHByaW1hcnkgYXhpcydzIGJhciBhbmQgYXJlYSBzZXJpZXMgYXMgc2hhcmVzIG9mIGVhY2hcbiAgLy8gY2F0ZWdvcnkncyB0b3RhbCwgc28gZXZlcnkgc3RhY2sgcmVhY2hlcyAxMDAlLiBUaGUgdmlld2VyIGNvbXB1dGVzIHRoZVxuICAvLyBzaGFyZXMgZnJvbSB0aGUgcm93cyBpdCByZWNlaXZlcywgYWZ0ZXIgdGhlIGZpbHRlcnMgcmFuOyB0aGUgcm93cyBhbmQgdGhlXG4gIC8vIENTViBrZWVwIHRoZSByYXcgdmFsdWVzLiBUaGUgdmFsdWUgYXhpcyB0aGVuIGFsd2F5cyBydW5zIDAgdG8gMTAwJSAoZnJvbVxuICAvLyAtMTAwJSB3aGVuIGEgc2hhcmUgaXMgbmVnYXRpdmUpLlxuICBwZXJjZW50U3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFZhbHVlcyBwcmludGVkIGJlc2lkZSB0aGUgcG9pbnRzIG9mIGEgYmFyLCBsaW5lIG9yIGFyZWEgc2VyaWVzOiBldmVyeVxuICAvLyBwb2ludCAoYWxsKSwgZWFjaCBzZXJpZXMnIGxhdGVzdCBwb2ludCAobGFzdCksIG9yIGV2ZXJ5IHBvaW50IHdob3NlIGxhYmVsXG4gIC8vIGZpdHMgd2l0aG91dCBvdmVybGFwcGluZyBhbm90aGVyIChhdXRvKS4gT21pdHRlZCBvciBub25lLCBubyBsYWJlbHMuIEFcbiAgLy8gcGllLCBhIGRvbnV0IGFuZCBhIHdhdGVyZmFsbCBuZXZlciBwcmludCB0aGVtLlxuICBkYXRhTGFiZWxzPzogUmVwb3J0Q2hhcnREYXRhTGFiZWxzO1xuICAvLyBUaGUgcHJpbWFyeSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFdmVyeSBzZXJpZXMgaXMgcGxvdHRlZCBhZ2FpbnN0XG4gIC8vIGl0IHVubGVzcyBpdHMgbWVhc3VyZSBpcyBzZWNvbmRhcnkuXG4gIHZhbHVlQXhpcz86IENoYXJ0VmFsdWVBeGlzO1xuICAvLyBUaGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgdGhhdCBzZWNvbmRhcnkgbWVhc3VyZXMgcGxvdCBhZ2FpbnN0LlxuICBzZWNvbmRhcnlBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIExhYmVsZWQgbGluZXMgYWNyb3NzIHRoZSBwbG90IGF0IGEgY29uc3RhbnQgdmFsdWUsIG9yIGJhbmRzIGJldHdlZW4gdHdvXG4gIC8vIHZhbHVlcywgYXQgbW9zdCA1LiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBhbmQgd2F0ZXJmYWxscyBvbmx5LlxuICByZWZlcmVuY2VzPzogQ2hhcnRSZWZlcmVuY2VbXTtcbiAgbGVnZW5kPzogTGVnZW5kUG9zaXRpb247XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuLy8gQSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFYWNoIGJvdW5kIGxlZnQgb3V0IGlzIHBpY2tlZCBmcm9tIHRoZSBkYXRhLFxuLy8gYW5kIHRoZSB0aWNrIHN0ZXAgd2l0aG91dCBhbiBpbnRlcnZhbC4gSXRzIHRpY2tzIHRha2UgdGhlIG51bWJlciBmb3JtYXQgb2Zcbi8vIHRoZSBtZWFzdXJlcyBwbG90dGVkIGFnYWluc3QgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0VmFsdWVBeGlzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICBpbnRlcnZhbD86IG51bWJlcjtcbn1cblxuLy8gQSByZWZlcmVuY2UgZHJhd24gYWNyb3NzIGEgY2hhcnQncyBwbG90OiBhIGxpbmUgYXQgYHZhbHVlYCwgb3Igd2l0aCBgdG9gIGFcbi8vIGJhbmQgYmV0d2VlbiB0aGUgdHdvLCBsYWJlbGVkIHdpdGggYGxhYmVsYC4gVGhlIHZhbHVlIGlzIG9uZSB0aGUgdXNlciBvclxuLy8gdGhlIG1vZGVsIHN0YXRlcywgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZSBkYXRhLiBzZWNvbmRhcnkgcGxvdHMgaXQgYWdhaW5zdFxuLy8gdGhlIHNlY29uZCB2YWx1ZSBheGlzLCB3aGVuIHRoZSBjaGFydCBoYXMgb25lLlxuZXhwb3J0IGludGVyZmFjZSBDaGFydFJlZmVyZW5jZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRvPzogbnVtYmVyO1xuICBzZWNvbmRhcnk/OiBib29sZWFuO1xufVxuXG4vLyBIb3cgb25lIG51bWVyaWMgc2xvdCBpcyBzaG93bjogYSBjaGFydCBtZWFzdXJlLCBhIEtQSSBtZWFzdXJlLCBhIGxpc3QgY29sdW1uXG4vLyBvciBhIGNyb3NzLXRhYidzIGNlbGxzLiBUaGUgZGF0YSBzdGF5cyByYXcgKGl0IHNvcnRzIGFuZCBleHBvcnRzIGFzIGFcbi8vIG51bWJlcik7IG9ubHkgdGhlIHJlbmRlcmVycyBmb3JtYXQgaXQsIHRoZSBzYW1lIHdheSBvbiBzY3JlZW4sIGluIHRoZSBQREZcbi8vIGFuZCBpbiBQb3dlclBvaW50IChmb3JtYXQudHMpLiBBbGwgdGhyZWUga2V5cyBhcmUgb3B0aW9uYWwsIGFuZCBwcmVjaXNpb24gb3Jcbi8vIHVuaXRzIHdpdGhvdXQgYSBmb3JtYXQgbWVhbiBudW1iZXIuXG4vL1xuLy8gRm9ybWF0dGluZyBpcyBvcHQtaW46IGEgbGlzdCBjb2x1bW4gb3IgY3Jvc3MtdGFiIGNlbGwgd2l0aG91dCB0aGVzZSBrZXlzXG4vLyBwcmludHMgaXRzIHZhbHVlIGFzIGl0IGNhbWUsIGFuZCBhIGNoYXJ0IHdpdGhvdXQgdGhlbSBrZWVwcyBpdHMgcGxhaW5cbi8vIGxvY2FsZS1ncm91cGVkIGF4aXMgYW5kIHRvb2x0aXBzLiBBIEtQSSB3aXRob3V0IHRoZW0gcHJpbnRzIGEgcGxhaW4gbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgLy8gcGVyY2VudCB0YWtlcyBhIDAtMSByYXRpbyAoMC4zIHJlYWRzIDMwJSkgd2hlbiB0aGUgcmVwb3J0J3MgcGVyY2VudEZvcm1hdFxuICAvLyBpcyAncmF0aW8nOyBhbiBvbGRlciBzZXJ2ZXIgbGVhdmVzIGl0IG91dCBhbmQgc2VuZHMgeDEwMC4gY3VycmVuY3kgbGFiZWxzXG4gIC8vIHRoZSBhbW91bnQgaW4gdGhlIHJlcG9ydCdzIGN1cnJlbmN5LCB3cml0dGVuIGluIGl0cyBsb2NhbGUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IHwgUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gSG93IG1hbnkgZGVjaW1hbCBwbGFjZXMgdGhlIHZhbHVlIGlzIHNob3duIHRvICgwLTYpLiBGaXhlZCByYXRoZXIgdGhhblxuICAvLyBtYXhpbXVtOiBhIGNvbHVtbiBvZiByYXRlcyBpcyB1bnJlYWRhYmxlIHdoZW4gZWFjaCBvbmUgc2hvd3MgYSBkaWZmZXJlbnRcbiAgLy8gbnVtYmVyIG9mIGRlY2ltYWxzLiBGb3IgcGVyY2VudCBpdCBjb3VudHMgdGhlIGRlY2ltYWxzIG9mIHRoZSBwZXJjZW50YWdlXG4gIC8vIChwcmVjaXNpb24gMSBzaG93cyAwLjMgYXMgMzAuMCUpLiBPbWl0dGVkIGxlYXZlcyB0aGUgZm9ybWF0J3Mgb3duIGRlZmF1bHQ6XG4gIC8vIGF0IG1vc3Qgb25lIGRlY2ltYWwgZm9yIHBlcmNlbnQgKGFuZCBmb3IgYW4gYWJicmV2aWF0ZWQgMS4ySyksIHdob2xlIHVuaXRzXG4gIC8vIGZvciBjdXJyZW5jeSwgdGhlIGxvY2FsZSdzIGRlZmF1bHQgZm9yIGEgbnVtYmVyLlxuICAvL1xuICAvLyBJdCBjYW5ub3QgYmUgYXBwbGllZCBpbiB0aGUgU1FMOiB0aGUgdmFsdWUgaXMgYWdncmVnYXRlZCBhZnRlciB0aGUgcmVwb3J0J3NcbiAgLy8gZmlsdGVycyBydW4sIHNvIHByZS1yb3VuZGluZyB3b3VsZCBicmVhayBsaXZlIHJlLWZpbHRlcmluZy5cbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICAvLyBBYmJyZXZpYXRlcyB0byB0aG91c2FuZHMgKDEuMkspIG9yIG1pbGxpb25zICgzLjRNKSwgb3IgcGlja3MgYnkgc2l6ZS5cbiAgdW5pdHM/OiBSZXBvcnROdW1iZXJVbml0cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFydE1lYXN1cmUgZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0aW9uPzogJ3N1bScgfCAnY291bnQnIHwgJ2F2ZycgfCAnbWluJyB8ICdtYXgnO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gRHJhd3MgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGFzIGEgZGlmZmVyZW50IHR5cGUgZnJvbSB0aGUgY2hhcnQncyBvd25cbiAgLy8gY2hhcnRUeXBlIOKAlCBjb3VudHMgYXMgYmFycyB3aXRoIGEgcmF0ZSBhcyBhIGxpbmUgb3ZlciB0aGVtIGlzIGEgY29tYm9cbiAgLy8gY2hhcnQuIE9taXR0ZWQsIHRoZSBzZXJpZXMgdGFrZXMgdGhlIGNoYXJ0J3MgdHlwZS4gQXhpcyBjaGFydHMgb25seSAoYSBwaWVcbiAgLy8gaWdub3JlcyBpdCkuXG4gIHR5cGU/OiBBeGlzQ2hhcnRUeXBlO1xuICAvLyBBIGNoYXJ0IG1lYXN1cmUncyBmb3JtYXQgc2hvd3Mgb24gaXRzIHRvb2x0aXBzLCBhbmQgb24gdGhlIHZhbHVlIGF4aXNcbiAgLy8gd2hlbiBldmVyeSBtZWFzdXJlIHNoYXJpbmcgdGhlIGF4aXMgYWdyZWVzIG9uIGl0LiBBIEtQSSdzIG1lYXN1cmUgZm9ybWF0c1xuICAvLyBpdHMgb25lIHZhbHVlLlxuICBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdDtcbiAgLy8gUGxvdHMgdGhpcyBtZWFzdXJlIGFnYWluc3QgdGhlIHNlY29uZCB2YWx1ZSBheGlzLCBvbiB0aGUgcmlnaHQsIGZvciBhXG4gIC8vIHF1YW50aXR5IG9uIGFub3RoZXIgc2NhbGUuIE9taXR0ZWQgb3IgZmFsc2UsIGl0IHNoYXJlcyB0aGUgcHJpbWFyeSBheGlzLlxuICAvLyBBIHZlcnRpY2FsIGF4aXMgY2hhcnQgb25seSwgd2l0aCBhdCBsZWFzdCBvbmUgbWVhc3VyZSBsZWZ0IG9uIHRoZSBwcmltYXJ5XG4gIC8vIGF4aXMuXG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG4gIC8vIFRoZSBwYWxldHRlIGNvbG9yIHRoaXMgbWVhc3VyZSdzIHNlcmllcyBpcyBkcmF3biBpbi4gT21pdHRlZCwgdGhlIHNlcmllc1xuICAvLyB0YWtlcyB0aGUgcGFsZXR0ZSBjb2xvciBvZiBpdHMgcG9zaXRpb24uIEEgY29sb3Igb24gdGhlIGZpcnN0IG1lYXN1cmVcbiAgLy8gdHVybnMgb2ZmIGEgY2F0ZWdvcnkgYmFyIGNoYXJ0J3MgZGVmYXVsdCBjb2xvciBwZXIgYmFyIChpc0NvbG9yQnkpLlxuICBjb2xvcj86IFJlcG9ydENoYXJ0Q29sb3I7XG4gIC8vIEhvdyBhIGxpbmUgc2VyaWVzJyBsaW5lIGlzIGRyYXduLiBPbWl0dGVkLCBzb2xpZC5cbiAgbGluZT86IFJlcG9ydENoYXJ0TGluZVN0eWxlO1xuICAvLyBXaGV0aGVyIGEgbGluZSBvciBhcmVhIHNlcmllcyBkcmF3cyBhIGRvdCBvbiBlYWNoIHBvaW50LiBPbWl0dGVkLCB0cnVlLlxuICBtYXJrZXJzPzogYm9vbGVhbjtcbiAgLy8gQSBsaW5lIGFjcm9zcyB0aGUgcGxvdCBhdCB0aGlzIHNlcmllcycgYXZlcmFnZSwgbWVkaWFuLCBsb3dlc3Qgb3IgaGlnaGVzdFxuICAvLyB2YWx1ZSBvdmVyIHRoZSBwb2ludHMgb24gc2NyZWVuLiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBvbmx5LlxuICBtYXJrTGluZT86IFJlcG9ydENoYXJ0TWFya1N0YXQ7XG59XG5cbi8vIE9uZSBhdXRob3JlZCBjb2x1bW4gb2YgYSBwbGFpbiBsaXN0LlxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29sdW1uIGV4dGVuZHMgTnVtYmVyRm9ybWF0U3BlYyB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gZGF0ZSBrZWVwcyB0aGUgY29sdW1uIGEgUkFXIHRpbWVzdGFtcCwgc28gdGhlIHJlcG9ydCB0aW1lem9uZSBhbmQgaXRzXG4gIC8vIGRhdGVSYW5nZSBmaWx0ZXJzIGtlZXAgd29ya2luZywgYW5kIHRoZSB2aWV3ZXIgcmVuZGVycyBpdCBhcyBhIGRheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3Mgem9uZSBhbmQgbG9jYWxlLiBudW1iZXIsIHBlcmNlbnQgYW5kIGN1cnJlbmN5IGZvcm1hdCB0aGUgdmFsdWUgYXNcbiAgLy8gYSBLUEkgbWVhc3VyZSBkb2VzLiBXaXRob3V0IGEgZm9ybWF0IHRoZSB2YWx1ZSBwcmludHMgYXMgaXQgY2FtZS5cbiAgZm9ybWF0PzogUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gQSBjb2x1bW4gdGhlIFNRTCBhbHJlYWR5IGZvcm1hdHRlZCBpcyB0ZXh0LCBzbyBpdCBuYW1lcyBgc29ydENvbHVtbmA6IHRoZVxuICAvLyByYXcgbnVtZXJpYyBhbGlhcyB0aGUgcXVlcnkgYWxzbyBvdXRwdXRzLCB3aGljaCB0aGUgc2VydmVyIG9yZGVycyBieVxuICAvLyBpbnN0ZWFkLlxuICBzb3J0Q29sdW1uPzogc3RyaW5nO1xuICAvLyBmYWxzZSBrZWVwcyB0aGUgY2VsbCBvbiBvbmUgbGluZS4gT21pdHRlZCwgYSBsb25nIHZhbHVlIHdyYXBzLlxuICB3cmFwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29uZmlnIHtcbiAgY29sdW1ucz86IExpc3RDb2x1bW5bXTtcbiAgLy8gQSBjcm9zcy10YWI6IGByb3dCeWAgc3RheXMgZG93biB0aGUgc2lkZSBhbmQgZXZlcnkgdmFsdWUgb2YgYHBpdm90QnlgXG4gIC8vIGJlY29tZXMgYSBjb2x1bW4uIFRoZSB0d28gYXJlIHNldCB0b2dldGhlciwgYGNvbHVtbnNgIGlzIG9taXR0ZWQgKHRoZVxuICAvLyBiYWNrZW5kIHJlamVjdHMgYXV0aG9yaW5nIGJvdGgpLCBhbmQgdGhlIGNvbHVtbiBzZXQgYXJyaXZlcyB3aXRoIHRoZSByb3dzXG4gIC8vIGluIENvbXBvbmVudERhdGEuY29sdW1ucyBiZWNhdXNlIG9ubHkgdGhlIHJlc3VsdCBrbm93cyB0aGUgcGl2b3QgdmFsdWVzLlxuICAvLyByb3dCeS5sYWJlbCBoZWFkcyB0aGUgc2lkZSBjb2x1bW4gb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQsIGFuZFxuICAvLyBkZWZhdWx0cyB0byB0aGUgY29sdW1uIG5hbWUuIHBpdm90QnkgY2FycmllcyBubyBsYWJlbDogaXRzIHZhbHVlcyBhcmUgdGhlXG4gIC8vIGhlYWRpbmdzLlxuICByb3dCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIHBpdm90Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFRoZSBhdXRob3JlZCBvcmRlciwgbW9zdCBpbXBvcnRhbnQgZmlyc3QuIEEgbGlzdCBzYXZlZCBiZWZvcmUgbXVsdGkta2V5XG4gIC8vIHNvcnRpbmcgc3RvcmVzIG9uZSBvYmplY3QsIHNvIHJlYWQgaXQgdGhyb3VnaCBsaXN0U29ydFRlcm1zKCkgb25seS5cbiAgc29ydD86IFJlcG9ydFNvcnQgfCBSZXBvcnRTb3J0W107XG4gIC8vIEhvdyBtYW55IGxlYWRpbmcgY29sdW1ucyBzdGF5IGluIHZpZXcgd2hpbGUgdGhlIGxpc3Qgc2Nyb2xscyBzaWRld2F5c1xuICAvLyAoMC0zKS4gVW5zZXQsIGEgY3Jvc3MtdGFiIHBpbnMgaXRzIHJvdy1rZXkgY29sdW1uIGFuZCBhIHBsYWluIGxpc3Qgbm9uZS5cbiAgcGlubmVkQ29sdW1ucz86IG51bWJlciB8IG51bGw7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICAvLyB0cnVlIGFkZHMgYSB0b3RhbHMgcm93IHVuZGVyIHRoZSBsaXN0OiB0aGUgc2VydmVyIHJ1bnMgdGhlIG1lYXN1cmVzIGFnYWluXG4gIC8vIG92ZXIgZXZlcnkgcm93IHRoZSBmaWx0ZXJzIGtlZXAsIHdpdGhvdXQgZ3JvdXBpbmcsIGFuZCBhIGNyb3NzLXRhYiB0b3RhbHNcbiAgLy8gZWFjaCBjb2x1bW4uXG4gIHRvdGFscz86IGJvb2xlYW47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IGhvdyBldmVyeSBjZWxsIG9mIHRoZSBncmlkIGlzIGZvcm1hdHRlZCwgd2l0aCBhIEtQSVxuICAvLyBtZWFzdXJlJ3Mga2V5cy4gVGhlIHJvdyBrZXkgY29sdW1uIHN0YXlzIGFzIGl0IGNhbWUuXG4gIGNlbGxGb3JtYXQ/OiBOdW1iZXJGb3JtYXRTcGVjICYgeyBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdCB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNvbmZpZyB7XG4gIG1lYXN1cmU/OiBDaGFydE1lYXN1cmU7XG4gIC8vIFdoZXRoZXIgYSByaXNlIGluIHRoZSB2YWx1ZSBpcyBnb29kIG5ld3MsIGJhZCBuZXdzIG9yIG5laXRoZXI6IGl0IHBpY2tzXG4gIC8vIHRoZSBkZWx0YSdzIGNvbG9yIGFuZCBkZWNpZGVzIHdoZW4gYSB0YXJnZXQgaXMgbWV0IChnb29kOiBhdCBvciBhYm92ZSBpdDtcbiAgLy8gYmFkOiBhdCBvciBiZWxvdyBpdDsgbmV1dHJhbDogbmV2ZXIganVkZ2VkKS4gT21pdHRlZCBvciBudWxsIHJlYWRzIGdvb2QuXG4gIGluY3JlYXNlSXM/OiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB8IG51bGw7XG4gIC8vIEEgbnVtYmVyIHRoZSB1c2VyIGdhdmUgZm9yIHRoZSB2YWx1ZSB0byByZWFjaCwgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZVxuICAvLyBkYXRhLiBUaGUgc2VydmVyIHNlbmRzIHRoZSBwcm9ncmVzcyB0b3dhcmQgaXQgd2l0aCB0aGUgZGF0YS5cbiAgdGFyZ2V0PzogS3BpVGFyZ2V0Q29uZmlnIHwgbnVsbDtcbiAgLy8gQSBzbWFsbCB0cmVuZCBsaW5lIG9mIHRoZSB2YWx1ZSBvdmVyIGl0cyBsYXN0IHBlcmlvZHMsIGRyYXduIHVuZGVyIGl0LlxuICBzcGFya2xpbmU/OiBLcGlTcGFya2xpbmVDb25maWcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHRhcmdldDogdGhlIHZhbHVlLCBhbmQgYW4gb3B0aW9uYWwgY2FwdGlvbiBmb3IgaXQgKCdHb2FsJykuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVRhcmdldENvbmZpZyB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmU6IGhvdyB3aWRlIGVhY2ggcG9pbnQncyBwZXJpb2QgaXMgKG51bGwgcmVhZHMgbW9udGgpIGFuZFxuLy8gaG93IG1hbnkgcGVyaW9kcyBpdCBkcmF3cywgMiB0byA2MCAobnVsbCByZWFkcyAxMikuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVNwYXJrbGluZUNvbmZpZyB7XG4gIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIHBlcmlvZHM/OiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNvcnQge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlclR5cGUgPSAnZGF0ZVJhbmdlJyB8ICdzZWxlY3QnIHwgJ2tleXdvcmQnIHwgJ251bWJlclJhbmdlJztcblxuLy8gV2hlcmUgYSBmaWx0ZXIgZ3JvdXAncyBjb250cm9sIGlzIGV4cG9zZWQuIEEgZ3JvdXAgY2FuIGJlIHNob3duIG9uIGl0c1xuLy8gY29tcG9uZW50cywgaW4gdGhlIHJlcG9ydCBiYXIsIG9yIEJPVEggYXQgb25jZSAodGhlIHR3byBhcmUgaW5kZXBlbmRlbnRcbi8vIHRvZ2dsZXMgaW4gdGhlIFVJKTsgYSBjb2x1bW4gd2l0aCBuZWl0aGVyIGV4cG9zZWQgc2ltcGx5IGhhcyBubyBmaWx0ZXIuXG4vLyAncGFnZScgc2hvd3MgaXQgaW4gdGhlIHJlcG9ydCBiYXIgb2Ygb25lIHBhZ2Ugb25seSAoUmVwb3J0RmlsdGVyR3JvdXAucGFnZUlkKS5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlckxldmVsID0gJ2NvbXBvbmVudCcgfCAncmVwb3J0JyB8ICdib3RoJyB8ICdwYWdlJztcblxuLy8gT25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBvZiBhIGNvbXBvbmVudCdzIFNRTCwgd2l0aCB0aGUgZmlsdGVyIGludGVyZmFjZVxuLy8gSU5GRVJSRUQgZnJvbSBpdHMgZGF0YSAodGhlIGh1bWFuIG5ldmVyIHBpY2tzIHRoZSBpbnRlcmZhY2Ug4oCUIGl0IGZvbGxvd3MgdGhlXG4vLyBjb2x1bW4ncyB0eXBlKS4gRHJpdmVzIHRoZSBGaWx0ZXJzIHRhYiBsaXN0aW5nLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJhYmxlQ29sdW1uIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIC8vIEV2ZXJ5IGludGVyZmFjZSB0aGUgY29sdW1uIGNhbiB0YWtlLCB0aGUgaW5mZXJyZWQgb25lICh0eXBlKSBmaXJzdDogYVxuICAvLyBudW1lcmljIGNvbHVtbiB0YWtlcyBbJ3NlbGVjdCcsICdudW1iZXJSYW5nZSddLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgdHlwZXM/OiBSZXBvcnRGaWx0ZXJUeXBlW107XG59XG5cbi8vIEdyb3VuZCB0cnV0aDogb25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBPTiBvbmUgY29tcG9uZW50J3MgU1FMLiBBbHdheXMgYVxuLy8gbWVtYmVyIG9mIGEgZmlsdGVyIGdyb3VwIOKAlCB0aGUgdW5pdCB0aGF0IGxpbmtzIGVxdWl2YWxlbnQgZmlsdGVycyBhY3Jvc3Ncbi8vIGNvbXBvbmVudHMgYW5kIGRlY2lkZXMgd2hlcmUgdGhlIGNvbnRyb2wgcmVuZGVycyAoY29tcG9uZW50IHZzIHJlcG9ydCBiYXIpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRJZDogbnVtYmVyO1xuICBmaWx0ZXJHcm91cElkOiBudW1iZXI7XG4gIGZpbHRlckNvbHVtbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaGFzT3B0aW9uczogYm9vbGVhbjtcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gT25lIGNob2ljZSBpbiBhIHNlbGVjdCBmaWx0ZXIncyBvcHRpb24gbGlzdC4gVGhlIHZhbHVlIGlzIHdoYXQgdGhlIGZpbHRlclxuLy8gbWF0Y2hlcyBvbiBhbmQgZ2V0cyBzdG9yZWQgaW4gYSBzYXZlZCBkZWZhdWx0IOKAlCBmb3IgYW4gZW50aXR5IHRoYXQgaXMgaXRzXG4vLyBzdGFibGUgaWQsIG5ldmVyIGl0cyBuYW1lLCBzbyByZW5hbWluZyB0aGUgZW50aXR5IG1vdmVzIHRoZSBsYWJlbCB3aXRob3V0XG4vLyBicmVha2luZyB0aGUgZGVmYXVsdC4gVGhlIGxhYmVsIGlzIG9ubHkgZXZlciB3aGF0IHRoZSB2aWV3ZXIgcmVhZHMuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlck9wdGlvbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlckdyb3VwIHtcbiAgaWQ6IG51bWJlcjtcbiAgLy8gVGhlIGdyb3VwJ3MgaWRlbnRpZmllciwgdW5pcXVlIGluIHRoZSByZXBvcnQ6IGNhbWVsQ2FzZSwgYSBsZXR0ZXIgZmlyc3QsXG4gIC8vIHRoZW4gbGV0dGVycyBhbmQgZGlnaXRzLiBTZXQgYXBhcnQgZnJvbSB0aGUgbGFiZWw6IGEgbmV3IGxhYmVsIG5ldmVyXG4gIC8vIGNoYW5nZXMgaXQsIGFuZCBpdCBpcyBlZGl0ZWQgb24gaXRzIG93biAoUmVwb3J0IHNldHRpbmdzID4gRmlsdGVycykuXG4gIC8vIFRpbGVzIGFuZCBzYXZlZCBmaWx0ZXJzIGJpbmQgdGhlIGdyb3VwIGJ5IGlkLCBuZXZlciBieSBuYW1lLiBPcHRpb25hbFxuICAvLyBiZWNhdXNlIGFuIG9sZGVyIHNlcnZlciBzZW5kcyBub25lLlxuICBuYW1lPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbiAgbGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsO1xuICBvcmRlcjogbnVtYmVyO1xuICBjb25maWc6IHsgZGVmYXVsdD86IEZpbHRlckdyb3VwRGVmYXVsdCB9ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xuICAvLyBUaGUgcGFnZSB3aG9zZSByZXBvcnQgYmFyIHNob3dzIHRoZSBncm91cDogc2V0IG9ubHkgd2hlbiBsZXZlbCBpcyAncGFnZScsXG4gIC8vIG51bGwgb3RoZXJ3aXNlLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgcGFnZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgLy8gVGhlIGNvbXBvbmVudHMgb2YgdGhlIGdyb3VwJ3MgYWN0aXZlLCBlbmFibGVkIG1lbWJlcnMgdGhhdCBhcmUgdGlsZXNcbiAgLy8gKGNoYXJ0LCBsaXN0LCBLUEkpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgY29tcG9uZW50SWRzPzogbnVtYmVyW107XG4gIC8vIFRydWUgd2hlbiBhbiBlbmFibGVkIG1lbWJlciBiaW5kcyBzZXZlcmFsIGNvbHVtbnMsIHdoZXJlIHZhbHVlcyBjYW5ub3RcbiAgLy8gYmUgbGVmdCBvdXQ6IHRoZSBncm91cCBvZmZlcnMgbm8gJ0V4Y2x1ZGUgdGhlc2UnIChvZmZlcnNFeGNsdWRlKS4gQWJzZW50XG4gIC8vIG9uIG9sZGVyIHNlcnZlcnMuXG4gIG11bHRpQ29sdW1uPzogYm9vbGVhbjtcbiAgLy8gQSBzZWxlY3QgZ3JvdXAncyBsYWJlbCBmb3IgYSBibGFuayByb3csIG51bGwgd2hlbiBibGFuayByb3dzIGhhdmUgbm9uZTpcbiAgLy8gYW4gZXhjbHVkZSBsaW5lIHNheXMgd2hldGhlciB0aGUgYmxhbmsgcm93cyBhcmUga2VwdC4gU2VudCBmb3Igc2VsZWN0XG4gIC8vIGdyb3VwcyBvbmx5LCBhbmQgYWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIGJsYW5rTGFiZWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIGZpbHRlciBncm91cCdzIHZhbHVlIGluIGl0cyBzdG9yZWQgc2hhcGU6IGl0cyBhdXRob3JlZCBkZWZhdWx0ICh0aGUgdmFsdWVcbi8vIHRoYXQgc2VlZHMgdGhlIHJlcG9ydCBiYXIgb24gZXZlcnkgb3BlbiksIGFuZCBhIHZhbHVlIHRoZSBhc3Npc3RhbnQgcnVucyBpdCBhdC4gU2hhcGUgZm9sbG93cyB0aGUgZ3JvdXAncyB0eXBlOiBkYXRlUmFuZ2Vcbi8vIHVzZXMgc3RhcnQvZW5kIChhIGZpeGVkIGNhbGVuZGFyLWRheSByYW5nZSkgb3IgYSByZWxhdGl2ZSBwcmVzZXQ7IHNlbGVjdFxuLy8gdXNlcyB2YWx1ZXMgb3IgZXhjbHVkZVZhbHVlcywgbmV2ZXIgYm90aDsga2V5d29yZCB1c2VzIHZhbHVlOyBudW1iZXJSYW5nZVxuLy8gdXNlcyBtaW4gYW5kIG1heC5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXBEZWZhdWx0IHtcbiAgLy8gZGF0ZVJhbmdlIHJlbGF0aXZlIHByZXNldCwgcmVzb2x2ZWQgb24gZXZlcnkgb3BlbiBhZ2FpbnN0IHRvZGF5IGluIHRoZVxuICAvLyByZXBvcnQncyBlZmZlY3RpdmUgem9uZSAoUmVwb3J0LmVmZmVjdGl2ZVRpbWV6b25lKS4gT25lIG9mOiB0aGlzV2VlayxcbiAgLy8gbGFzdFdlZWssIGxhc3Q3RGF5cywgbGFzdDMwRGF5cywgbGFzdDNNb250aHMsIGxhc3Q2TW9udGhzLCBsYXN0MTJNb250aHMsXG4gIC8vIHRoaXNNb250aCwgdGhpc1F1YXJ0ZXIsIHRoaXNZZWFyL3llYXJUb0RhdGUuIFdlZWtzIHJ1biBNb25kYXkgdG8gU3VuZGF5LFxuICAvLyB0aGUgc2FtZSB3ZWVrcyB0aGUgc2VydmVyJ3Mgd2Vla2x5IHRpbWUgYnVja2V0cyB1c2UuXG4gIHJlbGF0aXZlPzogc3RyaW5nO1xuICBzdGFydD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIHN0YXJ0ICh5eXl5LU1NLWRkKVxuICBlbmQ/OiBzdHJpbmc7IC8vIGRhdGVSYW5nZSBmaXhlZCBlbmQgKHl5eXktTU0tZGQpXG4gIHZhbHVlcz86IHVua25vd25bXTsgLy8gc2VsZWN0IGRlZmF1bHQgcGlja2VkIHZhbHVlc1xuICB2YWx1ZT86IHN0cmluZzsgLy8ga2V5d29yZCBkZWZhdWx0IHRleHRcbiAgLy8gc2VsZWN0OiB0aGUgdmFsdWVzIHRvIGxlYXZlIG91dCAocm93cyB3aXRoIGEgYmxhbmsgdmFsdWUgYXJlIGtlcHQpLlxuICBleGNsdWRlVmFsdWVzPzogdW5rbm93bltdO1xuICAvLyBudW1iZXJSYW5nZTogdGhlIGxvdyBhbmQgaGlnaCBlbmRzLCBlaXRoZXIgb25lIG9wZW4gKGFic2VudCkuIDAgaXMgYW5cbiAgLy8gZW5kIGxpa2UgYW55IG90aGVyLlxuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn1cblxuLy8gVGhlIHNlc3Npb24gdmFsdWUgb2YgYSBmaWx0ZXIgZ3JvdXA6IHNoYXBlIGRlcGVuZHMgb24gdGhlIGdyb3VwJ3MgdHlwZS4gTm90XG4vLyBzdG9yZWQgb24gdGhlIHNlcnZlcjogaXQgbGl2ZXMgaW4gdGhlIG9wZW4gcmVwb3J0J3Mgc3RhdGVcbi8vIChSZXBvcnRGaWx0ZXJTdGF0ZVNlcnZpY2UpLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cFZhbHVlIHtcbiAgc3RhcnQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIGVuZD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3RcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmRcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSBwcmVzZXQgbmFtZSB0aGVzZSBkYXRlcyB3ZXJlIHJlc29sdmVkIGZyb21cbiAgLy8gKGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIG5hbWUpLiBTZXQgb25seSB3aGVuIHRoZSB2YWx1ZSB3YXMgc2VlZGVkXG4gIC8vIGZyb20gdGhlIGdyb3VwJ3MgcmVsYXRpdmUgZGVmYXVsdCwgc28gdGhlIHJhbmdlIGtlZXBzIHJvbGxpbmdcbiAgLy8gKCdsYXN0MzBEYXlzJykgaW5zdGVhZCBvZiBmcmVlemluZyB0d28gZGF0ZXMsIGFuZCB0aGUgZGF0YSByZXF1ZXN0IG5hbWVzIHRoZVxuICAvLyBwZXJpb2QgaXQgY292ZXJzIChzZWVcbiAgLy8gUmVzb2x2ZWRGaWx0ZXJWYWx1ZS5wcmVzZXQpLiBBbnkgZGF0ZSBwaWNrZWQgYnkgdGhlIHZpZXdlciwgYSBkYXRlIHBpY2tlclxuICAvLyBwcmVzZXQgaW5jbHVkZWQsIGlzIHN0b3JlZCB3aXRob3V0IGl0LlxuICBwcmVzZXQ/OiBzdHJpbmc7XG4gIC8vIHNlbGVjdDogdGhlIHZhbHVlcyB0byBsZWF2ZSBvdXQuIFN3aXRjaGluZyBhIHNlbGVjdCBiZXR3ZWVuIGtlZXBpbmcgYW5kXG4gIC8vIGxlYXZpbmcgb3V0IG1vdmVzIGl0cyBsaXN0IGZyb20gdmFsdWVzIHRvIGV4Y2x1ZGVWYWx1ZXMuXG4gIGV4Y2x1ZGVWYWx1ZXM/OiB1bmtub3duW107XG4gIC8vIG51bWJlclJhbmdlOiB0aGUgbG93IGFuZCBoaWdoIGVuZHM7IG51bGwgb3IgYWJzZW50ID0gb3Blbi5cbiAgbWluPzogbnVtYmVyIHwgbnVsbDtcbiAgbWF4PzogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSByZWxhdGl2ZSBkYXRlIHJhbmdlIHRoZSBzZXJ2ZXIgcmVzb2x2ZXMgYWdhaW5zdCB0b2RheSBpbiB0aGUgcmVwb3J0J3Ncbi8vIHpvbmU6IHRoZSBuYW1lcyBhIEZpbHRlckdyb3VwRGVmYXVsdC5yZWxhdGl2ZSBhbmQgYSB0aW1lZnJhbWUncyByYW5nZSB0YWtlLlxuLy8gTWlycm9ycyB0aGUgc2VydmVyJ3MgUmVwb3J0UmVsYXRpdmVSYW5nZUVudW0gdmFsdWUgZm9yIHZhbHVlXG4vLyAoUmVwb3J0UmVsYXRpdmVSYW5nZUVudW1UZXN0IHBpbnMgdGhlIGRheXMgZWFjaCBvbmUgY292ZXJzKS5cbmV4cG9ydCB0eXBlIFJlcG9ydFJlbGF0aXZlUmFuZ2UgPVxuICB8ICd0aGlzV2VlaydcbiAgfCAnbGFzdFdlZWsnXG4gIHwgJ2xhc3Q3RGF5cydcbiAgfCAnbGFzdDMwRGF5cydcbiAgfCAnbGFzdDNNb250aHMnXG4gIHwgJ2xhc3Q2TW9udGhzJ1xuICB8ICdsYXN0MTJNb250aHMnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1F1YXJ0ZXInXG4gIHwgJ3RoaXNZZWFyJ1xuICB8ICd5ZWFyVG9EYXRlJztcblxuLy8gT25lIHJlc29sdmVkIGZpbHRlciBzZW50IHdpdGggYSBjb21wb25lbnQncyBkYXRhIHJlcXVlc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkRmlsdGVyVmFsdWUge1xuICBmaWx0ZXJJZDogbnVtYmVyO1xuICBzdGFydD86IHN0cmluZztcbiAgZW5kPzogc3RyaW5nO1xuICB2YWx1ZXM/OiB1bmtub3duW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHJhbmdlIHN0YXJ0IGFuZCBlbmQgc3RpbGwgYXJlLCBzZW50IG9ubHlcbiAgLy8gd2hpbGUgdGhleSBhcmUgZXhhY3RseSB0aGF0IHJhbmdlIHJlc29sdmVkIHRvZGF5IGluIHRoZSByZXBvcnQncyB6b25lLiBJdFxuICAvLyB0ZWxscyB0aGUgc2VydmVyIHdoaWNoIHBlcmlvZCB0aGUgZGF5cyBjb3ZlciAob24gdGhlIGZpcnN0IGRheXMgb2YgYVxuICAvLyBxdWFydGVyLCB0aGlzTW9udGggYW5kIHRoaXNRdWFydGVyIGFyZSB0aGUgc2FtZSBkYXlzKSwgc28gYSBjb21wYXJpc29uXG4gIC8vIHNoaWZ0cyBieSB0aGUgcmlnaHQgdW5pdC4gc3RhcnQgYW5kIGVuZCBzdGF5IHRoZSB3aW5kb3c7IGEgc2VydmVyIHRoYXRcbiAgLy8gZG9lcyBub3Qga25vdyB0aGUga2V5IGlnbm9yZXMgaXQuXG4gIHByZXNldD86IFJlcG9ydFJlbGF0aXZlUmFuZ2U7XG4gIC8vIHNlbGVjdDogdGhlIHZhbHVlcyB0byBsZWF2ZSBvdXQgKHNlbnQgaW5zdGVhZCBvZiB2YWx1ZXMpLlxuICBleGNsdWRlVmFsdWVzPzogdW5rbm93bltdO1xuICAvLyBudW1iZXJSYW5nZTogdGhlIGxvdyBhbmQgaGlnaCBlbmRzOyBhbiBvcGVuIGVuZCBpcyBsZWZ0IG91dCwgMCBpcyBzZW50LlxuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn1cblxuLy8gUGVyLWNvbXBvbmVudCBpbnRlcmFjdGlvbiBzdGF0ZSBzZW50IHdpdGggdGhlIGRhdGEgcmVxdWVzdDogbGlzdHMgc2VuZFxuLy8gc29ydC9wYWdpbmcgYW5kIHRoZSB0ZXh0IGluIHRoZWlyIHNlYXJjaCBib3g7IHRpbWUtc2VyaWVzIGNoYXJ0cyBzZW5kIHRoZVxuLy8gZ3JhaW4gcGlja2VkIG9uIHRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sLCB3aGljaCBvdmVycmlkZXMgdGhlIGF1dGhvcmVkXG4vLyBncmFudWxhcml0eSBmb3IgdGhhdCByZXF1ZXN0IG9ubHkuIFRoZSB3aXJlIGtleSBzdGF5cyBgZnJlcXVlbmN5YCDigJQgaXQgaXMgdGhlXG4vLyBidWNrZXRpbmcgZnJlcXVlbmN5IHRoZSBzZXJ2ZXIgYXBwbGllcy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YVN0YXRlIHtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBmcmVxdWVuY3k/OiBDaGFydEdyYW51bGFyaXR5O1xuICAvLyBBIGxpc3QncyBzZWFyY2ggYm94IHRleHQuIFRoZSBzZXJ2ZXIgdHJpbXMgaXQsIGN1dHMgaXQgdG8gaXRzIG93biBtYXhpbXVtXG4gIC8vIGxlbmd0aCBhbmQgbWF0Y2hlcyBpdCBhZ2FpbnN0IGV2ZXJ5IHRleHQgY29sdW1uIHRoZSBsaXN0IHNob3dzLlxuICBzZWFyY2g/OiBzdHJpbmc7XG4gIC8vIFRoZSBjb25maWcgY29sdW1uIG5hbWVzIGEgdmlld2VyIGhpZCBvbiBhIHBsYWluIGxpc3QuIFNlbnQgd2l0aCBhIENTVlxuICAvLyBleHBvcnQgb25seSAodGhlIHNjcmVlbiBoaWRlcyB0aGVtIGl0c2VsZik6IHRoZSBmaWxlIGxlYXZlcyB0aGVtIG91dC4gVGhlXG4gIC8vIHNlcnZlciBpZ25vcmVzIGl0IG9uIGEgY3Jvc3MtdGFiLCBhbmQgd2hlbiBpdCB3b3VsZCBoaWRlIGV2ZXJ5IGNvbHVtbi5cbiAgaGlkZGVuQ29sdW1ucz86IHN0cmluZ1tdO1xuICAvLyBBIGNoYXJ0J3MgZHJpbGwgcGF0aCwgdG9wIGZpcnN0LiBUaGUgZHJpbGxlZCBsZXZlbCB3aW5zIG92ZXIgZnJlcXVlbmN5XG4gIC8vIGZvciB0aGlzIHRpbGUuXG4gIGRyaWxsPzogUmVwb3J0RHJpbGxTdGVwW107XG4gIC8vIFdoaWxlIG1hdGNoIGlzIGFueTogdGhlIGVsaWdpYmxlIGdyb3VwcyB0aGF0IGhhdmUgYSB2YWx1ZS5cbiAgbWF0Y2hBbnlHcm91cElkcz86IG51bWJlcltdO1xuICAvLyBTZXQgb25seSBvbiBhIHJlcXVlc3Qgc2VudCBiZWNhdXNlIHRoZSBjcm9zcy1maWx0ZXIgY2hhbmdlZCwgZm9yIGEgdGlsZVxuICAvLyB3aG9zZSBsYXN0IHJlYWQgYXBwbGllZCBubyBjcm9zcyBlbnRyeTogdGhlIHNlcnZlciBtYXkgYW5zd2VyXG4gIC8vIHVuY2hhbmdlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgdGhlIHJvd3MgYWdhaW4uIEV4cG9ydHMgbmV2ZXIgc2V0IGl0LlxuICB1bmNoYW5nZWRJZlVucmVhY2hlZD86IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YSB7XG4gIGNvbHVtbnM6IHN0cmluZ1tdO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICBwYWdpbmc/OiB7IHRvdGFsOiBudW1iZXI7IHBhZ2U6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9O1xuICB0cnVuY2F0ZWQ6IGJvb2xlYW47XG4gIC8vIFRoZSBlZmZlY3RpdmUgdGltZSBidWNrZXQgdGhlIHJvd3Mgd2VyZSBncm91cGVkIGludG8gKGFmdGVyIGFueSBncm91cC1ieVxuICAvLyBvdmVycmlkZSksIG9yIG51bGwgZm9yIGEgbm9uLXRpbWUgYXhpcy4gRHJpdmVzIHRoZSBjb21wYWN0IHgtYXhpcyBsYWJlbHMuXG4gIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIC8vIFBhZ2UgMSBvZiBhIHNlYXJjaGVkIGxpc3Qgd2hvc2Ugc2VhcmNoIGNvdWxkIG5vdCBhcHBseSAodGhlIGxpc3QgaGFzIG5vXG4gIC8vIHRleHQgY29sdW1uIHRvIHNlYXJjaCk6IHdoeSB0aGUgcm93cyBhcmUgbm90IG5hcnJvd2VkLiBBYnNlbnQgb3RoZXJ3aXNlLlxuICBzZWFyY2hOb3RlPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgbGlzdCB3aXRoIGNvbmZpZy50b3RhbHMgb246IGl0cyB0b3RhbHMgcm93LCBhcyByYXcgdmFsdWVzXG4gIC8vIGtleWVkIGxpa2UgdGhlIGNvbHVtbnMgKGEgcGxhaW4gbGlzdCdzIG1lYXN1cmUgYWxpYXNlczsgYSBjcm9zcy10YWInc1xuICAvLyBwaXZvdCBjZWxsIGNvbHVtbnMsIHRoZSByb3cta2V5IGNvbHVtbiBhYnNlbnQpLCBvciBudWxsIHdpdGggdG90YWxzTm90ZVxuICAvLyBzYXlpbmcgd2h5IHRoZXJlIGlzIG5vbmUuIEFic2VudCBvbiBldmVyeSBvdGhlciBwYWdlIGFuZCBsaXN0LlxuICB0b3RhbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gIHRvdGFsc05vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgd2luZG93IG9mIGRheXMgdGhlIGNvbXBvbmVudCByZWFkcywgd2hlbiBpdHMgcXVlcnkgaGFzIGEgdGltZWZyYW1lLlxuICAvLyBBYnNlbnQgb3RoZXJ3aXNlLCBhbmQgZnJvbSBvbGRlciBzZXJ2ZXJzLlxuICB0aW1lZnJhbWU/OiBDb21wb25lbnRUaW1lZnJhbWUgfCBudWxsO1xuICAvLyBUaGUgY3VycmVudCBhbmQgcHJpb3Igd2luZG93cyBvZiBhIGNvbXBvbmVudCB3aG9zZSBtZWFzdXJlcyBjb21wYXJlXG4gIC8vIGFnYWluc3QgYW4gZWFybGllciBwZXJpb2QuIEFic2VudCB3aGVuIG5vIG1lYXN1cmUgY29tcGFyZXMuIFNlbnQgb24gZXZlcnlcbiAgLy8gbGlzdCBwYWdlIGFuZCBvbiBjaGFydCBhbmQgS1BJIGRhdGEuXG4gIGNvbXBhcmlzb24/OiBDb21wb25lbnRDb21wYXJpc29uIHwgbnVsbDtcbiAgLy8gV2hhdCBlYWNoIGNvbXBhcmVkLCB3aW5kb3dlZCwgcmFua2VkIG9yIHNoYXJlZCBvdXRwdXQgY29sdW1uIGlzLCBieSBhbGlhcy5cbiAgLy8gUGxhaW4gbWVhc3VyZSBjb2x1bW5zIGFyZSBsZWZ0IG91dC5cbiAgb3V0cHV0cz86IFJlY29yZDxzdHJpbmcsIE91dHB1dE1ldGE+O1xuICAvLyBBIGNyb3NzLXRhYiBvbmx5OiB0aGUgbWVhc3VyZSBhbGlhcyBlYWNoIHBpdm90IGNlbGwgY29sdW1uIGhvbGRzLCBzbyBhXG4gIC8vIGNlbGwgdGFrZXMgaXRzIG1lYXN1cmUncyBvdXRwdXQgbWVhbmluZy4gTmV2ZXIgc2VudCBmb3IgYSBzcWwtbW9kZSBsaXN0LlxuICBjZWxsTWVhc3VyZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvLyBIb3cgZWFjaCB3aW5kb3dlZCBvdXRwdXQgY29sdW1uIChydW5uaW5nLCB0by1kYXRlIG9yIHJvbGxpbmcpIHdhc1xuICAvLyBjb21wdXRlZCwgYnkgYWxpYXMuXG4gIHdpbmRvd3M/OiBSZWNvcmQ8c3RyaW5nLCBXaW5kb3dNZXRhPjtcbiAgLy8gQSBLUEkgd2l0aCBhIGNvbXBhcmlzb24sIGEgdGFyZ2V0IG9yIGEgc3BhcmtsaW5lOiBldmVyeSBudW1iZXIgdGhlIGNhcmRcbiAgLy8gc2hvd3MgYmVzaWRlIGl0cyB2YWx1ZSwgZGVjaWRlZCBieSB0aGUgc2VydmVyLlxuICBrcGk/OiBDb21wb25lbnRLcGkgfCBudWxsO1xuICAvLyBUaGUgdGltZS1heGlzIHZhbHVlIG9mIHRoZSBidWNrZXQgY29udGFpbmluZyB0b2RheSwgd3JpdHRlbiBhcyB0aGUgcm93c1xuICAvLyB3cml0ZSBpdCwgd2hlbiB0aGF0IGJ1Y2tldCBpcyBub3QgZmluaXNoZWQgeWV0OyBudWxsIG90aGVyd2lzZS4gQSBjaGFydFxuICAvLyBtYXJrcyBpdCBhcyBwYXJ0aWFsLlxuICBwYXJ0aWFsUGVyaW9kPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gV2hpY2ggZmlsdGVycyB0aGUgcmVhZCBhcHBsaWVkLiBBYnNlbnQgZnJvbSBvbGRlciBzZXJ2ZXJzLlxuICBhcHBsaWVkPzogQ29tcG9uZW50RGF0YUFwcGxpZWQ7XG4gIC8vIEEgZHJpbGxhYmxlIGNoYXJ0J3MgZHJpbGwgc3RhdGUuIEFic2VudCBvbiBldmVyeSBvdGhlciB0aWxlIGFuZCBmcm9tXG4gIC8vIG9sZGVyIHNlcnZlcnMuXG4gIGRyaWxsPzogQ29tcG9uZW50RGF0YURyaWxsO1xufVxuXG4vLyBXaGVyZSBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSB3aW5kb3cgY2FtZSBmcm9tOiBhIHZpZXdlciBkYXRlUmFuZ2UgYm91bmQgdG9cbi8vIHRoZSB0aW1lZnJhbWUgY29sdW1uICh3aGljaCByZXBsYWNlcyB0aGUgYXV0aG9yZWQgcmFuZ2UsIG5ldmVyIG5hcnJvd3Ncbi8vIGl0KSwgdGhlIGF1dGhvcmVkIHJlbGF0aXZlIHJhbmdlLCB0aGUgYXV0aG9yZWQgZml4ZWQgZGF5cywgb3Igbm90aGluZyAoYW5cbi8vIG9wZW4gd2luZG93KS5cbmV4cG9ydCB0eXBlIFRpbWVmcmFtZVNvdXJjZSA9ICdmaWx0ZXInIHwgJ3JhbmdlJyB8ICdmaXhlZCcgfCAnbm9uZSc7XG5cbi8vIFRoZSB3aW5kb3cgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgcmVzb2x2ZWQgdG8uIHN0YXJ0IGFuZCBlbmQgYXJlXG4vLyBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsIHdyaXR0ZW4gd2l0aG91dCBhIHpvbmUuXG4vLyB0aHJvdWdoIGlzIHRoZSBVVEMgJ3l5eXktTU0tZGQgSEg6bW06c3MnIGluc3RhbnQgYSB3aW5kb3cgb24gYSBkYXRldGltZVxuLy8gY29sdW1uIGlzIGN1dCBhdDsgaXQgcmVhZHMgYXMgYSB0aW1lIGluIHRoZSByZXBvcnQgem9uZS4gSXQgaXMgc2V0IG9ubHkgd2hlblxuLy8gYSBjb21wYXJpc29uIGN1dHMgYSB3aW5kb3cgdGhhdCBlbmRzIHRvZGF5OiBhIHRpbWVmcmFtZSBvbiBpdHMgb3duIHJlYWRzXG4vLyB3aG9sZSBkYXlzLCBzbyBhIHdpbmRvdyBlbmRpbmcgdG9kYXkgd2l0aG91dCBhIGNvbXBhcmlzb24gc2VuZHMgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VGltZWZyYW1lIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG4gIHJhbmdlOiBSZXBvcnRSZWxhdGl2ZVJhbmdlIHwgbnVsbDtcbiAgc291cmNlOiBUaW1lZnJhbWVTb3VyY2U7XG59XG5cbi8vIEhvdyBhIGNvbXBhcmlzb24gaXMgbGFpZCBvdXQ6IG9uZSB2YWx1ZSBwZXIgd2luZG93IChyYW5nZSksIGEgcHJpb3Igc2VyaWVzXG4vLyBiZXNpZGUgYSB0aW1lIGF4aXMgKHNlcmllcyksIG9yIGVhY2ggcGVyaW9kJ3MgdmFsdWUgcmVhZCBhdCBpdHMgZW5kLCBzZXRcbi8vIGFnYWluc3QgdGhlIHZhbHVlIGF0IHRoZSBlbmQgb2YgYW4gZWFybGllciBwZXJpb2QgKHBlcmlvZF9lbmQpLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk1vZGUgPSAncmFuZ2UnIHwgJ3NlcmllcycgfCAncGVyaW9kX2VuZCc7XG5cbi8vIHRvX2RhdGUgY29tcGFyZXMgbGlrZSB3aXRoIGxpa2UgKHRoZSBmaXJzdCAyIGRheXMgb2YgYSBtb250aCBhZ2FpbnN0IHRoZVxuLy8gZmlyc3QgMiBkYXlzIG9mIHRoZSBvbmUgYmVmb3JlKTsgZnVsbCBjb21wYXJlcyB3aG9sZSBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFsaWduID0gJ3RvX2RhdGUnIHwgJ2Z1bGwnO1xuXG4vLyBXaGF0IGEgbWVhc3VyZSBpcyBjb21wYXJlZCBhZ2FpbnN0LiBNaXJyb3JzIHRoZSBzZXJ2ZXInc1xuLy8gQ29tcGFyaXNvbkFnYWluc3RFbnVtIHZhbHVlIGZvciB2YWx1ZS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BZ2FpbnN0ID1cbiAgfCAncHJldmlvdXNfcGVyaW9kJ1xuICB8ICdwcmV2aW91c193ZWVrJ1xuICB8ICdwcmV2aW91c19tb250aCdcbiAgfCAncHJldmlvdXNfcXVhcnRlcidcbiAgfCAncHJldmlvdXNfeWVhcidcbiAgfCAncmFuZ2UnO1xuXG4vLyBXaHkgYSBjb21wYXJpc29uIHJlYWRzIGFzIGl0IGRvZXMuIFRoZSBzZXJ2ZXIgc2VuZHMgY29kZXMsIG5ldmVyXG4vLyBzZW50ZW5jZXM7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbi8vIC0gbm9fd2luZG93OiBubyBkYXRlIHJhbmdlIHRvIGNvbXBhcmUgeWV0O1xuLy8gLSB1bml0X2luZmVycmVkOiB0aGUgcGVyaW9kIHVuaXQgd2FzIGluZmVycmVkIGZyb20gdGhlIGRheXMsIG5vdCBuYW1lZDtcbi8vIC0gd2luZG93X2luX2Z1dHVyZTogdGhlIHdpbmRvdyBzdGFydHMgYWZ0ZXIgdG9kYXk7XG4vLyAtIG90aGVyX2RhdGVfZmlsdGVyOiBhIGRhdGUgZmlsdGVyIG9uIGFub3RoZXIgY29sdW1uIGFsc28gYXBwbGllcztcbi8vIC0gZ3JhaW5fZm9sbG93ZWQ6IHRoZSBwcmlvciBmb2xsb3dzIHRoZSBncm91cC1ieSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydC5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Ob3RlQ29kZSA9XG4gIHwgJ25vX3dpbmRvdydcbiAgfCAndW5pdF9pbmZlcnJlZCdcbiAgfCAnd2luZG93X2luX2Z1dHVyZSdcbiAgfCAnb3RoZXJfZGF0ZV9maWx0ZXInXG4gIHwgJ2dyYWluX2ZvbGxvd2VkJztcblxuLy8gT25lIGNvbXBhcmlzb24gd2luZG93OiBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsXG4vLyBhbmQgdGhlIFVUQyBpbnN0YW50IGl0IGlzIGN1dCBhdCB3aGVuIGl0IGVuZHMgdG9kYXkgb24gYSBkYXRldGltZSBjb2x1bW4uXG4vLyBJbiBzZXJpZXMgbW9kZSBpdCBpcyB0aGUgc3BhbiB0aGUgY2hhcnQgc2hvd3MuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25XaW5kb3cge1xuICBzdGFydDogc3RyaW5nO1xuICBlbmQ6IHN0cmluZztcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gSG93IGZhciBiYWNrIG9uZSBwcmlvciBsYW5lIHNpdHMuIEEgY3VzdG9tIHJhbmdlIGhhcyBubyB1bml0IG9yIGNvdW50LCBhbmRcbi8vIG5laXRoZXIgZG9lcyBwcmV2aW91c19wZXJpb2Qgd2hlbiB0aGVyZSBpcyBubyBjdXJyZW50IHdpbmRvdyB0byBtZWFzdXJlXG4vLyAobm9fd2luZG93LCB3aW5kb3dfaW5fZnV0dXJlKTsgYSBzaGlmdCBieSB0aGUgd2luZG93J3MgbGVuZ3RoIGlzIHVuaXQgZGF5XG4vLyB3aXRoIHRoZSBsZW5ndGggYXMgdGhlIGNvdW50OyBhIHByZXZpb3VzIHllYXIgaXMgMzY0IGRheXMgb24gYSBkYXkgYXhpcyBhbmRcbi8vIDUyIHdlZWtzIG9uIGEgd2VlayBheGlzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uT2Zmc2V0IHtcbiAgYWdhaW5zdDogQ29tcGFyaXNvbkFnYWluc3Q7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBjb3VudDogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBjb21wYXJpc29uOiB0aGUgem9uZSBpdHMgZGF5cyBhcmUgaW4sIHRoZSBjdXJyZW50IHdpbmRvd1xuLy8gKG51bGwgd2hlbiB0aGVyZSBpcyBubyB3aW5kb3cgdG8gY29tcGFyZSB5ZXQsIG9yIHdoZW4gYSB0aW1lIGF4aXMgcnVuc1xuLy8gb3ZlciBhbGwgdGhlIGRhdGEsIHdoaWNoIGhhcyBubyBmaXJzdCBkYXkgdG8gbmFtZSkgYW5kIHVwIHRvIDIgcHJpb3Jcbi8vIGxhbmVzOiBvZmZzZXRzW2ldIGRlc2NyaWJlcyBsYW5lIGkgKyAxLCBhbmQgcHJpb3JzW2ldIGl0cyB3aW5kb3cuIFdpdGggbm9cbi8vIGN1cnJlbnQgd2luZG93IHByaW9ycyBpcyBlbXB0eSwgd2hpbGUgb2Zmc2V0cyBzdGlsbCBuYW1lcyBldmVyeSBsYW5lLlxuLy8gZmxvb3IgaXMgdGhlICd5eXl5LU1NLWRkJyBkYXkgb2YgdGhlIGZpcnN0IHJvdyB0aGUgcXVlcnkncyBvd24gY29uZGl0aW9uc1xuLy8ga2VlcCAodmlld2VyIGZpbHRlcnMgYXNpZGUpOiBhIHByaW9yIHdpbmRvdyB3aG9sbHkgYmVmb3JlIGl0IGhhcyBubyBkYXRhXG4vLyByYXRoZXIgdGhhbiBhIHplcm8uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbXBhcmlzb24ge1xuICBtb2RlOiBDb21wYXJpc29uTW9kZTtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgYWxpZ246IENvbXBhcmlzb25BbGlnbjtcbiAgY3VycmVudDogQ29tcGFyaXNvbldpbmRvdyB8IG51bGw7XG4gIHByaW9yczogQ29tcGFyaXNvbldpbmRvd1tdO1xuICBvZmZzZXRzOiBDb21wYXJpc29uT2Zmc2V0W107XG4gIGZsb29yOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogQ29tcGFyaXNvbk5vdGVDb2RlW107XG59XG5cbi8vIFdoYXQgYW4gb3V0cHV0IGNvbHVtbiBob2xkczogYSBtZWFzdXJlJ3MgdmFsdWUsIGl0cyByYW5rIG9yIGl0cyBzaGFyZS5cbmV4cG9ydCB0eXBlIE91dHB1dEtpbmQgPSAndmFsdWUnIHwgJ3JhbmsnIHwgJ3NoYXJlJztcblxuLy8gV2hpY2ggc2lkZSBvZiBhIGNvbXBhcmlzb24gYW4gb3V0cHV0IGNvbHVtbiBpczogdGhlIGN1cnJlbnQgdmFsdWUsIHRoZVxuLy8gcHJpb3Igb25lLCB0aGVpciBkaWZmZXJlbmNlLCBvciB0aGUgZGlmZmVyZW5jZSBhcyBhIDAtMSBmcmFjdGlvbiBvZiB0aGVcbi8vIHByaW9yLiBudWxsIGZvciBhbiBvdXRwdXQgdGhhdCBpcyBub3QgY29tcGFyZWQuXG5leHBvcnQgdHlwZSBPdXRwdXRSb2xlID0gJ2N1cnJlbnQnIHwgJ3ByaW9yJyB8ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gSG93IHRpZWQgdmFsdWVzIHJhbms6IDEsIDEsIDMgKGNvbXBldGl0aW9uKSBvciAxLCAxLCAyIChkZW5zZSkuXG5leHBvcnQgdHlwZSBPdXRwdXRSYW5rTWV0aG9kID0gJ2NvbXBldGl0aW9uJyB8ICdkZW5zZSc7XG5cbi8vIEEgcmFuayBvdXRwdXQ6IGhvdyB0aWVzIHJhbmssIHdoaWNoIGVuZCByYW5rcyAxIChkZXNjOiB0aGUgbGFyZ2VzdCksIGFuZFxuLy8gdGhlIGRpbWVuc2lvbiBvdXRwdXRzIGl0IHJlc3RhcnRzIHdpdGhpbiAobm9uZTogdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFJhbmsge1xuICBtZXRob2Q6IE91dHB1dFJhbmtNZXRob2Q7XG4gIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYyc7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIEEgc2hhcmUgb3V0cHV0OiB0aGUgZGltZW5zaW9uIG91dHB1dHMgd2hvc2UgdG90YWwgaXQgaXMgYSBzaGFyZSBvZiAobm9uZTpcbi8vIHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRTaGFyZSB7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIFRoZSBtZWFuaW5nIG9mIG9uZSBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbi5cbi8vIG1lYXN1cmUgaXMgdGhlIHNvdXJjZSBtZWFzdXJlJ3MgYWxpYXMsIHdob3NlIGZvcm1hdCB0aGUgY29sdW1uIGluaGVyaXRzO1xuLy8gb2Zmc2V0IGlzIHRoZSBwcmlvciBsYW5lIGEgcHJpb3IsIGNoYW5nZSBvciBwZXJjZW50IGNoYW5nZSBiZWxvbmdzIHRvIChpdHNcbi8vIHdpbmRvdyBpcyBjb21wYXJpc29uLnByaW9yc1tvZmZzZXQgLSAxXSkuIFVubGVzcyB0aGUgY29uZmlnIGZvcm1hdHMgaXQsIGFcbi8vIHNoYXJlIHByaW50cyBhcyBhIHBlcmNlbnQgdG8gMSBkZWNpbWFsIGFuZCBhIHJhbmsgYXMgYSB3aG9sZSBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE1ldGEge1xuICBtZWFzdXJlOiBzdHJpbmc7XG4gIGtpbmQ6IE91dHB1dEtpbmQ7XG4gIHJvbGU6IE91dHB1dFJvbGUgfCBudWxsO1xuICBvZmZzZXQ6IG51bWJlciB8IG51bGw7XG4gIHdpbmRvdzogYm9vbGVhbjtcbiAgcmFuazogT3V0cHV0UmFuayB8IG51bGw7XG4gIHNoYXJlOiBPdXRwdXRTaGFyZSB8IG51bGw7XG59XG5cbi8vIEEgd2luZG93IG92ZXIgdGhlIHJvd3M6IGEgcnVubmluZyB0b3RhbCwgYSB0b3RhbCB0byBkYXRlIHdpdGhpbiBlYWNoXG4vLyBwZXJpb2QgKG1vbnRoIHRvIGRhdGUpLCBvciBhIHJvbGxpbmcgc3BhbiBvZiBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgV2luZG93S2luZCA9ICdydW5uaW5nJyB8ICd0b19kYXRlJyB8ICdyb2xsaW5nJztcblxuLy8gV2h5IGEgd2luZG93IHJlYWRzIGFzIGl0IGRvZXMuIENvZGVzIG9ubHk7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbmV4cG9ydCB0eXBlIFdpbmRvd05vdGVDb2RlID1cbiAgfCAnc25hcHBlZF9zdGFydCdcbiAgfCAnc3Bhbl9jb252ZXJ0ZWQnXG4gIHwgJ2dyYWluX3Rvb19jb2Fyc2UnXG4gIHwgJ2VxdWFsX2dyYWluX3BsYWluJ1xuICB8ICdvd25fZmlsdGVyX2NhcHNfbGVhZF9pbidcbiAgfCAnd2Vla19ieV9tb25kYXknXG4gIHwgJ2luY29tcGxldGVfaGVhZCc7XG5cbi8vIEhvdyBvbmUgd2luZG93ZWQgb3V0cHV0IGNvbHVtbiB3YXMgY29tcHV0ZWQuIHBlcmlvZHMgYW5kIHVuaXQgc2l6ZSBhXG4vLyByb2xsaW5nIHdpbmRvdyAoZHJhd25QZXJpb2RzIGlzIHRoYXQgc3BhbiBjb3VudGVkIGluIHRoZSBncmFpbiB0aGUgcm93c1xuLy8gYXJlIGRyYXduIGF0KTsgcmVzZXRFdmVyeSByZXN0YXJ0cyBhIHRvLWRhdGUgd2luZG93OyBhdmVyYWdlIG1ha2VzIHRoZVxuLy8gd2luZG93IGFuIGF2ZXJhZ2UgcmF0aGVyIHRoYW4gYSB0b3RhbDsgZnJvbUJlZ2lubmluZ1xuLy8gcnVucyBhIHRvdGFsIGZyb20gdGhlIGZpcnN0IHJvdyBldmVyIHJhdGhlciB0aGFuIGZyb20gdGhlIGZpcnN0IHJvdyBzaG93bi5cbi8vIHN0YXJ0LCBlbmQgYW5kIGxlYWRJbiBhcmUgJ3l5eXktTU0tZGQnIHJlcG9ydC16b25lIGRheXM6IHRoZSByb3dzIHNob3duLFxuLy8gYW5kIHRoZSBlYXJsaWVyIGRheSB0aGUgd2luZG93IHJlYWRzIGZyb20gc28gaXRzIGZpcnN0IHJvd3MgYXJlIHdob2xlLlxuLy8gZGVzY3JpcHRpb24gaXMgdGhlIHNlcnZlcidzIEVuZ2xpc2ggZm9yIHRoZSBhZ2VudCBhbmQgdGhlIGV4cG9ydHM7IHRoZVxuLy8gdmlld2VyIGNvbXBvc2VzIGl0cyBvd24gd29yZHMgZnJvbSB0aGUgZmllbGRzLlxuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dNZXRhIHtcbiAga2luZDogV2luZG93S2luZDtcbiAgcGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGRyYXduUGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgcmVzZXRFdmVyeTogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGF2ZXJhZ2U6IGJvb2xlYW47XG4gIGZyb21CZWdpbm5pbmc6IGJvb2xlYW47XG4gIGRhdGVDb2x1bW46IHN0cmluZyB8IG51bGw7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIGxlYWRJbjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IFdpbmRvd05vdGVDb2RlW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIFdoaWNoIGRlbHRhIGEgS1BJIGNhcmQgc2hvd3M6IHRoZSBkaWZmZXJlbmNlLCBvciB0aGUgcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlEZWx0YVNob3cgPSAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIFdoeSBhIEtQSSdzIGRlbHRhIHJlYWRzIGFzIGl0IGRvZXM6XG4vLyAtIG5vX3ByaW9yX2RhdGE6IHRoZSBwcmlvciB3aW5kb3cgaGFzIG5vIHZhbHVlO1xuLy8gLSB1cF9mcm9tX3plcm86IHRoZSBwcmlvciB3YXMgMCwgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2U7XG4vLyAtIG5vX2NoYW5nZTogYm90aCBhcmUgMDtcbi8vIC0gbm9fZGF0YV9laXRoZXI6IG5laXRoZXIgd2luZG93IGhhcyBhIHZhbHVlO1xuLy8gLSBzaWduX2NoYW5nZTogdGhlIHZhbHVlIGNyb3NzZWQgemVybywgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlOb3RlQ29kZSA9XG4gIHwgJ25vX3ByaW9yX2RhdGEnXG4gIHwgJ3VwX2Zyb21femVybydcbiAgfCAnbm9fY2hhbmdlJ1xuICB8ICdub19kYXRhX2VpdGhlcidcbiAgfCAnc2lnbl9jaGFuZ2UnO1xuXG4vLyBBIEtQSSdzIHByb2dyZXNzIHRvd2FyZCBpdHMgY29uZmlndXJlZCB0YXJnZXQuIHByb2dyZXNzIGlzIHZhbHVlIC8gdGFyZ2V0XG4vLyAobnVsbCB3aGVuIHRoZSB0YXJnZXQgaXMgMCk7IG1ldCBmb2xsb3dzIHRoZSBjb25maWcncyBpbmNyZWFzZUlzIChudWxsXG4vLyB3aGVuIGl0IGlzIG5ldXRyYWwpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlUYXJnZXQge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvZ3Jlc3M6IG51bWJlciB8IG51bGw7XG4gIG1ldDogYm9vbGVhbiB8IG51bGw7XG59XG5cbi8vIE9uZSBzcGFya2xpbmUgcG9pbnQ6IHRoZSBwZXJpb2QsIHdyaXR0ZW4gYXMgYSB0aW1lLWF4aXMgdmFsdWUsIGFuZCB0aGVcbi8vIHZhbHVlIGluIGl0IChudWxsIHdoZW4gYSBub24tYWRkaXRpdmUgbWVhc3VyZSBoYXMgbm8gcm93cyB0aGVyZSkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50IHtcbiAgcGVyaW9kOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZSBwb2ludHMsIG9sZGVzdCBmaXJzdC4gcGFydGlhbCBzYXlzIHRoZSBsYXN0IHBlcmlvZCBpc1xuLy8gbm90IGZpbmlzaGVkIHlldC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lIHtcbiAgZ3JhbnVsYXJpdHk6IENoYXJ0R3JhbnVsYXJpdHk7XG4gIHBhcnRpYWw6IGJvb2xlYW47XG4gIHBvaW50czogQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnRbXTtcbn1cblxuLy8gRXZlcnkgbnVtYmVyIGEgS1BJIGNhcmQgc2hvd3MgYmVzaWRlIGl0cyB2YWx1ZS4gc2hvdyBuYW1lcyB0aGUgZGVsdGEgdG9cbi8vIHByaW50LCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuIFdoZW4gdmFsdWUgaXMgbnVsbCB0aGUgY2FyZCBzaG93cyBhIGRhc2ggYW5kXG4vLyBubyBjb21wYXJpc29uLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGkge1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3I6IG51bWJlciB8IG51bGw7XG4gIGNoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgcGVyY2VudENoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgc2hvdzogS3BpRGVsdGFTaG93O1xuICBub3RlOiBLcGlOb3RlQ29kZSB8IG51bGw7XG4gIHRhcmdldDogQ29tcG9uZW50S3BpVGFyZ2V0IHwgbnVsbDtcbiAgc3BhcmtsaW5lOiBDb21wb25lbnRLcGlTcGFya2xpbmUgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIENTViBleHBvcnQ6IHRoZSBwcmVzaWduZWQgZG93bmxvYWQgVVJMLCBwbHVzIG9uZSBzZW50ZW5jZSBwZXJcbi8vIHdheSB0aGUgZmlsZSBmYWxscyBzaG9ydCBvZiB0aGUgZnVsbCByZXN1bHQgKGN1dCBhdCB0aGUgZXhwb3J0IGNlaWxpbmcsIG9yXG4vLyBjdXQgYXMgdGhlIGNoYXJ0IGl0c2VsZiBpcykuIEVtcHR5IHdoZW4gdGhlIGZpbGUgaXMgY29tcGxldGUuIE9wdGlvbmFsXG4vLyBiZWNhdXNlIGEgc2VydmVyIG9uIGFuIG9sZGVyIGZyYW1ld29yayBhbnN3ZXJzIHdpdGggdGhlIHVybCBhbG9uZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RXhwb3J0UmVzcG9uc2Uge1xuICB1cmw6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMaXN0SXRlbSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kaWZ5RGF0ZTogc3RyaW5nO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xuICAvLyBUaGUgZm9sZGVyIHRoZSByZXBvcnQgaXMgZmlsZWQgdW5kZXIuIG51bGwgaXMgYSByZWFsLCBjb21tb24gdmFsdWUg4oCUIHRoZVxuICAvLyByZXBvcnQgc2l0cyBhdCB0aGUgcm9vdCBvZiB0aGUgbGlzdGluZyB0cmVlIGFsb25nc2lkZSB0aGUgZm9sZGVycy5cbiAgLy9cbiAgLy8gT3B0aW9uYWwgbGlrZSBgc3RhdGVgIGJlc2lkZSBpdDogdGhlIGJhY2tlbmQgYWx3YXlzIHNlbmRzIGl0LCBidXQgbWFraW5nIGl0XG4gIC8vIHJlcXVpcmVkIGlzIGEgYnJlYWtpbmcgdHlwZSBjaGFuZ2UgZm9yIGV2ZXJ5IGNvbnN1bWVyIGhvbGRpbmcgYVxuICAvLyBSZXBvcnRMaXN0SXRlbSBsaXRlcmFsIChmaXh0dXJlcywgbW9ja3MpIGFuZCBidXlzIG5vdGhpbmcg4oCUIHRoZSBsaXN0aW5nXG4gIC8vIHJlYWRzIGl0IGFzIGA/PyBudWxsYCBlaXRoZXIgd2F5LlxuICByZXBvcnRGb2xkZXJJZD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIE9uZSBmb2xkZXIgaW4gdGhlIGxpc3RpbmcgdHJlZSDigJQgYW4gYXVkaWVuY2UgYnVja2V0IChcIk1hbmFnZW1lbnRcIixcbi8vIFwiT3BlcmF0aW9uc1wiKSByZXBvcnRzIGFyZSBmaWxlZCBpbnRvLiBGb2xkZXJzIG5lc3QgdmlhIHBhcmVudFJlcG9ydEZvbGRlcklkO1xuLy8gcmVwb3J0cyBuZXZlciBkbywgc28gdGhlIHRyZWUncyBvbmx5IGJyYW5jaCBub2RlcyBhcmUgZm9sZGVycy5cbi8vXG4vLyBgc3RhdGVgIGlzIHRoZSBmb2xkZXIncyBPV04gc3RhdGUuIERlbGV0aW5nIGEgZm9sZGVyIHdyaXRlcyBvbmx5IHRoYXQsIGFuZFxuLy8gZXZlcnl0aGluZyBiZWxvdyBpdCBjb3VudHMgYXMgZGVsZXRlZCBieSBwb3NpdGlvbiDigJQgc2VlIFJlcG9ydE5vZGUuZGVsZXRlZC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9sZGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnRSZXBvcnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbn1cblxuLy8gR0VUIC9hcGkvcmVwb3J0cyByZXR1cm5zIGJvdGggaGFsdmVzIGZsYXQ7IHRoZSBsaXN0aW5nIG5lc3RzIHRoZW0gaXRzZWxmLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRUcmVlIHtcbiAgcmVwb3J0czogUmVwb3J0TGlzdEl0ZW1bXTtcbiAgZm9sZGVyczogUmVwb3J0Rm9sZGVyW107XG59XG5cbmV4cG9ydCBlbnVtIFJlcG9ydE5vZGVUeXBlIHtcbiAgRm9sZGVyID0gJ2ZvbGRlcicsXG4gIFJlcG9ydCA9ICdyZXBvcnQnLFxufVxuXG4vLyBPbmUgbm9kZSBhcyBmcy10cmVlIHNlZXMgaXQuIEZvbGRlcnMgYW5kIHJlcG9ydHMgc2hhcmUgb25lIGlkIHNwYWNlIGluIHRoZVxuLy8gdmlldywgc28gdGhlIGlkcyBhcmUgcHJlZml4ZWQgKCdmOjEyJyAvICdyOjM0Jykg4oCUIGBpZGAgaXMgdGhlIG9yaWdpbmFsLFxuLy8gcGVyLXRhYmxlIGlkIHRoYXQgdGhlIEFQSSBlbmRwb2ludHMgdGFrZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Tm9kZSB7XG4gIGtleTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydE5vZGVUeXBlO1xuICAvLyBPbmx5IGV2ZXIgcG9wdWxhdGVkIG9uIGEgZm9sZGVyOyBhIHJlcG9ydCBpcyBhbHdheXMgYSBsZWFmLlxuICBjaGlsZHJlbjogUmVwb3J0Tm9kZVtdO1xuICAvLyBQcmVzZW50IG9uIHJlcG9ydCBub2RlcyBvbmx5LlxuICByZXBvcnQ/OiBSZXBvcnRMaXN0SXRlbTtcbiAgLy8gVGhlIG5vZGUncyBvd24gcm93IGlzIGRlbGV0ZWQuIFdoYXQgZWFybnMgdGhlIFwiRGVsZXRlZFwiIGNoaXAg4oCUIHRoaXMgaXNcbiAgLy8gd2hhdCBzb21lYm9keSBhY3R1YWxseSBkZWxldGVkLlxuICBzdGF0ZURlbGV0ZWQ6IGJvb2xlYW47XG4gIC8vIERlbGV0ZWQgaXRzZWxmIE9SIGFueXdoZXJlIGJlbG93IGEgZGVsZXRlZCBmb2xkZXIuIE9ubHkgZXZlciB0cnVlIGluIFNob3dcbiAgLy8gRGVsZXRlZCBtb2RlICh0aGUgZGVmYXVsdCBsaXN0aW5nIG5ldmVyIHJldHVybnMgc3VjaCBhIG5vZGUpLCBhbmQgaXQgaXMgd2hhdFxuICAvLyBzd2FwcyB0aGUgcm93J3MgYWN0aW9ucyBmb3IgUmVzdG9yZS5cbiAgZGVsZXRlZDogYm9vbGVhbjtcbn1cblxuLy8gUmVwb3J0cyBhbmQgZm9sZGVycyBhcmUgYm90aCBzb2Z0LWRlbGV0YWJsZS4gQSBkZWxldGVkIHJlcG9ydCBrZWVwcyBpdHMgcGFnZXNcbi8vIGFuZCBjb21wb25lbnRzOyBhIGRlbGV0ZWQgZm9sZGVyIGtlZXBzIGV2ZXJ5dGhpbmcgZmlsZWQgdW5kZXIgaXQsIHdoaWNoIGxlYXZlc1xuLy8gdGhlIGxpc3Rpbmcgd2l0aCBpdCBhbmQgY29tZXMgYmFjayB3aXRoIGl0LiBcIlNob3cgRGVsZXRlZFwiIHNob3dzIHRoZSB3aG9sZVxuLy8gdHJlZSwgbGl2ZSBhbmQgZGVsZXRlZCB0b2dldGhlciwgc28gYW55IG9mIGl0IGNhbiBiZSByZXN0b3JlZCBpbiBwbGFjZS5cbmV4cG9ydCBlbnVtIFJlcG9ydFN0YXRlIHtcbiAgQWN0aXZlID0gJ2FjdGl2ZScsXG4gIERlbGV0ZWQgPSAnZGVsZXRlZCcsXG59XG5cbi8vIFRoZSBjaGF0IHR1cm4gZmxhZ3MgdGhpcyBjb250ZXh0J3MgYmFja2VuZCBhZGRzIChSZXBvcnRzXFxBaVZpZXcpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDaGF0UmVzcG9uc2Uge1xuICByZXBvcnRDaGFuZ2VkPzogYm9vbGVhbjtcbiAgcmVwb3J0UmVuYW1lZD86IGJvb2xlYW47XG59XG5cbi8vIE9uZSB2ZXJzaW9uIG9mIHRoZSBnbG9iYWwgQUkga25vd2xlZGdlIGRvY3VtZW50IOKAlCB0aGUgb3BlcmF0b3ItYXV0aG9yZWRcbi8vIG1hcmtkb3duIGFwcGVuZGVkIHRvIHRoZSByZXBvcnQgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGV2ZXJ5IHR1cm4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBjdXJyZW50OiBib29sZWFuO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBtb2RpZnlEYXRlOiBEYXRlO1xuICBhY2NvdW50SWQ6IG51bWJlciB8IG51bGw7XG4gIGFjY291bnROYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBHRVQvUFVUIGluc3RydWN0aW9ucyBwYXlsb2FkOiB0aGUgY3VycmVudCB2ZXJzaW9uIChudWxsIHVudGlsIG9uZSBpc1xuLy8gYXV0aG9yZWQpIHBsdXMgdGhlIGZ1bGwgaGlzdG9yeSwgbmV3ZXN0IGZpcnN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbnMge1xuICBpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9uIHwgbnVsbDtcbiAgdmVyc2lvbnM6IFJlcG9ydEluc3RydWN0aW9uW107XG59XG5cbi8vIFRoZSBsYXRlc3Qgc2VtYW50aWMtZGF0YWJhc2UgYnVpbGQgKGFuIGZmX3Byb2Nlc3NlcyByb3cpIOKAlCBlbm91Z2ggZm9yIHRoZVxuLy8gc2V0dGluZ3MgZGlhbG9nIHRvIHNheSB3aGF0IHN0YXRlIHRoZSBidWlsZCBpcyBpbiBhbmQgd2hlbiBpdCBsYXN0IHJhbi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZCB7XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBlcmNlbnQ6IG51bWJlciB8IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG4gIGVuZERhdGU6IERhdGU7XG59XG5cbi8vIEEgYnVpbGQgc3RhZ2UncyBzdGF0ZSBvbiB0aGUgZW50aXR5IHNjb3JlYm9hcmQ6ICdkb25lJyA9IGJ1aWx0LCAnbWlzc2luZycgPVxuLy8gc3RpbGwgbmVlZHMgYnVpbGRpbmcgKGEgbWlzc2luZyBzdGFnZSBpcyB1bmJ1aWx0IGNvbnRlbnQsIG5ldmVyIGFuIGVycm9yKS5cbmV4cG9ydCB0eXBlIFNlbWFudGljQnVpbGRTdGFnZSA9ICdkb25lJyB8ICdtaXNzaW5nJztcblxuLy8gT25lIGVudW0gY29sdW1uIG9mIGFuIGVudGl0eSwgd2l0aCB0aGUgYWxsb3dlZCB2YWx1ZXMgdGhlIGJ1aWxkIGlubGluZWQuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnVtIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8vIE9uZSBlbnRpdHkgcm93IG9mIHRoZSBzY29yZWJvYXJkIChhbiBlbnRpdHkgPSBhIHRhYmxlICsgYSBtb2RlbCArIGFcbi8vIGhhbmRsZXIpOiBpdHMgdGFibGUvc2hhcGUgY291bnRzLCBpbmxpbmVkIGVudW0gdmFsdWVzLCBjb21wdXRlZCBmaWVsZHMsIGhvd1xuLy8gbWFueSBjb2RlIGZ1bmN0aW9ucyB3ZXJlIGNhY2hlZCAoc3BsaXQgbW9kZWwgdnMgaGFuZGxlciksIGFuZCB0aGUgcGVyLXN0YWdlXG4vLyBidWlsdC9taXNzaW5nIHN0YXRlLlxuLy9cbi8vIGBtb2RlbGAvYGhhbmRsZXJgIGFyZSB0aGUgY2xhc3NlcyB0aGUgZnVuY3Rpb25zIHdlcmUgcmVhZCBmcm9tIOKAlCB3aGF0IGFcbi8vIHJlYWRlciByZWNvZ25pemVzIHRoZSByb3cgYnksIHdoZXJlIGBrZXlgIGlzIHdoYXQgdGhlIHJlcG9ydCBBSSBhZGRyZXNzZXMgaXRcbi8vIGJ5IGluIGRlc2NyaWJlX2VudGl0eSAvIGNvbXBpbGVfcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnRpdHkge1xuICBrZXk6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXI6IHN0cmluZyB8IG51bGw7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgcmVsYXRpb25zaGlwczogbnVtYmVyO1xuICBlbnVtczogU2VtYW50aWNCdWlsZEVudW1bXTtcbiAgY29tcHV0ZWRGaWVsZHM6IHN0cmluZ1tdO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIG1vZGVsRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBoYW5kbGVyRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBzdGFnZXM6IFJlY29yZDxzdHJpbmcsIFNlbWFudGljQnVpbGRTdGFnZT47XG59XG5cbi8vIE9uZSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgdGhlIGJ1aWxkIHJlYWQ6IGRvbWFpbiBsb2dpYyB3aXRoIG5vIHRhYmxlIG9mIGl0c1xuLy8gb3duIChhIHN1bW1hcnkgbW9kZWwsIGEgY2FsY3VsYXRpb24gc2VydmljZSkuIFRoZSByZXBvcnQgQUkgcmVhZHMgaXRzIGNvZGVcbi8vIGV4YWN0bHkgbGlrZSBhbiBlbnRpdHkncywgYnV0IGl0IGNhbiBuZXZlciBiZSBxdWVyaWVkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvXG4vLyBzZWxlY3QgZnJvbSDigJQgc28gaXQgY2FycmllcyBubyB0YWJsZSwgY29sdW1ucyBvciByZWxhdGlvbnNoaXBzLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkQ2xhc3Mge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLy8gV2hhdCB0aGUgYnVpbGQgZGVjaWRlZCBhIHBoeXNpY2FsIHRhYmxlIGlzLiBFbnRpdHkgYW5kIGp1bmN0aW9uIGFyZSBib3RoXG4vLyByZWFjaGFibGUgYnkgdGhlIHJlcG9ydCBBSSDigJQgYW4gZW50aXR5IGRpcmVjdGx5LCBhIGp1bmN0aW9uIHRocm91Z2ggdGhlXG4vLyBtYW55LXRvLW1hbnkgaXQgYnJpZGdlcy4gRXhjbHVkZWQgaXMgbm90IHJlYWNoYWJsZSBhdCBhbGwuXG5leHBvcnQgdHlwZSBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb24gPSAnZW50aXR5JyB8ICdqdW5jdGlvbicgfCAnZXhjbHVkZWQnO1xuXG4vLyBPbmUgcGh5c2ljYWwgdGFibGUgYXMgdGhlIGJ1aWxkIGNsYXNzaWZpZWQgaXQuIGByZWFzb25gIGFuc3dlcnMgYSBzaW5nbGVcbi8vIHF1ZXN0aW9uIOKAlCB3aHkgY2FuJ3QgdGhlIHJlcG9ydCBBSSBzZWUgdGhpcyB0YWJsZT8g4oCUIGFuZCBpcyBudWxsIHdoZW4gaXQgY2FuLlxuLy8gQSBqdW5jdGlvbiB3aXRoIGEgcmVhc29uIGJyaWRnZWQgbm90aGluZywgc28gaXQgaXMganVzdCBhcyBpbnZpc2libGUgYXMgYW5cbi8vIGV4Y2x1ZGVkIHRhYmxlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkVGFibGUge1xuICB0YWJsZTogc3RyaW5nO1xuICBjbGFzc2lmaWNhdGlvbjogU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgYnVpbGQgc2NvcmVib2FyZCBzaGlwcGVkIGFsb25nc2lkZSB0aGUgYnVpbGQgc3RhdHVzOiB0aGUgc3VtbWFyeSBjb3VudHMsXG4vLyB0aGUgZnVsbCBicmVha2Rvd24gdGhlIHNldHRpbmdzIGRpYWxvZyBkcmlsbHMgaW50byDigJQgQk9USCBraW5kcyBvZiB1bml0IHRoZVxuLy8gYnVpbGQgY2FjaGVzLCB0YWJsZS1iYWNrZWQgZW50aXRpZXMgYW5kIHN0YW5kYWxvbmUgY29kZSBjbGFzc2VzIOKAlCBhbmQgdGhlXG4vLyBjYXRhbG9nIG9mIGV2ZXJ5IHRhYmxlIHRoZSBidWlsZCBzYXcsIHNvIHRoZSB0YWIgY2FuIHNob3cgd2hhdCB0aGUgcmVwb3J0IEFJXG4vLyBjYW4ndCBzZWUsIG5vdCBqdXN0IHdoYXQgaXQgY2FuLlxuLy9cbi8vIGBmdW5jdGlvbkNvdW50YCBzcGFucyBlbnRpdGllcyBhbmQgY2xhc3NlcyBhbGlrZTogaXQgaXMgdGhlIHNhbWUgdG90YWwgdGhlXG4vLyBidWlsZCBpdHNlbGYgcmVwb3J0cyB3aGVuIGl0IGZpbmlzaGVzLlxuLy9cbi8vIGB0YWJsZXNgIGlzIGVtcHR5IGZvciBhbiBhcnRpZmFjdCBidWlsdCBiZWZvcmUgdGhlIGNhdGFsb2cgZXhpc3RlZC4gUmVhZCB0aGF0XG4vLyBhcyBcIm5vIGNhdGFsb2dcIiwgbmV2ZXIgYXMgXCJub3RoaW5nIHdhcyBleGNsdWRlZFwiLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRGV0YWlsIHtcbiAgLy8gV2hldGhlciB0aGUgYXJ0aWZhY3Qgd2FzIHByb2R1Y2VkIGJ5IGEgYnVpbGQgdGhhdCByYW4gdG8gdGhlIGVuZC4gUmVhZCBpdFxuICAvLyBiZXNpZGUgYGdlbmVyYXRlZEF0YCwgbmV2ZXIgaW5zdGVhZCBvZiBpdDogdGhlIHN0cnVjdHVyYWwgYXJ0aWZhY3QgaXNcbiAgLy8gcHVibGlzaGVkIEJFRk9SRSB0aGUgQUkgZnVuY3Rpb24gcGFzcywgc28gYSBidWlsZCB3aG9zZSBBSSBwYXNzIGZhaWxlZCBzdGlsbFxuICAvLyBjYXJyaWVzIGEgZGF0ZSBhbmQgYSBmdWxsIHNldCBvZiBjb3VudHMuIFRoZSBkYXRlIHNheXMgc29tZXRoaW5nIHdhc1xuICAvLyB3cml0dGVuOyBvbmx5IHRoaXMgc2F5cyB0aGUgYnVpbGQgZmluaXNoZWQgd3JpdGluZyBpdC5cbiAgY29tcGxldGU6IGJvb2xlYW47XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgZW50aXR5Q291bnQ6IG51bWJlcjtcbiAgY2xhc3NDb3VudDogbnVtYmVyO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGVudGl0aWVzOiBTZW1hbnRpY0J1aWxkRW50aXR5W107XG4gIGNsYXNzZXM6IFNlbWFudGljQnVpbGRDbGFzc1tdO1xuICB0YWJsZUNvdW50OiBudW1iZXI7XG4gIGp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgdW5saW5rZWRKdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGV4Y2x1ZGVkQ291bnQ6IG51bWJlcjtcbiAgdGFibGVzOiBTZW1hbnRpY0J1aWxkVGFibGVbXTtcbn1cblxuLy8gV2hpY2ggY2xhc3MgYSBjYWNoZWQgZnVuY3Rpb24gd2FzIHJlYWQgZnJvbS4gQW4gZW50aXR5J3MgY2FjaGUgc3BsaXRzIGludG9cbi8vICdtb2RlbCcgYW5kICdoYW5kbGVyJzsgYSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgaGFzIG9uZSBncm91cCwgJ2NsYXNzJy5cbmV4cG9ydCB0eXBlIFNlbWFudGljRnVuY3Rpb25Tb3VyY2UgPSAnbW9kZWwnIHwgJ2hhbmRsZXInIHwgJ2NsYXNzJztcblxuLy8gT25lIEFJLWNsYXNzaWZpZWQgY29kZSBmdW5jdGlvbiBmcm9tIGEgbW9kZWwsIGhhbmRsZXIgb3Igc3RhbmRhbG9uZSBjbGFzczpcbi8vIHdoYXQga2luZCBvZiBsb2dpYyBpdCBpcywgd2hhdCBpdCBkb2VzLCBhbmQgd2hhdCBpdCBwcm9kdWNlcyDigJQgdGhlIGJ1aWxkJ3Ncbi8vIGNhY2hlZCBcIndoYXQgdGhlIGNvZGUgZG9lc1wiIGtub3dsZWRnZSBzaG93biBpbiB0aGUgZnVuY3Rpb25zIGRpYWxvZy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIHByb2R1Y2VzOiBzdHJpbmc7XG4gIHNvdXJjZTogU2VtYW50aWNGdW5jdGlvblNvdXJjZTtcbn1cblxuLy8gT25lIGVudGl0eSdzIGNhY2hlZCBjb2RlLWZ1bmN0aW9uIGtub3dsZWRnZSwgZmV0Y2hlZCB3aGVuIGEgZnVuY3Rpb25zIGRpYWxvZ1xuLy8gb3BlbnMgKHRoZSBmdWxsIHNldCBhY3Jvc3MgYWxsIGVudGl0aWVzIGlzIHRvbyBiaWcgdG8gc2hpcCB3aXRoIHRoZVxuLy8gc2NvcmVib2FyZCkuIE9uZSBwYXlsb2FkIHNlcnZlcyBib3RoIGRpYWxvZ3Mg4oCUIGNvbnN1bWVycyBmaWx0ZXIgYnkgc291cmNlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9ucyB7XG4gIGVudGl0eTogc3RyaW5nO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIG1vZGVsQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXJDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25zOiBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFN0YXR1cyB7XG4gIGJ1aWxkOiBTZW1hbnRpY0J1aWxkIHwgbnVsbDtcbiAgZGV0YWlsOiBTZW1hbnRpY0J1aWxkRGV0YWlsO1xufVxuXG4vLyBUaGUgcmVwb3J0IG1vZHVsZSdzIEdlbmVyYWwgc2V0dGluZ3MgKGEgc21hbGwgZ2xvYmFsIGtleS92YWx1ZSBzdG9yZSwgdGhlXG4vLyByZXBvcnRpbmcgY291bnRlcnBhcnQgb2YgdGhlIGFwcC13aWRlIHNldHRpbmdzKS4gRWFjaCB2YWx1ZSBzaGlwcyB3aXRoIHRoZVxuLy8gc2FmZSBiYW5kIGl0cyBlZGl0b3IgZmllbGQgaXMgYm91bmRlZCB0by5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U2V0dGluZ3Mge1xuICAvLyBIb3cgbWFueSBzdW1tYXJ5IGNhbGxzIHRoZSBzZW1hbnRpYyBidWlsZCBydW5zIGF0IG9uY2UuXG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeTogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNaW46IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWF4OiBudW1iZXI7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { chartColumns, chartDateLabel, extractChartSeries, formatPeriodLabel, partialSegmentOwner, } from './option-builder';
2
- import { isCalendarDay, isChartGranularity } from './report-view-config';
2
+ import { isCalendarDay, isChartGranularity } from './report-state';
3
3
  // The one click model (B10): what a click on a tile's mark stands for, and
4
4
  // what the tile does with it. Pure, so the node harness runs it.
5
5
  //
@@ -190,4 +190,4 @@ function numeric(value) {
190
190
  function finite(value) {
191
191
  return typeof value === 'number' && Number.isFinite(value) ? value : null;
192
192
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9tYXJrLWNsaWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxrQkFBa0IsRUFFbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RSwyRUFBMkU7QUFDM0UsaUVBQWlFO0FBQ2pFLEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGlDQUFpQztBQUNqQyw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFFdkQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQztJQUNsRSxLQUFLLEVBQUUsWUFBWTtJQUNuQixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLE1BQU0sRUFBRSxXQUFXO0NBQ3BCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQXlDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksR0FBdUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUV6RSxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDckcsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxD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MUYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUV2RSxPQUFPO1FBQ0wsTUFBTTtRQUNOLEdBQUc7UUFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hHLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLE1BQU0sQ0FBQyxLQUFnQztJQUM5QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RGF0YURyaWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhcnQtaGl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0NsaWNrIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWNsaWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrRGVjaXNpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstZGVjaXNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya1BvaW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLXBvaW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDaGFydENvbmZpZyxcbiAgQ29tcG9uZW50RGF0YSxcbiAgS3BpQ29uZmlnLFxuICBSZXBvcnRDb21wb25lbnQsXG4gIFJlcG9ydEZvcm1hdENvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoYXJ0Q29sdW1ucyxcbiAgY2hhcnREYXRlTGFiZWwsXG4gIGV4dHJhY3RDaGFydFNlcmllcyxcbiAgRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGZvcm1hdFBlcmlvZExhYmVsLFxuICBwYXJ0aWFsU2VnbWVudE93bmVyLFxufSBmcm9tICcuL29wdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IGlzQ2FsZW5kYXJEYXksIGlzQ2hhcnRHcmFudWxhcml0eSB9IGZyb20gJy4vcmVwb3J0LXZpZXctY29uZmlnJztcblxuXG4vLyBUaGUgb25lIGNsaWNrIG1vZGVsIChCMTApOiB3aGF0IGEgY2xpY2sgb24gYSB0aWxlJ3MgbWFyayBzdGFuZHMgZm9yLCBhbmRcbi8vIHdoYXQgdGhlIHRpbGUgZG9lcyB3aXRoIGl0LiBQdXJlLCBzbyB0aGUgbm9kZSBoYXJuZXNzIHJ1bnMgaXQuXG4vL1xuLy8gLSBjaGFydE1hcmtDbGljayBhbmQga3BpTWFya0NsaWNrIHR1cm4gYSBjbGljayBpbnRvIGEgUmVwb3J0TWFya0NsaWNrOiB0aGVcbi8vICAgcmF3IHZhbHVlcyBmcm9tIGRhdGEucm93cyAobmV2ZXIgdGhlIGRyYXduIHRleHQpLCB0aGUgY2xpY2tlZCBzZXJpZXMgYW5kXG4vLyAgIGl0cyBudW1iZXIsIGFuZCB0aGUgcG9pbnRlci5cbi8vIC0gbWFya0FjdGlvbnMgbGlzdHMgd2hhdCB0aGUgY2xpY2sgbWF5IGRvLCBlYWNoIG9ubHkgd2hpbGUgaXRzIGZlYXR1cmUgaXNcbi8vICAgb2ZmZXJlZDsgZGVjaWRlTWFya0NsaWNrIGFwcGxpZXMgdGhlIGFjdGlvbiBydWxlOiBub25lIGRvZXMgbm90aGluZywgb25lXG4vLyAgIHJ1bnMsIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmssIGFuZCBhIHRvdWNoIGZpcnN0IHNob3dzIHRoZVxuLy8gICB0b29sdGlwIGFuZCBhY3RzIG9uIGEgc2Vjb25kIHRhcCBvbiB0aGUgc2FtZSBtYXJrLlxuXG4vLyBBIG1hcmsgbWVudSByb3cncyB0ZXh0LCBieSBhY3Rpb24uXG5leHBvcnQgY29uc3QgTUFSS19BQ1RJT05fTEFCRUxTOiBSZWNvcmQ8UmVwb3J0TWFya0FjdGlvbiwgc3RyaW5nPiA9IHtcbiAgZHJpbGw6ICdEcmlsbCBkb3duJyxcbiAgY3Jvc3NGaWx0ZXI6ICdGaWx0ZXIgb3RoZXIgdGlsZXMnLFxuICBkZXRhaWw6ICdTaG93IHJvd3MnLFxufTtcblxuLy8gV2hlcmUgYSBjbGljayB3YXMgYW5kIHdoYXQgbWFkZSBpdC4gQSBQb2ludGVyRXZlbnQgbmFtZXMgaXRzIHBvaW50ZXI7IGFcbi8vIFRvdWNoRXZlbnQgaXMgYSB0b3VjaDsgYW55dGhpbmcgZWxzZSAoYSBwbGFpbiBNb3VzZUV2ZW50LCBhIGtleSBwcmVzc1xuLy8gdGhhdCBjbGlja2VkKSByZWFkcyBhcyB0aGUgbW91c2UuXG5leHBvcnQgZnVuY3Rpb24gbWFya1BvaW50ZXIoZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQpOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXSB7XG4gIGNvbnN0IHRvdWNoID0gZXZlbnQ/LmNoYW5nZWRUb3VjaGVzPy5bMF07XG4gIGxldCB0eXBlOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXVsndHlwZSddID0gdG91Y2ggPyAndG91Y2gnIDogJ21vdXNlJztcblxuICBpZiAoZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8IGV2ZW50Py5wb2ludGVyVHlwZSA9PT0gJ3BlbicgfHwgZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAnbW91c2UnKSB7XG4gICAgdHlwZSA9IGV2ZW50LnBvaW50ZXJUeXBlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBmaW5pdGUoZXZlbnQ/LnBhZ2VYKSA/PyBmaW5pdGUodG91Y2g/LnBhZ2VYKSA/PyAwLFxuICAgIHk6IGZpbml0ZShldmVudD8ucGFnZVkpID8/IGZpbml0ZSh0b3VjaD8ucGFnZVkpID8/IDAsXG4gICAgdHlwZSxcbiAgfTtcbn1cblxuLy8gQSBjbGljayBvbiBhIGNoYXJ0OiBhIGJhciAoYW5kIGl0cyBzcGxpdCB2YWx1ZSksIGEgbGluZSBvciBhcmVhIHBvaW50IG9yXG4vLyB0aGUgbGluZSBpdHNlbGYsIGEgcGllIHNsaWNlLCBhIHdhdGVyZmFsbCBzdGVwLCBvciBhIGNhdGVnb3J5J3MgZW1wdHkgYmFuZFxuLy8gKHdpdGggdGhlIG1vdXNlIG9ubHk6IGEgdGFwIHRoZXJlIGlzIGhvdyBhIHBob25lIHNob3dzIHRoZSB0b29sdGlwKS4gQVxuLy8gcGFydGlhbCBzZWdtZW50IHJlYWRzIGFzIHRoZSBzZXJpZXMgaXQgY29udGludWVzLCBhbmQgYSBjb21wYXJlZCBzZXJpZXNcbi8vIGFzIGl0cyBjYXRlZ29yeSwgdGhlIGN1cnJlbnQgcGVyaW9kLiBudWxsIGZvciBhIHJlZmVyZW5jZSBsaW5lIG9yIGJhbmQsXG4vLyBhIHdhdGVyZmFsbCdzIGJhc2UgYW5kIGl0cyBUb3RhbCwgYW5kIGEgY2F0ZWdvcnkgdGhlIGNoYXJ0IGRvZXMgbm90IGhhdmUuXG5leHBvcnQgZnVuY3Rpb24gY2hhcnRNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBoaXQ6IFJlcG9ydENoYXJ0SGl0LFxuICBldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtDbGljayB8IG51bGwge1xuICBjb25zdCBwb2ludGVyID0gbWFya1BvaW50ZXIoZXZlbnQpO1xuICBjb25zdCBleHRyYWN0ZWQgPSBleHRyYWN0Q2hhcnRTZXJpZXMoY29tcG9uZW50LCBkYXRhKTtcbiAgY29uc3Qgc2VyaWVzID0gaGl0U2VyaWVzKGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWcsIGV4dHJhY3RlZCwgaGl0KTtcblxuICBpZiAoc2VyaWVzID09PSBudWxsIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGhpdC5kYXRhSW5kZXgpXG4gICAgfHwgaGl0LmRhdGFJbmRleCA8IDAgfHwgaGl0LmRhdGFJbmRleCA+PSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllcy5sZW5ndGhcbiAgICB8fCAoc2VyaWVzID09PSAnYmFuZCcgJiYgcG9pbnRlci50eXBlICE9PSAnbW91c2UnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2xpY2tlZCA9IHNlcmllcyA9PT0gJ2JhbmQnID8gbnVsbCA6IGV4dHJhY3RlZC5zZXJpZXNbc2VyaWVzXTtcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudElkOiBjb21wb25lbnQuaWQsXG4gICAgcG9pbnRzOiBjaGFydFBvaW50cyhjb21wb25lbnQsIGRhdGEsIGNvbnRleHQsIGV4dHJhY3RlZCwgaGl0LmRhdGFJbmRleCwgc2VyaWVzID09PSAnYmFuZCcgPyBudWxsIDogc2VyaWVzKSxcbiAgICBtZWFzdXJlOiBjbGlja2VkPy5tZWFzdXJlLmNvbHVtbiA/PyBudWxsLFxuICAgIHZhbHVlOiBjbGlja2VkPy52YWx1ZXNbaGl0LmRhdGFJbmRleF0gPz8gbnVsbCxcbiAgICBhZGRpdGl2ZTogISEoZXZlbnQ/LmN0cmxLZXkgfHwgZXZlbnQ/Lm1ldGFLZXkpLFxuICAgIHBvaW50ZXIsXG4gIH07XG59XG5cbi8vIEEgY2xpY2sgb24gYSBLUEkncyB2YWx1ZTogbm8gcG9pbnRzLCB0aGUgS1BJJ3MgbWVhc3VyZSBhbmQgaXRzIG51bWJlci5cbmV4cG9ydCBmdW5jdGlvbiBrcGlNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhIHwgbnVsbCxcbiAgZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBSZXBvcnRNYXJrQ2xpY2sge1xuICBjb25zdCBjb25maWcgPSAoY29tcG9uZW50LmNvbmZpZyA/PyB7fSkgYXMgS3BpQ29uZmlnO1xuICBjb25zdCByb3cgPSBkYXRhPy5yb3dzPy5bMF07XG4gIGNvbnN0IG1lYXN1cmUgPSBjb25maWcubWVhc3VyZT8uY29sdW1uID8/IE9iamVjdC5rZXlzKHJvdyA/PyB7fSlbMF0gPz8gbnVsbDtcbiAgY29uc3QgdmFsdWUgPSBkYXRhPy5rcGkgPyBkYXRhLmtwaS52YWx1ZSA6IGZpbml0ZShudW1lcmljKG1lYXN1cmUgPT09IG51bGwgPyB1bmRlZmluZWQgOiByb3c/LlttZWFzdXJlXSkpO1xuXG4gIHJldHVybiB7XG4gICAgY29tcG9uZW50SWQ6IGNvbXBvbmVudC5pZCxcbiAgICBwb2ludHM6IFtdLFxuICAgIG1lYXN1cmUsXG4gICAgdmFsdWU6IHZhbHVlID8/IG51bGwsXG4gICAgYWRkaXRpdmU6ICEhKGV2ZW50Py5jdHJsS2V5IHx8IGV2ZW50Py5tZXRhS2V5KSxcbiAgICBwb2ludGVyOiBtYXJrUG9pbnRlcihldmVudCksXG4gIH07XG59XG5cbi8vIFdoYXQgYSB0aWxlJ3MgbWFya3MgbWF5IGRvIG9uIGl0cyBsYXN0IGFuc3dlciwgYmVmb3JlIGFueSBvbmUgbWFyayBpc1xuLy8gY2xpY2tlZDogdGhlIGNoYXJ0J3MgdG9vbHRpcCBoaW50IGFuZCBpdHMgaGFuZCBwb2ludGVyIHJlYWQgaXQuIERyaWxsXG4vLyBkb3duIHdoaWxlIGRyaWxsIGlzIG9mZmVyZWQgYW5kIHRoZSBhbnN3ZXIgbmFtZXMgYSBsZXZlbCBiZWxvdy5cbmV4cG9ydCBmdW5jdGlvbiB0aWxlTWFya0FjdGlvbnMoY29udGV4dDogUmVwb3J0TWFya0NvbnRleHQpOiBSZXBvcnRNYXJrQWN0aW9uW10ge1xuICByZXR1cm4gY29udGV4dC5mZWF0dXJlcy5pbmNsdWRlcygnZHJpbGwnKSAmJiBjb250ZXh0LmRhdGE/LmRyaWxsPy5uZXh0ID8gWydkcmlsbCddIDogW107XG59XG5cbi8vIFdoYXQgdGhpcyBjbGljayBtYXkgZG86IHRoZSB0aWxlJ3MgYWN0aW9ucyB0aGF0IGFwcGx5IHRvIHRoZSBjbGlja2VkIG1hcmsuXG4vLyBEcmlsbCBkb3duIG5lZWRzIGEgcGVyaW9kIG9uIHRoZSBkcmlsbGVkIGF4aXMsIHNvIGEgS1BJJ3MgdmFsdWUgYW5kIGEgbWFya1xuLy8gb2ZmIHRoYXQgYXhpcyBuZXZlciBkcmlsbC5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQWN0aW9ucyhjbGljazogUmVwb3J0TWFya0NsaWNrLCBjb250ZXh0OiBSZXBvcnRNYXJrQ29udGV4dCk6IFJlcG9ydE1hcmtBY3Rpb25bXSB7XG4gIHJldHVybiB0aWxlTWFya0FjdGlvbnMoY29udGV4dClcbiAgICAuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbiAhPT0gJ2RyaWxsJyB8fCBkcmlsbFBvaW50KGNsaWNrLCBjb250ZXh0LmRhdGE/LmRyaWxsKSAhPT0gbnVsbCk7XG59XG5cbi8vIFRoZSBhY3Rpb24gcnVsZSAoQjEwLjIpLiBObyBhY3Rpb246IG5vdGhpbmcgaGFwcGVucy4gQSB0b3VjaCAob3IgYSBwZW4pXG4vLyBvbiBhIGNoYXJ0J3MgbWFyayBmaXJzdCBzaG93cyBpdHMgdG9vbHRpcCBvbmx5LCBhbmQgYSBzZWNvbmQgdGFwIG9uIHRoZVxuLy8gc2FtZSBtYXJrIGFjdHM7IGEgS1BJJ3MgdmFsdWUgaGFzIG5vIHRvb2x0aXAsIHNvIGl0cyBmaXJzdCB0YXAgYWN0cy4gVGhlblxuLy8gb25lIGFjdGlvbiBydW5zIGF0IG9uY2UsIGFuZCB0d28gb3IgbW9yZSBvcGVuIHRoZSBtZW51IGF0IHRoZSBtYXJrLlxuZXhwb3J0IGZ1bmN0aW9uIGRlY2lkZU1hcmtDbGljayhcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbiAgYWN0aW9uczogcmVhZG9ubHkgUmVwb3J0TWFya0FjdGlvbltdLFxuICB0b3VjaGVkOiBzdHJpbmcgfCBudWxsLFxuKTogUmVwb3J0TWFya0RlY2lzaW9uIHtcbiAgaWYgKCFhY3Rpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiB7IG91dGNvbWU6ICdub25lJywgYWN0aW9uczogW10sIHRvdWNoZWQ6IG51bGwgfTtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IG1hcmtLZXkoY2xpY2spO1xuICBpZiAoY2xpY2sucG9pbnRlci50eXBlICE9PSAnbW91c2UnICYmIGNsaWNrLnBvaW50cy5sZW5ndGggJiYgdG91Y2hlZCAhPT0ga2V5KSB7XG4gICAgcmV0dXJuIHsgb3V0Y29tZTogJ3Rvb2x0aXAnLCBhY3Rpb25zOiBbLi4uYWN0aW9uc10sIHRvdWNoZWQ6IGtleSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgb3V0Y29tZTogYWN0aW9ucy5sZW5ndGggPT09IDEgPyAncnVuJyA6ICdtZW51JywgYWN0aW9uczogWy4uLmFjdGlvbnNdLCB0b3VjaGVkOiBudWxsIH07XG59XG5cbi8vIFdoaWNoIG1hcmsgYSBjbGljayBpcyBvbjogaXRzIHRpbGUsIGl0cyByYXcgdmFsdWVzIGFuZCBpdHMgc2VyaWVzLiBUd29cbi8vIHRhcHMgYXJlIG9uIHRoZSBzYW1lIG1hcmsgd2hlbiB0aGVpciBrZXlzIG1hdGNoLlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtLZXkoY2xpY2s6IFJlcG9ydE1hcmtDbGljayk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbXG4gICAgY2xpY2suY29tcG9uZW50SWQsXG4gICAgY2xpY2sucG9pbnRzLm1hcCgocG9pbnQpID0+IFtwb2ludC5jb2x1bW4sIHBvaW50LnJhdyA/PyBudWxsXSksXG4gICAgY2xpY2subWVhc3VyZSxcbiAgXSk7XG59XG5cbi8vIFRoZSBwb2ludCBhIGRyaWxsIHN0ZXBzIGludG86IHRoZSBjbGlja2VkIHBlcmlvZCBvbiB0aGUgZHJpbGxlZCBheGlzLCBvclxuLy8gbnVsbCB3aGVuIHRoZSBjbGljayBoYXMgbm9uZS5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbFBvaW50KFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtQb2ludCB8IG51bGwge1xuICByZXR1cm4gZHJpbGxcbiAgICA/IGNsaWNrLnBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuY29sdW1uID09PSBkcmlsbC5heGlzICYmICEhcG9pbnQucGVyaW9kKSA/PyBudWxsXG4gICAgOiBudWxsO1xufVxuXG4vLyBUaGUgZHJpbGwgcGF0aCBvbmUgbGV2ZWwgZG93biBmcm9tIHdoYXQgdGhlIGNoYXJ0IHNob3dzOiB0aGUgc3RlcHMgdGhlXG4vLyBzZXJ2ZXIgYXBwbGllZCAoZHJpbGwucGF0aCksIHRoZW4gdGhlIGNsaWNrZWQgcGVyaW9kIGF0IHRoZSBsZXZlbCBpdCB3YXNcbi8vIGNsaWNrZWQgYXQgKGRyaWxsLmxldmVsKSwgd2hpY2ggdGhlIGNoYXJ0IHRoZW4gc2hvd3MgYXQgZHJpbGwubmV4dC4gQSBzdGVwXG4vLyBuYW1lcyB0aGUgcGVyaW9kIGNsaWNrZWQsIHNvIHRoZSBmaXJzdCBzdGVwIGlzIGF0IHRoZSBjaGFydCdzIHRvcCBsZXZlbC5cbi8vIG51bGwgd2hlbiB0aGUgY2hhcnQgaXMgYXQgaXRzIGxvd2VzdCBsZXZlbCBvciB0aGUgY2xpY2sgaGFzIG5vIHBlcmlvZC5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbERvd25QYXRoKFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbik6IFJlcG9ydERyaWxsU3RlcFtdIHwgbnVsbCB7XG4gIGNvbnN0IHBvaW50ID0gZHJpbGxQb2ludChjbGljaywgZHJpbGwpO1xuXG4gIGlmICghZHJpbGw/Lm5leHQgfHwgIXBvaW50Py5wZXJpb2QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uZHJpbGwucGF0aC5tYXAoKGNydW1iKSA9PiAoeyBsZXZlbDogY3J1bWIubGV2ZWwsIHZhbHVlOiBjcnVtYi52YWx1ZSB9KSksXG4gICAgeyBsZXZlbDogZHJpbGwubGV2ZWwsIHZhbHVlOiBwb2ludC5wZXJpb2QgfSxcbiAgXTtcbn1cblxuLy8gVGhlIGV4dHJhY3RlZCBzZXJpZXMgYSBoaXQgaXMgb246IGl0cyBpbmRleCwgJ2JhbmQnIGZvciBhIGNhdGVnb3J5J3Ncbi8vIGVtcHR5IGJhbmQsIG9yIG51bGwgZm9yIHdoYXQgaXMgbm90IGEgbWFyay4gQW4gYXhpcyBjaGFydCdzIHBhcnRpYWxcbi8vIHNlZ21lbnQgbWFwcyB0byB0aGUgc2VyaWVzIGl0IGNvbnRpbnVlczsgYSByZWZlcmVuY2UgY2FycmllciBtYXBzIHRvXG4vLyBub3RoaW5nLiBBIHdhdGVyZmFsbCdzIHN0ZXBzIGFyZSBpdHMgc2Vjb25kIHNlcmllcyAodGhlIGZpcnN0IGlzIHRoZVxuLy8gaW52aXNpYmxlIGJhc2UpOyBhIHBpZSdzIHNsaWNlcyBpdHMgb25seSBvbmUuXG5mdW5jdGlvbiBoaXRTZXJpZXMoY29uZmlnOiBDaGFydENvbmZpZywgZXh0cmFjdGVkOiBFeHRyYWN0ZWRDaGFydFNlcmllcywgaGl0OiBSZXBvcnRDaGFydEhpdCk6IG51bWJlciB8ICdiYW5kJyB8IG51bGwge1xuICBjb25zdCBjaGFydFR5cGUgPSBjb25maWcuY2hhcnRUeXBlID8/ICdiYXInO1xuXG4gIGlmIChoaXQuc2VyaWVzSW5kZXggPT09IG51bGwpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyBudWxsIDogJ2JhbmQnO1xuICB9XG5cbiAgaWYgKGNoYXJ0VHlwZSA9PT0gJ3dhdGVyZmFsbCcpIHtcbiAgICByZXR1cm4gaGl0LnNlcmllc0luZGV4ID09PSAxICYmIGV4dHJhY3RlZC5zZXJpZXMubGVuZ3RoID8gMCA6IG51bGw7XG4gIH1cblxuICBpZiAoaGl0LnNlcmllc0luZGV4ID49IDAgJiYgaGl0LnNlcmllc0luZGV4IDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyAwIDogaGl0LnNlcmllc0luZGV4O1xuICB9XG5cbiAgY29uc3Qgb3duZXIgPSBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IG51bGwgOiBwYXJ0aWFsU2VnbWVudE93bmVyKGhpdC5zZXJpZXNJZCk7XG5cbiAgcmV0dXJuIG93bmVyICE9PSBudWxsICYmIG93bmVyIDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGggPyBvd25lciA6IG51bGw7XG59XG5cbi8vIFRoZSBjbGlja2VkIGNhdGVnb3J5LCB0aGVuIHRoZSBzcGxpdCB2YWx1ZSB3aGVuIHRoZSBjaGFydCBzcGxpdHMgYnlcbi8vIGFub3RoZXIgY29sdW1uIHRoYW4gaXRzIGF4aXMgKGEgY29sb3JCeSBjaGFydCdzIHNlcmllcyBhcmUgaXRzIGNhdGVnb3JpZXMpLlxuZnVuY3Rpb24gY2hhcnRQb2ludHMoXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbiAgc2VyaWVzOiBudW1iZXIgfCBudWxsLFxuKTogUmVwb3J0TWFya1BvaW50W10ge1xuICBjb25zdCBjb25maWcgPSBjb21wb25lbnQuY29uZmlnIGFzIENoYXJ0Q29uZmlnO1xuICBjb25zdCB7IHhDb2x1bW4sIGdyb3VwQ29sdW1uIH0gPSBjaGFydENvbHVtbnMoY29uZmlnLCBkYXRhKTtcbiAgY29uc3QgcG9pbnRzID0gW2NhdGVnb3J5UG9pbnQoY29uZmlnLCBkYXRhLCBjb250ZXh0LCBleHRyYWN0ZWQsIHhDb2x1bW4sIGRhdGFJbmRleCldO1xuXG4gIGlmIChzZXJpZXMgIT09IG51bGwgJiYgZ3JvdXBDb2x1bW4gJiYgZ3JvdXBDb2x1bW4gIT09IHhDb2x1bW4pIHtcbiAgICBwb2ludHMucHVzaCh7IGNvbHVtbjogZ3JvdXBDb2x1bW4sIHJhdzogZXh0cmFjdGVkLnJhd0dyb3Vwc1tzZXJpZXNdLCBsYWJlbDogZXh0cmFjdGVkLnNlcmllc1tzZXJpZXNdLm5hbWUgfSk7XG4gIH1cblxuICByZXR1cm4gcG9pbnRzO1xufVxuXG4vLyBUaGUgY2F0ZWdvcnkgYXMgdGhlIHJvd3MgaG9sZCBpdCBhbmQgYXMgdGhlIGF4aXMgd3JvdGUgaXQuIE9uIGEgdGltZSBheGlzXG4vLyBpdCBhbHNvIGdpdmVzIHRoZSBwZXJpb2QncyBmaXJzdCBkYXkgYW5kIHRoZSBncmFpbiwgYW5kIHJlYWRzIGFzIHRoZVxuLy8gdG9vbHRpcCBuYW1lcyBpdCAoJ0phbnVhcnkgMjAyNicpOyBhIHBpZSB3cml0ZXMgaXRzIHNsaWNlcyBhcyB0aGV5IGNvbWUuXG5mdW5jdGlvbiBjYXRlZ29yeVBvaW50KFxuICBjb25maWc6IENoYXJ0Q29uZmlnLFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBjb2x1bW46IHN0cmluZyxcbiAgZGF0YUluZGV4OiBudW1iZXIsXG4pOiBSZXBvcnRNYXJrUG9pbnQge1xuICBjb25zdCByYXcgPSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllc1tkYXRhSW5kZXhdO1xuICBjb25zdCBsYWJlbCA9IGV4dHJhY3RlZC5jYXRlZ29yaWVzW2RhdGFJbmRleF07XG4gIGNvbnN0IGdyYWluID0gaXNDaGFydEdyYW51bGFyaXR5KGRhdGEuZ3JhbnVsYXJpdHkpID8gZGF0YS5ncmFudWxhcml0eSA6IG51bGw7XG4gIGNvbnN0IHBlcmlvZCA9IGdyYWluICYmIHJhdyAhPT0gbnVsbCAmJiByYXcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhyYXcpLnNsaWNlKDAsIDEwKSA6ICcnO1xuXG4gIGlmICghZ3JhaW4gfHwgIWlzQ2FsZW5kYXJEYXkocGVyaW9kKSkge1xuICAgIHJldHVybiB7IGNvbHVtbiwgcmF3LCBsYWJlbCB9O1xuICB9XG5cbiAgY29uc3QgcGllID0gY29uZmlnLmNoYXJ0VHlwZSA9PT0gJ3BpZScgfHwgY29uZmlnLmNoYXJ0VHlwZSA9PT0gJ2RvbnV0JztcblxuICByZXR1cm4ge1xuICAgIGNvbHVtbixcbiAgICByYXcsXG4gICAgbGFiZWw6IHBpZSA/IGxhYmVsIDogZm9ybWF0UGVyaW9kTGFiZWwoU3RyaW5nKHJhdyksIGdyYWluLCB0cnVlLCBjb250ZXh0LmxvY2FsZSwgY2hhcnREYXRlTGFiZWwoY29uZmlnKSksXG4gICAgcGVyaW9kLFxuICAgIGdyYWluLFxuICB9O1xufVxuXG4vLyBBIG51bWJlciBhcyBhIGNlbGwgaG9sZHMgaXQgKGEgbnVtYmVyIG9yIG51bWVyaWMgdGV4dCksIGVsc2UgbnVsbC5cbmZ1bmN0aW9uIG51bWVyaWModmFsdWU6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbn1cblxuLy8gQSBmaW5pdGUgbnVtYmVyLCBlbHNlIG51bGwuXG5mdW5jdGlvbiBmaW5pdGUodmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIgfCBudWxsIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9tYXJrLWNsaWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxrQkFBa0IsRUFFbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRSwyRUFBMkU7QUFDM0UsaUVBQWlFO0FBQ2pFLEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGlDQUFpQztBQUNqQyw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFFdkQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQztJQUNsRSxLQUFLLEVBQUUsWUFBWTtJQUNuQixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLE1BQU0sRUFBRSxXQUFXO0NBQ3BCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQXlDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksR0FBdUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUV6RSxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDckcsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxD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MUYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUV2RSxPQUFPO1FBQ0wsTUFBTTtRQUNOLEdBQUc7UUFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hHLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLE1BQU0sQ0FBQyxLQUFnQztJQUM5QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RGF0YURyaWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhcnQtaGl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0NsaWNrIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWNsaWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrRGVjaXNpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstZGVjaXNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya1BvaW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLXBvaW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDaGFydENvbmZpZyxcbiAgQ29tcG9uZW50RGF0YSxcbiAgS3BpQ29uZmlnLFxuICBSZXBvcnRDb21wb25lbnQsXG4gIFJlcG9ydEZvcm1hdENvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoYXJ0Q29sdW1ucyxcbiAgY2hhcnREYXRlTGFiZWwsXG4gIGV4dHJhY3RDaGFydFNlcmllcyxcbiAgRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGZvcm1hdFBlcmlvZExhYmVsLFxuICBwYXJ0aWFsU2VnbWVudE93bmVyLFxufSBmcm9tICcuL29wdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IGlzQ2FsZW5kYXJEYXksIGlzQ2hhcnRHcmFudWxhcml0eSB9IGZyb20gJy4vcmVwb3J0LXN0YXRlJztcblxuXG4vLyBUaGUgb25lIGNsaWNrIG1vZGVsIChCMTApOiB3aGF0IGEgY2xpY2sgb24gYSB0aWxlJ3MgbWFyayBzdGFuZHMgZm9yLCBhbmRcbi8vIHdoYXQgdGhlIHRpbGUgZG9lcyB3aXRoIGl0LiBQdXJlLCBzbyB0aGUgbm9kZSBoYXJuZXNzIHJ1bnMgaXQuXG4vL1xuLy8gLSBjaGFydE1hcmtDbGljayBhbmQga3BpTWFya0NsaWNrIHR1cm4gYSBjbGljayBpbnRvIGEgUmVwb3J0TWFya0NsaWNrOiB0aGVcbi8vICAgcmF3IHZhbHVlcyBmcm9tIGRhdGEucm93cyAobmV2ZXIgdGhlIGRyYXduIHRleHQpLCB0aGUgY2xpY2tlZCBzZXJpZXMgYW5kXG4vLyAgIGl0cyBudW1iZXIsIGFuZCB0aGUgcG9pbnRlci5cbi8vIC0gbWFya0FjdGlvbnMgbGlzdHMgd2hhdCB0aGUgY2xpY2sgbWF5IGRvLCBlYWNoIG9ubHkgd2hpbGUgaXRzIGZlYXR1cmUgaXNcbi8vICAgb2ZmZXJlZDsgZGVjaWRlTWFya0NsaWNrIGFwcGxpZXMgdGhlIGFjdGlvbiBydWxlOiBub25lIGRvZXMgbm90aGluZywgb25lXG4vLyAgIHJ1bnMsIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmssIGFuZCBhIHRvdWNoIGZpcnN0IHNob3dzIHRoZVxuLy8gICB0b29sdGlwIGFuZCBhY3RzIG9uIGEgc2Vjb25kIHRhcCBvbiB0aGUgc2FtZSBtYXJrLlxuXG4vLyBBIG1hcmsgbWVudSByb3cncyB0ZXh0LCBieSBhY3Rpb24uXG5leHBvcnQgY29uc3QgTUFSS19BQ1RJT05fTEFCRUxTOiBSZWNvcmQ8UmVwb3J0TWFya0FjdGlvbiwgc3RyaW5nPiA9IHtcbiAgZHJpbGw6ICdEcmlsbCBkb3duJyxcbiAgY3Jvc3NGaWx0ZXI6ICdGaWx0ZXIgb3RoZXIgdGlsZXMnLFxuICBkZXRhaWw6ICdTaG93IHJvd3MnLFxufTtcblxuLy8gV2hlcmUgYSBjbGljayB3YXMgYW5kIHdoYXQgbWFkZSBpdC4gQSBQb2ludGVyRXZlbnQgbmFtZXMgaXRzIHBvaW50ZXI7IGFcbi8vIFRvdWNoRXZlbnQgaXMgYSB0b3VjaDsgYW55dGhpbmcgZWxzZSAoYSBwbGFpbiBNb3VzZUV2ZW50LCBhIGtleSBwcmVzc1xuLy8gdGhhdCBjbGlja2VkKSByZWFkcyBhcyB0aGUgbW91c2UuXG5leHBvcnQgZnVuY3Rpb24gbWFya1BvaW50ZXIoZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQpOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXSB7XG4gIGNvbnN0IHRvdWNoID0gZXZlbnQ/LmNoYW5nZWRUb3VjaGVzPy5bMF07XG4gIGxldCB0eXBlOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXVsndHlwZSddID0gdG91Y2ggPyAndG91Y2gnIDogJ21vdXNlJztcblxuICBpZiAoZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8IGV2ZW50Py5wb2ludGVyVHlwZSA9PT0gJ3BlbicgfHwgZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAnbW91c2UnKSB7XG4gICAgdHlwZSA9IGV2ZW50LnBvaW50ZXJUeXBlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBmaW5pdGUoZXZlbnQ/LnBhZ2VYKSA/PyBmaW5pdGUodG91Y2g/LnBhZ2VYKSA/PyAwLFxuICAgIHk6IGZpbml0ZShldmVudD8ucGFnZVkpID8/IGZpbml0ZSh0b3VjaD8ucGFnZVkpID8/IDAsXG4gICAgdHlwZSxcbiAgfTtcbn1cblxuLy8gQSBjbGljayBvbiBhIGNoYXJ0OiBhIGJhciAoYW5kIGl0cyBzcGxpdCB2YWx1ZSksIGEgbGluZSBvciBhcmVhIHBvaW50IG9yXG4vLyB0aGUgbGluZSBpdHNlbGYsIGEgcGllIHNsaWNlLCBhIHdhdGVyZmFsbCBzdGVwLCBvciBhIGNhdGVnb3J5J3MgZW1wdHkgYmFuZFxuLy8gKHdpdGggdGhlIG1vdXNlIG9ubHk6IGEgdGFwIHRoZXJlIGlzIGhvdyBhIHBob25lIHNob3dzIHRoZSB0b29sdGlwKS4gQVxuLy8gcGFydGlhbCBzZWdtZW50IHJlYWRzIGFzIHRoZSBzZXJpZXMgaXQgY29udGludWVzLCBhbmQgYSBjb21wYXJlZCBzZXJpZXNcbi8vIGFzIGl0cyBjYXRlZ29yeSwgdGhlIGN1cnJlbnQgcGVyaW9kLiBudWxsIGZvciBhIHJlZmVyZW5jZSBsaW5lIG9yIGJhbmQsXG4vLyBhIHdhdGVyZmFsbCdzIGJhc2UgYW5kIGl0cyBUb3RhbCwgYW5kIGEgY2F0ZWdvcnkgdGhlIGNoYXJ0IGRvZXMgbm90IGhhdmUuXG5leHBvcnQgZnVuY3Rpb24gY2hhcnRNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBoaXQ6IFJlcG9ydENoYXJ0SGl0LFxuICBldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtDbGljayB8IG51bGwge1xuICBjb25zdCBwb2ludGVyID0gbWFya1BvaW50ZXIoZXZlbnQpO1xuICBjb25zdCBleHRyYWN0ZWQgPSBleHRyYWN0Q2hhcnRTZXJpZXMoY29tcG9uZW50LCBkYXRhKTtcbiAgY29uc3Qgc2VyaWVzID0gaGl0U2VyaWVzKGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWcsIGV4dHJhY3RlZCwgaGl0KTtcblxuICBpZiAoc2VyaWVzID09PSBudWxsIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGhpdC5kYXRhSW5kZXgpXG4gICAgfHwgaGl0LmRhdGFJbmRleCA8IDAgfHwgaGl0LmRhdGFJbmRleCA+PSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllcy5sZW5ndGhcbiAgICB8fCAoc2VyaWVzID09PSAnYmFuZCcgJiYgcG9pbnRlci50eXBlICE9PSAnbW91c2UnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2xpY2tlZCA9IHNlcmllcyA9PT0gJ2JhbmQnID8gbnVsbCA6IGV4dHJhY3RlZC5zZXJpZXNbc2VyaWVzXTtcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudElkOiBjb21wb25lbnQuaWQsXG4gICAgcG9pbnRzOiBjaGFydFBvaW50cyhjb21wb25lbnQsIGRhdGEsIGNvbnRleHQsIGV4dHJhY3RlZCwgaGl0LmRhdGFJbmRleCwgc2VyaWVzID09PSAnYmFuZCcgPyBudWxsIDogc2VyaWVzKSxcbiAgICBtZWFzdXJlOiBjbGlja2VkPy5tZWFzdXJlLmNvbHVtbiA/PyBudWxsLFxuICAgIHZhbHVlOiBjbGlja2VkPy52YWx1ZXNbaGl0LmRhdGFJbmRleF0gPz8gbnVsbCxcbiAgICBhZGRpdGl2ZTogISEoZXZlbnQ/LmN0cmxLZXkgfHwgZXZlbnQ/Lm1ldGFLZXkpLFxuICAgIHBvaW50ZXIsXG4gIH07XG59XG5cbi8vIEEgY2xpY2sgb24gYSBLUEkncyB2YWx1ZTogbm8gcG9pbnRzLCB0aGUgS1BJJ3MgbWVhc3VyZSBhbmQgaXRzIG51bWJlci5cbmV4cG9ydCBmdW5jdGlvbiBrcGlNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhIHwgbnVsbCxcbiAgZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBSZXBvcnRNYXJrQ2xpY2sge1xuICBjb25zdCBjb25maWcgPSAoY29tcG9uZW50LmNvbmZpZyA/PyB7fSkgYXMgS3BpQ29uZmlnO1xuICBjb25zdCByb3cgPSBkYXRhPy5yb3dzPy5bMF07XG4gIGNvbnN0IG1lYXN1cmUgPSBjb25maWcubWVhc3VyZT8uY29sdW1uID8/IE9iamVjdC5rZXlzKHJvdyA/PyB7fSlbMF0gPz8gbnVsbDtcbiAgY29uc3QgdmFsdWUgPSBkYXRhPy5rcGkgPyBkYXRhLmtwaS52YWx1ZSA6IGZpbml0ZShudW1lcmljKG1lYXN1cmUgPT09IG51bGwgPyB1bmRlZmluZWQgOiByb3c/LlttZWFzdXJlXSkpO1xuXG4gIHJldHVybiB7XG4gICAgY29tcG9uZW50SWQ6IGNvbXBvbmVudC5pZCxcbiAgICBwb2ludHM6IFtdLFxuICAgIG1lYXN1cmUsXG4gICAgdmFsdWU6IHZhbHVlID8/IG51bGwsXG4gICAgYWRkaXRpdmU6ICEhKGV2ZW50Py5jdHJsS2V5IHx8IGV2ZW50Py5tZXRhS2V5KSxcbiAgICBwb2ludGVyOiBtYXJrUG9pbnRlcihldmVudCksXG4gIH07XG59XG5cbi8vIFdoYXQgYSB0aWxlJ3MgbWFya3MgbWF5IGRvIG9uIGl0cyBsYXN0IGFuc3dlciwgYmVmb3JlIGFueSBvbmUgbWFyayBpc1xuLy8gY2xpY2tlZDogdGhlIGNoYXJ0J3MgdG9vbHRpcCBoaW50IGFuZCBpdHMgaGFuZCBwb2ludGVyIHJlYWQgaXQuIERyaWxsXG4vLyBkb3duIHdoaWxlIGRyaWxsIGlzIG9mZmVyZWQgYW5kIHRoZSBhbnN3ZXIgbmFtZXMgYSBsZXZlbCBiZWxvdy5cbmV4cG9ydCBmdW5jdGlvbiB0aWxlTWFya0FjdGlvbnMoY29udGV4dDogUmVwb3J0TWFya0NvbnRleHQpOiBSZXBvcnRNYXJrQWN0aW9uW10ge1xuICByZXR1cm4gY29udGV4dC5mZWF0dXJlcy5pbmNsdWRlcygnZHJpbGwnKSAmJiBjb250ZXh0LmRhdGE/LmRyaWxsPy5uZXh0ID8gWydkcmlsbCddIDogW107XG59XG5cbi8vIFdoYXQgdGhpcyBjbGljayBtYXkgZG86IHRoZSB0aWxlJ3MgYWN0aW9ucyB0aGF0IGFwcGx5IHRvIHRoZSBjbGlja2VkIG1hcmsuXG4vLyBEcmlsbCBkb3duIG5lZWRzIGEgcGVyaW9kIG9uIHRoZSBkcmlsbGVkIGF4aXMsIHNvIGEgS1BJJ3MgdmFsdWUgYW5kIGEgbWFya1xuLy8gb2ZmIHRoYXQgYXhpcyBuZXZlciBkcmlsbC5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQWN0aW9ucyhjbGljazogUmVwb3J0TWFya0NsaWNrLCBjb250ZXh0OiBSZXBvcnRNYXJrQ29udGV4dCk6IFJlcG9ydE1hcmtBY3Rpb25bXSB7XG4gIHJldHVybiB0aWxlTWFya0FjdGlvbnMoY29udGV4dClcbiAgICAuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbiAhPT0gJ2RyaWxsJyB8fCBkcmlsbFBvaW50KGNsaWNrLCBjb250ZXh0LmRhdGE/LmRyaWxsKSAhPT0gbnVsbCk7XG59XG5cbi8vIFRoZSBhY3Rpb24gcnVsZSAoQjEwLjIpLiBObyBhY3Rpb246IG5vdGhpbmcgaGFwcGVucy4gQSB0b3VjaCAob3IgYSBwZW4pXG4vLyBvbiBhIGNoYXJ0J3MgbWFyayBmaXJzdCBzaG93cyBpdHMgdG9vbHRpcCBvbmx5LCBhbmQgYSBzZWNvbmQgdGFwIG9uIHRoZVxuLy8gc2FtZSBtYXJrIGFjdHM7IGEgS1BJJ3MgdmFsdWUgaGFzIG5vIHRvb2x0aXAsIHNvIGl0cyBmaXJzdCB0YXAgYWN0cy4gVGhlblxuLy8gb25lIGFjdGlvbiBydW5zIGF0IG9uY2UsIGFuZCB0d28gb3IgbW9yZSBvcGVuIHRoZSBtZW51IGF0IHRoZSBtYXJrLlxuZXhwb3J0IGZ1bmN0aW9uIGRlY2lkZU1hcmtDbGljayhcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbiAgYWN0aW9uczogcmVhZG9ubHkgUmVwb3J0TWFya0FjdGlvbltdLFxuICB0b3VjaGVkOiBzdHJpbmcgfCBudWxsLFxuKTogUmVwb3J0TWFya0RlY2lzaW9uIHtcbiAgaWYgKCFhY3Rpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiB7IG91dGNvbWU6ICdub25lJywgYWN0aW9uczogW10sIHRvdWNoZWQ6IG51bGwgfTtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IG1hcmtLZXkoY2xpY2spO1xuICBpZiAoY2xpY2sucG9pbnRlci50eXBlICE9PSAnbW91c2UnICYmIGNsaWNrLnBvaW50cy5sZW5ndGggJiYgdG91Y2hlZCAhPT0ga2V5KSB7XG4gICAgcmV0dXJuIHsgb3V0Y29tZTogJ3Rvb2x0aXAnLCBhY3Rpb25zOiBbLi4uYWN0aW9uc10sIHRvdWNoZWQ6IGtleSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgb3V0Y29tZTogYWN0aW9ucy5sZW5ndGggPT09IDEgPyAncnVuJyA6ICdtZW51JywgYWN0aW9uczogWy4uLmFjdGlvbnNdLCB0b3VjaGVkOiBudWxsIH07XG59XG5cbi8vIFdoaWNoIG1hcmsgYSBjbGljayBpcyBvbjogaXRzIHRpbGUsIGl0cyByYXcgdmFsdWVzIGFuZCBpdHMgc2VyaWVzLiBUd29cbi8vIHRhcHMgYXJlIG9uIHRoZSBzYW1lIG1hcmsgd2hlbiB0aGVpciBrZXlzIG1hdGNoLlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtLZXkoY2xpY2s6IFJlcG9ydE1hcmtDbGljayk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbXG4gICAgY2xpY2suY29tcG9uZW50SWQsXG4gICAgY2xpY2sucG9pbnRzLm1hcCgocG9pbnQpID0+IFtwb2ludC5jb2x1bW4sIHBvaW50LnJhdyA/PyBudWxsXSksXG4gICAgY2xpY2subWVhc3VyZSxcbiAgXSk7XG59XG5cbi8vIFRoZSBwb2ludCBhIGRyaWxsIHN0ZXBzIGludG86IHRoZSBjbGlja2VkIHBlcmlvZCBvbiB0aGUgZHJpbGxlZCBheGlzLCBvclxuLy8gbnVsbCB3aGVuIHRoZSBjbGljayBoYXMgbm9uZS5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbFBvaW50KFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtQb2ludCB8IG51bGwge1xuICByZXR1cm4gZHJpbGxcbiAgICA/IGNsaWNrLnBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuY29sdW1uID09PSBkcmlsbC5heGlzICYmICEhcG9pbnQucGVyaW9kKSA/PyBudWxsXG4gICAgOiBudWxsO1xufVxuXG4vLyBUaGUgZHJpbGwgcGF0aCBvbmUgbGV2ZWwgZG93biBmcm9tIHdoYXQgdGhlIGNoYXJ0IHNob3dzOiB0aGUgc3RlcHMgdGhlXG4vLyBzZXJ2ZXIgYXBwbGllZCAoZHJpbGwucGF0aCksIHRoZW4gdGhlIGNsaWNrZWQgcGVyaW9kIGF0IHRoZSBsZXZlbCBpdCB3YXNcbi8vIGNsaWNrZWQgYXQgKGRyaWxsLmxldmVsKSwgd2hpY2ggdGhlIGNoYXJ0IHRoZW4gc2hvd3MgYXQgZHJpbGwubmV4dC4gQSBzdGVwXG4vLyBuYW1lcyB0aGUgcGVyaW9kIGNsaWNrZWQsIHNvIHRoZSBmaXJzdCBzdGVwIGlzIGF0IHRoZSBjaGFydCdzIHRvcCBsZXZlbC5cbi8vIG51bGwgd2hlbiB0aGUgY2hhcnQgaXMgYXQgaXRzIGxvd2VzdCBsZXZlbCBvciB0aGUgY2xpY2sgaGFzIG5vIHBlcmlvZC5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbERvd25QYXRoKFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbik6IFJlcG9ydERyaWxsU3RlcFtdIHwgbnVsbCB7XG4gIGNvbnN0IHBvaW50ID0gZHJpbGxQb2ludChjbGljaywgZHJpbGwpO1xuXG4gIGlmICghZHJpbGw/Lm5leHQgfHwgIXBvaW50Py5wZXJpb2QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uZHJpbGwucGF0aC5tYXAoKGNydW1iKSA9PiAoeyBsZXZlbDogY3J1bWIubGV2ZWwsIHZhbHVlOiBjcnVtYi52YWx1ZSB9KSksXG4gICAgeyBsZXZlbDogZHJpbGwubGV2ZWwsIHZhbHVlOiBwb2ludC5wZXJpb2QgfSxcbiAgXTtcbn1cblxuLy8gVGhlIGV4dHJhY3RlZCBzZXJpZXMgYSBoaXQgaXMgb246IGl0cyBpbmRleCwgJ2JhbmQnIGZvciBhIGNhdGVnb3J5J3Ncbi8vIGVtcHR5IGJhbmQsIG9yIG51bGwgZm9yIHdoYXQgaXMgbm90IGEgbWFyay4gQW4gYXhpcyBjaGFydCdzIHBhcnRpYWxcbi8vIHNlZ21lbnQgbWFwcyB0byB0aGUgc2VyaWVzIGl0IGNvbnRpbnVlczsgYSByZWZlcmVuY2UgY2FycmllciBtYXBzIHRvXG4vLyBub3RoaW5nLiBBIHdhdGVyZmFsbCdzIHN0ZXBzIGFyZSBpdHMgc2Vjb25kIHNlcmllcyAodGhlIGZpcnN0IGlzIHRoZVxuLy8gaW52aXNpYmxlIGJhc2UpOyBhIHBpZSdzIHNsaWNlcyBpdHMgb25seSBvbmUuXG5mdW5jdGlvbiBoaXRTZXJpZXMoY29uZmlnOiBDaGFydENvbmZpZywgZXh0cmFjdGVkOiBFeHRyYWN0ZWRDaGFydFNlcmllcywgaGl0OiBSZXBvcnRDaGFydEhpdCk6IG51bWJlciB8ICdiYW5kJyB8IG51bGwge1xuICBjb25zdCBjaGFydFR5cGUgPSBjb25maWcuY2hhcnRUeXBlID8/ICdiYXInO1xuXG4gIGlmIChoaXQuc2VyaWVzSW5kZXggPT09IG51bGwpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyBudWxsIDogJ2JhbmQnO1xuICB9XG5cbiAgaWYgKGNoYXJ0VHlwZSA9PT0gJ3dhdGVyZmFsbCcpIHtcbiAgICByZXR1cm4gaGl0LnNlcmllc0luZGV4ID09PSAxICYmIGV4dHJhY3RlZC5zZXJpZXMubGVuZ3RoID8gMCA6IG51bGw7XG4gIH1cblxuICBpZiAoaGl0LnNlcmllc0luZGV4ID49IDAgJiYgaGl0LnNlcmllc0luZGV4IDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyAwIDogaGl0LnNlcmllc0luZGV4O1xuICB9XG5cbiAgY29uc3Qgb3duZXIgPSBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IG51bGwgOiBwYXJ0aWFsU2VnbWVudE93bmVyKGhpdC5zZXJpZXNJZCk7XG5cbiAgcmV0dXJuIG93bmVyICE9PSBudWxsICYmIG93bmVyIDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGggPyBvd25lciA6IG51bGw7XG59XG5cbi8vIFRoZSBjbGlja2VkIGNhdGVnb3J5LCB0aGVuIHRoZSBzcGxpdCB2YWx1ZSB3aGVuIHRoZSBjaGFydCBzcGxpdHMgYnlcbi8vIGFub3RoZXIgY29sdW1uIHRoYW4gaXRzIGF4aXMgKGEgY29sb3JCeSBjaGFydCdzIHNlcmllcyBhcmUgaXRzIGNhdGVnb3JpZXMpLlxuZnVuY3Rpb24gY2hhcnRQb2ludHMoXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbiAgc2VyaWVzOiBudW1iZXIgfCBudWxsLFxuKTogUmVwb3J0TWFya1BvaW50W10ge1xuICBjb25zdCBjb25maWcgPSBjb21wb25lbnQuY29uZmlnIGFzIENoYXJ0Q29uZmlnO1xuICBjb25zdCB7IHhDb2x1bW4sIGdyb3VwQ29sdW1uIH0gPSBjaGFydENvbHVtbnMoY29uZmlnLCBkYXRhKTtcbiAgY29uc3QgcG9pbnRzID0gW2NhdGVnb3J5UG9pbnQoY29uZmlnLCBkYXRhLCBjb250ZXh0LCBleHRyYWN0ZWQsIHhDb2x1bW4sIGRhdGFJbmRleCldO1xuXG4gIGlmIChzZXJpZXMgIT09IG51bGwgJiYgZ3JvdXBDb2x1bW4gJiYgZ3JvdXBDb2x1bW4gIT09IHhDb2x1bW4pIHtcbiAgICBwb2ludHMucHVzaCh7IGNvbHVtbjogZ3JvdXBDb2x1bW4sIHJhdzogZXh0cmFjdGVkLnJhd0dyb3Vwc1tzZXJpZXNdLCBsYWJlbDogZXh0cmFjdGVkLnNlcmllc1tzZXJpZXNdLm5hbWUgfSk7XG4gIH1cblxuICByZXR1cm4gcG9pbnRzO1xufVxuXG4vLyBUaGUgY2F0ZWdvcnkgYXMgdGhlIHJvd3MgaG9sZCBpdCBhbmQgYXMgdGhlIGF4aXMgd3JvdGUgaXQuIE9uIGEgdGltZSBheGlzXG4vLyBpdCBhbHNvIGdpdmVzIHRoZSBwZXJpb2QncyBmaXJzdCBkYXkgYW5kIHRoZSBncmFpbiwgYW5kIHJlYWRzIGFzIHRoZVxuLy8gdG9vbHRpcCBuYW1lcyBpdCAoJ0phbnVhcnkgMjAyNicpOyBhIHBpZSB3cml0ZXMgaXRzIHNsaWNlcyBhcyB0aGV5IGNvbWUuXG5mdW5jdGlvbiBjYXRlZ29yeVBvaW50KFxuICBjb25maWc6IENoYXJ0Q29uZmlnLFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBjb2x1bW46IHN0cmluZyxcbiAgZGF0YUluZGV4OiBudW1iZXIsXG4pOiBSZXBvcnRNYXJrUG9pbnQge1xuICBjb25zdCByYXcgPSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllc1tkYXRhSW5kZXhdO1xuICBjb25zdCBsYWJlbCA9IGV4dHJhY3RlZC5jYXRlZ29yaWVzW2RhdGFJbmRleF07XG4gIGNvbnN0IGdyYWluID0gaXNDaGFydEdyYW51bGFyaXR5KGRhdGEuZ3JhbnVsYXJpdHkpID8gZGF0YS5ncmFudWxhcml0eSA6IG51bGw7XG4gIGNvbnN0IHBlcmlvZCA9IGdyYWluICYmIHJhdyAhPT0gbnVsbCAmJiByYXcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhyYXcpLnNsaWNlKDAsIDEwKSA6ICcnO1xuXG4gIGlmICghZ3JhaW4gfHwgIWlzQ2FsZW5kYXJEYXkocGVyaW9kKSkge1xuICAgIHJldHVybiB7IGNvbHVtbiwgcmF3LCBsYWJlbCB9O1xuICB9XG5cbiAgY29uc3QgcGllID0gY29uZmlnLmNoYXJ0VHlwZSA9PT0gJ3BpZScgfHwgY29uZmlnLmNoYXJ0VHlwZSA9PT0gJ2RvbnV0JztcblxuICByZXR1cm4ge1xuICAgIGNvbHVtbixcbiAgICByYXcsXG4gICAgbGFiZWw6IHBpZSA/IGxhYmVsIDogZm9ybWF0UGVyaW9kTGFiZWwoU3RyaW5nKHJhdyksIGdyYWluLCB0cnVlLCBjb250ZXh0LmxvY2FsZSwgY2hhcnREYXRlTGFiZWwoY29uZmlnKSksXG4gICAgcGVyaW9kLFxuICAgIGdyYWluLFxuICB9O1xufVxuXG4vLyBBIG51bWJlciBhcyBhIGNlbGwgaG9sZHMgaXQgKGEgbnVtYmVyIG9yIG51bWVyaWMgdGV4dCksIGVsc2UgbnVsbC5cbmZ1bmN0aW9uIG51bWVyaWModmFsdWU6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbn1cblxuLy8gQSBmaW5pdGUgbnVtYmVyLCBlbHNlIG51bGwuXG5mdW5jdGlvbiBmaW5pdGUodmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIgfCBudWxsIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  // The parts of the chat's viewer state (ReportChatViewerState) read off a
2
- // view document of the screen (the state service's snapshot()). Pure, so the
2
+ // snapshot of the screen (the state service's snapshot()). Pure, so the
3
3
  // node harness checks them. The caps are the server's: it reads at most
4
4
  // CHAT_DRILLS_MAX drilled charts, DRILL_MAX_DEPTH steps a path and
5
5
  // CHAT_LABEL_MAX characters a label, and drops the rest.
6
6
  import { drillStepLabel } from './drill-crumbs';
7
- import { DRILL_MAX_DEPTH } from './report-view-config';
7
+ import { DRILL_MAX_DEPTH } from './report-state';
8
8
  export const CHAT_DRILLS_MAX = 10;
9
9
  export const CHAT_LABEL_MAX = 100;
10
10
  // The match the chat is told of: 'any' while the groups match any filter.
@@ -31,4 +31,4 @@ export function chatViewerDrills(snapshot, locale) {
31
31
  })),
32
32
  }));
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXQtdmlld2VyLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL3JlcG9ydC1jaGF0LXZpZXdlci1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsNkVBQTZFO0FBQzdFLHdFQUF3RTtBQUN4RSxtRUFBbUU7QUFDbkUseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBR2xDLDBFQUEwRTtBQUMxRSx3Q0FBd0M7QUFDeEMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxRQUEwQjtJQUN4RCxPQUFPLFFBQVEsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzFELENBQUM7QUFHRCwyRUFBMkU7QUFDM0UseUVBQXlFO0FBQ3pFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUEwQixFQUFFLE1BQXVCO0lBQ2xGLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztTQUMzQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztTQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUNoQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQzthQUNyQixLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQzthQUN6QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FBSyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQzNFLENBQUMsQ0FBQztLQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBwYXJ0cyBvZiB0aGUgY2hhdCdzIHZpZXdlciBzdGF0ZSAoUmVwb3J0Q2hhdFZpZXdlclN0YXRlKSByZWFkIG9mZiBhXG4vLyB2aWV3IGRvY3VtZW50IG9mIHRoZSBzY3JlZW4gKHRoZSBzdGF0ZSBzZXJ2aWNlJ3Mgc25hcHNob3QoKSkuIFB1cmUsIHNvIHRoZVxuLy8gbm9kZSBoYXJuZXNzIGNoZWNrcyB0aGVtLiBUaGUgY2FwcyBhcmUgdGhlIHNlcnZlcidzOiBpdCByZWFkcyBhdCBtb3N0XG4vLyBDSEFUX0RSSUxMU19NQVggZHJpbGxlZCBjaGFydHMsIERSSUxMX01BWF9ERVBUSCBzdGVwcyBhIHBhdGggYW5kXG4vLyBDSEFUX0xBQkVMX01BWCBjaGFyYWN0ZXJzIGEgbGFiZWwsIGFuZCBkcm9wcyB0aGUgcmVzdC5cbmltcG9ydCB7IGRyaWxsU3RlcExhYmVsIH0gZnJvbSAnLi9kcmlsbC1jcnVtYnMnO1xuaW1wb3J0IHsgUmVwb3J0Q2hhdFZpZXdlckRyaWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1jaGF0LXZpZXdlci1kcmlsbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q2hhdFZpZXdlclN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1jaGF0LXZpZXdlci1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Vmlld0NvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtdmlldy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydExvY2FsZVRhZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERSSUxMX01BWF9ERVBUSCB9IGZyb20gJy4vcmVwb3J0LXZpZXctY29uZmlnJztcblxuXG5leHBvcnQgY29uc3QgQ0hBVF9EUklMTFNfTUFYID0gMTA7XG5leHBvcnQgY29uc3QgQ0hBVF9MQUJFTF9NQVggPSAxMDA7XG5cblxuLy8gVGhlIG1hdGNoIHRoZSBjaGF0IGlzIHRvbGQgb2Y6ICdhbnknIHdoaWxlIHRoZSBncm91cHMgbWF0Y2ggYW55IGZpbHRlci5cbi8vICdhbGwnIGlzIHRoZSBkZWZhdWx0IGFuZCBpcyBsZWZ0IG91dC5cbmV4cG9ydCBmdW5jdGlvbiBjaGF0Vmlld2VyTWF0Y2goc25hcHNob3Q6IFJlcG9ydFZpZXdDb25maWcpOiBQaWNrPFJlcG9ydENoYXRWaWV3ZXJTdGF0ZSwgJ21hdGNoJz4ge1xuICByZXR1cm4gc25hcHNob3QubWF0Y2ggPT09ICdhbnknID8geyBtYXRjaDogJ2FueScgfSA6IHt9O1xufVxuXG5cbi8vIEVhY2ggZHJpbGxlZCBjaGFydCBvZiB0aGUgc25hcHNob3QsIGluIGNvbXBvbmVudCBpZCBvcmRlciAoaWRzIGFzIG9iamVjdFxuLy8ga2V5cyBhbHdheXMgY29tZSBpbiBhc2NlbmRpbmcgb3JkZXIpLCB3aXRoIGl0cyBwYXRoIHRvcCBmaXJzdCBhbmQgZWFjaFxuLy8gc3RlcCBsYWJlbGVkIGFzIHRoZSBicmVhZGNydW1iIGxhYmVscyBpdCAoZHJpbGxTdGVwTGFiZWwpLCBpbiB0aGUgcmVwb3J0J3Ncbi8vIGxvY2FsZSBhbmQgd2l0aCBpdHMgeWVhciAoJ1EzIDIwMjYnKSwgc28gYSBzdGVwIHJlYWRzIHRoZSBzYW1lIG9uIGl0cyBvd24uXG4vLyBFbXB0eSB3aGVuIG5vdGhpbmcgaXMgZHJpbGxlZC5cbmV4cG9ydCBmdW5jdGlvbiBjaGF0Vmlld2VyRHJpbGxzKHNuYXBzaG90OiBSZXBvcnRWaWV3Q29uZmlnLCBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZyk6IFJlcG9ydENoYXRWaWV3ZXJEcmlsbFtdIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNuYXBzaG90LnRpbGVzID8/IHt9KVxuICAgIC5maWx0ZXIoKFssIHRpbGVdKSA9PiAhIXRpbGU/LmRyaWxsPy5sZW5ndGgpXG4gICAgLnNsaWNlKDAsIENIQVRfRFJJTExTX01BWClcbiAgICAubWFwKChbY29tcG9uZW50SWQsIHRpbGVdKSA9PiAoe1xuICAgICAgY29tcG9uZW50SWQ6IE51bWJlcihjb21wb25lbnRJZCksXG4gICAgICBwYXRoOiAodGlsZS5kcmlsbCA/PyBbXSlcbiAgICAgICAgLnNsaWNlKDAsIERSSUxMX01BWF9ERVBUSClcbiAgICAgICAgLm1hcCgoc3RlcCkgPT4gKHtcbiAgICAgICAgICBsZXZlbDogc3RlcC5sZXZlbCxcbiAgICAgICAgICBsYWJlbDogWy4uLmRyaWxsU3RlcExhYmVsKHN0ZXAsIGxvY2FsZSldLnNsaWNlKDAsIENIQVRfTEFCRUxfTUFYKS5qb2luKCcnKSxcbiAgICAgICAgfSkpLFxuICAgIH0pKTtcbn1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXQtdmlld2VyLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL3JlcG9ydC1jaGF0LXZpZXdlci1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLHdFQUF3RTtBQUN4RSxtRUFBbUU7QUFDbkUseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBR2xDLDBFQUEwRTtBQUMxRSx3Q0FBd0M7QUFDeEMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxRQUE2QjtJQUMzRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzFELENBQUM7QUFHRCwyRUFBMkU7QUFDM0UseUVBQXlFO0FBQ3pFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUE2QixFQUFFLE1BQXVCO0lBQ3JGLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztTQUMzQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztTQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUNoQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQzthQUNyQixLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQzthQUN6QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FBSyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQzNFLENBQUMsQ0FBQztLQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBwYXJ0cyBvZiB0aGUgY2hhdCdzIHZpZXdlciBzdGF0ZSAoUmVwb3J0Q2hhdFZpZXdlclN0YXRlKSByZWFkIG9mZiBhXG4vLyBzbmFwc2hvdCBvZiB0aGUgc2NyZWVuICh0aGUgc3RhdGUgc2VydmljZSdzIHNuYXBzaG90KCkpLiBQdXJlLCBzbyB0aGVcbi8vIG5vZGUgaGFybmVzcyBjaGVja3MgdGhlbS4gVGhlIGNhcHMgYXJlIHRoZSBzZXJ2ZXInczogaXQgcmVhZHMgYXQgbW9zdFxuLy8gQ0hBVF9EUklMTFNfTUFYIGRyaWxsZWQgY2hhcnRzLCBEUklMTF9NQVhfREVQVEggc3RlcHMgYSBwYXRoIGFuZFxuLy8gQ0hBVF9MQUJFTF9NQVggY2hhcmFjdGVycyBhIGxhYmVsLCBhbmQgZHJvcHMgdGhlIHJlc3QuXG5pbXBvcnQgeyBkcmlsbFN0ZXBMYWJlbCB9IGZyb20gJy4vZHJpbGwtY3J1bWJzJztcbmltcG9ydCB7IFJlcG9ydENoYXRWaWV3ZXJEcmlsbCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhdC12aWV3ZXItZHJpbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydENoYXRWaWV3ZXJTdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhdC12aWV3ZXItc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydFN0YXRlU25hcHNob3QgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LXN0YXRlLXNuYXBzaG90LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRMb2NhbGVUYWcgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEUklMTF9NQVhfREVQVEggfSBmcm9tICcuL3JlcG9ydC1zdGF0ZSc7XG5cblxuZXhwb3J0IGNvbnN0IENIQVRfRFJJTExTX01BWCA9IDEwO1xuZXhwb3J0IGNvbnN0IENIQVRfTEFCRUxfTUFYID0gMTAwO1xuXG5cbi8vIFRoZSBtYXRjaCB0aGUgY2hhdCBpcyB0b2xkIG9mOiAnYW55JyB3aGlsZSB0aGUgZ3JvdXBzIG1hdGNoIGFueSBmaWx0ZXIuXG4vLyAnYWxsJyBpcyB0aGUgZGVmYXVsdCBhbmQgaXMgbGVmdCBvdXQuXG5leHBvcnQgZnVuY3Rpb24gY2hhdFZpZXdlck1hdGNoKHNuYXBzaG90OiBSZXBvcnRTdGF0ZVNuYXBzaG90KTogUGljazxSZXBvcnRDaGF0Vmlld2VyU3RhdGUsICdtYXRjaCc+IHtcbiAgcmV0dXJuIHNuYXBzaG90Lm1hdGNoID09PSAnYW55JyA/IHsgbWF0Y2g6ICdhbnknIH0gOiB7fTtcbn1cblxuXG4vLyBFYWNoIGRyaWxsZWQgY2hhcnQgb2YgdGhlIHNuYXBzaG90LCBpbiBjb21wb25lbnQgaWQgb3JkZXIgKGlkcyBhcyBvYmplY3Rcbi8vIGtleXMgYWx3YXlzIGNvbWUgaW4gYXNjZW5kaW5nIG9yZGVyKSwgd2l0aCBpdHMgcGF0aCB0b3AgZmlyc3QgYW5kIGVhY2hcbi8vIHN0ZXAgbGFiZWxlZCBhcyB0aGUgYnJlYWRjcnVtYiBsYWJlbHMgaXQgKGRyaWxsU3RlcExhYmVsKSwgaW4gdGhlIHJlcG9ydCdzXG4vLyBsb2NhbGUgYW5kIHdpdGggaXRzIHllYXIgKCdRMyAyMDI2JyksIHNvIGEgc3RlcCByZWFkcyB0aGUgc2FtZSBvbiBpdHMgb3duLlxuLy8gRW1wdHkgd2hlbiBub3RoaW5nIGlzIGRyaWxsZWQuXG5leHBvcnQgZnVuY3Rpb24gY2hhdFZpZXdlckRyaWxscyhzbmFwc2hvdDogUmVwb3J0U3RhdGVTbmFwc2hvdCwgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWcpOiBSZXBvcnRDaGF0Vmlld2VyRHJpbGxbXSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhzbmFwc2hvdC50aWxlcyA/PyB7fSlcbiAgICAuZmlsdGVyKChbLCB0aWxlXSkgPT4gISF0aWxlPy5kcmlsbD8ubGVuZ3RoKVxuICAgIC5zbGljZSgwLCBDSEFUX0RSSUxMU19NQVgpXG4gICAgLm1hcCgoW2NvbXBvbmVudElkLCB0aWxlXSkgPT4gKHtcbiAgICAgIGNvbXBvbmVudElkOiBOdW1iZXIoY29tcG9uZW50SWQpLFxuICAgICAgcGF0aDogKHRpbGUuZHJpbGwgPz8gW10pXG4gICAgICAgIC5zbGljZSgwLCBEUklMTF9NQVhfREVQVEgpXG4gICAgICAgIC5tYXAoKHN0ZXApID0+ICh7XG4gICAgICAgICAgbGV2ZWw6IHN0ZXAubGV2ZWwsXG4gICAgICAgICAgbGFiZWw6IFsuLi5kcmlsbFN0ZXBMYWJlbChzdGVwLCBsb2NhbGUpXS5zbGljZSgwLCBDSEFUX0xBQkVMX01BWCkuam9pbignJyksXG4gICAgICAgIH0pKSxcbiAgICB9KSk7XG59XG4iXX0=
@@ -5,7 +5,7 @@ import { REPORT_WEEK_STARTS_ON } from './consts/report-week.const';
5
5
  // presets (Today, Last 7 days, This month, ...). The report adds none of its
6
6
  // own: the built-in list covers every period a report filter names. A preset
7
7
  // is a shortcut only: picking one sets the range's two days, which is all the
8
- // bar and a saved view hold. Provided on the view; the host app's
8
+ // bar and a saved filter hold. Provided on the view; the host app's
9
9
  // own pickers keep their config.
10
10
  export function provideReportDatePicker() {
11
11
  const config = {
@@ -15,4 +15,4 @@ export function provideReportDatePicker() {
15
15
  };
16
16
  return { provide: FS_DATEPICKER_CONFIG, useValue: config };
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGUtcHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9yZXBvcnQtZGF0ZS1wcmVzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUduRSw2RUFBNkU7QUFDN0UsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLGtFQUFrRTtBQUNsRSxpQ0FBaUM7QUFDakMsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxNQUFNLE1BQU0sR0FBd0I7UUFDbEMsR0FBRyw0QkFBNEI7UUFDL0IsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7SUFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRlNfREFURVBJQ0tFUl9DT05GSUcsIEZTX0RBVEVQSUNLRVJfQ09ORklHX0RFRkFVTFQsIElGc0RhdGVQaWNrZXJDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgUkVQT1JUX1dFRUtfU1RBUlRTX09OIH0gZnJvbSAnLi9jb25zdHMvcmVwb3J0LXdlZWsuY29uc3QnO1xuXG5cbi8vIFRoZSBkYXRlIHBpY2tlciBjb25maWcgb2YgYSByZXBvcnQgdmlldzogaXRzIHdlZWtzIHN0YXJ0IG9uIE1vbmRheSwgYXMgdGhlXG4vLyBzZXJ2ZXIncyB3ZWVrcyBkbywgYW5kIGl0cyByYW5nZSBwaWNrZXJzIGxpc3QgdGhlIGRhdGUgcGlja2VyJ3MgYnVpbHQtaW5cbi8vIHByZXNldHMgKFRvZGF5LCBMYXN0IDcgZGF5cywgVGhpcyBtb250aCwgLi4uKS4gVGhlIHJlcG9ydCBhZGRzIG5vbmUgb2YgaXRzXG4vLyBvd246IHRoZSBidWlsdC1pbiBsaXN0IGNvdmVycyBldmVyeSBwZXJpb2QgYSByZXBvcnQgZmlsdGVyIG5hbWVzLiBBIHByZXNldFxuLy8gaXMgYSBzaG9ydGN1dCBvbmx5OiBwaWNraW5nIG9uZSBzZXRzIHRoZSByYW5nZSdzIHR3byBkYXlzLCB3aGljaCBpcyBhbGwgdGhlXG4vLyBiYXIgYW5kIGEgc2F2ZWQgdmlldyBob2xkLiBQcm92aWRlZCBvbiB0aGUgdmlldzsgdGhlIGhvc3QgYXBwJ3Ncbi8vIG93biBwaWNrZXJzIGtlZXAgdGhlaXIgY29uZmlnLlxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSZXBvcnREYXRlUGlja2VyKCk6IFByb3ZpZGVyIHtcbiAgY29uc3QgY29uZmlnOiBJRnNEYXRlUGlja2VyQ29uZmlnID0ge1xuICAgIC4uLkZTX0RBVEVQSUNLRVJfQ09ORklHX0RFRkFVTFQsXG4gICAgd2Vla1N0YXJ0c09uOiBSRVBPUlRfV0VFS19TVEFSVFNfT04sXG4gICAgcHJlc2V0OiB0cnVlLFxuICB9O1xuXG4gIHJldHVybiB7IHByb3ZpZGU6IEZTX0RBVEVQSUNLRVJfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH07XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGUtcHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9yZXBvcnQtZGF0ZS1wcmVzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUduRSw2RUFBNkU7QUFDN0UsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLG9FQUFvRTtBQUNwRSxpQ0FBaUM7QUFDakMsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxNQUFNLE1BQU0sR0FBd0I7UUFDbEMsR0FBRyw0QkFBNEI7UUFDL0IsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7SUFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRlNfREFURVBJQ0tFUl9DT05GSUcsIEZTX0RBVEVQSUNLRVJfQ09ORklHX0RFRkFVTFQsIElGc0RhdGVQaWNrZXJDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgUkVQT1JUX1dFRUtfU1RBUlRTX09OIH0gZnJvbSAnLi9jb25zdHMvcmVwb3J0LXdlZWsuY29uc3QnO1xuXG5cbi8vIFRoZSBkYXRlIHBpY2tlciBjb25maWcgb2YgYSByZXBvcnQgdmlldzogaXRzIHdlZWtzIHN0YXJ0IG9uIE1vbmRheSwgYXMgdGhlXG4vLyBzZXJ2ZXIncyB3ZWVrcyBkbywgYW5kIGl0cyByYW5nZSBwaWNrZXJzIGxpc3QgdGhlIGRhdGUgcGlja2VyJ3MgYnVpbHQtaW5cbi8vIHByZXNldHMgKFRvZGF5LCBMYXN0IDcgZGF5cywgVGhpcyBtb250aCwgLi4uKS4gVGhlIHJlcG9ydCBhZGRzIG5vbmUgb2YgaXRzXG4vLyBvd246IHRoZSBidWlsdC1pbiBsaXN0IGNvdmVycyBldmVyeSBwZXJpb2QgYSByZXBvcnQgZmlsdGVyIG5hbWVzLiBBIHByZXNldFxuLy8gaXMgYSBzaG9ydGN1dCBvbmx5OiBwaWNraW5nIG9uZSBzZXRzIHRoZSByYW5nZSdzIHR3byBkYXlzLCB3aGljaCBpcyBhbGwgdGhlXG4vLyBiYXIgYW5kIGEgc2F2ZWQgZmlsdGVyIGhvbGQuIFByb3ZpZGVkIG9uIHRoZSB2aWV3OyB0aGUgaG9zdCBhcHAnc1xuLy8gb3duIHBpY2tlcnMga2VlcCB0aGVpciBjb25maWcuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVJlcG9ydERhdGVQaWNrZXIoKTogUHJvdmlkZXIge1xuICBjb25zdCBjb25maWc6IElGc0RhdGVQaWNrZXJDb25maWcgPSB7XG4gICAgLi4uRlNfREFURVBJQ0tFUl9DT05GSUdfREVGQVVMVCxcbiAgICB3ZWVrU3RhcnRzT246IFJFUE9SVF9XRUVLX1NUQVJUU19PTixcbiAgICBwcmVzZXQ6IHRydWUsXG4gIH07XG5cbiAgcmV0dXJuIHsgcHJvdmlkZTogRlNfREFURVBJQ0tFUl9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfTtcbn1cbiJdfQ==