@po-ui/ng-templates 16.13.0 → 16.15.0

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.
@@ -688,10 +688,12 @@ export class PoPageDynamicEditComponent {
688
688
  }));
689
689
  }
690
690
  updateModel(newResource = {}) {
691
- const dynamicNgForm = this.dynamicForm.form;
692
- removeKeysProperties(this.keys, newResource);
693
- this.model = { ...this.model, ...newResource };
694
- dynamicNgForm.form.patchValue(this.model);
691
+ if (typeof newResource !== 'undefined' && Object.keys(newResource).length !== 0) {
692
+ const dynamicNgForm = this.dynamicForm.form;
693
+ removeKeysProperties(this.keys, newResource);
694
+ this.model = { ...this.model, ...newResource };
695
+ dynamicNgForm.form.patchValue(this.model);
696
+ }
695
697
  }
696
698
  saveOperation() {
697
699
  if (this.dynamicForm.form.invalid) {
@@ -837,4 +839,4 @@ export class PoPageDynamicEditComponent {
837
839
  type: Input,
838
840
  args: ['p-fields']
839
841
  }] }); })();
840
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9saWIvY29tcG9uZW50cy9wby1wYWdlLWR5bmFtaWMtZWRpdC9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1lZGl0L3BvLXBhZ2UtZHluYW1pYy1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWdCLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFTTCxlQUFlLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7O0lDckI1Rix3QkFBb0c7OztJQUlwRyxpQ0FBVztJQUNULDBCQUEwQztJQUMxQywrQkFBaUM7SUFDL0IsWUFDRjtJQUFBLGlCQUFPLEVBQUE7OztJQURMLGVBQ0Y7SUFERSxpRUFDRjs7OztJQU9GLDhCQUFzRDtJQUNwRCxpQ0FBNkQ7SUFFN0QsK0JBQTRCLG9CQUFBO0lBQ3NCLDZMQUFXLGVBQUEsd0JB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NEhBa0JjOzs7O1lBL0JHLDJDQUF5QixnQ0FBQSxzQkFBQTtZQUN6QixlQUFhO1lBQWIsZ0NBQWEsaUJBQUEsaUJBQUE7Ozt1RkRvTGpCLDBCQUEwQjtjQUx0QyxTQUFTOzJCQUNFLHNCQUFzQixhQUVyQixDQUFDLG9CQUFvQixDQUFDO2tUQUdQLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNDLFVBQVU7a0JBQWxDLFNBQVM7bUJBQUMsWUFBWTtZQUdBLFVBQVU7a0JBQWhDLEtBQUs7bUJBQUMsY0FBYztZQXVFRyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFHSixLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUErQkMsTUFBTTtrQkFBdEIsS0FBSzttQkFBQyxRQUFRO1lBNEJPLFVBQVU7a0JBQS9CLEtBQUs7bUJBQUMsYUFBYTtZQStCSSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUEyQ08sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBZ0NTLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVNDLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXQsIG9mLCBTdWJzY3JpcHRpb24sIEVNUFRZLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBQb0JyZWFkY3J1bWIsXG4gIFBvRGlhbG9nU2VydmljZSxcbiAgUG9EeW5hbWljRm9ybUNvbXBvbmVudCxcbiAgUG9HcmlkQ29tcG9uZW50LFxuICBQb0dyaWRSb3dBY3Rpb25zLFxuICBQb0xhbmd1YWdlU2VydmljZSxcbiAgUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICBQb1BhZ2VBY3Rpb24sXG4gIHBvTG9jYWxlRGVmYXVsdFxufSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIG1hcE9iamVjdEJ5UHJvcGVydGllcywgdmFsdWVzRnJvbU9iamVjdCwgcmVtb3ZlS2V5c1Byb3BlcnRpZXMgfSBmcm9tICcuLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtYWN0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRGaWVsZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1wYWdlLWR5bmFtaWMvcG8tcGFnZS1keW5hbWljLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtY3VzdG9taXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNFZGl0TWV0YWRhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNPcHRpb25zU2NoZW1hIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtZHluYW1pYy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtZWRpdC1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRCZWZvcmVDYW5jZWwgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtYmVmb3JlLWNhbmNlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1saXRlcmFscy5pbnRlcmZhY2UnO1xuXG50eXBlIFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zKTtcbnR5cGUgU2F2ZUFjdGlvbiA9IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snc2F2ZSddIHwgUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zWydzYXZlTmV3J107XG5cbmV4cG9ydCBjb25zdCBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzPntcbiAgICBjYW5jZWxDb25maXJtTWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgdGhpcyBvcGVyYXRpb24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOZXcnLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAnU2F2ZScsXG4gICAgcGFnZUFjdGlvblNhdmVOZXc6ICdTYXZlIGFuZCBuZXcnLFxuICAgIHJlZ2lzdGVyTm90Rm91bmQ6ICdSZWdpc3RlciBub3QgZm91bmQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1NhdmU6ICdSZXNvdXJjZSBzdWNjZXNzZnVsbHkgc2F2ZWQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1Jlc291cmNlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdGb3JtIG11c3QgYmUgZmlsbGVkIG91dCBjb3JyZWN0bHkuJ1xuICB9LFxuICBlczogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAnRXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBjYW5jZWxhciBlc3RhIG9wZXJhY2nDs24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOdWV2bycsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBwYWdlQWN0aW9uU2F2ZTogJ0d1YXJkYXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnR3VhcmRhciB5IG51ZXZvJyxcbiAgICByZWdpc3Rlck5vdEZvdW5kOiAnUmVnaXN0cm8gbm8gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29uIMOpeGl0by4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlOiAnUmVjdXJzbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdFbCBmb3JtdWxhcmlvIGRlYmUgbGxlbmFyc2UgY29ycmVjdGFtZW50ZS4nXG4gIH0sXG4gIHB0OiA8UG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscz57XG4gICAgY2FuY2VsQ29uZmlybU1lc3NhZ2U6ICdUZW0gY2VydGV6YSBxdWUgZGVzZWphIGNhbmNlbGFyIGVzdGEgb3BlcmHDp8Ojbz8nLFxuICAgIGRldGFpbEFjdGlvbk5ldzogJ05vdm8nLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcGFnZUFjdGlvblNhdmU6ICdTYWx2YXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnU2FsdmFyIGUgbm92bycsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ1JlZ2lzdHJvIG7Do28gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29tIHN1Y2Vzc28uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1JlY3Vyc28gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25XYXJuaW5nOiAnRm9ybXVsw6FyaW8gcHJlY2lzYSBzZXIgcHJlZW5jaGlkbyBjb3JyZXRhbWVudGUuJ1xuICB9LFxuICBydTogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDQvtGC0LzQtdC90LjRgtGMINGN0YLRgyDQvtC/0LXRgNCw0YbQuNGOPycsXG4gICAgZGV0YWlsQWN0aW9uTmV3OiAn0J3QvtCy0YvQuScsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ9Ce0YLQvNC10L3QuNGC0YwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAn0KHQvtGF0YDQsNC90LjRgtGMJyxcbiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ9Ch0L7RhdGA0LDQvdC40YLRjCDQuCDRgdC+0LfQtNCw0YLRjCcsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ9CX0LDQv9C40YHRjCDQvdC1INC90LDQudC00LXQvdCwLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlOiAn0KDQtdGB0YPRgNGBINGD0YHQv9C10YjQvdC+INGB0L7RhdGA0LDQvdC10L0uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ9Cg0LXRgdGD0YDRgSDRg9GB0L/QtdGI0L3QviDQvtCx0L3QvtCy0LvQtdC9LicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICfQpNC+0YDQvNCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQt9Cw0L/QvtC70L3QtdC90LAg0L/RgNCw0LLQuNC70YzQvdC+LidcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGBwby1wYWdlLWR5bmFtaWMtZWRpdGAgw6kgdW1hIHDDoWdpbmEgcXVlIHBvZGUgc2VydmlyIHBhcmEgZWRpdGFyIG91IGNyaWFyIG5vdm9zIHJlZ2lzdHJvcyxcbiAqIG8gbWVzbW8gdGFtYsOpbSBzdXBvcnRhIG1ldGFkYWRvcyBjb25mb3JtZSBlc3BlY2lmaWNhZG8gbmEgZG9jdW1lbnRhw6fDo28uXG4gKlxuICogIyMjIFV0aWxpemHDp8OjbyB2aWEgcm90YVxuICpcbiAqIEFvIHV0aWxpemFyIGFzIHJvdGFzIHBhcmEgaW5pY2lhbGl6YXIgbyB0ZW1wbGF0ZSwgbyBgcGFnZS1keW5hbWljLWVkaXRgIGRpc3BvbmliaWxpemEgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgZm9ybmVjaWRhcyBubyBhcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGFzIGRhIGFwbGljYcOnw6NvLCBwYXJhXG4gKiBwb2RlciBlc3BlY2lmaWNhciBvIGVuZHBvaW50IGRvcyBkYWRvcyBlIGRvcyBtZXRhZGFkb3MgcXVlIHNlcsOjbyBjYXJyZWdhZG9zIG5hIGluaWNpYWxpemHDp8Ojby5cbiAqXG4gKiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAqXG4gKiBBcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGFzIGRhIGFwbGljYcOnw6NvOiBgYXBwLXJvdXRpbmcubW9kdWxlLnRzYFxuICogYGBgXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqIHtcbiAqICAgcGF0aDogJ3Blb3BsZScsXG4gKiAgIGNvbXBvbmVudDogUG9QYWdlRHluYW1pY0VkaXRDb21wb25lbnQsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzZXJ2aWNlQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL3Blb3BsZScsIC8vIGVuZHBvaW50IGRvcyBkYWRvc1xuICogICAgIHNlcnZpY2VNZXRhZGF0YUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9tZXRhZGF0YScsIC8vIGVuZHBvaW50IGRvcyBtZXRhZGFkb3MgdXRpbGl6YW5kbyBvIG3DqXRvZG8gSFRUUCBHZXRcbiAqICAgICBzZXJ2aWNlTG9hZEFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9sb2FkLW1ldGFkYXRhJyAvLyBlbmRwb2ludCBkZSBjdXN0b21pemHDp8O1ZXMgZG9zIG1ldGFkYWRvcyB1dGlsaXphbmRvIG8gbcOpdG9kbyBIVFRQIFBvc3RcbiAqICAgfVxuICogIH0sXG4gKiAge1xuICogICBwYXRoOiAnaG9tZScsXG4gKiAgIGNvbXBvbmVudDogSG9tZUV4YW1wbGVDb21wb25lbnRcbiAqICB9XG4gKiBdO1xuICpcbiAqIGBgYFxuICogTyBjb21wb25lbnRlIHByaW1laXJvIGlyw6EgY2FycmVnYXIgbyBtZXRhZGFkbyBkYSByb3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHNlcnZpY2VNZXRhZGF0YUFwaVxuICogZSBkZXBvaXMgaXLDoSBidXNjYXIgZGEgcm90YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBzZXJ2aWNlTG9hZEFwaS5cbiAqXG4gKiBBIHJlcXVpc2nDp8OjbyBkb3MgbWV0YWRhZG9zIMOpIGZlaXRhIG5hIGluaWNpYWxpemHDp8OjbyBkbyB0ZW1wbGF0ZSBwYXJhIGJ1c2NhciBvcyBtZXRhZGFkb3MgZGEgcMOhZ2luYSBwYXNzYW5kbyBvXG4gKiB0aXBvIGRvIG1ldGFkYWRvIGVzcGVyYWRvIGUgYSB2ZXJzw6NvIGNhY2hlYWRhIHBlbG8gYnJvd3Nlci5cbiAqXG4gKiA+IENhc28gbyBzZXJ2aWRvciByZXRvcm5hciB1bSBlcnJvIGFvIHJlY3VwZXJhciBvcyBtZXRhZGFkb3MsIHNlcsOjbyByZXBhc3NhZG9zIG9zIG1ldGFkYWRvcyBzYWx2b3MgZW0gY2FjaGUsXG4gKiBzZSBvIGNhY2hlIG7Do28gZXhpc3RpciBzZXLDoSBkaXNwYXJhZGEgdW1hIG5vdGlmaWNhw6fDo28uXG4gKlxuICogUGFyYSBjYXJyZWdhciBjb20gdW0gcmVjdXJzbyBqw6EgZXhpc3RlbnRlLCBkZXZlLXNlIHNlciBpbmNsdcOtZG8gdW0gcGFyw6JtZXRybyBuYSByb3RhIGNoYW1hZG8gYGlkYDpcbiAqXG4gKiBgYGBcbiAqIHtcbiAqICAgcGF0aDogJ3Blb3BsZS86aWQnLFxuICogICBjb21wb25lbnQ6IFBvUGFnZUR5bmFtaWNFZGl0Q29tcG9uZW50LFxuICogICBkYXRhOiB7XG4gKiAgICAgc2VydmljZUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9wZW9wbGUnLCAvLyBlbmRwb2ludCBkb3MgZGFkb3NcbiAqICAgICBzZXJ2aWNlTWV0YWRhdGFBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvbWV0YWRhdGEnLCAvLyBlbmRwb2ludCBkb3MgbWV0YWRhZG9zXG4gKiAgICAgc2VydmljZUxvYWRBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvbG9hZC1tZXRhZGF0YScgLy8gZW5kcG9pbnQgZGUgY3VzdG9taXphw6fDtWVzIGRvcyBtZXRhZGFkb3NcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSByZXF1aXNpw6fDo28gZG9zIG1ldGFkYWRvcyDDqSBmZWl0YSBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUgcGFyYSBidXNjYXIgb3MgbWV0YWRhZG9zIGRhIHDDoWdpbmEgcGFzc2FuZG8gb1xuICogdGlwbyBkbyBtZXRhZGFkbyBlc3BlcmFkbyBlIGEgdmVyc8OjbyBjYWNoZWFkYSBwZWxvIGJyb3dzZXIuXG4gKlxuICogTyBmb3JtYXRvIGVzcGVyYWRvIG5hIHJlc3Bvc3RhIGRhIHJlcXVpc2nDp8OjbyBlc3TDoSBlc3BlY2lmaWNhZG8gbmEgaW50ZXJmYWNlXG4gKiBbUG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YV0oL2RvY3VtZW50YXRpb24vcG8tcGFnZS1keW5hbWljLWVkaXQjcG8tcGFnZS1keW5hbWljLWVkaXQtbWV0YWRhdGEpLiBQb3IgZXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqICB7XG4gKiAgIHZlcnNpb246IDEsXG4gKiAgIHRpdGxlOiAnUGVyc29uIGVkaXQnLFxuICogICBmaWVsZHM6IFtcbiAqICAgICB7IHByb3BlcnR5OiAnaWQnLCBrZXk6IHRydWUsIGRpc2FibGVkOiB0cnVlIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ3N0YXR1cycgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnbmFtZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnbmlja25hbWUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2JpcnRoZGF0ZScsIGxhYmVsOiAnQmlydGggZGF0ZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnZ2VucmUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2NpdHknIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2NvdW50cnknIH1cbiAqICAgXVxuICogfVxuICogYGBgXG4gKlxuICogPiBDYXNvIG8gZW5kcG9pbnQgZG9zIG1ldGFkYWRvcyBuw6NvIHNlamEgZXNwZWNpZmljYWRvLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIHV0aWxpemFuZG8gbyBgc2VydmljZUFwaWAgZGEgc2VndWludGUgZm9ybWE6XG4gKiBgYGBcbiAqIEdFVCB7ZW5kLXBvaW50fS9tZXRhZGF0YT90eXBlPWVkaXQmdmVyc2lvbj17dmVyc2lvbn1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgRWRpdCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtZWRpdC11c2VyXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgRWRpdCAtIFVzZXJcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtdXNlci9zYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtdXNlci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWR5bmFtaWMtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvUGFnZUR5bmFtaWNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb1BhZ2VEeW5hbWljRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZHluYW1pY0Zvcm0nKSBkeW5hbWljRm9ybTogUG9EeW5hbWljRm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZERldGFpbCcpIGdyaWREZXRhaWw6IFBvR3JpZENvbXBvbmVudDtcblxuICAvKiogT2JqZXRvIGNvbSBwcm9wcmllZGFkZXMgZG8gYnJlYWRjcnVtYi4gKi9cbiAgQElucHV0KCdwLWJyZWFkY3J1bWInKSBicmVhZGNydW1iPzogUG9CcmVhZGNydW1iID0geyBpdGVtczogW10gfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVuZHBvaW50IHVzYWRvIHBlbG8gdGVtcGxhdGUgcGFyYSByZXF1aXNpw6fDo28gZG8gcmVjdXJzbyBxdWUgc2Vyw6EgZXhpYmlkbyBwYXJhIGVkacOnw6NvLlxuICAgKlxuICAgKiBQYXJhIGFzIGHDp8O1ZXMgZGUgYHNhdmVgIGUgYHNhdmVOZXdgLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIGRlIGNyaWHDp8OjbyBuZXNzZSBtZXNtbyBlbmRwb2ludCBwYXNzYW5kbyBvcyB2YWxvcmVzXG4gICAqIHByZWVuY2hpZG9zIHBlbG8gdXN1w6FyaW8gdmlhIHBheWxvYWQuXG4gICAqXG4gICAqID4gYFBPU1Qge2VuZC1wb2ludH1gXG4gICAqXG4gICAqIGBgYFxuICAgKiAgPHBvLXBhZ2UtZHluYW1pYy1lZGl0XG4gICAqICAgIFtwLWFjdGlvbnNdPVwieyBzYXZlOiAnLycsIHNhdmVOZXc6ICduZXcnIH1cIlxuICAgKiAgICBbcC1maWVsZHNdPVwiWyB7IHByb3BlcnR5OiAnbmFtZScgfSwgeyBwcm9wZXJ0eTogJ2NpdHknIH0gXVwiXG4gICAqICAgIHAtc2VydmljZT1cIi9hcGkvcG8tc2FtcGxlcy92MS9wZW9wbGVcIlxuICAgKiAgICAuLi4+XG4gICAqICA8L3BvLXBhZ2UtZHluYW1pYy1lZGl0PlxuICAgKiBgYGBcbiAgICpcbiAgICogUmVzcXVpc2nDp8OjbyBkaXNwYXJhZGEsIG9uZGUgYSBwcm9wcmllZGFkZSBgbmFtZWAgZSBgY2l0eWAgZm9yYW0gcHJlZW5jaGlkYXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUE9TVCAvYXBpL3BvLXNhbXBsZXMvdjEvcGVvcGxlIEhUVFAvMS4xXG4gICAqICBIb3N0OiBsb2NhbGhvc3Q6NDAwMFxuICAgKiAgQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICAgKiAgQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFJlcXVlc3QgcGF5bG9hZDpcbiAgICpcbiAgICogYGBgXG4gICAqIHsgXCJuYW1lXCI6IFwiRnVsYW5vXCIsIFwiY2l0eVwiOiBcIlNtYWxsdmlsbGVcIiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHF1ZWlyYSBxdWUgbyB0ZW1wbGF0ZSBjYXJyZWd1ZSB1bSByZWN1cnNvIGrDoSBleGlzdGVudGUsIGRldmUtc2Ugc2VyIGluY2x1w61kbyB1bSBwYXJhbWV0cm8gbmEgcm90YSBjaGFtYWRvIGBpZGAuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgY29uZmlndXJhw6fDo28gZGUgcm90YTpcbiAgICpcbiAgICogYGBgXG4gICAqICBSb3V0ZXJNb2R1bGUuZm9yUm9vdChbXG4gICAqICAgIC4uLlxuICAgKiAgICB7IHBhdGg6ICdlZGl0LzppZCcsIGNvbXBvbmVudDogUGVyc29uRWRpdENvbXBvbmVudCB9LFxuICAgKiAgICAuLi5cbiAgICogIF0sXG4gICAqIGBgYFxuICAgKlxuICAgKiBCYXNlYWRvIG5pc3NvLCBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUsIHNlcsOhIGRpc3BhcmFkbyB1bWEgcmVxdWlzacOnw6NvIHBhcmEgYnVzY2FyIG8gcmVjdXJzbyBxdWUgc2Vyw6EgZWRpdGFkby5cbiAgICpcbiAgICogPiBgR0VUIHtlbmQtcG9pbnR9L3tpZH1gXG4gICAqXG4gICAqIE5vcyBtw6l0b2RvcyBkZSBgc2F2ZWAgZSBgc2F2ZU5ld2AsIGFvIGludsOpcyBkZSB1bSBgUE9TVGAsIHNlcsOhIGRpc3BhcmFkbyB1bSBgUFVUYC5cbiAgICpcbiAgICogUmVzcXVpc2nDp8OjbyBkaXNwYXJhZGEsIG9uZGUgYSBwcm9wcmllZGFkZSBgbmFtZWAgZSBgY2l0eWAgZm9yYW0gcHJlZW5jaGlkYXMgLyBhdHVhbGl6YWRhcywgZSBvIGBpZGAgZGEgdXJsIMOpIDI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUFVUIC9hcGkvcG8tc2FtcGxlcy92MS9wZW9wbGUvMiBIVFRQLzEuMVxuICAgKiAgSG9zdDogbG9jYWxob3N0OjQwMDBcbiAgICogIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAgICogIEFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpblxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXF1ZXN0IHBheWxvYWQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7IFwibmFtZVwiOiBcIkZ1bGFub1wiLCBcImNpdHlcIjogXCJNZXRyb3BvbGlzXCIgfVxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlLWFwaScpIHNlcnZpY2VBcGk6IHN0cmluZztcblxuICAvKiogVMOtdHVsbyBkYSBww6FnaW5hLiAqL1xuICBASW5wdXQoJ3AtdGl0bGUnKSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBvdSBzZXJ2acOnbyBxdWUgc2Vyw6EgZXhlY3V0YWRvIG5hIGluaWNpYWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqIC0gYHN0cmluZ2A6ICpFbmRwb2ludCogdXNhZG8gcGVsbyBjb21wb25lbnRlIHBhcmEgcmVxdWlzacOnw6NvIHZpYSBgUE9TVGAuXG4gICAqIC0gYGZ1bmN0aW9uYDogTcOpdG9kbyBxdWUgc2Vyw6EgZXhlY3V0YWRvLlxuICAgKlxuICAgKiBPIHJldG9ybm8gZGVzdGEgZnVuw6fDo28gZGV2ZSBzZXIgZG8gdGlwbyBgUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zYCxcbiAgICogb25kZSBvIHVzdcOhcmlvIHBvZGVyw6EgY3VzdG9taXphciBub3ZvcyBjYW1wb3MsIGJyZWFkY3J1bWIsIHRpdGxlIGUgYWN0aW9uc1xuICAgKlxuICAgKiBQb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGdldFBhZ2VPcHRpb25zKCk6IFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucyB7XG4gICAqIHJldHVybiB7XG4gICAqICAgYWN0aW9uczpcbiAgICogICAgIHsgY2FuY2VsOiBmYWxzZSwgc2F2ZTogJ3NhdmUvOmlkJywgc2F2ZU5ldzogJ3NhdmVOZXcnIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnaWRDYXJkJywgZ3JpZENvbHVtbnM6IDYgfVxuICAgKiAgIF1cbiAgICogfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkXT1cIm9uTG9hZE9wdGlvbnMuYmluZCh0aGlzKVwiXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBvbkxvYWQ6IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgYXDDs3Mgc2VyIHJlYWxpemFkYSBhIGJ1c2NhIGRvcyBkYWRvcy5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogRXN0YSBmdW7Dp8OjbyBwYXNzYSBwb3IgcGFyw6JtZXRybyBvIG1vZGVsIGUgZGV2ZSByZWNlYsOqLWxvIGRlIHZvbHRhIGNvbSBhcyBhbHRlcmHDp8O1ZXMuXG4gICAqIFRhbWLDqW0gYWNlaXRhIG8gcmV0b3JubyBkZSB1bSBPYnNlcnZhYmxlIGNvbSBvIG5vdm8gbW9kZWwuXG4gICAqXG4gICAqIFBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogb25Mb2FkQ3VzdG9tKG1vZGVsKSB7XG4gICAqICByZXR1cm4geyAuLi5tb2RlbCwgY3VzdG9tRmllbGQ6ICduZXdWYWx1ZScgfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkLWRhdGFdPVwib25Mb2FkQ3VzdG9tLmJpbmQodGhpcylcIlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkLWRhdGEnKSBvbkxvYWREYXRhOiAoKG1vZGVsOiBhbnkpID0+IGFueSkgfCAoKG1vZGVsOiBhbnkpID0+IE9ic2VydmFibGU8YW55Pik7XG5cbiAgbW9kZWw6IGFueSA9IHt9O1xuXG4gIC8vIGJlZm9yZVNhdmU6IHJldHVybiBib29sZWFuXG4gIC8vIGFmdGVyU2F2ZVxuICAvLyBiZWZvcmVSZW1vdmU6IHJldHVybiBib29sZWFuXG4gIC8vIGFmdGVyUmVtb3ZlXG4gIC8vIGJlZm9yZUluc2VydDogOiByZXR1cm4gYm9vbGVhblxuICByZWFkb25seSBkZXRhaWxBY3Rpb25zOiBQb0dyaWRSb3dBY3Rpb25zID0ge307XG5cbiAgcHJpdmF0ZSBpbmRleEZvY3VzID0gMDtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfYWN0aW9uczogUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zID0ge307XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzO1xuICBwcml2YXRlIF9hdXRvUm91dGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbnRyb2xGaWVsZHM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfZGV0YWlsRmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2R1cGxpY2F0ZXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfZmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2tleXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfcGFnZUFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBw6fDtWVzIGRhIHDDoWdpbmEuXG4gICAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIHNldCBhY3Rpb25zKHZhbHVlOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5pc09iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IHt9O1xuXG4gICAgdGhpcy5fcGFnZUFjdGlvbnMgPSB0aGlzLmdldFBhZ2VBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fYWN0aW9ucyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtZHluYW1pYy1lZGl0YC5cbiAgICpcbiAgICogw4kgcG9zc2l2ZWwgY3VzdG9taXphciBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpc1xuICAgKiBvdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyXG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMgPSB7XG4gICAqICAgIGRldGFpbEFjdGlvbk5ldzogJ0luY2x1aXInLFxuICAgKiAgICBwYWdlQWN0aW9uQ2FuY2VsOiAnRGVzY2FydGFyJyxcbiAgICogICAgcGFnZUFjdGlvblNhdmU6ICdHcmF2YXInLFxuICAgKiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ0dyYXZhciBlIGluY2x1aXInLFxuICAgKiAgICByZWdpc3Rlck5vdEZvdW5kOiAnTmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG8uJyxcbiAgICogICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlOiAnSXRlbSBzYWx2byBjb20gc3VjZXNzby4nLFxuICAgKiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ0l0ZW0gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgKiAgICBzYXZlTm90aWZpY2F0aW9uV2FybmluZzogJ05lY2Vzc8OhcmlvIHByZWVuY2hlciBvIGZvcm11bMOhcmlvIGNvcnJldGFtZW50ZS4nXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtZWRpdFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tcGFnZS1keW5hbWljLWVkaXQ+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG5cbiAgICB0aGlzLl9wYWdlQWN0aW9ucyA9IHRoaXMuZ2V0UGFnZUFjdGlvbnModGhpcy5fYWN0aW9ucyk7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIFZhbGlkYXIgcm90YXMgbmEgbcOjbyBwb2lzIHNlIGV4aXN0aXIgdW1hIHJvdGEgJyoqJyBvIGNhdGNoIGRvIG5hdmlnYXRpb24gbsOjbyBmdW5jaW9uYS5cbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDcmlhIGF1dG9tYXRpY2FtZW50ZSBhcyByb3RhcyBkZSBlZGnDp8OjbyAobm92by9kdXBsaWNhdGUpIGUgZGV0YWxoZXMgY2FzbyBhcyBhw6fDtWVzXG4gICAqIGVzdGVqYW0gZGVmaW5pZGFzIG5hcyBhw6fDtWVzLlxuICAgKlxuICAgKiA+IFBhcmEgbyBjb3JyZXRvIGZ1bmNpb25hbWVudG8gbsOjbyBwb2RlIGhhdmVyIG5lbmh1bSByb3RhIGNvcmluZ2EgKGAqKmApIGVzcGVjaWZpY2FkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLXJvdXRlcicpIHNldCBhdXRvUm91dGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b1JvdXRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGF1dG9Sb3V0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9Sb3V0ZXI7XG4gIH1cblxuICAvKiogTGlzdGEgZG9zIGNhbXBvcyB1c2Fkb3MgbmEgdGFiZWxhIGUgYnVzY2EgYXZhbsOnYWRhLiAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyh2YWx1ZTogQXJyYXk8UG9QYWdlRHluYW1pY0VkaXRGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IFsuLi52YWx1ZV0gOiBbXTtcblxuICAgIHRoaXMuX2tleXMgPSB0aGlzLmdldEtleXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2R1cGxpY2F0ZXMgPSB0aGlzLmdldER1cGxpY2F0ZXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuXG4gICAgdGhpcy5fY29udHJvbEZpZWxkcyA9IHRoaXMuZ2V0Q29udHJvbEZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2RldGFpbEZpZWxkcyA9IHRoaXMuZ2V0RGV0YWlsRmllbGRzKHRoaXMuX2ZpZWxkcyk7XG4gIH1cblxuICBnZXQgZmllbGRzKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNFZGl0RmllbGQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHBvTm90aWZpY2F0aW9uOiBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0RpYWxvZ1NlcnZpY2U6IFBvRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNTZXJ2aWNlOiBQb1BhZ2VEeW5hbWljU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZERhdGFGcm9tQVBJKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRldGFpbEFjdGlvbk5ldygpIHtcbiAgICB0aGlzLmdyaWREZXRhaWwuaW5zZXJ0Um93KCk7XG4gIH1cblxuICBnZXQgZHVwbGljYXRlcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2R1cGxpY2F0ZXNdO1xuICB9XG5cbiAgZ2V0IGtleXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9rZXlzXTtcbiAgfVxuXG4gIGdldCBwYWdlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3BhZ2VBY3Rpb25zXTtcbiAgfVxuXG4gIGdldCBjb250cm9sRmllbGRzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sRmllbGRzO1xuICB9XG5cbiAgZ2V0IGRldGFpbEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGV0YWlsRmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21BUEkoKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlQXBpOiBzZXJ2aWNlQXBpRnJvbVJvdXRlLCBzZXJ2aWNlTWV0YWRhdGFBcGksIHNlcnZpY2VMb2FkQXBpIH0gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGE7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgY29uc3QgeyBkdXBsaWNhdGUgfSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICBjb25zdCBvbkxvYWQgPSBzZXJ2aWNlTG9hZEFwaSB8fCB0aGlzLm9uTG9hZDtcbiAgICB0aGlzLnNlcnZpY2VBcGkgPSBzZXJ2aWNlQXBpRnJvbVJvdXRlIHx8IHRoaXMuc2VydmljZUFwaTtcblxuICAgIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuY29uZmlnU2VydmljZUFwaSh7IGVuZHBvaW50OiB0aGlzLnNlcnZpY2VBcGksIG1ldGFkYXRhOiBzZXJ2aWNlTWV0YWRhdGFBcGkgfSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSQgPSB0aGlzLmdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGUsIGlkLCBvbkxvYWQpO1xuICAgIGNvbnN0IGRhdGEkID0gdGhpcy5sb2FkRGF0YShpZCwgZHVwbGljYXRlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbmNhdChtZXRhZGF0YSQsIGRhdGEkKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbChcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtICYmIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5kaXJ0eSkge1xuICAgICAgdGhpcy5wb0RpYWxvZ1NlcnZpY2UuY29uZmlybSh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubGl0ZXJhbHMuY2FuY2VsQ29uZmlybU1lc3NhZ2UsXG4gICAgICAgIHRpdGxlOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25DYW5jZWwsXG4gICAgICAgIGNvbmZpcm06IHRoaXMuZ29CYWNrLmJpbmQodGhpcywgYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nb0JhY2soYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VW5pcXVlS2V5KGl0ZW0pIHtcbiAgICBjb25zdCBrZXlzID0gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKGl0ZW0sIHRoaXMua2V5cyk7XG5cbiAgICByZXR1cm4gdmFsdWVzRnJvbU9iamVjdChrZXlzKS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcml2YXRlIGdvQmFjayhcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVDYW5jZWwoYWN0aW9uQmVmb3JlQ2FuY2VsKVxuICAgICAgICAuc3Vic2NyaWJlKChiZWZvcmVDYW5jZWxSZXN1bHQ6IFBvUGFnZUR5bmFtaWNFZGl0QmVmb3JlQ2FuY2VsKSA9PiB7XG4gICAgICAgICAgdGhpcy5leGVjdXRlQmFja0FjdGlvbihhY3Rpb25DYW5jZWwsIGJlZm9yZUNhbmNlbFJlc3VsdD8uYWxsb3dBY3Rpb24sIGJlZm9yZUNhbmNlbFJlc3VsdD8ubmV3VXJsKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlQmFja0FjdGlvbihcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWxsb3dBY3Rpb24/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnYWxsb3dBY3Rpb24nXSxcbiAgICBuZXdVcmw/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnbmV3VXJsJ11cbiAgKSB7XG4gICAgY29uc3QgaXNBbGxvd2VkQWN0aW9uID0gdHlwZW9mIGFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBhbGxvd0FjdGlvbiA6IHRydWU7XG5cbiAgICBpZiAoaXNBbGxvd2VkQWN0aW9uKSB7XG4gICAgICBpZiAoYWN0aW9uQ2FuY2VsID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGFjdGlvbkNhbmNlbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uQ2FuY2VsID09PSAnc3RyaW5nJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtuZXdVcmwgfHwgYWN0aW9uQ2FuY2VsXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY3Rpb25DYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWREYXRhKGlkLCBkdXBsaWNhdGU/KSB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IGR1cGxpY2F0ZSA/IEpTT04ucGFyc2UoZHVwbGljYXRlKSA6IHt9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmdldFJlc291cmNlKGlkKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5iZWZvcmVTZXRNb2RlbChyZXNwb25zZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhZ2VBY3Rpb25zID0gW107XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYmVmb3JlU2V0TW9kZWwocmVzcG9uc2U6IGFueSkge1xuICAgIGlmICghdGhpcy5vbkxvYWREYXRhKSB7XG4gICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25Mb2FkRGF0YUV4ZWN1dGlvbiA9IHRoaXMub25Mb2FkRGF0YShyZXNwb25zZSk7XG4gICAgY29uc3Qgb25Mb2FkRGF0YSQgPSBvbkxvYWREYXRhRXhlY3V0aW9uIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IG9uTG9hZERhdGFFeGVjdXRpb24gOiBvZihvbkxvYWREYXRhRXhlY3V0aW9uKTtcblxuICAgIG9uTG9hZERhdGEkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBjdXN0b21Nb2RlbCA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwgPSBjdXN0b21Nb2RlbDtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZDogVXJsT3JQb0N1c3RvbWl6YXRpb25GdW5jdGlvbikge1xuICAgIGlmIChvbkxvYWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFBvRHluYW1pY1BhZ2VPcHRpb25zKG9uTG9hZCkucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlUG9PcHRpb24gPT5cbiAgICAgICAgICB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmNoYW5nZU9yaWdpbmFsT3B0aW9uc1RvTmV3T3B0aW9ucyh0aGlzLCByZXNwb25zZVBvT3B0aW9uKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2w6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrYm94R3JvdXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBwby1jaGVja2JveC1ncm91cFtuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1gKTtcbiAgICBpZiAoY2hlY2tib3hHcm91cCkge1xuICAgICAgY29uc3QgY2hlY2tCb3hDb21wb25lbnQgPSBjaGVja2JveEdyb3VwLnF1ZXJ5U2VsZWN0b3IoJ3BvLWNoZWNrYm94W25nLXJlZmxlY3QtZGlzYWJsZWQ9ZmFsc2VdJyk7XG4gICAgICBjb25zdCBsYWJlbElucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gY2hlY2tCb3hDb21wb25lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5wby1jaGVja2JveC1vdXRsaW5lJyk7XG4gICAgICBpZiAobGFiZWxJbnB1dCkge1xuICAgICAgICBsYWJlbElucHV0LmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZGV4Rm9jdXMtLTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQ29udHJvbChjb250cm9sOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0ke2NvbnRyb2x9XWApO1xuICAgIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmIChpbnB1dEVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudCwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudDogRWxlbWVudCwgY29udHJvbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmFkaW9Db21wb25lbnQgPSBpbnB1dEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGBwby1yYWRpb1tuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1bbmctcmVmbGVjdC1kaXNhYmxlZD1mYWxzZV1gXG4gICAgKTtcbiAgICBpZiAocmFkaW9Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHJhZGlvSW5wdXQgPSByYWRpb0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgcmFkaW9JbnB1dC5mb2N1cygpO1xuICAgICAgcmFkaW9JbnB1dC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncG8tcmFkaW8tZm9jdXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRleEZvY3VzLS07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucz4ge1xuICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9uOiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMgPSB7XG4gICAgICBmaWVsZHM6IHRoaXMuZmllbGRzLFxuICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLFxuICAgICAgYnJlYWRjcnVtYjogdGhpcy5icmVhZGNydW1iLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGVcbiAgICB9O1xuXG4gICAgY29uc3QgcGFnZU9wdGlvblNjaGVtYTogUG9QYWdlRHluYW1pY09wdGlvbnNTY2hlbWE8UG9QYWdlRHluYW1pY0VkaXRPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWVsZHMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGU6IHN0cmluZywgcGFyYW1JZDogc3RyaW5nIHwgbnVtYmVyLCBvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pIHtcbiAgICBjb25zdCB0eXBlTWV0YWRhdGEgPSBwYXJhbUlkID8gJ2VkaXQnIDogJ2NyZWF0ZSc7XG5cbiAgICBpZiAoc2VydmljZUFwaUZyb21Sb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZ2V0TWV0YWRhdGE8UG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YT4odHlwZU1ldGFkYXRhKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b1JvdXRlciA9IHJlc3BvbnNlLmF1dG9Sb3V0ZXIgfHwgdGhpcy5hdXRvUm91dGVyO1xuICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3BvbnNlLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zO1xuICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IHJlc3BvbnNlLmJyZWFkY3J1bWIgfHwgdGhpcy5icmVhZGNydW1iO1xuICAgICAgICAgIHRoaXMuZmllbGRzID0gcmVzcG9uc2UuZmllbGRzIHx8IHRoaXMuZmllbGRzO1xuICAgICAgICAgIHRoaXMudGl0bGUgPSByZXNwb25zZS50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRyb2xzQXNEaXJ0eUFuZEZvY3VzRmlyc3RJbnZhbGlkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXhGb2N1cyA9IDA7XG4gICAgY29uc3QgY29udHJvbHMgPSBPYmplY3Qua2V5cyh0aGlzLmR5bmFtaWNGb3JtLmZvcm0uY29udHJvbHMpO1xuXG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB0aGlzLmluZGV4Rm9jdXMgPT09IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0NvbnRyb2woY29udHJvbCk7XG4gICAgICAgIHRoaXMuaW5kZXhGb2N1cysrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwodGhpcy5tb2RlbCwgcGF0aCk7XG5cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVuaXF1ZUtleShpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ10gPyB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVybChpdGVtOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaXF1ZUtleSA9IHRoaXMuZm9ybWF0VW5pcXVlS2V5KGl0ZW0pO1xuXG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvOmlkL2csIHVuaXF1ZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTYXZlKHNhdmVSZWRpcmVjdFBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHNhdmVPcGVyYXRpb24kID0gdGhpcy5zYXZlT3BlcmF0aW9uKCk7XG5cbiAgICByZXR1cm4gc2F2ZU9wZXJhdGlvbiQucGlwZShcbiAgICAgIHRhcChtZXNzYWdlID0+IHtcbiAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oc2F2ZVJlZGlyZWN0UGF0aCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKG5ld1Jlc291cmNlOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IGR5bmFtaWNOZ0Zvcm0gPSB0aGlzLmR5bmFtaWNGb3JtLmZvcm07XG5cbiAgICByZW1vdmVLZXlzUHJvcGVydGllcyh0aGlzLmtleXMsIG5ld1Jlc291cmNlKTtcblxuICAgIHRoaXMubW9kZWwgPSB7IC4uLnRoaXMubW9kZWwsIC4uLm5ld1Jlc291cmNlIH07XG5cbiAgICBkeW5hbWljTmdGb3JtLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZU9wZXJhdGlvbigpIHtcbiAgICBpZiAodGhpcy5keW5hbWljRm9ybS5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMubWFya0NvbnRyb2xzQXNEaXJ0eUFuZEZvY3VzRmlyc3RJbnZhbGlkKCk7XG4gICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5saXRlcmFscy5zYXZlTm90aWZpY2F0aW9uV2FybmluZyk7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1JZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuICAgIGNvbnN0IHN1Y2Nlc3NNc2cgPSBwYXJhbUlkXG4gICAgICA/IHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NVcGRhdGVcbiAgICAgIDogdGhpcy5saXRlcmFscy5zYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1NhdmU7XG5cbiAgICBjb25zdCBzYXZlT3BlcmF0aW9uJCA9IHBhcmFtSWRcbiAgICAgID8gdGhpcy5wb1BhZ2VEeW5hbWljU2VydmljZS51cGRhdGVSZXNvdXJjZShwYXJhbUlkLCB0aGlzLm1vZGVsKVxuICAgICAgOiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmNyZWF0ZVJlc291cmNlKHRoaXMubW9kZWwpO1xuXG4gICAgcmV0dXJuIHNhdmVPcGVyYXRpb24kLnBpcGUobWFwKCgpID0+IHN1Y2Nlc3NNc2cpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZShhY3Rpb246IFNhdmVBY3Rpb24sIGJlZm9yZTogJ2JlZm9yZVNhdmUnIHwgJ2JlZm9yZVNhdmVOZXcnID0gJ2JlZm9yZVNhdmUnKSB7XG4gICAgY29uc3QgZXhlY3V0ZU9wZXJhdGlvbiA9IHtcbiAgICAgIGJlZm9yZVNhdmU6IHRoaXMuZXhlY3V0ZVNhdmUuYmluZCh0aGlzKSxcbiAgICAgIGJlZm9yZVNhdmVOZXc6IHRoaXMuZXhlY3V0ZVNhdmVOZXcuYmluZCh0aGlzKVxuICAgIH07XG5cbiAgICBjb25zdCB1bmlxdWVLZXkgPSB0aGlzLnJlc29sdmVVbmlxdWVLZXkodGhpcy5tb2RlbCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMucG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zU2VydmljZVtiZWZvcmVdKHRoaXMuYWN0aW9uc1tiZWZvcmVdLCB1bmlxdWVLZXksIHsgLi4udGhpcy5tb2RlbCB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAocmV0dXJuQmVmb3JlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0FjdGlvbiA9IHJldHVybkJlZm9yZT8ubmV3VXJsID8/IGFjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93QWN0aW9uID0gcmV0dXJuQmVmb3JlPy5hbGxvd0FjdGlvbiA/PyB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHJldHVybkJlZm9yZT8ucmVzb3VyY2UpO1xuXG4gICAgICAgICAgICBpZiAoIWFsbG93QWN0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3QWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZU9wZXJhdGlvbltiZWZvcmVdKG5ld0FjdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdBY3Rpb24oeyAuLi50aGlzLm1vZGVsIH0sIHVuaXF1ZUtleSk7XG4gICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTYXZlTmV3KHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcmFtSWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcbiAgICBjb25zdCBzYXZlT3BlcmF0aW9uJCA9IHRoaXMuc2F2ZU9wZXJhdGlvbigpO1xuXG4gICAgcmV0dXJuIHNhdmVPcGVyYXRpb24kLnBpcGUoXG4gICAgICB0YXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChwYXJhbUlkKSB7XG4gICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKG1lc3NhZ2UpO1xuXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKHBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2VzcyhtZXNzYWdlKTtcblxuICAgICAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRLZXlzQnlGaWVsZHMoZmllbGRzOiBBcnJheTxhbnk+ID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5rZXkgPT09IHRydWUpLm1hcChmaWVsZCA9PiBmaWVsZC5wcm9wZXJ0eSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRyb2xGaWVsZHMoZmllbGRzOiBBcnJheTxhbnk+ID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC50eXBlICE9PSAnZGV0YWlsJyk7XG4gIH1cblxuICBwcml2YXRlIGdldERldGFpbEZpZWxkcyhmaWVsZHM6IEFycmF5PGFueT4gPSBbXSkge1xuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnR5cGUgPT09ICdkZXRhaWwnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHVwbGljYXRlc0J5RmllbGRzKGZpZWxkczogQXJyYXk8YW55PiA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQuZHVwbGljYXRlID09PSB0cnVlKS5tYXAoZmllbGQgPT4gZmllbGQucHJvcGVydHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYWdlQWN0aW9ucyhhY3Rpb25zOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMgPSB7fSk6IEFycmF5PFBvUGFnZUFjdGlvbj4ge1xuICAgIGNvbnN0IHBhZ2VBY3Rpb25zID0gW3sgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvblNhdmUsIGFjdGlvbjogdGhpcy5zYXZlLmJpbmQodGhpcywgYWN0aW9ucy5zYXZlKSB9XTtcblxuICAgIGlmIChhY3Rpb25zLnNhdmVOZXcpIHtcbiAgICAgIHBhZ2VBY3Rpb25zLnB1c2goe1xuICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy5wYWdlQWN0aW9uU2F2ZU5ldyxcbiAgICAgICAgYWN0aW9uOiB0aGlzLnNhdmUuYmluZCh0aGlzLCBhY3Rpb25zLnNhdmVOZXcsICdiZWZvcmVTYXZlTmV3JylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb25zLmNhbmNlbCA9PT0gdW5kZWZpbmVkIHx8IGFjdGlvbnMuY2FuY2VsKSB7XG4gICAgICBwYWdlQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvbkNhbmNlbCxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmNhbmNlbC5iaW5kKHRoaXMsIGFjdGlvbnMuY2FuY2VsLCB0aGlzLmFjdGlvbnMuYmVmb3JlQ2FuY2VsKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VBY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxwby1wYWdlLWRlZmF1bHQgW3AtYWN0aW9uc109XCJwYWdlQWN0aW9uc1wiIFtwLWJyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiIFtwLXRpdGxlXT1cInRpdGxlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbDsgdGhlbiBmb3JtRmllbGRzVGVtcGxhdGU7IGVsc2UgcmVnaXN0ZXJOb3RGb3VuZFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuPC9wby1wYWdlLWRlZmF1bHQ+XG5cbjxuZy10ZW1wbGF0ZSAjcmVnaXN0ZXJOb3RGb3VuZFRlbXBsYXRlPlxuICA8cG8td2lkZ2V0PlxuICAgIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWluZm9cIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2VcIj5cbiAgICAgIHt7IGxpdGVyYWxzLnJlZ2lzdGVyTm90Rm91bmQgfX1cbiAgICA8L3NwYW4+XG4gIDwvcG8td2lkZ2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb3JtRmllbGRzVGVtcGxhdGU+XG4gIDxwby1keW5hbWljLWZvcm0gI2R5bmFtaWNGb3JtIFtwLWZpZWxkc109XCJjb250cm9sRmllbGRzXCIgW3AtdmFsdWVdPVwibW9kZWxcIj4gPC9wby1keW5hbWljLWZvcm0+XG5cbiAgPGRpdiAqbmdJZj1cImRldGFpbEZpZWxkcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwby1zbS0xMlwiPlxuICAgIDxwby1kaXZpZGVyIFtwLWxhYmVsXT1cImRldGFpbEZpZWxkc1swXS5kaXZpZGVyXCI+PC9wby1kaXZpZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLXJvdyBwby1tYi0yXCI+XG4gICAgICA8cG8tYnV0dG9uIFtwLWxhYmVsXT1cImxpdGVyYWxzLmRldGFpbEFjdGlvbk5ld1wiIChwLWNsaWNrKT1cImRldGFpbEFjdGlvbk5ldygpXCI+PC9wby1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cG8tZ3JpZFxuICAgICAgI2dyaWREZXRhaWxcbiAgICAgIFtwLXJvdy1hY3Rpb25zXT1cImRldGFpbEFjdGlvbnNcIlxuICAgICAgW3AtY29sdW1uc109XCJkZXRhaWxGaWVsZHNbMF0uZGV0YWlsLmNvbHVtbnNcIlxuICAgICAgW3AtZGF0YV09XCJtb2RlbFtkZXRhaWxGaWVsZHNbMF0ucHJvcGVydHldXCJcbiAgICA+XG4gICAgPC9wby1ncmlkPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
842
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9saWIvY29tcG9uZW50cy9wby1wYWdlLWR5bmFtaWMtZWRpdC9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1lZGl0L3BvLXBhZ2UtZHluYW1pYy1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWdCLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFTTCxlQUFlLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7O0lDckI1Rix3QkFBb0c7OztJQUlwRyxpQ0FBVztJQUNULDBCQUEwQztJQUMxQywrQkFBaUM7SUFDL0IsWUFDRjtJQUFBLGlCQUFPLEVBQUE7OztJQURMLGVBQ0Y7SUFERSxpRUFDRjs7OztJQU9GLDhCQUFzRDtJQUNwRCxpQ0FBNkQ7SUFFN0QsK0JBQTRCLG9CQUFBO0lBQ3NCLDZMQUFXLGVBQUEsd0JB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QiwwQkFBMEI7Ozs7Ozs7K1lBRjFCLENBQUMsb0JBQW9CLENBQUM7WUNuTG5DLDBDQUF5RjtZQUN2Riw2RkFBb0c7WUFDdEcsaUJBQWtCO1lBRWxCLDRIQU9jO1lBRWQsNEhBa0JjOzs7O1lBL0JHLDJDQUF5QixnQ0FBQSxzQkFBQTtZQUN6QixlQUFhO1lBQWIsZ0NBQWEsaUJBQUEsaUJBQUE7Ozt1RkRvTGpCLDBCQUEwQjtjQUx0QyxTQUFTOzJCQUNFLHNCQUFzQixhQUVyQixDQUFDLG9CQUFvQixDQUFDO2tUQUdQLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNDLFVBQVU7a0JBQWxDLFNBQVM7bUJBQUMsWUFBWTtZQUdBLFVBQVU7a0JBQWhDLEtBQUs7bUJBQUMsY0FBYztZQXVFRyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFHSixLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUErQkMsTUFBTTtrQkFBdEIsS0FBSzttQkFBQyxRQUFRO1lBNEJPLFVBQVU7a0JBQS9CLEtBQUs7bUJBQUMsYUFBYTtZQStCSSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUEyQ08sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBZ0NTLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVNDLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXQsIG9mLCBTdWJzY3JpcHRpb24sIEVNUFRZLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBQb0JyZWFkY3J1bWIsXG4gIFBvRGlhbG9nU2VydmljZSxcbiAgUG9EeW5hbWljRm9ybUNvbXBvbmVudCxcbiAgUG9HcmlkQ29tcG9uZW50LFxuICBQb0dyaWRSb3dBY3Rpb25zLFxuICBQb0xhbmd1YWdlU2VydmljZSxcbiAgUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICBQb1BhZ2VBY3Rpb24sXG4gIHBvTG9jYWxlRGVmYXVsdFxufSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIG1hcE9iamVjdEJ5UHJvcGVydGllcywgdmFsdWVzRnJvbU9iamVjdCwgcmVtb3ZlS2V5c1Byb3BlcnRpZXMgfSBmcm9tICcuLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtYWN0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRGaWVsZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1wYWdlLWR5bmFtaWMvcG8tcGFnZS1keW5hbWljLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtY3VzdG9taXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNFZGl0TWV0YWRhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNPcHRpb25zU2NoZW1hIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtZHluYW1pYy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtZWRpdC1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRCZWZvcmVDYW5jZWwgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtYmVmb3JlLWNhbmNlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1saXRlcmFscy5pbnRlcmZhY2UnO1xuXG50eXBlIFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zKTtcbnR5cGUgU2F2ZUFjdGlvbiA9IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snc2F2ZSddIHwgUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zWydzYXZlTmV3J107XG5cbmV4cG9ydCBjb25zdCBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzPntcbiAgICBjYW5jZWxDb25maXJtTWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgdGhpcyBvcGVyYXRpb24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOZXcnLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAnU2F2ZScsXG4gICAgcGFnZUFjdGlvblNhdmVOZXc6ICdTYXZlIGFuZCBuZXcnLFxuICAgIHJlZ2lzdGVyTm90Rm91bmQ6ICdSZWdpc3RlciBub3QgZm91bmQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1NhdmU6ICdSZXNvdXJjZSBzdWNjZXNzZnVsbHkgc2F2ZWQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1Jlc291cmNlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdGb3JtIG11c3QgYmUgZmlsbGVkIG91dCBjb3JyZWN0bHkuJ1xuICB9LFxuICBlczogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAnRXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBjYW5jZWxhciBlc3RhIG9wZXJhY2nDs24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOdWV2bycsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBwYWdlQWN0aW9uU2F2ZTogJ0d1YXJkYXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnR3VhcmRhciB5IG51ZXZvJyxcbiAgICByZWdpc3Rlck5vdEZvdW5kOiAnUmVnaXN0cm8gbm8gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29uIMOpeGl0by4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlOiAnUmVjdXJzbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdFbCBmb3JtdWxhcmlvIGRlYmUgbGxlbmFyc2UgY29ycmVjdGFtZW50ZS4nXG4gIH0sXG4gIHB0OiA8UG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscz57XG4gICAgY2FuY2VsQ29uZmlybU1lc3NhZ2U6ICdUZW0gY2VydGV6YSBxdWUgZGVzZWphIGNhbmNlbGFyIGVzdGEgb3BlcmHDp8Ojbz8nLFxuICAgIGRldGFpbEFjdGlvbk5ldzogJ05vdm8nLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcGFnZUFjdGlvblNhdmU6ICdTYWx2YXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnU2FsdmFyIGUgbm92bycsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ1JlZ2lzdHJvIG7Do28gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29tIHN1Y2Vzc28uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1JlY3Vyc28gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25XYXJuaW5nOiAnRm9ybXVsw6FyaW8gcHJlY2lzYSBzZXIgcHJlZW5jaGlkbyBjb3JyZXRhbWVudGUuJ1xuICB9LFxuICBydTogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDQvtGC0LzQtdC90LjRgtGMINGN0YLRgyDQvtC/0LXRgNCw0YbQuNGOPycsXG4gICAgZGV0YWlsQWN0aW9uTmV3OiAn0J3QvtCy0YvQuScsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ9Ce0YLQvNC10L3QuNGC0YwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAn0KHQvtGF0YDQsNC90LjRgtGMJyxcbiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ9Ch0L7RhdGA0LDQvdC40YLRjCDQuCDRgdC+0LfQtNCw0YLRjCcsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ9CX0LDQv9C40YHRjCDQvdC1INC90LDQudC00LXQvdCwLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlOiAn0KDQtdGB0YPRgNGBINGD0YHQv9C10YjQvdC+INGB0L7RhdGA0LDQvdC10L0uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ9Cg0LXRgdGD0YDRgSDRg9GB0L/QtdGI0L3QviDQvtCx0L3QvtCy0LvQtdC9LicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICfQpNC+0YDQvNCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQt9Cw0L/QvtC70L3QtdC90LAg0L/RgNCw0LLQuNC70YzQvdC+LidcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGBwby1wYWdlLWR5bmFtaWMtZWRpdGAgw6kgdW1hIHDDoWdpbmEgcXVlIHBvZGUgc2VydmlyIHBhcmEgZWRpdGFyIG91IGNyaWFyIG5vdm9zIHJlZ2lzdHJvcyxcbiAqIG8gbWVzbW8gdGFtYsOpbSBzdXBvcnRhIG1ldGFkYWRvcyBjb25mb3JtZSBlc3BlY2lmaWNhZG8gbmEgZG9jdW1lbnRhw6fDo28uXG4gKlxuICogIyMjIFV0aWxpemHDp8OjbyB2aWEgcm90YVxuICpcbiAqIEFvIHV0aWxpemFyIGFzIHJvdGFzIHBhcmEgaW5pY2lhbGl6YXIgbyB0ZW1wbGF0ZSwgbyBgcGFnZS1keW5hbWljLWVkaXRgIGRpc3BvbmliaWxpemEgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgZm9ybmVjaWRhcyBubyBhcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGFzIGRhIGFwbGljYcOnw6NvLCBwYXJhXG4gKiBwb2RlciBlc3BlY2lmaWNhciBvIGVuZHBvaW50IGRvcyBkYWRvcyBlIGRvcyBtZXRhZGFkb3MgcXVlIHNlcsOjbyBjYXJyZWdhZG9zIG5hIGluaWNpYWxpemHDp8Ojby5cbiAqXG4gKiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAqXG4gKiBBcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGFzIGRhIGFwbGljYcOnw6NvOiBgYXBwLXJvdXRpbmcubW9kdWxlLnRzYFxuICogYGBgXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqIHtcbiAqICAgcGF0aDogJ3Blb3BsZScsXG4gKiAgIGNvbXBvbmVudDogUG9QYWdlRHluYW1pY0VkaXRDb21wb25lbnQsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzZXJ2aWNlQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL3Blb3BsZScsIC8vIGVuZHBvaW50IGRvcyBkYWRvc1xuICogICAgIHNlcnZpY2VNZXRhZGF0YUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9tZXRhZGF0YScsIC8vIGVuZHBvaW50IGRvcyBtZXRhZGFkb3MgdXRpbGl6YW5kbyBvIG3DqXRvZG8gSFRUUCBHZXRcbiAqICAgICBzZXJ2aWNlTG9hZEFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9sb2FkLW1ldGFkYXRhJyAvLyBlbmRwb2ludCBkZSBjdXN0b21pemHDp8O1ZXMgZG9zIG1ldGFkYWRvcyB1dGlsaXphbmRvIG8gbcOpdG9kbyBIVFRQIFBvc3RcbiAqICAgfVxuICogIH0sXG4gKiAge1xuICogICBwYXRoOiAnaG9tZScsXG4gKiAgIGNvbXBvbmVudDogSG9tZUV4YW1wbGVDb21wb25lbnRcbiAqICB9XG4gKiBdO1xuICpcbiAqIGBgYFxuICogTyBjb21wb25lbnRlIHByaW1laXJvIGlyw6EgY2FycmVnYXIgbyBtZXRhZGFkbyBkYSByb3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHNlcnZpY2VNZXRhZGF0YUFwaVxuICogZSBkZXBvaXMgaXLDoSBidXNjYXIgZGEgcm90YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBzZXJ2aWNlTG9hZEFwaS5cbiAqXG4gKiBBIHJlcXVpc2nDp8OjbyBkb3MgbWV0YWRhZG9zIMOpIGZlaXRhIG5hIGluaWNpYWxpemHDp8OjbyBkbyB0ZW1wbGF0ZSBwYXJhIGJ1c2NhciBvcyBtZXRhZGFkb3MgZGEgcMOhZ2luYSBwYXNzYW5kbyBvXG4gKiB0aXBvIGRvIG1ldGFkYWRvIGVzcGVyYWRvIGUgYSB2ZXJzw6NvIGNhY2hlYWRhIHBlbG8gYnJvd3Nlci5cbiAqXG4gKiA+IENhc28gbyBzZXJ2aWRvciByZXRvcm5hciB1bSBlcnJvIGFvIHJlY3VwZXJhciBvcyBtZXRhZGFkb3MsIHNlcsOjbyByZXBhc3NhZG9zIG9zIG1ldGFkYWRvcyBzYWx2b3MgZW0gY2FjaGUsXG4gKiBzZSBvIGNhY2hlIG7Do28gZXhpc3RpciBzZXLDoSBkaXNwYXJhZGEgdW1hIG5vdGlmaWNhw6fDo28uXG4gKlxuICogUGFyYSBjYXJyZWdhciBjb20gdW0gcmVjdXJzbyBqw6EgZXhpc3RlbnRlLCBkZXZlLXNlIHNlciBpbmNsdcOtZG8gdW0gcGFyw6JtZXRybyBuYSByb3RhIGNoYW1hZG8gYGlkYDpcbiAqXG4gKiBgYGBcbiAqIHtcbiAqICAgcGF0aDogJ3Blb3BsZS86aWQnLFxuICogICBjb21wb25lbnQ6IFBvUGFnZUR5bmFtaWNFZGl0Q29tcG9uZW50LFxuICogICBkYXRhOiB7XG4gKiAgICAgc2VydmljZUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9wZW9wbGUnLCAvLyBlbmRwb2ludCBkb3MgZGFkb3NcbiAqICAgICBzZXJ2aWNlTWV0YWRhdGFBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvbWV0YWRhdGEnLCAvLyBlbmRwb2ludCBkb3MgbWV0YWRhZG9zXG4gKiAgICAgc2VydmljZUxvYWRBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvbG9hZC1tZXRhZGF0YScgLy8gZW5kcG9pbnQgZGUgY3VzdG9taXphw6fDtWVzIGRvcyBtZXRhZGFkb3NcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSByZXF1aXNpw6fDo28gZG9zIG1ldGFkYWRvcyDDqSBmZWl0YSBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUgcGFyYSBidXNjYXIgb3MgbWV0YWRhZG9zIGRhIHDDoWdpbmEgcGFzc2FuZG8gb1xuICogdGlwbyBkbyBtZXRhZGFkbyBlc3BlcmFkbyBlIGEgdmVyc8OjbyBjYWNoZWFkYSBwZWxvIGJyb3dzZXIuXG4gKlxuICogTyBmb3JtYXRvIGVzcGVyYWRvIG5hIHJlc3Bvc3RhIGRhIHJlcXVpc2nDp8OjbyBlc3TDoSBlc3BlY2lmaWNhZG8gbmEgaW50ZXJmYWNlXG4gKiBbUG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YV0oL2RvY3VtZW50YXRpb24vcG8tcGFnZS1keW5hbWljLWVkaXQjcG8tcGFnZS1keW5hbWljLWVkaXQtbWV0YWRhdGEpLiBQb3IgZXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqICB7XG4gKiAgIHZlcnNpb246IDEsXG4gKiAgIHRpdGxlOiAnUGVyc29uIGVkaXQnLFxuICogICBmaWVsZHM6IFtcbiAqICAgICB7IHByb3BlcnR5OiAnaWQnLCBrZXk6IHRydWUsIGRpc2FibGVkOiB0cnVlIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ3N0YXR1cycgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnbmFtZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnbmlja25hbWUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2JpcnRoZGF0ZScsIGxhYmVsOiAnQmlydGggZGF0ZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnZ2VucmUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2NpdHknIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2NvdW50cnknIH1cbiAqICAgXVxuICogfVxuICogYGBgXG4gKlxuICogPiBDYXNvIG8gZW5kcG9pbnQgZG9zIG1ldGFkYWRvcyBuw6NvIHNlamEgZXNwZWNpZmljYWRvLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIHV0aWxpemFuZG8gbyBgc2VydmljZUFwaWAgZGEgc2VndWludGUgZm9ybWE6XG4gKiBgYGBcbiAqIEdFVCB7ZW5kLXBvaW50fS9tZXRhZGF0YT90eXBlPWVkaXQmdmVyc2lvbj17dmVyc2lvbn1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgRWRpdCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtZWRpdC11c2VyXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgRWRpdCAtIFVzZXJcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtdXNlci9zYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtdXNlci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWR5bmFtaWMtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvUGFnZUR5bmFtaWNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb1BhZ2VEeW5hbWljRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZHluYW1pY0Zvcm0nKSBkeW5hbWljRm9ybTogUG9EeW5hbWljRm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZERldGFpbCcpIGdyaWREZXRhaWw6IFBvR3JpZENvbXBvbmVudDtcblxuICAvKiogT2JqZXRvIGNvbSBwcm9wcmllZGFkZXMgZG8gYnJlYWRjcnVtYi4gKi9cbiAgQElucHV0KCdwLWJyZWFkY3J1bWInKSBicmVhZGNydW1iPzogUG9CcmVhZGNydW1iID0geyBpdGVtczogW10gfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVuZHBvaW50IHVzYWRvIHBlbG8gdGVtcGxhdGUgcGFyYSByZXF1aXNpw6fDo28gZG8gcmVjdXJzbyBxdWUgc2Vyw6EgZXhpYmlkbyBwYXJhIGVkacOnw6NvLlxuICAgKlxuICAgKiBQYXJhIGFzIGHDp8O1ZXMgZGUgYHNhdmVgIGUgYHNhdmVOZXdgLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIGRlIGNyaWHDp8OjbyBuZXNzZSBtZXNtbyBlbmRwb2ludCBwYXNzYW5kbyBvcyB2YWxvcmVzXG4gICAqIHByZWVuY2hpZG9zIHBlbG8gdXN1w6FyaW8gdmlhIHBheWxvYWQuXG4gICAqXG4gICAqID4gYFBPU1Qge2VuZC1wb2ludH1gXG4gICAqXG4gICAqIGBgYFxuICAgKiAgPHBvLXBhZ2UtZHluYW1pYy1lZGl0XG4gICAqICAgIFtwLWFjdGlvbnNdPVwieyBzYXZlOiAnLycsIHNhdmVOZXc6ICduZXcnIH1cIlxuICAgKiAgICBbcC1maWVsZHNdPVwiWyB7IHByb3BlcnR5OiAnbmFtZScgfSwgeyBwcm9wZXJ0eTogJ2NpdHknIH0gXVwiXG4gICAqICAgIHAtc2VydmljZT1cIi9hcGkvcG8tc2FtcGxlcy92MS9wZW9wbGVcIlxuICAgKiAgICAuLi4+XG4gICAqICA8L3BvLXBhZ2UtZHluYW1pYy1lZGl0PlxuICAgKiBgYGBcbiAgICpcbiAgICogUmVzcXVpc2nDp8OjbyBkaXNwYXJhZGEsIG9uZGUgYSBwcm9wcmllZGFkZSBgbmFtZWAgZSBgY2l0eWAgZm9yYW0gcHJlZW5jaGlkYXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUE9TVCAvYXBpL3BvLXNhbXBsZXMvdjEvcGVvcGxlIEhUVFAvMS4xXG4gICAqICBIb3N0OiBsb2NhbGhvc3Q6NDAwMFxuICAgKiAgQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICAgKiAgQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFJlcXVlc3QgcGF5bG9hZDpcbiAgICpcbiAgICogYGBgXG4gICAqIHsgXCJuYW1lXCI6IFwiRnVsYW5vXCIsIFwiY2l0eVwiOiBcIlNtYWxsdmlsbGVcIiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHF1ZWlyYSBxdWUgbyB0ZW1wbGF0ZSBjYXJyZWd1ZSB1bSByZWN1cnNvIGrDoSBleGlzdGVudGUsIGRldmUtc2Ugc2VyIGluY2x1w61kbyB1bSBwYXJhbWV0cm8gbmEgcm90YSBjaGFtYWRvIGBpZGAuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgY29uZmlndXJhw6fDo28gZGUgcm90YTpcbiAgICpcbiAgICogYGBgXG4gICAqICBSb3V0ZXJNb2R1bGUuZm9yUm9vdChbXG4gICAqICAgIC4uLlxuICAgKiAgICB7IHBhdGg6ICdlZGl0LzppZCcsIGNvbXBvbmVudDogUGVyc29uRWRpdENvbXBvbmVudCB9LFxuICAgKiAgICAuLi5cbiAgICogIF0sXG4gICAqIGBgYFxuICAgKlxuICAgKiBCYXNlYWRvIG5pc3NvLCBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUsIHNlcsOhIGRpc3BhcmFkbyB1bWEgcmVxdWlzacOnw6NvIHBhcmEgYnVzY2FyIG8gcmVjdXJzbyBxdWUgc2Vyw6EgZWRpdGFkby5cbiAgICpcbiAgICogPiBgR0VUIHtlbmQtcG9pbnR9L3tpZH1gXG4gICAqXG4gICAqIE5vcyBtw6l0b2RvcyBkZSBgc2F2ZWAgZSBgc2F2ZU5ld2AsIGFvIGludsOpcyBkZSB1bSBgUE9TVGAsIHNlcsOhIGRpc3BhcmFkbyB1bSBgUFVUYC5cbiAgICpcbiAgICogUmVzcXVpc2nDp8OjbyBkaXNwYXJhZGEsIG9uZGUgYSBwcm9wcmllZGFkZSBgbmFtZWAgZSBgY2l0eWAgZm9yYW0gcHJlZW5jaGlkYXMgLyBhdHVhbGl6YWRhcywgZSBvIGBpZGAgZGEgdXJsIMOpIDI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUFVUIC9hcGkvcG8tc2FtcGxlcy92MS9wZW9wbGUvMiBIVFRQLzEuMVxuICAgKiAgSG9zdDogbG9jYWxob3N0OjQwMDBcbiAgICogIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAgICogIEFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpblxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXF1ZXN0IHBheWxvYWQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7IFwibmFtZVwiOiBcIkZ1bGFub1wiLCBcImNpdHlcIjogXCJNZXRyb3BvbGlzXCIgfVxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlLWFwaScpIHNlcnZpY2VBcGk6IHN0cmluZztcblxuICAvKiogVMOtdHVsbyBkYSBww6FnaW5hLiAqL1xuICBASW5wdXQoJ3AtdGl0bGUnKSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBvdSBzZXJ2acOnbyBxdWUgc2Vyw6EgZXhlY3V0YWRvIG5hIGluaWNpYWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqIC0gYHN0cmluZ2A6ICpFbmRwb2ludCogdXNhZG8gcGVsbyBjb21wb25lbnRlIHBhcmEgcmVxdWlzacOnw6NvIHZpYSBgUE9TVGAuXG4gICAqIC0gYGZ1bmN0aW9uYDogTcOpdG9kbyBxdWUgc2Vyw6EgZXhlY3V0YWRvLlxuICAgKlxuICAgKiBPIHJldG9ybm8gZGVzdGEgZnVuw6fDo28gZGV2ZSBzZXIgZG8gdGlwbyBgUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zYCxcbiAgICogb25kZSBvIHVzdcOhcmlvIHBvZGVyw6EgY3VzdG9taXphciBub3ZvcyBjYW1wb3MsIGJyZWFkY3J1bWIsIHRpdGxlIGUgYWN0aW9uc1xuICAgKlxuICAgKiBQb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGdldFBhZ2VPcHRpb25zKCk6IFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucyB7XG4gICAqIHJldHVybiB7XG4gICAqICAgYWN0aW9uczpcbiAgICogICAgIHsgY2FuY2VsOiBmYWxzZSwgc2F2ZTogJ3NhdmUvOmlkJywgc2F2ZU5ldzogJ3NhdmVOZXcnIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnaWRDYXJkJywgZ3JpZENvbHVtbnM6IDYgfVxuICAgKiAgIF1cbiAgICogfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkXT1cIm9uTG9hZE9wdGlvbnMuYmluZCh0aGlzKVwiXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBvbkxvYWQ6IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgYXDDs3Mgc2VyIHJlYWxpemFkYSBhIGJ1c2NhIGRvcyBkYWRvcy5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogRXN0YSBmdW7Dp8OjbyBwYXNzYSBwb3IgcGFyw6JtZXRybyBvIG1vZGVsIGUgZGV2ZSByZWNlYsOqLWxvIGRlIHZvbHRhIGNvbSBhcyBhbHRlcmHDp8O1ZXMuXG4gICAqIFRhbWLDqW0gYWNlaXRhIG8gcmV0b3JubyBkZSB1bSBPYnNlcnZhYmxlIGNvbSBvIG5vdm8gbW9kZWwuXG4gICAqXG4gICAqIFBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogb25Mb2FkQ3VzdG9tKG1vZGVsKSB7XG4gICAqICByZXR1cm4geyAuLi5tb2RlbCwgY3VzdG9tRmllbGQ6ICduZXdWYWx1ZScgfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkLWRhdGFdPVwib25Mb2FkQ3VzdG9tLmJpbmQodGhpcylcIlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkLWRhdGEnKSBvbkxvYWREYXRhOiAoKG1vZGVsOiBhbnkpID0+IGFueSkgfCAoKG1vZGVsOiBhbnkpID0+IE9ic2VydmFibGU8YW55Pik7XG5cbiAgbW9kZWw6IGFueSA9IHt9O1xuXG4gIC8vIGJlZm9yZVNhdmU6IHJldHVybiBib29sZWFuXG4gIC8vIGFmdGVyU2F2ZVxuICAvLyBiZWZvcmVSZW1vdmU6IHJldHVybiBib29sZWFuXG4gIC8vIGFmdGVyUmVtb3ZlXG4gIC8vIGJlZm9yZUluc2VydDogOiByZXR1cm4gYm9vbGVhblxuICByZWFkb25seSBkZXRhaWxBY3Rpb25zOiBQb0dyaWRSb3dBY3Rpb25zID0ge307XG5cbiAgcHJpdmF0ZSBpbmRleEZvY3VzID0gMDtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfYWN0aW9uczogUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zID0ge307XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzO1xuICBwcml2YXRlIF9hdXRvUm91dGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbnRyb2xGaWVsZHM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfZGV0YWlsRmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2R1cGxpY2F0ZXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfZmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2tleXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfcGFnZUFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBw6fDtWVzIGRhIHDDoWdpbmEuXG4gICAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIHNldCBhY3Rpb25zKHZhbHVlOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5pc09iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IHt9O1xuXG4gICAgdGhpcy5fcGFnZUFjdGlvbnMgPSB0aGlzLmdldFBhZ2VBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fYWN0aW9ucyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtZHluYW1pYy1lZGl0YC5cbiAgICpcbiAgICogw4kgcG9zc2l2ZWwgY3VzdG9taXphciBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpc1xuICAgKiBvdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyXG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMgPSB7XG4gICAqICAgIGRldGFpbEFjdGlvbk5ldzogJ0luY2x1aXInLFxuICAgKiAgICBwYWdlQWN0aW9uQ2FuY2VsOiAnRGVzY2FydGFyJyxcbiAgICogICAgcGFnZUFjdGlvblNhdmU6ICdHcmF2YXInLFxuICAgKiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ0dyYXZhciBlIGluY2x1aXInLFxuICAgKiAgICByZWdpc3Rlck5vdEZvdW5kOiAnTmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG8uJyxcbiAgICogICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlOiAnSXRlbSBzYWx2byBjb20gc3VjZXNzby4nLFxuICAgKiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ0l0ZW0gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgKiAgICBzYXZlTm90aWZpY2F0aW9uV2FybmluZzogJ05lY2Vzc8OhcmlvIHByZWVuY2hlciBvIGZvcm11bMOhcmlvIGNvcnJldGFtZW50ZS4nXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtZWRpdFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tcGFnZS1keW5hbWljLWVkaXQ+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG5cbiAgICB0aGlzLl9wYWdlQWN0aW9ucyA9IHRoaXMuZ2V0UGFnZUFjdGlvbnModGhpcy5fYWN0aW9ucyk7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIFZhbGlkYXIgcm90YXMgbmEgbcOjbyBwb2lzIHNlIGV4aXN0aXIgdW1hIHJvdGEgJyoqJyBvIGNhdGNoIGRvIG5hdmlnYXRpb24gbsOjbyBmdW5jaW9uYS5cbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDcmlhIGF1dG9tYXRpY2FtZW50ZSBhcyByb3RhcyBkZSBlZGnDp8OjbyAobm92by9kdXBsaWNhdGUpIGUgZGV0YWxoZXMgY2FzbyBhcyBhw6fDtWVzXG4gICAqIGVzdGVqYW0gZGVmaW5pZGFzIG5hcyBhw6fDtWVzLlxuICAgKlxuICAgKiA+IFBhcmEgbyBjb3JyZXRvIGZ1bmNpb25hbWVudG8gbsOjbyBwb2RlIGhhdmVyIG5lbmh1bSByb3RhIGNvcmluZ2EgKGAqKmApIGVzcGVjaWZpY2FkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLXJvdXRlcicpIHNldCBhdXRvUm91dGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b1JvdXRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGF1dG9Sb3V0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9Sb3V0ZXI7XG4gIH1cblxuICAvKiogTGlzdGEgZG9zIGNhbXBvcyB1c2Fkb3MgbmEgdGFiZWxhIGUgYnVzY2EgYXZhbsOnYWRhLiAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyh2YWx1ZTogQXJyYXk8UG9QYWdlRHluYW1pY0VkaXRGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IFsuLi52YWx1ZV0gOiBbXTtcblxuICAgIHRoaXMuX2tleXMgPSB0aGlzLmdldEtleXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2R1cGxpY2F0ZXMgPSB0aGlzLmdldER1cGxpY2F0ZXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuXG4gICAgdGhpcy5fY29udHJvbEZpZWxkcyA9IHRoaXMuZ2V0Q29udHJvbEZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2RldGFpbEZpZWxkcyA9IHRoaXMuZ2V0RGV0YWlsRmllbGRzKHRoaXMuX2ZpZWxkcyk7XG4gIH1cblxuICBnZXQgZmllbGRzKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNFZGl0RmllbGQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHBvTm90aWZpY2F0aW9uOiBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0RpYWxvZ1NlcnZpY2U6IFBvRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNTZXJ2aWNlOiBQb1BhZ2VEeW5hbWljU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZERhdGFGcm9tQVBJKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRldGFpbEFjdGlvbk5ldygpIHtcbiAgICB0aGlzLmdyaWREZXRhaWwuaW5zZXJ0Um93KCk7XG4gIH1cblxuICBnZXQgZHVwbGljYXRlcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2R1cGxpY2F0ZXNdO1xuICB9XG5cbiAgZ2V0IGtleXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9rZXlzXTtcbiAgfVxuXG4gIGdldCBwYWdlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3BhZ2VBY3Rpb25zXTtcbiAgfVxuXG4gIGdldCBjb250cm9sRmllbGRzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sRmllbGRzO1xuICB9XG5cbiAgZ2V0IGRldGFpbEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGV0YWlsRmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21BUEkoKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlQXBpOiBzZXJ2aWNlQXBpRnJvbVJvdXRlLCBzZXJ2aWNlTWV0YWRhdGFBcGksIHNlcnZpY2VMb2FkQXBpIH0gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGE7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgY29uc3QgeyBkdXBsaWNhdGUgfSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICBjb25zdCBvbkxvYWQgPSBzZXJ2aWNlTG9hZEFwaSB8fCB0aGlzLm9uTG9hZDtcbiAgICB0aGlzLnNlcnZpY2VBcGkgPSBzZXJ2aWNlQXBpRnJvbVJvdXRlIHx8IHRoaXMuc2VydmljZUFwaTtcblxuICAgIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuY29uZmlnU2VydmljZUFwaSh7IGVuZHBvaW50OiB0aGlzLnNlcnZpY2VBcGksIG1ldGFkYXRhOiBzZXJ2aWNlTWV0YWRhdGFBcGkgfSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSQgPSB0aGlzLmdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGUsIGlkLCBvbkxvYWQpO1xuICAgIGNvbnN0IGRhdGEkID0gdGhpcy5sb2FkRGF0YShpZCwgZHVwbGljYXRlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbmNhdChtZXRhZGF0YSQsIGRhdGEkKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbChcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtICYmIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5kaXJ0eSkge1xuICAgICAgdGhpcy5wb0RpYWxvZ1NlcnZpY2UuY29uZmlybSh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubGl0ZXJhbHMuY2FuY2VsQ29uZmlybU1lc3NhZ2UsXG4gICAgICAgIHRpdGxlOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25DYW5jZWwsXG4gICAgICAgIGNvbmZpcm06IHRoaXMuZ29CYWNrLmJpbmQodGhpcywgYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nb0JhY2soYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VW5pcXVlS2V5KGl0ZW0pIHtcbiAgICBjb25zdCBrZXlzID0gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKGl0ZW0sIHRoaXMua2V5cyk7XG5cbiAgICByZXR1cm4gdmFsdWVzRnJvbU9iamVjdChrZXlzKS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcml2YXRlIGdvQmFjayhcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVDYW5jZWwoYWN0aW9uQmVmb3JlQ2FuY2VsKVxuICAgICAgICAuc3Vic2NyaWJlKChiZWZvcmVDYW5jZWxSZXN1bHQ6IFBvUGFnZUR5bmFtaWNFZGl0QmVmb3JlQ2FuY2VsKSA9PiB7XG4gICAgICAgICAgdGhpcy5leGVjdXRlQmFja0FjdGlvbihhY3Rpb25DYW5jZWwsIGJlZm9yZUNhbmNlbFJlc3VsdD8uYWxsb3dBY3Rpb24sIGJlZm9yZUNhbmNlbFJlc3VsdD8ubmV3VXJsKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlQmFja0FjdGlvbihcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWxsb3dBY3Rpb24/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnYWxsb3dBY3Rpb24nXSxcbiAgICBuZXdVcmw/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnbmV3VXJsJ11cbiAgKSB7XG4gICAgY29uc3QgaXNBbGxvd2VkQWN0aW9uID0gdHlwZW9mIGFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBhbGxvd0FjdGlvbiA6IHRydWU7XG5cbiAgICBpZiAoaXNBbGxvd2VkQWN0aW9uKSB7XG4gICAgICBpZiAoYWN0aW9uQ2FuY2VsID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGFjdGlvbkNhbmNlbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uQ2FuY2VsID09PSAnc3RyaW5nJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtuZXdVcmwgfHwgYWN0aW9uQ2FuY2VsXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY3Rpb25DYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWREYXRhKGlkLCBkdXBsaWNhdGU/KSB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IGR1cGxpY2F0ZSA/IEpTT04ucGFyc2UoZHVwbGljYXRlKSA6IHt9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmdldFJlc291cmNlKGlkKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5iZWZvcmVTZXRNb2RlbChyZXNwb25zZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhZ2VBY3Rpb25zID0gW107XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYmVmb3JlU2V0TW9kZWwocmVzcG9uc2U6IGFueSkge1xuICAgIGlmICghdGhpcy5vbkxvYWREYXRhKSB7XG4gICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25Mb2FkRGF0YUV4ZWN1dGlvbiA9IHRoaXMub25Mb2FkRGF0YShyZXNwb25zZSk7XG4gICAgY29uc3Qgb25Mb2FkRGF0YSQgPSBvbkxvYWREYXRhRXhlY3V0aW9uIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IG9uTG9hZERhdGFFeGVjdXRpb24gOiBvZihvbkxvYWREYXRhRXhlY3V0aW9uKTtcblxuICAgIG9uTG9hZERhdGEkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBjdXN0b21Nb2RlbCA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwgPSBjdXN0b21Nb2RlbDtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZDogVXJsT3JQb0N1c3RvbWl6YXRpb25GdW5jdGlvbikge1xuICAgIGlmIChvbkxvYWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFBvRHluYW1pY1BhZ2VPcHRpb25zKG9uTG9hZCkucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlUG9PcHRpb24gPT5cbiAgICAgICAgICB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmNoYW5nZU9yaWdpbmFsT3B0aW9uc1RvTmV3T3B0aW9ucyh0aGlzLCByZXNwb25zZVBvT3B0aW9uKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2w6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrYm94R3JvdXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBwby1jaGVja2JveC1ncm91cFtuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1gKTtcbiAgICBpZiAoY2hlY2tib3hHcm91cCkge1xuICAgICAgY29uc3QgY2hlY2tCb3hDb21wb25lbnQgPSBjaGVja2JveEdyb3VwLnF1ZXJ5U2VsZWN0b3IoJ3BvLWNoZWNrYm94W25nLXJlZmxlY3QtZGlzYWJsZWQ9ZmFsc2VdJyk7XG4gICAgICBjb25zdCBsYWJlbElucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gY2hlY2tCb3hDb21wb25lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5wby1jaGVja2JveC1vdXRsaW5lJyk7XG4gICAgICBpZiAobGFiZWxJbnB1dCkge1xuICAgICAgICBsYWJlbElucHV0LmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZGV4Rm9jdXMtLTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQ29udHJvbChjb250cm9sOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0ke2NvbnRyb2x9XWApO1xuICAgIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmIChpbnB1dEVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudCwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudDogRWxlbWVudCwgY29udHJvbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmFkaW9Db21wb25lbnQgPSBpbnB1dEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGBwby1yYWRpb1tuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1bbmctcmVmbGVjdC1kaXNhYmxlZD1mYWxzZV1gXG4gICAgKTtcbiAgICBpZiAocmFkaW9Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHJhZGlvSW5wdXQgPSByYWRpb0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgcmFkaW9JbnB1dC5mb2N1cygpO1xuICAgICAgcmFkaW9JbnB1dC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncG8tcmFkaW8tZm9jdXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRleEZvY3VzLS07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucz4ge1xuICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9uOiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMgPSB7XG4gICAgICBmaWVsZHM6IHRoaXMuZmllbGRzLFxuICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLFxuICAgICAgYnJlYWRjcnVtYjogdGhpcy5icmVhZGNydW1iLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGVcbiAgICB9O1xuXG4gICAgY29uc3QgcGFnZU9wdGlvblNjaGVtYTogUG9QYWdlRHluYW1pY09wdGlvbnNTY2hlbWE8UG9QYWdlRHluYW1pY0VkaXRPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWVsZHMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGU6IHN0cmluZywgcGFyYW1JZDogc3RyaW5nIHwgbnVtYmVyLCBvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pIHtcbiAgICBjb25zdCB0eXBlTWV0YWRhdGEgPSBwYXJhbUlkID8gJ2VkaXQnIDogJ2NyZWF0ZSc7XG5cbiAgICBpZiAoc2VydmljZUFwaUZyb21Sb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZ2V0TWV0YWRhdGE8UG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YT4odHlwZU1ldGFkYXRhKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b1JvdXRlciA9IHJlc3BvbnNlLmF1dG9Sb3V0ZXIgfHwgdGhpcy5hdXRvUm91dGVyO1xuICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3BvbnNlLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zO1xuICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IHJlc3BvbnNlLmJyZWFkY3J1bWIgfHwgdGhpcy5icmVhZGNydW1iO1xuICAgICAgICAgIHRoaXMuZmllbGRzID0gcmVzcG9uc2UuZmllbGRzIHx8IHRoaXMuZmllbGRzO1xuICAgICAgICAgIHRoaXMudGl0bGUgPSByZXNwb25zZS50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRyb2xzQXNEaXJ0eUFuZEZvY3VzRmlyc3RJbnZhbGlkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXhGb2N1cyA9IDA7XG4gICAgY29uc3QgY29udHJvbHMgPSBPYmplY3Qua2V5cyh0aGlzLmR5bmFtaWNGb3JtLmZvcm0uY29udHJvbHMpO1xuXG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB0aGlzLmluZGV4Rm9jdXMgPT09IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0NvbnRyb2woY29udHJvbCk7XG4gICAgICAgIHRoaXMuaW5kZXhGb2N1cysrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwodGhpcy5tb2RlbCwgcGF0aCk7XG5cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVuaXF1ZUtleShpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ10gPyB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVybChpdGVtOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaXF1ZUtleSA9IHRoaXMuZm9ybWF0VW5pcXVlS2V5KGl0ZW0pO1xuXG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvOmlkL2csIHVuaXF1ZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTYXZlKHNhdmVSZWRpcmVjdFBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHNhdmVPcGVyYXRpb24kID0gdGhpcy5zYXZlT3BlcmF0aW9uKCk7XG5cbiAgICByZXR1cm4gc2F2ZU9wZXJhdGlvbiQucGlwZShcbiAgICAgIHRhcChtZXNzYWdlID0+IHtcbiAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oc2F2ZVJlZGlyZWN0UGF0aCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKG5ld1Jlc291cmNlOiBhbnkgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgbmV3UmVzb3VyY2UgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5rZXlzKG5ld1Jlc291cmNlKS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGR5bmFtaWNOZ0Zvcm0gPSB0aGlzLmR5bmFtaWNGb3JtLmZvcm07XG5cbiAgICAgIHJlbW92ZUtleXNQcm9wZXJ0aWVzKHRoaXMua2V5cywgbmV3UmVzb3VyY2UpO1xuXG4gICAgICB0aGlzLm1vZGVsID0geyAuLi50aGlzLm1vZGVsLCAuLi5uZXdSZXNvdXJjZSB9O1xuXG4gICAgICBkeW5hbWljTmdGb3JtLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVPcGVyYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLm1hcmtDb250cm9sc0FzRGlydHlBbmRGb2N1c0ZpcnN0SW52YWxpZCgpO1xuICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmcpO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtSWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcbiAgICBjb25zdCBzdWNjZXNzTXNnID0gcGFyYW1JZFxuICAgICAgPyB0aGlzLmxpdGVyYWxzLnNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlXG4gICAgICA6IHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlO1xuXG4gICAgY29uc3Qgc2F2ZU9wZXJhdGlvbiQgPSBwYXJhbUlkXG4gICAgICA/IHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UudXBkYXRlUmVzb3VyY2UocGFyYW1JZCwgdGhpcy5tb2RlbClcbiAgICAgIDogdGhpcy5wb1BhZ2VEeW5hbWljU2VydmljZS5jcmVhdGVSZXNvdXJjZSh0aGlzLm1vZGVsKTtcblxuICAgIHJldHVybiBzYXZlT3BlcmF0aW9uJC5waXBlKG1hcCgoKSA9PiBzdWNjZXNzTXNnKSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmUoYWN0aW9uOiBTYXZlQWN0aW9uLCBiZWZvcmU6ICdiZWZvcmVTYXZlJyB8ICdiZWZvcmVTYXZlTmV3JyA9ICdiZWZvcmVTYXZlJykge1xuICAgIGNvbnN0IGV4ZWN1dGVPcGVyYXRpb24gPSB7XG4gICAgICBiZWZvcmVTYXZlOiB0aGlzLmV4ZWN1dGVTYXZlLmJpbmQodGhpcyksXG4gICAgICBiZWZvcmVTYXZlTmV3OiB0aGlzLmV4ZWN1dGVTYXZlTmV3LmJpbmQodGhpcylcbiAgICB9O1xuXG4gICAgY29uc3QgdW5pcXVlS2V5ID0gdGhpcy5yZXNvbHZlVW5pcXVlS2V5KHRoaXMubW9kZWwpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2VbYmVmb3JlXSh0aGlzLmFjdGlvbnNbYmVmb3JlXSwgdW5pcXVlS2V5LCB7IC4uLnRoaXMubW9kZWwgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHJldHVybkJlZm9yZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdBY3Rpb24gPSByZXR1cm5CZWZvcmU/Lm5ld1VybCA/PyBhY3Rpb247XG4gICAgICAgICAgICBjb25zdCBhbGxvd0FjdGlvbiA9IHJldHVybkJlZm9yZT8uYWxsb3dBY3Rpb24gPz8gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChyZXR1cm5CZWZvcmU/LnJlc291cmNlKTtcblxuICAgICAgICAgICAgaWYgKCFhbGxvd0FjdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld0FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGVPcGVyYXRpb25bYmVmb3JlXShuZXdBY3Rpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3QWN0aW9uKHsgLi4udGhpcy5tb2RlbCB9LCB1bmlxdWVLZXkpO1xuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU2F2ZU5ldyhwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbUlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XG4gICAgY29uc3Qgc2F2ZU9wZXJhdGlvbiQgPSB0aGlzLnNhdmVPcGVyYXRpb24oKTtcblxuICAgIHJldHVybiBzYXZlT3BlcmF0aW9uJC5waXBlKFxuICAgICAgdGFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAocGFyYW1JZCkge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2VzcyhtZXNzYWdlKTtcblxuICAgICAgICAgIHRoaXMubmF2aWdhdGVUbyhwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3MobWVzc2FnZSk7XG5cbiAgICAgICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybS5mb3JtLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5c0J5RmllbGRzKGZpZWxkczogQXJyYXk8YW55PiA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQua2V5ID09PSB0cnVlKS5tYXAoZmllbGQgPT4gZmllbGQucHJvcGVydHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRmllbGRzKGZpZWxkczogQXJyYXk8YW55PiA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQudHlwZSAhPT0gJ2RldGFpbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXRhaWxGaWVsZHMoZmllbGRzOiBBcnJheTxhbnk+ID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC50eXBlID09PSAnZGV0YWlsJyk7XG4gIH1cblxuICBwcml2YXRlIGdldER1cGxpY2F0ZXNCeUZpZWxkcyhmaWVsZHM6IEFycmF5PGFueT4gPSBbXSkge1xuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLmR1cGxpY2F0ZSA9PT0gdHJ1ZSkubWFwKGZpZWxkID0+IGZpZWxkLnByb3BlcnR5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFnZUFjdGlvbnMoYWN0aW9uczogUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zID0ge30pOiBBcnJheTxQb1BhZ2VBY3Rpb24+IHtcbiAgICBjb25zdCBwYWdlQWN0aW9ucyA9IFt7IGxhYmVsOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25TYXZlLCBhY3Rpb246IHRoaXMuc2F2ZS5iaW5kKHRoaXMsIGFjdGlvbnMuc2F2ZSkgfV07XG5cbiAgICBpZiAoYWN0aW9ucy5zYXZlTmV3KSB7XG4gICAgICBwYWdlQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvblNhdmVOZXcsXG4gICAgICAgIGFjdGlvbjogdGhpcy5zYXZlLmJpbmQodGhpcywgYWN0aW9ucy5zYXZlTmV3LCAnYmVmb3JlU2F2ZU5ldycpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9ucy5jYW5jZWwgPT09IHVuZGVmaW5lZCB8fCBhY3Rpb25zLmNhbmNlbCkge1xuICAgICAgcGFnZUFjdGlvbnMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25DYW5jZWwsXG4gICAgICAgIGFjdGlvbjogdGhpcy5jYW5jZWwuYmluZCh0aGlzLCBhY3Rpb25zLmNhbmNlbCwgdGhpcy5hY3Rpb25zLmJlZm9yZUNhbmNlbClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYWdlQWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9XG59XG4iLCI8cG8tcGFnZS1kZWZhdWx0IFtwLWFjdGlvbnNdPVwicGFnZUFjdGlvbnNcIiBbcC1icmVhZGNydW1iXT1cImJyZWFkY3J1bWJcIiBbcC10aXRsZV09XCJ0aXRsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWw7IHRoZW4gZm9ybUZpZWxkc1RlbXBsYXRlOyBlbHNlIHJlZ2lzdGVyTm90Rm91bmRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbjwvcG8tcGFnZS1kZWZhdWx0PlxuXG48bmctdGVtcGxhdGUgI3JlZ2lzdGVyTm90Rm91bmRUZW1wbGF0ZT5cbiAgPHBvLXdpZGdldD5cbiAgICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1pbmZvXCI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+XG4gICAgICB7eyBsaXRlcmFscy5yZWdpc3Rlck5vdEZvdW5kIH19XG4gICAgPC9zcGFuPlxuICA8L3BvLXdpZGdldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9ybUZpZWxkc1RlbXBsYXRlPlxuICA8cG8tZHluYW1pYy1mb3JtICNkeW5hbWljRm9ybSBbcC1maWVsZHNdPVwiY29udHJvbEZpZWxkc1wiIFtwLXZhbHVlXT1cIm1vZGVsXCI+IDwvcG8tZHluYW1pYy1mb3JtPlxuXG4gIDxkaXYgKm5nSWY9XCJkZXRhaWxGaWVsZHMubGVuZ3RoID4gMFwiIGNsYXNzPVwicG8tc20tMTJcIj5cbiAgICA8cG8tZGl2aWRlciBbcC1sYWJlbF09XCJkZXRhaWxGaWVsZHNbMF0uZGl2aWRlclwiPjwvcG8tZGl2aWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1yb3cgcG8tbWItMlwiPlxuICAgICAgPHBvLWJ1dHRvbiBbcC1sYWJlbF09XCJsaXRlcmFscy5kZXRhaWxBY3Rpb25OZXdcIiAocC1jbGljayk9XCJkZXRhaWxBY3Rpb25OZXcoKVwiPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHBvLWdyaWRcbiAgICAgICNncmlkRGV0YWlsXG4gICAgICBbcC1yb3ctYWN0aW9uc109XCJkZXRhaWxBY3Rpb25zXCJcbiAgICAgIFtwLWNvbHVtbnNdPVwiZGV0YWlsRmllbGRzWzBdLmRldGFpbC5jb2x1bW5zXCJcbiAgICAgIFtwLWRhdGFdPVwibW9kZWxbZGV0YWlsRmllbGRzWzBdLnByb3BlcnR5XVwiXG4gICAgPlxuICAgIDwvcG8tZ3JpZD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -4494,10 +4494,12 @@ class PoPageDynamicEditComponent {
4494
4494
  }));
4495
4495
  }
4496
4496
  updateModel(newResource = {}) {
4497
- const dynamicNgForm = this.dynamicForm.form;
4498
- removeKeysProperties(this.keys, newResource);
4499
- this.model = { ...this.model, ...newResource };
4500
- dynamicNgForm.form.patchValue(this.model);
4497
+ if (typeof newResource !== 'undefined' && Object.keys(newResource).length !== 0) {
4498
+ const dynamicNgForm = this.dynamicForm.form;
4499
+ removeKeysProperties(this.keys, newResource);
4500
+ this.model = { ...this.model, ...newResource };
4501
+ dynamicNgForm.form.patchValue(this.model);
4502
+ }
4501
4503
  }
4502
4504
  saveOperation() {
4503
4505
  if (this.dynamicForm.form.invalid) {