@data-client/core 0.18.1 → 0.18.2
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/CHANGELOG.md +137 -0
- package/dist/index.js +18 -10
- package/dist/index.umd.min.js +1 -1
- package/dist/mock.js +18 -10
- package/legacy/actions.js +1 -1
- package/legacy/controller/Controller.js +10 -3
- package/legacy/controller/setManyTypes.js +2 -0
- package/legacy/manager/DevtoolsManager.js +9 -9
- package/legacy/mock/MockController.js +1 -1
- package/legacy/mock/fixtureTypes.js +1 -1
- package/legacy/mock/mockState.js +1 -1
- package/lib/actionTypes.d.ts +11 -11
- package/lib/actions.d.ts +1 -1
- package/lib/actions.d.ts.map +1 -1
- package/lib/actions.js +1 -1
- package/lib/controller/Controller.d.ts +13 -4
- package/lib/controller/Controller.d.ts.map +1 -1
- package/lib/controller/Controller.js +10 -3
- package/lib/controller/ensurePojo.d.ts.map +1 -1
- package/lib/controller/setManyTypes.d.ts +69 -0
- package/lib/controller/setManyTypes.d.ts.map +1 -0
- package/lib/controller/setManyTypes.js +2 -0
- package/lib/manager/DefaultConnectionListener.d.ts.map +1 -1
- package/lib/manager/DevtoolsManager.d.ts.map +1 -1
- package/lib/manager/DevtoolsManager.js +9 -9
- package/lib/manager/LogoutManager.d.ts.map +1 -1
- package/lib/manager/NetworkManager.d.ts.map +1 -1
- package/lib/manager/PollingSubscription.d.ts.map +1 -1
- package/lib/manager/SubscriptionManager.d.ts.map +1 -1
- package/lib/mock/MockController.d.ts +1 -1
- package/lib/mock/MockController.d.ts.map +1 -1
- package/lib/mock/MockController.js +1 -1
- package/lib/mock/fixtureTypes.d.ts +2 -2
- package/lib/mock/fixtureTypes.d.ts.map +1 -1
- package/lib/mock/fixtureTypes.js +1 -1
- package/lib/mock/mockState.js +1 -1
- package/lib/state/GCPolicy.d.ts.map +1 -1
- package/lib/state/reducer/expireReducer.d.ts +11 -11
- package/lib/state/reducer/invalidateReducer.d.ts +14 -14
- package/package.json +5 -4
- package/src/actions.ts +1 -1
- package/src/controller/Controller.ts +25 -5
- package/src/controller/__tests__/getResponse.ts +58 -0
- package/src/controller/setManyTypes.ts +114 -0
- package/src/manager/DevtoolsManager.ts +11 -8
- package/src/manager/__tests__/networkManager.ts +8 -1
- package/src/mock/MockController.ts +5 -2
- package/src/mock/__tests__/MockController.ts +15 -0
- package/src/mock/fixtureTypes.ts +3 -4
- package/src/mock/mockState.ts +1 -1
- package/ts3.4/actionTypes.d.ts +11 -11
- package/ts3.4/actions.d.ts +1 -1
- package/ts3.4/controller/Controller.d.ts +10 -7
- package/ts3.4/controller/setManyTypes.d.ts +75 -0
- package/ts3.4/mock/MockController.d.ts +1 -1
- package/ts3.4/mock/fixtureTypes.d.ts +2 -2
- package/ts3.4/state/reducer/expireReducer.d.ts +11 -11
- package/ts3.4/state/reducer/invalidateReducer.d.ts +14 -14
package/lib/actions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBEZW5vcm1hbGl6ZSxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEVudGl0eVBhdGgsXG4gIFF1ZXJ5YWJsZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VULFxuICBSRVNFVCxcbiAgRkVUQ0gsXG4gIFNVQlNDUklCRSxcbiAgVU5TVUJTQ1JJQkUsXG4gIElOVkFMSURBVEUsXG4gIEdDLFxuICBPUFRJTUlTVElDLFxuICBJTlZBTElEQVRFQUxMLFxuICBFWFBJUkVBTEwsXG4gIFNFVF9SRVNQT05TRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qKiBHZW5lcmFsIG1ldGEtZGF0YSBmb3Igb3BlcmF0b3JzICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbk1ldGEge1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGF0ZTogbnVtYmVyO1xuICByZWFkb25seSBleHBpcmVzQXQ6IG51bWJlcjtcbn1cblxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXQoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBY3Rpb248UyBleHRlbmRzIFF1ZXJ5YWJsZSA9IGFueT4ge1xuICB0eXBlOiB0eXBlb2YgU0VUO1xuICBzY2hlbWE6IFM7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBtZXRhOiBBY3Rpb25NZXRhO1xuICB2YWx1ZToge30gfCAoKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiB7fSk7XG59XG5cbi8qIHNldFJlc3BvbnNlICovXG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfUkVTUE9OU0U7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIG1ldGE6IEFjdGlvbk1ldGE7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPjtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UmVzcG9uc2VBY3Rpb25FcnJvcjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBVbmtub3duRXJyb3I7XG4gIGVycm9yOiB0cnVlO1xufVxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXRSZXNwb25zZSgpICovXG5leHBvcnQgdHlwZSBTZXRSZXNwb25zZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiA9IFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxFPiB8IFNldFJlc3BvbnNlQWN0aW9uRXJyb3I8RT47XG5cbi8qIEZFVENIICovXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoTWV0YSB7XG4gIGZldGNoZWRBdDogbnVtYmVyO1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBEZW5vcm1hbGl6ZSxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEVudGl0eVBhdGgsXG4gIFF1ZXJ5YWJsZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VULFxuICBSRVNFVCxcbiAgRkVUQ0gsXG4gIFNVQlNDUklCRSxcbiAgVU5TVUJTQ1JJQkUsXG4gIElOVkFMSURBVEUsXG4gIEdDLFxuICBPUFRJTUlTVElDLFxuICBJTlZBTElEQVRFQUxMLFxuICBFWFBJUkVBTEwsXG4gIFNFVF9SRVNQT05TRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qKiBHZW5lcmFsIG1ldGEtZGF0YSBmb3Igb3BlcmF0b3JzICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbk1ldGEge1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGF0ZTogbnVtYmVyO1xuICByZWFkb25seSBleHBpcmVzQXQ6IG51bWJlcjtcbn1cblxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXQoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBY3Rpb248UyBleHRlbmRzIFF1ZXJ5YWJsZSA9IGFueT4ge1xuICB0eXBlOiB0eXBlb2YgU0VUO1xuICBzY2hlbWE6IFM7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBtZXRhOiBBY3Rpb25NZXRhO1xuICB2YWx1ZToge30gfCAoKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiB7fSk7XG59XG5cbi8qIHNldFJlc3BvbnNlICovXG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfUkVTUE9OU0U7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIG1ldGE6IEFjdGlvbk1ldGE7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPjtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UmVzcG9uc2VBY3Rpb25FcnJvcjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBVbmtub3duRXJyb3I7XG4gIGVycm9yOiB0cnVlO1xufVxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXRSZXNwb25zZSgpICovXG5leHBvcnQgdHlwZSBTZXRSZXNwb25zZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiA9IFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxFPiB8IFNldFJlc3BvbnNlQWN0aW9uRXJyb3I8RT47XG5cbi8qIEZFVENIICovXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoTWV0YSB7XG4gIGZldGNoZWRBdDogbnVtYmVyO1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gIHByb21pc2U6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5mZXRjaCgpICovXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoQWN0aW9uPEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdD4ge1xuICB0eXBlOiB0eXBlb2YgRkVUQ0g7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gIGtleTogc3RyaW5nO1xuICBtZXRhOiBGZXRjaE1ldGE7XG59XG5cbi8qIE9QVElNSVNUSUMgKi9cbi8qKiBBY3Rpb24gZm9yIEVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZSgpICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNBY3Rpb248XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgT1BUSU1JU1RJQztcbiAgZW5kcG9pbnQ6IEU7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBrZXk6IHN0cmluZztcbiAgbWV0YTogQWN0aW9uTWV0YTtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cblxuLyogU1VCU0NSSUJFICovXG4vKiogQWN0aW9uIGZvciBDb250cm9sbGVyLnN1YnNjcmliZSgpICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTVUJTQ1JJQkU7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG59XG5cbi8qKiBBY3Rpb24gZm9yIENvbnRyb2xsZXIudW5zdWJzY3JpYmUoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBVTlNVQlNDUklCRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBrZXk6IHN0cmluZztcbn1cblxuLyogRVhQSVJZICovXG5leHBvcnQgaW50ZXJmYWNlIEV4cGlyZUFsbEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBFWFBJUkVBTEw7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuLyogSU5WQUxJREFURSAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWxsQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEVBTEw7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEU7XG4gIGtleTogc3RyaW5nO1xufVxuXG4vKiBSRVNFVCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBSRVNFVDtcbiAgZGF0ZTogbnVtYmVyO1xufVxuXG4vKiBHQyAqL1xuZXhwb3J0IGludGVyZmFjZSBHQ0FjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBHQztcbiAgZW50aXRpZXM6IEVudGl0eVBhdGhbXTtcbiAgZW5kcG9pbnRzOiBzdHJpbmdbXTtcbn1cblxuLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0FjdGlvbnMgKi9cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGVzID1cbiAgfCBGZXRjaEFjdGlvblxuICB8IE9wdGltaXN0aWNBY3Rpb25cbiAgfCBTZXRBY3Rpb25cbiAgfCBTZXRSZXNwb25zZUFjdGlvblxuICB8IFN1YnNjcmliZUFjdGlvblxuICB8IFVuc3Vic2NyaWJlQWN0aW9uXG4gIHwgSW52YWxpZGF0ZUFjdGlvblxuICB8IEludmFsaWRhdGVBbGxBY3Rpb25cbiAgfCBFeHBpcmVBbGxBY3Rpb25cbiAgfCBSZXNldEFjdGlvblxuICB8IEdDQWN0aW9uO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ErrorTypes, SnapshotInterface, Schema, Denormalize, Queryable, SchemaArgs } from '@data-client/normalizr';
|
|
2
2
|
import { ExpiryStatus, EndpointInterface, FetchFunction, ResolveType, DenormalizeNullable, MemoCache } from '@data-client/normalizr';
|
|
3
3
|
import AbortOptimistic from './AbortOptimistic.js';
|
|
4
|
+
import type { SkipInfer, SetInvalidateSchema, SetManySchema, SetManyValue, SetValue } from './setManyTypes.js';
|
|
4
5
|
import type { EndpointUpdateFunction } from './types.js';
|
|
5
6
|
import { ReduxMiddlewareAPI } from '../manager/applyManager.js';
|
|
6
7
|
import type { GCInterface } from '../state/GCPolicy.js';
|
|
@@ -54,14 +55,14 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
|
|
|
54
55
|
*/
|
|
55
56
|
fetch: <E extends EndpointInterface & {
|
|
56
57
|
update?: EndpointUpdateFunction<E>;
|
|
57
|
-
}>(endpoint: E, ...args: readonly [...Parameters<E>]) => E[
|
|
58
|
+
}>(endpoint: E, ...args: readonly [...Parameters<E>]) => E['schema'] extends undefined | null ? ReturnType<E> : Promise<Denormalize<E['schema']>>;
|
|
58
59
|
/**
|
|
59
60
|
* Fetches only if endpoint is considered 'stale'; otherwise returns undefined
|
|
60
61
|
* @see https://dataclient.io/docs/api/Controller#fetchIfStale
|
|
61
62
|
*/
|
|
62
63
|
fetchIfStale: <E extends EndpointInterface & {
|
|
63
64
|
update?: EndpointUpdateFunction<E>;
|
|
64
|
-
}>(endpoint: E, ...args: readonly [...Parameters<E>]) => E[
|
|
65
|
+
}>(endpoint: E, ...args: readonly [...Parameters<E>]) => E['schema'] extends undefined | null ? ReturnType<E> | ResolveType<E> : Promise<Denormalize<E['schema']>> | Denormalize<E['schema']>;
|
|
65
66
|
/**
|
|
66
67
|
* Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
|
|
67
68
|
* @see https://dataclient.io/docs/api/Controller#invalidate
|
|
@@ -92,8 +93,16 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
|
|
|
92
93
|
* Sets value for the Queryable and args.
|
|
93
94
|
* @see https://dataclient.io/docs/api/Controller#set
|
|
94
95
|
*/
|
|
95
|
-
set<S extends Queryable>(schema: S, ...rest: readonly [
|
|
96
|
-
|
|
96
|
+
set<S extends Queryable>(schema: S, ...rest: readonly [
|
|
97
|
+
...SchemaArgs<S>,
|
|
98
|
+
SkipInfer<SetValue<S> | ((previousValue: Denormalize<S>) => SetValue<S>), S>
|
|
99
|
+
]): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Sets every row of an Array or Values of one Entity (or Union) in one normalize,
|
|
102
|
+
* or invalidates the one Entity an Invalidate schema's value identifies.
|
|
103
|
+
* @see https://dataclient.io/docs/api/Controller#set
|
|
104
|
+
*/
|
|
105
|
+
set<S extends SetManySchema | SetInvalidateSchema>(schema: S, value: SkipInfer<SetManyValue<S>, S>): Promise<void>;
|
|
97
106
|
/**
|
|
98
107
|
* Sets response for the Endpoint and args.
|
|
99
108
|
* @see https://dataclient.io/docs/api/Controller#setResponse
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/controller/Controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,mBAAmB,EAEnB,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAenD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,eAAe,GAAG,kBAAkB;IAE9C,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,eAAe,CAAC,CAAC;IAClE,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAcD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU,CAE7B,CAAC,SAAS,eAAe,GAAG,kBAAkB;IAE9C;;;;OAIG;IACH,UAAkB,SAAS,EAAE,CAAC,CAAC;IAC/B;;;;;;OAMG;IACK,QAAQ,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC;;OAEG;IACH,SAAiB,IAAI,EAAE,IAAI,CACzB,SAAS,EACT,aAAa,GAAG,OAAO,GAAG,eAAe,CAC1C,CAAC;IAEF;;OAEG;IACH,SAAiB,QAAQ,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/controller/Controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -187,6 +187,11 @@ export default class Controller {
|
|
|
187
187
|
* Sets value for the Queryable and args.
|
|
188
188
|
* @see https://dataclient.io/docs/api/Controller#set
|
|
189
189
|
*/
|
|
190
|
+
/**
|
|
191
|
+
* Sets every row of an Array or Values of one Entity (or Union) in one normalize,
|
|
192
|
+
* or invalidates the one Entity an Invalidate schema's value identifies.
|
|
193
|
+
* @see https://dataclient.io/docs/api/Controller#set
|
|
194
|
+
*/
|
|
190
195
|
set(schema, ...rest) {
|
|
191
196
|
const value = rest[rest.length - 1];
|
|
192
197
|
const action = createSet(schema, {
|
|
@@ -273,9 +278,11 @@ export default class Controller {
|
|
|
273
278
|
// fallback to entity expiry time
|
|
274
279
|
else expiresAt = entityExpiresAt(paths, state.entitiesMeta);
|
|
275
280
|
}
|
|
281
|
+
const invalidData = typeof data === 'symbol';
|
|
276
282
|
return {
|
|
277
|
-
data
|
|
278
|
-
|
|
283
|
+
// INVALID symbol (e.g. deleted entity) is an internal marker; expose it as missing data
|
|
284
|
+
data: invalidData ? undefined : data,
|
|
285
|
+
expiryStatus: this.getExpiryStatus(invalidData, !!endpoint.invalidIfStale || isInvalid, meta),
|
|
279
286
|
expiresAt,
|
|
280
287
|
countRef: this.gcPolicy.createCountRef({
|
|
281
288
|
key,
|
|
@@ -415,4 +422,4 @@ function extractStateAndArgs(rest) {
|
|
|
415
422
|
// this is typescript generics breaking
|
|
416
423
|
return [rest[l - 1], args];
|
|
417
424
|
}
|
|
418
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHBpcnlTdGF0dXMiLCJNZW1vQ2FjaGUiLCJkZW5vcm1hbGl6ZSIsInZhbGlkYXRlUXVlcnlLZXkiLCJBYm9ydE9wdGltaXN0aWMiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImNyZWF0ZUV4cGlyZUFsbCIsImNyZWF0ZUZldGNoIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZXNldCIsImNyZWF0ZVNldCIsImNyZWF0ZVNldFJlc3BvbnNlIiwiZW5zdXJlUG9qbyIsIkltbW9ydGFsR0NQb2xpY3kiLCJpbml0aWFsU3RhdGUiLCJzZWxlY3RNZXRhIiwidW5zZXREaXNwYXRjaCIsImFjdGlvbiIsIkVycm9yIiwidW5zZXRTdGF0ZSIsIkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImRpc3BhdGNoIiwiZ2V0U3RhdGUiLCJtZW1vIiwiZ2NQb2xpY3kiLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsInNjaGVtYSIsIm1ldGEiLCJwcm9taXNlIiwidGhlbiIsImlucHV0IiwiZmV0Y2hJZlN0YWxlIiwiZGF0YSIsImV4cGlyZXNBdCIsImV4cGlyeVN0YXR1cyIsImdldFJlc3BvbnNlTWV0YSIsIkludmFsaWQiLCJEYXRlIiwibm93IiwiaW52YWxpZGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW52YWxpZGF0ZUFsbCIsIm9wdGlvbnMiLCJrZXkiLCJ0ZXN0S2V5IiwiZXhwaXJlQWxsIiwicmVzZXRFbnRpcmVTdG9yZSIsInNldFJlc3BvbnNlIiwicmVzdCIsInJlc3BvbnNlIiwibGVuZ3RoIiwic2xpY2UiLCJzZXRFcnJvciIsImVycm9yIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJzbmFwc2hvdCIsInN0YXRlIiwiZmV0Y2hlZEF0IiwiU25hcHNob3QiLCJfZGlzcGF0Y2giLCJiaW5kTWlkZGxld2FyZSIsInNldCIsInZhbHVlIiwiZ2V0RXJyb3IiLCJlbmRwb2ludHMiLCJ1bmRlZmluZWQiLCJlcnJvclBvbGljeSIsImdldFJlc3BvbnNlIiwiZXh0cmFjdFN0YXRlQW5kQXJncyIsImlzQWN0aXZlIiwiY2FjaGVFbmRwb2ludHMiLCJzaG91bGRRdWVyeSIsImJ1aWxkUXVlcnlLZXkiLCJWYWxpZCIsIkluZmluaXR5IiwiY291bnRSZWYiLCJpc0ludmFsaWQiLCJyZXF1aXJlc0Rlbm9ybWFsaXplIiwiZ2V0RXhwaXJ5U3RhdHVzIiwiaW52YWxpZElmU3RhbGUiLCJjcmVhdGVDb3VudFJlZiIsInBhdGhzIiwiZW50aXRpZXMiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdGllc01ldGEiLCJnZXQiLCJxdWVyeSIsImdldFF1ZXJ5TWV0YSIsImludmFsaWREYXRhIiwiaW52YWxpZGF0ZWQiLCJJbnZhbGlkSWZTdGFsZSIsInBrIiwiX2VudGl0aWVzTWV0YSRrZXkiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJ0Iiwibm9ybWFsaXplIiwiT2JqZWN0IiwidmFsdWVzIiwic29tZSIsIngiLCJjb250cm9sbGVyIiwiYWJvcnQiLCJsIiwiaSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFcnJvclR5cGVzLFxuICBTbmFwc2hvdEludGVyZmFjZSxcbiAgU2NoZW1hLFxuICBEZW5vcm1hbGl6ZSxcbiAgUXVlcnlhYmxlLFxuICBTY2hlbWFBcmdzLFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcbmltcG9ydCB7XG4gIEV4cGlyeVN0YXR1cyxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEZldGNoRnVuY3Rpb24sXG4gIFJlc29sdmVUeXBlLFxuICBEZW5vcm1hbGl6ZU51bGxhYmxlLFxuICBFbnRpdHlQYXRoLFxuICBNZW1vQ2FjaGUsXG4gIGRlbm9ybWFsaXplLFxuICB2YWxpZGF0ZVF1ZXJ5S2V5LFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IEFib3J0T3B0aW1pc3RpYyBmcm9tICcuL0Fib3J0T3B0aW1pc3RpYy5qcyc7XG5pbXBvcnQge1xuICBjcmVhdGVVbnN1YnNjcmlwdGlvbixcbiAgY3JlYXRlU3Vic2NyaXB0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMvY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGlyZUFsbCxcbiAgY3JlYXRlRmV0Y2gsXG4gIGNyZWF0ZUludmFsaWRhdGUsXG4gIGNyZWF0ZUludmFsaWRhdGVBbGwsXG4gIGNyZWF0ZVJlc2V0LFxuICBjcmVhdGVTZXQsXG4gIGNyZWF0ZVNldFJlc3BvbnNlLFxufSBmcm9tICcuL2FjdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IGVuc3VyZVBvam8gZnJvbSAnLi9lbnN1cmVQb2pvLmpzJztcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgUmVkdXhNaWRkbGV3YXJlQVBJIH0gZnJvbSAnLi4vbWFuYWdlci9hcHBseU1hbmFnZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBHQ0ludGVyZmFjZSB9IGZyb20gJy4uL3N0YXRlL0dDUG9saWN5LmpzJztcbmltcG9ydCB7IEltbW9ydGFsR0NQb2xpY3kgfSBmcm9tICcuLi9zdGF0ZS9HQ1BvbGljeS5qcyc7XG5pbXBvcnQgeyBpbml0aWFsU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHNlbGVjdE1ldGEgZnJvbSAnLi4vc3RhdGUvc2VsZWN0TWV0YS5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgR2VuZXJpY0Rpc3BhdGNoID0gKHZhbHVlOiBhbnkpID0+IFByb21pc2U8dm9pZD47XG5leHBvcnQgdHlwZSBEYXRhQ2xpZW50RGlzcGF0Y2ggPSAodmFsdWU6IEFjdGlvblR5cGVzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xsZXJDb25zdHJ1Y3RvclByb3BzPFxuICBEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gRGF0YUNsaWVudERpc3BhdGNoLFxuPiB7XG4gIGRpc3BhdGNoPzogRDtcbiAgZ2V0U3RhdGU/OiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgbWVtbz86IFBpY2s8TWVtb0NhY2hlLCAnZGVub3JtYWxpemUnIHwgJ3F1ZXJ5JyB8ICdidWlsZFF1ZXJ5S2V5Jz47XG4gIGdjUG9saWN5PzogR0NJbnRlcmZhY2U7XG59XG5cbmNvbnN0IHVuc2V0RGlzcGF0Y2ggPSAoYWN0aW9uOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgRGlzcGF0Y2hpbmcgd2hpbGUgY29uc3RydWN0aW5nIHlvdXIgbWlkZGxld2FyZSBpcyBub3QgYWxsb3dlZC4gYCArXG4gICAgICBgT3RoZXIgbWlkZGxld2FyZSB3b3VsZCBub3QgYmUgYXBwbGllZCB0byB0aGlzIGRpc3BhdGNoLmAsXG4gICk7XG59O1xuY29uc3QgdW5zZXRTdGF0ZSA9ICgpOiBTdGF0ZTx1bmtub3duPiA9PiB7XG4gIC8vIFRoaXMgaXMgb25seSB0aGUgdmFsdWUgdW50aWwgaXQgaXMgc2V0IGJ5IHRoZSBEYXRhUHJvdmlkZXJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5cbi8qKlxuICogSW1wZXJhdGl2ZSBjb250cm9sIG9mIFJlYWN0aXZlIERhdGEgQ2xpZW50IHN0b3JlXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRyb2xsZXI8XG4gIC8vIE5PVEU6IFdlIHRlbXBsYXRlIG9uIGVudGlyZSBkaXNwYXRjaCwgc28gd2UgY2FuIGJlIGNvbnRyYXZhcmlhbnQgb24gQWN0aW9uVHlwZXNcbiAgRCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IERhdGFDbGllbnREaXNwYXRjaCxcbj4ge1xuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24gdG8gUmVhY3RpdmUgRGF0YSBDbGllbnQgcmVkdWNlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNkaXNwYXRjaFxuICAgKi9cbiAgZGVjbGFyZSBwcm90ZWN0ZWQgX2Rpc3BhdGNoOiBEO1xuICAvKipcbiAgICogR2V0cyB0aGUgbGF0ZXN0IHN0YXRlIHNuYXBzaG90IHRoYXQgaXMgZnVsbHkgY29tbWl0dGVkLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGltcGVyYXRpdmUgdXNlLWNhc2VzIGxpa2UgZXZlbnQgaGFuZGxlcnMuXG4gICAqIFRoaXMgc2hvdWxkICpub3QqIGJlIHVzZWQgdG8gcmVuZGVyOyBpbnN0ZWFkIHVzZVN1c3BlbnNlKCkgb3IgdXNlQ2FjaGUoKVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFN0YXRlXG4gICAqL1xuICBkZWNsYXJlIGdldFN0YXRlOiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgLyoqXG4gICAqIFNpbmdsZXRvbiB0byBtYWludGFpbiByZWZlcmVudGlhbCBlcXVhbGl0eSBiZXR3ZWVuIGNhbGxzXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IG1lbW86IFBpY2s8XG4gICAgTWVtb0NhY2hlLFxuICAgICdkZW5vcm1hbGl6ZScgfCAncXVlcnknIHwgJ2J1aWxkUXVlcnlLZXknXG4gID47XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZ2FyYmFnZSBjb2xsZWN0aW9uXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IGdjUG9saWN5OiBHQ0ludGVyZmFjZTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzcGF0Y2ggPSB1bnNldERpc3BhdGNoIGFzIGFueSxcbiAgICBnZXRTdGF0ZSA9IHVuc2V0U3RhdGUsXG4gICAgbWVtbyA9IG5ldyBNZW1vQ2FjaGUoKSxcbiAgICBnY1BvbGljeSA9IG5ldyBJbW1vcnRhbEdDUG9saWN5KCksXG4gIH06IENvbnRyb2xsZXJDb25zdHJ1Y3RvclByb3BzPEQ+ID0ge30pIHtcbiAgICB0aGlzLl9kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgIHRoaXMuZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgICB0aGlzLm1lbW8gPSBtZW1vO1xuICAgIHRoaXMuZ2NQb2xpY3kgPSBnY1BvbGljeTtcbiAgfVxuXG4gIC8vIFRPRE86IGRyb3Agd2hlbiBkcm9wIHN1cHBvcnQgZm9yIGRlc3RydWN0dXJpbmcgKDAuMTQgYW5kIGJlbG93KVxuICBzZXQgZGlzcGF0Y2goZGlzcGF0Y2g6IEQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuX2Rpc3BhdGNoID0gZGlzcGF0Y2g7XG4gIH1cblxuICAvLyBUT0RPOiBkcm9wIHdoZW4gZHJvcCBzdXBwb3J0IGZvciBkZXN0cnVjdHVyaW5nICgwLjE0IGFuZCBiZWxvdylcbiAgZ2V0IGRpc3BhdGNoKCk6IEQge1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaDtcbiAgfVxuXG4gIGJpbmRNaWRkbGV3YXJlKHtcbiAgICBkaXNwYXRjaCxcbiAgICBnZXRTdGF0ZSxcbiAgfToge1xuICAgIGRpc3BhdGNoOiBEO1xuICAgIGdldFN0YXRlOiBSZWR1eE1pZGRsZXdhcmVBUElbJ2dldFN0YXRlJ107XG4gIH0pIHtcbiAgICB0aGlzLl9kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgIHRoaXMuZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogQWN0aW9uIERpc3BhdGNoZXJzICoqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgZW5kcG9pbnQgd2l0aCBnaXZlbiBhcmdzLCB1cGRhdGluZyB0aGUgUmVhY3RpdmUgRGF0YSBDbGllbnQgY2FjaGUgd2l0aCB0aGUgcmVzcG9uc2Ugb3IgZXJyb3IgdXBvbiBjb21wbGV0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ZldGNoXG4gICAqL1xuICBmZXRjaCA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogRVsnc2NoZW1hJ10gZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsID8gUmV0dXJuVHlwZTxFPlxuICA6IFByb21pc2U8RGVub3JtYWxpemU8RVsnc2NoZW1hJ10+PiA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlRmV0Y2goZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3MsXG4gICAgfSk7XG4gICAgdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuXG4gICAgaWYgKGVuZHBvaW50LnNjaGVtYSkge1xuICAgICAgcmV0dXJuIGFjdGlvbi5tZXRhLnByb21pc2UudGhlbihpbnB1dCA9PlxuICAgICAgICBkZW5vcm1hbGl6ZShlbmRwb2ludC5zY2hlbWEsIGlucHV0LCB7fSwgYXJncyksXG4gICAgICApIGFzIGFueTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5tZXRhLnByb21pc2UgYXMgYW55O1xuICB9O1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIG9ubHkgaWYgZW5kcG9pbnQgaXMgY29uc2lkZXJlZCAnc3RhbGUnOyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNmZXRjaElmU3RhbGVcbiAgICovXG4gIGZldGNoSWZTdGFsZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogRVsnc2NoZW1hJ10gZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsID8gUmV0dXJuVHlwZTxFPiB8IFJlc29sdmVUeXBlPEU+XG4gIDogUHJvbWlzZTxEZW5vcm1hbGl6ZTxFWydzY2hlbWEnXT4+IHwgRGVub3JtYWxpemU8RVsnc2NoZW1hJ10+ID0+IHtcbiAgICBjb25zdCB7IGRhdGEsIGV4cGlyZXNBdCwgZXhwaXJ5U3RhdHVzIH0gPSB0aGlzLmdldFJlc3BvbnNlTWV0YShcbiAgICAgIGVuZHBvaW50LFxuICAgICAgLi4uYXJncyxcbiAgICAgIHRoaXMuZ2V0U3RhdGUoKSxcbiAgICApO1xuICAgIGlmIChleHBpcnlTdGF0dXMgIT09IEV4cGlyeVN0YXR1cy5JbnZhbGlkICYmIERhdGUubm93KCkgPD0gZXhwaXJlc0F0KVxuICAgICAgcmV0dXJuIGRhdGEgYXMgYW55O1xuICAgIHJldHVybiB0aGlzLmZldGNoKGVuZHBvaW50LCAuLi5hcmdzKTtcbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIHdpdGggdGhlIHNhbWUgRW5kcG9pbnQgYW5kIHBhcmFtZXRlcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjaW52YWxpZGF0ZVxuICAgKi9cbiAgaW52YWxpZGF0ZSA9IDxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVJbnZhbGlkYXRlKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgcmVmZXRjaGluZyBhbmQgc3VzcGVuc2Ugb24gdXNlU3VzcGVuc2Ugb24gYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gaW52YWxpZGF0aW9uIGlzIGNvbW1pdGVkLlxuICAgKi9cbiAgaW52YWxpZGF0ZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlSW52YWxpZGF0ZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFNldHMgYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzIHRvIGJlIFNUQUxFLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2V4cGlyZUFsbFxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleHBpcnkgaXMgY29tbWl0ZWQuICpOT1QqIGZldGNoIHByb21pc2VcbiAgICovXG4gIGV4cGlyZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlRXhwaXJlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVhY3RpdmUgRGF0YSBDbGllbnQgY2FjaGUuIEFsbCBpbmZsaWdodCByZXF1ZXN0cyB3aWxsIG5vdCByZXNvbHZlLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Jlc2V0RW50aXJlU3RvcmVcbiAgICovXG4gIHJlc2V0RW50aXJlU3RvcmUgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVJlc2V0KCkpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHZhbHVlIGZvciB0aGUgUXVlcnlhYmxlIGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uU2NoZW1hQXJnczxTPiwgKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiB7fV1cbiAgKTogUHJvbWlzZTx2b2lkPjtcblxuICBzZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5TY2hlbWFBcmdzPFM+LCB7fV1cbiAgKTogUHJvbWlzZTx2b2lkPjtcblxuICBzZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5TY2hlbWFBcmdzPFM+LCBhbnldXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbHVlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldChzY2hlbWEsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBTY2hlbWFBcmdzPFM+LFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gICAgLy8gVE9ETzogcmVqZWN0IHdpdGggZXJyb3IgaWYgdGhpcyBmYWlscyBpbiByZWR1Y2VyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHJlc3BvbnNlIGZvciB0aGUgRW5kcG9pbnQgYW5kIGFyZ3MuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc2V0UmVzcG9uc2VcbiAgICovXG4gIHNldFJlc3BvbnNlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogUmVzb2x2ZVR5cGU8RT4gPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0cyBhbiBlcnJvciByZXNwb25zZSBmb3IgdGhlIEVuZHBvaW50IGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBlcnJvcjogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBpbmZsaWdodCBmZXRjaC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNvbHZlXG4gICAqL1xuICByZXNvbHZlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICBtZXRhOlxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgICAgICBlcnJvcjogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBhbnk7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I/OiBmYWxzZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIG1ldGEgYXMgYW55KSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcmtzIGEgbmV3IHN1YnNjcmlwdGlvbiB0byBhIGdpdmVuIEVuZHBvaW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3N1YnNjcmliZVxuICAgKi9cbiAgc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsID9cbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgIGNyZWF0ZVN1YnNjcmlwdGlvbihlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogTWFya3MgY29tcGxldGlvbiBvZiBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciN1bnN1YnNjcmliZVxuICAgKi9cbiAgdW5zdWJzY3JpYmUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPFxuICAgICAgRmV0Y2hGdW5jdGlvbixcbiAgICAgIFNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCB8IGZhbHNlXG4gICAgPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlVW5zdWJzY3JpcHRpb24oZW5kcG9pbnQsIHtcbiAgICAgICAgICBhcmdzOiBhcmdzIGFzIFBhcmFtZXRlcnM8RT4sXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqKioqKioqKioqKioqKiBNb3JlICoqKioqKioqKioqKioqKi9cblxuICAvKiBUT0RPOlxuICBhYm9ydCA9IDxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBQcm9taXNlPHZvaWQ+XG4gICovXG5cbiAgLyoqXG4gICAqIEdldHMgYSBzbmFwc2hvdCAoaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90KVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NuYXBzaG90XG4gICAqL1xuICBzbmFwc2hvdCA9IChzdGF0ZTogU3RhdGU8dW5rbm93bj4sIGZldGNoZWRBdD86IG51bWJlcik6IFNuYXBzaG90PHVua25vd24+ID0+IHtcbiAgICByZXR1cm4gbmV3IFNuYXBzaG90KHRoaXMsIHN0YXRlLCBmZXRjaGVkQXQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlcnJvciwgaWYgYW55LCBmb3IgYSBnaXZlbiBlbmRwb2ludC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIG5vIGVycm9ycy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRFcnJvclxuICAgKi9cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPiwgU3RhdGU8dW5rbm93bj5dXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3IoXG4gICAgZW5kcG9pbnQ6IEVuZHBvaW50SW50ZXJmYWNlLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi51bmtub3duW10sIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocmVzdFswXSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPHVua25vd24+O1xuICAgIC8vIHRoaXMgaXMgdHlwZXNjcmlwdCBnZW5lcmljcyBicmVha2luZ1xuICAgIGNvbnN0IGFyZ3M6IGFueSA9IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKTtcbiAgICBjb25zdCBrZXkgPSBlbmRwb2ludC5rZXkoLi4uYXJncyk7XG5cbiAgICBjb25zdCBtZXRhID0gc2VsZWN0TWV0YShzdGF0ZSwga2V5KTtcbiAgICBjb25zdCBlcnJvciA9IHN0YXRlLmVuZHBvaW50c1trZXldO1xuXG4gICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQgJiYgbWV0YT8uZXJyb3JQb2xpY3kgPT09ICdzb2Z0JykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIG1ldGE/LmVycm9yIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSAoZ2xvYmFsbHkgcmVmZXJlbnRpYWxseSBzdGFibGUpIHJlc3BvbnNlIGZvciBhIGdpdmVuIGVuZHBvaW50L2FyZ3MgcGFpciBmcm9tIHN0YXRlIGdpdmVuLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFJlc3BvbnNlXG4gICAqL1xuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbXG4gICAgICAuLi4ocmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXSksXG4gICAgICBTdGF0ZTx1bmtub3duPixcbiAgICBdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBjb3VudFJlZjogKCkgPT4gKCkgPT4gdm9pZDtcbiAgfTtcblxuICBnZXRSZXNwb25zZShcbiAgICBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLnVua25vd25bXSwgU3RhdGU8dW5rbm93bj5dXG4gICk6IHtcbiAgICBkYXRhOiB1bmtub3duO1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICAvLyBUT0RPOiBicmVha2luZzogb25seSByZXR1cm4gZGF0YVxuICAgIHJldHVybiB0aGlzLmdldFJlc3BvbnNlTWV0YShlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRSZXNwb25zZU1ldGFcbiAgICovXG4gIGdldFJlc3BvbnNlTWV0YTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2VNZXRhPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uKHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF0pLFxuICAgICAgU3RhdGU8dW5rbm93bj4sXG4gICAgXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2VNZXRhKFxuICAgIGVuZHBvaW50OiBFbmRwb2ludEludGVyZmFjZSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4udW5rbm93bltdLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IHVua25vd247XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH0ge1xuICAgIGNvbnN0IFtzdGF0ZSwgYXJnc10gPSBleHRyYWN0U3RhdGVBbmRBcmdzKHJlc3QpO1xuICAgIGNvbnN0IGlzQWN0aXZlID0gYXJncy5sZW5ndGggIT09IDEgfHwgYXJnc1swXSAhPT0gbnVsbDtcbiAgICBjb25zdCBrZXkgPSBpc0FjdGl2ZSA/IGVuZHBvaW50LmtleSguLi5hcmdzKSA6ICcnO1xuICAgIGNvbnN0IGNhY2hlRW5kcG9pbnRzID0gaXNBY3RpdmUgPyBzdGF0ZS5lbmRwb2ludHNba2V5XSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzY2hlbWEgPSBlbmRwb2ludC5zY2hlbWE7XG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgbGV0IGV4cGlyZXNBdCA9IG1ldGE/LmV4cGlyZXNBdDtcbiAgICAvLyBpZiB3ZSBoYXZlIG5vIGVuZHBvaW50IGVudHJ5LCBhbmQgb3VyIGVuZHBvaW50IGhhcyBhIHNjaGVtYSAtIHRyeSBxdWVyeWluZyB0aGUgc3RvcmVcbiAgICBjb25zdCBzaG91bGRRdWVyeSA9IGNhY2hlRW5kcG9pbnRzID09PSB1bmRlZmluZWQgJiYgc2NoZW1hICE9PSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBpbnB1dCA9XG4gICAgICBzaG91bGRRdWVyeSA/XG4gICAgICAgIC8vIG5vdGhpbmcgaW4gZW5kcG9pbnRzIGNhY2hlLCBzbyB0cnkgcXVlcnlpbmcgaWYgd2UgaGF2ZSBhIHNjaGVtYSB0byBkbyBzb1xuICAgICAgICB0aGlzLm1lbW8uYnVpbGRRdWVyeUtleShzY2hlbWEsIGFyZ3MsIHN0YXRlLCBrZXkpXG4gICAgICA6IGNhY2hlRW5kcG9pbnRzO1xuXG4gICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgLy8gd2hlbiBub3QgYWN0aXZlIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5IGlucHV0IHdpdGhvdXQgZGVub3JtYWxpemluZ1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogaW5wdXQgYXMgYW55LFxuICAgICAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cy5WYWxpZCxcbiAgICAgICAgZXhwaXJlc0F0OiBJbmZpbml0eSxcbiAgICAgICAgY291bnRSZWY6ICgpID0+ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IGlzSW52YWxpZCA9IGZhbHNlO1xuICAgIGlmIChzaG91bGRRdWVyeSkge1xuICAgICAgaXNJbnZhbGlkID0gIXZhbGlkYXRlUXVlcnlLZXkoaW5wdXQpO1xuICAgICAgLy8gZW5kcG9pbnQgd2l0aG91dCBlbnRpdGllc1xuICAgIH0gZWxzZSBpZiAoIXNjaGVtYSB8fCAhcmVxdWlyZXNEZW5vcm1hbGl6ZShzY2hlbWEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBjYWNoZUVuZHBvaW50cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiB0aGlzLmdldEV4cGlyeVN0YXR1cyhcbiAgICAgICAgICBjYWNoZUVuZHBvaW50cyA9PT0gdW5kZWZpbmVkLFxuICAgICAgICAgICEhZW5kcG9pbnQuaW52YWxpZElmU3RhbGUsXG4gICAgICAgICAgbWV0YSxcbiAgICAgICAgKSxcbiAgICAgICAgZXhwaXJlc0F0OiBleHBpcmVzQXQgfHwgMCxcbiAgICAgICAgY291bnRSZWY6IHRoaXMuZ2NQb2xpY3kuY3JlYXRlQ291bnRSZWYoeyBrZXkgfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IHRoaXMubWVtby5kZW5vcm1hbGl6ZShcbiAgICAgIHNjaGVtYSxcbiAgICAgIGlucHV0LFxuICAgICAgc3RhdGUuZW50aXRpZXMsXG4gICAgICBhcmdzLFxuICAgICkgYXMgeyBkYXRhOiBhbnk7IHBhdGhzOiBFbnRpdHlQYXRoW10gfTtcblxuICAgIGlmICghZXhwaXJlc0F0KSB7XG4gICAgICAvLyBub3RlOiBpc0ludmFsaWQgY2FuIG9ubHkgYmUgdHJ1ZSBpZiBzaG91bGRRdWVyeSBpcyB0cnVlXG4gICAgICBpZiAoaXNJbnZhbGlkKSBleHBpcmVzQXQgPSAxO1xuICAgICAgLy8gZmFsbGJhY2sgdG8gZW50aXR5IGV4cGlyeSB0aW1lXG4gICAgICBlbHNlIGV4cGlyZXNBdCA9IGVudGl0eUV4cGlyZXNBdChwYXRocywgc3RhdGUuZW50aXRpZXNNZXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGV4cGlyeVN0YXR1czogdGhpcy5nZXRFeHBpcnlTdGF0dXMoXG4gICAgICAgIHR5cGVvZiBkYXRhID09PSAnc3ltYm9sJyxcbiAgICAgICAgISFlbmRwb2ludC5pbnZhbGlkSWZTdGFsZSB8fCBpc0ludmFsaWQsXG4gICAgICAgIG1ldGEsXG4gICAgICApLFxuICAgICAgZXhwaXJlc0F0LFxuICAgICAgY291bnRSZWY6IHRoaXMuZ2NQb2xpY3kuY3JlYXRlQ291bnRSZWYoeyBrZXksIHBhdGhzIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgc3RvcmUgZm9yIGEgUXVlcmFibGUgc2NoZW1hXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLlNjaGVtYUFyZ3M8Uz4sXG4gICAgICBQaWNrPFN0YXRlPHVua25vd24+LCAnZW50aXRpZXMnIHwgJ2luZGV4ZXMnPixcbiAgICBdXG4gICk6IERlbm9ybWFsaXplTnVsbGFibGU8Uz4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtzdGF0ZSwgYXJnc10gPSBleHRyYWN0U3RhdGVBbmRBcmdzKHJlc3QpO1xuXG4gICAgY29uc3QgeyBkYXRhIH0gPSB0aGlzLm1lbW8ucXVlcnkoc2NoZW1hLCBhcmdzLCBzdGF0ZSk7XG4gICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnc3ltYm9sJyA/IHVuZGVmaW5lZCA6IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgc3RvcmUgZm9yIGEgUXVlcmFibGUgc2NoZW1hOyBwcm92aWRpbmcgcmVsYXRlZCBtZXRhZGF0YVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFF1ZXJ5TWV0YVxuICAgKi9cbiAgZ2V0UXVlcnlNZXRhPFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbXG4gICAgICAuLi5TY2hlbWFBcmdzPFM+LFxuICAgICAgUGljazxTdGF0ZTx1bmtub3duPiwgJ2VudGl0aWVzJyB8ICdpbmRleGVzJz4sXG4gICAgXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZDtcbiAgICBjb3VudFJlZjogKCkgPT4gKCkgPT4gdm9pZDtcbiAgfSB7XG4gICAgY29uc3QgW3N0YXRlLCBhcmdzXSA9IGV4dHJhY3RTdGF0ZUFuZEFyZ3MocmVzdCk7XG5cbiAgICBjb25zdCB7IGRhdGEsIHBhdGhzIH0gPSB0aGlzLm1lbW8ucXVlcnkoc2NoZW1hLCBhcmdzLCBzdGF0ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogdHlwZW9mIGRhdGEgPT09ICdzeW1ib2wnID8gdW5kZWZpbmVkIDogZGF0YSxcbiAgICAgIGNvdW50UmVmOiB0aGlzLmdjUG9saWN5LmNyZWF0ZUNvdW50UmVmKHsgcGF0aHMgfSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwaXJ5U3RhdHVzKFxuICAgIGludmFsaWREYXRhOiBib29sZWFuLFxuICAgIGludmFsaWRJZlN0YWxlOiBib29sZWFuLFxuICAgIG1ldGE6IHsgZXJyb3I/OiB1bmtub3duOyBpbnZhbGlkYXRlZD86IHVua25vd24gfSA9IHt9LFxuICApIHtcbiAgICAvLyBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9jb25jZXB0cy9leHBpcnktcG9saWN5I2V4cGlyeS1zdGF0dXNcbiAgICAvLyB3ZSBkb24ndCB0cmFjayB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0YWxlIG9yIGZyZXNoIGJlY2F1c2UgdGhhdCBpcyB0aWVkIHRvIHRyaWdnZXJpbmdcbiAgICAvLyBjb25kaXRpb25zXG4gICAgcmV0dXJuIChcbiAgICAgIG1ldGEuaW52YWxpZGF0ZWQgfHwgKGludmFsaWREYXRhICYmICFtZXRhLmVycm9yKSA/IEV4cGlyeVN0YXR1cy5JbnZhbGlkXG4gICAgICA6IGludmFsaWREYXRhIHx8IGludmFsaWRJZlN0YWxlID8gRXhwaXJ5U3RhdHVzLkludmFsaWRJZlN0YWxlXG4gICAgICA6IEV4cGlyeVN0YXR1cy5WYWxpZFxuICAgICk7XG4gIH1cbn1cblxuLy8gYmVuY2htYXJrOiBodHRwczovL3d3dy5tZWFzdXJldGhhdC5uZXQvQmVuY2htYXJrcy9TaG93LzI0NjkxLzAvbWluLXJlZHVjZXItdnMtaW1wZXJhdGl2ZS13aXRoLXBhdGhzXG4vLyBlYXJsaWVzdCBleHBpcnkgZGljdGF0ZXMgYWdlXG5mdW5jdGlvbiBlbnRpdHlFeHBpcmVzQXQoXG4gIHBhdGhzOiBFbnRpdHlQYXRoW10sXG4gIGVudGl0aWVzTWV0YToge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IFtwazogc3RyaW5nXToge1xuICAgICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjsgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIERhdGFQcm92aWRlclxuICAgICAgfTtcbiAgICB9O1xuICB9LFxuKSB7XG4gIGxldCBleHBpcmVzQXQgPSBJbmZpbml0eTtcbiAgZm9yIChjb25zdCB7IGtleSwgcGsgfSBvZiBwYXRocykge1xuICAgIGNvbnN0IGVudGl0eUV4cGlyeSA9IGVudGl0aWVzTWV0YVtrZXldPy5bcGtdPy5leHBpcmVzQXQ7XG4gICAgLy8gZXhwaXJlc0F0IHdpbGwgYWx3YXlzIHJlc29sdmUgdG8gZmFsc2Ugd2l0aCBhbnkgY29tcGFyaXNvblxuICAgIGlmIChlbnRpdHlFeHBpcnkgPCBleHBpcmVzQXQpIGV4cGlyZXNBdCA9IGVudGl0eUV4cGlyeTtcbiAgfVxuICByZXR1cm4gZXhwaXJlc0F0O1xufVxuXG4vKiogV2hldGhlciBgZGVub3JtYWxpemUoKWAgbXVzdCBydW4gdG8gcmVjb25zdHJ1Y3QgdGhlIHJlc3BvbnNlLlxuICpcbiAqIFRydWUgaWZmIHNvbWUgbm9kZSBpbiB0aGUgc2NoZW1hIHRyZWUgZGVmaW5lcyBgbm9ybWFsaXplYCDigJQgbWVhbmluZyBpdFxuICogdHJhbnNmb3JtcyB0aGUgcmVzcG9uc2Ugd2hlbiB3cml0dGVuIChlbnRpdHkgd3JpdGUsIHBvbHltb3JwaGljIGhvaXN0LFxuICogbGF6eSBkZWxlZ2F0aW9uLCBldGMuKSwgc28gdGhlIGNhY2hlZCB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHJlc3BvbnNlLlxuICogTWlycm9ycyB0aGUgZGlzcGF0Y2ggaW4gYGdldFZpc2l0LnRzYDogc2NoZW1hIGNsYXNzZXMgYXJlIGRldGVjdGVkIGhlcmVcbiAqIGJ5IHRoZSBzYW1lIGhvb2sgdGhlIHZpc2l0IHdhbGtlciB1c2VzLCBzbyB3ZSBuZXZlciBuZWVkIHRvIHdhbGsgdGhlaXJcbiAqIGluc3RhbmNlIGZpZWxkcy5cbiAqL1xuZnVuY3Rpb24gcmVxdWlyZXNEZW5vcm1hbGl6ZShzY2hlbWE6IFNjaGVtYSk6IGJvb2xlYW4ge1xuICBpZiAoIXNjaGVtYSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEpKVxuICAgIHJldHVybiBzY2hlbWEubGVuZ3RoICE9PSAwICYmIHJlcXVpcmVzRGVub3JtYWxpemUoc2NoZW1hWzBdKTtcbiAgLy8gTXVzdCByZWplY3QgcHJpbWl0aXZlcyBiZWZvcmUgcHJvYmluZyBgLm5vcm1hbGl6ZWAg4oCUIGBTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZWAgZXhpc3RzLlxuICBjb25zdCB0ID0gdHlwZW9mIHNjaGVtYTtcbiAgaWYgKHQgIT09ICdvYmplY3QnICYmIHQgIT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiAoc2NoZW1hIGFzIGFueSkubm9ybWFsaXplID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdHJ1ZTtcbiAgLy8gUGxhaW4tb2JqZWN0IHNjaGVtYSBtYXAgKGUuZy4gYHsgZGF0YTogW1RhY29zXSwgcGFnZTogeyAuLi4gfSB9YCkuXG4gIHJldHVybiBPYmplY3QudmFsdWVzKHNjaGVtYSBhcyBvYmplY3QpLnNvbWUoeCA9PiByZXF1aXJlc0Rlbm9ybWFsaXplKHgpKTtcbn1cblxuZXhwb3J0IHR5cGUgeyBFcnJvclR5cGVzIH07XG5cbmNsYXNzIFNuYXBzaG90PFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIFNuYXBzaG90SW50ZXJmYWNlIHtcbiAgc3RhdGljIHJlYWRvbmx5IGFib3J0ID0gbmV3IEFib3J0T3B0aW1pc3RpYygpO1xuXG4gIHByaXZhdGUgc3RhdGU6IFN0YXRlPFQ+O1xuICBwcml2YXRlIGNvbnRyb2xsZXI6IENvbnRyb2xsZXI7XG4gIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyO1xuICByZWFkb25seSBhYm9ydCA9IFNuYXBzaG90LmFib3J0O1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsIHN0YXRlOiBTdGF0ZTxUPiwgZmV0Y2hlZEF0ID0gMCkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgIHRoaXMuZmV0Y2hlZEF0ID0gZmV0Y2hlZEF0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKiBEYXRhIEFjY2VzcyAqKioqKioqKioqKioqKiovXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZSAqL1xuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFtudWxsXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRSZXNwb25zZShlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0UmVzcG9uc2VNZXRhICovXG4gIGdldFJlc3BvbnNlTWV0YTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFtudWxsXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2VNZXRhPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZU1ldGE8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZU1ldGE8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRSZXNwb25zZU1ldGEoZW5kcG9pbnQsIC4uLmFyZ3MsIHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldEVycm9yICovXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVkIG1lbW9pemVkIHZhbHVlIGZvciBhbnkgUXVlcmFibGUgc2NoZW1hXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFxuICAgKi9cbiAgZ2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5hcmdzOiBTY2hlbWFBcmdzPFM+XG4gICk6IERlbm9ybWFsaXplTnVsbGFibGU8Uz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuZ2V0KHNjaGVtYSwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgc3RvcmUgZm9yIGEgUXVlcmFibGUgc2NoZW1hOyBwcm92aWRpbmcgcmVsYXRlZCBtZXRhZGF0YVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRRdWVyeU1ldGFcbiAgICovXG4gIGdldFF1ZXJ5TWV0YTxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4uYXJnczogU2NoZW1hQXJnczxTPlxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZDtcbiAgICBjb3VudFJlZjogKCkgPT4gKCkgPT4gdm9pZDtcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRRdWVyeU1ldGEoc2NoZW1hLCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxufVxuXG4vKiogRXh0cmFjdCBzdGF0ZSBhbmQgYXJncyBmcm9tIHJlc3QgcGFyYW1zLCBhcHBseWluZyBlbnN1cmVQb2pvIHRvIGFyZ3MgKi9cbmZ1bmN0aW9uIGV4dHJhY3RTdGF0ZUFuZEFyZ3MocmVzdDogcmVhZG9ubHkgdW5rbm93bltdKTogW1N0YXRlPGFueT4sIGFueVtdXSB7XG4gIGNvbnN0IGwgPSByZXN0Lmxlbmd0aDtcbiAgY29uc3QgYXJnczogYW55ID0gbmV3IEFycmF5KGwgLSAxKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsIC0gMTsgaSsrKSB7XG4gICAgLy8gaGFuZGxlIEZvcm1EYXRhXG4gICAgYXJnc1tpXSA9IGVuc3VyZVBvam8ocmVzdFtpXSk7XG4gIH1cbiAgLy8gdGhpcyBpcyB0eXBlc2NyaXB0IGdlbmVyaWNzIGJyZWFraW5nXG4gIHJldHVybiBbcmVzdFtsIC0gMV0gYXMgU3RhdGU8YW55PiwgYXJnc107XG59XG4iXSwibWFwcGluZ3MiOiJBQVFBLFNBQ0VBLFlBQVksRUFNWkMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLGdCQUFnQixRQUNYLHdCQUF3QjtBQUUvQixPQUFPQyxlQUFlLE1BQU0sc0JBQXNCO0FBQ2xELFNBQ0VDLG9CQUFvQixFQUNwQkMsa0JBQWtCLFFBQ2IsaUNBQWlDO0FBQ3hDLFNBQ0VDLGVBQWUsRUFDZkMsV0FBVyxFQUNYQyxnQkFBZ0IsRUFDaEJDLG1CQUFtQixFQUNuQkMsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLGlCQUFpQixRQUNaLG9CQUFvQjtBQUMzQixPQUFPQyxVQUFVLE1BQU0saUJBQWlCO0FBSXhDLFNBQVNDLGdCQUFnQixRQUFRLHNCQUFzQjtBQUN2RCxTQUFTQyxZQUFZLFFBQVEsbUNBQW1DO0FBQ2hFLE9BQU9DLFVBQVUsTUFBTSx3QkFBd0I7QUFlL0MsTUFBTUMsYUFBYSxHQUFJQyxNQUFlLElBQW9CO0VBQ3hELE1BQU0sSUFBSUMsS0FBSyxDQUNiLGlFQUFpRSxHQUMvRCx5REFDSixDQUFDO0FBQ0gsQ0FBQztBQUNELE1BQU1DLFVBQVUsR0FBR0EsQ0FBQSxLQUFzQjtFQUN2QztFQUNBO0VBQ0EsT0FBT0wsWUFBWTtBQUNyQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNB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
|
|
425
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHBpcnlTdGF0dXMiLCJNZW1vQ2FjaGUiLCJkZW5vcm1hbGl6ZSIsInZhbGlkYXRlUXVlcnlLZXkiLCJBYm9ydE9wdGltaXN0aWMiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImNyZWF0ZUV4cGlyZUFsbCIsImNyZWF0ZUZldGNoIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZXNldCIsImNyZWF0ZVNldCIsImNyZWF0ZVNldFJlc3BvbnNlIiwiZW5zdXJlUG9qbyIsIkltbW9ydGFsR0NQb2xpY3kiLCJpbml0aWFsU3RhdGUiLCJzZWxlY3RNZXRhIiwidW5zZXREaXNwYXRjaCIsImFjdGlvbiIsIkVycm9yIiwidW5zZXRTdGF0ZSIsIkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImRpc3BhdGNoIiwiZ2V0U3RhdGUiLCJtZW1vIiwiZ2NQb2xpY3kiLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsInNjaGVtYSIsIm1ldGEiLCJwcm9taXNlIiwidGhlbiIsImlucHV0IiwiZmV0Y2hJZlN0YWxlIiwiZGF0YSIsImV4cGlyZXNBdCIsImV4cGlyeVN0YXR1cyIsImdldFJlc3BvbnNlTWV0YSIsIkludmFsaWQiLCJEYXRlIiwibm93IiwiaW52YWxpZGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW52YWxpZGF0ZUFsbCIsIm9wdGlvbnMiLCJrZXkiLCJ0ZXN0S2V5IiwiZXhwaXJlQWxsIiwicmVzZXRFbnRpcmVTdG9yZSIsInNldFJlc3BvbnNlIiwicmVzdCIsInJlc3BvbnNlIiwibGVuZ3RoIiwic2xpY2UiLCJzZXRFcnJvciIsImVycm9yIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJzbmFwc2hvdCIsInN0YXRlIiwiZmV0Y2hlZEF0IiwiU25hcHNob3QiLCJfZGlzcGF0Y2giLCJiaW5kTWlkZGxld2FyZSIsInNldCIsInZhbHVlIiwiZ2V0RXJyb3IiLCJlbmRwb2ludHMiLCJ1bmRlZmluZWQiLCJlcnJvclBvbGljeSIsImdldFJlc3BvbnNlIiwiZXh0cmFjdFN0YXRlQW5kQXJncyIsImlzQWN0aXZlIiwiY2FjaGVFbmRwb2ludHMiLCJzaG91bGRRdWVyeSIsImJ1aWxkUXVlcnlLZXkiLCJWYWxpZCIsIkluZmluaXR5IiwiY291bnRSZWYiLCJpc0ludmFsaWQiLCJyZXF1aXJlc0Rlbm9ybWFsaXplIiwiZ2V0RXhwaXJ5U3RhdHVzIiwiaW52YWxpZElmU3RhbGUiLCJjcmVhdGVDb3VudFJlZiIsInBhdGhzIiwiZW50aXRpZXMiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdGllc01ldGEiLCJpbnZhbGlkRGF0YSIsImdldCIsInF1ZXJ5IiwiZ2V0UXVlcnlNZXRhIiwiaW52YWxpZGF0ZWQiLCJJbnZhbGlkSWZTdGFsZSIsInBrIiwiX2VudGl0aWVzTWV0YSRrZXkiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJ0Iiwibm9ybWFsaXplIiwiT2JqZWN0IiwidmFsdWVzIiwic29tZSIsIngiLCJjb250cm9sbGVyIiwiYWJvcnQiLCJsIiwiaSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFcnJvclR5cGVzLFxuICBTbmFwc2hvdEludGVyZmFjZSxcbiAgU2NoZW1hLFxuICBEZW5vcm1hbGl6ZSxcbiAgUXVlcnlhYmxlLFxuICBTY2hlbWFBcmdzLFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcbmltcG9ydCB7XG4gIEV4cGlyeVN0YXR1cyxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEZldGNoRnVuY3Rpb24sXG4gIFJlc29sdmVUeXBlLFxuICBEZW5vcm1hbGl6ZU51bGxhYmxlLFxuICBFbnRpdHlQYXRoLFxuICBNZW1vQ2FjaGUsXG4gIGRlbm9ybWFsaXplLFxuICB2YWxpZGF0ZVF1ZXJ5S2V5LFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IEFib3J0T3B0aW1pc3RpYyBmcm9tICcuL0Fib3J0T3B0aW1pc3RpYy5qcyc7XG5pbXBvcnQge1xuICBjcmVhdGVVbnN1YnNjcmlwdGlvbixcbiAgY3JlYXRlU3Vic2NyaXB0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMvY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGlyZUFsbCxcbiAgY3JlYXRlRmV0Y2gsXG4gIGNyZWF0ZUludmFsaWRhdGUsXG4gIGNyZWF0ZUludmFsaWRhdGVBbGwsXG4gIGNyZWF0ZVJlc2V0LFxuICBjcmVhdGVTZXQsXG4gIGNyZWF0ZVNldFJlc3BvbnNlLFxufSBmcm9tICcuL2FjdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IGVuc3VyZVBvam8gZnJvbSAnLi9lbnN1cmVQb2pvLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgU2tpcEluZmVyLFxuICBTZXRJbnZhbGlkYXRlU2NoZW1hLFxuICBTZXRNYW55U2NoZW1hLFxuICBTZXRNYW55VmFsdWUsXG4gIFNldFZhbHVlLFxufSBmcm9tICcuL3NldE1hbnlUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IFJlZHV4TWlkZGxld2FyZUFQSSB9IGZyb20gJy4uL21hbmFnZXIvYXBwbHlNYW5hZ2VyLmpzJztcbmltcG9ydCB0eXBlIHsgR0NJbnRlcmZhY2UgfSBmcm9tICcuLi9zdGF0ZS9HQ1BvbGljeS5qcyc7XG5pbXBvcnQgeyBJbW1vcnRhbEdDUG9saWN5IH0gZnJvbSAnLi4vc3RhdGUvR0NQb2xpY3kuanMnO1xuaW1wb3J0IHsgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUvcmVkdWNlci9jcmVhdGVSZWR1Y2VyLmpzJztcbmltcG9ydCBzZWxlY3RNZXRhIGZyb20gJy4uL3N0YXRlL3NlbGVjdE1ldGEuanMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25UeXBlcywgU3RhdGUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIEdlbmVyaWNEaXNwYXRjaCA9ICh2YWx1ZTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xuZXhwb3J0IHR5cGUgRGF0YUNsaWVudERpc3BhdGNoID0gKHZhbHVlOiBBY3Rpb25UeXBlcykgPT4gUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sbGVyQ29uc3RydWN0b3JQcm9wczxcbiAgRCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IERhdGFDbGllbnREaXNwYXRjaCxcbj4ge1xuICBkaXNwYXRjaD86IEQ7XG4gIGdldFN0YXRlPzogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIG1lbW8/OiBQaWNrPE1lbW9DYWNoZSwgJ2Rlbm9ybWFsaXplJyB8ICdxdWVyeScgfCAnYnVpbGRRdWVyeUtleSc+O1xuICBnY1BvbGljeT86IEdDSW50ZXJmYWNlO1xufVxuXG5jb25zdCB1bnNldERpc3BhdGNoID0gKGFjdGlvbjogdW5rbm93bik6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYERpc3BhdGNoaW5nIHdoaWxlIGNvbnN0cnVjdGluZyB5b3VyIG1pZGRsZXdhcmUgaXMgbm90IGFsbG93ZWQuIGAgK1xuICAgICAgYE90aGVyIG1pZGRsZXdhcmUgd291bGQgbm90IGJlIGFwcGxpZWQgdG8gdGhpcyBkaXNwYXRjaC5gLFxuICApO1xufTtcbmNvbnN0IHVuc2V0U3RhdGUgPSAoKTogU3RhdGU8dW5rbm93bj4gPT4ge1xuICAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgRGF0YVByb3ZpZGVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuXG4vKipcbiAqIEltcGVyYXRpdmUgY29udHJvbCBvZiBSZWFjdGl2ZSBEYXRhIENsaWVudCBzdG9yZVxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250cm9sbGVyPFxuICAvLyBOT1RFOiBXZSB0ZW1wbGF0ZSBvbiBlbnRpcmUgZGlzcGF0Y2gsIHNvIHdlIGNhbiBiZSBjb250cmF2YXJpYW50IG9uIEFjdGlvblR5cGVzXG4gIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4+IHtcbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIFJlYWN0aXZlIERhdGEgQ2xpZW50IHJlZHVjZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZGlzcGF0Y2hcbiAgICovXG4gIGRlY2xhcmUgcHJvdGVjdGVkIF9kaXNwYXRjaDogRDtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhdGVzdCBzdGF0ZSBzbmFwc2hvdCB0aGF0IGlzIGZ1bGx5IGNvbW1pdHRlZC5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBpbXBlcmF0aXZlIHVzZS1jYXNlcyBsaWtlIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBUaGlzIHNob3VsZCAqbm90KiBiZSB1c2VkIHRvIHJlbmRlcjsgaW5zdGVhZCB1c2VTdXNwZW5zZSgpIG9yIHVzZUNhY2hlKClcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRTdGF0ZVxuICAgKi9cbiAgZGVjbGFyZSBnZXRTdGF0ZTogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIC8qKlxuICAgKiBTaW5nbGV0b24gdG8gbWFpbnRhaW4gcmVmZXJlbnRpYWwgZXF1YWxpdHkgYmV0d2VlbiBjYWxsc1xuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBtZW1vOiBQaWNrPFxuICAgIE1lbW9DYWNoZSxcbiAgICAnZGVub3JtYWxpemUnIHwgJ3F1ZXJ5JyB8ICdidWlsZFF1ZXJ5S2V5J1xuICA+O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBnY1BvbGljeTogR0NJbnRlcmZhY2U7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGRpc3BhdGNoID0gdW5zZXREaXNwYXRjaCBhcyBhbnksXG4gICAgZ2V0U3RhdGUgPSB1bnNldFN0YXRlLFxuICAgIG1lbW8gPSBuZXcgTWVtb0NhY2hlKCksXG4gICAgZ2NQb2xpY3kgPSBuZXcgSW1tb3J0YWxHQ1BvbGljeSgpLFxuICB9OiBDb250cm9sbGVyQ29uc3RydWN0b3JQcm9wczxEPiA9IHt9KSB7XG4gICAgdGhpcy5fZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgdGhpcy5tZW1vID0gbWVtbztcbiAgICB0aGlzLmdjUG9saWN5ID0gZ2NQb2xpY3k7XG4gIH1cblxuICAvLyBUT0RPOiBkcm9wIHdoZW4gZHJvcCBzdXBwb3J0IGZvciBkZXN0cnVjdHVyaW5nICgwLjE0IGFuZCBiZWxvdylcbiAgc2V0IGRpc3BhdGNoKGRpc3BhdGNoOiBEKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLl9kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICB9XG5cbiAgLy8gVE9ETzogZHJvcCB3aGVuIGRyb3Agc3VwcG9ydCBmb3IgZGVzdHJ1Y3R1cmluZyAoMC4xNCBhbmQgYmVsb3cpXG4gIGdldCBkaXNwYXRjaCgpOiBEIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2g7XG4gIH1cblxuICBiaW5kTWlkZGxld2FyZSh7XG4gICAgZGlzcGF0Y2gsXG4gICAgZ2V0U3RhdGUsXG4gIH06IHtcbiAgICBkaXNwYXRjaDogRDtcbiAgICBnZXRTdGF0ZTogUmVkdXhNaWRkbGV3YXJlQVBJWydnZXRTdGF0ZSddO1xuICB9KSB7XG4gICAgdGhpcy5fZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIEFjdGlvbiBEaXNwYXRjaGVycyAqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVuZHBvaW50IHdpdGggZ2l2ZW4gYXJncywgdXBkYXRpbmcgdGhlIFJlYWN0aXZlIERhdGEgQ2xpZW50IGNhY2hlIHdpdGggdGhlIHJlc3BvbnNlIG9yIGVycm9yIHVwb24gY29tcGxldGlvbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNmZXRjaFxuICAgKi9cbiAgZmV0Y2ggPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+IH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IEVbJ3NjaGVtYSddIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IFJldHVyblR5cGU8RT5cbiAgOiBQcm9taXNlPERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPj4gPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZUZldGNoKGVuZHBvaW50LCB7XG4gICAgICBhcmdzLFxuICAgIH0pO1xuICAgIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcblxuICAgIGlmIChlbmRwb2ludC5zY2hlbWEpIHtcbiAgICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlLnRoZW4oaW5wdXQgPT5cbiAgICAgICAgZGVub3JtYWxpemUoZW5kcG9pbnQuc2NoZW1hLCBpbnB1dCwge30sIGFyZ3MpLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogRmV0Y2hlcyBvbmx5IGlmIGVuZHBvaW50IGlzIGNvbnNpZGVyZWQgJ3N0YWxlJzsgb3RoZXJ3aXNlIHJldHVybnMgdW5kZWZpbmVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hJZlN0YWxlXG4gICAqL1xuICBmZXRjaElmU3RhbGUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+IH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IEVbJ3NjaGVtYSddIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IFJldHVyblR5cGU8RT4gfCBSZXNvbHZlVHlwZTxFPlxuICA6IFByb21pc2U8RGVub3JtYWxpemU8RVsnc2NoZW1hJ10+PiB8IERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPiA9PiB7XG4gICAgY29uc3QgeyBkYXRhLCBleHBpcmVzQXQsIGV4cGlyeVN0YXR1cyB9ID0gdGhpcy5nZXRSZXNwb25zZU1ldGEoXG4gICAgICBlbmRwb2ludCxcbiAgICAgIC4uLmFyZ3MsXG4gICAgICB0aGlzLmdldFN0YXRlKCksXG4gICAgKTtcbiAgICBpZiAoZXhwaXJ5U3RhdHVzICE9PSBFeHBpcnlTdGF0dXMuSW52YWxpZCAmJiBEYXRlLm5vdygpIDw9IGV4cGlyZXNBdClcbiAgICAgIHJldHVybiBkYXRhIGFzIGFueTtcbiAgICByZXR1cm4gdGhpcy5mZXRjaChlbmRwb2ludCwgLi4uYXJncyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZvcmNlcyByZWZldGNoaW5nIGFuZCBzdXNwZW5zZSBvbiB1c2VTdXNwZW5zZSB3aXRoIHRoZSBzYW1lIEVuZHBvaW50IGFuZCBwYXJhbWV0ZXJzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVcbiAgICovXG4gIGludmFsaWRhdGUgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlSW52YWxpZGF0ZShlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIG9uIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlQWxsXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGludmFsaWRhdGlvbiBpcyBjb21taXRlZC5cbiAgICovXG4gIGludmFsaWRhdGVBbGwgPSAob3B0aW9uczogeyB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4gfSkgPT5cbiAgICB0aGlzLmRpc3BhdGNoKGNyZWF0ZUludmFsaWRhdGVBbGwoKGtleTogc3RyaW5nKSA9PiBvcHRpb25zLnRlc3RLZXkoa2V5KSkpO1xuXG4gIC8qKlxuICAgKiBTZXRzIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cyB0byBiZSBTVEFMRS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNleHBpcmVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXhwaXJ5IGlzIGNvbW1pdGVkLiAqTk9UKiBmZXRjaCBwcm9taXNlXG4gICAqL1xuICBleHBpcmVBbGwgPSAob3B0aW9uczogeyB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4gfSkgPT5cbiAgICB0aGlzLmRpc3BhdGNoKGNyZWF0ZUV4cGlyZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgZW50aXJlIFJlYWN0aXZlIERhdGEgQ2xpZW50IGNhY2hlLiBBbGwgaW5mbGlnaHQgcmVxdWVzdHMgd2lsbCBub3QgcmVzb2x2ZS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU2V0cyB2YWx1ZSBmb3IgdGhlIFF1ZXJ5YWJsZSBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRcbiAgICovXG4gIHNldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uU2NoZW1hQXJnczxTPixcbiAgICAgIFNraXBJbmZlcjxcbiAgICAgICAgU2V0VmFsdWU8Uz4gfCAoKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiBTZXRWYWx1ZTxTPiksXG4gICAgICAgIFNcbiAgICAgID4sXG4gICAgXVxuICApOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBTZXRzIGV2ZXJ5IHJvdyBvZiBhbiBBcnJheSBvciBWYWx1ZXMgb2Ygb25lIEVudGl0eSAob3IgVW5pb24pIGluIG9uZSBub3JtYWxpemUsXG4gICAqIG9yIGludmFsaWRhdGVzIHRoZSBvbmUgRW50aXR5IGFuIEludmFsaWRhdGUgc2NoZW1hJ3MgdmFsdWUgaWRlbnRpZmllcy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRcbiAgICovXG4gIHNldDxTIGV4dGVuZHMgU2V0TWFueVNjaGVtYSB8IFNldEludmFsaWRhdGVTY2hlbWE+KFxuICAgIHNjaGVtYTogUyxcbiAgICB2YWx1ZTogU2tpcEluZmVyPFNldE1hbnlWYWx1ZTxTPiwgUz4sXG4gICk6IFByb21pc2U8dm9pZD47XG5cbiAgc2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uU2NoZW1hQXJnczxTPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVTZXQoc2NoZW1hLCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgU2NoZW1hQXJnczxTPixcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICAgIC8vIFRPRE86IHJlamVjdCB3aXRoIGVycm9yIGlmIHRoaXMgZmFpbHMgaW4gcmVkdWNlclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyByZXNwb25zZSBmb3IgdGhlIEVuZHBvaW50IGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFJlc3BvbnNlXG4gICAqL1xuICBzZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIGFueV1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFJlc29sdmVUeXBlPEU+ID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldFJlc3BvbnNlKGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gZXJyb3IgcmVzcG9uc2UgZm9yIHRoZSBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvclxuICAgKi9cbiAgc2V0RXJyb3IgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBFcnJvcl1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IEVycm9yID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldFJlc3BvbnNlKGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3I6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVzb2x2ZXMgYW4gaW5mbGlnaHQgZmV0Y2guXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjcmVzb2x2ZVxuICAgKi9cbiAgcmVzb2x2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgbWV0YTpcbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogRXJyb3I7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogYW55O1xuICAgICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgICAgIGVycm9yPzogZmFsc2UgfCB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVNldFJlc3BvbnNlKGVuZHBvaW50LCBtZXRhIGFzIGFueSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXJrcyBhIG5ldyBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzdWJzY3JpYmVcbiAgICovXG4gIHN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVTdWJzY3JpcHRpb24oZW5kcG9pbnQsIHtcbiAgICAgICAgICBhcmdzOiBhcmdzIGFzIFBhcmFtZXRlcnM8RT4sXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtzIGNvbXBsZXRpb24gb2Ygc3Vic2NyaXB0aW9uIHRvIGEgZ2l2ZW4gRW5kcG9pbnQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjdW5zdWJzY3JpYmVcbiAgICovXG4gIHVuc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsID9cbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgIGNyZWF0ZVVuc3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKioqKioqKioqKioqKiogTW9yZSAqKioqKioqKioqKioqKiovXG5cbiAgLyogVE9ETzpcbiAgYWJvcnQgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogUHJvbWlzZTx2b2lkPlxuICAqL1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgc25hcHNob3QgKGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdClcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzbmFwc2hvdFxuICAgKi9cbiAgc25hcHNob3QgPSAoc3RhdGU6IFN0YXRlPHVua25vd24+LCBmZXRjaGVkQXQ/OiBudW1iZXIpOiBTbmFwc2hvdDx1bmtub3duPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBTbmFwc2hvdCh0aGlzLCBzdGF0ZSwgZmV0Y2hlZEF0KTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgZXJyb3IsIGlmIGFueSwgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQuIFJldHVybnMgdW5kZWZpbmVkIGZvciBubyBlcnJvcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0RXJyb3JcbiAgICovXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDpcbiAgICAgIHwgcmVhZG9ubHkgW251bGwsIFN0YXRlPHVua25vd24+XVxuICAgICAgfCByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgU3RhdGU8dW5rbm93bj5dXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDpcbiAgICAgIHwgcmVhZG9ubHkgW251bGwsIFN0YXRlPHVua25vd24+XVxuICAgICAgfCByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT4sIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yKFxuICAgIGVuZHBvaW50OiBFbmRwb2ludEludGVyZmFjZSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4udW5rbm93bltdLCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHJlc3RbMF0gPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSk7XG4gICAgY29uc3Qga2V5ID0gZW5kcG9pbnQua2V5KC4uLmFyZ3MpO1xuXG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgY29uc3QgZXJyb3IgPSBzdGF0ZS5lbmRwb2ludHNba2V5XTtcblxuICAgIGlmIChlcnJvciAhPT0gdW5kZWZpbmVkICYmIG1ldGE/LmVycm9yUG9saWN5ID09PSAnc29mdCcpIHJldHVybjtcblxuICAgIHJldHVybiBtZXRhPy5lcnJvciBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRSZXNwb25zZVxuICAgKi9cbiAgZ2V0UmVzcG9uc2U8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uKHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF0pLFxuICAgICAgU3RhdGU8dW5rbm93bj4sXG4gICAgXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2UoXG4gICAgZW5kcG9pbnQ6IEVuZHBvaW50SW50ZXJmYWNlLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi51bmtub3duW10sIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogdW5rbm93bjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBjb3VudFJlZjogKCkgPT4gKCkgPT4gdm9pZDtcbiAgfSB7XG4gICAgLy8gVE9ETzogYnJlYWtpbmc6IG9ubHkgcmV0dXJuIGRhdGFcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNwb25zZU1ldGEoZW5kcG9pbnQsIC4uLnJlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIChnbG9iYWxseSByZWZlcmVudGlhbGx5IHN0YWJsZSkgcmVzcG9uc2UgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQvYXJncyBwYWlyIGZyb20gc3RhdGUgZ2l2ZW4uXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UmVzcG9uc2VNZXRhXG4gICAqL1xuICBnZXRSZXNwb25zZU1ldGE8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLihyZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdKSxcbiAgICAgIFN0YXRlPHVua25vd24+LFxuICAgIF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YShcbiAgICBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLnVua25vd25bXSwgU3RhdGU8dW5rbm93bj5dXG4gICk6IHtcbiAgICBkYXRhOiB1bmtub3duO1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICBjb25zdCBbc3RhdGUsIGFyZ3NdID0gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0KTtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGFyZ3MubGVuZ3RoICE9PSAxIHx8IGFyZ3NbMF0gIT09IG51bGw7XG4gICAgY29uc3Qga2V5ID0gaXNBY3RpdmUgPyBlbmRwb2ludC5rZXkoLi4uYXJncykgOiAnJztcbiAgICBjb25zdCBjYWNoZUVuZHBvaW50cyA9IGlzQWN0aXZlID8gc3RhdGUuZW5kcG9pbnRzW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2NoZW1hID0gZW5kcG9pbnQuc2NoZW1hO1xuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGxldCBleHBpcmVzQXQgPSBtZXRhPy5leHBpcmVzQXQ7XG4gICAgLy8gaWYgd2UgaGF2ZSBubyBlbmRwb2ludCBlbnRyeSwgYW5kIG91ciBlbmRwb2ludCBoYXMgYSBzY2hlbWEgLSB0cnkgcXVlcnlpbmcgdGhlIHN0b3JlXG4gICAgY29uc3Qgc2hvdWxkUXVlcnkgPSBjYWNoZUVuZHBvaW50cyA9PT0gdW5kZWZpbmVkICYmIHNjaGVtYSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgaW5wdXQgPVxuICAgICAgc2hvdWxkUXVlcnkgP1xuICAgICAgICAvLyBub3RoaW5nIGluIGVuZHBvaW50cyBjYWNoZSwgc28gdHJ5IHF1ZXJ5aW5nIGlmIHdlIGhhdmUgYSBzY2hlbWEgdG8gZG8gc29cbiAgICAgICAgdGhpcy5tZW1vLmJ1aWxkUXVlcnlLZXkoc2NoZW1hLCBhcmdzLCBzdGF0ZSwga2V5KVxuICAgICAgOiBjYWNoZUVuZHBvaW50cztcblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIC8vIHdoZW4gbm90IGFjdGl2ZSBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeSBpbnB1dCB3aXRob3V0IGRlbm9ybWFsaXppbmdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IGlucHV0IGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICBpZiAoc2hvdWxkUXVlcnkpIHtcbiAgICAgIGlzSW52YWxpZCA9ICF2YWxpZGF0ZVF1ZXJ5S2V5KGlucHV0KTtcbiAgICAgIC8vIGVuZHBvaW50IHdpdGhvdXQgZW50aXRpZXNcbiAgICB9IGVsc2UgaWYgKCFzY2hlbWEgfHwgIXJlcXVpcmVzRGVub3JtYWxpemUoc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogY2FjaGVFbmRwb2ludHMsXG4gICAgICAgIGV4cGlyeVN0YXR1czogdGhpcy5nZXRFeHBpcnlTdGF0dXMoXG4gICAgICAgICAgY2FjaGVFbmRwb2ludHMgPT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAhIWVuZHBvaW50LmludmFsaWRJZlN0YWxlLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgICksXG4gICAgICAgIGV4cGlyZXNBdDogZXhwaXJlc0F0IHx8IDAsXG4gICAgICAgIGNvdW50UmVmOiB0aGlzLmdjUG9saWN5LmNyZWF0ZUNvdW50UmVmKHsga2V5IH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRhdGEsIHBhdGhzIH0gPSB0aGlzLm1lbW8uZGVub3JtYWxpemUoXG4gICAgICBzY2hlbWEsXG4gICAgICBpbnB1dCxcbiAgICAgIHN0YXRlLmVudGl0aWVzLFxuICAgICAgYXJncyxcbiAgICApIGFzIHsgZGF0YTogYW55OyBwYXRoczogRW50aXR5UGF0aFtdIH07XG5cbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgLy8gbm90ZTogaXNJbnZhbGlkIGNhbiBvbmx5IGJlIHRydWUgaWYgc2hvdWxkUXVlcnkgaXMgdHJ1ZVxuICAgICAgaWYgKGlzSW52YWxpZCkgZXhwaXJlc0F0ID0gMTtcbiAgICAgIC8vIGZhbGxiYWNrIHRvIGVudGl0eSBleHBpcnkgdGltZVxuICAgICAgZWxzZSBleHBpcmVzQXQgPSBlbnRpdHlFeHBpcmVzQXQocGF0aHMsIHN0YXRlLmVudGl0aWVzTWV0YSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZERhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIElOVkFMSUQgc3ltYm9sIChlLmcuIGRlbGV0ZWQgZW50aXR5KSBpcyBhbiBpbnRlcm5hbCBtYXJrZXI7IGV4cG9zZSBpdCBhcyBtaXNzaW5nIGRhdGFcbiAgICAgIGRhdGE6IGludmFsaWREYXRhID8gdW5kZWZpbmVkIDogZGF0YSxcbiAgICAgIGV4cGlyeVN0YXR1czogdGhpcy5nZXRFeHBpcnlTdGF0dXMoXG4gICAgICAgIGludmFsaWREYXRhLFxuICAgICAgICAhIWVuZHBvaW50LmludmFsaWRJZlN0YWxlIHx8IGlzSW52YWxpZCxcbiAgICAgICAgbWV0YSxcbiAgICAgICksXG4gICAgICBleHBpcmVzQXQsXG4gICAgICBjb3VudFJlZjogdGhpcy5nY1BvbGljeS5jcmVhdGVDb3VudFJlZih7IGtleSwgcGF0aHMgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRcbiAgICovXG4gIGdldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uU2NoZW1hQXJnczxTPixcbiAgICAgIFBpY2s8U3RhdGU8dW5rbm93bj4sICdlbnRpdGllcycgfCAnaW5kZXhlcyc+LFxuICAgIF1cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW3N0YXRlLCBhcmdzXSA9IGV4dHJhY3RTdGF0ZUFuZEFyZ3MocmVzdCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHRoaXMubWVtby5xdWVyeShzY2hlbWEsIGFyZ3MsIHN0YXRlKTtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdzeW1ib2wnID8gdW5kZWZpbmVkIDogZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWE7IHByb3ZpZGluZyByZWxhdGVkIG1ldGFkYXRhXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UXVlcnlNZXRhXG4gICAqL1xuICBnZXRRdWVyeU1ldGE8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLlNjaGVtYUFyZ3M8Uz4sXG4gICAgICBQaWNrPFN0YXRlPHVua25vd24+LCAnZW50aXRpZXMnIHwgJ2luZGV4ZXMnPixcbiAgICBdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICBjb25zdCBbc3RhdGUsIGFyZ3NdID0gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0KTtcblxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IHRoaXMubWVtby5xdWVyeShzY2hlbWEsIGFyZ3MsIHN0YXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCcgPyB1bmRlZmluZWQgOiBkYXRhLFxuICAgICAgY291bnRSZWY6IHRoaXMuZ2NQb2xpY3kuY3JlYXRlQ291bnRSZWYoeyBwYXRocyB9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBpcnlTdGF0dXMoXG4gICAgaW52YWxpZERhdGE6IGJvb2xlYW4sXG4gICAgaW52YWxpZElmU3RhbGU6IGJvb2xlYW4sXG4gICAgbWV0YTogeyBlcnJvcj86IHVua25vd247IGludmFsaWRhdGVkPzogdW5rbm93biB9ID0ge30sXG4gICkge1xuICAgIC8vIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gKFxuICAgICAgbWV0YS5pbnZhbGlkYXRlZCB8fCAoaW52YWxpZERhdGEgJiYgIW1ldGEuZXJyb3IpID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgIDogaW52YWxpZERhdGEgfHwgaW52YWxpZElmU3RhbGUgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgIDogRXhwaXJ5U3RhdHVzLlZhbGlkXG4gICAgKTtcbiAgfVxufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IEVudGl0eVBhdGhbXSxcbiAgZW50aXRpZXNNZXRhOiB7XG4gICAgcmVhZG9ubHkgW2VudGl0eUtleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiB7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyOyAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgRGF0YVByb3ZpZGVyXG4gICAgICB9O1xuICAgIH07XG4gIH0sXG4pIHtcbiAgbGV0IGV4cGlyZXNBdCA9IEluZmluaXR5O1xuICBmb3IgKGNvbnN0IHsga2V5LCBwayB9IG9mIHBhdGhzKSB7XG4gICAgY29uc3QgZW50aXR5RXhwaXJ5ID0gZW50aXRpZXNNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBXaGV0aGVyIGBkZW5vcm1hbGl6ZSgpYCBtdXN0IHJ1biB0byByZWNvbnN0cnVjdCB0aGUgcmVzcG9uc2UuXG4gKlxuICogVHJ1ZSBpZmYgc29tZSBub2RlIGluIHRoZSBzY2hlbWEgdHJlZSBkZWZpbmVzIGBub3JtYWxpemVgIOKAlCBtZWFuaW5nIGl0XG4gKiB0cmFuc2Zvcm1zIHRoZSByZXNwb25zZSB3aGVuIHdyaXR0ZW4gKGVudGl0eSB3cml0ZSwgcG9seW1vcnBoaWMgaG9pc3QsXG4gKiBsYXp5IGRlbGVnYXRpb24sIGV0Yy4pLCBzbyB0aGUgY2FjaGVkIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgcmVzcG9uc2UuXG4gKiBNaXJyb3JzIHRoZSBkaXNwYXRjaCBpbiBgZ2V0VmlzaXQudHNgOiBzY2hlbWEgY2xhc3NlcyBhcmUgZGV0ZWN0ZWQgaGVyZVxuICogYnkgdGhlIHNhbWUgaG9vayB0aGUgdmlzaXQgd2Fsa2VyIHVzZXMsIHNvIHdlIG5ldmVyIG5lZWQgdG8gd2FsayB0aGVpclxuICogaW5zdGFuY2UgZmllbGRzLlxuICovXG5mdW5jdGlvbiByZXF1aXJlc0Rlbm9ybWFsaXplKHNjaGVtYTogU2NoZW1hKTogYm9vbGVhbiB7XG4gIGlmICghc2NoZW1hKSByZXR1cm4gZmFsc2U7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgcmVxdWlyZXNEZW5vcm1hbGl6ZShzY2hlbWFbMF0pO1xuICAvLyBNdXN0IHJlamVjdCBwcmltaXRpdmVzIGJlZm9yZSBwcm9iaW5nIGAubm9ybWFsaXplYCDigJQgYFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplYCBleGlzdHMuXG4gIGNvbnN0IHQgPSB0eXBlb2Ygc2NoZW1hO1xuICBpZiAodCAhPT0gJ29iamVjdCcgJiYgdCAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIChzY2hlbWEgYXMgYW55KS5ub3JtYWxpemUgPT09ICdmdW5jdGlvbicpIHJldHVybiB0cnVlO1xuICAvLyBQbGFpbi1vYmplY3Qgc2NoZW1hIG1hcCAoZS5nLiBgeyBkYXRhOiBbVGFjb3NdLCBwYWdlOiB7IC4uLiB9IH1gKS5cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc2NoZW1hIGFzIG9iamVjdCkuc29tZSh4ID0+IHJlcXVpcmVzRGVub3JtYWxpemUoeCkpO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgYWJvcnQgPSBuZXcgQWJvcnRPcHRpbWlzdGljKCk7XG5cbiAgcHJpdmF0ZSBzdGF0ZTogU3RhdGU8VD47XG4gIHByaXZhdGUgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbiAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFib3J0ID0gU25hcHNob3QuYWJvcnQ7XG5cbiAgY29uc3RydWN0b3IoY29udHJvbGxlcjogQ29udHJvbGxlciwgc3RhdGU6IFN0YXRlPFQ+LCBmZXRjaGVkQXQgPSAwKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgdGhpcy5mZXRjaGVkQXQgPSBmZXRjaGVkQXQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIERhdGEgQWNjZXNzICoqKioqKioqKioqKioqKi9cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFJlc3BvbnNlICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZU1ldGEgKi9cbiAgZ2V0UmVzcG9uc2VNZXRhPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZU1ldGE8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlTWV0YShlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0RXJyb3IgKi9cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldEVycm9yKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZWQgbWVtb2l6ZWQgdmFsdWUgZm9yIGFueSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLmFyZ3M6IFNjaGVtYUFyZ3M8Uz5cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXQoc2NoZW1hLCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWE7IHByb3ZpZGluZyByZWxhdGVkIG1ldGFkYXRhXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFF1ZXJ5TWV0YVxuICAgKi9cbiAgZ2V0UXVlcnlNZXRhPFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5hcmdzOiBTY2hlbWFBcmdzPFM+XG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFF1ZXJ5TWV0YShzY2hlbWEsIC4uLmFyZ3MsIHRoaXMuc3RhdGUpO1xuICB9XG59XG5cbi8qKiBFeHRyYWN0IHN0YXRlIGFuZCBhcmdzIGZyb20gcmVzdCBwYXJhbXMsIGFwcGx5aW5nIGVuc3VyZVBvam8gdG8gYXJncyAqL1xuZnVuY3Rpb24gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0OiByZWFkb25seSB1bmtub3duW10pOiBbU3RhdGU8YW55PiwgYW55W11dIHtcbiAgY29uc3QgbCA9IHJlc3QubGVuZ3RoO1xuICBjb25zdCBhcmdzOiBhbnkgPSBuZXcgQXJyYXkobCAtIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGwgLSAxOyBpKyspIHtcbiAgICAvLyBoYW5kbGUgRm9ybURhdGFcbiAgICBhcmdzW2ldID0gZW5zdXJlUG9qbyhyZXN0W2ldKTtcbiAgfVxuICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgcmV0dXJuIFtyZXN0W2wgLSAxXSBhcyBTdGF0ZTxhbnk+LCBhcmdzXTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBUUEsU0FDRUEsWUFBWSxFQU1aQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsZ0JBQWdCLFFBQ1gsd0JBQXdCO0FBRS9CLE9BQU9DLGVBQWUsTUFBTSxzQkFBc0I7QUFDbEQsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsUUFDYixpQ0FBaUM7QUFDeEMsU0FDRUMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsbUJBQW1CLEVBQ25CQyxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsaUJBQWlCLFFBQ1osb0JBQW9CO0FBQzNCLE9BQU9DLFVBQVUsTUFBTSxpQkFBaUI7QUFXeEMsU0FBU0MsZ0JBQWdCLFFBQVEsc0JBQXNCO0FBQ3ZELFNBQVNDLFlBQVksUUFBUSxtQ0FBbUM7QUFDaEUsT0FBT0MsVUFBVSxNQUFNLHdCQUF3QjtBQWUvQyxNQUFNQyxhQUFhLEdBQUlDLE1BQWUsSUFBb0I7RUFDeEQsTUFBTSxJQUFJQyxLQUFLLENBQ2IsaUVBQWlFLEdBQy9ELHlEQUNKLENBQUM7QUFDSCxDQUFDO0FBQ0QsTUFBTUMsVUFBVSxHQUFHQSxDQUFBLEtBQXNCO0VBQ3ZDO0VBQ0E7RUFDQSxPQUFPTCxZQUFZO0FBQ3JCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1NLFVBQVUsQ0FHN0I7RUFDQTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztFQUVFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFNRTtBQUNGO0FBQ0E7O0VBR0VDLFdBQVdBLENBQUM7SUFDVkMsUUFBUSxHQUFHTixhQUFvQjtJQUMvQk8sUUFBUSxHQUFHSixVQUFVO0lBQ3JCSyxJQUFJLEdBQUcsSUFBSXpCLFNBQVMsQ0FBQyxDQUFDO0lBQ3RCMEIsUUFBUSxHQUFHLElBQUlaLGdCQUFnQixDQUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensurePojo.d.ts","sourceRoot":"","sources":["../../src/controller/ensurePojo.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,SAIZ,GAAG,QAIoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ensurePojo.d.ts","sourceRoot":"","sources":["../../src/controller/ensurePojo.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,SAIZ,GAAG,QAIoC,CAAC;eACpC,UAAU"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** Value types for `Controller.set()`, including batch `set([Entity], rows)` */
|
|
2
|
+
import type { Denormalize, EntityInterface } from '@data-client/normalizr';
|
|
3
|
+
/** What one row normalizes to: a reference to one stored entity */
|
|
4
|
+
type EntityRef = string | {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly schema: string;
|
|
7
|
+
};
|
|
8
|
+
/** Schemas that write each row to one stored entity: Entity, Union, or Invalidate (batch delete).
|
|
9
|
+
* Query, All and Collection don't: they normalize to lists, or Collection keys by args batch set() lacks. */
|
|
10
|
+
type SetEntitySchema = EntityInterface | EntityRefSchema;
|
|
11
|
+
/** Union or Invalidate */
|
|
12
|
+
type EntityRefSchema = {
|
|
13
|
+
_normalizeNullable(): EntityRef | undefined;
|
|
14
|
+
pk?: never;
|
|
15
|
+
};
|
|
16
|
+
/** `[Entity]`, `schema.Array(Entity)` or `schema.Values(Entity)` (or of a Union or Invalidate) */
|
|
17
|
+
export type SetManySchema = readonly SetEntitySchema[] | {
|
|
18
|
+
readonly schema: SetEntitySchema | Record<string, EntityInterface>;
|
|
19
|
+
schemaKey(): string;
|
|
20
|
+
queryKey(...args: any): undefined;
|
|
21
|
+
pk?: never;
|
|
22
|
+
};
|
|
23
|
+
/** `new Invalidate(Entity)` (or of a Union): not Queryable, since its queryKey() returns undefined */
|
|
24
|
+
export type SetInvalidateSchema = EntityRefSchema & {
|
|
25
|
+
queryKey(...args: any): undefined;
|
|
26
|
+
query?: never;
|
|
27
|
+
};
|
|
28
|
+
type IsUnion<T, U = T> = T extends unknown ? [
|
|
29
|
+
U
|
|
30
|
+
] extends [T] ? false : true : never;
|
|
31
|
+
type FunctionKeys<U> = {
|
|
32
|
+
[K in keyof U]: U[K] extends (...args: any) => any ? K : never;
|
|
33
|
+
}[keyof U];
|
|
34
|
+
/** Raw input for one field: numbers and strings coerce (literals stay exact);
|
|
35
|
+
* objects are pre-normalize */
|
|
36
|
+
type SetField<T> = T extends number ? number extends T ? T | string : T : T extends string ? string extends T ? T | number : T : T extends object ? unknown : T;
|
|
37
|
+
/** Fields of one row (or a coerced primitive); like EntityFields, but distributive
|
|
38
|
+
* and without key remapping (TS 4.0). A Union gets one row per member, so a
|
|
39
|
+
* discriminator like `type` selects the member the other fields are checked against. */
|
|
40
|
+
type SetRow<U> = 0 extends 1 & U ? {
|
|
41
|
+
readonly [k: string]: any;
|
|
42
|
+
} : U extends object ? {
|
|
43
|
+
readonly [K in Exclude<keyof U, FunctionKeys<U>>]?: SetField<U[K]>;
|
|
44
|
+
} : SetField<U>;
|
|
45
|
+
/** Keeps S inferred from the schema alone: inferring it from the value too would
|
|
46
|
+
* walk the value's type against every conditional in SetValue (TS 5.4 has NoInfer) */
|
|
47
|
+
export type SkipInfer<T, S> = [T][S extends unknown ? 0 : never];
|
|
48
|
+
export type SetManyValue<S> = S extends readonly (infer E)[] ? true extends IsUnion<E> ? readonly {
|
|
49
|
+
'Use a Union schema for several Entity types': never;
|
|
50
|
+
}[] : readonly SetRow<Denormalize<E>>[] : SetValue<S>;
|
|
51
|
+
/** Raw input `set()` normalizes for a Queryable */
|
|
52
|
+
export type SetValue<S> = InputSchema<InputSchema<InputSchema<S>>> extends infer N ? N extends EntityInterface ? SetRow<Denormalize<N>> : SetInput<Denormalize<N>> : never;
|
|
53
|
+
/** Query normalizes with its inner schema; its process() output is not input
|
|
54
|
+
*
|
|
55
|
+
* Applied three times in SetValue to unwrap nested Queries (TS 4.0 has no recursive aliases)
|
|
56
|
+
*/
|
|
57
|
+
type InputSchema<S> = S extends ({
|
|
58
|
+
readonly schema: infer Sch;
|
|
59
|
+
process(...args: any): any;
|
|
60
|
+
pk?: never;
|
|
61
|
+
}) ? Sch : S;
|
|
62
|
+
/** Raw input for a denormalized value, like a Collection's list or a Union's row */
|
|
63
|
+
type SetInput<T> = 0 extends 1 & T ? any : [
|
|
64
|
+
T
|
|
65
|
+
] extends [readonly (infer U)[]] ? readonly SetRow<U>[] : string extends keyof T ? {
|
|
66
|
+
readonly [k: string]: SetRow<T[keyof T]>;
|
|
67
|
+
} : SetRow<T>;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=setManyTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setManyTypes.d.ts","sourceRoot":"","sources":["../../src/controller/setManyTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvc2V0TWFueVR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBWYWx1ZSB0eXBlcyBmb3IgYENvbnRyb2xsZXIuc2V0KClgLCBpbmNsdWRpbmcgYmF0Y2ggYHNldChbRW50aXR5XSwgcm93cylgICovXG5pbXBvcnQgdHlwZSB7IERlbm9ybWFsaXplLCBFbnRpdHlJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuLyoqIFdoYXQgb25lIHJvdyBub3JtYWxpemVzIHRvOiBhIHJlZmVyZW5jZSB0byBvbmUgc3RvcmVkIGVudGl0eSAqL1xudHlwZSBFbnRpdHlSZWYgPSBzdHJpbmcgfCB7IHJlYWRvbmx5IGlkOiBzdHJpbmc7IHJlYWRvbmx5IHNjaGVtYTogc3RyaW5nIH07XG5cbi8qKiBTY2hlbWFzIHRoYXQgd3JpdGUgZWFjaCByb3cgdG8gb25lIHN0b3JlZCBlbnRpdHk6IEVudGl0eSwgVW5pb24sIG9yIEludmFsaWRhdGUgKGJhdGNoIGRlbGV0ZSkuXG4gKiBRdWVyeSwgQWxsIGFuZCBDb2xsZWN0aW9uIGRvbid0OiB0aGV5IG5vcm1hbGl6ZSB0byBsaXN0cywgb3IgQ29sbGVjdGlvbiBrZXlzIGJ5IGFyZ3MgYmF0Y2ggc2V0KCkgbGFja3MuICovXG50eXBlIFNldEVudGl0eVNjaGVtYSA9IEVudGl0eUludGVyZmFjZSB8IEVudGl0eVJlZlNjaGVtYTtcblxuLyoqIFVuaW9uIG9yIEludmFsaWRhdGUgKi9cbnR5cGUgRW50aXR5UmVmU2NoZW1hID0ge1xuICBfbm9ybWFsaXplTnVsbGFibGUoKTogRW50aXR5UmVmIHwgdW5kZWZpbmVkO1xuICAvLyBleGNsdWRlcyBFbnRpdHkgYW5kIENvbGxlY3Rpb25cbiAgcGs/OiBuZXZlcjtcbn07XG5cbi8qKiBgW0VudGl0eV1gLCBgc2NoZW1hLkFycmF5KEVudGl0eSlgIG9yIGBzY2hlbWEuVmFsdWVzKEVudGl0eSlgIChvciBvZiBhIFVuaW9uIG9yIEludmFsaWRhdGUpICovXG5leHBvcnQgdHlwZSBTZXRNYW55U2NoZW1hID1cbiAgfCByZWFkb25seSBTZXRFbnRpdHlTY2hlbWFbXVxuICB8IHtcbiAgICAgIHJlYWRvbmx5IHNjaGVtYTogU2V0RW50aXR5U2NoZW1hIHwgUmVjb3JkPHN0cmluZywgRW50aXR5SW50ZXJmYWNlPjtcbiAgICAgIC8vIEFycmF5IGFuZCBWYWx1ZXM7IGV4Y2x1ZGVzIHNjaGVtYS5PYmplY3QsIHdob3NlIHF1ZXJ5S2V5KCkgcmV0dXJucyBhbnlcbiAgICAgIHNjaGVtYUtleSgpOiBzdHJpbmc7XG4gICAgICBxdWVyeUtleSguLi5hcmdzOiBhbnkpOiB1bmRlZmluZWQ7XG4gICAgICAvLyBleGNsdWRlcyBFbnRpdHksIHdob3NlIGBhbnlgIHJldHVybnMgbWF0Y2ggdGhlIG1lbWJlcnMgYWJvdmVcbiAgICAgIHBrPzogbmV2ZXI7XG4gICAgfTtcblxuLyoqIGBuZXcgSW52YWxpZGF0ZShFbnRpdHkpYCAob3Igb2YgYSBVbmlvbik6IG5vdCBRdWVyeWFibGUsIHNpbmNlIGl0cyBxdWVyeUtleSgpIHJldHVybnMgdW5kZWZpbmVkICovXG5leHBvcnQgdHlwZSBTZXRJbnZhbGlkYXRlU2NoZW1hID0gRW50aXR5UmVmU2NoZW1hICYge1xuICAvLyBleGNsdWRlcyBVbmlvblxuICBxdWVyeUtleSguLi5hcmdzOiBhbnkpOiB1bmRlZmluZWQ7XG4gIC8vIGV4Y2x1ZGVzIExhenlcbiAgcXVlcnk/OiBuZXZlcjtcbn07XG5cbnR5cGUgSXNVbmlvbjxULCBVID0gVD4gPVxuICBUIGV4dGVuZHMgdW5rbm93biA/XG4gICAgW1VdIGV4dGVuZHMgW1RdID9cbiAgICAgIGZhbHNlXG4gICAgOiB0cnVlXG4gIDogbmV2ZXI7XG5cbnR5cGUgRnVuY3Rpb25LZXlzPFU+ID0ge1xuICBbSyBpbiBrZXlvZiBVXTogVVtLXSBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IGFueSA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVV07XG5cbi8qKiBSYXcgaW5wdXQgZm9yIG9uZSBmaWVsZDogbnVtYmVycyBhbmQgc3RyaW5ncyBjb2VyY2UgKGxpdGVyYWxzIHN0YXkgZXhhY3QpO1xuICogb2JqZWN0cyBhcmUgcHJlLW5vcm1hbGl6ZSAqL1xudHlwZSBTZXRGaWVsZDxUPiA9XG4gIFQgZXh0ZW5kcyBudW1iZXIgP1xuICAgIG51bWJlciBleHRlbmRzIFQgP1xuICAgICAgVCB8IHN0cmluZ1xuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBzdHJpbmcgP1xuICAgIHN0cmluZyBleHRlbmRzIFQgP1xuICAgICAgVCB8IG51bWJlclxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBvYmplY3QgPyB1bmtub3duXG4gIDogVDtcblxuLyoqIEZpZWxkcyBvZiBvbmUgcm93IChvciBhIGNvZXJjZWQgcHJpbWl0aXZlKTsgbGlrZSBFbnRpdHlGaWVsZHMsIGJ1dCBkaXN0cmlidXRpdmVcbiAqIGFuZCB3aXRob3V0IGtleSByZW1hcHBpbmcgKFRTIDQuMCkuIEEgVW5pb24gZ2V0cyBvbmUgcm93IHBlciBtZW1iZXIsIHNvIGFcbiAqIGRpc2NyaW1pbmF0b3IgbGlrZSBgdHlwZWAgc2VsZWN0cyB0aGUgbWVtYmVyIHRoZSBvdGhlciBmaWVsZHMgYXJlIGNoZWNrZWQgYWdhaW5zdC4gKi9cbnR5cGUgU2V0Um93PFU+ID1cbiAgLy8gRW50aXR5TWl4aW4gYW5kIG90aGVyIHVudHlwZWQgZW50aXRpZXNcbiAgMCBleHRlbmRzIDEgJiBVID8geyByZWFkb25seSBbazogc3RyaW5nXTogYW55IH1cbiAgOiBVIGV4dGVuZHMgb2JqZWN0ID9cbiAgICB7IHJlYWRvbmx5IFtLIGluIEV4Y2x1ZGU8a2V5b2YgVSwgRnVuY3Rpb25LZXlzPFU+Pl0/OiBTZXRGaWVsZDxVW0tdPiB9XG4gIDogU2V0RmllbGQ8VT47XG5cbi8qKiBLZWVwcyBTIGluZmVycmVkIGZyb20gdGhlIHNjaGVtYSBhbG9uZTogaW5mZXJyaW5nIGl0IGZyb20gdGhlIHZhbHVlIHRvbyB3b3VsZFxuICogd2FsayB0aGUgdmFsdWUncyB0eXBlIGFnYWluc3QgZXZlcnkgY29uZGl0aW9uYWwgaW4gU2V0VmFsdWUgKFRTIDUuNCBoYXMgTm9JbmZlcikgKi9cbmV4cG9ydCB0eXBlIFNraXBJbmZlcjxULCBTPiA9IFtUXVtTIGV4dGVuZHMgdW5rbm93biA/IDAgOiBuZXZlcl07XG5cbmV4cG9ydCB0eXBlIFNldE1hbnlWYWx1ZTxTPiA9XG4gIFMgZXh0ZW5kcyByZWFkb25seSAoaW5mZXIgRSlbXSA/XG4gICAgdHJ1ZSBleHRlbmRzIElzVW5pb248RT4gP1xuICAgICAgcmVhZG9ubHkgeyAnVXNlIGEgVW5pb24gc2NoZW1hIGZvciBzZXZlcmFsIEVudGl0eSB0eXBlcyc6IG5ldmVyIH1bXVxuICAgIDogcmVhZG9ubHkgU2V0Um93PERlbm9ybWFsaXplPEU+PltdXG4gIDogU2V0VmFsdWU8Uz47XG5cbi8qKiBSYXcgaW5wdXQgYHNldCgpYCBub3JtYWxpemVzIGZvciBhIFF1ZXJ5YWJsZSAqL1xuZXhwb3J0IHR5cGUgU2V0VmFsdWU8Uz4gPVxuICBJbnB1dFNjaGVtYTxJbnB1dFNjaGVtYTxJbnB1dFNjaGVtYTxTPj4+IGV4dGVuZHMgaW5mZXIgTiA/XG4gICAgTiBleHRlbmRzIEVudGl0eUludGVyZmFjZSA/XG4gICAgICBTZXRSb3c8RGVub3JtYWxpemU8Tj4+XG4gICAgOiBTZXRJbnB1dDxEZW5vcm1hbGl6ZTxOPj5cbiAgOiBuZXZlcjtcblxuLyoqIFF1ZXJ5IG5vcm1hbGl6ZXMgd2l0aCBpdHMgaW5uZXIgc2NoZW1hOyBpdHMgcHJvY2VzcygpIG91dHB1dCBpcyBub3QgaW5wdXRcbiAqXG4gKiBBcHBsaWVkIHRocmVlIHRpbWVzIGluIFNldFZhbHVlIHRvIHVud3JhcCBuZXN0ZWQgUXVlcmllcyAoVFMgNC4wIGhhcyBubyByZWN1cnNpdmUgYWxpYXNlcylcbiAqL1xudHlwZSBJbnB1dFNjaGVtYTxTPiA9XG4gIFMgZXh0ZW5kcyAoXG4gICAge1xuICAgICAgcmVhZG9ubHkgc2NoZW1hOiBpbmZlciBTY2g7XG4gICAgICBwcm9jZXNzKC4uLmFyZ3M6IGFueSk6IGFueTtcbiAgICAgIC8vIGV4Y2x1ZGVzIEVudGl0eSwgd2hvc2Ugc3RhdGljIHNjaGVtYSBhbmQgcHJvY2VzcygpIG1hdGNoIHRoZSBtZW1iZXJzIGFib3ZlXG4gICAgICBwaz86IG5ldmVyO1xuICAgIH1cbiAgKSA/XG4gICAgU2NoXG4gIDogUztcblxuLyoqIFJhdyBpbnB1dCBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUsIGxpa2UgYSBDb2xsZWN0aW9uJ3MgbGlzdCBvciBhIFVuaW9uJ3Mgcm93ICovXG50eXBlIFNldElucHV0PFQ+ID1cbiAgMCBleHRlbmRzIDEgJiBUID8gYW55XG4gIDogLy8gbm90IGRpc3RyaWJ1dGl2ZTogU2V0Um93IHNwbGl0cyBhIFVuaW9uIGludG8gaXRzIG1lbWJlcnMgaXRzZWxmXG4gIFtUXSBleHRlbmRzIFtyZWFkb25seSAoaW5mZXIgVSlbXV0gPyByZWFkb25seSBTZXRSb3c8VT5bXVxuICA6IHN0cmluZyBleHRlbmRzIGtleW9mIFQgPyB7IHJlYWRvbmx5IFtrOiBzdHJpbmddOiBTZXRSb3c8VFtrZXlvZiBUXT4gfVxuICA6IFNldFJvdzxUPjtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultConnectionListener.d.ts","sourceRoot":"","sources":["../../src/manager/DefaultConnectionListener.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ;
|
|
1
|
+
{"version":3,"file":"DefaultConnectionListener.d.ts","sourceRoot":"","sources":["../../src/manager/DefaultConnectionListener.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ,YAKP;IAED,iBAAiB,CAAC,OAAO,EAAE,MAAM,IAAI,QAEpC;IAED,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,QAEvC;IAED,kBAAkB,CAAC,OAAO,EAAE,MAAM,IAAI,QAErC;IAED,qBAAqB,CAAC,OAAO,EAAE,MAAM,IAAI,QAExC;CACF;AAED,qBAAa,8BAA+B,YAAW,kBAAkB;IACvE,QAAQ,YAGP;IAED,iBAAiB,SAAK;IAEtB,oBAAoB,SAAK;IAEzB,kBAAkB,SAAK;IAEvB,qBAAqB,SAAK;CAC3B;AAED,QAAA,IAAI,yBAAyB,EAAE;IAAE,QAAQ,kBAAkB,CAAA;CAAE,CAAC;eAW/C,yBAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevtoolsManager.d.ts","sourceRoot":"","sources":["../../src/manager/DevtoolsManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DevtoolsManager.d.ts","sourceRoot":"","sources":["../../src/manager/DevtoolsManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;AAgF/B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,OAAO;IAC7C,UAAU,EAAE,UAAU,CAAC;IAC/B,UAAkB,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5C,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAM;IACxD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IAC7B,eAAe,SAAO;IAEtB,YACE,MAAM,CAAC,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,EAa/C;IAgCD,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAWnC;IAED,yCAAyC;IACzC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAgCrB;IAED,gDAAgD;IAChD,OAAO,SAQN;CACF"}
|