@wavemaker/app-ng-runtime 11.15.5-rc.267 → 11.15.5-rc.647813
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/build-task/bundles/index.umd.js +1 -1
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -2
- package/build-task/fesm2022/index.mjs +1 -1
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/base/bundles/index.umd.js +4 -4
- package/components/base/esm2022/utils/widget-utils.mjs +5 -5
- package/components/base/fesm2022/index.mjs +5 -5
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +0 -2
- package/components/containers/accordion/bundles/index.umd.js +0 -5
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +1 -6
- package/components/containers/accordion/fesm2022/index.mjs +1 -6
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/bundles/index.umd.js +1 -1
- package/components/containers/tabs/esm2022/tabs.animator.mjs +2 -2
- package/components/containers/tabs/fesm2022/index.mjs +1 -1
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +11 -15
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +12 -16
- package/components/data/form/fesm2022/index.mjs +11 -15
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-field/form-field.directive.d.ts +1 -1
- package/components/data/pagination/bundles/index.umd.js +2 -2
- package/components/data/pagination/esm2022/pagination.component.mjs +3 -3
- package/components/data/pagination/fesm2022/index.mjs +2 -2
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +2 -13
- package/components/data/table/esm2022/table.component.mjs +3 -14
- package/components/data/table/fesm2022/index.mjs +2 -13
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/login-dialog/bundles/index.umd.js +1 -1
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +2 -2
- package/components/dialogs/login-dialog/fesm2022/index.mjs +1 -1
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/fesm2022/index.mjs +1 -1
- package/components/input/chips/fesm2022/index.mjs +1 -1
- package/components/input/dataset-aware-form/fesm2022/index.mjs +1 -1
- package/components/input/epoch/base-date-time/bundles/index.umd.js +1 -2
- package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +2 -3
- package/components/input/epoch/base-date-time/fesm2022/index.mjs +1 -2
- package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/fesm2022/index.mjs +1 -1
- package/core/bundles/index.umd.js +4 -0
- package/core/esm2022/utils/utils.mjs +5 -1
- package/core/fesm2022/index.mjs +4 -0
- package/core/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +1 -1
- package/runtime/base/esm2022/services/app.manager.service.mjs +2 -2
- package/runtime/base/fesm2022/index.mjs +1 -1
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/fesm2022/index.mjs +2 -2
- package/scripts/datatable/datatable.js +1 -14
- package/transpiler/bundles/index.umd.js +2 -2
- package/transpiler/esm2022/build.mjs +3 -3
- package/transpiler/fesm2022/index.mjs +2 -2
- package/transpiler/fesm2022/index.mjs.map +1 -1
- package/variables/bundles/index.umd.js +17 -98
- package/variables/esm2022/constants/variables.constants.mjs +6 -6
- package/variables/esm2022/factory/variable-manager.factory.mjs +5 -5
- package/variables/esm2022/service/variables.service.mjs +4 -16
- package/variables/esm2022/util/variable/service-variable.utils.mjs +7 -25
- package/variables/esm2022/util/variable/variables.utils.mjs +2 -52
- package/variables/fesm2022/index.mjs +18 -99
- package/variables/fesm2022/index.mjs.map +1 -1
- package/variables/service/variables.service.d.ts +1 -2
- package/variables/util/variable/variables.utils.d.ts +0 -7
|
@@ -13,11 +13,11 @@ export const VARIABLE_CONSTANTS = {
|
|
|
13
13
|
CRUD: 'wm.CrudVariable',
|
|
14
14
|
SERVICE: 'wm.ServiceVariable',
|
|
15
15
|
WEBSOCKET: 'wm.WebSocketVariable',
|
|
16
|
-
NAVIGATION: 'wm.
|
|
17
|
-
NOTIFICATION: 'wm.
|
|
18
|
-
TIMER: 'wm.
|
|
19
|
-
LOGIN: 'wm.
|
|
20
|
-
LOGOUT: 'wm.
|
|
16
|
+
NAVIGATION: 'wm.NavigationVariable',
|
|
17
|
+
NOTIFICATION: 'wm.NotificationVariable',
|
|
18
|
+
TIMER: 'wm.TimerVariable',
|
|
19
|
+
LOGIN: 'wm.LoginVariable',
|
|
20
|
+
LOGOUT: 'wm.LogoutVariable',
|
|
21
21
|
},
|
|
22
22
|
EVENTS: ['onBefore',
|
|
23
23
|
'onBeforeUpdate',
|
|
@@ -330,4 +330,4 @@ export const VARIABLE_URLS = {
|
|
|
330
330
|
}
|
|
331
331
|
};
|
|
332
332
|
export const $rootScope = rootScope;
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhcmlhYmxlcy9zcmMvY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLElBQUk7SUFDZixnQkFBZ0IsRUFBRSxlQUFlO0lBQ2pDLG1CQUFtQixFQUFFLEdBQUc7SUFDeEIsbUJBQW1CLEVBQUcsc0VBQXNFO0NBQy9GLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5QixRQUFRLEVBQUU7UUFDTixLQUFLLEVBQUUsYUFBYTtRQUNwQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFVBQVUsRUFBRSxxQkFBcUI7UUFDakMsWUFBWSxFQUFFLHVCQUF1QjtRQUNyQyxLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsTUFBTSxFQUFFLGlCQUFpQjtLQUM1QjtJQUNELE1BQU0sRUFBRSxDQUFDLFVBQVU7UUFDZixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLGNBQWM7UUFDZCxRQUFRO1FBQ1IscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQixZQUFZO1FBQ1osU0FBUztRQUNULHNCQUFzQjtRQUN0QixhQUFhO1FBQ2IsU0FBUztRQUNULFFBQVE7UUFDUixNQUFNO1FBQ04sVUFBVTtRQUNWLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYTtRQUNiLFdBQVc7UUFDWCxVQUFVO1FBQ1YsV0FBVyxDQUFDO0lBQ2hC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RTtZQUNmLEdBQUcsRUFBRSw4RkFBOEY7WUFDL0YsTUFBTSxFQUFFLEtBQUs7U0FDcEI7UUFDRCxrQkFBa0IsRUFBRTtZQUNoQixHQUFHLEVBQUUsZ0VBQWdFO1lBQ2pFLE1BQU0sRUFBRSxNQUFNO1NBQ3JCO1FBQ0QscUJBQXFCLEVBQUU7WUFDbkIsR0FBRyxFQUFFLG9GQUFvRjtZQUNyRixNQUFNLEVBQUUsTUFBTTtTQUNyQjtRQUNELHFCQUFxQixFQUFFO1lBQ25CLEdBQUcsRUFBRSxvSEFBb0g7WUFDckgsTUFBTSxFQUFFLEtBQUs7U0FDcEI7UUFDRCx1QkFBdUIsRUFBRTtZQUNyQixHQUFHLEVBQUUseURBQXlEO1lBQzlELE1BQU0sRUFBRSxLQUFLO1NBQ2hCO0tBQ0o7SUFDRyxrQkFBa0IsRUFBRztRQUNqQixtQkFBbUIsRUFBRTtZQUNqQixHQUFHLEVBQUUsOENBQThDO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1NBQ3BCO0tBQ0o7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7JHJvb3RTY29wZSBhcyByb290U2NvcGV9IGZyb20gJ0B3YXZlbWFrZXIvdmFyaWFibGVzJztcbmV4cG9ydCBjb25zdCBDT05TVEFOVFMgPSB7XG4gICAgaXNTdHVkaW9Nb2RlOiBmYWxzZSxcbiAgICBpc1J1bk1vZGU6IHRydWUsXG4gICAgWFNSRl9DT09LSUVfTkFNRTogJ3dtX3hzcmZfdG9rZW4nLFxuICAgIERFRkFVTFRfVElNRVJfREVMQVk6IDUwMCxcbiAgICBXSURHRVRfRE9FU05UX0VYSVNUIDogJ1RoZSB3aWRnZXQgeW91XFwncmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGRvZXNuXFwndCBleGlzdCBvbiB0aGlzIHBhZ2UnXG59O1xuZXhwb3J0IGNvbnN0IFZBUklBQkxFX0NPTlNUQU5UUyA9IHtcbiAgICBDQVRFR09SWToge1xuICAgICAgICBNT0RFTDogJ3dtLlZhcmlhYmxlJyxcbiAgICAgICAgTElWRTogJ3dtLkxpdmVWYXJpYWJsZScsXG4gICAgICAgIENSVUQ6ICd3bS5DcnVkVmFyaWFibGUnLFxuICAgICAgICBTRVJWSUNFOiAnd20uU2VydmljZVZhcmlhYmxlJyxcbiAgICAgICAgV0VCU09DS0VUOiAnd20uV2ViU29ja2V0VmFyaWFibGUnLFxuICAgICAgICBOQVZJR0FUSU9OOiAnd20uTmF2aWdhdGlvbkFjdGlvbicsXG4gICAgICAgIE5PVElGSUNBVElPTjogJ3dtLk5vdGlmaWNhdGlvbkFjdGlvbicsXG4gICAgICAgIFRJTUVSOiAnd20uVGltZXJBY3Rpb24nLFxuICAgICAgICBMT0dJTjogJ3dtLkxvZ2luQWN0aW9uJyxcbiAgICAgICAgTE9HT1VUOiAnd20uTG9nb3V0QWN0aW9uJyxcbiAgICB9LFxuICAgIEVWRU5UUzogWydvbkJlZm9yZScsXG4gICAgICAgICdvbkJlZm9yZVVwZGF0ZScsXG4gICAgICAgICdvblJlc3VsdCcsXG4gICAgICAgICdvbkJlZm9yZU9wZW4nLFxuICAgICAgICAnb25PcGVuJyxcbiAgICAgICAgJ29uQmVmb3JlTWVzc2FnZVNlbmQnLFxuICAgICAgICAnb25NZXNzYWdlUmVjZWl2ZScsXG4gICAgICAgICdvblByb2dyZXNzJyxcbiAgICAgICAgJ29uRXJyb3InLFxuICAgICAgICAnb25CZWZvcmVEYXRhc2V0UmVhZHknLFxuICAgICAgICAnb25DYW5VcGRhdGUnLFxuICAgICAgICAnb25DbGljaycsXG4gICAgICAgICdvbkhpZGUnLFxuICAgICAgICAnb25PaycsXG4gICAgICAgICdvbkNhbmNlbCcsXG4gICAgICAgICdvbkJlZm9yZUNsb3NlJyxcbiAgICAgICAgJ29uQ2xvc2UnLFxuICAgICAgICAnb25UaW1lckZpcmUnLFxuICAgICAgICAnb25TdWNjZXNzJyxcbiAgICAgICAgJ29uT25saW5lJyxcbiAgICAgICAgJ29uT2ZmbGluZSddLFxuICAgIEVWRU5UOiB7XG4gICAgICAgICdDQU5fVVBEQVRFJzogJ29uQ2FuVXBkYXRlJyxcbiAgICAgICAgJ0JFRk9SRSc6ICdvbkJlZm9yZScsXG4gICAgICAgICdCRUZPUkVfVVBEQVRFJzogJ29uQmVmb3JlVXBkYXRlJyxcbiAgICAgICAgJ1BSRVBBUkVfU0VUREFUQSc6ICdvbkJlZm9yZURhdGFzZXRSZWFkeScsXG4gICAgICAgICdSRVNVTFQnOiAnb25SZXN1bHQnLFxuICAgICAgICAnRVJST1InOiAnb25FcnJvcicsXG4gICAgICAgICdBQk9SVCc6ICdvbkFib3J0JyxcbiAgICAgICAgJ1BST0dSRVNTJzogJ29uUHJvZ3Jlc3MnLFxuICAgICAgICAnQ0xJQ0snOiAnb25DbGljaycsXG4gICAgICAgICdISURFJzogJ29uSGlkZScsXG4gICAgICAgICdPSyc6ICdvbk9rJyxcbiAgICAgICAgJ0NBTkNFTCc6ICdvbkNhbmNlbCcsXG4gICAgICAgICdDTE9TRSc6ICdvbkNsb3NlJyxcbiAgICAgICAgJ1RJTUVSX0ZJUkUnOiAnb25UaW1lckZpcmUnLFxuICAgICAgICAnU1VDQ0VTUyc6ICdvblN1Y2Nlc3MnLFxuICAgICAgICAnQkVGT1JFX09QRU4nOiAnb25CZWZvcmVPcGVuJyxcbiAgICAgICAgJ09QRU4nOiAnb25PcGVuJyxcbiAgICAgICAgJ0JFRk9SRV9TRU5EJzogJ29uQmVmb3JlTWVzc2FnZVNlbmQnLFxuICAgICAgICAnTUVTU0FHRV9SRUNFSVZFJzogJ29uTWVzc2FnZVJlY2VpdmUnLFxuICAgICAgICAnQkVGT1JFX0NMT1NFJzogJ29uQmVmb3JlQ2xvc2UnXG4gICAgfSxcbiAgICBPV05FUjoge1xuICAgICAgICAnQVBQJzogJ0FwcCcsXG4gICAgICAgICdQQUdFJzogJ1BhZ2UnXG4gICAgfSxcbiAgICBSRVNUX1NVUFBPUlRFRF9TRVJWSUNFUzogWydKYXZhU2VydmljZScsICdTb2FwU2VydmljZScsICdGZWVkU2VydmljZScsICdSZXN0U2VydmljZScsICdTZWN1cml0eVNlcnZpY2VUeXBlJywgJ0RhdGFTZXJ2aWNlJywgJ1dlYlNvY2tldFNlcnZpY2UnLCAnT3BlbkFQSVNlcnZpY2UnXSxcbiAgICBQQUdJTkFUSU9OX1BBUkFNUzogWydwYWdlJywgJ3NpemUnLCAnc29ydCddLFxuICAgIFJFU1RfU0VSVklDRToge1xuICAgICAgICAnQkFTRV9QQVRIX0tFWSc6ICd4LVdNLUJBU0VfUEFUSCcsXG4gICAgICAgICdSRUxBVElWRV9QQVRIX0tFWSc6ICd4LVdNLVJFTEFUSVZFX1BBVEgnLFxuICAgICAgICAnT0FVVEhfUFJPVklERVJfS0VZJzogJ3gtV00tUFJPVklERVJfSUQnLFxuICAgICAgICAnQVVUSF9IRFJfS0VZJzogJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAnU0VDVVJJVFlfREVGTic6IHtcbiAgICAgICAgICAgICdCQVNJQyc6ICdiYXNpYycsXG4gICAgICAgICAgICAnT0FVVEgyJzogJ29hdXRoMicsXG4gICAgICAgIH0sXG4gICAgICAgICdBVVRIX1RZUEUnOiB7XG4gICAgICAgICAgICAnQkFTSUMnOiAnQkFTSUMnLFxuICAgICAgICAgICAgJ09BVVRIJzogJ09BVVRIMicsXG4gICAgICAgICAgICAnTk9ORSc6ICdOT05FJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ0NPTlRFTlRfVFlQRV9LRVknOiAneC1XTS1DT05URU5UX1RZUEUnLFxuICAgICAgICAnQUNDRVNTVE9LRU5fUExBQ0VIT0xERVInOiB7XG4gICAgICAgICAgICAnTEVGVCc6ICcnLFxuICAgICAgICAgICAgJ1JJR0hUJzogJy5hY2Nlc3NfdG9rZW4nXG4gICAgICAgIH0sXG4gICAgICAgIEVSUl9UWVBFOiB7XG4gICAgICAgICAgICBOT19BQ0NFU1NUT0tFTjogJ21pc3NpbmdfYWNjZXNzdG9rZW4nLFxuICAgICAgICAgICAgTk9fQ1JFREVOVElBTFM6ICdub19jcmVkZW50aWFscycsXG4gICAgICAgICAgICBNRVRBREFUQV9NSVNTSU5HOiAnbWV0YWRhdGFfbWlzc2luZycsXG4gICAgICAgICAgICBDUlVEX09QRVJBVElPTl9NSVNTSU5HOiAnY3J1ZF9vcGVyYXRpb25fbWlzc2luZycsXG4gICAgICAgICAgICBVU0VSX1VOQVVUSE9SSVNFRDogJ3VzZXJfdW5hdXRob3Jpc2VkJyxcbiAgICAgICAgICAgIFJFUVVJUkVEX0ZJRUxEX01JU1NJTkc6ICdyZXF1aXJlZF9maWVsZF9taXNzaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgRVJSX01TRzoge1xuICAgICAgICAgICAgTk9fQUNDRVNTVE9LRU46ICdBY2Nlc3MgdG9rZW4gbWlzc2luZycsXG4gICAgICAgICAgICBOT19DUkVERU5USUFMUzogJ05vIGNyZWRlbnRpYWxzIHByZXNlbnQnLFxuICAgICAgICAgICAgTUVUQURBVEFfTUlTU0lORzogJ01ldGFkYXRhIG1pc3NpbmcgZm9yIFwiJHZhcmlhYmxlXCInLFxuICAgICAgICAgICAgVVNFUl9VTkFVVEhPUklTRUQ6ICdVbmF1dGhvcml6ZWQgVXNlcicsXG4gICAgICAgICAgICBDUlVEX09QRVJBVElPTl9NSVNTSU5HOiAnT3BlcmF0aW9uIFwiJG9wZXJhdGlvblwiIG5vdCBhbGxvd2VkIGZvciBcIiR2YXJpYWJsZVwiJyxcbiAgICAgICAgICAgIFJFUVVJUkVEX0ZJRUxEX01JU1NJTkc6ICdSZXF1aXJlZCBmaWVsZChzKSBtaXNzaW5nOiBcIiR7MH1cIidcbiAgICAgICAgfSxcbiAgICAgICAgVU5DTE9BS0VEX0hFQURFUlM6IFsnQ09OVEVOVC1UWVBFJywgJ0FDQ0VQVCcsICdDT05URU5ULUxFTkdUSCcsICdBQ0NFUFQtRU5DT0RJTkcnLCAnQUNDRVBULUxBTkdVQUdFJ10sXG4gICAgICAgIFBSRUZJWDoge1xuICAgICAgICAgICAgQVVUSF9IRFJfVkFMOiB7XG4gICAgICAgICAgICAgICAgQkFTSUM6ICdCYXNpYycsXG4gICAgICAgICAgICAgICAgT0FVVEg6ICdCZWFyZXInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQ0xPQUtfSEVBREVSX0tFWTogJ1gtV00tJ1xuICAgICAgICB9XG4gICAgfSxcbiAgICBTRVJWSUNFX1RZUEU6IHtcbiAgICAgICAgSkFWQTogJ0phdmFTZXJ2aWNlJyxcbiAgICAgICAgUkVTVDogJ1Jlc3RTZXJ2aWNlJyxcbiAgICAgICAgU09BUDogJ1NvYXBTZXJ2aWNlJyxcbiAgICAgICAgRkVFRDogJ0ZlZWRTZXJ2aWNlJyxcbiAgICAgICAgREFUQTogJ0RhdGFTZXJ2aWNlJyxcbiAgICAgICAgU0VDVVJJVFk6ICdTZWN1cml0eVNlcnZpY2VUeXBlJyxcbiAgICAgICAgV0VCU09DS0VUOiAnV2ViU29ja2V0U2VydmljZScsXG4gICAgICAgIE9QRU5BUEk6ICdPcGVuQVBJU2VydmljZSdcbiAgICB9LFxuICAgIENPTlRST0xMRVJfVFlQRToge1xuICAgICAgICBRVUVSWTogJ1F1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgUFJPQ0VEVVJFOiAnUHJvY2VkdXJlRXhlY3V0aW9uJ1xuICAgIH0sXG4gICAgSFRUUF9TVEFUVVNfQ09ERToge1xuICAgICAgICBDT1JTX0ZBSUxVUkU6IC0xLFxuICAgICAgICBVTkFVVEhPUklaRUQ6IDQwMSxcbiAgICAgICAgRk9SQklEREVOOiA0MDNcbiAgICB9LFxuICAgIEVYUE9SVF9UWVBFU19NQVA6IHtcbiAgICAgICAgJ0VYQ0VMJyA6ICcueGxzeCcsXG4gICAgICAgICdDU1YnIDogJy5jc3YnfSxcbiAgICBERUZBVUxUX1ZBUiA6IHtcbiAgICAgICAgJ05PVElGSUNBVElPTicgOiAnYXBwTm90aWZpY2F0aW9uJ1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBXU19DT05TVEFOVFMgPSB7XG4gICAgTk9OX0JPRFlfSFRUUF9NRVRIT0RTOiBbJ0dFVCcsICdIRUFEJ10sXG4gICAgQ09OVEVOVF9UWVBFUzoge1xuICAgICAgICBGT1JNX1VSTF9FTkNPREVEOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgTVVMVElQQVJUX0ZPUk1EQVRBOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgIE9DVEVUX1NUUkVBTTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTU9ERV9DT05TVEFOVFMgPSB7XG4gICAgTElHSFQ6ICdsaWdodCcsXG4gICAgREVGQVVMVDogJ2RlZmF1bHQnLFxuICAgIENPTE9SOiAnY29sb3InLFxuICAgIEZPTlQ6ICdmb250JyxcbiAgICBTUEFDRTogJ3NwYWNlJyxcbiAgICBSQURJVVM6ICdyYWRpdXMnLFxuICAgIE1PREVfS0VZOiAnYXBwLW1vZGUnXG59O1xuXG5leHBvcnQgY29uc3QgREJfQ09OU1RBTlRTID0ge1xuICAgICdEQVRBQkFTRV9NQVRDSF9NT0RFUyc6IHtcbiAgICAgICAgJ2xpa2UnICAgICAgICAgICAgIDogJ0xJS0UnLFxuICAgICAgICAnc3RhcnQnICAgICAgICAgICAgOiAnU1RBUlRJTkdfV0lUSCcsXG4gICAgICAgICdzdGFydGlnbm9yZWNhc2UnICA6ICdTVEFSVElOR19XSVRIX0lHTk9SRUNBU0UnLFxuICAgICAgICAnZW5kJyAgICAgICAgICAgICAgOiAnRU5ESU5HX1dJVEgnLFxuICAgICAgICAnZW5kaWdub3JlY2FzZScgICAgOiAnRU5ESU5HX1dJVEhfSUdOT1JFQ0FTRScsXG4gICAgICAgICdhbnl3aGVyZScgICAgICAgICA6ICdDT05UQUlOSU5HJyxcbiAgICAgICAgJ2FueXdoZXJlaWdub3JlY2FzZSc6ICdDT05UQUlOSU5HX0lHTk9SRUNBU0UnLFxuICAgICAgICAnbm93aGVyZScgICAgICAgICAgOiAnRE9FU19OT1RfQ09OVEFJTicsXG4gICAgICAgICdub3doZXJlaWdub3JlY2FzZSc6ICdET0VTX05PVF9DT05UQUlOX0lHTk9SRUNBU0UnLFxuICAgICAgICAnZXhhY3QnICAgICAgICAgICAgOiAnRVFVQUxTJyxcbiAgICAgICAgJ2V4YWN0aWdub3JlY2FzZScgIDogJ0VRVUFMU19JR05PUkVDQVNFJyxcbiAgICAgICAgJ25vdGVxdWFscycgICAgICAgIDogJ05PVF9FUVVBTFMnLFxuICAgICAgICBcIm5vdGVxdWFsc2lnbm9yZWNhc2VcIjogXCJOT1RfRVFVQUxTX0lHTk9SRUNBU0VcIixcbiAgICAgICAgJ2JldHdlZW4nICAgICAgICAgIDogJ0JFVFdFRU4nLFxuICAgICAgICAnaW4nICAgICAgICAgICAgICAgOiAnSU4nLFxuICAgICAgICBcIm5vdGluXCIgICAgICAgICAgICA6IFwiTk9USU5cIixcbiAgICAgICAgJ2xlc3N0aGFuJyAgICAgICAgIDogJ0xFU1NfVEhBTicsXG4gICAgICAgICdsZXNzdGhhbmVxdWFsJyAgICA6ICdMRVNTX1RIQU5fT1JfRVFVQUxTJyxcbiAgICAgICAgJ2dyZWF0ZXJ0aGFuJyAgICAgIDogJ0dSRUFURVJfVEhBTicsXG4gICAgICAgICdncmVhdGVydGhhbmVxdWFsJyA6ICdHUkVBVEVSX1RIQU5fT1JfRVFVQUxTJyxcbiAgICAgICAgJ251bGwnICAgICAgICAgICAgIDogJ05VTEwnLFxuICAgICAgICAnaXNub3RudWxsJyAgICAgICAgOiAnSVNfTk9UX05VTEwnLFxuICAgICAgICAnZW1wdHknICAgICAgICAgICAgOiAnRU1QVFknLFxuICAgICAgICAnaXNub3RlbXB0eScgICAgICAgOiAnSVNfTk9UX0VNUFRZJyxcbiAgICAgICAgJ251bGxvcmVtcHR5JyAgICAgIDogJ05VTExfT1JfRU1QVFknXG4gICAgfSxcbiAgICAnREFUQUJBU0VfRU1QVFlfTUFUQ0hfTU9ERVMnOiBbJ05VTEwnLCAnSVNfTk9UX05VTEwnLCAnRU1QVFknLCAnSVNfTk9UX0VNUFRZJywgJ05VTExfT1JfRU1QVFknXSxcbiAgICAnREFUQUJBU0VfUkFOR0VfTUFUQ0hfTU9ERVMnOiBbJ0lOJywgJ05PVElOJywgJ0JFVFdFRU4nLCAnTEVTU19USEFOJywgJ0xFU1NfVEhBTl9PUl9FUVVBTFMnLCAnR1JFQVRFUl9USEFOJywgJ0dSRUFURVJfVEhBTl9PUl9FUVVBTFMnLCAnTk9UX0VRVUFMUyddLFxuICAgICdEQVRBQkFTRV9OVUxMX0VNUFRZX01BVENIJzoge1xuICAgICAgICAnTlVMTCcgICAgICAgICAgOiAnTlVMTCcsXG4gICAgICAgICdJU19OT1RfTlVMTCcgICA6ICdJU19OT1RfTlVMTCcsXG4gICAgICAgICdFTVBUWScgICAgICAgICA6ICdOVUxMJyxcbiAgICAgICAgJ0lTX05PVF9FTVBUWScgIDogJ0lTX05PVF9OVUxMJyxcbiAgICAgICAgJ05VTExfT1JfRU1QVFknIDogJ05VTEwnXG4gICAgfSxcbiAgICAnREFUQUJBU0VfTUFUQ0hfTU9ERVNfV0lUSF9RVUVSWSc6IHtcbiAgICAgICAgJ0xJS0UnICAgICAgICAgICAgICAgICAgIDogJyR7MH0gbGlrZSAkezF9JyxcbiAgICAgICAgJ1NUQVJUSU5HX1dJVEgnICAgICAgICAgIDogJyR7MH0gbGlrZSAkezF9JyxcbiAgICAgICAgJ1NUQVJUSU5HX1dJVEhfSUdOT1JFQ0FTRSc6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdFTkRJTkdfV0lUSCcgICAgICAgICAgICA6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdFTkRJTkdfV0lUSF9JR05PUkVDQVNFJyA6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdDT05UQUlOSU5HJyAgICAgICAgICAgICA6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdDT05UQUlOSU5HX0lHTk9SRUNBU0UnICA6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdET0VTX05PVF9DT05UQUlOJyAgICAgICA6ICckezB9IG5vdCBsaWtlICR7MX0nLFxuICAgICAgICAnRE9FU19OT1RfQ09OVEFJTl9JR05PUkVDQVNFJzogJyR7MH0gbm90IGxpa2UgJHsxfScsXG4gICAgICAgICdFUVVBTFMnICAgICAgICAgICAgICAgICA6ICckezB9PSR7MX0nLFxuICAgICAgICAnRVFVQUxTX0lHTk9SRUNBU0UnICAgICAgOiAnJHswfT0kezF9JyxcbiAgICAgICAgJ05PVF9FUVVBTFMnICAgICAgICAgICAgIDogJyR7MH0hPSR7MX0nLFxuICAgICAgICBcIk5PVF9FUVVBTFNfSUdOT1JFQ0FTRVwiICA6IFwiJHswfSE9JHsxfVwiLFxuICAgICAgICAnQkVUV0VFTicgICAgICAgICAgICAgICAgOiAnJHswfSBiZXR3ZWVuICR7MX0nLFxuICAgICAgICAnSU4nICAgICAgICAgICAgICAgICAgICAgOiAnJHswfSBpbiAkezF9JyxcbiAgICAgICAgJ05PVElOJyAgICAgICAgICAgICAgICAgIDogXCIkezB9IG5vdCBpbiAkezF9XCIsXG4gICAgICAgICdMRVNTX1RIQU4nICAgICAgICAgICAgICA6ICckezB9PCR7MX0nLFxuICAgICAgICAnTEVTU19USEFOX09SX0VRVUFMUycgICAgOiAnJHswfTw9JHsxfScsXG4gICAgICAgICdHUkVBVEVSX1RIQU4nICAgICAgICAgICA6ICckezB9PiR7MX0nLFxuICAgICAgICAnR1JFQVRFUl9USEFOX09SX0VRVUFMUycgOiAnJHswfT49JHsxfScsXG4gICAgICAgICdOVUxMJyAgICAgICAgICAgICAgICAgICA6ICckezB9IGlzIG51bGwnLFxuICAgICAgICAnSVNfTk9UX05VTEwnICAgICAgICAgICAgOiAnJHswfSBpcyBub3QgbnVsbCcsXG4gICAgICAgICdFTVBUWScgICAgICAgICAgICAgICAgICA6ICckezB9PVxcJ1xcJycsXG4gICAgICAgICdJU19OT1RfRU1QVFknICAgICAgICAgICA6ICckezB9PD5cXCdcXCcnLFxuICAgICAgICAnTlVMTF9PUl9FTVBUWScgICAgICAgICAgOiAnJHswfSBpcyBudWxsIG9yICR7MH09XFwnXFwnJ1xuICAgIH0sXG4gICAgJ0RBVEFCQVNFX1NUUklOR19NT0RFUyc6IFsnTElLRScsICdTVEFSVElOR19XSVRIJywgJ1NUQVJUSU5HX1dJVEhfSUdOT1JFQ0FTRScsICdFTkRJTkdfV0lUSCcsICdFTkRJTkdfV0lUSF9JR05PUkVDQVNFJywgJ0NPTlRBSU5JTkcnLCAnQ09OVEFJTklOR19JR05PUkVDQVNFJywgJ0RPRVNfTk9UX0NPTlRBSU4nLCAnRE9FU19OT1RfQ09OVEFJTl9JR05PUkVDQVNFJywgJ0VRVUFMUycsICdFUVVBTFNfSUdOT1JFQ0FTRScsICdOT1RfRVFVQUxTJywgXCJOT1RfRVFVQUxTX0lHTk9SRUNBU0VcIl1cbn07XG5cbmV4cG9ydCBjb25zdCBTV0FHR0VSX0NPTlNUQU5UUyA9IHtcbiAgICBXTV9EQVRBX0pTT046ICd3bV9kYXRhX2pzb24nLFxuICAgIFdNX0hUVFBfSlNPTjogJ3dtX2h0dHBSZXF1ZXN0RGV0YWlscydcbn07XG5cbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9VUkxTID0ge1xuICAgIERBVEFCQVNFOiB7XG4gICAgc2VhcmNoVGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9zZWFyY2g/cGFnZT06cGFnZSZzaXplPTpzaXplJjpzb3J0JyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSxcbiAgICBzZWFyY2hUYWJsZURhdGFXaXRoUXVlcnk6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2ZpbHRlcj9wYWdlPTpwYWdlJnNpemU9OnNpemUmOnNvcnQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVhZFRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWU/cGFnZT06cGFnZSZzaXplPTpzaXplJjpzb3J0JyxcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICB9LFxuICAgIGluc2VydFRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9LFxuICAgIGluc2VydE11bHRpUGFydFRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB7fVxuICAgICAgICAgICAgLy8gLHRyYW5zZm9ybVJlcXVlc3Q6IFdNLmlkZW50aXR5XG4gICAgfSxcbiAgICB1cGRhdGVUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lLzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQVVQnXG4gICAgfSxcbiAgICB1cGRhdGVNdWx0aVBhcnRUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lLzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IHt9XG4gICAgICAgICAgICAvLyAsdHJhbnNmb3JtUmVxdWVzdDogV00uaWRlbnRpdHlcbiAgICB9LFxuICAgIGRlbGV0ZVRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvOmlkJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURSdcbiAgICB9LFxuICAgIHVwZGF0ZUNvbXBvc2l0ZVRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvY29tcG9zaXRlLWlkPzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQVVQnXG4gICAgfSxcbiAgICBwZXJpb2RVcGRhdGVDb21wb3NpdGVUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2NvbXBvc2l0ZS1pZC9wZXJpb2RzPzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQVVQnXG4gICAgfSxcbiAgICB1cGRhdGVNdWx0aVBhcnRDb21wb3NpdGVUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2NvbXBvc2l0ZS1pZD86aWQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB7fVxuICAgICAgICAgICAgLy8gLCB0cmFuc2Zvcm1SZXF1ZXN0OiBXTS5pZGVudGl0eVxuICAgIH0sXG4gICAgZGVsZXRlQ29tcG9zaXRlVGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9jb21wb3NpdGUtaWQ/OmlkJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURSdcbiAgICB9LFxuICAgIHBlcmlvZERlbGV0ZUNvbXBvc2l0ZVRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvY29tcG9zaXRlLWlkL3BlcmlvZHM/OmlkJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURSdcbiAgICB9LFxuICAgIGdldERpc3RpbmN0RGF0YUJ5RmllbGRzOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9hZ2dyZWdhdGlvbnM/cGFnZT06cGFnZSZzaXplPTpzaXplJjpzb3J0JyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSxcbiAgICBleHBvcnRUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnL3NlcnZpY2VzLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2V4cG9ydD86c29ydCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0sXG4gICAgcmVhZFRhYmxlUmVsYXRlZERhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lLzppZC86cmVsYXRlZEZpZWxkTmFtZT9wYWdlPTpwYWdlJnNpemU9OnNpemUmOnNvcnQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgIH0sXG4gICAgZXhlY3V0ZU5hbWVkUXVlcnk6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lL3F1ZXJ5RXhlY3V0b3IvcXVlcmllcy86cXVlcnlOYW1lP3BhZ2U9OnBhZ2Umc2l6ZT06c2l6ZSY6cXVlcnlQYXJhbXMnLFxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgIH0sXG4gICAgZXhlY3V0ZUN1c3RvbVF1ZXJ5OiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS9xdWVyaWVzL2V4ZWN1dGU/cGFnZT06cGFnZSZzaXplPTpzaXplJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSxcbiAgICBleGVjdXRlQWdncmVnYXRlUXVlcnk6IHtcbiAgICAgICAgdXJsOiAnL3NlcnZpY2VzLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2FnZ3JlZ2F0aW9ucz9wYWdlPTpwYWdlJnNpemU9OnNpemUmc29ydD06c29ydCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0sXG4gICAgZXhlY3V0ZU5hbWVkUHJvY2VkdXJlOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS9wcm9jZWR1cmVFeGVjdXRvci9wcm9jZWR1cmUvZXhlY3V0ZS86cHJvY2VkdXJlTmFtZT9wYWdlPTpwYWdlJnNpemU9OnNpemUmOnByb2NlZHVyZVBhcmFtcycsXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnXG4gICAgfSxcbiAgICBjb3VudFRhYmxlRGF0YVdpdGhRdWVyeToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvY291bnQ/OnF1ZXJ5UGFyYW1zJyxcbiAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgIH1cbn0sXG4gICAgb2F1dGhDb25maWd1cmF0aW9uIDoge1xuICAgICAgICBnZXRBdXRob3JpemF0aW9uVXJsOiB7XG4gICAgICAgICAgICB1cmw6ICdzZXJ2aWNlcy9vYXV0aDIvOnByb3ZpZGVySWQvYXV0aG9yaXphdGlvblVybCcsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0ICRyb290U2NvcGUgPSByb290U2NvcGU7XG4iXX0=
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhcmlhYmxlcy9zcmMvY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLElBQUk7SUFDZixnQkFBZ0IsRUFBRSxlQUFlO0lBQ2pDLG1CQUFtQixFQUFFLEdBQUc7SUFDeEIsbUJBQW1CLEVBQUcsc0VBQXNFO0NBQy9GLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5QixRQUFRLEVBQUU7UUFDTixLQUFLLEVBQUUsYUFBYTtRQUNwQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFVBQVUsRUFBRSx1QkFBdUI7UUFDbkMsWUFBWSxFQUFFLHlCQUF5QjtRQUN2QyxLQUFLLEVBQUUsa0JBQWtCO1FBQ3pCLEtBQUssRUFBRSxrQkFBa0I7UUFDekIsTUFBTSxFQUFFLG1CQUFtQjtLQUM5QjtJQUNELE1BQU0sRUFBRSxDQUFDLFVBQVU7UUFDZixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLGNBQWM7UUFDZCxRQUFRO1FBQ1IscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQixZQUFZO1FBQ1osU0FBUztRQUNULHNCQUFzQjtRQUN0QixhQUFhO1FBQ2IsU0FBUztRQUNULFFBQVE7UUFDUixNQUFNO1FBQ04sVUFBVTtRQUNWLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYTtRQUNiLFdBQVc7UUFDWCxVQUFVO1FBQ1YsV0FBVyxDQUFDO0lBQ2hC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RTtZQUNmLEdBQUcsRUFBRSw4RkFBOEY7WUFDL0YsTUFBTSxFQUFFLEtBQUs7U0FDcEI7UUFDRCxrQkFBa0IsRUFBRTtZQUNoQixHQUFHLEVBQUUsZ0VBQWdFO1lBQ2pFLE1BQU0sRUFBRSxNQUFNO1NBQ3JCO1FBQ0QscUJBQXFCLEVBQUU7WUFDbkIsR0FBRyxFQUFFLG9GQUFvRjtZQUNyRixNQUFNLEVBQUUsTUFBTTtTQUNyQjtRQUNELHFCQUFxQixFQUFFO1lBQ25CLEdBQUcsRUFBRSxvSEFBb0g7WUFDckgsTUFBTSxFQUFFLEtBQUs7U0FDcEI7UUFDRCx1QkFBdUIsRUFBRTtZQUNyQixHQUFHLEVBQUUseURBQXlEO1lBQzlELE1BQU0sRUFBRSxLQUFLO1NBQ2hCO0tBQ0o7SUFDRyxrQkFBa0IsRUFBRztRQUNqQixtQkFBbUIsRUFBRTtZQUNqQixHQUFHLEVBQUUsOENBQThDO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1NBQ3BCO0tBQ0o7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7JHJvb3RTY29wZSBhcyByb290U2NvcGV9IGZyb20gJ0B3YXZlbWFrZXIvdmFyaWFibGVzJztcbmV4cG9ydCBjb25zdCBDT05TVEFOVFMgPSB7XG4gICAgaXNTdHVkaW9Nb2RlOiBmYWxzZSxcbiAgICBpc1J1bk1vZGU6IHRydWUsXG4gICAgWFNSRl9DT09LSUVfTkFNRTogJ3dtX3hzcmZfdG9rZW4nLFxuICAgIERFRkFVTFRfVElNRVJfREVMQVk6IDUwMCxcbiAgICBXSURHRVRfRE9FU05UX0VYSVNUIDogJ1RoZSB3aWRnZXQgeW91XFwncmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGRvZXNuXFwndCBleGlzdCBvbiB0aGlzIHBhZ2UnXG59O1xuZXhwb3J0IGNvbnN0IFZBUklBQkxFX0NPTlNUQU5UUyA9IHtcbiAgICBDQVRFR09SWToge1xuICAgICAgICBNT0RFTDogJ3dtLlZhcmlhYmxlJyxcbiAgICAgICAgTElWRTogJ3dtLkxpdmVWYXJpYWJsZScsXG4gICAgICAgIENSVUQ6ICd3bS5DcnVkVmFyaWFibGUnLFxuICAgICAgICBTRVJWSUNFOiAnd20uU2VydmljZVZhcmlhYmxlJyxcbiAgICAgICAgV0VCU09DS0VUOiAnd20uV2ViU29ja2V0VmFyaWFibGUnLFxuICAgICAgICBOQVZJR0FUSU9OOiAnd20uTmF2aWdhdGlvblZhcmlhYmxlJyxcbiAgICAgICAgTk9USUZJQ0FUSU9OOiAnd20uTm90aWZpY2F0aW9uVmFyaWFibGUnLFxuICAgICAgICBUSU1FUjogJ3dtLlRpbWVyVmFyaWFibGUnLFxuICAgICAgICBMT0dJTjogJ3dtLkxvZ2luVmFyaWFibGUnLFxuICAgICAgICBMT0dPVVQ6ICd3bS5Mb2dvdXRWYXJpYWJsZScsXG4gICAgfSxcbiAgICBFVkVOVFM6IFsnb25CZWZvcmUnLFxuICAgICAgICAnb25CZWZvcmVVcGRhdGUnLFxuICAgICAgICAnb25SZXN1bHQnLFxuICAgICAgICAnb25CZWZvcmVPcGVuJyxcbiAgICAgICAgJ29uT3BlbicsXG4gICAgICAgICdvbkJlZm9yZU1lc3NhZ2VTZW5kJyxcbiAgICAgICAgJ29uTWVzc2FnZVJlY2VpdmUnLFxuICAgICAgICAnb25Qcm9ncmVzcycsXG4gICAgICAgICdvbkVycm9yJyxcbiAgICAgICAgJ29uQmVmb3JlRGF0YXNldFJlYWR5JyxcbiAgICAgICAgJ29uQ2FuVXBkYXRlJyxcbiAgICAgICAgJ29uQ2xpY2snLFxuICAgICAgICAnb25IaWRlJyxcbiAgICAgICAgJ29uT2snLFxuICAgICAgICAnb25DYW5jZWwnLFxuICAgICAgICAnb25CZWZvcmVDbG9zZScsXG4gICAgICAgICdvbkNsb3NlJyxcbiAgICAgICAgJ29uVGltZXJGaXJlJyxcbiAgICAgICAgJ29uU3VjY2VzcycsXG4gICAgICAgICdvbk9ubGluZScsXG4gICAgICAgICdvbk9mZmxpbmUnXSxcbiAgICBFVkVOVDoge1xuICAgICAgICAnQ0FOX1VQREFURSc6ICdvbkNhblVwZGF0ZScsXG4gICAgICAgICdCRUZPUkUnOiAnb25CZWZvcmUnLFxuICAgICAgICAnQkVGT1JFX1VQREFURSc6ICdvbkJlZm9yZVVwZGF0ZScsXG4gICAgICAgICdQUkVQQVJFX1NFVERBVEEnOiAnb25CZWZvcmVEYXRhc2V0UmVhZHknLFxuICAgICAgICAnUkVTVUxUJzogJ29uUmVzdWx0JyxcbiAgICAgICAgJ0VSUk9SJzogJ29uRXJyb3InLFxuICAgICAgICAnQUJPUlQnOiAnb25BYm9ydCcsXG4gICAgICAgICdQUk9HUkVTUyc6ICdvblByb2dyZXNzJyxcbiAgICAgICAgJ0NMSUNLJzogJ29uQ2xpY2snLFxuICAgICAgICAnSElERSc6ICdvbkhpZGUnLFxuICAgICAgICAnT0snOiAnb25PaycsXG4gICAgICAgICdDQU5DRUwnOiAnb25DYW5jZWwnLFxuICAgICAgICAnQ0xPU0UnOiAnb25DbG9zZScsXG4gICAgICAgICdUSU1FUl9GSVJFJzogJ29uVGltZXJGaXJlJyxcbiAgICAgICAgJ1NVQ0NFU1MnOiAnb25TdWNjZXNzJyxcbiAgICAgICAgJ0JFRk9SRV9PUEVOJzogJ29uQmVmb3JlT3BlbicsXG4gICAgICAgICdPUEVOJzogJ29uT3BlbicsXG4gICAgICAgICdCRUZPUkVfU0VORCc6ICdvbkJlZm9yZU1lc3NhZ2VTZW5kJyxcbiAgICAgICAgJ01FU1NBR0VfUkVDRUlWRSc6ICdvbk1lc3NhZ2VSZWNlaXZlJyxcbiAgICAgICAgJ0JFRk9SRV9DTE9TRSc6ICdvbkJlZm9yZUNsb3NlJ1xuICAgIH0sXG4gICAgT1dORVI6IHtcbiAgICAgICAgJ0FQUCc6ICdBcHAnLFxuICAgICAgICAnUEFHRSc6ICdQYWdlJ1xuICAgIH0sXG4gICAgUkVTVF9TVVBQT1JURURfU0VSVklDRVM6IFsnSmF2YVNlcnZpY2UnLCAnU29hcFNlcnZpY2UnLCAnRmVlZFNlcnZpY2UnLCAnUmVzdFNlcnZpY2UnLCAnU2VjdXJpdHlTZXJ2aWNlVHlwZScsICdEYXRhU2VydmljZScsICdXZWJTb2NrZXRTZXJ2aWNlJywgJ09wZW5BUElTZXJ2aWNlJ10sXG4gICAgUEFHSU5BVElPTl9QQVJBTVM6IFsncGFnZScsICdzaXplJywgJ3NvcnQnXSxcbiAgICBSRVNUX1NFUlZJQ0U6IHtcbiAgICAgICAgJ0JBU0VfUEFUSF9LRVknOiAneC1XTS1CQVNFX1BBVEgnLFxuICAgICAgICAnUkVMQVRJVkVfUEFUSF9LRVknOiAneC1XTS1SRUxBVElWRV9QQVRIJyxcbiAgICAgICAgJ09BVVRIX1BST1ZJREVSX0tFWSc6ICd4LVdNLVBST1ZJREVSX0lEJyxcbiAgICAgICAgJ0FVVEhfSERSX0tFWSc6ICdBdXRob3JpemF0aW9uJyxcbiAgICAgICAgJ1NFQ1VSSVRZX0RFRk4nOiB7XG4gICAgICAgICAgICAnQkFTSUMnOiAnYmFzaWMnLFxuICAgICAgICAgICAgJ09BVVRIMic6ICdvYXV0aDInLFxuICAgICAgICB9LFxuICAgICAgICAnQVVUSF9UWVBFJzoge1xuICAgICAgICAgICAgJ0JBU0lDJzogJ0JBU0lDJyxcbiAgICAgICAgICAgICdPQVVUSCc6ICdPQVVUSDInLFxuICAgICAgICAgICAgJ05PTkUnOiAnTk9ORScsXG4gICAgICAgIH0sXG4gICAgICAgICdDT05URU5UX1RZUEVfS0VZJzogJ3gtV00tQ09OVEVOVF9UWVBFJyxcbiAgICAgICAgJ0FDQ0VTU1RPS0VOX1BMQUNFSE9MREVSJzoge1xuICAgICAgICAgICAgJ0xFRlQnOiAnJyxcbiAgICAgICAgICAgICdSSUdIVCc6ICcuYWNjZXNzX3Rva2VuJ1xuICAgICAgICB9LFxuICAgICAgICBFUlJfVFlQRToge1xuICAgICAgICAgICAgTk9fQUNDRVNTVE9LRU46ICdtaXNzaW5nX2FjY2Vzc3Rva2VuJyxcbiAgICAgICAgICAgIE5PX0NSRURFTlRJQUxTOiAnbm9fY3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgTUVUQURBVEFfTUlTU0lORzogJ21ldGFkYXRhX21pc3NpbmcnLFxuICAgICAgICAgICAgQ1JVRF9PUEVSQVRJT05fTUlTU0lORzogJ2NydWRfb3BlcmF0aW9uX21pc3NpbmcnLFxuICAgICAgICAgICAgVVNFUl9VTkFVVEhPUklTRUQ6ICd1c2VyX3VuYXV0aG9yaXNlZCcsXG4gICAgICAgICAgICBSRVFVSVJFRF9GSUVMRF9NSVNTSU5HOiAncmVxdWlyZWRfZmllbGRfbWlzc2luZycsXG4gICAgICAgIH0sXG4gICAgICAgIEVSUl9NU0c6IHtcbiAgICAgICAgICAgIE5PX0FDQ0VTU1RPS0VOOiAnQWNjZXNzIHRva2VuIG1pc3NpbmcnLFxuICAgICAgICAgICAgTk9fQ1JFREVOVElBTFM6ICdObyBjcmVkZW50aWFscyBwcmVzZW50JyxcbiAgICAgICAgICAgIE1FVEFEQVRBX01JU1NJTkc6ICdNZXRhZGF0YSBtaXNzaW5nIGZvciBcIiR2YXJpYWJsZVwiJyxcbiAgICAgICAgICAgIFVTRVJfVU5BVVRIT1JJU0VEOiAnVW5hdXRob3JpemVkIFVzZXInLFxuICAgICAgICAgICAgQ1JVRF9PUEVSQVRJT05fTUlTU0lORzogJ09wZXJhdGlvbiBcIiRvcGVyYXRpb25cIiBub3QgYWxsb3dlZCBmb3IgXCIkdmFyaWFibGVcIicsXG4gICAgICAgICAgICBSRVFVSVJFRF9GSUVMRF9NSVNTSU5HOiAnUmVxdWlyZWQgZmllbGQocykgbWlzc2luZzogXCIkezB9XCInXG4gICAgICAgIH0sXG4gICAgICAgIFVOQ0xPQUtFRF9IRUFERVJTOiBbJ0NPTlRFTlQtVFlQRScsICdBQ0NFUFQnLCAnQ09OVEVOVC1MRU5HVEgnLCAnQUNDRVBULUVOQ09ESU5HJywgJ0FDQ0VQVC1MQU5HVUFHRSddLFxuICAgICAgICBQUkVGSVg6IHtcbiAgICAgICAgICAgIEFVVEhfSERSX1ZBTDoge1xuICAgICAgICAgICAgICAgIEJBU0lDOiAnQmFzaWMnLFxuICAgICAgICAgICAgICAgIE9BVVRIOiAnQmVhcmVyJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIENMT0FLX0hFQURFUl9LRVk6ICdYLVdNLSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU0VSVklDRV9UWVBFOiB7XG4gICAgICAgIEpBVkE6ICdKYXZhU2VydmljZScsXG4gICAgICAgIFJFU1Q6ICdSZXN0U2VydmljZScsXG4gICAgICAgIFNPQVA6ICdTb2FwU2VydmljZScsXG4gICAgICAgIEZFRUQ6ICdGZWVkU2VydmljZScsXG4gICAgICAgIERBVEE6ICdEYXRhU2VydmljZScsXG4gICAgICAgIFNFQ1VSSVRZOiAnU2VjdXJpdHlTZXJ2aWNlVHlwZScsXG4gICAgICAgIFdFQlNPQ0tFVDogJ1dlYlNvY2tldFNlcnZpY2UnLFxuICAgICAgICBPUEVOQVBJOiAnT3BlbkFQSVNlcnZpY2UnXG4gICAgfSxcbiAgICBDT05UUk9MTEVSX1RZUEU6IHtcbiAgICAgICAgUVVFUlk6ICdRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgIFBST0NFRFVSRTogJ1Byb2NlZHVyZUV4ZWN1dGlvbidcbiAgICB9LFxuICAgIEhUVFBfU1RBVFVTX0NPREU6IHtcbiAgICAgICAgQ09SU19GQUlMVVJFOiAtMSxcbiAgICAgICAgVU5BVVRIT1JJWkVEOiA0MDEsXG4gICAgICAgIEZPUkJJRERFTjogNDAzXG4gICAgfSxcbiAgICBFWFBPUlRfVFlQRVNfTUFQOiB7XG4gICAgICAgICdFWENFTCcgOiAnLnhsc3gnLFxuICAgICAgICAnQ1NWJyA6ICcuY3N2J30sXG4gICAgREVGQVVMVF9WQVIgOiB7XG4gICAgICAgICdOT1RJRklDQVRJT04nIDogJ2FwcE5vdGlmaWNhdGlvbidcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgV1NfQ09OU1RBTlRTID0ge1xuICAgIE5PTl9CT0RZX0hUVFBfTUVUSE9EUzogWydHRVQnLCAnSEVBRCddLFxuICAgIENPTlRFTlRfVFlQRVM6IHtcbiAgICAgICAgRk9STV9VUkxfRU5DT0RFRDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgIE1VTFRJUEFSVF9GT1JNREFUQTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICBPQ1RFVF9TVFJFQU06ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1PREVfQ09OU1RBTlRTID0ge1xuICAgIExJR0hUOiAnbGlnaHQnLFxuICAgIERFRkFVTFQ6ICdkZWZhdWx0JyxcbiAgICBDT0xPUjogJ2NvbG9yJyxcbiAgICBGT05UOiAnZm9udCcsXG4gICAgU1BBQ0U6ICdzcGFjZScsXG4gICAgUkFESVVTOiAncmFkaXVzJyxcbiAgICBNT0RFX0tFWTogJ2FwcC1tb2RlJ1xufTtcblxuZXhwb3J0IGNvbnN0IERCX0NPTlNUQU5UUyA9IHtcbiAgICAnREFUQUJBU0VfTUFUQ0hfTU9ERVMnOiB7XG4gICAgICAgICdsaWtlJyAgICAgICAgICAgICA6ICdMSUtFJyxcbiAgICAgICAgJ3N0YXJ0JyAgICAgICAgICAgIDogJ1NUQVJUSU5HX1dJVEgnLFxuICAgICAgICAnc3RhcnRpZ25vcmVjYXNlJyAgOiAnU1RBUlRJTkdfV0lUSF9JR05PUkVDQVNFJyxcbiAgICAgICAgJ2VuZCcgICAgICAgICAgICAgIDogJ0VORElOR19XSVRIJyxcbiAgICAgICAgJ2VuZGlnbm9yZWNhc2UnICAgIDogJ0VORElOR19XSVRIX0lHTk9SRUNBU0UnLFxuICAgICAgICAnYW55d2hlcmUnICAgICAgICAgOiAnQ09OVEFJTklORycsXG4gICAgICAgICdhbnl3aGVyZWlnbm9yZWNhc2UnOiAnQ09OVEFJTklOR19JR05PUkVDQVNFJyxcbiAgICAgICAgJ25vd2hlcmUnICAgICAgICAgIDogJ0RPRVNfTk9UX0NPTlRBSU4nLFxuICAgICAgICAnbm93aGVyZWlnbm9yZWNhc2UnOiAnRE9FU19OT1RfQ09OVEFJTl9JR05PUkVDQVNFJyxcbiAgICAgICAgJ2V4YWN0JyAgICAgICAgICAgIDogJ0VRVUFMUycsXG4gICAgICAgICdleGFjdGlnbm9yZWNhc2UnICA6ICdFUVVBTFNfSUdOT1JFQ0FTRScsXG4gICAgICAgICdub3RlcXVhbHMnICAgICAgICA6ICdOT1RfRVFVQUxTJyxcbiAgICAgICAgXCJub3RlcXVhbHNpZ25vcmVjYXNlXCI6IFwiTk9UX0VRVUFMU19JR05PUkVDQVNFXCIsXG4gICAgICAgICdiZXR3ZWVuJyAgICAgICAgICA6ICdCRVRXRUVOJyxcbiAgICAgICAgJ2luJyAgICAgICAgICAgICAgIDogJ0lOJyxcbiAgICAgICAgXCJub3RpblwiICAgICAgICAgICAgOiBcIk5PVElOXCIsXG4gICAgICAgICdsZXNzdGhhbicgICAgICAgICA6ICdMRVNTX1RIQU4nLFxuICAgICAgICAnbGVzc3RoYW5lcXVhbCcgICAgOiAnTEVTU19USEFOX09SX0VRVUFMUycsXG4gICAgICAgICdncmVhdGVydGhhbicgICAgICA6ICdHUkVBVEVSX1RIQU4nLFxuICAgICAgICAnZ3JlYXRlcnRoYW5lcXVhbCcgOiAnR1JFQVRFUl9USEFOX09SX0VRVUFMUycsXG4gICAgICAgICdudWxsJyAgICAgICAgICAgICA6ICdOVUxMJyxcbiAgICAgICAgJ2lzbm90bnVsbCcgICAgICAgIDogJ0lTX05PVF9OVUxMJyxcbiAgICAgICAgJ2VtcHR5JyAgICAgICAgICAgIDogJ0VNUFRZJyxcbiAgICAgICAgJ2lzbm90ZW1wdHknICAgICAgIDogJ0lTX05PVF9FTVBUWScsXG4gICAgICAgICdudWxsb3JlbXB0eScgICAgICA6ICdOVUxMX09SX0VNUFRZJ1xuICAgIH0sXG4gICAgJ0RBVEFCQVNFX0VNUFRZX01BVENIX01PREVTJzogWydOVUxMJywgJ0lTX05PVF9OVUxMJywgJ0VNUFRZJywgJ0lTX05PVF9FTVBUWScsICdOVUxMX09SX0VNUFRZJ10sXG4gICAgJ0RBVEFCQVNFX1JBTkdFX01BVENIX01PREVTJzogWydJTicsICdOT1RJTicsICdCRVRXRUVOJywgJ0xFU1NfVEhBTicsICdMRVNTX1RIQU5fT1JfRVFVQUxTJywgJ0dSRUFURVJfVEhBTicsICdHUkVBVEVSX1RIQU5fT1JfRVFVQUxTJywgJ05PVF9FUVVBTFMnXSxcbiAgICAnREFUQUJBU0VfTlVMTF9FTVBUWV9NQVRDSCc6IHtcbiAgICAgICAgJ05VTEwnICAgICAgICAgIDogJ05VTEwnLFxuICAgICAgICAnSVNfTk9UX05VTEwnICAgOiAnSVNfTk9UX05VTEwnLFxuICAgICAgICAnRU1QVFknICAgICAgICAgOiAnTlVMTCcsXG4gICAgICAgICdJU19OT1RfRU1QVFknICA6ICdJU19OT1RfTlVMTCcsXG4gICAgICAgICdOVUxMX09SX0VNUFRZJyA6ICdOVUxMJ1xuICAgIH0sXG4gICAgJ0RBVEFCQVNFX01BVENIX01PREVTX1dJVEhfUVVFUlknOiB7XG4gICAgICAgICdMSUtFJyAgICAgICAgICAgICAgICAgICA6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdTVEFSVElOR19XSVRIJyAgICAgICAgICA6ICckezB9IGxpa2UgJHsxfScsXG4gICAgICAgICdTVEFSVElOR19XSVRIX0lHTk9SRUNBU0UnOiAnJHswfSBsaWtlICR7MX0nLFxuICAgICAgICAnRU5ESU5HX1dJVEgnICAgICAgICAgICAgOiAnJHswfSBsaWtlICR7MX0nLFxuICAgICAgICAnRU5ESU5HX1dJVEhfSUdOT1JFQ0FTRScgOiAnJHswfSBsaWtlICR7MX0nLFxuICAgICAgICAnQ09OVEFJTklORycgICAgICAgICAgICAgOiAnJHswfSBsaWtlICR7MX0nLFxuICAgICAgICAnQ09OVEFJTklOR19JR05PUkVDQVNFJyAgOiAnJHswfSBsaWtlICR7MX0nLFxuICAgICAgICAnRE9FU19OT1RfQ09OVEFJTicgICAgICAgOiAnJHswfSBub3QgbGlrZSAkezF9JyxcbiAgICAgICAgJ0RPRVNfTk9UX0NPTlRBSU5fSUdOT1JFQ0FTRSc6ICckezB9IG5vdCBsaWtlICR7MX0nLFxuICAgICAgICAnRVFVQUxTJyAgICAgICAgICAgICAgICAgOiAnJHswfT0kezF9JyxcbiAgICAgICAgJ0VRVUFMU19JR05PUkVDQVNFJyAgICAgIDogJyR7MH09JHsxfScsXG4gICAgICAgICdOT1RfRVFVQUxTJyAgICAgICAgICAgICA6ICckezB9IT0kezF9JyxcbiAgICAgICAgXCJOT1RfRVFVQUxTX0lHTk9SRUNBU0VcIiAgOiBcIiR7MH0hPSR7MX1cIixcbiAgICAgICAgJ0JFVFdFRU4nICAgICAgICAgICAgICAgIDogJyR7MH0gYmV0d2VlbiAkezF9JyxcbiAgICAgICAgJ0lOJyAgICAgICAgICAgICAgICAgICAgIDogJyR7MH0gaW4gJHsxfScsXG4gICAgICAgICdOT1RJTicgICAgICAgICAgICAgICAgICA6IFwiJHswfSBub3QgaW4gJHsxfVwiLFxuICAgICAgICAnTEVTU19USEFOJyAgICAgICAgICAgICAgOiAnJHswfTwkezF9JyxcbiAgICAgICAgJ0xFU1NfVEhBTl9PUl9FUVVBTFMnICAgIDogJyR7MH08PSR7MX0nLFxuICAgICAgICAnR1JFQVRFUl9USEFOJyAgICAgICAgICAgOiAnJHswfT4kezF9JyxcbiAgICAgICAgJ0dSRUFURVJfVEhBTl9PUl9FUVVBTFMnIDogJyR7MH0+PSR7MX0nLFxuICAgICAgICAnTlVMTCcgICAgICAgICAgICAgICAgICAgOiAnJHswfSBpcyBudWxsJyxcbiAgICAgICAgJ0lTX05PVF9OVUxMJyAgICAgICAgICAgIDogJyR7MH0gaXMgbm90IG51bGwnLFxuICAgICAgICAnRU1QVFknICAgICAgICAgICAgICAgICAgOiAnJHswfT1cXCdcXCcnLFxuICAgICAgICAnSVNfTk9UX0VNUFRZJyAgICAgICAgICAgOiAnJHswfTw+XFwnXFwnJyxcbiAgICAgICAgJ05VTExfT1JfRU1QVFknICAgICAgICAgIDogJyR7MH0gaXMgbnVsbCBvciAkezB9PVxcJ1xcJydcbiAgICB9LFxuICAgICdEQVRBQkFTRV9TVFJJTkdfTU9ERVMnOiBbJ0xJS0UnLCAnU1RBUlRJTkdfV0lUSCcsICdTVEFSVElOR19XSVRIX0lHTk9SRUNBU0UnLCAnRU5ESU5HX1dJVEgnLCAnRU5ESU5HX1dJVEhfSUdOT1JFQ0FTRScsICdDT05UQUlOSU5HJywgJ0NPTlRBSU5JTkdfSUdOT1JFQ0FTRScsICdET0VTX05PVF9DT05UQUlOJywgJ0RPRVNfTk9UX0NPTlRBSU5fSUdOT1JFQ0FTRScsICdFUVVBTFMnLCAnRVFVQUxTX0lHTk9SRUNBU0UnLCAnTk9UX0VRVUFMUycsIFwiTk9UX0VRVUFMU19JR05PUkVDQVNFXCJdXG59O1xuXG5leHBvcnQgY29uc3QgU1dBR0dFUl9DT05TVEFOVFMgPSB7XG4gICAgV01fREFUQV9KU09OOiAnd21fZGF0YV9qc29uJyxcbiAgICBXTV9IVFRQX0pTT046ICd3bV9odHRwUmVxdWVzdERldGFpbHMnXG59O1xuXG5leHBvcnQgY29uc3QgVkFSSUFCTEVfVVJMUyA9IHtcbiAgICBEQVRBQkFTRToge1xuICAgIHNlYXJjaFRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvc2VhcmNoP3BhZ2U9OnBhZ2Umc2l6ZT06c2l6ZSY6c29ydCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0sXG4gICAgc2VhcmNoVGFibGVEYXRhV2l0aFF1ZXJ5OiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9maWx0ZXI/cGFnZT06cGFnZSZzaXplPTpzaXplJjpzb3J0JyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlYWRUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lP3BhZ2U9OnBhZ2Umc2l6ZT06c2l6ZSY6c29ydCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnXG4gICAgfSxcbiAgICBpbnNlcnRUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSxcbiAgICBpbnNlcnRNdWx0aVBhcnRUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge31cbiAgICAgICAgICAgIC8vICx0cmFuc2Zvcm1SZXF1ZXN0OiBXTS5pZGVudGl0eVxuICAgIH0sXG4gICAgdXBkYXRlVGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS86aWQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUFVUJ1xuICAgIH0sXG4gICAgdXBkYXRlTXVsdGlQYXJ0VGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS86aWQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB7fVxuICAgICAgICAgICAgLy8gLHRyYW5zZm9ybVJlcXVlc3Q6IFdNLmlkZW50aXR5XG4gICAgfSxcbiAgICBkZWxldGVUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lLzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnXG4gICAgfSxcbiAgICB1cGRhdGVDb21wb3NpdGVUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2NvbXBvc2l0ZS1pZD86aWQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUFVUJ1xuICAgIH0sXG4gICAgcGVyaW9kVXBkYXRlQ29tcG9zaXRlVGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9jb21wb3NpdGUtaWQvcGVyaW9kcz86aWQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUFVUJ1xuICAgIH0sXG4gICAgdXBkYXRlTXVsdGlQYXJ0Q29tcG9zaXRlVGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9jb21wb3NpdGUtaWQ/OmlkJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge31cbiAgICAgICAgICAgIC8vICwgdHJhbnNmb3JtUmVxdWVzdDogV00uaWRlbnRpdHlcbiAgICB9LFxuICAgIGRlbGV0ZUNvbXBvc2l0ZVRhYmxlRGF0YToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvY29tcG9zaXRlLWlkPzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnXG4gICAgfSxcbiAgICBwZXJpb2REZWxldGVDb21wb3NpdGVUYWJsZURhdGE6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2NvbXBvc2l0ZS1pZC9wZXJpb2RzPzppZCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnXG4gICAgfSxcbiAgICBnZXREaXN0aW5jdERhdGFCeUZpZWxkczoge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvOmVudGl0eU5hbWUvYWdncmVnYXRpb25zP3BhZ2U9OnBhZ2Umc2l6ZT06c2l6ZSY6c29ydCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0sXG4gICAgZXhwb3J0VGFibGVEYXRhOiB7XG4gICAgICAgIHVybDogJy9zZXJ2aWNlcy86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9leHBvcnQ/OnNvcnQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9LFxuICAgIHJlYWRUYWJsZVJlbGF0ZWREYXRhOiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS86aWQvOnJlbGF0ZWRGaWVsZE5hbWU/cGFnZT06cGFnZSZzaXplPTpzaXplJjpzb3J0JyxcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICB9LFxuICAgIGV4ZWN1dGVOYW1lZFF1ZXJ5OiB7XG4gICAgICAgIHVybDogJy86c2VydmljZS86ZGF0YU1vZGVsTmFtZS9xdWVyeUV4ZWN1dG9yL3F1ZXJpZXMvOnF1ZXJ5TmFtZT9wYWdlPTpwYWdlJnNpemU9OnNpemUmOnF1ZXJ5UGFyYW1zJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICB9LFxuICAgIGV4ZWN1dGVDdXN0b21RdWVyeToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvcXVlcmllcy9leGVjdXRlP3BhZ2U9OnBhZ2Umc2l6ZT06c2l6ZScsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0sXG4gICAgZXhlY3V0ZUFnZ3JlZ2F0ZVF1ZXJ5OiB7XG4gICAgICAgIHVybDogJy9zZXJ2aWNlcy86ZGF0YU1vZGVsTmFtZS86ZW50aXR5TmFtZS9hZ2dyZWdhdGlvbnM/cGFnZT06cGFnZSZzaXplPTpzaXplJnNvcnQ9OnNvcnQnLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9LFxuICAgIGV4ZWN1dGVOYW1lZFByb2NlZHVyZToge1xuICAgICAgICB1cmw6ICcvOnNlcnZpY2UvOmRhdGFNb2RlbE5hbWUvcHJvY2VkdXJlRXhlY3V0b3IvcHJvY2VkdXJlL2V4ZWN1dGUvOnByb2NlZHVyZU5hbWU/cGFnZT06cGFnZSZzaXplPTpzaXplJjpwcm9jZWR1cmVQYXJhbXMnLFxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgIH0sXG4gICAgY291bnRUYWJsZURhdGFXaXRoUXVlcnk6IHtcbiAgICAgICAgdXJsOiAnLzpzZXJ2aWNlLzpkYXRhTW9kZWxOYW1lLzplbnRpdHlOYW1lL2NvdW50PzpxdWVyeVBhcmFtcycsXG4gICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICB9XG59LFxuICAgIG9hdXRoQ29uZmlndXJhdGlvbiA6IHtcbiAgICAgICAgZ2V0QXV0aG9yaXphdGlvblVybDoge1xuICAgICAgICAgICAgdXJsOiAnc2VydmljZXMvb2F1dGgyLzpwcm92aWRlcklkL2F1dGhvcml6YXRpb25VcmwnLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCAkcm9vdFNjb3BlID0gcm9vdFNjb3BlO1xuIl19
|
|
@@ -8,10 +8,10 @@ import { WebSocketVariableManager } from '../manager/variable/web-socket-variabl
|
|
|
8
8
|
const managerMap = new Map(), typeToManagerMap = {
|
|
9
9
|
'Variable': BaseVariableManager,
|
|
10
10
|
'Action': BaseActionManager,
|
|
11
|
-
'wm.
|
|
12
|
-
'wm.
|
|
13
|
-
'wm.
|
|
14
|
-
'wm.
|
|
11
|
+
'wm.NavigationVariable': NavigationActionManager,
|
|
12
|
+
'wm.NotificationVariable': NotificationActionManager,
|
|
13
|
+
'wm.LoginVariable': LoginActionManager,
|
|
14
|
+
'wm.LogoutVariable': LogoutActionManager,
|
|
15
15
|
'wm.WebSocketVariable': WebSocketVariableManager
|
|
16
16
|
};
|
|
17
17
|
export class VariableManagerFactory {
|
|
@@ -21,4 +21,4 @@ export class VariableManagerFactory {
|
|
|
21
21
|
managerMap.set(type, new typeToManagerMap[type]()).get(type);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGUtbWFuYWdlci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFyaWFibGVzL3NyYy9mYWN0b3J5L3ZhcmlhYmxlLW1hbmFnZXIuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUzRixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxFQUN4QixnQkFBZ0IsR0FBRztJQUNmLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQix1QkFBdUIsRUFBRSx1QkFBdUI7SUFDaEQseUJBQXlCLEVBQUUseUJBQXlCO0lBQ3BELGtCQUFrQixFQUFFLGtCQUFrQjtJQUN0QyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDeEMsc0JBQXNCLEVBQUUsd0JBQXdCO0NBQ25ELENBQUM7QUFFTixNQUFNLE9BQU8sc0JBQXNCO0lBRS9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNYLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0QixVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2aWdhdGlvbkFjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2VyL2FjdGlvbi9uYXZpZ2F0aW9uLWFjdGlvbi5tYW5hZ2VyJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2VyL2FjdGlvbi9ub3RpZmljYXRpb24tYWN0aW9uLm1hbmFnZXInO1xuaW1wb3J0IHsgQmFzZVZhcmlhYmxlTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXIvdmFyaWFibGUvYmFzZS12YXJpYWJsZS5tYW5hZ2VyJztcbmltcG9ydCB7IEJhc2VBY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vbWFuYWdlci9hY3Rpb24vYmFzZS1hY3Rpb24ubWFuYWdlcic7XG5pbXBvcnQgeyBMb2dpbkFjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2VyL2FjdGlvbi9sb2dpbi1hY3Rpb24ubWFuYWdlcic7XG5pbXBvcnQgeyBMb2dvdXRBY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vbWFuYWdlci9hY3Rpb24vbG9nb3V0LWFjdGlvbi5tYW5hZ2VyJztcbmltcG9ydCB7IFdlYlNvY2tldFZhcmlhYmxlTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXIvdmFyaWFibGUvd2ViLXNvY2tldC12YXJpYWJsZS5tYW5hZ2VyJztcblxuY29uc3QgbWFuYWdlck1hcCA9IG5ldyBNYXAoKSxcbiAgICB0eXBlVG9NYW5hZ2VyTWFwID0ge1xuICAgICAgICAnVmFyaWFibGUnOiBCYXNlVmFyaWFibGVNYW5hZ2VyLFxuICAgICAgICAnQWN0aW9uJzogQmFzZUFjdGlvbk1hbmFnZXIsXG4gICAgICAgICd3bS5OYXZpZ2F0aW9uVmFyaWFibGUnOiBOYXZpZ2F0aW9uQWN0aW9uTWFuYWdlcixcbiAgICAgICAgJ3dtLk5vdGlmaWNhdGlvblZhcmlhYmxlJzogTm90aWZpY2F0aW9uQWN0aW9uTWFuYWdlcixcbiAgICAgICAgJ3dtLkxvZ2luVmFyaWFibGUnOiBMb2dpbkFjdGlvbk1hbmFnZXIsXG4gICAgICAgICd3bS5Mb2dvdXRWYXJpYWJsZSc6IExvZ291dEFjdGlvbk1hbmFnZXIsXG4gICAgICAgICd3bS5XZWJTb2NrZXRWYXJpYWJsZSc6IFdlYlNvY2tldFZhcmlhYmxlTWFuYWdlclxuICAgIH07XG5cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZU1hbmFnZXJGYWN0b3J5IHtcblxuICAgIHN0YXRpYyBnZXQodHlwZSkge1xuICAgICAgICByZXR1cm4gbWFuYWdlck1hcC5oYXModHlwZSkgP1xuICAgICAgICAgICAgbWFuYWdlck1hcC5nZXQodHlwZSkgOlxuICAgICAgICAgICAgbWFuYWdlck1hcC5zZXQodHlwZSwgbmV3IHR5cGVUb01hbmFnZXJNYXBbdHlwZV0oKSkuZ2V0KHR5cGUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -5,9 +5,10 @@ import { OAuthService } from '@wm/oAuth';
|
|
|
5
5
|
import { SecurityService } from '@wm/security';
|
|
6
6
|
import { VariableFactory } from '../factory/variable.factory';
|
|
7
7
|
import { wmSetDependency, BaseAction, getTarget, setValueToNode, getTargetNodeKey, internalBoundNodeMap } from '@wavemaker/variables';
|
|
8
|
-
import {
|
|
8
|
+
import { setDependency, simulateFileDownload } from '../util/variable/variables.utils';
|
|
9
9
|
import { MetadataService } from './metadata-service/metadata.service';
|
|
10
10
|
import { VARIABLE_CONSTANTS } from '../constants/variables.constants';
|
|
11
|
+
import { appManager } from '../util/variable/variables.utils';
|
|
11
12
|
import { isArray, isFunction, isUndefined, set } from "lodash-es";
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "@wm/core";
|
|
@@ -90,15 +91,6 @@ export class VariablesService {
|
|
|
90
91
|
value: v
|
|
91
92
|
};
|
|
92
93
|
}
|
|
93
|
-
processSpinnerMessageBinding(variable, scope) {
|
|
94
|
-
if (!variable.spinnerMessage?.startsWith?.('bind:')) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const expr = variable.spinnerMessage.replace('bind:', '');
|
|
98
|
-
variable.spinnerMessage = '';
|
|
99
|
-
const watchExpression = $watch(expr, scope, {}, nv => variable.spinnerMessage = nv ?? '');
|
|
100
|
-
scope.registerDestroyListener?.(watchExpression);
|
|
101
|
-
}
|
|
102
94
|
processBinding(variable, context, bindSource, bindTarget) {
|
|
103
95
|
bindSource = bindSource || 'dataBinding';
|
|
104
96
|
bindTarget = bindTarget || 'dataBinding';
|
|
@@ -108,9 +100,6 @@ export class VariablesService {
|
|
|
108
100
|
if (!bindMap || !isArray(bindMap)) {
|
|
109
101
|
return;
|
|
110
102
|
}
|
|
111
|
-
if (variable.category === VARIABLE_CONSTANTS.CATEGORY.SERVICE) {
|
|
112
|
-
applyMultiIndexForDuplicateBindings(bindMap);
|
|
113
|
-
}
|
|
114
103
|
bindMap.forEach((node) => {
|
|
115
104
|
/* for static variable change the binding with target 'dataBinding' to 'dataSet', as the results have to reflect directly in the dataSet */
|
|
116
105
|
if (variable.category === 'wm.Variable' && node.target === 'dataBinding') {
|
|
@@ -154,7 +143,6 @@ export class VariablesService {
|
|
|
154
143
|
const params = {};
|
|
155
144
|
varInstance = VariableFactory.create(variablesJson[variableName], scope);
|
|
156
145
|
varInstance.init();
|
|
157
|
-
this.processSpinnerMessageBinding(varInstance, scope);
|
|
158
146
|
if (this.isVariableSeperated(variablesJson, variableName)) {
|
|
159
147
|
this.processBinding(varInstance, scope, 'dataBinding', this.getBindSourceTarget(varInstance));
|
|
160
148
|
varInstance.httpService = this.httpService;
|
|
@@ -173,7 +161,7 @@ export class VariablesService {
|
|
|
173
161
|
varInstance.simulateFileDownload = simulateFileDownload;
|
|
174
162
|
}
|
|
175
163
|
}
|
|
176
|
-
if (this.isVariableSeperated(variablesJson, variableName) || variablesJson[variableName].category === 'wm.
|
|
164
|
+
if (this.isVariableSeperated(variablesJson, variableName) || variablesJson[variableName].category === 'wm.TimerVariable') {
|
|
177
165
|
for (const e in VARIABLE_CONSTANTS.EVENT) {
|
|
178
166
|
if (varInstance[VARIABLE_CONSTANTS.EVENT[e]]) {
|
|
179
167
|
varInstance[VARIABLE_CONSTANTS.EVENT[e]] = $parseEvent(varInstance[VARIABLE_CONSTANTS.EVENT[e]]);
|
|
@@ -209,4 +197,4 @@ export class VariablesService {
|
|
|
209
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VariablesService, decorators: [{
|
|
210
198
|
type: Injectable
|
|
211
199
|
}], ctorParameters: () => [{ type: i1.AbstractHttpService }, { type: i2.MetadataService }, { type: i1.AbstractNavigationService }, { type: i3.Router }, { type: i1.AbstractToasterService }, { type: i4.OAuthService }, { type: i5.SecurityService }, { type: i1.AbstractDialogService }] });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy92YXJpYWJsZXMvc3JjL3NlcnZpY2UvdmFyaWFibGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUNwRSxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDckosT0FBTyxFQUFFLFVBQVUsRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQUVoRSxNQUFNLE9BQU8sU0FBUztJQUNsQixNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDaEIsT0FBUSxVQUFV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QztZQUM5QyxJQUFJLFdBQVcsWUFBWSxVQUFVLEVBQUUsQ0FBQztnQkFDcEMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osaUJBQWlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUM1RCxDQUFDO1FBQ0wsQ0FBQztRQUVELGlHQUFpRztRQUNqRyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRztRQUN4QixhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0F6TVEsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgICR3YXRjaCxcbiAgICAkcGFyc2VFdmVudCxcbiAgICBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgQWJzdHJhY3RIdHRwU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSwgJGludm9rZVdhdGNoZXJzLCBnZXRDbG9uZWRPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnQHdtL29BdXRoJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5cbmltcG9ydCB7IFZhcmlhYmxlRmFjdG9yeSB9IGZyb20gJy4uL2ZhY3RvcnkvdmFyaWFibGUuZmFjdG9yeSc7XG5pbXBvcnQgeyB3bVNldERlcGVuZGVuY3ksIEJhc2VBY3Rpb24sIGdldFRhcmdldCwgc2V0VmFsdWVUb05vZGUsIGdldFRhcmdldE5vZGVLZXksIGludGVybmFsQm91bmROb2RlTWFwLCBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnQHdhdmVtYWtlci92YXJpYWJsZXMnO1xuaW1wb3J0IHsgYXBwTWFuYWdlciwgYXBwbHlNdWx0aUluZGV4Rm9yRHVwbGljYXRlQmluZGluZ3MsIHNldERlcGVuZGVuY3ksIHNpbXVsYXRlRmlsZURvd25sb2FkIH0gZnJvbSAnLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS1zZXJ2aWNlL21ldGFkYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFSSUFCTEVfQ09OU1RBTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMnO1xuaW1wb3J0IHtpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZCwgc2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZXIgaW1wbGVtZW50cyBEYXRlRm9ybWF0dGVyIHtcbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gIGFwcE1hbmFnZXIuZ2V0UGlwZSgnZGF0ZScpLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlc1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWV0YWRhdGFTZXJ2aWNlOiBNZXRhZGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlY3VyaXR5U2VydmljZTogU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZVxuICAgICkge1xuICAgICAgICAvLyBzZXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB0byBiZSB1c2VkIGFjcm9zcyB2YXJpYWJsZSBjbGFzc2VzLCBtYW5hZ2VycyBhbmQgdXRpbHNcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdtZXRhZGF0YScsIHRoaXMubWV0YWRhdGFTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnbmF2aWdhdGlvblNlcnZpY2UnLCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgncm91dGVyJywgdGhpcy5yb3V0ZXJTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgndG9hc3RlcicsIHRoaXMudG9hc3RlclNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdvQXV0aCcsIHRoaXMub0F1dGhTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHNldERlcGVuZGVuY3koJ2RpYWxvZycsIHRoaXMuZGlhbG9nU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnb0F1dGgnLCB0aGlzLm9BdXRoU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnbWV0YWRhdGEnLCB0aGlzLm1ldGFkYXRhU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvb3AgdGhyb3VnaCBhIGNvbGxlY3Rpb24gb2YgdmFyaWFibGVzL2FjdGlvbnNcbiAgICAgKiB0cmlnZ2VyIGNhbmNlbCBvbiBlYWNoIChvZiBleGlzdHMpXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICBidWxrQ2FuY2VsKGNvbGxlY3Rpb24pIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbikuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29sbGVjdGlvbltuYW1lXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhcmlhYmxlLmNhbmNlbCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZS5jYW5jZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9vcHMgb3ZlciB0aGUgdmFyaWFibGUvYWN0aW9ucyBjb2xsZWN0aW9uIGFuZCB0cmlnZ2VyIGludm9rZSBvbiBpdCBpZiBzdGFydFVwZGF0ZSBvbiBpdCBpcyB0cnVlXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICB0cmlnZ2VyU3RhcnRVcGRhdGUoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uKVxuICAgICAgICAgICAgICAgIC5tYXAobmFtZSA9PiBjb2xsZWN0aW9uW25hbWVdKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoIHZhcmlhYmxlID0+IHZhcmlhYmxlPy5zdGFydFVwZGF0ZSAmJiB2YXJpYWJsZS5pbnZva2UpXG4gICAgICAgICAgICAgICAgLm1hcCh2YXJpYWJsZSA9PiB2YXJpYWJsZS5pbnZva2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0JpbmRFeHAoZDogYW55LCBzY29wZTogYW55LCB2YXJpYWJsZSkge1xuICAgICAgICBjb25zdCByb290ID0gZ2V0VGFyZ2V0KHZhcmlhYmxlKSxcbiAgICAgICAgICAgIHRhcmdldE5vZGVLZXkgPSBnZXRUYXJnZXROb2RlS2V5KGQudGFyZ2V0KSxcbiAgICAgICAgICAgIHJ1bk1vZGUgPSB0cnVlO1xuICAgICAgICBsZXQgdiA9IGlzQXJyYXkoZC52YWx1ZSkgPyBkLnZhbHVlWzBdIDogZC52YWx1ZTtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIGlmICh2LnN0YXJ0c1dpdGggJiYgdi5zdGFydHNXaXRoKCdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hFeHByZXNzaW9uID0gJHdhdGNoKHYucmVwbGFjZSgnYmluZDonLCAnJyksIHNjb3BlLCB7fSwgdmFyaWFibGUuaW52b2tlT25QYXJhbUNoYW5nZS5iaW5kKHZhcmlhYmxlLCBkKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGQsICgpID0+IHZhcmlhYmxlLmlzTXV0ZWQpO1xuICAgICAgICAgICAgICAgIHYgPSBzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lciA/IHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHdhdGNoRXhwcmVzc2lvbikgOiB3YXRjaEV4cHJlc3Npb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlVG9Ob2RlKGQudGFyZ2V0LCBkLCByb290LCB2YXJpYWJsZSwgZC52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bk1vZGUgJiYgcm9vdCAhPT0gdGFyZ2V0Tm9kZUtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWludGVybmFsQm91bmROb2RlTWFwLmhhcyh2YXJpYWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsQm91bmROb2RlTWFwLnNldCh2YXJpYWJsZSwge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldChpbnRlcm5hbEJvdW5kTm9kZU1hcC5nZXQodmFyaWFibGUpLCBbdmFyaWFibGUubmFtZSwgcm9vdCwgZC50YXJnZXRdLCBkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGQudGFyZ2V0LFxuICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvY2Vzc1NwaW5uZXJNZXNzYWdlQmluZGluZyh2YXJpYWJsZTogYW55LCBzY29wZTogYW55KSB7XG4gICAgICAgIGlmICghdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2U/LnN0YXJ0c1dpdGg/LignYmluZDonKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cHIgPSB2YXJpYWJsZS5zcGlubmVyTWVzc2FnZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPSAnJztcbiAgICAgICAgY29uc3Qgd2F0Y2hFeHByZXNzaW9uID0gJHdhdGNoKGV4cHIsIHNjb3BlLCB7fSwgbnYgPT4gdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPSBudiA/PyAnJyk7XG4gICAgICAgIHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyPy4od2F0Y2hFeHByZXNzaW9uKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzQmluZGluZyh2YXJpYWJsZTogYW55LCBjb250ZXh0OiBhbnksIGJpbmRTb3VyY2U/OiBzdHJpbmcsIGJpbmRUYXJnZXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgYmluZFNvdXJjZSA9IGJpbmRTb3VyY2UgfHwgJ2RhdGFCaW5kaW5nJztcbiAgICAgICAgYmluZFRhcmdldCA9IGJpbmRUYXJnZXQgfHwgJ2RhdGFCaW5kaW5nJztcblxuICAgICAgICBjb25zdCBiaW5kTWFwID0gdmFyaWFibGVbYmluZFNvdXJjZV07XG4gICAgICAgIHZhcmlhYmxlW2JpbmRTb3VyY2VdID0ge307XG4gICAgICAgIHZhcmlhYmxlWydfYmluZCcgKyBiaW5kU291cmNlXSA9IGJpbmRNYXA7XG4gICAgICAgIGlmICghYmluZE1hcCB8fCAhaXNBcnJheShiaW5kTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZS5jYXRlZ29yeSA9PT0gVkFSSUFCTEVfQ09OU1RBTlRTLkNBVEVHT1JZLlNFUlZJQ0UpIHtcbiAgICAgICAgICAgIGFwcGx5TXVsdGlJbmRleEZvckR1cGxpY2F0ZUJpbmRpbmdzKGJpbmRNYXApO1xuICAgICAgICB9XG4gICAgICAgIGJpbmRNYXAuZm9yRWFjaCggKG5vZGUpID0+IHtcbiAgICAgICAgICAgIC8qIGZvciBzdGF0aWMgdmFyaWFibGUgY2hhbmdlIHRoZSBiaW5kaW5nIHdpdGggdGFyZ2V0ICdkYXRhQmluZGluZycgdG8gJ2RhdGFTZXQnLCBhcyB0aGUgcmVzdWx0cyBoYXZlIHRvIHJlZmxlY3QgZGlyZWN0bHkgaW4gdGhlIGRhdGFTZXQgKi9cbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5jYXRlZ29yeSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiBub2RlLnRhcmdldCA9PT0gJ2RhdGFCaW5kaW5nJykge1xuICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0ID0gJ2RhdGFTZXQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZEV4cChub2RlLCBjb250ZXh0LCB2YXJpYWJsZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5WYXJpYWJsZScgfHwgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uU2VydmljZVZhcmlhYmxlJyB8fFxuICAgICAgICAgICAgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uTGl2ZVZhcmlhYmxlJyB8fCB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5DcnVkVmFyaWFibGUnXG4gICAgfVxuXG4gICAgZ2V0QmluZFNvdXJjZVRhcmdldCh2YXJpYWJsZSkge1xuICAgICAgICBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5MaXZlVmFyaWFibGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFyaWFibGUub3BlcmF0aW9uID09PSAncmVhZCcgPyAnZmlsdGVyRmllbGRzJyA6ICdpbnB1dEZpZWxkcyc7XG4gICAgICAgIH0gZWxzZSBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5Nb2RlbFZhcmlhYmxlJykge1xuICAgICAgICAgICAgcmV0dXJuICdkYXRhU2V0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnZGF0YUJpbmRpbmcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgdGhlIHJhdyB2YXJpYWJsZXMgYW5kIGFjdGlvbnMganNvbiBhcyBpbnB1dFxuICAgICAqIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIGFuZCBhY3Rpb24gaW5zdGFuY2VzIHRocm91Z2ggdGhlIGZhY3RvcnlcbiAgICAgKiBjb2xsZWN0IHRoZSB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW4gc2VwYXJhdGUgbWFwcyBhbmQgcmV0dXJuIHRoZSBjb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVzSnNvblxuICAgICAqIEBwYXJhbSBzY29wZVxuICAgICAqIEByZXR1cm5zIHtWYXJpYWJsZXMgLCBBY3Rpb25zfVxuICAgICAqL1xuICAgIHJlZ2lzdGVyKHBhZ2U6IHN0cmluZywgdmFyaWFibGVzSnNvbjogYW55LCBzY29wZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSW5zdGFuY2VzID0ge1xuICAgICAgICAgICAgVmFyaWFibGVzOiB7fSxcbiAgICAgICAgICAgIEFjdGlvbnM6IHt9LFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMudHJpZ2dlclN0YXJ0VXBkYXRlXG4gICAgICAgIH07XG4gICAgICAgIGxldCB2YXJJbnN0YW5jZTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhcmlhYmxlTmFtZSBpbiB2YXJpYWJsZXNKc29uKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICAgICAgdmFySW5zdGFuY2UgPSBWYXJpYWJsZUZhY3RvcnkuY3JlYXRlKHZhcmlhYmxlc0pzb25bdmFyaWFibGVOYW1lXSwgc2NvcGUpO1xuICAgICAgICAgICAgdmFySW5zdGFuY2UuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3Bpbm5lck1lc3NhZ2VCaW5kaW5nKHZhckluc3RhbmNlLCBzY29wZSk7XG4gICAgICAgICAgIGlmICh0aGlzLmlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSkge1xuICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZGluZyh2YXJJbnN0YW5jZSwgc2NvcGUsICdkYXRhQmluZGluZycsIHRoaXMuZ2V0QmluZFNvdXJjZVRhcmdldCh2YXJJbnN0YW5jZSkpO1xuICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuaHR0cFNlcnZpY2UgPSB0aGlzLmh0dHBTZXJ2aWNlO1xuICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuZGF0ZUZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoKTtcbiAgICAgICAgICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogU3RvcmUgc3Vic2NyaXB0aW9uIHVuc3Vic2NyaWJlIGZ1bmN0aW9uIChjbGVhbnVwIGhhbmRsZWQgYnkgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIpXG4gICAgICAgICAgICAgICBjb25zdCBhZnRlckludm9rZVVuc3Vic2NyaWJlID0gdmFySW5zdGFuY2Uuc3Vic2NyaWJlKCdhZnRlckludm9rZScsICgpID0+ICRpbnZva2VXYXRjaGVycyh0cnVlKSk7XG4gICAgICAgICAgICAgICAvLyBTdG9yZSBvbiB2YXJpYWJsZSBmb3IgcG90ZW50aWFsIG1hbnVhbCBjbGVhbnVwIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgaWYgKCF2YXJJbnN0YW5jZS5fZXZlbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuX2V2ZW50U3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuX2V2ZW50U3Vic2NyaXB0aW9ucy5wdXNoKGFmdGVySW52b2tlVW5zdWJzY3JpYmUpO1xuICAgICAgICAgICAgICAgaWYgKHZhckluc3RhbmNlLmNhdGVnb3J5ID09PSAnd20uTGl2ZVZhcmlhYmxlJyAmJiB2YXJJbnN0YW5jZS5vcGVyYXRpb24gPT09ICdyZWFkJykge1xuICAgICAgICAgICAgICAgICAgIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSh2YXJJbnN0YW5jZS5fY29udGV4dCwgdmFySW5zdGFuY2UuZmlsdGVyRXhwcmVzc2lvbnMsIHZhckluc3RhbmNlKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZS5jYXRlZ29yeSA9PT0gJ3dtLkNydWRWYXJpYWJsZScgfHwgdmFySW5zdGFuY2UuY2F0ZWdvcnkgPT09ICd3bS5TZXJ2aWNlVmFyaWFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgdmFySW5zdGFuY2Uuc2ltdWxhdGVGaWxlRG93bmxvYWQgPSBzaW11bGF0ZUZpbGVEb3dubG9hZDtcbiAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICB9XG5cbiAgICAgICAgICAgaWYgKHRoaXMuaXNWYXJpYWJsZVNlcGVyYXRlZCh2YXJpYWJsZXNKc29uLCB2YXJpYWJsZU5hbWUpIHx8IHZhcmlhYmxlc0pzb25bdmFyaWFibGVOYW1lXS5jYXRlZ29yeSA9PT0gJ3dtLlRpbWVyQWN0aW9uJykge1xuICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIGluIFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVCkge1xuICAgICAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlW1ZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVFtlXV0gPSAkcGFyc2VFdmVudCh2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAvLyBpZiBhY3Rpb24gdHlwZSwgcHV0IGl0IGluIEFjdGlvbnMgbmFtZXNwYWNlXG4gICAgICAgICAgICBpZiAodmFySW5zdGFuY2UgaW5zdGFuY2VvZiBCYXNlQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVJbnN0YW5jZXMuQWN0aW9uc1t2YXJpYWJsZU5hbWVdID0gdmFySW5zdGFuY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5zdGFuY2VzLlZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdID0gdmFySW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgY29udGV4dCBoYXMgb25EZXN0cm95IGxpc3RlbmVyLCBzdWJzY3JpYmUgdGhlIGV2ZW50IGFuZCB0cmlnZ2VyIGNhbmNlbCBvbiBhbGwgdmFyaWJhbGVzXG4gICAgICAgIGlmIChzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcikge1xuICAgICAgICAgICAgc2NvcGUucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVsa0NhbmNlbCh2YXJpYWJsZUluc3RhbmNlcy5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVsa0NhbmNlbCh2YXJpYWJsZUluc3RhbmNlcy5BY3Rpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlSW5zdGFuY2VzO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXBlbmRlbmN5KG5hbWUsIHJlZikge1xuICAgICAgICBzZXREZXBlbmRlbmN5KG5hbWUsIHJlZik7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeShuYW1lLCByZWYpO1xuICAgIH1cbn1cbiJdfQ==
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy92YXJpYWJsZXMvc3JjL3NlcnZpY2UvdmFyaWFibGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUNwRSxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0SSxPQUFPLEVBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7O0FBRWhFLE1BQU0sT0FBTyxTQUFTO0lBQ2xCLE1BQU0sQ0FBQyxLQUFLLEVBQUUs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QUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0E1TFEsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgICR3YXRjaCxcbiAgICAkcGFyc2VFdmVudCxcbiAgICBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgQWJzdHJhY3RIdHRwU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSwgJGludm9rZVdhdGNoZXJzLCBnZXRDbG9uZWRPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnQHdtL29BdXRoJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5cbmltcG9ydCB7IFZhcmlhYmxlRmFjdG9yeSB9IGZyb20gJy4uL2ZhY3RvcnkvdmFyaWFibGUuZmFjdG9yeSc7XG5pbXBvcnQgeyB3bVNldERlcGVuZGVuY3ksIEJhc2VBY3Rpb24sIGdldFRhcmdldCwgc2V0VmFsdWVUb05vZGUsIGdldFRhcmdldE5vZGVLZXksIGludGVybmFsQm91bmROb2RlTWFwIH0gZnJvbSAnQHdhdmVtYWtlci92YXJpYWJsZXMnO1xuaW1wb3J0IHtzZXREZXBlbmRlbmN5LCBzaW11bGF0ZUZpbGVEb3dubG9hZH0gZnJvbSAnLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS1zZXJ2aWNlL21ldGFkYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFSSUFCTEVfQ09OU1RBTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMnO1xuaW1wb3J0IHthcHBNYW5hZ2VyfSBmcm9tICcuLi91dGlsL3ZhcmlhYmxlL3ZhcmlhYmxlcy51dGlscyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnQHdhdmVtYWtlci92YXJpYWJsZXMnO1xuaW1wb3J0IHtpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZCwgc2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZXIgaW1wbGVtZW50cyBEYXRlRm9ybWF0dGVyIHtcbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gIGFwcE1hbmFnZXIuZ2V0UGlwZSgnZGF0ZScpLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlc1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWV0YWRhdGFTZXJ2aWNlOiBNZXRhZGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlY3VyaXR5U2VydmljZTogU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZVxuICAgICkge1xuICAgICAgICAvLyBzZXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB0byBiZSB1c2VkIGFjcm9zcyB2YXJpYWJsZSBjbGFzc2VzLCBtYW5hZ2VycyBhbmQgdXRpbHNcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdtZXRhZGF0YScsIHRoaXMubWV0YWRhdGFTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnbmF2aWdhdGlvblNlcnZpY2UnLCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgncm91dGVyJywgdGhpcy5yb3V0ZXJTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgndG9hc3RlcicsIHRoaXMudG9hc3RlclNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdvQXV0aCcsIHRoaXMub0F1dGhTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHNldERlcGVuZGVuY3koJ2RpYWxvZycsIHRoaXMuZGlhbG9nU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnb0F1dGgnLCB0aGlzLm9BdXRoU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnbWV0YWRhdGEnLCB0aGlzLm1ldGFkYXRhU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvb3AgdGhyb3VnaCBhIGNvbGxlY3Rpb24gb2YgdmFyaWFibGVzL2FjdGlvbnNcbiAgICAgKiB0cmlnZ2VyIGNhbmNlbCBvbiBlYWNoIChvZiBleGlzdHMpXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICBidWxrQ2FuY2VsKGNvbGxlY3Rpb24pIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbikuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29sbGVjdGlvbltuYW1lXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhcmlhYmxlLmNhbmNlbCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZS5jYW5jZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9vcHMgb3ZlciB0aGUgdmFyaWFibGUvYWN0aW9ucyBjb2xsZWN0aW9uIGFuZCB0cmlnZ2VyIGludm9rZSBvbiBpdCBpZiBzdGFydFVwZGF0ZSBvbiBpdCBpcyB0cnVlXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICB0cmlnZ2VyU3RhcnRVcGRhdGUoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uKVxuICAgICAgICAgICAgICAgIC5tYXAobmFtZSA9PiBjb2xsZWN0aW9uW25hbWVdKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoIHZhcmlhYmxlID0+IHZhcmlhYmxlPy5zdGFydFVwZGF0ZSAmJiB2YXJpYWJsZS5pbnZva2UpXG4gICAgICAgICAgICAgICAgLm1hcCh2YXJpYWJsZSA9PiB2YXJpYWJsZS5pbnZva2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0JpbmRFeHAoZDogYW55LCBzY29wZTogYW55LCB2YXJpYWJsZSkge1xuICAgICAgICBjb25zdCByb290ID0gZ2V0VGFyZ2V0KHZhcmlhYmxlKSxcbiAgICAgICAgICAgIHRhcmdldE5vZGVLZXkgPSBnZXRUYXJnZXROb2RlS2V5KGQudGFyZ2V0KSxcbiAgICAgICAgICAgIHJ1bk1vZGUgPSB0cnVlO1xuICAgICAgICBsZXQgdiA9IGlzQXJyYXkoZC52YWx1ZSkgPyBkLnZhbHVlWzBdIDogZC52YWx1ZTtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIGlmICh2LnN0YXJ0c1dpdGggJiYgdi5zdGFydHNXaXRoKCdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hFeHByZXNzaW9uID0gJHdhdGNoKHYucmVwbGFjZSgnYmluZDonLCAnJyksIHNjb3BlLCB7fSwgdmFyaWFibGUuaW52b2tlT25QYXJhbUNoYW5nZS5iaW5kKHZhcmlhYmxlLCBkKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGQsICgpID0+IHZhcmlhYmxlLmlzTXV0ZWQpO1xuICAgICAgICAgICAgICAgIHYgPSBzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lciA/IHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHdhdGNoRXhwcmVzc2lvbikgOiB3YXRjaEV4cHJlc3Npb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlVG9Ob2RlKGQudGFyZ2V0LCBkLCByb290LCB2YXJpYWJsZSwgZC52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bk1vZGUgJiYgcm9vdCAhPT0gdGFyZ2V0Tm9kZUtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWludGVybmFsQm91bmROb2RlTWFwLmhhcyh2YXJpYWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsQm91bmROb2RlTWFwLnNldCh2YXJpYWJsZSwge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldChpbnRlcm5hbEJvdW5kTm9kZU1hcC5nZXQodmFyaWFibGUpLCBbdmFyaWFibGUubmFtZSwgcm9vdCwgZC50YXJnZXRdLCBkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGQudGFyZ2V0LFxuICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9jZXNzQmluZGluZyh2YXJpYWJsZTogYW55LCBjb250ZXh0OiBhbnksIGJpbmRTb3VyY2U/OiBzdHJpbmcsIGJpbmRUYXJnZXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgYmluZFNvdXJjZSA9IGJpbmRTb3VyY2UgfHwgJ2RhdGFCaW5kaW5nJztcbiAgICAgICAgYmluZFRhcmdldCA9IGJpbmRUYXJnZXQgfHwgJ2RhdGFCaW5kaW5nJztcblxuICAgICAgICBjb25zdCBiaW5kTWFwID0gdmFyaWFibGVbYmluZFNvdXJjZV07XG4gICAgICAgIHZhcmlhYmxlW2JpbmRTb3VyY2VdID0ge307XG4gICAgICAgIHZhcmlhYmxlWydfYmluZCcgKyBiaW5kU291cmNlXSA9IGJpbmRNYXA7XG4gICAgICAgIGlmICghYmluZE1hcCB8fCAhaXNBcnJheShiaW5kTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJpbmRNYXAuZm9yRWFjaCggKG5vZGUpID0+IHtcbiAgICAgICAgICAgIC8qIGZvciBzdGF0aWMgdmFyaWFibGUgY2hhbmdlIHRoZSBiaW5kaW5nIHdpdGggdGFyZ2V0ICdkYXRhQmluZGluZycgdG8gJ2RhdGFTZXQnLCBhcyB0aGUgcmVzdWx0cyBoYXZlIHRvIHJlZmxlY3QgZGlyZWN0bHkgaW4gdGhlIGRhdGFTZXQgKi9cbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5jYXRlZ29yeSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiBub2RlLnRhcmdldCA9PT0gJ2RhdGFCaW5kaW5nJykge1xuICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0ID0gJ2RhdGFTZXQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZEV4cChub2RlLCBjb250ZXh0LCB2YXJpYWJsZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5WYXJpYWJsZScgfHwgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uU2VydmljZVZhcmlhYmxlJyB8fFxuICAgICAgICAgICAgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uTGl2ZVZhcmlhYmxlJyB8fCB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5DcnVkVmFyaWFibGUnXG4gICAgfVxuXG4gICAgZ2V0QmluZFNvdXJjZVRhcmdldCh2YXJpYWJsZSkge1xuICAgICAgICBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5MaXZlVmFyaWFibGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFyaWFibGUub3BlcmF0aW9uID09PSAncmVhZCcgPyAnZmlsdGVyRmllbGRzJyA6ICdpbnB1dEZpZWxkcyc7XG4gICAgICAgIH0gZWxzZSBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5Nb2RlbFZhcmlhYmxlJykge1xuICAgICAgICAgICAgcmV0dXJuICdkYXRhU2V0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnZGF0YUJpbmRpbmcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgdGhlIHJhdyB2YXJpYWJsZXMgYW5kIGFjdGlvbnMganNvbiBhcyBpbnB1dFxuICAgICAqIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIGFuZCBhY3Rpb24gaW5zdGFuY2VzIHRocm91Z2ggdGhlIGZhY3RvcnlcbiAgICAgKiBjb2xsZWN0IHRoZSB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW4gc2VwYXJhdGUgbWFwcyBhbmQgcmV0dXJuIHRoZSBjb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVzSnNvblxuICAgICAqIEBwYXJhbSBzY29wZVxuICAgICAqIEByZXR1cm5zIHtWYXJpYWJsZXMgLCBBY3Rpb25zfVxuICAgICAqL1xuICAgIHJlZ2lzdGVyKHBhZ2U6IHN0cmluZywgdmFyaWFibGVzSnNvbjogYW55LCBzY29wZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSW5zdGFuY2VzID0ge1xuICAgICAgICAgICAgVmFyaWFibGVzOiB7fSxcbiAgICAgICAgICAgIEFjdGlvbnM6IHt9LFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMudHJpZ2dlclN0YXJ0VXBkYXRlXG4gICAgICAgIH07XG4gICAgICAgIGxldCB2YXJJbnN0YW5jZTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhcmlhYmxlTmFtZSBpbiB2YXJpYWJsZXNKc29uKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICAgICAgdmFySW5zdGFuY2UgPSBWYXJpYWJsZUZhY3RvcnkuY3JlYXRlKHZhcmlhYmxlc0pzb25bdmFyaWFibGVOYW1lXSwgc2NvcGUpO1xuICAgICAgICAgICAgdmFySW5zdGFuY2UuaW5pdCgpO1xuICAgICAgICAgICBpZiAodGhpcy5pc1ZhcmlhYmxlU2VwZXJhdGVkKHZhcmlhYmxlc0pzb24sIHZhcmlhYmxlTmFtZSkpIHtcbiAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0JpbmRpbmcodmFySW5zdGFuY2UsIHNjb3BlLCAnZGF0YUJpbmRpbmcnLCB0aGlzLmdldEJpbmRTb3VyY2VUYXJnZXQodmFySW5zdGFuY2UpKTtcbiAgICAgICAgICAgICAgIHZhckluc3RhbmNlLmh0dHBTZXJ2aWNlID0gdGhpcy5odHRwU2VydmljZTtcbiAgICAgICAgICAgICAgIHZhckluc3RhbmNlLmRhdGVGb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyKCk7XG4gICAgICAgICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFN0b3JlIHN1YnNjcmlwdGlvbiB1bnN1YnNjcmliZSBmdW5jdGlvbiAoY2xlYW51cCBoYW5kbGVkIGJ5IHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKVxuICAgICAgICAgICAgICAgY29uc3QgYWZ0ZXJJbnZva2VVbnN1YnNjcmliZSA9IHZhckluc3RhbmNlLnN1YnNjcmliZSgnYWZ0ZXJJbnZva2UnLCAoKSA9PiAkaW52b2tlV2F0Y2hlcnModHJ1ZSkpO1xuICAgICAgICAgICAgICAgLy8gU3RvcmUgb24gdmFyaWFibGUgZm9yIHBvdGVudGlhbCBtYW51YWwgY2xlYW51cCBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgIGlmICghdmFySW5zdGFuY2UuX2V2ZW50U3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlLl9ldmVudFN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIHZhckluc3RhbmNlLl9ldmVudFN1YnNjcmlwdGlvbnMucHVzaChhZnRlckludm9rZVVuc3Vic2NyaWJlKTtcbiAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZS5jYXRlZ29yeSA9PT0gJ3dtLkxpdmVWYXJpYWJsZScgJiYgdmFySW5zdGFuY2Uub3BlcmF0aW9uID09PSAncmVhZCcpIHtcbiAgICAgICAgICAgICAgICAgICBwcm9jZXNzRmlsdGVyRXhwQmluZE5vZGUodmFySW5zdGFuY2UuX2NvbnRleHQsIHZhckluc3RhbmNlLmZpbHRlckV4cHJlc3Npb25zLCB2YXJJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpZiAodmFySW5zdGFuY2UuY2F0ZWdvcnkgPT09ICd3bS5DcnVkVmFyaWFibGUnIHx8IHZhckluc3RhbmNlLmNhdGVnb3J5ID09PSAnd20uU2VydmljZVZhcmlhYmxlJykge1xuICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlLnNpbXVsYXRlRmlsZURvd25sb2FkID0gc2ltdWxhdGVGaWxlRG93bmxvYWQ7XG4gICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgfVxuXG4gICAgICAgICAgIGlmICh0aGlzLmlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSB8fCB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5UaW1lclZhcmlhYmxlJykge1xuICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIGluIFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVCkge1xuICAgICAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlW1ZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVFtlXV0gPSAkcGFyc2VFdmVudCh2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAvLyBpZiBhY3Rpb24gdHlwZSwgcHV0IGl0IGluIEFjdGlvbnMgbmFtZXNwYWNlXG4gICAgICAgICAgICBpZiAodmFySW5zdGFuY2UgaW5zdGFuY2VvZiBCYXNlQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVJbnN0YW5jZXMuQWN0aW9uc1t2YXJpYWJsZU5hbWVdID0gdmFySW5zdGFuY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5zdGFuY2VzLlZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdID0gdmFySW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgY29udGV4dCBoYXMgb25EZXN0cm95IGxpc3RlbmVyLCBzdWJzY3JpYmUgdGhlIGV2ZW50IGFuZCB0cmlnZ2VyIGNhbmNlbCBvbiBhbGwgdmFyaWJhbGVzXG4gICAgICAgIGlmIChzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcikge1xuICAgICAgICAgICAgc2NvcGUucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVsa0NhbmNlbCh2YXJpYWJsZUluc3RhbmNlcy5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVsa0NhbmNlbCh2YXJpYWJsZUluc3RhbmNlcy5BY3Rpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlSW5zdGFuY2VzO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXBlbmRlbmN5KG5hbWUsIHJlZikge1xuICAgICAgICBzZXREZXBlbmRlbmN5KG5hbWUsIHJlZik7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeShuYW1lLCByZWYpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -15,24 +15,6 @@ import { concat, forEach, get, includes, isArray, isEmpty, isNull, isObject, isU
|
|
|
15
15
|
const isBodyTypeQueryOrProcedure = (variable) => {
|
|
16
16
|
return (includes(['QueryExecution', 'ProcedureExecution'], variable.controller)) && (includes(['put', 'post'], variable.operationType));
|
|
17
17
|
};
|
|
18
|
-
const appendQueryParam = (queryParams, paramName, paramValue, preEncoded = false) => {
|
|
19
|
-
const encodedValue = preEncoded ? paramValue : encodeURIComponent(paramValue);
|
|
20
|
-
const pair = `${paramName}=${encodedValue}`;
|
|
21
|
-
return queryParams ? `${queryParams}&${pair}` : `?${pair}`;
|
|
22
|
-
};
|
|
23
|
-
const getQueryParamValues = (param, paramValue) => {
|
|
24
|
-
if (isArray(paramValue)) {
|
|
25
|
-
// 'multi' (duplicate query-param bindings) repeats the param, e.g. tag=a&tag=b.
|
|
26
|
-
if (param.collectionFormat === 'multi') {
|
|
27
|
-
return map(paramValue, (value) => ({ value, preEncoded: false }));
|
|
28
|
-
}
|
|
29
|
-
// Otherwise, join into a single comma-separated value, e.g. tag=a,b. Encode each
|
|
30
|
-
// element individually so the joining commas stay literal (unambiguously the
|
|
31
|
-
// separator) while a comma inside an element's own value stays escaped as %2C.
|
|
32
|
-
return [{ value: map(paramValue, (value) => encodeURIComponent(value)).join(','), preEncoded: true }];
|
|
33
|
-
}
|
|
34
|
-
return [{ value: paramValue, preEncoded: false }];
|
|
35
|
-
};
|
|
36
18
|
/**
|
|
37
19
|
* returns true if the variable is a Query service variable
|
|
38
20
|
* @param {string} controller
|
|
@@ -250,12 +232,12 @@ export class ServiceVariableUtils {
|
|
|
250
232
|
if (isNull(paramValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {
|
|
251
233
|
break;
|
|
252
234
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
queryParams
|
|
258
|
-
}
|
|
235
|
+
if (!queryParams) {
|
|
236
|
+
queryParams = '?' + param.name + '=' + encodeURIComponent(paramValue);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
queryParams += '&' + param.name + '=' + encodeURIComponent(paramValue);
|
|
240
|
+
}
|
|
259
241
|
break;
|
|
260
242
|
case 'PATH':
|
|
261
243
|
/* replacing the path param based on the regular expression in the relative path */
|
|
@@ -391,4 +373,4 @@ export class ServiceVariableUtils {
|
|
|
391
373
|
});
|
|
392
374
|
}
|
|
393
375
|
}
|
|
394
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS12YXJpYWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhcmlhYmxlcy9zcmMvdXRpbC92YXJpYWJsZS9zZXJ2aWNlLXZhcmlhYmxlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxNQUFNLEVBQ04sT0FBTyxFQUNQLEdBQUcsRUFDSCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFDakIsT0FBTyxFQUFFLE9BQU8sRUFDbkIsTUFBTSxXQUFXLENBQUM7QUFFbkI7Ozs7OztHQU1HO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO0lBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQzVJLENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFDaEYsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sSUFBSSxHQUFHLEdBQUcsU0FBUyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUMvRCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQzlDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdEIsZ0ZBQWdGO1FBQ2hGLElBQUksS0FBSyxDQUFDLGdCQUFnQixLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxpRkFBaUY7UUFDakYsNkVBQTZFO1FBQzdFLCtFQUErRTtRQUMvRSxPQUFPLENBQUMsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUNELE9BQU8sQ0FBQyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLEVBQUU7SUFDbEUsT0FBTyxVQUFVLEtBQUssa0JBQWtCLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxXQUFXLEtBQUssa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztBQUMzSCxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtJQUNoRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzFFLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQy9GLElBQUkscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDakYsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLFVBQVU7b0JBQ3BDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUcsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RHLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRTtJQUM3QyxNQUFNLFdBQVcsR0FBRyxFQUFFLEVBQ2xCLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxVQUFVLENBQUM7SUFDZixPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSztRQUMzQixVQUFVLEdBQUcsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLEtBQUssRUFBRSxJQUFJLFVBQVUsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUYsVUFBVSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDMUYsa0ZBQWtGO1lBQ2xGLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZFLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0gsYUFBYSxFQUFFLFdBQVc7UUFDMUIsZUFBZSxFQUFFLGFBQWE7S0FDakMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7SUFDckMsTUFBTSxRQUFRLEdBQUcsRUFBRSxFQUNmLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFDckUsWUFBWSxHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDM0UsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsRUFBRSxHQUFHO1FBQy9CLElBQUksUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDakQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNKLFFBQVEsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0I7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE9BQVE7UUFDeEUsUUFBUSxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFFMUIsOERBQThEO1FBQzlELElBQUksYUFBYSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLE9BQU87Z0JBQ0gsT0FBTyxFQUFHO29CQUNOLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtvQkFDbEUsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCO29CQUNwRSxPQUFPLEVBQUUseUJBQXlCO2lCQUNyQzthQUNKLENBQUM7UUFDTixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPO2dCQUNILE9BQU8sRUFBRztvQkFDTixNQUFNLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7b0JBQ2pFLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtvQkFDbkUsT0FBTyxFQUFFLHlCQUF5QjtpQkFDckM7YUFDSixDQUFDO1FBQ04sQ0FBQzthQUFNLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRCxPQUFPO2dCQUNILE9BQU8sRUFBRztvQkFDTixNQUFNLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0I7b0JBQ3ZFLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLHNCQUFzQjtvQkFDekUsT0FBTyxFQUFFLHlCQUF5QjtpQkFDckM7YUFDSixDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUNqRCxZQUFZLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUN4SCx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLFdBQVcsR0FBRyxFQUFFLEVBQ3BCLFFBQVEsRUFDUixPQUFPLEdBQUcsRUFBRSxFQUNaLFdBQVcsRUFDWCxHQUFHLEVBQ0gsb0JBQW9CLEdBQUcsRUFBRSxFQUN6QixNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEdBQUcsSUFBSSxFQUNsQixLQUFLLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sZUFBZSxFQUNmLFdBQVcsRUFDWCxlQUFlLENBQUM7UUFFaEIsU0FBUyxjQUFjO1lBQ25CLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDcEIsQ0FBQztZQUNELFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU5RCxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLFFBQVEsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixLQUFLLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTTtvQkFDckQsV0FBVyxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3hHLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2QsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQztvQkFDMUksQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE9BQU87NEJBQ0gsT0FBTyxFQUFFO2dDQUNMLE1BQU0sRUFBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWM7Z0NBQ2hFLFNBQVMsRUFBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWM7NkJBQ3JFOzRCQUNELGlCQUFpQixFQUFFLGVBQWU7eUJBQ3JDLENBQUM7b0JBQ04sQ0FBQztvQkFDRCxNQUFNO2dCQUNWLEtBQUssa0JBQWtCLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLO29CQUNwRCxLQUFLLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ3hDLElBQUksR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ2hCLDJDQUEyQzt3QkFDM0MsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO3dCQUNuSixXQUFXLEdBQUc7NEJBQ1YsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSzt5QkFDMUQsQ0FBQztvQkFDTixDQUFDO3lCQUFNLENBQUM7d0JBQ0osT0FBTzs0QkFDSCxPQUFPLEVBQUU7Z0NBQ0wsTUFBTSxFQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYztnQ0FDaEUsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYzs2QkFDcEU7NEJBQ0QsaUJBQWlCLEVBQUUsZUFBZTt5QkFDckMsQ0FBQztvQkFDTixDQUFDO29CQUNELE1BQU07WUFDZCxDQUFDO1FBQ0wsQ0FBQztRQUNELDBGQUEwRjtRQUMxRixlQUFlLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV6RSxhQUFhLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLElBQUksRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUN4RixNQUFNLEdBQUcsYUFBYSxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQzlELFdBQVcsR0FBRyxDQUFDO1lBQ1gsT0FBTyxhQUFhLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztRQUMzQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ0wsZUFBZSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDO1FBQzlELEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBRTlDLHFDQUFxQztRQUNyQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUs7WUFDN0Msd0NBQXdDO1lBQ3hDLFNBQVMsb0JBQW9CO2dCQUN6QixJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNkLHlFQUF5RTtvQkFDekUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDL0QsY0FBYyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdDLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixjQUFjLEdBQUcsV0FBVyxDQUFDO29CQUNqQyxDQUFDO29CQUNELE1BQU0sR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osbUJBQW1CO29CQUNuQixjQUFjLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQzVCLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUVuQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsS0FBSyxJQUFJLElBQUksVUFBVSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3SCxtREFBbUQ7Z0JBQ25ELElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDOUYsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUNELGtGQUFrRjtnQkFDbEYsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3hJLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUN4QyxLQUFLLE9BQU87d0JBQ1IsNERBQTREO3dCQUM1RCxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDOzRCQUNyRixNQUFNO3dCQUNWLENBQUM7d0JBQ0QsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUMsRUFBRSxFQUFFOzRCQUMvRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dDQUNyRixPQUFPOzRCQUNYLENBQUM7NEJBQ0QsV0FBVyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQzt3QkFDcEYsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsTUFBTTtvQkFDVixLQUFLLE1BQU07d0JBQ1AsbUZBQW1GO3dCQUNuRixZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsQ0FBQzt3QkFDaEYsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO3dCQUM1QyxNQUFNO29CQUNWLEtBQUssUUFBUTt3QkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQzt3QkFDakMsTUFBTTtvQkFDVixLQUFLLE1BQU07d0JBQ1AsNENBQTRDO3dCQUM1QyxJQUFJLHdCQUF3QixFQUFFLENBQUM7NEJBQzNCLG9CQUFvQixFQUFFLENBQUM7NEJBQ3ZCLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7NEJBQ3RELFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDOzRCQUNuQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUNoRixDQUFDOzZCQUFNLENBQUM7NEJBQ0osV0FBVyxHQUFHLFVBQVUsQ0FBQzt3QkFDN0IsQ0FBQzt3QkFDRCxNQUFNO29CQUNWLEtBQUssVUFBVTt3QkFDWCxJQUFJLHdCQUF3QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7NEJBQzVFLG9CQUFvQixFQUFFLENBQUM7NEJBQ3ZCLDBEQUEwRDs0QkFDMUQsUUFBUSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQzs0QkFDdEQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUN6RSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUNoRixDQUFDOzZCQUFNLENBQUM7NEJBQ0osV0FBVyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBQ25FLENBQUM7d0JBQ0QsTUFBTTtnQkFDZCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDeEIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILDRDQUE0QztRQUM1QyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE9BQU87Z0JBQ0gsT0FBTyxFQUFFO29CQUNMLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLHNCQUFzQjtvQkFDdkUsT0FBTyxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQ3ZDLFNBQVMsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNwSCx5QkFBeUIsRUFBRSxJQUFJO2lCQUNsQzthQUNKLENBQUM7UUFDTixDQUFDO1FBRUQsMEZBQTBGO1FBQzFGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakUsc0hBQXNIO1lBQ3RILElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdHLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDO1lBQzFHLENBQUM7UUFDTCxDQUFDO1FBRUQsNERBQTREO1FBQzVELDJGQUEyRjtRQUMzRixJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7ZUFDMUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRixpREFBaUQ7WUFDakQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxXQUFXLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEYsQ0FBQztZQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO1FBQzFFLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxJQUFJLFdBQVcsQ0FBQztRQUN2QixDQUFDO1FBRUQ7Ozs7V0FJRztRQUNILElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCw2RUFBNkU7WUFDekUsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5TixJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlHLDJFQUEyRTtnQkFDM0UsR0FBRyxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsR0FBRyxDQUFDO2dCQUNsRCxNQUFNLEdBQUcseUJBQXlCLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLEdBQUcsR0FBRyxVQUFVLEdBQUcsR0FBRyxDQUFDO1lBQzNCLENBQUM7WUFDRCxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQy9DLENBQUM7UUFFRCwyRkFBMkY7UUFDM0YsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixJQUFJLGNBQWMsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdILElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO29CQUM3QixXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUNyQyxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3JCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELCtHQUErRztRQUMvRyxZQUFZLEdBQUc7WUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xDLEtBQUssRUFBRSxHQUFHO1lBQ1YsUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07WUFDaEIsU0FBUyxFQUFFLE9BQU87WUFDbEIsTUFBTSxFQUFFLFdBQVc7WUFDbkIsYUFBYSxFQUFFLFdBQVc7WUFDMUIsY0FBYyxFQUFFLENBQUMsV0FBVztZQUM1QixVQUFVLEVBQUUsUUFBUSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSTtZQUN6RSxpQkFBaUIsRUFBRSxlQUFlO1NBQ3JDLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVE7UUFDL0IsbUdBQW1HO1FBQ25HLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxhQUFhLElBQUksUUFBUSxDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQyxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxLQUFLO1lBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdFR5cGUsIGdldEJsb2IsIGlzRGF0ZVRpbWVUeXBlLCBpc0RlZmluZWQsIHJlcGxhY2UgfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7ICRyb290U2NvcGUsIENPTlNUQU5UUywgU1dBR0dFUl9DT05TVEFOVFMsIFZBUklBQkxFX0NPTlNUQU5UUywgV1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNGaWxlVXBsb2FkU3VwcG9ydGVkIH0gZnJvbSAnLi92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW4gfSBmcm9tICcuLy4uL29BdXRoLnV0aWxzJztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi91dGlsL3ZhcmlhYmxlL3ZhcmlhYmxlcy51dGlscyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3ZhcmlhYmxlL3BhZ2luYXRpb24udXRpbHMnO1xuaW1wb3J0IHtcbiAgICBjb25jYXQsXG4gICAgZm9yRWFjaCxcbiAgICBnZXQsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNBcnJheSxcbiAgICBpc0VtcHR5LFxuICAgIGlzTnVsbCxcbiAgICBpc09iamVjdCxcbiAgICBpc1VuZGVmaW5lZCxcbiAgICBqb2luLCBtYXAsIHJlamVjdCxcbiAgICB0b0xvd2VyLCB0b1VwcGVyXG59IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgYSBTZXJ2aWNlIHZhcmlhYmxlIGlzOlxuICogIC0gZm9yIGEgcXVlcnkvcHJvY2VkdXJlXG4gKiAgLSBwZXJmb3JtcyBhIFBVVC9QT1NUIG9wZXJhdGlvbiwgaS5lLCB0YWtlcyBhIFJlcXVlc3QgQm9keSBhcyBpbnB1dFxuICogQHBhcmFtIHZhcmlhYmxlXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5jb25zdCBpc0JvZHlUeXBlUXVlcnlPclByb2NlZHVyZSA9ICh2YXJpYWJsZSkgPT4ge1xuICAgIHJldHVybiAoaW5jbHVkZXMoWydRdWVyeUV4ZWN1dGlvbicsICdQcm9jZWR1cmVFeGVjdXRpb24nXSwgdmFyaWFibGUuY29udHJvbGxlcikpICYmIChpbmNsdWRlcyhbJ3B1dCcsICdwb3N0J10sIHZhcmlhYmxlLm9wZXJhdGlvblR5cGUpKTtcbn07XG5cbmNvbnN0IGFwcGVuZFF1ZXJ5UGFyYW0gPSAocXVlcnlQYXJhbXMsIHBhcmFtTmFtZSwgcGFyYW1WYWx1ZSwgcHJlRW5jb2RlZCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgZW5jb2RlZFZhbHVlID0gcHJlRW5jb2RlZCA/IHBhcmFtVmFsdWUgOiBlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSk7XG4gICAgY29uc3QgcGFpciA9IGAke3BhcmFtTmFtZX09JHtlbmNvZGVkVmFsdWV9YDtcbiAgICByZXR1cm4gcXVlcnlQYXJhbXMgPyBgJHtxdWVyeVBhcmFtc30mJHtwYWlyfWAgOiBgPyR7cGFpcn1gO1xufTtcblxuY29uc3QgZ2V0UXVlcnlQYXJhbVZhbHVlcyA9IChwYXJhbSwgcGFyYW1WYWx1ZSkgPT4ge1xuICAgIGlmIChpc0FycmF5KHBhcmFtVmFsdWUpKSB7XG4gICAgICAgIC8vICdtdWx0aScgKGR1cGxpY2F0ZSBxdWVyeS1wYXJhbSBiaW5kaW5ncykgcmVwZWF0cyB0aGUgcGFyYW0sIGUuZy4gdGFnPWEmdGFnPWIuXG4gICAgICAgIGlmIChwYXJhbS5jb2xsZWN0aW9uRm9ybWF0ID09PSAnbXVsdGknKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwKHBhcmFtVmFsdWUsICh2YWx1ZSkgPT4gKHt2YWx1ZSwgcHJlRW5jb2RlZDogZmFsc2V9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBqb2luIGludG8gYSBzaW5nbGUgY29tbWEtc2VwYXJhdGVkIHZhbHVlLCBlLmcuIHRhZz1hLGIuIEVuY29kZSBlYWNoXG4gICAgICAgIC8vIGVsZW1lbnQgaW5kaXZpZHVhbGx5IHNvIHRoZSBqb2luaW5nIGNvbW1hcyBzdGF5IGxpdGVyYWwgKHVuYW1iaWd1b3VzbHkgdGhlXG4gICAgICAgIC8vIHNlcGFyYXRvcikgd2hpbGUgYSBjb21tYSBpbnNpZGUgYW4gZWxlbWVudCdzIG93biB2YWx1ZSBzdGF5cyBlc2NhcGVkIGFzICUyQy5cbiAgICAgICAgcmV0dXJuIFt7dmFsdWU6IG1hcChwYXJhbVZhbHVlLCAodmFsdWUpID0+IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpLmpvaW4oJywnKSwgcHJlRW5jb2RlZDogdHJ1ZX1dO1xuICAgIH1cbiAgICByZXR1cm4gW3t2YWx1ZTogcGFyYW1WYWx1ZSwgcHJlRW5jb2RlZDogZmFsc2V9XTtcbn07XG5cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIHRoZSB2YXJpYWJsZSBpcyBhIFF1ZXJ5IHNlcnZpY2UgdmFyaWFibGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cm9sbGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VydmljZVR5cGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5jb25zdCBpc1F1ZXJ5U2VydmljZVZhciA9IChjb250cm9sbGVyOiBzdHJpbmcsIHNlcnZpY2VUeXBlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gY29udHJvbGxlciA9PT0gVkFSSUFCTEVfQ09OU1RBTlRTLkNPTlRST0xMRVJfVFlQRS5RVUVSWSAmJiBzZXJ2aWNlVHlwZSA9PT0gVkFSSUFCTEVfQ09OU1RBTlRTLlNFUlZJQ0VfVFlQRS5EQVRBO1xufTtcblxuLyoqXG4gKiBBcHBlbmQgZ2l2ZW4gdmFsdWUgdG8gdGhlIGZvcm1kYXRhXG4gKiBAcGFyYW0gZm9ybURhdGFcbiAqIEBwYXJhbSBwYXJhbSAtIFBhcmFtIGZyb20gd2hpY2ggdmFsdWUgaGFzIHRvIGJlIHRha2VuXG4gKiBAcGFyYW0gcGFyYW1WYWx1ZSAtIFZhbHVlIHdoaWNoIGlzIHRvIGJlIGFwcGVuZGVkIHRvIGZvcm1kYXRhXG4gKi9cbmNvbnN0IGdldEZvcm1EYXRhID0gKGZvcm1EYXRhLCBwYXJhbSwgcGFyYW1WYWx1ZSkgPT4ge1xuICAgIGNvbnN0IHBhcmFtVHlwZSA9IHRvTG93ZXIoZXh0cmFjdFR5cGUoZ2V0KHBhcmFtLCAnaXRlbXMudHlwZScpIHx8IHBhcmFtLnR5cGUpKSxcbiAgICAgICAgcGFyYW1Db250ZW50VHlwZSA9IENPTlNUQU5UUy5pc1N0dWRpb01vZGUgPyBwYXJhbVsneC1XTS1DT05URU5UX1RZUEUnXSA6IHBhcmFtLmNvbnRlbnRUeXBlO1xuICAgIGlmIChpc0ZpbGVVcGxvYWRTdXBwb3J0ZWQoKSkge1xuICAgICAgICBpZiAoKHBhcmFtVHlwZSAhPT0gJ2ZpbGUnKSAmJiAocGFyYW1Db250ZW50VHlwZSA9PT0gJ3N0cmluZycgfHwgIXBhcmFtQ29udGVudFR5cGUpKSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocGFyYW1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGFyYW1WYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQocGFyYW0ubmFtZSwgcGFyYW1WYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShwYXJhbVZhbHVlKSAmJiBwYXJhbVR5cGUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgICAgIGZvckVhY2gocGFyYW1WYWx1ZSwgZnVuY3Rpb24gKGZpbGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKHBhcmFtLm5hbWUsIChmaWxlT2JqZWN0ICYmIGZpbGVPYmplY3QuY29udGVudCkgfHwgZ2V0QmxvYihmaWxlT2JqZWN0KSwgZmlsZU9iamVjdC5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKHBhcmFtLm5hbWUsIGdldEJsb2IocGFyYW1WYWx1ZSwgcGFyYW1Db250ZW50VHlwZSksIHBhcmFtVmFsdWUgJiYgcGFyYW1WYWx1ZS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBmb3IgbWlzc2luZyByZXF1aXJlZCBwYXJhbXMgYW5kIGZvcm1hdCB0aGUgZGF0ZS90aW1lIHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIGlucHV0RGF0YVxuICogQHBhcmFtIHBhcmFtc1xuICogQHJldHVybnMge3tyZXF1ZXN0Qm9keToge307IG1pc3NpbmdQYXJhbXM6IGFueVtdfX1cbiAqL1xuY29uc3QgcHJvY2Vzc1JlcXVlc3RCb2R5ID0gKGlucHV0RGF0YSwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7fSxcbiAgICAgICAgbWlzc2luZ1BhcmFtcyA9IFtdO1xuICAgIGxldCBwYXJhbVZhbHVlO1xuICAgIGZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgICAgcGFyYW1WYWx1ZSA9IGdldChpbnB1dERhdGEsIHBhcmFtLm5hbWUpO1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHBhcmFtVmFsdWUpICYmIHBhcmFtVmFsdWUgIT09ICcnICYmIHBhcmFtVmFsdWUgIT09IG51bGwgJiYgIXBhcmFtLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBwYXJhbVZhbHVlID0gaXNEYXRlVGltZVR5cGUocGFyYW0udHlwZSkgPyBmb3JtYXREYXRlKHBhcmFtVmFsdWUsIHBhcmFtLnR5cGUpIDogcGFyYW1WYWx1ZTtcbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCAnLCcgc2VwYXJhdGVkIHN0cmluZyBpZiBwYXJhbSBpcyBub3QgYXJyYXkgdHlwZSBidXQgdmFsdWUgaXMgYW4gYXJyYXlcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHBhcmFtVmFsdWUpICYmIHRvTG93ZXIoZXh0cmFjdFR5cGUocGFyYW0udHlwZSkpID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBqb2luKHBhcmFtVmFsdWUsICcsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXF1ZXN0Qm9keVtwYXJhbS5uYW1lXSA9IHBhcmFtVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW0ucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIG1pc3NpbmdQYXJhbXMucHVzaChwYXJhbS5uYW1lIHx8IHBhcmFtLmlkKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgICdyZXF1ZXN0Qm9keSc6IHJlcXVlc3RCb2R5LFxuICAgICAgICAnbWlzc2luZ1BhcmFtcyc6IG1pc3NpbmdQYXJhbXNcbiAgICB9O1xufTtcblxuLyoqXG4gKiBEb25lIG9ubHkgZm9yIEhUVFAgY2FsbHMgbWFkZSB2aWEgdGhlIHByb3h5IHNlcnZlclxuICogR29lcyB0aG91Z2ggcmVxdWVzdCBoZWFkZXJzLCBhcHBlbmRzICdYLScgdG8gY2VydGFpbiBoZWFkZXJzXG4gKiB0aGVzZSBoZWFkZXJzIG5lZWQgbm90IGJlIHByb2Nlc3NlZCBhdCBwcm94eSBzZXJ2ZXIgYW5kIHNob3VsZCBkaXJlY3RseSBiZSBwYXNzZWQgdG8gdGhlIHNlcnZlclxuICogZS5nLiBBdXRob3JpemF0aW9uLCBDb29raWUsIGV0Yy5cbiAqIEBwYXJhbSBoZWFkZXJzXG4gKiBAcmV0dXJucyB7e319XG4gKi9cbmNvbnN0IGNsb2FrSGVhZGVyc0ZvclByb3h5ID0gKGhlYWRlcnMpID0+IHtcbiAgICBjb25zdCBfaGVhZGVycyA9IHt9LFxuICAgICAgICBVTkNMT0FLRURfSEVBREVSUyA9IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuVU5DTE9BS0VEX0hFQURFUlMsXG4gICAgICAgIENMT0FLX1BSRUZJWCA9IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuUFJFRklYLkNMT0FLX0hFQURFUl9LRVk7XG4gICAgZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKGluY2x1ZGVzKFVOQ0xPQUtFRF9IRUFERVJTLCBrZXkudG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIF9oZWFkZXJzW2tleV0gPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfaGVhZGVyc1tDTE9BS19QUkVGSVggKyBrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX2hlYWRlcnM7XG59O1xuXG5leHBvcnQgY2xhc3MgU2VydmljZVZhcmlhYmxlVXRpbHMge1xuICAgIC8qKlxuICAgICAqIHByZXBhcmVzIHRoZSBIVFRQIHJlcXVlc3QgaW5mbyBmb3IgYSBTZXJ2aWNlIFZhcmlhYmxlXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIG9wZXJhdGlvbkluZm9cbiAgICAgKiBAcGFyYW0gaW5wdXRGaWVsZHNcbiAgICAgKiBAcmV0dXJucyB7YW55fVxuICAgICAqL1xuICAgIHN0YXRpYyBjb25zdHJ1Y3RSZXF1ZXN0UGFyYW1zKHZhcmlhYmxlLCBvcGVyYXRpb25JbmZvLCBpbnB1dEZpZWxkcywgb3B0aW9ucz8pIHtcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZSB8fCB7fTtcblxuICAgICAgICAvLyBvcGVyYXRpb25JbmZvIGlzIHNwZWNpZmljYWxseSBudWxsIGZvciB1bl9hdXRob3JpemVkIGFjY2Vzc1xuICAgICAgICBpZiAob3BlcmF0aW9uSW5mbyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnZXJyb3InIDoge1xuICAgICAgICAgICAgICAgICAgICAndHlwZSc6IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuRVJSX1RZUEUuVVNFUl9VTkFVVEhPUklTRUQsXG4gICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfTVNHLlVTRVJfVU5BVVRIT1JJU0VELFxuICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiAnX3dtU2VydmljZU9wZXJhdGlvbkluZm8nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0VtcHR5KG9wZXJhdGlvbkluZm8pKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdlcnJvcicgOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5NRVRBREFUQV9NSVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuRVJSX01TRy5NRVRBREFUQV9NSVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiAnX3dtU2VydmljZU9wZXJhdGlvbkluZm8nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb25JbmZvICYmIG9wZXJhdGlvbkluZm8uaW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnZXJyb3InIDoge1xuICAgICAgICAgICAgICAgICAgICAndHlwZSc6IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuRVJSX1RZUEUuQ1JVRF9PUEVSQVRJT05fTUlTU0lORyxcbiAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9NU0cuQ1JVRF9PUEVSQVRJT05fTUlTU0lORyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogJ193bVNlcnZpY2VPcGVyYXRpb25JbmZvJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaXJlY3RQYXRoID0gb3BlcmF0aW9uSW5mby5kaXJlY3RQYXRoIHx8ICcnLFxuICAgICAgICByZWxhdGl2ZVBhdGggPSBvcGVyYXRpb25JbmZvLmJhc2VQYXRoID8gb3BlcmF0aW9uSW5mby5iYXNlUGF0aCArIG9wZXJhdGlvbkluZm8ucmVsYXRpdmVQYXRoIDogb3BlcmF0aW9uSW5mby5yZWxhdGl2ZVBhdGgsXG4gICAgICAgIGlzQm9keVR5cGVRdWVyeVByb2NlZHVyZSA9IGlzQm9keVR5cGVRdWVyeU9yUHJvY2VkdXJlKHZhcmlhYmxlKTtcbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zID0gJycsXG4gICAgICAgIGJvZHlJbmZvLFxuICAgICAgICBoZWFkZXJzID0ge30sXG4gICAgICAgIHJlcXVlc3RCb2R5LFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVpcmVkUGFyYW1NaXNzaW5nID0gW10sXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgcGF0aFBhcmFtUmV4LFxuICAgICAgICBpbnZva2VQYXJhbXMsXG4gICAgICAgIGF1dGhEZXRhaWxzID0gbnVsbCxcbiAgICAgICAgdW5hbWUsXG4gICAgICAgIHBzd2QsXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIGlzUHJveHlDYWxsLFxuICAgICAgICBwYXJhbVZhbHVlSW5mbyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBzZWN1cml0eURlZm5PYmosXG4gICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Rm9ybURhdGFPYmooKSB7XG4gICAgICAgICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VjdXJpdHlEZWZuT2JqID0gZ2V0KG9wZXJhdGlvbkluZm8uc2VjdXJpdHlEZWZpbml0aW9ucywgJzAnKTtcblxuICAgICAgICBpZiAoc2VjdXJpdHlEZWZuT2JqKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHNlY3VyaXR5RGVmbk9iai50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLlNFQ1VSSVRZX0RFRk4uT0FVVEgyOlxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbiA9IGdldEFjY2Vzc1Rva2VuKHNlY3VyaXR5RGVmbk9ialtWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLk9BVVRIX1BST1ZJREVSX0tFWV0sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5BVVRIX0hEUl9LRVldID0gVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5QUkVGSVguQVVUSF9IRFJfVkFMLk9BVVRIICsgJyAnICsgYWNjZXNzVG9rZW47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5OT19BQ0NFU1NUT0tFTixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnIDogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfTVNHLk5PX0FDQ0VTU1RPS0VOXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdXJpdHlEZWZuT2JqJzogc2VjdXJpdHlEZWZuT2JqXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5TRUNVUklUWV9ERUZOLkJBU0lDOlxuICAgICAgICAgICAgICAgICAgICB1bmFtZSA9IGlucHV0RmllbGRzWyd3bV9hdXRoX3VzZXJuYW1lJ107XG4gICAgICAgICAgICAgICAgICAgIHBzd2QgPSBpbnB1dEZpZWxkc1snd21fYXV0aF9wYXNzd29yZCddO1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5hbWUgJiYgcHN3ZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1tWSUJIVV06IGJhczY0IGVuY29kaW5nIGFsdGVybmF0aXZlLlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkFVVEhfSERSX0tFWV0gPSBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLlBSRUZJWC5BVVRIX0hEUl9WQUwuQkFTSUMgKyAnICcgKyBidG9hKHVuYW1lICsgJzonICsgcHN3ZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRoRGV0YWlscyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuQVVUSF9UWVBFLkJBU0lDXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuRVJSX1RZUEUuTk9fQ1JFREVOVElBTFMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfTVNHLk5PX0NSRURFTlRJQUxTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdXJpdHlEZWZuT2JqJzogc2VjdXJpdHlEZWZuT2JqXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHNldCBxdWVyeSBwYXJhbXMsIGlmIHBhZ2luYXRpb24gaW5mbyBpcyBwcmVzZW50IGFuZCB0aGUgaW5mbyBzaG91bGQgYmUgcHJlc2VudCBpbiBxdWVyeVxuICAgICAgICBQYWdpbmF0aW9uVXRpbHMuY2hlY2tQYWdpbmF0aW9uQXRRdWVyeShvcGVyYXRpb25JbmZvLCB2YXJpYWJsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgb3BlcmF0aW9uSW5mby5wcm94eVNldHRpbmdzID0gb3BlcmF0aW9uSW5mby5wcm94eVNldHRpbmdzIHx8IHt3ZWI6IHRydWUsIG1vYmlsZTogZmFsc2V9O1xuICAgICAgICBtZXRob2QgPSBvcGVyYXRpb25JbmZvLmh0dHBNZXRob2QgfHwgb3BlcmF0aW9uSW5mby5tZXRob2RUeXBlO1xuICAgICAgICBpc1Byb3h5Q2FsbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5mby5wcm94eVNldHRpbmdzLndlYjtcbiAgICAgICAgfSgpKTtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzID0gb3BlcmF0aW9uSW5mby5wcm94eVNldHRpbmdzLndpdGhDcmVkZW50aWFscztcbiAgICAgICAgdXJsID0gaXNQcm94eUNhbGwgPyByZWxhdGl2ZVBhdGggOiBkaXJlY3RQYXRoO1xuXG4gICAgICAgIC8qIGxvb3AgdGhyb3VnaCBhbGwgdGhlIHBhcmFtZXRlcnMgKi9cbiAgICAgICAgZm9yRWFjaChvcGVyYXRpb25JbmZvLnBhcmFtZXRlcnMsIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgICAgICAgLy8gU2V0IHBhcmFtcyBiYXNlZCBvbiBjdXJyZW50IHdvcmtzcGFjZVxuICAgICAgICAgICAgZnVuY3Rpb24gc2V0UGFyYW1zT2ZDaGlsZE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0RmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIGNhc2UgZm9yIGJvZHkgdHlwZSBxdWVyeS9wcm9jZWR1cmUgdmFyaWFibGUgd2l0aCBxdWVyeSBwYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0RmllbGRzW3BhcmFtLm5hbWVdICYmIGlzT2JqZWN0KGlucHV0RmllbGRzW3BhcmFtLm5hbWVdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZUluZm8gPSBpbnB1dEZpZWxkc1twYXJhbS5uYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVJbmZvID0gaW5wdXRGaWVsZHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gZ2V0KG9wZXJhdGlvbkluZm8sIFsnZGVmaW5pdGlvbnMnLCBwYXJhbS50eXBlXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIEFwaSBEZXNpZ25lclxuICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlSW5mbyA9IHBhcmFtVmFsdWUgfHwge307XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcmFtVmFsdWUgPSBwYXJhbS5zYW1wbGVWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKChpc0RlZmluZWQocGFyYW1WYWx1ZSkgJiYgcGFyYW1WYWx1ZSAhPT0gbnVsbCAmJiBwYXJhbVZhbHVlICE9PSAnJykgfHwgKGlzQm9keVR5cGVRdWVyeVByb2NlZHVyZSAmJiBwYXJhbS50eXBlICE9PSAnZmlsZScpKSB7XG4gICAgICAgICAgICAgICAgLy8gRm9ybWF0IGRhdGVUaW1lIHBhcmFtcyBmb3IgZGF0YVNlcnZpY2UgdmFyaWFibGVzXG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLnNlcnZpY2VUeXBlID09PSBWQVJJQUJMRV9DT05TVEFOVFMuU0VSVklDRV9UWVBFLkRBVEEgJiYgaXNEYXRlVGltZVR5cGUocGFyYW0udHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZSA9IGZvcm1hdERhdGUocGFyYW1WYWx1ZSwgcGFyYW0udHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdCAnLCcgc2VwYXJhdGVkIHN0cmluZyBpZiBwYXJhbSBpcyBub3QgYXJyYXkgdHlwZSBidXQgdmFsdWUgaXMgYW4gYXJyYXlcbiAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwYXJhbVZhbHVlKSAmJiB0b0xvd2VyKGV4dHJhY3RUeXBlKHBhcmFtLnR5cGUpKSA9PT0gJ3N0cmluZycgJiYgdmFyaWFibGUuc2VydmljZVR5cGUgPT09IFZBUklBQkxFX0NPTlNUQU5UUy5TRVJWSUNFX1RZUEUuREFUQSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gam9pbihwYXJhbVZhbHVlLCAnLCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHBhcmFtLnBhcmFtZXRlclR5cGUudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdRVUVSWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgbnVsbCB2YWx1ZWQgcXVlcnkgcGFyYW1zIGZvciBxdWVyeVNlcnZpY2UgdmFyaWFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc051bGwocGFyYW1WYWx1ZSkgJiYgaXNRdWVyeVNlcnZpY2VWYXIodmFyaWFibGUuY29udHJvbGxlciwgdmFyaWFibGUuc2VydmljZVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRRdWVyeVBhcmFtVmFsdWVzKHBhcmFtLCBwYXJhbVZhbHVlKS5mb3JFYWNoKCh7dmFsdWU6IHF1ZXJ5VmFsdWUsIHByZUVuY29kZWR9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVsbChxdWVyeVZhbHVlKSAmJiBpc1F1ZXJ5U2VydmljZVZhcih2YXJpYWJsZS5jb250cm9sbGVyLCB2YXJpYWJsZS5zZXJ2aWNlVHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtcyA9IGFwcGVuZFF1ZXJ5UGFyYW0ocXVlcnlQYXJhbXMsIHBhcmFtLm5hbWUsIHF1ZXJ5VmFsdWUsIHByZUVuY29kZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUEFUSCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiByZXBsYWNpbmcgdGhlIHBhdGggcGFyYW0gYmFzZWQgb24gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiB0aGUgcmVsYXRpdmUgcGF0aCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFBhcmFtUmV4ID0gbmV3IFJlZ0V4cCgnXFxcXHMqXFxcXHtcXFxccyonICsgcGFyYW0ubmFtZSArICcoOlxcXFwuXFxcXCspP1xcXFxzKlxcXFx9XFxcXHMqJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShwYXRoUGFyYW1SZXgsIHBhcmFtVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0hFQURFUic6XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW3BhcmFtLm5hbWVdID0gcGFyYW1WYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdCT0RZJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBwb3N0L3B1dCBxdWVyeSBtZXRob2RzIHdyYXAgdGhlIGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCb2R5VHlwZVF1ZXJ5UHJvY2VkdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zT2ZDaGlsZE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5SW5mbyA9IHByb2Nlc3NSZXF1ZXN0Qm9keShwYXJhbVZhbHVlSW5mbywgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keSA9IGJvZHlJbmZvLnJlcXVlc3RCb2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkUGFyYW1NaXNzaW5nID0gY29uY2F0KHJlcXVpcmVkUGFyYW1NaXNzaW5nLCBib2R5SW5mby5taXNzaW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBwYXJhbVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0ZPUk1EQVRBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0JvZHlUeXBlUXVlcnlQcm9jZWR1cmUgJiYgcGFyYW0ubmFtZSA9PT0gU1dBR0dFUl9DT05TVEFOVFMuV01fREFUQV9KU09OKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zT2ZDaGlsZE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIHF1ZXJ5L3Byb2NlZHVyZSBmb3JtRGF0YSBub24tZmlsZSBwYXJhbXMgcGFyYW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keUluZm8gPSBwcm9jZXNzUmVxdWVzdEJvZHkocGFyYW1WYWx1ZUluZm8sIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBnZXRGb3JtRGF0YShnZXRGb3JtRGF0YU9iaigpLCBwYXJhbSwgYm9keUluZm8ucmVxdWVzdEJvZHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkUGFyYW1NaXNzaW5nID0gY29uY2F0KHJlcXVpcmVkUGFyYW1NaXNzaW5nLCBib2R5SW5mby5taXNzaW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBnZXRGb3JtRGF0YShnZXRGb3JtRGF0YU9iaigpLCBwYXJhbSwgcGFyYW1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWRQYXJhbU1pc3NpbmcucHVzaChwYXJhbS5uYW1lIHx8IHBhcmFtLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaWYgcmVxdWlyZWQgcGFyYW0gbm90IGZvdW5kLCByZXR1cm4gZXJyb3JcbiAgICAgICAgaWYgKHJlcXVpcmVkUGFyYW1NaXNzaW5nLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnZXJyb3InOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5SRVFVSVJFRF9GSUVMRF9NSVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiByZXF1aXJlZFBhcmFtTWlzc2luZy5qb2luKCcsJyksXG4gICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogcmVwbGFjZShWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9NU0cuUkVRVUlSRURfRklFTERfTUlTU0lORywgW3JlcXVpcmVkUGFyYW1NaXNzaW5nLmpvaW4oJywnKV0pLFxuICAgICAgICAgICAgICAgICAgICAnc2tpcERlZmF1bHROb3RpZmljYXRpb24nOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHRpbmcgYXBwcm9wcmlhdGUgY29udGVudC1UeXBlIGZvciByZXF1ZXN0IGFjY2VwdGluZyByZXF1ZXN0IGJvZHkgbGlrZSBQT1NULCBQVVQsIGV0Y1xuICAgICAgICBpZiAoIWluY2x1ZGVzKFdTX0NPTlNUQU5UUy5OT05fQk9EWV9IVFRQX01FVEhPRFMsIHRvVXBwZXIobWV0aG9kKSkpIHtcbiAgICAgICAgICAgIC8qQmFzZWQgb24gdGhlIGZvcm1EYXRhIGJyb3dzZXIgd2lsbCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY29udGVudCB0eXBlIHRvICdtdWx0aXBhcnQvZm9ybS1kYXRhJyBhbmQgd2Via2l0IGJvdW5kYXJ5Ki9cbiAgICAgICAgICAgIGlmICghKG9wZXJhdGlvbkluZm8uY29uc3VtZXMgJiYgKG9wZXJhdGlvbkluZm8uY29uc3VtZXNbMF0gPT09IFdTX0NPTlNUQU5UUy5DT05URU5UX1RZUEVTLk1VTFRJUEFSVF9GT1JNREFUQSkpKSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAob3BlcmF0aW9uSW5mby5jb25zdW1lcyAmJiBvcGVyYXRpb25JbmZvLmNvbnN1bWVzWzBdKSB8fCAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgY29uc3VtZXMgaGFzIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBhbmRcbiAgICAgICAgLy8gaWYgdGhlIGh0dHAgcmVxdWVzdCBvZiBnaXZlbiBtZXRob2QgdHlwZSBjYW4gaGF2ZSBib2R5IHNlbmQgdGhlIHF1ZXJ5UGFyYW1zIGFzIEZvcm0gRGF0YVxuICAgICAgICBpZiAoaW5jbHVkZXMob3BlcmF0aW9uSW5mby5jb25zdW1lcywgV1NfQ09OU1RBTlRTLkNPTlRFTlRfVFlQRVMuRk9STV9VUkxfRU5DT0RFRClcbiAgICAgICAgICAgICYmICFpbmNsdWRlcyhXU19DT05TVEFOVFMuTk9OX0JPRFlfSFRUUF9NRVRIT0RTLCAobWV0aG9kIHx8ICcnKS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSAnPycgYXQgdGhlIHN0YXJ0IG9mIHRoZSBxdWVyeVBhcmFtc1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSAocmVxdWVzdEJvZHkgPyByZXF1ZXN0Qm9keSArICcmJyA6ICcnKSArIHF1ZXJ5UGFyYW1zLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gV1NfQ09OU1RBTlRTLkNPTlRFTlRfVFlQRVMuRk9STV9VUkxfRU5DT0RFRDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybCArPSBxdWVyeVBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICAqIGZvciBwcm94eSBjYWxsczpcbiAgICAgICAgICogIC0gY2xvYWsgdGhlIHByb3BlciBoZWFkZXJzIChyZXF1aXJlZCBvbmx5IGZvciBSRVNUIHNlcnZpY2VzKVxuICAgICAgICAgKiAgLSBwcmVwYXJlIGNvbXBsZXRlIHVybCBmcm9tIHJlbGF0aXZlVXJsXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoaXNQcm94eUNhbGwpIHtcbiAgICAgICAgICAgIC8vIGF2b2lkaW5nIGNsb2FrSGVhZGVyc0ZvclByb3h5IHdoZW4gdGhlIG1ldGhvZCBpcyBpbnZva2VkIGZyb20gYXBpZGVzaWduZXIuXG4gICAgICAgICAgICAgICAgaGVhZGVycyA9ICh2YXJpYWJsZS5zZXJ2aWNlVHlwZSAhPT0gVkFSSUFCTEVfQ09OU1RBTlRTLlNFUlZJQ0VfVFlQRS5SRVNUICYmIHZhcmlhYmxlLnNlcnZpY2VUeXBlICE9PSBWQVJJQUJMRV9DT05TVEFOVFMuU0VSVklDRV9UWVBFLk9QRU5BUEkpIHx8IG9wZXJhdGlvbkluZm8uc2tpcENsb2FrSGVhZGVycyA/IGhlYWRlcnMgOiBjbG9ha0hlYWRlcnNGb3JQcm94eShoZWFkZXJzKTtcbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5nZXRQcmVmYWJOYW1lKCkgJiYgVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU1VQUE9SVEVEX1NFUlZJQ0VTLmluZGV4T2YodmFyaWFibGUuc2VydmljZVR5cGUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIC8qIGlmIGl0IGlzIGEgcHJlZmFiIHZhcmlhYmxlICh1c2VkIGluIGEgbm9ybWFsIHByb2plY3QpLCBtb2RpZnkgdGhlIHVybCAqL1xuICAgICAgICAgICAgICAgIHVybCA9ICdwcmVmYWJzLycgKyB2YXJpYWJsZS5nZXRQcmVmYWJOYW1lKCkgKyB1cmw7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gJ2ludm9rZVByZWZhYlJlc3RTZXJ2aWNlJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhcmlhYmxlLmdldFByZWZhYk5hbWUoKSkge1xuICAgICAgICAgICAgICAgIHVybCA9ICdzZXJ2aWNlcycgKyB1cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmwgPSAkcm9vdFNjb3BlLnByb2plY3QuZGVwbG95ZWRVcmwgKyB1cmw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBwYWdpbmF0aW9uIGluZm8gZXhpc3RzLCBwcm9jZXNzIGluZm8gaW4gcmVxdWVzdCBoZWFkZXJzIG9yIGJvZHkgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25JbmZvID0gUGFnaW5hdGlvblV0aWxzLmdldFBhZ2luYXRpb25JbmZvKG9wZXJhdGlvbkluZm8sIHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKHBhZ2luYXRpb25JbmZvICYmIHZhcmlhYmxlLnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3AgPSBQYWdpbmF0aW9uVXRpbHMuc2V0UGFnaW5hdGlvbkF0UmVxKHBhZ2luYXRpb25JbmZvLCBvcGVyYXRpb25JbmZvLCB2YXJpYWJsZSwgaGVhZGVycywgcmVxdWVzdEJvZHksIHVybCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwWydoZWFkZXJzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IHJlc3BbJ2hlYWRlcnMnXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BbJ3JlcXVlc3RCb2R5J10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSByZXNwWydyZXF1ZXN0Qm9keSddXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwWyd1cmwnXSkge1xuICAgICAgICAgICAgICAgICAgICB1cmwgPSByZXNwWyd1cmwnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qY3JlYXRpbmcgdGhlIHBhcmFtcyBuZWVkZWQgdG8gaW52b2tlIHRoZSBzZXJ2aWNlLiB1cmwgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBvcGVyYXRpb24qL1xuICAgICAgICBpbnZva2VQYXJhbXMgPSB7XG4gICAgICAgICAgICAncHJvamVjdElEJzogJHJvb3RTY29wZS5wcm9qZWN0LmlkLFxuICAgICAgICAgICAgJ3VybCc6IHVybCxcbiAgICAgICAgICAgICd0YXJnZXQnOiB0YXJnZXQsXG4gICAgICAgICAgICAnbWV0aG9kJzogbWV0aG9kLFxuICAgICAgICAgICAgJ2hlYWRlcnMnOiBoZWFkZXJzLFxuICAgICAgICAgICAgJ2RhdGEnOiByZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICdhdXRoRGV0YWlscyc6IGF1dGhEZXRhaWxzLFxuICAgICAgICAgICAgJ2lzRGlyZWN0Q2FsbCc6ICFpc1Byb3h5Q2FsbCxcbiAgICAgICAgICAgICdpc0V4dFVSTCc6IHZhcmlhYmxlLnNlcnZpY2VUeXBlID09PSBWQVJJQUJMRV9DT05TVEFOVFMuU0VSVklDRV9UWVBFLlJFU1QsXG4gICAgICAgICAgICAnd2l0aENyZWRlbnRpYWxzJzogd2l0aENyZWRlbnRpYWxzXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGludm9rZVBhcmFtcztcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNGaWxlVXBsb2FkUmVxdWVzdCh2YXJpYWJsZSkge1xuICAgICAgICAvLyB0ZW1wb3JhcnkgZml4LCBoYXZlIHRvIGZpbmQgcHJvcGVyIHNvbHV0aW9uIGZvciBkZWNpZGluZyB3ZWF0aGVyIHRvIHVwbG9hZCBmaWxlIHRocm91Z2ggdmFyaWFibGVcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnNlcnZpY2UgPT09ICdGaWxlU2VydmljZScgJiYgdmFyaWFibGUub3BlcmF0aW9uID09PSAndXBsb2FkRmlsZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhcnJheSBvZiBxdWVyeSBwYXJhbSBuYW1lcyBmb3IgdmFyaWFibGUgb3RoZXIgdGhlbiBwYWdlLHNpemUsc29ydFxuICAgICAqIEBwYXJhbXMge3BhcmFtc30gcGFyYW1zIG9mIHRoZSB2YXJpYWJsZVxuICAgICAqL1xuICAgIHN0YXRpYyBleGNsdWRlUGFnaW5hdGlvblBhcmFtcyhwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWplY3QocGFyYW1zLCAocGFyYW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyhWQVJJQUJMRV9DT05TVEFOVFMuUEFHSU5BVElPTl9QQVJBTVMsIHBhcmFtLm5hbWUpO1xuICAgICAgICB9KSwgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW0ubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS12YXJpYWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhcmlhYmxlcy9zcmMvdXRpbC92YXJpYWJsZS9zZXJ2aWNlLXZhcmlhYmxlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxNQUFNLEVBQ04sT0FBTyxFQUNQLEdBQUcsRUFDSCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFDakIsT0FBTyxFQUFFLE9BQU8sRUFDbkIsTUFBTSxXQUFXLENBQUM7QUFFbkI7Ozs7OztHQU1HO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO0lBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxhQUFh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QUFDLENBQUMsRUFBRSxVQUFVLEtBQUs7WUFDZixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHRyYWN0VHlwZSwgZ2V0QmxvYiwgaXNEYXRlVGltZVR5cGUsIGlzRGVmaW5lZCwgcmVwbGFjZSB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgJHJvb3RTY29wZSwgQ09OU1RBTlRTLCBTV0FHR0VSX0NPTlNUQU5UUywgVkFSSUFCTEVfQ09OU1RBTlRTLCBXU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdmFyaWFibGVzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0ZpbGVVcGxvYWRTdXBwb3J0ZWQgfSBmcm9tICcuL3ZhcmlhYmxlcy51dGlscyc7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbiB9IGZyb20gJy4vLi4vb0F1dGgudXRpbHMnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJy4uLy4uL3V0aWwvdmFyaWFibGUvdmFyaWFibGVzLnV0aWxzJztcbmltcG9ydCB7IFBhZ2luYXRpb25VdGlscyB9IGZyb20gJy4uLy4uL3V0aWwvdmFyaWFibGUvcGFnaW5hdGlvbi51dGlscyc7XG5pbXBvcnQge1xuICAgIGNvbmNhdCxcbiAgICBmb3JFYWNoLFxuICAgIGdldCxcbiAgICBpbmNsdWRlcyxcbiAgICBpc0FycmF5LFxuICAgIGlzRW1wdHksXG4gICAgaXNOdWxsLFxuICAgIGlzT2JqZWN0LFxuICAgIGlzVW5kZWZpbmVkLFxuICAgIGpvaW4sIG1hcCwgcmVqZWN0LFxuICAgIHRvTG93ZXIsIHRvVXBwZXJcbn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiBhIFNlcnZpY2UgdmFyaWFibGUgaXM6XG4gKiAgLSBmb3IgYSBxdWVyeS9wcm9jZWR1cmVcbiAqICAtIHBlcmZvcm1zIGEgUFVUL1BPU1Qgb3BlcmF0aW9uLCBpLmUsIHRha2VzIGEgUmVxdWVzdCBCb2R5IGFzIGlucHV0XG4gKiBAcGFyYW0gdmFyaWFibGVcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmNvbnN0IGlzQm9keVR5cGVRdWVyeU9yUHJvY2VkdXJlID0gKHZhcmlhYmxlKSA9PiB7XG4gICAgcmV0dXJuIChpbmNsdWRlcyhbJ1F1ZXJ5RXhlY3V0aW9uJywgJ1Byb2NlZHVyZUV4ZWN1dGlvbiddLCB2YXJpYWJsZS5jb250cm9sbGVyKSkgJiYgKGluY2x1ZGVzKFsncHV0JywgJ3Bvc3QnXSwgdmFyaWFibGUub3BlcmF0aW9uVHlwZSkpO1xufTtcblxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgdGhlIHZhcmlhYmxlIGlzIGEgUXVlcnkgc2VydmljZSB2YXJpYWJsZVxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRyb2xsZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlVHlwZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGlzUXVlcnlTZXJ2aWNlVmFyID0gKGNvbnRyb2xsZXI6IHN0cmluZywgc2VydmljZVR5cGU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBjb250cm9sbGVyID09PSBWQVJJQUJMRV9DT05TVEFOVFMuQ09OVFJPTExFUl9UWVBFLlFVRVJZICYmIHNlcnZpY2VUeXBlID09PSBWQVJJQUJMRV9DT05TVEFOVFMuU0VSVklDRV9UWVBFLkRBVEE7XG59O1xuXG4vKipcbiAqIEFwcGVuZCBnaXZlbiB2YWx1ZSB0byB0aGUgZm9ybWRhdGFcbiAqIEBwYXJhbSBmb3JtRGF0YVxuICogQHBhcmFtIHBhcmFtIC0gUGFyYW0gZnJvbSB3aGljaCB2YWx1ZSBoYXMgdG8gYmUgdGFrZW5cbiAqIEBwYXJhbSBwYXJhbVZhbHVlIC0gVmFsdWUgd2hpY2ggaXMgdG8gYmUgYXBwZW5kZWQgdG8gZm9ybWRhdGFcbiAqL1xuY29uc3QgZ2V0Rm9ybURhdGEgPSAoZm9ybURhdGEsIHBhcmFtLCBwYXJhbVZhbHVlKSA9PiB7XG4gICAgY29uc3QgcGFyYW1UeXBlID0gdG9Mb3dlcihleHRyYWN0VHlwZShnZXQocGFyYW0sICdpdGVtcy50eXBlJykgfHwgcGFyYW0udHlwZSkpLFxuICAgICAgICBwYXJhbUNvbnRlbnRUeXBlID0gQ09OU1RBTlRTLmlzU3R1ZGlvTW9kZSA/IHBhcmFtWyd4LVdNLUNPTlRFTlRfVFlQRSddIDogcGFyYW0uY29udGVudFR5cGU7XG4gICAgaWYgKGlzRmlsZVVwbG9hZFN1cHBvcnRlZCgpKSB7XG4gICAgICAgIGlmICgocGFyYW1UeXBlICE9PSAnZmlsZScpICYmIChwYXJhbUNvbnRlbnRUeXBlID09PSAnc3RyaW5nJyB8fCAhcGFyYW1Db250ZW50VHlwZSkpIHtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChwYXJhbVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXJhbVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChwYXJhbS5uYW1lLCBwYXJhbVZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHBhcmFtVmFsdWUpICYmIHBhcmFtVHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgZm9yRWFjaChwYXJhbVZhbHVlLCBmdW5jdGlvbiAoZmlsZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQocGFyYW0ubmFtZSwgKGZpbGVPYmplY3QgJiYgZmlsZU9iamVjdC5jb250ZW50KSB8fCBnZXRCbG9iKGZpbGVPYmplY3QpLCBmaWxlT2JqZWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQocGFyYW0ubmFtZSwgZ2V0QmxvYihwYXJhbVZhbHVlLCBwYXJhbUNvbnRlbnRUeXBlKSwgcGFyYW1WYWx1ZSAmJiBwYXJhbVZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICB9XG59O1xuXG4vKipcbiAqIENoZWNrIGZvciBtaXNzaW5nIHJlcXVpcmVkIHBhcmFtcyBhbmQgZm9ybWF0IHRoZSBkYXRlL3RpbWUgcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gaW5wdXREYXRhXG4gKiBAcGFyYW0gcGFyYW1zXG4gKiBAcmV0dXJucyB7e3JlcXVlc3RCb2R5OiB7fTsgbWlzc2luZ1BhcmFtczogYW55W119fVxuICovXG5jb25zdCBwcm9jZXNzUmVxdWVzdEJvZHkgPSAoaW5wdXREYXRhLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHt9LFxuICAgICAgICBtaXNzaW5nUGFyYW1zID0gW107XG4gICAgbGV0IHBhcmFtVmFsdWU7XG4gICAgZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgICBwYXJhbVZhbHVlID0gZ2V0KGlucHV0RGF0YSwgcGFyYW0ubmFtZSk7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQocGFyYW1WYWx1ZSkgJiYgcGFyYW1WYWx1ZSAhPT0gJycgJiYgcGFyYW1WYWx1ZSAhPT0gbnVsbCAmJiAhcGFyYW0ucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBpc0RhdGVUaW1lVHlwZShwYXJhbS50eXBlKSA/IGZvcm1hdERhdGUocGFyYW1WYWx1ZSwgcGFyYW0udHlwZSkgOiBwYXJhbVZhbHVlO1xuICAgICAgICAgICAgLy8gQ29uc3RydWN0ICcsJyBzZXBhcmF0ZWQgc3RyaW5nIGlmIHBhcmFtIGlzIG5vdCBhcnJheSB0eXBlIGJ1dCB2YWx1ZSBpcyBhbiBhcnJheVxuICAgICAgICAgICAgaWYgKGlzQXJyYXkocGFyYW1WYWx1ZSkgJiYgdG9Mb3dlcihleHRyYWN0VHlwZShwYXJhbS50eXBlKSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1WYWx1ZSA9IGpvaW4ocGFyYW1WYWx1ZSwgJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcXVlc3RCb2R5W3BhcmFtLm5hbWVdID0gcGFyYW1WYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5yZXF1aXJlZCkge1xuICAgICAgICAgICAgbWlzc2luZ1BhcmFtcy5wdXNoKHBhcmFtLm5hbWUgfHwgcGFyYW0uaWQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ3JlcXVlc3RCb2R5JzogcmVxdWVzdEJvZHksXG4gICAgICAgICdtaXNzaW5nUGFyYW1zJzogbWlzc2luZ1BhcmFtc1xuICAgIH07XG59O1xuXG4vKipcbiAqIERvbmUgb25seSBmb3IgSFRUUCBjYWxscyBtYWRlIHZpYSB0aGUgcHJveHkgc2VydmVyXG4gKiBHb2VzIHRob3VnaCByZXF1ZXN0IGhlYWRlcnMsIGFwcGVuZHMgJ1gtJyB0byBjZXJ0YWluIGhlYWRlcnNcbiAqIHRoZXNlIGhlYWRlcnMgbmVlZCBub3QgYmUgcHJvY2Vzc2VkIGF0IHByb3h5IHNlcnZlciBhbmQgc2hvdWxkIGRpcmVjdGx5IGJlIHBhc3NlZCB0byB0aGUgc2VydmVyXG4gKiBlLmcuIEF1dGhvcml6YXRpb24sIENvb2tpZSwgZXRjLlxuICogQHBhcmFtIGhlYWRlcnNcbiAqIEByZXR1cm5zIHt7fX1cbiAqL1xuY29uc3QgY2xvYWtIZWFkZXJzRm9yUHJveHkgPSAoaGVhZGVycykgPT4ge1xuICAgIGNvbnN0IF9oZWFkZXJzID0ge30sXG4gICAgICAgIFVOQ0xPQUtFRF9IRUFERVJTID0gVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5VTkNMT0FLRURfSEVBREVSUyxcbiAgICAgICAgQ0xPQUtfUFJFRklYID0gVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5QUkVGSVguQ0xPQUtfSEVBREVSX0tFWTtcbiAgICBmb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgICBpZiAoaW5jbHVkZXMoVU5DTE9BS0VEX0hFQURFUlMsIGtleS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgX2hlYWRlcnNba2V5XSA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9oZWFkZXJzW0NMT0FLX1BSRUZJWCArIGtleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfaGVhZGVycztcbn07XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlVmFyaWFibGVVdGlscyB7XG4gICAgLyoqXG4gICAgICogcHJlcGFyZXMgdGhlIEhUVFAgcmVxdWVzdCBpbmZvIGZvciBhIFNlcnZpY2UgVmFyaWFibGVcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uSW5mb1xuICAgICAqIEBwYXJhbSBpbnB1dEZpZWxkc1xuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgc3RhdGljIGNvbnN0cnVjdFJlcXVlc3RQYXJhbXModmFyaWFibGUsIG9wZXJhdGlvbkluZm8sIGlucHV0RmllbGRzLCBvcHRpb25zPykge1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlIHx8IHt9O1xuXG4gICAgICAgIC8vIG9wZXJhdGlvbkluZm8gaXMgc3BlY2lmaWNhbGx5IG51bGwgZm9yIHVuX2F1dGhvcml6ZWQgYWNjZXNzXG4gICAgICAgIGlmIChvcGVyYXRpb25JbmZvID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdlcnJvcicgOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5VU0VSX1VOQVVUSE9SSVNFRCxcbiAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9NU0cuVVNFUl9VTkFVVEhPUklTRUQsXG4gICAgICAgICAgICAgICAgICAgICdmaWVsZCc6ICdfd21TZXJ2aWNlT3BlcmF0aW9uSW5mbydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzRW1wdHkob3BlcmF0aW9uSW5mbykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ2Vycm9yJyA6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9UWVBFLk1FVEFEQVRBX01JU1NJTkcsXG4gICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfTVNHLk1FVEFEQVRBX01JU1NJTkcsXG4gICAgICAgICAgICAgICAgICAgICdmaWVsZCc6ICdfd21TZXJ2aWNlT3BlcmF0aW9uSW5mbydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbkluZm8gJiYgb3BlcmF0aW9uSW5mby5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdlcnJvcicgOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5DUlVEX09QRVJBVElPTl9NSVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuRVJSX01TRy5DUlVEX09QRVJBVElPTl9NSVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiAnX3dtU2VydmljZU9wZXJhdGlvbkluZm8nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpcmVjdFBhdGggPSBvcGVyYXRpb25JbmZvLmRpcmVjdFBhdGggfHwgJycsXG4gICAgICAgIHJlbGF0aXZlUGF0aCA9IG9wZXJhdGlvbkluZm8uYmFzZVBhdGggPyBvcGVyYXRpb25JbmZvLmJhc2VQYXRoICsgb3BlcmF0aW9uSW5mby5yZWxhdGl2ZVBhdGggOiBvcGVyYXRpb25JbmZvLnJlbGF0aXZlUGF0aCxcbiAgICAgICAgaXNCb2R5VHlwZVF1ZXJ5UHJvY2VkdXJlID0gaXNCb2R5VHlwZVF1ZXJ5T3JQcm9jZWR1cmUodmFyaWFibGUpO1xuICAgICAgICBsZXQgcXVlcnlQYXJhbXMgPSAnJyxcbiAgICAgICAgYm9keUluZm8sXG4gICAgICAgIGhlYWRlcnMgPSB7fSxcbiAgICAgICAgcmVxdWVzdEJvZHksXG4gICAgICAgIHVybCxcbiAgICAgICAgcmVxdWlyZWRQYXJhbU1pc3NpbmcgPSBbXSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBwYXRoUGFyYW1SZXgsXG4gICAgICAgIGludm9rZVBhcmFtcyxcbiAgICAgICAgYXV0aERldGFpbHMgPSBudWxsLFxuICAgICAgICB1bmFtZSxcbiAgICAgICAgcHN3ZCxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgaXNQcm94eUNhbGwsXG4gICAgICAgIHBhcmFtVmFsdWVJbmZvLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHNlY3VyaXR5RGVmbk9iaixcbiAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgIHdpdGhDcmVkZW50aWFscztcblxuICAgICAgICBmdW5jdGlvbiBnZXRGb3JtRGF0YU9iaigpIHtcbiAgICAgICAgICAgIGlmIChmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBzZWN1cml0eURlZm5PYmogPSBnZXQob3BlcmF0aW9uSW5mby5zZWN1cml0eURlZmluaXRpb25zLCAnMCcpO1xuXG4gICAgICAgIGlmIChzZWN1cml0eURlZm5PYmopIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc2VjdXJpdHlEZWZuT2JqLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuU0VDVVJJVFlfREVGTi5PQVVUSDI6XG4gICAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuID0gZ2V0QWNjZXNzVG9rZW4oc2VjdXJpdHlEZWZuT2JqW1ZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuT0FVVEhfUFJPVklERVJfS0VZXSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkFVVEhfSERSX0tFWV0gPSBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLlBSRUZJWC5BVVRIX0hEUl9WQUwuT0FVVEggKyAnICcgKyBhY2Nlc3NUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9UWVBFLk5PX0FDQ0VTU1RPS0VOLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZScgOiBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9NU0cuTk9fQUNDRVNTVE9LRU5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN1cml0eURlZm5PYmonOiBzZWN1cml0eURlZm5PYmpcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLlNFQ1VSSVRZX0RFRk4uQkFTSUM6XG4gICAgICAgICAgICAgICAgICAgIHVuYW1lID0gaW5wdXRGaWVsZHNbJ3dtX2F1dGhfdXNlcm5hbWUnXTtcbiAgICAgICAgICAgICAgICAgICAgcHN3ZCA9IGlucHV0RmllbGRzWyd3bV9hdXRoX3Bhc3N3b3JkJ107XG4gICAgICAgICAgICAgICAgICAgIGlmICh1bmFtZSAmJiBwc3dkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPW1ZJQkhVXTogYmFzNjQgZW5jb2RpbmcgYWx0ZXJuYXRpdmUuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW1ZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuQVVUSF9IRFJfS0VZXSA9IFZBUklBQkxFX0NPTlNUQU5UUy5SRVNUX1NFUlZJQ0UuUFJFRklYLkFVVEhfSERSX1ZBTC5CQVNJQyArICcgJyArIGJ0b2EodW5hbWUgKyAnOicgKyBwc3dkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhEZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5BVVRIX1RZUEUuQkFTSUNcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5OT19DUkVERU5USUFMUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9NU0cuTk9fQ1JFREVOVElBTFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN1cml0eURlZm5PYmonOiBzZWN1cml0eURlZm5PYmpcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2V0IHF1ZXJ5IHBhcmFtcywgaWYgcGFnaW5hdGlvbiBpbmZvIGlzIHByZXNlbnQgYW5kIHRoZSBpbmZvIHNob3VsZCBiZSBwcmVzZW50IGluIHF1ZXJ5XG4gICAgICAgIFBhZ2luYXRpb25VdGlscy5jaGVja1BhZ2luYXRpb25BdFF1ZXJ5KG9wZXJhdGlvbkluZm8sIHZhcmlhYmxlLCBvcHRpb25zKTtcblxuICAgICAgICBvcGVyYXRpb25JbmZvLnByb3h5U2V0dGluZ3MgPSBvcGVyYXRpb25JbmZvLnByb3h5U2V0dGluZ3MgfHwge3dlYjogdHJ1ZSwgbW9iaWxlOiBmYWxzZX07XG4gICAgICAgIG1ldGhvZCA9IG9wZXJhdGlvbkluZm8uaHR0cE1ldGhvZCB8fCBvcGVyYXRpb25JbmZvLm1ldGhvZFR5cGU7XG4gICAgICAgIGlzUHJveHlDYWxsID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25JbmZvLnByb3h5U2V0dGluZ3Mud2ViO1xuICAgICAgICB9KCkpO1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHMgPSBvcGVyYXRpb25JbmZvLnByb3h5U2V0dGluZ3Mud2l0aENyZWRlbnRpYWxzO1xuICAgICAgICB1cmwgPSBpc1Byb3h5Q2FsbCA/IHJlbGF0aXZlUGF0aCA6IGRpcmVjdFBhdGg7XG5cbiAgICAgICAgLyogbG9vcCB0aHJvdWdoIGFsbCB0aGUgcGFyYW1ldGVycyAqL1xuICAgICAgICBmb3JFYWNoKG9wZXJhdGlvbkluZm8ucGFyYW1ldGVycywgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICAgICAgICAvLyBTZXQgcGFyYW1zIGJhc2VkIG9uIGN1cnJlbnQgd29ya3NwYWNlXG4gICAgICAgICAgICBmdW5jdGlvbiBzZXRQYXJhbXNPZkNoaWxkTm9kZSgpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgY2FzZSBmb3IgYm9keSB0eXBlIHF1ZXJ5L3Byb2NlZHVyZSB2YXJpYWJsZSB3aXRoIHF1ZXJ5IHBhcmFtc1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRGaWVsZHNbcGFyYW0ubmFtZV0gJiYgaXNPYmplY3QoaW5wdXRGaWVsZHNbcGFyYW0ubmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlSW5mbyA9IGlucHV0RmllbGRzW3BhcmFtLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZUluZm8gPSBpbnB1dEZpZWxkcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBnZXQob3BlcmF0aW9uSW5mbywgWydkZWZpbml0aW9ucycsIHBhcmFtLnR5cGVdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBGb3IgQXBpIERlc2lnbmVyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVJbmZvID0gcGFyYW1WYWx1ZSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW0uY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFyYW1WYWx1ZSA9IHBhcmFtLnNhbXBsZVZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoKGlzRGVmaW5lZChwYXJhbVZhbHVlKSAmJiBwYXJhbVZhbHVlICE9PSBudWxsICYmIHBhcmFtVmFsdWUgIT09ICcnKSB8fCAoaXNCb2R5VHlwZVF1ZXJ5UHJvY2VkdXJlICYmIHBhcmFtLnR5cGUgIT09ICdmaWxlJykpIHtcbiAgICAgICAgICAgICAgICAvLyBGb3JtYXQgZGF0ZVRpbWUgcGFyYW1zIGZvciBkYXRhU2VydmljZSB2YXJpYWJsZXNcbiAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUuc2VydmljZVR5cGUgPT09IFZBUklBQkxFX0NPTlNUQU5UUy5TRVJWSUNFX1RZUEUuREFUQSAmJiBpc0RhdGVUaW1lVHlwZShwYXJhbS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gZm9ybWF0RGF0ZShwYXJhbVZhbHVlLCBwYXJhbS50eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0ICcsJyBzZXBhcmF0ZWQgc3RyaW5nIGlmIHBhcmFtIGlzIG5vdCBhcnJheSB0eXBlIGJ1dCB2YWx1ZSBpcyBhbiBhcnJheVxuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHBhcmFtVmFsdWUpICYmIHRvTG93ZXIoZXh0cmFjdFR5cGUocGFyYW0udHlwZSkpID09PSAnc3RyaW5nJyAmJiB2YXJpYWJsZS5zZXJ2aWNlVHlwZSA9PT0gVkFSSUFCTEVfQ09OU1RBTlRTLlNFUlZJQ0VfVFlQRS5EQVRBKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBqb2luKHBhcmFtVmFsdWUsICcsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocGFyYW0ucGFyYW1ldGVyVHlwZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1FVRVJZJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBudWxsIHZhbHVlZCBxdWVyeSBwYXJhbXMgZm9yIHF1ZXJ5U2VydmljZSB2YXJpYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVsbChwYXJhbVZhbHVlKSAmJiBpc1F1ZXJ5U2VydmljZVZhcih2YXJpYWJsZS5jb250cm9sbGVyLCB2YXJpYWJsZS5zZXJ2aWNlVHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtcyA9ICc/JyArIHBhcmFtLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zICs9ICcmJyArIHBhcmFtLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUEFUSCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiByZXBsYWNpbmcgdGhlIHBhdGggcGFyYW0gYmFzZWQgb24gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiB0aGUgcmVsYXRpdmUgcGF0aCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFBhcmFtUmV4ID0gbmV3IFJlZ0V4cCgnXFxcXHMqXFxcXHtcXFxccyonICsgcGFyYW0ubmFtZSArICcoOlxcXFwuXFxcXCspP1xcXFxzKlxcXFx9XFxcXHMqJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShwYXRoUGFyYW1SZXgsIHBhcmFtVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0hFQURFUic6XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW3BhcmFtLm5hbWVdID0gcGFyYW1WYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdCT0RZJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBwb3N0L3B1dCBxdWVyeSBtZXRob2RzIHdyYXAgdGhlIGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCb2R5VHlwZVF1ZXJ5UHJvY2VkdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zT2ZDaGlsZE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5SW5mbyA9IHByb2Nlc3NSZXF1ZXN0Qm9keShwYXJhbVZhbHVlSW5mbywgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keSA9IGJvZHlJbmZvLnJlcXVlc3RCb2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkUGFyYW1NaXNzaW5nID0gY29uY2F0KHJlcXVpcmVkUGFyYW1NaXNzaW5nLCBib2R5SW5mby5taXNzaW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBwYXJhbVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0ZPUk1EQVRBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0JvZHlUeXBlUXVlcnlQcm9jZWR1cmUgJiYgcGFyYW0ubmFtZSA9PT0gU1dBR0dFUl9DT05TVEFOVFMuV01fREFUQV9KU09OKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zT2ZDaGlsZE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIHF1ZXJ5L3Byb2NlZHVyZSBmb3JtRGF0YSBub24tZmlsZSBwYXJhbXMgcGFyYW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keUluZm8gPSBwcm9jZXNzUmVxdWVzdEJvZHkocGFyYW1WYWx1ZUluZm8sIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBnZXRGb3JtRGF0YShnZXRGb3JtRGF0YU9iaigpLCBwYXJhbSwgYm9keUluZm8ucmVxdWVzdEJvZHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkUGFyYW1NaXNzaW5nID0gY29uY2F0KHJlcXVpcmVkUGFyYW1NaXNzaW5nLCBib2R5SW5mby5taXNzaW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBnZXRGb3JtRGF0YShnZXRGb3JtRGF0YU9iaigpLCBwYXJhbSwgcGFyYW1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWRQYXJhbU1pc3NpbmcucHVzaChwYXJhbS5uYW1lIHx8IHBhcmFtLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaWYgcmVxdWlyZWQgcGFyYW0gbm90IGZvdW5kLCByZXR1cm4gZXJyb3JcbiAgICAgICAgaWYgKHJlcXVpcmVkUGFyYW1NaXNzaW5nLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAnZXJyb3InOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU0VSVklDRS5FUlJfVFlQRS5SRVFVSVJFRF9GSUVMRF9NSVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiByZXF1aXJlZFBhcmFtTWlzc2luZy5qb2luKCcsJyksXG4gICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogcmVwbGFjZShWQVJJQUJMRV9DT05TVEFOVFMuUkVTVF9TRVJWSUNFLkVSUl9NU0cuUkVRVUlSRURfRklFTERfTUlTU0lORywgW3JlcXVpcmVkUGFyYW1NaXNzaW5nLmpvaW4oJywnKV0pLFxuICAgICAgICAgICAgICAgICAgICAnc2tpcERlZmF1bHROb3RpZmljYXRpb24nOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHRpbmcgYXBwcm9wcmlhdGUgY29udGVudC1UeXBlIGZvciByZXF1ZXN0IGFjY2VwdGluZyByZXF1ZXN0IGJvZHkgbGlrZSBQT1NULCBQVVQsIGV0Y1xuICAgICAgICBpZiAoIWluY2x1ZGVzKFdTX0NPTlNUQU5UUy5OT05fQk9EWV9IVFRQX01FVEhPRFMsIHRvVXBwZXIobWV0aG9kKSkpIHtcbiAgICAgICAgICAgIC8qQmFzZWQgb24gdGhlIGZvcm1EYXRhIGJyb3dzZXIgd2lsbCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY29udGVudCB0eXBlIHRvICdtdWx0aXBhcnQvZm9ybS1kYXRhJyBhbmQgd2Via2l0IGJvdW5kYXJ5Ki9cbiAgICAgICAgICAgIGlmICghKG9wZXJhdGlvbkluZm8uY29uc3VtZXMgJiYgKG9wZXJhdGlvbkluZm8uY29uc3VtZXNbMF0gPT09IFdTX0NPTlNUQU5UUy5DT05URU5UX1RZUEVTLk1VTFRJUEFSVF9GT1JNREFUQSkpKSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAob3BlcmF0aW9uSW5mby5jb25zdW1lcyAmJiBvcGVyYXRpb25JbmZvLmNvbnN1bWVzWzBdKSB8fCAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgY29uc3VtZXMgaGFzIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBhbmRcbiAgICAgICAgLy8gaWYgdGhlIGh0dHAgcmVxdWVzdCBvZiBnaXZlbiBtZXRob2QgdHlwZSBjYW4gaGF2ZSBib2R5IHNlbmQgdGhlIHF1ZXJ5UGFyYW1zIGFzIEZvcm0gRGF0YVxuICAgICAgICBpZiAoaW5jbHVkZXMob3BlcmF0aW9uSW5mby5jb25zdW1lcywgV1NfQ09OU1RBTlRTLkNPTlRFTlRfVFlQRVMuRk9STV9VUkxfRU5DT0RFRClcbiAgICAgICAgICAgICYmICFpbmNsdWRlcyhXU19DT05TVEFOVFMuTk9OX0JPRFlfSFRUUF9NRVRIT0RTLCAobWV0aG9kIHx8ICcnKS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSAnPycgYXQgdGhlIHN0YXJ0IG9mIHRoZSBxdWVyeVBhcmFtc1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSAocmVxdWVzdEJvZHkgPyByZXF1ZXN0Qm9keSArICcmJyA6ICcnKSArIHF1ZXJ5UGFyYW1zLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gV1NfQ09OU1RBTlRTLkNPTlRFTlRfVFlQRVMuRk9STV9VUkxfRU5DT0RFRDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybCArPSBxdWVyeVBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICAqIGZvciBwcm94eSBjYWxsczpcbiAgICAgICAgICogIC0gY2xvYWsgdGhlIHByb3BlciBoZWFkZXJzIChyZXF1aXJlZCBvbmx5IGZvciBSRVNUIHNlcnZpY2VzKVxuICAgICAgICAgKiAgLSBwcmVwYXJlIGNvbXBsZXRlIHVybCBmcm9tIHJlbGF0aXZlVXJsXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoaXNQcm94eUNhbGwpIHtcbiAgICAgICAgICAgIC8vIGF2b2lkaW5nIGNsb2FrSGVhZGVyc0ZvclByb3h5IHdoZW4gdGhlIG1ldGhvZCBpcyBpbnZva2VkIGZyb20gYXBpZGVzaWduZXIuXG4gICAgICAgICAgICAgICAgaGVhZGVycyA9ICh2YXJpYWJsZS5zZXJ2aWNlVHlwZSAhPT0gVkFSSUFCTEVfQ09OU1RBTlRTLlNFUlZJQ0VfVFlQRS5SRVNUICYmIHZhcmlhYmxlLnNlcnZpY2VUeXBlICE9PSBWQVJJQUJMRV9DT05TVEFOVFMuU0VSVklDRV9UWVBFLk9QRU5BUEkpIHx8IG9wZXJhdGlvbkluZm8uc2tpcENsb2FrSGVhZGVycyA/IGhlYWRlcnMgOiBjbG9ha0hlYWRlcnNGb3JQcm94eShoZWFkZXJzKTtcbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5nZXRQcmVmYWJOYW1lKCkgJiYgVkFSSUFCTEVfQ09OU1RBTlRTLlJFU1RfU1VQUE9SVEVEX1NFUlZJQ0VTLmluZGV4T2YodmFyaWFibGUuc2VydmljZVR5cGUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIC8qIGlmIGl0IGlzIGEgcHJlZmFiIHZhcmlhYmxlICh1c2VkIGluIGEgbm9ybWFsIHByb2plY3QpLCBtb2RpZnkgdGhlIHVybCAqL1xuICAgICAgICAgICAgICAgIHVybCA9ICdwcmVmYWJzLycgKyB2YXJpYWJsZS5nZXRQcmVmYWJOYW1lKCkgKyB1cmw7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gJ2ludm9rZVByZWZhYlJlc3RTZXJ2aWNlJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhcmlhYmxlLmdldFByZWZhYk5hbWUoKSkge1xuICAgICAgICAgICAgICAgIHVybCA9ICdzZXJ2aWNlcycgKyB1cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmwgPSAkcm9vdFNjb3BlLnByb2plY3QuZGVwbG95ZWRVcmwgKyB1cmw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBwYWdpbmF0aW9uIGluZm8gZXhpc3RzLCBwcm9jZXNzIGluZm8gaW4gcmVxdWVzdCBoZWFkZXJzIG9yIGJvZHkgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25JbmZvID0gUGFnaW5hdGlvblV0aWxzLmdldFBhZ2luYXRpb25JbmZvKG9wZXJhdGlvbkluZm8sIHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKHBhZ2luYXRpb25JbmZvICYmIHZhcmlhYmxlLnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3AgPSBQYWdpbmF0aW9uVXRpbHMuc2V0UGFnaW5hdGlvbkF0UmVxKHBhZ2luYXRpb25JbmZvLCBvcGVyYXRpb25JbmZvLCB2YXJpYWJsZSwgaGVhZGVycywgcmVxdWVzdEJvZHksIHVybCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwWydoZWFkZXJzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IHJlc3BbJ2hlYWRlcnMnXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BbJ3JlcXVlc3RCb2R5J10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSByZXNwWydyZXF1ZXN0Qm9keSddXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwWyd1cmwnXSkge1xuICAgICAgICAgICAgICAgICAgICB1cmwgPSByZXNwWyd1cmwnXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qY3JlYXRpbmcgdGhlIHBhcmFtcyBuZWVkZWQgdG8gaW52b2tlIHRoZSBzZXJ2aWNlLiB1cmwgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBvcGVyYXRpb24qL1xuICAgICAgICBpbnZva2VQYXJhbXMgPSB7XG4gICAgICAgICAgICAncHJvamVjdElEJzogJHJvb3RTY29wZS5wcm9qZWN0LmlkLFxuICAgICAgICAgICAgJ3VybCc6IHVybCxcbiAgICAgICAgICAgICd0YXJnZXQnOiB0YXJnZXQsXG4gICAgICAgICAgICAnbWV0aG9kJzogbWV0aG9kLFxuICAgICAgICAgICAgJ2hlYWRlcnMnOiBoZWFkZXJzLFxuICAgICAgICAgICAgJ2RhdGEnOiByZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICdhdXRoRGV0YWlscyc6IGF1dGhEZXRhaWxzLFxuICAgICAgICAgICAgJ2lzRGlyZWN0Q2FsbCc6ICFpc1Byb3h5Q2FsbCxcbiAgICAgICAgICAgICdpc0V4dFVSTCc6IHZhcmlhYmxlLnNlcnZpY2VUeXBlID09PSBWQVJJQUJMRV9DT05TVEFOVFMuU0VSVklDRV9UWVBFLlJFU1QsXG4gICAgICAgICAgICAnd2l0aENyZWRlbnRpYWxzJzogd2l0aENyZWRlbnRpYWxzXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGludm9rZVBhcmFtcztcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNGaWxlVXBsb2FkUmVxdWVzdCh2YXJpYWJsZSkge1xuICAgICAgICAvLyB0ZW1wb3JhcnkgZml4LCBoYXZlIHRvIGZpbmQgcHJvcGVyIHNvbHV0aW9uIGZvciBkZWNpZGluZyB3ZWF0aGVyIHRvIHVwbG9hZCBmaWxlIHRocm91Z2ggdmFyaWFibGVcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnNlcnZpY2UgPT09ICdGaWxlU2VydmljZScgJiYgdmFyaWFibGUub3BlcmF0aW9uID09PSAndXBsb2FkRmlsZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhcnJheSBvZiBxdWVyeSBwYXJhbSBuYW1lcyBmb3IgdmFyaWFibGUgb3RoZXIgdGhlbiBwYWdlLHNpemUsc29ydFxuICAgICAqIEBwYXJhbXMge3BhcmFtc30gcGFyYW1zIG9mIHRoZSB2YXJpYWJsZVxuICAgICAqL1xuICAgIHN0YXRpYyBleGNsdWRlUGFnaW5hdGlvblBhcmFtcyhwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWplY3QocGFyYW1zLCAocGFyYW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyhWQVJJQUJMRV9DT05TVEFOVFMuUEFHSU5BVElPTl9QQVJBTVMsIHBhcmFtLm5hbWUpO1xuICAgICAgICB9KSwgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW0ubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|