stream-chat-angular 5.0.0 → 5.1.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.
- package/assets/version.d.ts +1 -1
- package/esm2020/assets/version.mjs +2 -2
- package/esm2020/lib/avatar/avatar.component.mjs +4 -1
- package/esm2020/lib/channel-list/channel-list.component.mjs +2 -2
- package/esm2020/lib/channel.service.mjs +10 -26
- package/esm2020/lib/chat-client.service.mjs +2 -3
- package/esm2020/lib/message-actions.service.mjs +4 -4
- package/esm2020/lib/message-list/message-list.component.mjs +181 -249
- package/esm2020/lib/types.mjs +1 -1
- package/esm2020/lib/virtualized-list.service.mjs +271 -0
- package/esm2020/lib/virtualized-message-list.service.mjs +73 -0
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +2 -2
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/stream-chat-angular.mjs +550 -288
- package/fesm2015/stream-chat-angular.mjs.map +1 -1
- package/fesm2020/stream-chat-angular.mjs +536 -277
- package/fesm2020/stream-chat-angular.mjs.map +1 -1
- package/lib/avatar/avatar.component.d.ts +3 -2
- package/lib/channel-list/channel-list.component.d.ts +1 -1
- package/lib/channel.service.d.ts +6 -12
- package/lib/message-list/message-list.component.d.ts +12 -18
- package/lib/types.d.ts +7 -0
- package/lib/virtualized-list.service.d.ts +58 -0
- package/lib/virtualized-message-list.service.d.ts +15 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/assets/styles/css/index.css +1 -1
- package/src/assets/styles/css/index.layout.css +1 -1
- package/src/assets/styles/scss/LoadingIndicator/LoadingIndicator-layout.scss +16 -0
- package/src/assets/version.ts +1 -1
package/esm2020/lib/types.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsTWVtYmVyUmVzcG9uc2UsXG4gIENvbW1hbmRSZXNwb25zZSxcbiAgRXZlbnQsXG4gIEV4dGVuZGFibGVHZW5lcmljcyxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBMaXRlcmFsU3RyaW5nRm9yVW5pb24sXG4gIE1lc3NhZ2VSZXNwb25zZUJhc2UsXG4gIE11dGUsXG4gIFJlYWN0aW9uUmVzcG9uc2UsXG4gIFVzZXIsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXR0YWNobWVudFNlcnZpY2UgfSBmcm9tICcuL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVW5rbm93blR5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tVHJpZ2dlciA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGNvbXBvbmVudFByb3BzOiBVbmtub3duVHlwZTtcbiAgICBkYXRhOiBVbmtub3duVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBFeHRlbmRhYmxlR2VuZXJpY3MgJiB7XG4gIGF0dGFjaG1lbnRUeXBlOiBEZWZhdWx0QXR0YWNobWVudFR5cGU7XG4gIGNoYW5uZWxUeXBlOiBEZWZhdWx0Q2hhbm5lbFR5cGU7XG4gIGNvbW1hbmRUeXBlOiBMaXRlcmFsU3RyaW5nRm9yVW5pb247XG4gIGV2ZW50VHlwZTogVW5rbm93blR5cGU7XG4gIG1lc3NhZ2VUeXBlOiBEZWZhdWx0TWVzc2FnZVR5cGU7XG4gIHJlYWN0aW9uVHlwZTogVW5rbm93blR5cGU7XG4gIHVzZXJUeXBlOiBEZWZhdWx0VXNlclR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0QXR0YWNobWVudFR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgYXNzZXRfdXJsPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgaW1hZ2VzPzogQXJyYXk8QXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIG1pbWVfdHlwZT86IHN0cmluZztcbiAgaXNDdXN0b21BdHRhY2htZW50PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDaGFubmVsVHlwZSA9IFVua25vd25UeXBlICYge1xuICBpbWFnZT86IHN0cmluZztcbiAgbWVtYmVyX2NvdW50PzogbnVtYmVyO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDb21tYW5kVHlwZSA9IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdE1lc3NhZ2VUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGN1c3RvbVR5cGU/OiAnY2hhbm5lbC5pbnRybycgfCAnbWVzc2FnZS5kYXRlJztcbiAgZGF0ZT86IHN0cmluZyB8IERhdGU7XG4gIGVycm9yU3RhdHVzQ29kZT86IG51bWJlcjtcbiAgZXZlbnQ/OiBFdmVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdW5yZWFkPzogYm9vbGVhbjtcbiAgcmVhZEJ5OiBVc2VyUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgdHJhbnNsYXRpb24/OiBzdHJpbmc7XG4gIHF1b3RlZF9tZXNzYWdlPzogTWVzc2FnZVJlc3BvbnNlQmFzZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRVc2VyVHlwZUludGVybmFsID0ge1xuICBpbWFnZT86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlID0gVW5rbm93blR5cGUgJlxuICBEZWZhdWx0VXNlclR5cGVJbnRlcm5hbCAmIHtcbiAgICBtdXRlcz86IEFycmF5PE11dGU8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4+O1xuICB9O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1NZXNzYWdlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBGb3JtYXRNZXNzYWdlUmVzcG9uc2U8VD47XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRVcGxvYWRFcnJvclJlYXNvbiA9XG4gIHwgJ2ZpbGUtc2l6ZSdcbiAgfCAnZmlsZS1leHRlbnNpb24nXG4gIHwgJ3Vua25vd24nO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50VXBsb2FkPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGZpbGU6IEZpbGU7XG4gIHN0YXRlOiAnZXJyb3InIHwgJ3N1Y2Nlc3MnIHwgJ3VwbG9hZGluZyc7XG4gIGVycm9yUmVhc29uPzogQXR0YWNobWVudFVwbG9hZEVycm9yUmVhc29uO1xuICBlcnJvckV4dHJhSW5mbz86IHsgcGFyYW06IHN0cmluZyB9W107XG4gIHVybD86IHN0cmluZztcbiAgdHlwZTogJ2ltYWdlJyB8ICdmaWxlJyB8ICd2aWRlbyc7XG4gIHByZXZpZXdVcmk/OiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcbiAgdGh1bWJfdXJsPzogc3RyaW5nO1xuICBmcm9tQXR0YWNobWVudD86IEF0dGFjaG1lbnQ8VD47XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCA9IHtcbiAgaXRlbTogQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW07XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSA9IChcbiAgfCBDaGFubmVsTWVtYmVyUmVzcG9uc2VcbiAgfCBVc2VyUmVzcG9uc2VcbikgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb21hbmRBdXRvY29tcGxldGVMaXN0SXRlbSA9IENvbW1hbmRSZXNwb25zZSAmIHtcbiAgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkPFQgPSBvYmplY3Q+ID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0cmFuc2xhdGVQYXJhbXM/OiBvYmplY3Q7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VD47XG4gIHRlbXBsYXRlQ29udGV4dD86IFQ7XG4gIGRpc21pc3NGbjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxQcmV2aWV3Q29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsOiBDaGFubmVsPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFByZXZpZXdJbmZvQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gQ2hhbm5lbFByZXZpZXdDb250ZXh0ICYge1xuICBsYXRlc3RNZXNzYWdlPzogU3RyZWFtTWVzc2FnZTxUPjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IG9mIHRoZSBsYXRlc3QgbWVzc2FnZSwgb3Igc29tZSBtZXRhIGluZm9ybWF0aW9uIChmb3IgZXhhbXBsZTogXCJOb3RoaW5nIHlldFwiKVxuICAgKi9cbiAgbGF0ZXN0TWVzc2FnZVRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY2hhbm5lbCwgb3IgdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwgbWVtYmVyc1xuICAgKi9cbiAgY2hhbm5lbERpc3BsYXlUaXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGFzdCBtZXNzYWdlIChvbmx5IGF2YWlsYWJsZSBpZiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBzZW50IGJ5IHRoZSBjdXJyZW50IHVzZXIpXG4gICAqL1xuICBsYXRlc3RNZXNzYWdlU3RhdHVzPzogJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG4gIC8qKlxuICAgKiBUaGUgdGltZSBvZiB0aGUgbGFzdCBtZXNzYWdlIChmb3JtYXR0ZWQgdG8gYSB1c2VyLWZyaWVuZGx5IHN0cmluZylcbiAgICovXG4gIGxhdGVzdE1lc3NhZ2VUaW1lPzogc3RyaW5nO1xuICB1bnJlYWRDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvblRlbXBsYXRlQ29udGV4dCA9IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB1c2VyOiBVc2VyUmVzcG9uc2U7XG59O1xuXG5leHBvcnQgdHlwZSBFbW9qaVBpY2tlckNvbnRleHQgPSB7XG4gIGVtb2ppSW5wdXQkOiBTdWJqZWN0PHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBUeXBpbmdJbmRpY2F0b3JDb250ZXh0ID0ge1xuICB1c2Vyc1R5cGluZyQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUNvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW107XG4gIGlzTGFzdFNlbnRNZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJztcbiAgaXNIaWdobGlnaHRlZDogYm9vbGVhbjtcbiAgY3VzdG9tQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW1bXTtcbiAgc2Nyb2xsJD86IE9ic2VydmFibGU8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQWN0aW9uc0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGlzdENvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIGltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI/OiAoc3RhdGU6ICdvcGVuZWQnIHwgJ2Nsb3NlZCcpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBdmF0YXJUeXBlID0gJ2NoYW5uZWwnIHwgJ3VzZXInO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJMb2NhdGlvbiA9XG4gIHwgJ2NoYW5uZWwtcHJldmlldydcbiAgfCAnY2hhbm5lbC1oZWFkZXInXG4gIHwgJ21lc3NhZ2Utc2VuZGVyJ1xuICB8ICdtZXNzYWdlLXJlYWRlcidcbiAgfCAncXVvdGVkLW1lc3NhZ2Utc2VuZGVyJ1xuICB8ICdhdXRvY29tcGxldGUtaXRlbSdcbiAgfCAndHlwaW5nLWluZGljYXRvcidcbiAgfCAncmVhY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJDb250ZXh0ID0ge1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGltYWdlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIGxvY2F0aW9uOiBBdmF0YXJMb2NhdGlvbiB8IHVuZGVmaW5lZDtcbiAgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIHVzZXI/OiBVc2VyPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICBpbml0aWFsc1R5cGU/OiAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnIHwgJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnO1xuICBzaG93T25saW5lSW5kaWNhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQgPSB7XG4gIGF0dGFjaG1lbnRVcGxvYWRzJDogT2JzZXJ2YWJsZTxBdHRhY2htZW50VXBsb2FkW10+IHwgdW5kZWZpbmVkO1xuICByZXRyeVVwbG9hZEhhbmRsZXI6IChmOiBGaWxlKSA9PiB2b2lkO1xuICBkZWxldGVVcGxvYWRIYW5kbGVyOiAodTogQXR0YWNobWVudFVwbG9hZCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25Db250ZXh0ID0ge1xuICBpY29uOiBJY29uIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPiB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdO1xuICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXMgPSB7XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZVRleHRIdG1sRWxlbWVudD86IEhUTUxFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkhhbmRsZXI8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IChcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPixcbiAgcGFyYW1zOiBNZXNzYWdlQWN0aW9uSGFuZGxlckV4dHJhUGFyYW1zXG4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25Cb3hJdGVtQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogKChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+O1xuICBhY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXM6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXM7XG4gIGFjdGlvbkhhbmRsZXI6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uQWN0aW9uSXRlbTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25OYW1lOiAncmVhY3QnO1xuICBpc1Zpc2libGU6IChcbiAgICBlbmFibGVkQWN0aW9uczogc3RyaW5nW10sXG4gICAgaXNNaW5lOiBib29sZWFuLFxuICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD5cbiAgKSA9PiBib29sZWFuO1xufTtcblxudHlwZSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIGlzVmlzaWJsZTogKFxuICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBpc01pbmU6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPlxuICApID0+IGJvb2xlYW47XG4gIGFjdGlvbkhhbmRsZXI6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTpcbiAgICB8ICdxdW90ZSdcbiAgICB8ICdwaW4nXG4gICAgfCAnZmxhZydcbiAgICB8ICdlZGl0J1xuICAgIHwgJ2RlbGV0ZSdcbiAgICB8ICdtYXJrLXVucmVhZCdcbiAgICB8ICd0aHJlYWQtcmVwbHknXG4gICAgfCAnY29weS1tZXNzYWdlLXRleHQnO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc1NlbGVjdG9yQ29udGV4dCA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICBsYXRlc3RSZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgb3duUmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG59O1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRleHQgPSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgaXNPcGVuQ2hhbmdlSGFuZGxlcjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25Db250ZXh0ID0ge1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkO1xuICBjb250ZW50OiBUZW1wbGF0ZVJlZjx2b2lkPiB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRocmVhZEhlYWRlckNvbnRleHQgPSB7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGNsb3NlVGhyZWFkSGFuZGxlcjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvblR5cGUgPSBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21NZXRhZGF0YUNvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xuICByZWFkQnlUZXh0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsSGVhZGVySW5mb0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCA9IHtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2U7XG59O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudDogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIFN5c3RlbU1lc3NhZ2VDb250ZXh0ID0gTWVzc2FnZUNvbnRleHQgJiB7XG4gIHBhcnNlZERhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGVTZXBhcmF0b3JDb250ZXh0ID0ge1xuICBkYXRlOiBEYXRlO1xuICBwYXJzZWREYXRlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgPSB7XG4gIHVucmVhZENvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbkNvbnRleHQgPVxuICBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgJiB7XG4gICAgb25KdW1wOiAoKSA9PiB2b2lkO1xuICAgIG9uRGlzbWlzczogKCkgPT4gdm9pZDtcbiAgfTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFF1ZXJ5U3RhdGUgPSB7XG4gIHN0YXRlOiAnaW4tcHJvZ3Jlc3MnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcbiAgLy8gTm8gdHlwZSBkZWYgZnJvbSBzdHJlYW0tY2hhdFxuICBlcnJvcj86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlSW5wdXQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgdGV4dDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxUPltdO1xuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlPFQ+W107XG4gIHBhcmVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHF1b3RlZE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjdXN0b21EYXRhOiB1bmRlZmluZWQgfCBQYXJ0aWFsPFRbJ21lc3NhZ2VUeXBlJ10+O1xufTtcblxuZXhwb3J0IHR5cGUgT2Zmc2V0TmV4dFBhZ2VDb25maWd1cmF0aW9uID0ge1xuICB0eXBlOiAnb2Zmc2V0JztcbiAgb2Zmc2V0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJ0TmV4dFBhZ2VDb25maWd1cmF0aW9uPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIHR5cGU6ICdmaWx0ZXInO1xuICBwYWdpbmF0aW9uRmlsdGVyOiBDaGFubmVsRmlsdGVyczxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5leHRQYWdlQ29uZmlndXJhdGlvbiA9XG4gIHwgT2Zmc2V0TmV4dFBhZ2VDb25maWd1cmF0aW9uXG4gIHwgRmlsdGVydE5leHRQYWdlQ29uZmlndXJhdGlvblxuICB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uQ2xpY2tEZXRhaWxzID0ge1xuICBtZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVhY3Rpb25UeXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uc0NsaWNrRGV0YWlsczxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0PFQ+ICYgeyBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdIH07XG5cbmV4cG9ydCB0eXBlIEdyb3VwU3R5bGVPcHRpb25zID0ge1xuICBub0dyb3VwQnlVc2VyPzogYm9vbGVhbjtcbiAgbGFzdFJlYWRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIG5vR3JvdXBCeVJlYWRTdGF0ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUXVlcnlUeXBlID0gJ2ZpcnN0LXBhZ2UnIHwgJ25leHQtcGFnZScgfCAncmVjb3Zlci1zdGF0ZSc7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxRdWVyeVJlc3VsdDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsczogQ2hhbm5lbDxUPltdO1xuICBoYXNNb3JlUGFnZTogYm9vbGVhbjtcbn07XG4iXX0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsTWVtYmVyUmVzcG9uc2UsXG4gIENvbW1hbmRSZXNwb25zZSxcbiAgRXZlbnQsXG4gIEV4dGVuZGFibGVHZW5lcmljcyxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBMaXRlcmFsU3RyaW5nRm9yVW5pb24sXG4gIE1lc3NhZ2VSZXNwb25zZUJhc2UsXG4gIE11dGUsXG4gIFJlYWN0aW9uUmVzcG9uc2UsXG4gIFVzZXIsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXR0YWNobWVudFNlcnZpY2UgfSBmcm9tICcuL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVW5rbm93blR5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tVHJpZ2dlciA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGNvbXBvbmVudFByb3BzOiBVbmtub3duVHlwZTtcbiAgICBkYXRhOiBVbmtub3duVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBFeHRlbmRhYmxlR2VuZXJpY3MgJiB7XG4gIGF0dGFjaG1lbnRUeXBlOiBEZWZhdWx0QXR0YWNobWVudFR5cGU7XG4gIGNoYW5uZWxUeXBlOiBEZWZhdWx0Q2hhbm5lbFR5cGU7XG4gIGNvbW1hbmRUeXBlOiBMaXRlcmFsU3RyaW5nRm9yVW5pb247XG4gIGV2ZW50VHlwZTogVW5rbm93blR5cGU7XG4gIG1lc3NhZ2VUeXBlOiBEZWZhdWx0TWVzc2FnZVR5cGU7XG4gIHJlYWN0aW9uVHlwZTogVW5rbm93blR5cGU7XG4gIHVzZXJUeXBlOiBEZWZhdWx0VXNlclR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0QXR0YWNobWVudFR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgYXNzZXRfdXJsPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgaW1hZ2VzPzogQXJyYXk8QXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIG1pbWVfdHlwZT86IHN0cmluZztcbiAgaXNDdXN0b21BdHRhY2htZW50PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDaGFubmVsVHlwZSA9IFVua25vd25UeXBlICYge1xuICBpbWFnZT86IHN0cmluZztcbiAgbWVtYmVyX2NvdW50PzogbnVtYmVyO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDb21tYW5kVHlwZSA9IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdE1lc3NhZ2VUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGN1c3RvbVR5cGU/OiAnY2hhbm5lbC5pbnRybycgfCAnbWVzc2FnZS5kYXRlJztcbiAgZGF0ZT86IHN0cmluZyB8IERhdGU7XG4gIGVycm9yU3RhdHVzQ29kZT86IG51bWJlcjtcbiAgZXZlbnQ/OiBFdmVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdW5yZWFkPzogYm9vbGVhbjtcbiAgcmVhZEJ5OiBVc2VyUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgdHJhbnNsYXRpb24/OiBzdHJpbmc7XG4gIHF1b3RlZF9tZXNzYWdlPzogTWVzc2FnZVJlc3BvbnNlQmFzZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRVc2VyVHlwZUludGVybmFsID0ge1xuICBpbWFnZT86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlID0gVW5rbm93blR5cGUgJlxuICBEZWZhdWx0VXNlclR5cGVJbnRlcm5hbCAmIHtcbiAgICBtdXRlcz86IEFycmF5PE11dGU8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4+O1xuICB9O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1NZXNzYWdlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBGb3JtYXRNZXNzYWdlUmVzcG9uc2U8VD47XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRVcGxvYWRFcnJvclJlYXNvbiA9XG4gIHwgJ2ZpbGUtc2l6ZSdcbiAgfCAnZmlsZS1leHRlbnNpb24nXG4gIHwgJ3Vua25vd24nO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50VXBsb2FkPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGZpbGU6IEZpbGU7XG4gIHN0YXRlOiAnZXJyb3InIHwgJ3N1Y2Nlc3MnIHwgJ3VwbG9hZGluZyc7XG4gIGVycm9yUmVhc29uPzogQXR0YWNobWVudFVwbG9hZEVycm9yUmVhc29uO1xuICBlcnJvckV4dHJhSW5mbz86IHsgcGFyYW06IHN0cmluZyB9W107XG4gIHVybD86IHN0cmluZztcbiAgdHlwZTogJ2ltYWdlJyB8ICdmaWxlJyB8ICd2aWRlbyc7XG4gIHByZXZpZXdVcmk/OiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcbiAgdGh1bWJfdXJsPzogc3RyaW5nO1xuICBmcm9tQXR0YWNobWVudD86IEF0dGFjaG1lbnQ8VD47XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCA9IHtcbiAgaXRlbTogQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW07XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSA9IChcbiAgfCBDaGFubmVsTWVtYmVyUmVzcG9uc2VcbiAgfCBVc2VyUmVzcG9uc2VcbikgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb21hbmRBdXRvY29tcGxldGVMaXN0SXRlbSA9IENvbW1hbmRSZXNwb25zZSAmIHtcbiAgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkPFQgPSBvYmplY3Q+ID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0cmFuc2xhdGVQYXJhbXM/OiBvYmplY3Q7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VD47XG4gIHRlbXBsYXRlQ29udGV4dD86IFQ7XG4gIGRpc21pc3NGbjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxQcmV2aWV3Q29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsOiBDaGFubmVsPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFByZXZpZXdJbmZvQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gQ2hhbm5lbFByZXZpZXdDb250ZXh0ICYge1xuICBsYXRlc3RNZXNzYWdlPzogU3RyZWFtTWVzc2FnZTxUPjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IG9mIHRoZSBsYXRlc3QgbWVzc2FnZSwgb3Igc29tZSBtZXRhIGluZm9ybWF0aW9uIChmb3IgZXhhbXBsZTogXCJOb3RoaW5nIHlldFwiKVxuICAgKi9cbiAgbGF0ZXN0TWVzc2FnZVRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY2hhbm5lbCwgb3IgdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwgbWVtYmVyc1xuICAgKi9cbiAgY2hhbm5lbERpc3BsYXlUaXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGFzdCBtZXNzYWdlIChvbmx5IGF2YWlsYWJsZSBpZiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBzZW50IGJ5IHRoZSBjdXJyZW50IHVzZXIpXG4gICAqL1xuICBsYXRlc3RNZXNzYWdlU3RhdHVzPzogJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG4gIC8qKlxuICAgKiBUaGUgdGltZSBvZiB0aGUgbGFzdCBtZXNzYWdlIChmb3JtYXR0ZWQgdG8gYSB1c2VyLWZyaWVuZGx5IHN0cmluZylcbiAgICovXG4gIGxhdGVzdE1lc3NhZ2VUaW1lPzogc3RyaW5nO1xuICB1bnJlYWRDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvblRlbXBsYXRlQ29udGV4dCA9IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB1c2VyOiBVc2VyUmVzcG9uc2U7XG59O1xuXG5leHBvcnQgdHlwZSBFbW9qaVBpY2tlckNvbnRleHQgPSB7XG4gIGVtb2ppSW5wdXQkOiBTdWJqZWN0PHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBUeXBpbmdJbmRpY2F0b3JDb250ZXh0ID0ge1xuICB1c2Vyc1R5cGluZyQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUNvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW107XG4gIGlzTGFzdFNlbnRNZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJztcbiAgaXNIaWdobGlnaHRlZDogYm9vbGVhbjtcbiAgY3VzdG9tQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW1bXTtcbiAgc2Nyb2xsJD86IE9ic2VydmFibGU8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQWN0aW9uc0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGlzdENvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIGltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI/OiAoc3RhdGU6ICdvcGVuZWQnIHwgJ2Nsb3NlZCcpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBdmF0YXJUeXBlID0gJ2NoYW5uZWwnIHwgJ3VzZXInO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJMb2NhdGlvbiA9XG4gIHwgJ2NoYW5uZWwtcHJldmlldydcbiAgfCAnY2hhbm5lbC1oZWFkZXInXG4gIHwgJ21lc3NhZ2Utc2VuZGVyJ1xuICB8ICdtZXNzYWdlLXJlYWRlcidcbiAgfCAncXVvdGVkLW1lc3NhZ2Utc2VuZGVyJ1xuICB8ICdhdXRvY29tcGxldGUtaXRlbSdcbiAgfCAndHlwaW5nLWluZGljYXRvcidcbiAgfCAncmVhY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJDb250ZXh0ID0ge1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGltYWdlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIGxvY2F0aW9uOiBBdmF0YXJMb2NhdGlvbiB8IHVuZGVmaW5lZDtcbiAgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIHVzZXI/OiBVc2VyPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICBpbml0aWFsc1R5cGU/OiAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnIHwgJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnO1xuICBzaG93T25saW5lSW5kaWNhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQgPSB7XG4gIGF0dGFjaG1lbnRVcGxvYWRzJDogT2JzZXJ2YWJsZTxBdHRhY2htZW50VXBsb2FkW10+IHwgdW5kZWZpbmVkO1xuICByZXRyeVVwbG9hZEhhbmRsZXI6IChmOiBGaWxlKSA9PiB2b2lkO1xuICBkZWxldGVVcGxvYWRIYW5kbGVyOiAodTogQXR0YWNobWVudFVwbG9hZCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25Db250ZXh0ID0ge1xuICBpY29uOiBJY29uIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPiB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdO1xuICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXMgPSB7XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZVRleHRIdG1sRWxlbWVudD86IEhUTUxFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkhhbmRsZXI8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IChcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPixcbiAgcGFyYW1zOiBNZXNzYWdlQWN0aW9uSGFuZGxlckV4dHJhUGFyYW1zXG4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25Cb3hJdGVtQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogKChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+O1xuICBhY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXM6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXM7XG4gIGFjdGlvbkhhbmRsZXI6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uQWN0aW9uSXRlbTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25OYW1lOiAncmVhY3QnO1xuICBpc1Zpc2libGU6IChcbiAgICBlbmFibGVkQWN0aW9uczogc3RyaW5nW10sXG4gICAgaXNNaW5lOiBib29sZWFuLFxuICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD5cbiAgKSA9PiBib29sZWFuO1xufTtcblxudHlwZSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIGlzVmlzaWJsZTogKFxuICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBpc01pbmU6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPlxuICApID0+IGJvb2xlYW47XG4gIGFjdGlvbkhhbmRsZXI6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTpcbiAgICB8ICdxdW90ZSdcbiAgICB8ICdwaW4nXG4gICAgfCAnZmxhZydcbiAgICB8ICdlZGl0J1xuICAgIHwgJ2RlbGV0ZSdcbiAgICB8ICdtYXJrLXVucmVhZCdcbiAgICB8ICd0aHJlYWQtcmVwbHknXG4gICAgfCAnY29weS1tZXNzYWdlLXRleHQnO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc1NlbGVjdG9yQ29udGV4dCA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICBsYXRlc3RSZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgb3duUmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG59O1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRleHQgPSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgaXNPcGVuQ2hhbmdlSGFuZGxlcjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25Db250ZXh0ID0ge1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkO1xuICBjb250ZW50OiBUZW1wbGF0ZVJlZjx2b2lkPiB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRocmVhZEhlYWRlckNvbnRleHQgPSB7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGNsb3NlVGhyZWFkSGFuZGxlcjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvblR5cGUgPSBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21NZXRhZGF0YUNvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xuICByZWFkQnlUZXh0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsSGVhZGVySW5mb0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCA9IHtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2U7XG59O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudDogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIFN5c3RlbU1lc3NhZ2VDb250ZXh0ID0gTWVzc2FnZUNvbnRleHQgJiB7XG4gIHBhcnNlZERhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGVTZXBhcmF0b3JDb250ZXh0ID0ge1xuICBkYXRlOiBEYXRlO1xuICBwYXJzZWREYXRlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgPSB7XG4gIHVucmVhZENvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbkNvbnRleHQgPVxuICBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgJiB7XG4gICAgb25KdW1wOiAoKSA9PiB2b2lkO1xuICAgIG9uRGlzbWlzczogKCkgPT4gdm9pZDtcbiAgfTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFF1ZXJ5U3RhdGUgPSB7XG4gIHN0YXRlOiAnaW4tcHJvZ3Jlc3MnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcbiAgLy8gTm8gdHlwZSBkZWYgZnJvbSBzdHJlYW0tY2hhdFxuICBlcnJvcj86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlSW5wdXQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgdGV4dDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxUPltdO1xuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlPFQ+W107XG4gIHBhcmVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHF1b3RlZE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjdXN0b21EYXRhOiB1bmRlZmluZWQgfCBQYXJ0aWFsPFRbJ21lc3NhZ2VUeXBlJ10+O1xufTtcblxuZXhwb3J0IHR5cGUgT2Zmc2V0TmV4dFBhZ2VDb25maWd1cmF0aW9uID0ge1xuICB0eXBlOiAnb2Zmc2V0JztcbiAgb2Zmc2V0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJ0TmV4dFBhZ2VDb25maWd1cmF0aW9uPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIHR5cGU6ICdmaWx0ZXInO1xuICBwYWdpbmF0aW9uRmlsdGVyOiBDaGFubmVsRmlsdGVyczxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5leHRQYWdlQ29uZmlndXJhdGlvbiA9XG4gIHwgT2Zmc2V0TmV4dFBhZ2VDb25maWd1cmF0aW9uXG4gIHwgRmlsdGVydE5leHRQYWdlQ29uZmlndXJhdGlvblxuICB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uQ2xpY2tEZXRhaWxzID0ge1xuICBtZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVhY3Rpb25UeXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uc0NsaWNrRGV0YWlsczxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0PFQ+ICYgeyBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdIH07XG5cbmV4cG9ydCB0eXBlIEdyb3VwU3R5bGVPcHRpb25zID0ge1xuICBub0dyb3VwQnlVc2VyPzogYm9vbGVhbjtcbiAgbGFzdFJlYWRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIG5vR3JvdXBCeVJlYWRTdGF0ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUXVlcnlUeXBlID0gJ2ZpcnN0LXBhZ2UnIHwgJ25leHQtcGFnZScgfCAncmVjb3Zlci1zdGF0ZSc7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxRdWVyeVJlc3VsdDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsczogQ2hhbm5lbDxUPltdO1xuICBoYXNNb3JlUGFnZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZpcnR1YWxpemVkTGlzdFNjcm9sbFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnO1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXplZExpc3RRdWVyeVN0YXRlID0ge1xuICBzdGF0ZTogJ2xvYWRpbmctdG9wJyB8ICdsb2FkaW5nLWJvdHRvbScgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuICBlcnJvcj86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXplZExpc3RRdWVyeURpcmVjdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbSc7XG5cbmV4cG9ydCB0eXBlIFZpcnR1YWxpemVkTGlzdFZlcnRpY2FsSXRlbVBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnO1xuIl19
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { BehaviorSubject, Subject, combineLatest, distinctUntilChanged, filter, merge, of, pairwise, switchMap, take, } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* The `VirtualizedListService` removes items from a list that are not currently displayed. This is a high-level overview of how it works:
|
|
4
|
+
* - Create a new instance for each list that needs virtualization
|
|
5
|
+
* - Input: Provide a reactive stream that emits all items in the list
|
|
6
|
+
* - Input: Provide a reactive stream that emit the current scroll position (top, middle or bottom)
|
|
7
|
+
* - Input: maximum number of items that are allowed in the list (in practice the service can make the virtualized list half this number, you should take this into account when choosing the value)
|
|
8
|
+
* - Output: The service will emit the current list of displayed items via the virtualized items reactive stream
|
|
9
|
+
* - For simplicity, the service won't track the height of the items, nor it needs an exact scroll location -> this is how removing items work:
|
|
10
|
+
* - If scroll location is bottom/top items around the current bottom/top item will be emitted in the virtualized items stream
|
|
11
|
+
* - If scroll location is middle, the service won't remove items, if new items are received, those will be appended to the virtualized list (this means that in theory the list can grow very big if a lot of new items are received while the user is scrolled somewhere, this is a trade-off for the simplicity of no height tracking)
|
|
12
|
+
* - Since there is no height tracking, you should make sure to provide a maximum number that is big enough to fill the biggest expected screen size twice
|
|
13
|
+
* - If the user scrolls to the bottom/top and there are no more local items to show, the service will trigger a query to load more items
|
|
14
|
+
* - Input: you should provide the page size to use, in order for the service to determine if loading is necessary
|
|
15
|
+
*
|
|
16
|
+
* The `VirtualizedMessageListService` provides an implementation for the message list component.
|
|
17
|
+
*/
|
|
18
|
+
export class VirtualizedListService {
|
|
19
|
+
constructor(allItems$, scrollPosition$, jumpToItem$, pageSize = 25, maxItemCount = pageSize * 4) {
|
|
20
|
+
this.allItems$ = allItems$;
|
|
21
|
+
this.scrollPosition$ = scrollPosition$;
|
|
22
|
+
this.jumpToItem$ = jumpToItem$;
|
|
23
|
+
this.pageSize = pageSize;
|
|
24
|
+
this.maxItemCount = maxItemCount;
|
|
25
|
+
this.queryStateSubject = new BehaviorSubject({
|
|
26
|
+
state: 'success',
|
|
27
|
+
});
|
|
28
|
+
this.bufferOnTop = 0;
|
|
29
|
+
this.bufferOnBottom = 0;
|
|
30
|
+
this.loadFromBuffer$ = new Subject();
|
|
31
|
+
this.virtualizedItemsSubject = new BehaviorSubject([]);
|
|
32
|
+
this.subscriptions = [];
|
|
33
|
+
this.virtualizedItems$ = this.virtualizedItemsSubject.asObservable();
|
|
34
|
+
this.queryState$ = this.queryStateSubject.asObservable();
|
|
35
|
+
this.subscriptions.push(this.virtualizedItems$.subscribe((virtaluzedItems) => {
|
|
36
|
+
this.allItems$.pipe(take(1)).subscribe((allItems) => {
|
|
37
|
+
if (virtaluzedItems.length === allItems.length) {
|
|
38
|
+
this.bufferOnTop = 0;
|
|
39
|
+
this.bufferOnBottom = 0;
|
|
40
|
+
}
|
|
41
|
+
else if (virtaluzedItems.length === 0) {
|
|
42
|
+
this.bufferOnTop = allItems.length;
|
|
43
|
+
this.bufferOnBottom = 0;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.bufferOnTop = allItems.indexOf(virtaluzedItems[0]);
|
|
47
|
+
this.bufferOnBottom =
|
|
48
|
+
allItems.length -
|
|
49
|
+
allItems.indexOf(virtaluzedItems[virtaluzedItems.length - 1]) -
|
|
50
|
+
1;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}));
|
|
54
|
+
this.subscriptions.push(merge(this.allItems$, this.loadFromBuffer$)
|
|
55
|
+
.pipe(switchMap(() => {
|
|
56
|
+
return combineLatest([
|
|
57
|
+
this.allItems$.pipe(take(1)),
|
|
58
|
+
this.scrollPosition$.pipe(take(1)),
|
|
59
|
+
]);
|
|
60
|
+
}))
|
|
61
|
+
.subscribe(([items, scrollPosition]) => {
|
|
62
|
+
if (scrollPosition === 'middle') {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const currentItems = this.virtualizedItemsSubject.getValue();
|
|
66
|
+
if (items.length <= this.maxItemCount) {
|
|
67
|
+
this.virtualizedItemsSubject.next(items);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
let startIndex = 0;
|
|
71
|
+
let endIndex = undefined;
|
|
72
|
+
const numberOfItemsToRemove = items.length - Math.round(this.maxItemCount / 2);
|
|
73
|
+
const numberOfItemsAfterRemove = items.length - numberOfItemsToRemove;
|
|
74
|
+
switch (scrollPosition) {
|
|
75
|
+
case 'top':
|
|
76
|
+
if (currentItems.length > 0) {
|
|
77
|
+
const middleIndex = items.findIndex((i) => this.isEqual(i, currentItems[0]));
|
|
78
|
+
if (middleIndex !== -1) {
|
|
79
|
+
startIndex = Math.max(0, middleIndex - Math.ceil(numberOfItemsAfterRemove / 2));
|
|
80
|
+
endIndex = startIndex + numberOfItemsAfterRemove;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
endIndex = numberOfItemsAfterRemove;
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
case 'bottom':
|
|
88
|
+
if (currentItems.length > 0) {
|
|
89
|
+
const middleIndex = items.findIndex((i) => this.isEqual(i, currentItems[currentItems.length - 1]));
|
|
90
|
+
if (middleIndex !== -1) {
|
|
91
|
+
endIndex = Math.min(items.length, middleIndex + Math.floor(numberOfItemsAfterRemove / 2) + 1);
|
|
92
|
+
startIndex = endIndex - numberOfItemsAfterRemove;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
startIndex = items.length - numberOfItemsAfterRemove;
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
const virtualizedItems = items.slice(startIndex, endIndex);
|
|
101
|
+
this.virtualizedItemsSubject.next(virtualizedItems);
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
this.subscriptions.push(this.scrollPosition$
|
|
105
|
+
.pipe(distinctUntilChanged())
|
|
106
|
+
.subscribe((position) => {
|
|
107
|
+
if (this.queryStateSubject.getValue().state === `loading-${position}`) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (position === 'top') {
|
|
111
|
+
if (this.bufferOnTop < this.pageSize) {
|
|
112
|
+
void this.loadMore(position);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.loadMoreFromBuffer('top');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (position === 'bottom') {
|
|
119
|
+
if (this.bufferOnBottom < this.pageSize) {
|
|
120
|
+
void this.loadMore(position);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.loadMoreFromBuffer('bottom');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
this.subscriptions.push(this.allItems$
|
|
128
|
+
.pipe(pairwise(), filter(() => {
|
|
129
|
+
let scrollPosition;
|
|
130
|
+
this.scrollPosition$
|
|
131
|
+
.pipe(take(1))
|
|
132
|
+
.subscribe((s) => (scrollPosition = s));
|
|
133
|
+
return scrollPosition === 'middle';
|
|
134
|
+
}))
|
|
135
|
+
.subscribe(([prevItems, currentItems]) => {
|
|
136
|
+
if (currentItems.length < this.maxItemCount ||
|
|
137
|
+
this.virtualizedItems.length === 0) {
|
|
138
|
+
this.virtualizedItemsSubject.next(currentItems);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const currentFirstItem = this.virtualizedItems[0];
|
|
142
|
+
const currentLastItem = this.virtualizedItems[this.virtualizedItems.length - 1];
|
|
143
|
+
const prevStartIndex = prevItems.findIndex((i) => this.isEqual(i, currentFirstItem));
|
|
144
|
+
const prevEndIndex = prevItems.findIndex((i) => this.isEqual(i, currentLastItem));
|
|
145
|
+
const isStartRemainedSame = currentItems[prevStartIndex]
|
|
146
|
+
? this.isEqual(currentItems[prevStartIndex], currentFirstItem)
|
|
147
|
+
: false;
|
|
148
|
+
const isEndRemainedSame = currentItems[prevEndIndex]
|
|
149
|
+
? this.isEqual(currentItems[prevEndIndex], currentLastItem)
|
|
150
|
+
: false;
|
|
151
|
+
const hasNewItemsBottom = prevEndIndex === prevItems.length - 1 && isEndRemainedSame
|
|
152
|
+
? prevItems.length !== currentItems.length
|
|
153
|
+
: false;
|
|
154
|
+
if (isStartRemainedSame && isEndRemainedSame) {
|
|
155
|
+
const endIndex = hasNewItemsBottom ? undefined : prevEndIndex + 1;
|
|
156
|
+
this.virtualizedItemsSubject.next(currentItems.slice(prevStartIndex, endIndex));
|
|
157
|
+
}
|
|
158
|
+
let currentStartIndex = isStartRemainedSame ? prevStartIndex : -1;
|
|
159
|
+
let currentEndIndex = isEndRemainedSame ? prevEndIndex : -1;
|
|
160
|
+
if (!isStartRemainedSame) {
|
|
161
|
+
currentStartIndex = currentItems.findIndex((i) => this.isEqual(i, currentFirstItem));
|
|
162
|
+
}
|
|
163
|
+
if (!isEndRemainedSame) {
|
|
164
|
+
currentEndIndex = currentItems.findIndex((i) => this.isEqual(i, currentLastItem));
|
|
165
|
+
}
|
|
166
|
+
const hasNewItemsTop = prevStartIndex === 0 && !isStartRemainedSame
|
|
167
|
+
? currentStartIndex !== 0
|
|
168
|
+
: false;
|
|
169
|
+
if (currentStartIndex !== -1 && currentEndIndex !== -1) {
|
|
170
|
+
const startIndex = hasNewItemsTop ? 0 : currentStartIndex;
|
|
171
|
+
this.virtualizedItemsSubject.next(currentItems.slice(startIndex, currentEndIndex + 1));
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
if (currentStartIndex === -1 && currentEndIndex !== -1) {
|
|
175
|
+
currentStartIndex = Math.max(0, currentEndIndex - (prevEndIndex - prevStartIndex));
|
|
176
|
+
}
|
|
177
|
+
if (currentEndIndex === -1 && currentStartIndex !== -1) {
|
|
178
|
+
currentEndIndex = Math.min(currentItems.length - 1, currentStartIndex + (prevEndIndex - prevStartIndex));
|
|
179
|
+
}
|
|
180
|
+
this.virtualizedItemsSubject.next(currentItems.slice(currentStartIndex, currentEndIndex + 1));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}));
|
|
184
|
+
if (this.jumpToItem$) {
|
|
185
|
+
this.subscriptions.push(this.jumpToItem$
|
|
186
|
+
.pipe(switchMap((jumpToItem) => combineLatest([this.allItems$.pipe(take(1)), of(jumpToItem)])))
|
|
187
|
+
.subscribe(([allItems, jumpToItem]) => {
|
|
188
|
+
if (jumpToItem.item) {
|
|
189
|
+
if (allItems.length < this.maxItemCount) {
|
|
190
|
+
this.virtualizedItemsSubject.next(allItems);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
const itemIndex = allItems.findIndex((i) =>
|
|
194
|
+
// @ts-expect-error TODO: do we know a better typing here?
|
|
195
|
+
this.isEqual(i, jumpToItem.item));
|
|
196
|
+
if (itemIndex === -1) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const position = jumpToItem.position || 'middle';
|
|
201
|
+
const numberOfItemsToRemove = allItems.length - Math.round(this.maxItemCount / 2);
|
|
202
|
+
const numberOfItemsAfterRemove = allItems.length - numberOfItemsToRemove;
|
|
203
|
+
let startIndex = -1;
|
|
204
|
+
let endIndex = -1;
|
|
205
|
+
switch (position) {
|
|
206
|
+
case 'top':
|
|
207
|
+
startIndex = itemIndex;
|
|
208
|
+
endIndex = Math.min(allItems.length, startIndex + numberOfItemsAfterRemove);
|
|
209
|
+
break;
|
|
210
|
+
case 'bottom':
|
|
211
|
+
endIndex = itemIndex + 1;
|
|
212
|
+
startIndex = Math.max(0, endIndex - numberOfItemsAfterRemove);
|
|
213
|
+
break;
|
|
214
|
+
case 'middle': {
|
|
215
|
+
const itemsOnTop = itemIndex;
|
|
216
|
+
const itemsOnBottom = allItems.length - itemIndex;
|
|
217
|
+
if (itemsOnTop < Math.ceil(numberOfItemsAfterRemove / 2)) {
|
|
218
|
+
startIndex = 0;
|
|
219
|
+
}
|
|
220
|
+
if (itemsOnBottom <
|
|
221
|
+
Math.floor(numberOfItemsAfterRemove / 2) + 1) {
|
|
222
|
+
endIndex = allItems.length;
|
|
223
|
+
}
|
|
224
|
+
if (startIndex === -1) {
|
|
225
|
+
if (endIndex !== -1) {
|
|
226
|
+
startIndex = endIndex - numberOfItemsAfterRemove;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
startIndex =
|
|
230
|
+
itemIndex - Math.ceil(numberOfItemsAfterRemove / 2);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (endIndex === -1) {
|
|
234
|
+
endIndex = startIndex + numberOfItemsAfterRemove;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
this.virtualizedItemsSubject.next(allItems.slice(startIndex, endIndex));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* The current value of virtualized items
|
|
247
|
+
*/
|
|
248
|
+
get virtualizedItems() {
|
|
249
|
+
return this.virtualizedItemsSubject.getValue();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Remove all subscriptions, call this once you're done using an instance of this service
|
|
253
|
+
*/
|
|
254
|
+
dispose() {
|
|
255
|
+
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
256
|
+
}
|
|
257
|
+
loadMoreFromBuffer(_) {
|
|
258
|
+
this.loadFromBuffer$.next();
|
|
259
|
+
}
|
|
260
|
+
async loadMore(direction) {
|
|
261
|
+
this.queryStateSubject.next({ state: `loading-${direction}` });
|
|
262
|
+
try {
|
|
263
|
+
await this.query(direction);
|
|
264
|
+
this.queryStateSubject.next({ state: 'success' });
|
|
265
|
+
}
|
|
266
|
+
catch (e) {
|
|
267
|
+
this.queryStateSubject.next({ state: 'error', error: e });
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbGl6ZWQtbGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZpcnR1YWxpemVkLWxpc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFFUCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixLQUFLLEVBQ0wsRUFBRSxFQUNGLFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBUWQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFrQjFDLFlBQ1UsU0FBMEIsRUFDMUIsZUFBMEQsRUFDbEQsV0FHZCxFQUNjLFdBQVcsRUFBRSxFQUNiLGVBQWUsUUFBUSxHQUFHLENBQUM7UUFQbkMsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQTJDO1FBQ2xELGdCQUFXLEdBQVgsV0FBVyxDQUd6QjtRQUNjLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQWpCbkMsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTRCO1lBQzNFLEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQUMsQ0FBQztRQUNPLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN4Qyw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUN2RCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFZekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsV0FBVyxH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Qyx1QkFBdUIsQ0FBQyxJQUFJLENBQy9CLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUNyQyxDQUFDO3lCQUNIO3FCQUNGO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsa0JBQWtCLENBQUMsQ0FBZ0M7UUFDM0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUF3QztRQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ25EO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7Q0FPRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtZXJnZSxcbiAgb2YsXG4gIHBhaXJ3aXNlLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgVmlydHVhbGl6ZWRMaXN0UXVlcnlEaXJlY3Rpb24sXG4gIFZpcnR1YWxpemVkTGlzdFF1ZXJ5U3RhdGUsXG4gIFZpcnR1YWxpemVkTGlzdFNjcm9sbFBvc2l0aW9uLFxuICBWaXJ0dWFsaXplZExpc3RWZXJ0aWNhbEl0ZW1Qb3NpdGlvbixcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGBWaXJ0dWFsaXplZExpc3RTZXJ2aWNlYCByZW1vdmVzIGl0ZW1zIGZyb20gYSBsaXN0IHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgZGlzcGxheWVkLiBUaGlzIGlzIGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiBob3cgaXQgd29ya3M6XG4gKiAtIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmb3IgZWFjaCBsaXN0IHRoYXQgbmVlZHMgdmlydHVhbGl6YXRpb25cbiAqIC0gSW5wdXQ6IFByb3ZpZGUgYSByZWFjdGl2ZSBzdHJlYW0gdGhhdCBlbWl0cyBhbGwgaXRlbXMgaW4gdGhlIGxpc3RcbiAqIC0gSW5wdXQ6IFByb3ZpZGUgYSByZWFjdGl2ZSBzdHJlYW0gdGhhdCBlbWl0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiAodG9wLCBtaWRkbGUgb3IgYm90dG9tKVxuICogLSBJbnB1dDogbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgbGlzdCAoaW4gcHJhY3RpY2UgdGhlIHNlcnZpY2UgY2FuIG1ha2UgdGhlIHZpcnR1YWxpemVkIGxpc3QgaGFsZiB0aGlzIG51bWJlciwgeW91IHNob3VsZCB0YWtlIHRoaXMgaW50byBhY2NvdW50IHdoZW4gY2hvb3NpbmcgdGhlIHZhbHVlKVxuICogLSBPdXRwdXQ6IFRoZSBzZXJ2aWNlIHdpbGwgZW1pdCB0aGUgY3VycmVudCBsaXN0IG9mIGRpc3BsYXllZCBpdGVtcyB2aWEgdGhlIHZpcnR1YWxpemVkIGl0ZW1zIHJlYWN0aXZlIHN0cmVhbVxuICogLSBGb3Igc2ltcGxpY2l0eSwgdGhlIHNlcnZpY2Ugd29uJ3QgdHJhY2sgdGhlIGhlaWdodCBvZiB0aGUgaXRlbXMsIG5vciBpdCBuZWVkcyBhbiBleGFjdCBzY3JvbGwgbG9jYXRpb24gLT4gdGhpcyBpcyBob3cgcmVtb3ZpbmcgaXRlbXMgd29yazpcbiAqICAgLSBJZiBzY3JvbGwgbG9jYXRpb24gaXMgYm90dG9tL3RvcCBpdGVtcyBhcm91bmQgdGhlIGN1cnJlbnQgYm90dG9tL3RvcCBpdGVtIHdpbGwgYmUgZW1pdHRlZCBpbiB0aGUgdmlydHVhbGl6ZWQgaXRlbXMgc3RyZWFtXG4gKiAgIC0gSWYgc2Nyb2xsIGxvY2F0aW9uIGlzIG1pZGRsZSwgdGhlIHNlcnZpY2Ugd29uJ3QgcmVtb3ZlIGl0ZW1zLCBpZiBuZXcgaXRlbXMgYXJlIHJlY2VpdmVkLCB0aG9zZSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSB2aXJ0dWFsaXplZCBsaXN0ICAodGhpcyBtZWFucyB0aGF0IGluIHRoZW9yeSB0aGUgbGlzdCBjYW4gZ3JvdyB2ZXJ5IGJpZyBpZiBhIGxvdCBvZiBuZXcgaXRlbXMgYXJlIHJlY2VpdmVkIHdoaWxlIHRoZSB1c2VyIGlzIHNjcm9sbGVkIHNvbWV3aGVyZSwgdGhpcyBpcyBhIHRyYWRlLW9mZiBmb3IgdGhlIHNpbXBsaWNpdHkgb2Ygbm8gaGVpZ2h0IHRyYWNraW5nKVxuICogICAtIFNpbmNlIHRoZXJlIGlzIG5vIGhlaWdodCB0cmFja2luZywgeW91IHNob3VsZCBtYWtlIHN1cmUgdG8gcHJvdmlkZSBhIG1heGltdW0gbnVtYmVyIHRoYXQgaXMgYmlnIGVub3VnaCB0byBmaWxsIHRoZSBiaWdnZXN0IGV4cGVjdGVkIHNjcmVlbiBzaXplIHR3aWNlXG4gKiAtIElmIHRoZSB1c2VyIHNjcm9sbHMgdG8gdGhlIGJvdHRvbS90b3AgYW5kIHRoZXJlIGFyZSBubyBtb3JlIGxvY2FsIGl0ZW1zIHRvIHNob3csIHRoZSBzZXJ2aWNlIHdpbGwgdHJpZ2dlciBhIHF1ZXJ5IHRvIGxvYWQgbW9yZSBpdGVtc1xuICogICAtIElucHV0OiB5b3Ugc2hvdWxkIHByb3ZpZGUgdGhlIHBhZ2Ugc2l6ZSB0byB1c2UsIGluIG9yZGVyIGZvciB0aGUgc2VydmljZSB0byBkZXRlcm1pbmUgaWYgbG9hZGluZyBpcyBuZWNlc3NhcnlcbiAqXG4gKiBUaGUgYFZpcnR1YWxpemVkTWVzc2FnZUxpc3RTZXJ2aWNlYCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG1lc3NhZ2UgbGlzdCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWaXJ0dWFsaXplZExpc3RTZXJ2aWNlPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBpdGVtcyB0aGF0IHNob3VsZCBiZSBjdXJyZW50bHkgZGlzcGxheWVkLCBhIHN1YnNldCBvZiBhbGwgaXRlbXNcbiAgICovXG4gIHZpcnR1YWxpemVkSXRlbXMkOiBPYnNlcnZhYmxlPFRbXT47XG4gIC8qKlxuICAgKiBUaGUgcmVzdWx0IG9mIHRoZSBsYXN0IHF1ZXJ5IHVzZWQgdG8gbG9hZCBtb3JlIGl0ZW1zXG4gICAqL1xuICBxdWVyeVN0YXRlJDogT2JzZXJ2YWJsZTxWaXJ0dWFsaXplZExpc3RRdWVyeVN0YXRlPjtcbiAgcHJvdGVjdGVkIHF1ZXJ5U3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWaXJ0dWFsaXplZExpc3RRdWVyeVN0YXRlPih7XG4gICAgc3RhdGU6ICdzdWNjZXNzJyxcbiAgfSk7XG4gIHByb3RlY3RlZCBidWZmZXJPblRvcCA9IDA7XG4gIHByb3RlY3RlZCBidWZmZXJPbkJvdHRvbSA9IDA7XG4gIHByb3RlY3RlZCBsb2FkRnJvbUJ1ZmZlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHZpcnR1YWxpemVkSXRlbXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxsSXRlbXMkOiBPYnNlcnZhYmxlPFRbXT4sXG4gICAgcHJpdmF0ZSBzY3JvbGxQb3NpdGlvbiQ6IE9ic2VydmFibGU8VmlydHVhbGl6ZWRMaXN0U2Nyb2xsUG9zaXRpb24+LFxuICAgIHB1YmxpYyByZWFkb25seSBqdW1wVG9JdGVtJD86IE9ic2VydmFibGU8e1xuICAgICAgaXRlbTogUGFydGlhbDxUPiB8IHVuZGVmaW5lZDtcbiAgICAgIHBvc2l0aW9uPzogVmlydHVhbGl6ZWRMaXN0VmVydGljYWxJdGVtUG9zaXRpb247XG4gICAgfT4sXG4gICAgcHVibGljIHJlYWRvbmx5IHBhZ2VTaXplID0gMjUsXG4gICAgcHVibGljIHJlYWRvbmx5IG1heEl0ZW1Db3VudCA9IHBhZ2VTaXplICogNFxuICApIHtcbiAgICB0aGlzLnZpcnR1YWxpemVkSXRlbXMkID0gdGhpcy52aXJ0dWFsaXplZEl0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnF1ZXJ5U3RhdGUkID0gdGhpcy5xdWVyeVN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudmlydHVhbGl6ZWRJdGVtcyQuc3Vic2NyaWJlKCh2aXJ0YWx1emVkSXRlbXMpID0+IHtcbiAgICAgICAgdGhpcy5hbGxJdGVtcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGFsbEl0ZW1zKSA9PiB7XG4gICAgICAgICAgaWYgKHZpcnRhbHV6ZWRJdGVtcy5sZW5ndGggPT09IGFsbEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXJPblRvcCA9IDA7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlck9uQm90dG9tID0gMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHZpcnRhbHV6ZWRJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyT25Ub3AgPSBhbGxJdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlck9uQm90dG9tID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idWZmZXJPblRvcCA9IGFsbEl0ZW1zLmluZGV4T2YodmlydGFsdXplZEl0ZW1zWzBdKTtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyT25Cb3R0b20gPVxuICAgICAgICAgICAgICBhbGxJdGVtcy5sZW5ndGggLVxuICAgICAgICAgICAgICBhbGxJdGVtcy5pbmRleE9mKHZpcnRhbHV6ZWRJdGVtc1t2aXJ0YWx1emVkSXRlbXMubGVuZ3RoIC0gMV0pIC1cbiAgICAgICAgICAgICAgMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgbWVyZ2UodGhpcy5hbGxJdGVtcyQsIHRoaXMubG9hZEZyb21CdWZmZXIkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICB0aGlzLmFsbEl0ZW1zJC5waXBlKHRha2UoMSkpLFxuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFBvc2l0aW9uJC5waXBlKHRha2UoMSkpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChbaXRlbXMsIHNjcm9sbFBvc2l0aW9uXSkgPT4ge1xuICAgICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA9PT0gJ21pZGRsZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gdGhpcy52aXJ0dWFsaXplZEl0ZW1zU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPD0gdGhpcy5tYXhJdGVtQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbGl6ZWRJdGVtc1N1YmplY3QubmV4dChpdGVtcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgICAgIGxldCBlbmRJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlck9mSXRlbXNUb1JlbW92ZSA9XG4gICAgICAgICAgICAgIGl0ZW1zLmxlbmd0aCAtIE1hdGgucm91bmQodGhpcy5tYXhJdGVtQ291bnQgLyAyKTtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlck9mSXRlbXNBZnRlclJlbW92ZSA9XG4gICAgICAgICAgICAgIGl0ZW1zLmxlbmd0aCAtIG51bWJlck9mSXRlbXNUb1JlbW92ZTtcbiAgICAgICAgICAgIHN3aXRjaCAoc2Nyb2xsUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXF1YWwoaSwgY3VycmVudEl0ZW1zWzBdKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChtaWRkbGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgbWlkZGxlSW5kZXggLSBNYXRoLmNlaWwobnVtYmVyT2ZJdGVtc0FmdGVyUmVtb3ZlIC8gMilcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgbnVtYmVyT2ZJdGVtc0FmdGVyUmVtb3ZlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG51bWJlck9mSXRlbXNBZnRlclJlbW92ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGVJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0VxdWFsKGksIGN1cnJlbnRJdGVtc1tjdXJyZW50SXRlbXMubGVuZ3RoIC0gMV0pXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKG1pZGRsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICBtaWRkbGVJbmRleCArIE1hdGguZmxvb3IobnVtYmVyT2ZJdGVtc0FmdGVyUmVtb3ZlIC8gMikgKyAxXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIG51bWJlck9mSXRlbXNBZnRlclJlbW92ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGl0ZW1zLmxlbmd0aCAtIG51bWJlck9mSXRlbXNBZnRlclJlbW92ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2aXJ0dWFsaXplZEl0ZW1zID0gaXRlbXMuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsaXplZEl0ZW1zU3ViamVjdC5uZXh0KHZpcnR1YWxpemVkSXRlbXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiRcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgocG9zaXRpb24pID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5U3RhdGVTdWJqZWN0LmdldFZhbHVlKCkuc3RhdGUgPT09IGBsb2FkaW5nLSR7cG9zaXRpb259YFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5idWZmZXJPblRvcCA8IHRoaXMucGFnZVNpemUpIHtcbiAgICAgICAgICAgICAgdm9pZCB0aGlzLmxvYWRNb3JlKHBvc2l0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubG9hZE1vcmVGcm9tQnVmZmVyKCd0b3AnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYnVmZmVyT25Cb3R0b20gPCB0aGlzLnBhZ2VTaXplKSB7XG4gICAgICAgICAgICAgIHZvaWQgdGhpcy5sb2FkTW9yZShwb3NpdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvYWRNb3JlRnJvbUJ1ZmZlcignYm90dG9tJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmFsbEl0ZW1zJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc2Nyb2xsUG9zaXRpb24hOiBWaXJ0dWFsaXplZExpc3RTY3JvbGxQb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsUG9zaXRpb24kXG4gICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHMpID0+IChzY3JvbGxQb3NpdGlvbiA9IHMpKTtcbiAgICAgICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiA9PT0gJ21pZGRsZSc7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChbcHJldkl0ZW1zLCBjdXJyZW50SXRlbXNdKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudEl0ZW1zLmxlbmd0aCA8IHRoaXMubWF4SXRlbUNvdW50IHx8XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxpemVkSXRlbXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxpemVkSXRlbXNTdWJqZWN0Lm5leHQoY3VycmVudEl0ZW1zKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEZpcnN0SXRlbSA9IHRoaXMudmlydHVhbGl6ZWRJdGVtc1swXTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMYXN0SXRlbSA9XG4gICAgICAgICAgICAgIHRoaXMudmlydHVhbGl6ZWRJdGVtc1t0aGlzLnZpcnR1YWxpemVkSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBwcmV2U3RhcnRJbmRleCA9IHByZXZJdGVtcy5maW5kSW5kZXgoKGkpID0+XG4gICAgICAgICAgICAgIHRoaXMuaXNFcXVhbChpLCBjdXJyZW50Rmlyc3RJdGVtKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZFbmRJbmRleCA9IHByZXZJdGVtcy5maW5kSW5kZXgoKGkpID0+XG4gICAgICAgICAgICAgIHRoaXMuaXNFcXVhbChpLCBjdXJyZW50TGFzdEl0ZW0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBpc1N0YXJ0UmVtYWluZWRTYW1lID0gY3VycmVudEl0ZW1zW3ByZXZTdGFydEluZGV4XVxuICAgICAgICAgICAgICA/IHRoaXMuaXNFcXVhbChjdXJyZW50SXRlbXNbcHJldlN0YXJ0SW5kZXhdLCBjdXJyZW50Rmlyc3RJdGVtKVxuICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgaXNFbmRSZW1haW5lZFNhbWUgPSBjdXJyZW50SXRlbXNbcHJldkVuZEluZGV4XVxuICAgICAgICAgICAgICA/IHRoaXMuaXNFcXVhbChjdXJyZW50SXRlbXNbcHJldkVuZEluZGV4XSwgY3VycmVudExhc3RJdGVtKVxuICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBoYXNOZXdJdGVtc0JvdHRvbSA9XG4gICAgICAgICAgICAgIHByZXZFbmRJbmRleCA9PT0gcHJldkl0ZW1zLmxlbmd0aCAtIDEgJiYgaXNFbmRSZW1haW5lZFNhbWVcbiAgICAgICAgICAgICAgICA/IHByZXZJdGVtcy5sZW5ndGggIT09IGN1cnJlbnRJdGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNTdGFydFJlbWFpbmVkU2FtZSAmJiBpc0VuZFJlbWFpbmVkU2FtZSkge1xuICAgICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IGhhc05ld0l0ZW1zQm90dG9tID8gdW5kZWZpbmVkIDogcHJldkVuZEluZGV4ICsgMTtcbiAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsaXplZEl0ZW1zU3ViamVjdC5uZXh0KFxuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtcy5zbGljZShwcmV2U3RhcnRJbmRleCwgZW5kSW5kZXgpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RhcnRJbmRleCA9IGlzU3RhcnRSZW1haW5lZFNhbWUgPyBwcmV2U3RhcnRJbmRleCA6IC0xO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRFbmRJbmRleCA9IGlzRW5kUmVtYWluZWRTYW1lID8gcHJldkVuZEluZGV4IDogLTE7XG5cbiAgICAgICAgICAgIGlmICghaXNTdGFydFJlbWFpbmVkU2FtZSkge1xuICAgICAgICAgICAgICBjdXJyZW50U3RhcnRJbmRleCA9IGN1cnJlbnRJdGVtcy5maW5kSW5kZXgoKGkpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5pc0VxdWFsKGksIGN1cnJlbnRGaXJzdEl0ZW0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzRW5kUmVtYWluZWRTYW1lKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRFbmRJbmRleCA9IGN1cnJlbnRJdGVtcy5maW5kSW5kZXgoKGkpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5pc0VxdWFsKGksIGN1cnJlbnRMYXN0SXRlbSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaGFzTmV3SXRlbXNUb3AgPVxuICAgICAgICAgICAgICBwcmV2U3RhcnRJbmRleCA9PT0gMCAmJiAhaXNTdGFydFJlbWFpbmVkU2FtZVxuICAgICAgICAgICAgICAgID8gY3VycmVudFN0YXJ0SW5kZXggIT09IDBcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFN0YXJ0SW5kZXggIT09IC0xICYmIGN1cnJlbnRFbmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGhhc05ld0l0ZW1zVG9wID8gMCA6IGN1cnJlbnRTdGFydEluZGV4O1xuICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxpemVkSXRlbXNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgY3VycmVudEl0ZW1zLnNsaWNlKHN0YXJ0SW5kZXgsIGN1cnJlbnRFbmRJbmRleCArIDEpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoY3VycmVudFN0YXJ0SW5kZXggPT09IC0xICYmIGN1cnJlbnRFbmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RhcnRJbmRleCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbmRJbmRleCAtIChwcmV2RW5kSW5kZXggLSBwcmV2U3RhcnRJbmRleClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmRJbmRleCA9PT0gLTEgJiYgY3VycmVudFN0YXJ0SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEVuZEluZGV4ID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICBjdXJyZW50SXRlbXMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGFydEluZGV4ICsgKHByZXZFbmRJbmRleCAtIHByZXZTdGFydEluZGV4KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxpemVkSXRlbXNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgY3VycmVudEl0ZW1zLnNsaWNlKGN1cnJlbnRTdGFydEluZGV4LCBjdXJyZW50RW5kSW5kZXggKyAxKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICAgIGlmICh0aGlzLmp1bXBUb0l0ZW0kKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5qdW1wVG9JdGVtJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChqdW1wVG9JdGVtKSA9PlxuICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmFsbEl0ZW1zJC5waXBlKHRha2UoMSkpLCBvZihqdW1wVG9JdGVtKV0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKFthbGxJdGVtcywganVtcFRvSXRlbV0pID0+IHtcbiAgICAgICAgICAgIGlmIChqdW1wVG9JdGVtLml0ZW0pIHtcbiAgICAgICAgICAgICAgaWYgKGFsbEl0ZW1zLmxlbmd0aCA8IHRoaXMubWF4SXRlbUNvdW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsaXplZEl0ZW1zU3ViamVjdC5uZXh0KGFsbEl0ZW1zKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBhbGxJdGVtcy5maW5kSW5kZXgoKGkpID0+XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IGRvIHdlIGtub3cgYSBiZXR0ZXIgdHlwaW5nIGhlcmU/XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzRXF1YWwoaSwganVtcFRvSXRlbS5pdGVtKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBqdW1wVG9JdGVtLnBvc2l0aW9uIHx8ICdtaWRkbGUnO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZJdGVtc1RvUmVtb3ZlID1cbiAgICAgICAgICAgICAgICAgICAgYWxsSXRlbXMubGVuZ3RoIC0gTWF0aC5yb3VuZCh0aGlzLm1heEl0ZW1Db3VudCAvIDIpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZJdGVtc0FmdGVyUmVtb3ZlID1cbiAgICAgICAgICAgICAgICAgICAgYWxsSXRlbXMubGVuZ3RoIC0gbnVtYmVyT2ZJdGVtc1RvUmVtb3ZlO1xuICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgIGxldCBlbmRJbmRleCA9IC0xO1xuXG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGl0ZW1JbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCArIG51bWJlck9mSXRlbXNBZnRlclJlbW92ZVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpdGVtSW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCAtIG51bWJlck9mSXRlbXNBZnRlclJlbW92ZVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtc09uVG9wID0gaXRlbUluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zT25Cb3R0b20gPSBhbGxJdGVtcy5sZW5ndGggLSBpdGVtSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNPblRvcCA8IE1hdGguY2VpbChudW1iZXJPZkl0ZW1zQWZ0ZXJSZW1vdmUgLyAyKVxuICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zT25Cb3R0b20gPFxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihudW1iZXJPZkl0ZW1zQWZ0ZXJSZW1vdmUgLyAyKSArIDFcbiAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gYWxsSXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gZW5kSW5kZXggLSBudW1iZXJPZkl0ZW1zQWZ0ZXJSZW1vdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtSW5kZXggLSBNYXRoLmNlaWwobnVtYmVyT2ZJdGVtc0FmdGVyUmVtb3ZlIC8gMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgbnVtYmVyT2ZJdGVtc0FmdGVyUmVtb3ZlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxpemVkSXRlbXNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgICAgIGFsbEl0ZW1zLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdmFsdWUgb2YgdmlydHVhbGl6ZWQgaXRlbXNcbiAgICovXG4gIGdldCB2aXJ0dWFsaXplZEl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLnZpcnR1YWxpemVkSXRlbXNTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFsbCBzdWJzY3JpcHRpb25zLCBjYWxsIHRoaXMgb25jZSB5b3UncmUgZG9uZSB1c2luZyBhbiBpbnN0YW5jZSBvZiB0aGlzIHNlcnZpY2VcbiAgICovXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbG9hZE1vcmVGcm9tQnVmZmVyKF86IFZpcnR1YWxpemVkTGlzdFF1ZXJ5RGlyZWN0aW9uKSB7XG4gICAgdGhpcy5sb2FkRnJvbUJ1ZmZlciQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTW9yZShkaXJlY3Rpb246IFZpcnR1YWxpemVkTGlzdFF1ZXJ5RGlyZWN0aW9uKSB7XG4gICAgdGhpcy5xdWVyeVN0YXRlU3ViamVjdC5uZXh0KHsgc3RhdGU6IGBsb2FkaW5nLSR7ZGlyZWN0aW9ufWAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMucXVlcnlTdGF0ZVN1YmplY3QubmV4dCh7IHN0YXRlOiAnc3VjY2VzcycgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5xdWVyeVN0YXRlU3ViamVjdC5uZXh0KHsgc3RhdGU6ICdlcnJvcicsIGVycm9yOiBlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc0VxdWFsOiAodDE6IFQsIHQyOiBUKSA9PiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBxdWVyeTogKFxuICAgIGRpcmVjdGlvbjogVmlydHVhbGl6ZWRMaXN0UXVlcnlEaXJlY3Rpb25cbiAgKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuIl19
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
import { VirtualizedListService } from './virtualized-list.service';
|
|
3
|
+
/**
|
|
4
|
+
* The `VirtualizedMessageListService` removes messages from the message list that are currently not in view
|
|
5
|
+
*/
|
|
6
|
+
export class VirtualizedMessageListService extends VirtualizedListService {
|
|
7
|
+
constructor(mode, scrollPosition$, channelService) {
|
|
8
|
+
const jumpToMessage$ = channelService.jumpToMessage$.pipe(map((jumpToMessage) => {
|
|
9
|
+
let result = {
|
|
10
|
+
item: undefined,
|
|
11
|
+
};
|
|
12
|
+
let targetMessageId;
|
|
13
|
+
if (mode === 'main') {
|
|
14
|
+
targetMessageId = jumpToMessage.parentId
|
|
15
|
+
? jumpToMessage.parentId
|
|
16
|
+
: jumpToMessage.id;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
targetMessageId = jumpToMessage.parentId
|
|
20
|
+
? jumpToMessage.id
|
|
21
|
+
: undefined;
|
|
22
|
+
}
|
|
23
|
+
if (targetMessageId) {
|
|
24
|
+
const messages = mode === 'main'
|
|
25
|
+
? channelService.activeChannelMessages
|
|
26
|
+
: channelService.activeChannelThreadReplies;
|
|
27
|
+
const id = targetMessageId === 'latest'
|
|
28
|
+
? messages[messages.length - 1]?.id
|
|
29
|
+
: targetMessageId;
|
|
30
|
+
if (id) {
|
|
31
|
+
result = {
|
|
32
|
+
item: { id },
|
|
33
|
+
position: jumpToMessage.id === 'latest' ? 'bottom' : 'middle',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
channelService.clearMessageJump();
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}));
|
|
40
|
+
const messages$ = mode === 'main'
|
|
41
|
+
? channelService.activeChannelMessages$
|
|
42
|
+
: channelService.activeThreadMessages$;
|
|
43
|
+
super(messages$, scrollPosition$, jumpToMessage$, channelService.messagePageSize);
|
|
44
|
+
this.mode = mode;
|
|
45
|
+
this.channelService = channelService;
|
|
46
|
+
this.isEqual = (t1, t2) => t1.id === t2.id;
|
|
47
|
+
this.query = (direction) => {
|
|
48
|
+
const request = this.mode === 'main'
|
|
49
|
+
? (direction) => this.channelService.loadMoreMessages(direction)
|
|
50
|
+
: (direction) => this.channelService.loadMoreThreadReplies(direction);
|
|
51
|
+
const result = request(direction === 'top' ? 'older' : 'newer');
|
|
52
|
+
if (result) {
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.queryStateSubject.next({ state: 'success' });
|
|
57
|
+
if ((direction === 'top' && this.bufferOnTop > 0) ||
|
|
58
|
+
(direction === 'bottom' && this.bufferOnBottom > 0)) {
|
|
59
|
+
this.loadFromBuffer$.next();
|
|
60
|
+
}
|
|
61
|
+
return Promise.resolve();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
loadMoreFromBuffer(direction) {
|
|
66
|
+
this.queryStateSubject.next({ state: `loading-${direction}` });
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
this.loadFromBuffer$.next();
|
|
69
|
+
this.queryStateSubject.next({ state: 'success' });
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbGl6ZWQtbWVzc2FnZS1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdmlydHVhbGl6ZWQtbWVzc2FnZS1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRTs7R0FFRztBQUNILE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxzQkFBcUM7SUFDdEYsWUFDa0IsSUFBdUIsRUFDdkMsZUFBMEQsRUFDbEQsY0FBOEI7UUFFdEMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FNRCxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ2xCLElBQUksTUFBTSxHQUdOO2dCQUNGLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUM7WUFDRixJQUFJLGVBQW1DLENBQUM7WUFDeEMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNuQixlQUFlLEdBQUcsYUFBYSxDQUFDLFFBQVE7b0JBQ3RDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUTtvQkFDeEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7YUFDdEI7aUJBQU07Z0JBQ0wsZUFBZSxHQUFHLGFBQWEsQ0FBQyxRQUFRO29CQUN0QyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQ2xCLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDZjtZQUVELElBQUksZUFBZSxFQUFFO2dCQUNuQixNQUFNLFFBQVEsR0FDWixJQUFJLEtBQUssTUFBTTtvQkFDYixDQUFDLENBQUMsY0FBYyxDQUFDLHFCQUFxQjtvQkFDdEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztnQkFDaEQsTUFBTSxFQUFFLEdBQ04sZUFBZSxLQUFLLFFBQVE7b0JBQzFCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNuQyxDQUFDLENBQUMsZUFBZSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsRUFBRTtvQkFDTixNQUFNLEdBQUc7d0JBQ1AsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFO3dCQUNaLFFBQVEsRUFBRSxhQUFhLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO3FCQUM5RCxDQUFDO2lCQUNIO2dCQUNELGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ25DO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUNiLElBQUksS0FBSyxNQUFNO1lBQ2IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0I7WUFDdkMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztRQUMzQyxLQUFLLENBQ0gsU0FBUyxFQUNULGVBQWUsRUFDZixjQUFjLEVBQ2QsY0FBYyxDQUFDLGVBQWUsQ0FDL0IsQ0FBQztRQTNEYyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUUvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFvRTlCLFlBQU8sR0FBRyxDQUFDLEVBQWlCLEVBQUUsRUFBaUIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRXBFLFVBQUssR0FBRyxDQUFDLFNBQXdDLEVBQUUsRUFBRTtZQUM3RCxNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDLFNBQTRCLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUMsU0FBNEIsRUFBRSxFQUFFLENBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEUsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxNQUFNLENBQUM7YUFDZjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELElBQ0UsQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO29CQUM3QyxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFDbkQ7b0JBQ0EsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDN0I7Z0JBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUM7SUFoQ0YsQ0FBQztJQUVTLGtCQUFrQixDQUFDLFNBQXdDO1FBQ25FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQXlCRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVmlydHVhbGl6ZWRMaXN0UXVlcnlEaXJlY3Rpb24sXG4gIFZpcnR1YWxpemVkTGlzdFNjcm9sbFBvc2l0aW9uLFxuICBTdHJlYW1NZXNzYWdlLFxuICBWaXJ0dWFsaXplZExpc3RWZXJ0aWNhbEl0ZW1Qb3NpdGlvbixcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZpcnR1YWxpemVkTGlzdFNlcnZpY2UgfSBmcm9tICcuL3ZpcnR1YWxpemVkLWxpc3Quc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBWaXJ0dWFsaXplZE1lc3NhZ2VMaXN0U2VydmljZWAgcmVtb3ZlcyBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIGxpc3QgdGhhdCBhcmUgY3VycmVudGx5IG5vdCBpbiB2aWV3XG4gKi9cbmV4cG9ydCBjbGFzcyBWaXJ0dWFsaXplZE1lc3NhZ2VMaXN0U2VydmljZSBleHRlbmRzIFZpcnR1YWxpemVkTGlzdFNlcnZpY2U8U3RyZWFtTWVzc2FnZT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicsXG4gICAgc2Nyb2xsUG9zaXRpb24kOiBPYnNlcnZhYmxlPFZpcnR1YWxpemVkTGlzdFNjcm9sbFBvc2l0aW9uPixcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZVxuICApIHtcbiAgICBjb25zdCBqdW1wVG9NZXNzYWdlJCA9IGNoYW5uZWxTZXJ2aWNlLmp1bXBUb01lc3NhZ2UkLnBpcGUoXG4gICAgICBtYXA8XG4gICAgICAgIHsgaWQ/OiBzdHJpbmc7IHBhcmVudElkPzogc3RyaW5nIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtOiBQYXJ0aWFsPFN0cmVhbU1lc3NhZ2U+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgIHBvc2l0aW9uPzogVmlydHVhbGl6ZWRMaXN0VmVydGljYWxJdGVtUG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgID4oKGp1bXBUb01lc3NhZ2UpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDoge1xuICAgICAgICAgIGl0ZW06IFBhcnRpYWw8U3RyZWFtTWVzc2FnZT4gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgcG9zaXRpb24/OiBWaXJ0dWFsaXplZExpc3RWZXJ0aWNhbEl0ZW1Qb3NpdGlvbjtcbiAgICAgICAgfSA9IHtcbiAgICAgICAgICBpdGVtOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIGxldCB0YXJnZXRNZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG1vZGUgPT09ICdtYWluJykge1xuICAgICAgICAgIHRhcmdldE1lc3NhZ2VJZCA9IGp1bXBUb01lc3NhZ2UucGFyZW50SWRcbiAgICAgICAgICAgID8ganVtcFRvTWVzc2FnZS5wYXJlbnRJZFxuICAgICAgICAgICAgOiBqdW1wVG9NZXNzYWdlLmlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldE1lc3NhZ2VJZCA9IGp1bXBUb01lc3NhZ2UucGFyZW50SWRcbiAgICAgICAgICAgID8ganVtcFRvTWVzc2FnZS5pZFxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0TWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZXMgPVxuICAgICAgICAgICAgbW9kZSA9PT0gJ21haW4nXG4gICAgICAgICAgICAgID8gY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzXG4gICAgICAgICAgICAgIDogY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbFRocmVhZFJlcGxpZXM7XG4gICAgICAgICAgY29uc3QgaWQgPVxuICAgICAgICAgICAgdGFyZ2V0TWVzc2FnZUlkID09PSAnbGF0ZXN0J1xuICAgICAgICAgICAgICA/IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdPy5pZFxuICAgICAgICAgICAgICA6IHRhcmdldE1lc3NhZ2VJZDtcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgaXRlbTogeyBpZCB9LFxuICAgICAgICAgICAgICBwb3NpdGlvbjoganVtcFRvTWVzc2FnZS5pZCA9PT0gJ2xhdGVzdCcgPyAnYm90dG9tJyA6ICdtaWRkbGUnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hhbm5lbFNlcnZpY2UuY2xlYXJNZXNzYWdlSnVtcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBjb25zdCBtZXNzYWdlcyQgPVxuICAgICAgbW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzJFxuICAgICAgICA6IGNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVRocmVhZE1lc3NhZ2VzJDtcbiAgICBzdXBlcihcbiAgICAgIG1lc3NhZ2VzJCxcbiAgICAgIHNjcm9sbFBvc2l0aW9uJCxcbiAgICAgIGp1bXBUb01lc3NhZ2UkLFxuICAgICAgY2hhbm5lbFNlcnZpY2UubWVzc2FnZVBhZ2VTaXplXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2FkTW9yZUZyb21CdWZmZXIoZGlyZWN0aW9uOiBWaXJ0dWFsaXplZExpc3RRdWVyeURpcmVjdGlvbik6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTdGF0ZVN1YmplY3QubmV4dCh7IHN0YXRlOiBgbG9hZGluZy0ke2RpcmVjdGlvbn1gIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkRnJvbUJ1ZmZlciQubmV4dCgpO1xuICAgICAgdGhpcy5xdWVyeVN0YXRlU3ViamVjdC5uZXh0KHsgc3RhdGU6ICdzdWNjZXNzJyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0VxdWFsID0gKHQxOiBTdHJlYW1NZXNzYWdlLCB0MjogU3RyZWFtTWVzc2FnZSkgPT4gdDEuaWQgPT09IHQyLmlkO1xuXG4gIHByb3RlY3RlZCBxdWVyeSA9IChkaXJlY3Rpb246IFZpcnR1YWxpemVkTGlzdFF1ZXJ5RGlyZWN0aW9uKSA9PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9XG4gICAgICB0aGlzLm1vZGUgPT09ICdtYWluJ1xuICAgICAgICA/IChkaXJlY3Rpb246ICdvbGRlcicgfCAnbmV3ZXInKSA9PlxuICAgICAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZU1lc3NhZ2VzKGRpcmVjdGlvbilcbiAgICAgICAgOiAoZGlyZWN0aW9uOiAnb2xkZXInIHwgJ25ld2VyJykgPT5cbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UubG9hZE1vcmVUaHJlYWRSZXBsaWVzKGRpcmVjdGlvbik7XG4gICAgY29uc3QgcmVzdWx0ID0gcmVxdWVzdChkaXJlY3Rpb24gPT09ICd0b3AnID8gJ29sZGVyJyA6ICduZXdlcicpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnlTdGF0ZVN1YmplY3QubmV4dCh7IHN0YXRlOiAnc3VjY2VzcycgfSk7XG4gICAgICBpZiAoXG4gICAgICAgIChkaXJlY3Rpb24gPT09ICd0b3AnICYmIHRoaXMuYnVmZmVyT25Ub3AgPiAwKSB8fFxuICAgICAgICAoZGlyZWN0aW9uID09PSAnYm90dG9tJyAmJiB0aGlzLmJ1ZmZlck9uQm90dG9tID4gMClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvYWRGcm9tQnVmZmVyJC5uZXh0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -51,7 +51,7 @@ export class VoiceRecordingComponent {
|
|
|
51
51
|
: this.audioElement.nativeElement.pause();
|
|
52
52
|
this.isError = false;
|
|
53
53
|
}
|
|
54
|
-
catch (
|
|
54
|
+
catch (error) {
|
|
55
55
|
this.isError = true;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
99
99
|
type: ViewChild,
|
|
100
100
|
args: ['audioElement']
|
|
101
101
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7Ozs7OztBQUV2Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFhbEMsWUFBb0IsTUFBYyxFQUFVLEtBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQVJwRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRXRCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBS2QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDdEQsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUMxQixDQUFDO1NBQ0g7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QUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxHQUFHLGNBQWMsR0FBRyxPQUFPLElBQUksY0FBYyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRWhGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRSxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxLQUFLLFNBQVM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssSUFBSSxFQUNuQztZQUNBLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUFlO1FBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7b0hBcEdVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHVPQ3ZCcEMseThHQTRHQTsyRkRyRmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHdCQUF3Qjs2SEFRekIsVUFBVTtzQkFBbEIsS0FBSztnQkFPRSxZQUFZO3NCQURuQixTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBwcmV0dHlieXRlcyBmcm9tICdwcmV0dHktYnl0ZXMnO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gYXR0YWNobWVudCB3aXRoIHR5cGUgYHZvaWNlUmVjb3JkaW5nYC4gVGhlIGNvbXBvbmVudCBhbGxvd3MgcGxheWluZyB0aGUgYXR0YWNobWVudCBpbnNpZGUgdGhlIGJyb3dzZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS12b2ljZS1yZWNvcmRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGhlIHZvaWNlIHJlY29yZGluZyBhdHRhY2htZW50XG4gICAqL1xuICBASW5wdXQoKSBhdHRhY2htZW50PzogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgZmlsZVNpemU6IHN0cmluZyA9ICcnO1xuICBzZWNvbmRzRWxhcHNlZEZvcm1hdHRlZDogc3RyaW5nO1xuICBkdXJhdGlvbkZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG4gIHNlY29uZHNFbGFwc2VkID0gMDtcbiAgaXNFcnJvciA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhdWRpb0VsZW1lbnQnKVxuICBwcml2YXRlIGF1ZGlvRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEF1ZGlvRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLnNlY29uZHNFbGFwc2VkRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmF0dGFjaG1lbnQpIHtcbiAgICAgIHRoaXMuZmlsZVNpemUgPSB0aGlzLmdldEZpbGVTaXplKCk7XG4gICAgICB0aGlzLmR1cmF0aW9uRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgICAgdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGltZXVwZGF0ZSBmaXJlZCBmcmVxdW50bHkgc28gd2Ugb3B0aW1pemUgY2hhbmdlIGRldGVjdGlvbnNcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWNvbmRzRWxhcHNlZCA9IHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5lbmRlZFxuICAgICAgICAgID8gdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvbiB8fCAwXG4gICAgICAgICAgOiBNYXRoLnJvdW5kKHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKTtcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kc0VsYXBzZWQgIT09IHNlY29uZHNFbGFwc2VkKSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWQgPSBzZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRGb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZER1cmF0aW9uKFxuICAgICAgICAgICAgICB0aGlzLnNlY29uZHNFbGFwc2VkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGxheSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9FbGVtZW50IHx8ICF0aGlzLmF0dGFjaG1lbnQ/LmFzc2V0X3VybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQucGF1c2VkXG4gICAgICAgID8gYXdhaXQgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KClcbiAgICAgICAgOiB0aGlzLmF1ZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmlzRXJyb3IgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNldFBsYXliYWNrUmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBwbGF5YmFja1JhdGUgPSB0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudD8ucGxheWJhY2tSYXRlICsgMC41O1xuICAgIGlmIChwbGF5YmFja1JhdGUgPiAyKSB7XG4gICAgICBwbGF5YmFja1JhdGUgPSAxO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBsYXliYWNrUmF0ZSA9IHBsYXliYWNrUmF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybWF0dGVkRHVyYXRpb24oZHVyYXRpb24/OiBudW1iZXIpIHtcbiAgICBpZiAoZHVyYXRpb24gPT09IHVuZGVmaW5lZCB8fCBkdXJhdGlvbiA8PSAwKSByZXR1cm4gJzAwOjAwJztcblxuICAgIGNvbnN0IFtob3VycywgaG91cnNMZWZ0b3Zlcl0gPSB0aGlzLmRpdk1vZChkdXJhdGlvbiwgMzYwMCk7XG4gICAgY29uc3QgW21pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy5kaXZNb2QoaG91cnNMZWZ0b3ZlciwgNjApO1xuICAgIGNvbnN0IHJvdW5kZWRTZWNvbmRzID0gTWF0aC5jZWlsKHNlY29uZHMpO1xuXG4gICAgY29uc3QgcHJlcGVuZEhyc1plcm8gPSBob3Vycy50b1N0cmluZygpLmxlbmd0aCA9PT0gMSA/ICcwJyA6ICcnO1xuICAgIGNvbnN0IHByZXBlbmRNaW5aZXJvID0gbWludXRlcy50b1N0cmluZygpLmxlbmd0aCA9PT0gMSA/ICcwJyA6ICcnO1xuICAgIGNvbnN0IHByZXBlbmRTZWNaZXJvID0gcm91bmRlZFNlY29uZHMudG9TdHJpbmcoKS5sZW5ndGggPT09IDEgPyAnMCcgOiAnJztcbiAgICBjb25zdCBtaW5TZWMgPSBgJHtwcmVwZW5kTWluWmVyb30ke21pbnV0ZXN9OiR7cHJlcGVuZFNlY1plcm99JHtyb3VuZGVkU2Vjb25kc31gO1xuXG4gICAgcmV0dXJuIGhvdXJzID8gYCR7cHJlcGVuZEhyc1plcm99JHtob3Vyc306YCArIG1pblNlYyA6IG1pblNlYztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZVNpemUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hdHRhY2htZW50Py5maWxlX3NpemUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5hdHRhY2htZW50Py5maWxlX3NpemUgPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHByZXR0eWJ5dGVzKE51bWJlcih0aGlzLmF0dGFjaG1lbnQuZmlsZV9zaXplIHx8IDApKTtcbiAgfVxuXG4gIHByaXZhdGUgZGl2TW9kKG51bTogbnVtYmVyLCBkaXZpc29yOiBudW1iZXIpIHtcbiAgICByZXR1cm4gW01hdGguZmxvb3IobnVtIC8gZGl2aXNvciksIG51bSAlIGRpdmlzb3JdO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldFwiXG4gIGRhdGEtdGVzdGlkPVwidm9pY2UtcmVjb3JkaW5nLXdpZGdldFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0LS1lcnJvcl09XCJpc0Vycm9yXCJcbj5cbiAgPCEtLSBFbXB0eSBldmVudCBoYW5kbGVycyB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gLS0+XG4gIDxhdWRpb1xuICAgICNhdWRpb0VsZW1lbnRcbiAgICAocGxheSk9XCIobnVsbClcIlxuICAgIChwYXVzZSk9XCIobnVsbClcIlxuICAgIChlbmRlZCk9XCIobnVsbClcIlxuICAgIChlcnJvcik9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gICAgKGFib3J0KT1cImlzRXJyb3IgPSB0cnVlXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIGRhdGEtdGVzdGlkPVwiYXVkaW8tc291cmNlXCJcbiAgICAgIFtzcmNdPVwiYXR0YWNobWVudD8uYXNzZXRfdXJsXCJcbiAgICAgIFt0eXBlXT1cImF0dGFjaG1lbnQ/Lm1pbWVfdHlwZVwiXG4gICAgLz5cbiAgPC9hdWRpbz5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudC1hdWRpby13aWRnZXQtLXBsYXktYnV0dG9uXCJcbiAgICBkYXRhLXRlc3RpZD1cInBsYXktYnV0dG9uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlUGxheSgpXCJcbiAgPlxuICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgW2ljb25dPVwiYXVkaW9FbGVtZW50Py5wYXVzZWQgPyAncGxheScgOiAncGF1c2UnXCJcbiAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19tZXRhZGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50LXZvaWNlLXJlY29yZGluZy13aWRnZXQtLWZpcnN0LXJvd1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX3RpdGxlXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ2b2ljZS1yZWNvcmRpbmctdGl0bGVcIlxuICAgICAgICBbdGl0bGVdPVwiYXR0YWNobWVudD8udGl0bGVcIlxuICAgICAgPlxuICAgICAgICB7eyBhdHRhY2htZW50Py50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFcnJvcjsgZWxzZSBzdGF0ZVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX2Vycm9yLW1lc3NhZ2VcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJlcnJvclwiPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiPnt7XG4gICAgICAgICAgXCJzdHJlYW1DaGF0LkVycm9yIHBsYXlpbmcgYXVkaW9cIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fYXVkaW8tc3RhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fdGltZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiISFhdHRhY2htZW50Py5kdXJhdGlvbjsgZWxzZSBmaWxlU2l6ZVRlbXBsYXRlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZHVyYXRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIHNlY29uZHNFbGFwc2VkID4gMCB8fCAhYXVkaW9FbGVtZW50LnBhdXNlZFxuICAgICAgICAgICAgICAgID8gc2Vjb25kc0VsYXBzZWRGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgICA6IGR1cmF0aW9uRm9ybWF0dGVkXG4gICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbGVTaXplVGVtcGxhdGU+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnQtZmlsZS0taXRlbS1zaXplXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJmaWxlLXNpemUtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZmlsZVNpemUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHN0cmVhbS12b2ljZS1yZWNvcmRpbmctd2F2ZWJhclxuICAgICAgICAgICpuZ0lmPVwiYXR0YWNobWVudD8ud2F2ZWZvcm1fZGF0YSAmJiBhdHRhY2htZW50Py5kdXJhdGlvblwiXG4gICAgICAgICAgW3dhdmVGb3JtRGF0YV09XCJhdHRhY2htZW50Py53YXZlZm9ybV9kYXRhIHx8IFtdXCJcbiAgICAgICAgICBbZHVyYXRpb25dPVwiYXR0YWNobWVudD8uZHVyYXRpb25cIlxuICAgICAgICAgIFthdWRpb0VsZW1lbnRdPVwiYXVkaW9FbGVtZW50XCJcbiAgICAgICAgPjwvc3RyZWFtLXZvaWNlLXJlY29yZGluZy13YXZlYmFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX3JpZ2h0LXNlY3Rpb25cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhYXVkaW9FbGVtZW50Py5wYXVzZWQ7IGVsc2UgZmlsZUljb25cIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZV9hdHRhY2htZW50X19wbGF5YmFjay1yYXRlLWJ1dHRvblwiXG4gICAgICBkYXRhLXRlc3RpZD1cInBsYXliYWNrLXJhdGUtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzZXRQbGF5YmFja1JhdGUoKVwiXG4gICAgPlxuICAgICAge3sgYXVkaW9FbGVtZW50Py5wbGF5YmFja1JhdGUgfCBudW1iZXI6IFwiMS4xLTFcIiB9fXhcbiAgICA8L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI2ZpbGVJY29uPlxuICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F0dGFjaG1lbnQtdHlwZS1pY29uXCJcbiAgICAgICAgaWNvbj1cImF1ZGlvLWZpbGVcIlxuICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7Ozs7OztBQUV2Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFhbEMsWUFBb0IsTUFBYyxFQUFVLEtBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQVJwRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRXRCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBS2QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDdEQsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUMxQixDQUFDO1NBQ0g7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QUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxHQUFHLGNBQWMsR0FBRyxPQUFPLElBQUksY0FBYyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRWhGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRSxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxLQUFLLFNBQVM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssSUFBSSxFQUNuQztZQUNBLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUFlO1FBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7b0hBcEdVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHVPQ3ZCcEMseThHQTRHQTsyRkRyRmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHdCQUF3Qjs2SEFRekIsVUFBVTtzQkFBbEIsS0FBSztnQkFPRSxZQUFZO3NCQURuQixTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBwcmV0dHlieXRlcyBmcm9tICdwcmV0dHktYnl0ZXMnO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gYXR0YWNobWVudCB3aXRoIHR5cGUgYHZvaWNlUmVjb3JkaW5nYC4gVGhlIGNvbXBvbmVudCBhbGxvd3MgcGxheWluZyB0aGUgYXR0YWNobWVudCBpbnNpZGUgdGhlIGJyb3dzZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS12b2ljZS1yZWNvcmRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGhlIHZvaWNlIHJlY29yZGluZyBhdHRhY2htZW50XG4gICAqL1xuICBASW5wdXQoKSBhdHRhY2htZW50PzogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgZmlsZVNpemU6IHN0cmluZyA9ICcnO1xuICBzZWNvbmRzRWxhcHNlZEZvcm1hdHRlZDogc3RyaW5nO1xuICBkdXJhdGlvbkZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG4gIHNlY29uZHNFbGFwc2VkID0gMDtcbiAgaXNFcnJvciA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhdWRpb0VsZW1lbnQnKVxuICBwcml2YXRlIGF1ZGlvRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEF1ZGlvRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLnNlY29uZHNFbGFwc2VkRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmF0dGFjaG1lbnQpIHtcbiAgICAgIHRoaXMuZmlsZVNpemUgPSB0aGlzLmdldEZpbGVTaXplKCk7XG4gICAgICB0aGlzLmR1cmF0aW9uRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgICAgdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGltZXVwZGF0ZSBmaXJlZCBmcmVxdW50bHkgc28gd2Ugb3B0aW1pemUgY2hhbmdlIGRldGVjdGlvbnNcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWNvbmRzRWxhcHNlZCA9IHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5lbmRlZFxuICAgICAgICAgID8gdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvbiB8fCAwXG4gICAgICAgICAgOiBNYXRoLnJvdW5kKHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKTtcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kc0VsYXBzZWQgIT09IHNlY29uZHNFbGFwc2VkKSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWQgPSBzZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRGb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZER1cmF0aW9uKFxuICAgICAgICAgICAgICB0aGlzLnNlY29uZHNFbGFwc2VkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGxheSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9FbGVtZW50IHx8ICF0aGlzLmF0dGFjaG1lbnQ/LmFzc2V0X3VybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQucGF1c2VkXG4gICAgICAgID8gYXdhaXQgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KClcbiAgICAgICAgOiB0aGlzLmF1ZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5pc0Vycm9yID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXRQbGF5YmFja1JhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcGxheWJhY2tSYXRlID0gdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnBsYXliYWNrUmF0ZSArIDAuNTtcbiAgICBpZiAocGxheWJhY2tSYXRlID4gMikge1xuICAgICAgcGxheWJhY2tSYXRlID0gMTtcbiAgICB9XG4gICAgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdHRlZER1cmF0aW9uKGR1cmF0aW9uPzogbnVtYmVyKSB7XG4gICAgaWYgKGR1cmF0aW9uID09PSB1bmRlZmluZWQgfHwgZHVyYXRpb24gPD0gMCkgcmV0dXJuICcwMDowMCc7XG5cbiAgICBjb25zdCBbaG91cnMsIGhvdXJzTGVmdG92ZXJdID0gdGhpcy5kaXZNb2QoZHVyYXRpb24sIDM2MDApO1xuICAgIGNvbnN0IFttaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMuZGl2TW9kKGhvdXJzTGVmdG92ZXIsIDYwKTtcbiAgICBjb25zdCByb3VuZGVkU2Vjb25kcyA9IE1hdGguY2VpbChzZWNvbmRzKTtcblxuICAgIGNvbnN0IHByZXBlbmRIcnNaZXJvID0gaG91cnMudG9TdHJpbmcoKS5sZW5ndGggPT09IDEgPyAnMCcgOiAnJztcbiAgICBjb25zdCBwcmVwZW5kTWluWmVybyA9IG1pbnV0ZXMudG9TdHJpbmcoKS5sZW5ndGggPT09IDEgPyAnMCcgOiAnJztcbiAgICBjb25zdCBwcmVwZW5kU2VjWmVybyA9IHJvdW5kZWRTZWNvbmRzLnRvU3RyaW5nKCkubGVuZ3RoID09PSAxID8gJzAnIDogJyc7XG4gICAgY29uc3QgbWluU2VjID0gYCR7cHJlcGVuZE1pblplcm99JHttaW51dGVzfToke3ByZXBlbmRTZWNaZXJvfSR7cm91bmRlZFNlY29uZHN9YDtcblxuICAgIHJldHVybiBob3VycyA/IGAke3ByZXBlbmRIcnNaZXJvfSR7aG91cnN9OmAgKyBtaW5TZWMgOiBtaW5TZWM7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVTaXplKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXR0YWNobWVudD8uZmlsZV9zaXplID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuYXR0YWNobWVudD8uZmlsZV9zaXplID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBwcmV0dHlieXRlcyhOdW1iZXIodGhpcy5hdHRhY2htZW50LmZpbGVfc2l6ZSB8fCAwKSk7XG4gIH1cblxuICBwcml2YXRlIGRpdk1vZChudW06IG51bWJlciwgZGl2aXNvcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFtNYXRoLmZsb29yKG51bSAvIGRpdmlzb3IpLCBudW0gJSBkaXZpc29yXTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBkYXRhLXRlc3RpZD1cInZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldC0tZXJyb3JdPVwiaXNFcnJvclwiXG4+XG4gIDwhLS0gRW1wdHkgZXZlbnQgaGFuZGxlcnMgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIC0tPlxuICA8YXVkaW9cbiAgICAjYXVkaW9FbGVtZW50XG4gICAgKHBsYXkpPVwiKG51bGwpXCJcbiAgICAocGF1c2UpPVwiKG51bGwpXCJcbiAgICAoZW5kZWQpPVwiKG51bGwpXCJcbiAgICAoZXJyb3IpPVwiaXNFcnJvciA9IHRydWVcIlxuICAgIChhYm9ydCk9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICBkYXRhLXRlc3RpZD1cImF1ZGlvLXNvdXJjZVwiXG4gICAgICBbc3JjXT1cImF0dGFjaG1lbnQ/LmFzc2V0X3VybFwiXG4gICAgICBbdHlwZV09XCJhdHRhY2htZW50Py5taW1lX3R5cGVcIlxuICAgIC8+XG4gIDwvYXVkaW8+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnQtYXVkaW8td2lkZ2V0LS1wbGF5LWJ1dHRvblwiXG4gICAgZGF0YS10ZXN0aWQ9XCJwbGF5LWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVBsYXkoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgIFtpY29uXT1cImF1ZGlvRWxlbWVudD8ucGF1c2VkID8gJ3BsYXknIDogJ3BhdXNlJ1wiXG4gICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fbWV0YWRhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudC12b2ljZS1yZWNvcmRpbmctd2lkZ2V0LS1maXJzdC1yb3dcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X190aXRsZVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidm9pY2UtcmVjb3JkaW5nLXRpdGxlXCJcbiAgICAgICAgW3RpdGxlXT1cImF0dGFjaG1lbnQ/LnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAge3sgYXR0YWNobWVudD8udGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRXJyb3I7IGVsc2Ugc3RhdGVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19lcnJvci1tZXNzYWdlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiZXJyb3JcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImVycm9yLW1lc3NhZ2VcIj57e1xuICAgICAgICAgIFwic3RyZWFtQ2hhdC5FcnJvciBwbGF5aW5nIGF1ZGlvXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3N0YXRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX2F1ZGlvLXN0YXRlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX3RpbWVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiEhYXR0YWNobWVudD8uZHVyYXRpb247IGVsc2UgZmlsZVNpemVUZW1wbGF0ZVwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImR1cmF0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBzZWNvbmRzRWxhcHNlZCA+IDAgfHwgIWF1ZGlvRWxlbWVudC5wYXVzZWRcbiAgICAgICAgICAgICAgICA/IHNlY29uZHNFbGFwc2VkRm9ybWF0dGVkXG4gICAgICAgICAgICAgICAgOiBkdXJhdGlvbkZvcm1hdHRlZFxuICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlU2l6ZVRlbXBsYXRlPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50LWZpbGUtLWl0ZW0tc2l6ZVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZmlsZS1zaXplLWluZGljYXRvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpbGVTaXplIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzdHJlYW0tdm9pY2UtcmVjb3JkaW5nLXdhdmViYXJcbiAgICAgICAgICAqbmdJZj1cImF0dGFjaG1lbnQ/LndhdmVmb3JtX2RhdGEgJiYgYXR0YWNobWVudD8uZHVyYXRpb25cIlxuICAgICAgICAgIFt3YXZlRm9ybURhdGFdPVwiYXR0YWNobWVudD8ud2F2ZWZvcm1fZGF0YSB8fCBbXVwiXG4gICAgICAgICAgW2R1cmF0aW9uXT1cImF0dGFjaG1lbnQ/LmR1cmF0aW9uXCJcbiAgICAgICAgICBbYXVkaW9FbGVtZW50XT1cImF1ZGlvRWxlbWVudFwiXG4gICAgICAgID48L3N0cmVhbS12b2ljZS1yZWNvcmRpbmctd2F2ZWJhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19yaWdodC1zZWN0aW9uXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWF1ZGlvRWxlbWVudD8ucGF1c2VkOyBlbHNlIGZpbGVJY29uXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2VfYXR0YWNobWVudF9fcGxheWJhY2stcmF0ZS1idXR0b25cIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJwbGF5YmFjay1yYXRlLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic2V0UGxheWJhY2tSYXRlKClcIlxuICAgID5cbiAgICAgIHt7IGF1ZGlvRWxlbWVudD8ucGxheWJhY2tSYXRlIHwgbnVtYmVyOiBcIjEuMS0xXCIgfX14XG4gICAgPC9idXR0b24+XG4gICAgPG5nLXRlbXBsYXRlICNmaWxlSWNvbj5cbiAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19hdHRhY2htZW50LXR5cGUtaWNvblwiXG4gICAgICAgIGljb249XCJhdWRpby1maWxlXCJcbiAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|