- ✓ Merge complete — {mergeResult.violations_reassigned} violation{mergeResult.violations_reassigned !== 1 ? 's' : ''} reassigned
- to {employee.name}. The duplicate record has been removed.
-
- ) : (
- <>
-
- ⚠ This will reassign all violations from the selected employee into{' '}
- {employee.name}, then permanently delete the duplicate record.
- This cannot be undone.
-
- );
-}
+aW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7CmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7CmltcG9ydCB7IHZpb2xhdGlvbkRhdGEsIHZpb2xhdGlvbkdyb3VwcyB9IGZyb20gJy4uL2RhdGEvdmlvbGF0aW9ucyc7CmltcG9ydCB1c2VFbXBsb3llZUludGVsbGlnZW5jZSBmcm9tICcuLi9ob29rcy91c2VFbXBsb3llZUludGVsbGlnZW5jZSc7CmltcG9ydCBDcGFzQmFkZ2UgZnJvbSAnLi9DcGFzQmFkZ2UnOwppbXBvcnQgVGllcldhcm5pbmcgZnJvbSAnLi9UaWVyV2FybmluZyc7CmltcG9ydCBWaW9sYXRpb25IaXN0b3J5IGZyb20gJy4vVmlvbGF0aW9uSGlzdG9yeSc7CmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnLi9Ub2FzdFByb3ZpZGVyJzsKaW1wb3J0IHsgREVQQVJUTUVOVFMgfSBmcm9tICcuLi9kYXRhL2RlcGFydG1lbnRzJzsKCmNvbnN0IHMgPSB7CiAgY29udGVudDogICAgICB7IHBhZGRpbmc6ICczMnB4IDQwcHgnLCBiYWNrZ3JvdW5kOiAnIzExMTIxNycsIGJvcmRlclJhZGl1czogJzEwcHgnLCBjb2xvcjogJyNmOGY5ZmEnIH0sCiAgc2VjdGlvbjogICAgICB7IGJhY2tncm91bmQ6ICcjMTgxOTI0JywgYm9yZGVyTGVmdDogJzRweCBzb2xpZCAjZDRhZjM3JywgcGFkZGluZzogJzIwcHgnLCBtYXJnaW5Cb3R0b206ICczMHB4JywgYm9yZGVyUmFkaXVzOiAnNHB4JywgYm9yZGVyOiAnMXB4IHNvbGlkICMyYTJiM2EnIH0sCiAgc2VjdGlvblRpdGxlOiB7IGNvbG9yOiAnI2Y4ZjlmYScsIGZvbnRTaXplOiAnMjBweCcsIG1hcmdpbkJvdHRvbTogJzE1cHgnLCBmb250V2VpZ2h0OiA3MDAgfSwKICBncmlkOiAgICAgICAgIHsgZGlzcGxheTogJ2dyaWQnLCBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjUwcHgsIDFmcikpJywgZ2FwOiAnMTVweCcsIG1hcmdpblRvcDogJzE1cHgnIH0sCiAgaXRlbTogICAgICAgICB7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbid9LAogIGxhYmVsOiAgICAgICAgeyBmb250V2VpZ2h0OiA2MDAsIGNvbG9yOiAnI2U1ZTdmMScsIG1hcmdpbkJvdHRvbTogJzVweCcsIGZvbnRTaXplOiAnMTNweCcgfSwKICBpbnB1dDogICAgICAgIHsgcGFkZGluZzogJzEwcHgnLCBib3JkZXI6ICcxcHggc29saWQgIzMzMzU0NCcsIGJvcmRlclJhZGl1czogJzRweCcsIGZvbnRTaXplOiAnMTRweCcsIGZvbnRGYW1pbHk6ICdpbmhlcml0JywgYmFja2dyb3VuZDogJyMwNTA2MDgnLCBjb2xvcjogJyNmOGY5ZmEnIH0sCiAgZnVsbENvbDogICAgICB7IGdyaWRDb2x1bW46ICcxIC8gLTEnIH0sCiAgY29udGV4dEJveDogICB7IGJhY2tncm91bmQ6ICcjMTQxNjIzJywgYm9yZGVyOiAnMXB4IHNvbGlkICMzMzM1NDQnLCBib3JkZXJSYWRpdXM6ICc0cHgnLCBwYWRkaW5nOiAnMTBweCcsIGZvbnRTaXplOiAnMTJweCcsIGNvbG9yOiAnI2QxZDNlMCcsIG1hcmdpblRvcDogJzRweCcgfSwKICByZXBlYXRCYWRnZTogIHsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsIG1hcmdpbkxlZnQ6ICc4cHgnLCBwYWRkaW5nOiAnMXB4IDdweCcsIGJvcmRlclJhZGl1czogJzEwcHgnLCBmb250U2l6ZTogJzExcHgnLCBmb250V2VpZ2h0OiA3MDAsIGJhY2tncm91bmQ6ICcjM2IyZTAwJywgY29sb3I6ICcjZmZkNjY2JywgYm9yZGVyOiAnMXB4IHNvbGlkICNkNGFmMzcnIH0sCiAgcmVwZWF0V2FybjogICB7IGJhY2tncm91bmQ6ICcjM2IyZTAwJywgYm9yZGVyOiAnMXB4IHNvbGlkICNkNGFmMzcnLCBib3JkZXJSYWRpdXM6ICc0cHgnLCBwYWRkaW5nOiAnOHB4IDEycHgnLCBtYXJnaW5Ub3A6ICc2cHgnLCBmb250U2l6ZTogJzEycHgnLCBjb2xvcjogJyNmZmRmOGEnIH0sCiAgcG9pbnRCb3g6ICAgICB7IGJhY2tncm91bmQ6ICcjMTgxMjAwJywgYm9yZGVyOiAnMnB4IHNvbGlkICNkNGFmMzcnLCBwYWRkaW5nOiAnMTVweCcsIGJvcmRlclJhZGl1czogJzZweCcsIG1hcmdpblRvcDogJzE1cHgnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH0sCiAgcG9pbnRWYWx1ZTogICB7IGZvbnRTaXplOiAnMjRweCcsIGZvbnRXZWlnaHQ6ICdib2xkJywgY29sb3I6ICcjZmZkNjY2JywgbWFyZ2luOiAnMTBweCAwJyB9LAogIHNjb3JlUm93OiAgICAgeyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICcxMnB4JywgbWFyZ2luQm90dG9tOiAnMTRweCcsIGZsZXhXcmFwOiAnd3JhcCcgfSwKICBidG5Sb3c6ICAgICAgIHsgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICcxNXB4JywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLCBtYXJnaW5Ub3A6ICczMHB4JywgZmxleFdyYXA6ICd3cmFwJyB9LAogIGJ0blByaW1hcnk6ICAgeyBwYWRkaW5nOiAnMTVweCA0MHB4JywgZm9udFNpemU6ICcxNnB4JywgZm9udFdlaWdodDogNjAwLCBib3JkZXI6ICdub25lJywgYm9yZGVyUmFkaXVzOiAnNnB4JywgY3Vyc29yOiAncG9pbnRlcicsIGJhY2tncm91bmQ6ICdsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZDRhZjM3IDAlLCAjZmZkZjhhIDEwMCUpJywgY29sb3I6ICcjMDAwJywgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScgfSwKICBidG5QZGY6ICAgICAgIHsgcGFkZGluZzogJzE1cHggNDBweCcsIGZvbnRTaXplOiAnMTZweCcsIGZvbnRXZWlnaHQ6IDYwMCwgYm9yZGVyOiAnbm9uZScsIGJvcmRlclJhZGl1czogJzZweCcsIGN1cnNvcjogJ3BvaW50ZXInLCBiYWNrZ3JvdW5kOiAnbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2U3NGMzYyAwJSwgI2MwMzkyYiAxMDAlKScsIGNvbG9yOiAnd2hpdGUnLCB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJyB9LAogIGJ0blNlY29uZGFyeTogeyBwYWRkaW5nOiAnMTVweCA0MHB4JywgZm9udFNpemU6ICcxNnB4JywgZm9udFdlaWdodDogNjAwLCBib3JkZXI6ICcxcHggc29saWQgIzMzMzU0NCcsIGJvcmRlclJhZGl1czogJzZweCcsIGN1cnNvcjogJ3BvaW50ZXInLCBiYWNrZ3JvdW5kOiAnIzA1MDYwOCcsIGNvbG9yOiAnI2Y4ZjlmYScsIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnIH0sCiAgbm90ZTogICAgICAgICB7IGJhY2tncm91bmQ6ICcjMTQxNjIzJywgYm9yZGVyTGVmdDogJzRweCBzb2xpZCAjMjE5NkYzJywgcGFkZGluZzogJzE1cHgnLCBtYXJnaW46ICcyMHB4IDAnLCBib3JkZXJSYWRpdXM6ICc0cHgnLCBmb250U2l6ZTogJzEzcHgnLCBjb2xvcjogJyNkMWQzZTAnIH0sCiAgYWNrU2VjdGlvbjogICB7IGJhY2tncm91bmQ6ICcjMTgxOTI0JywgYm9yZGVyTGVmdDogJzRweCBzb2xpZCAjMjE5NkYzJywgcGFkZGluZzogJzIwcHgnLCBtYXJnaW5Cb3R0b206ICczMHB4JywgYm9yZGVyUmFkaXVzOiAnNHB4JywgYm9yZGVyOiAnMXB4IHNvbGlkICMyYTJiM2EnIH0sCiAgYWNrSGludDogICAgICB7IGZvbnRTaXplOiAnMTJweCcsIGNvbG9yOiAnIzljYTBiOCcsIG1hcmdpblRvcDogJzRweCcsIGZvbnRTdHlsZTogJ2l0YWxpYycgfSwKfTsKCmNvbnN0IEVNUFRZX0ZPUk0gPSB7CiAgZW1wbG95ZWVJZDogJycsIGVtcGxveWVlTmFtZTogJycsIGRlcGFydG1lbnQ6ICcnLCBzdXBlcnZpc29yOiAnJywgd2l0bmVzc05hbWU6ICcnLAogIHZpb2xhdGlvblR5cGU6ICcnLCBpbmNpZGVudERhdGU6ICcnLCBpbmNpZGVudFRpbWU6ICcnLAogIGFtb3VudDogJycsIG1pbnV0ZXNMYXRlOiAnJywgbG9jYXRpb246ICcnLCBhZGRpdGlvbmFsRGV0YWlsczogJycsIHBvaW50czogMSwKICBhY2tub3dsZWRnZWRCeTogJycsIGFja25vd2xlZGdlZERhdGU6ICcnLAp9OwoKZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVmlvbGF0aW9uRm9ybSgpIHsKICBjb25zdCBbZW1wbG95ZWVzLCAgICBzZXRFbXBsb3llZXNdICAgID0gdXNlU3RhdGUoW10pOwogIGNvbnN0IFtmb3JtLCAgICAgICAgIHNldEZvcm1dICAgICAgICAgPSB1c2VTdGF0ZShFTVBUWV9GT1JNKTsKICBjb25zdCBbdmlvbGF0aW9uLCAgICBzZXRWaW9sYXRpb25dICAgID0gdXNlU3RhdGUobnVsbCk7CiAgY29uc3QgW3N0YXR1cywgICAgICAgc2V0U3RhdHVzXSAgICAgICA9IHVzZVN0YXRlKG51bGwpOwogIGNvbnN0IFtsYXN0VmlvbElkLCAgIHNldExhc3RWaW9sSWRdICAgPSB1c2VTdGF0ZShudWxsKTsKICBjb25zdCBbcGRmTG9hZGluZywgICBzZXRQZGZMb2FkaW5nXSAgID0gdXNlU3RhdGUoZmFsc2UpOwoKICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KCk7CiAgY29uc3QgaW50ZWwgPSB1c2VFbXBsb3llZUludGVsbGlnZW5jZShmb3JtLmVtcGxveWVlSWQgfHwgbnVsbCk7CgogIHVzZUVmZmVjdCgoKSA9PiB7CiAgICBheGlvcy5nZXQoJy9hcGkvZW1wbG95ZWVzJykudGhlbihyID0+IHNldEVtcGxveWVlcyhyLmRhdGEpKS5jYXRjaCgoKSA9PiB7fSk7CiAgfSwgW10pOwoKICB1c2VFZmZlY3QoKCkgPT4gewogICAgaWYgKCF2aW9sYXRpb24gfHwgIWZvcm0udmlvbGF0aW9uVHlwZSkgcmV0dXJuOwogICAgY29uc3QgYWxsVGltZSA9IGludGVsLmNvdW50c0FsbFRpbWVbZm9ybS52aW9sYXRpb25UeXBlXTsKICAgIGlmIChhbGxUaW1lICYmIGFsbFRpbWUuY291bnQgPj0gMSAmJiB2aW9sYXRpb24ubWluUG9pbnRzICE9PSB2aW9sYXRpb24ubWF4UG9pbnRzKSB7CiAgICAgIHNldEZvcm0ocHJldiA9PiAoeyAuLi5wcmV2LCBwb2ludHM6IHZpb2xhdGlvbi5tYXhQb2ludHMgfSkpOwogICAgfSBlbHNlIHsKICAgICAgc2V0Rm9ybShwcmV2ID0+ICh7IC4uLnByZXYsIHBvaW50czogdmlvbGF0aW9uLm1pblBvaW50cyB9KSk7CiAgICB9CiAgfSwgW2Zvcm0udmlvbGF0aW9uVHlwZSwgdmlvbGF0aW9uLCBpbnRlbC5jb3VudHNBbGxUaW1lXSk7CgogIGNvbnN0IGhhbmRsZUVtcGxveWVlU2VsZWN0ID0gZSA9PiB7CiAgICBjb25zdCBlbXAgPSBlbXBsb3llZXMuZmluZCh4ID0+IHguaWQgPT09IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlKSk7CiAgICBpZiAoIWVtcCkgcmV0dXJuOwogICAgc2V0Rm9ybShwcmV2ID0+ICh7IC4uLnByZXYsIGVtcGxveWVlSWQ6IGVtcC5pZCwgZW1wbG95ZWVOYW1lOiBlbXAubmFtZSwgZGVwYXJ0bWVudDogZW1wLmRlcGFydG1lbnQgfHwgJycsIHN1cGVydmlzb3I6IGVtcC5zdXBlcnZpc29yIHx8ICcnIH0pKTsKICB9OwoKICBjb25zdCBoYW5kbGVWaW9sYXRpb25DaGFuZ2UgPSBlID0+IHsKICAgIGNvbnN0IGtleSA9IGUudGFyZ2V0LnZhbHVlOwogICAgY29uc3QgdiAgID0gdmlvbGF0aW9uRGF0YVtrZXldIHx8IG51bGw7CiAgICBzZXRWaW9sYXRpb24odik7CiAgICBzZXRGb3JtKHByZXYgPT4gKHsgLi4ucHJldiwgdmlvbGF0aW9uVHlwZToga2V5LCBwb2ludHM6IHYgPyB2Lm1pblBvaW50cyA6IDEgfSkpOwogIH07CgogIGNvbnN0IGhhbmRsZUNoYW5nZSA9IGUgPT4gc2V0Rm9ybShwcmV2ID0+ICh7IC4uLnByZXYsIFtlLnRhcmdldC5uYW1lXTogZS50YXJnZXQudmFsdWUgfSkpOwoKICBjb25zdCBoYW5kbGVTdWJtaXQgPSBhc3luYyBlID0+IHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICghZm9ybS52aW9sYXRpb25UeXBlKSB7IHRvYXN0Lndhcm5pbmcoJ1BsZWFzZSBzZWxlY3QgYSB2aW9sYXRpb24gdHlwZS4nKTsgcmV0dXJuOyB9CiAgICBpZiAoIWZvcm0uZW1wbG95ZWVOYW1lKSAgeyB0b2FzdC53YXJuaW5nKCdQbGVhc2UgZW50ZXIgYW4gZW1wbG95ZWUgbmFtZS4nKTsgcmV0dXJuOyB9CiAgICB0cnkgewogICAgICBjb25zdCBlbXBSZXMgICAgID0gYXdhaXQgYXhpb3MucG9zdCgnL2FwaS9lbXBsb3llZXMnLCB7IG5hbWU6IGZvcm0uZW1wbG95ZWVOYW1lLCBkZXBhcnRtZW50OiBmb3JtLmRlcGFydG1lbnQsIHN1cGVydmlzb3I6IGZvcm0uc3VwZXJ2aXNvciB9KTsKICAgICAgY29uc3QgZW1wbG95ZWVJZCA9IGVtcFJlcy5kYXRhLmlkOwogICAgICBjb25zdCB2aW9sUmVzICAgID0gYXdhaXQgYXhpb3MucG9zdCgnL2FwaS92aW9sYXRpb25zJywgewogICAgICAgIGVtcGxveWVlX2lkOiAgICBlbXBsb3llZUlkLAogICAgICAgIHZpb2xhdGlvbl90eXBlOiBmb3JtLnZpb2xhdGlvblR5cGUsCiAgICAgICAgdmlvbGF0aW9uX25hbWU6IHZpb2xhdGlvbj8ubmFtZSB8fCBmb3JtLnZpb2xhdGlvblR5cGUsCiAgICAgICAgY2F0ZWdvcnk6ICAgICAgIHZpb2xhdGlvbj8uY2F0ZWdvcnkgfHwgJ0dlbmVyYWwnLAogICAgICAgIHBvaW50czogICAgICAgICBwYXJzZUludChmb3JtLnBvaW50cyksCiAgICAgICAgaW5jaWRlbnRfZGF0ZTogIGZvcm0uaW5jaWRlbnREYXRlLAogICAgICAgIGluY2lkZW50X3RpbWU6ICBmb3JtLmluY2lkZW50VGltZSAgfHwgbnVsbCwKICAgICAgICBsb2NhdGlvbjogICAgICAgZm9ybS5sb2NhdGlvbiAgICAgICB8fCBudWxsLAogICAgICAgIGRldGFpbHM6ICAgICAgICBmb3JtLmFkZGl0aW9uYWxEZXRhaWxzIHx8IG51bGwsCiAgICAgICAgd2l0bmVzc19uYW1lOiAgIGZvcm0ud2l0bmVzc05hbWUgICAgfHwgbnVsbCwKICAgICAgICBhY2tub3dsZWRnZWRfYnk6ICAgZm9ybS5hY2tub3dsZWRnZWRCeSAgIHx8IG51bGwsCiAgICAgICAgYWNrbm93bGVkZ2VkX2RhdGU6IGZvcm0uYWNrbm93bGVkZ2VkRGF0ZSB8fCBudWxsLAogICAgICB9KTsKCiAgICAgIGNvbnN0IG5ld0lkID0gdmlvbFJlcy5kYXRhLmlkOwogICAgICBzZXRMYXN0VmlvbElkKG5ld0lkKTsKCiAgICAgIGNvbnN0IGVtcExpc3QgPSBhd2FpdCBheGlvcy5nZXQoJy9hcGkvZW1wbG95ZWVzJyk7CiAgICAgIHNldEVtcGxveWVlcyhlbXBMaXN0LmRhdGEpOwoKICAgICAgdG9hc3Quc3VjY2VzcyhgVmlvbGF0aW9uICMke25ld0lkfSByZWNvcmRlZCDigJQgY2xpY2sgRG93bmxvYWQgUERGIHRvIHNhdmUgdGhlIGRvY3VtZW50LmApOwogICAgICBzZXRTdGF0dXMoeyBvazogdHJ1ZSwgbXNnOiBg4pyTIFZpb2xhdGlvbiAjJHtuZXdJZH0gcmVjb3JkZWQg4oCUIGNsaWNrIERvd25sb2FkIFBERiB0byBzYXZlIHRoZSBkb2N1bWVudC5gIH0pOwogICAgICBzZXRGb3JtKEVNUFRZX0ZPUk0pOwogICAgICBzZXRWaW9sYXRpb24obnVsbCk7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgY29uc3QgbXNnID0gZXJyLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCBlcnIubWVzc2FnZTsKICAgICAgdG9hc3QuZXJyb3IoYEZhaWxlZCB0byBzdWJtaXQ6ICR7bXNnfWApOwogICAgICBzZXRTdGF0dXMoeyBvazogZmFsc2UsIG1zZzogJ+KclyBFcnJvcjogJyArIG1zZyB9KTsKICAgIH0KICB9OwoKICBjb25zdCBoYW5kbGVEb3dubG9hZFBkZiA9IGFzeW5jICgpID0+IHsKICAgIGlmICghbGFzdFZpb2xJZCkgcmV0dXJuOwogICAgc2V0UGRmTG9hZGluZyh0cnVlKTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGAvYXBpL3Zpb2xhdGlvbnMvJHtsYXN0VmlvbElkfS9wZGZgLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pOwogICAgICBjb25zdCB1cmwgICAgICA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KSk7CiAgICAgIGNvbnN0IGxpbmsgICAgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBsaW5rLmhyZWYgICAgICA9IHVybDsKICAgICAgbGluay5kb3dubG9hZCAgPSBgQ1BBU19WaW9sYXRpb25fJHtsYXN0VmlvbElkfS5wZGZgOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOwogICAgICBsaW5rLmNsaWNrKCk7CiAgICAgIGxpbmsucmVtb3ZlKCk7CiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7CiAgICAgIHRvYXN0LnN1Y2Nlc3MoJ1BERiBkb3dubG9hZGVkIHN1Y2Nlc3NmdWxseS4nKTsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICB0b2FzdC5lcnJvcignUERGIGdlbmVyYXRpb24gZmFpbGVkOiAnICsgZXJyLm1lc3NhZ2UpOwogICAgfSBmaW5hbGx5IHsKICAgICAgc2V0UGRmTG9hZGluZyhmYWxzZSk7CiAgICB9CiAgfTsKCiAgY29uc3Qgc2hvd0ZpZWxkICAgID0gZiAgID0+IHZpb2xhdGlvbj8uZmllbGRzPy5pbmNsdWRlcyhmKTsKICBjb25zdCBwcmlvckNvdW50OTAgPSBrZXkgPT4gaW50ZWwuY291bnRzOTBba2V5XSB8fCAwOwogIGNvbnN0IGlzUmVwZWF0ICAgICA9IGtleSA9PiAoaW50ZWwuY291bnRzQWxsVGltZVtrZXldPy5jb3VudCB8fCAwKSA+PSAxOwoKICByZXR1cm4gKAogICAgPGRpdiBzdHlsZT17cy5jb250ZW50fT4KCiAgICAgIDxkaXYgc3R5bGU9e3Muc2VjdGlvbn0+CiAgICAgICAgPGgyIHN0eWxlPXtzLnNlY3Rpb25UaXRsZX0+RW1wbG95ZWUgSW5mb3JtYXRpb248L2gyPgoKICAgICAgICB7aW50ZWwuc2NvcmUgJiYgZm9ybS5lbXBsb3llZUlkICYmICgKICAgICAgICAgIDxkaXYgc3R5bGU9e3Muc2NvcmVSb3d9PgogICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzEzcHgnLCBjb2xvcjogJyNkMWQzZTAnLCBmb250V2VpZ2h0OiA2MDAgfX0+Q3VycmVudCBTdGFuZGluZzo8L3NwYW4+CiAgICAgICAgICAgIDxDcGFzQmFkZ2UgcG9pbnRzPXtpbnRlbC5zY29yZS5hY3RpdmVfcG9pbnRzfSAvPgogICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzEycHgnLCBjb2xvcjogJyM5Y2EwYjgnIH19PgogICAgICAgICAgICAgIHtpbnRlbC5zY29yZS52aW9sYXRpb25fY291bnR9IHZpb2xhdGlvbntpbnRlbC5zY29yZS52aW9sYXRpb25fY291bnQgIT09IDEgPyAncycgOiAnJ30gaW4gbGFzdCA5MCBkYXlzCiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICl9CgogICAgICAgIHtlbXBsb3llZXMubGVuZ3RoID4gMCAmJiAoCiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogJzEycHgnIH19PgogICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3MubGFiZWx9PlF1aWNrLVNlbGVjdCBFeGlzdGluZyBFbXBsb3llZTo8L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0IHN0eWxlPXtzLmlucHV0fSBvbkNoYW5nZT17aGFuZGxlRW1wbG95ZWVTZWxlY3R9IHZhbHVlPXtmb3JtLmVtcGxveWVlSWQgfHwgJyd9PgogICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+LS0gU2VsZWN0IGV4aXN0aW5nIG9yIGVudGVyIG5ldyBiZWxvdyAtLTwvb3B0aW9uPgogICAgICAgICAgICAgIHtlbXBsb3llZXMubWFwKGUgPT4gKAogICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2UuaWR9IHZhbHVlPXtlLmlkfT57ZS5uYW1lfXtlLmRlcGFydG1lbnQgPyBgIOKAlCAke2UuZGVwYXJ0bWVudH1gIDogJyd9PC9vcHRpb24+CiAgICAgICAgICAgICAgKSl9CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgKX0KCiAgICAgICAgPGRpdiBzdHlsZT17cy5ncmlkfT4KICAgICAgICAgIHtbWydlbXBsb3llZU5hbWUnLCdFbXBsb3llZSBOYW1lJywnSm9obiBEb2UnXSxbJ3N1cGVydmlzb3InLCdTdXBlcnZpc29yIE5hbWUnLCdKYW5lIFNtaXRoJ10sWyd3aXRuZXNzTmFtZScsJ1dpdG5lc3MgTmFtZSAoT2ZmaWNlciknLCdPZmZpY2VyIE5hbWUnXV0ubWFwKChbbmFtZSxsYWJlbCxwaF0pID0+ICgKICAgICAgICAgICAgPGRpdiBrZXk9e25hbWV9IHN0eWxlPXtzLml0ZW19PgogICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17cy5sYWJlbH0+e2xhYmVsfTo8L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT17cy5pbnB1dH0gdHlwZT0idGV4dCIgbmFtZT17bmFtZX0gdmFsdWU9e2Zvcm1bbmFtZV19IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IHBsYWNlaG9sZGVyPXtwaH0gLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICApKX0KICAgICAgICAgIDxkaXYgc3R5bGU9e3MuaXRlbX0+CiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17cy5sYWJlbH0+RGVwYXJ0bWVudDo8L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0IHN0eWxlPXtzLmlucHV0fSBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT17Zm9ybS5kZXBhcnRtZW50fSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfT4KICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPi0tIFNlbGVjdCBEZXBhcnRtZW50IC0tPC9vcHRpb24+CiAgICAgICAgICAgICAge0RFUEFSVE1FTlRTLm1hcChkID0+ICgKICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtkfSB2YWx1ZT17ZH0+e2R9PC9vcHRpb24+CiAgICAgICAgICAgICAgKSl9CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+CiAgICAgICAgPGRpdiBzdHlsZT17cy5zZWN0aW9ufT4KICAgICAgICAgIDxoMiBzdHlsZT17cy5zZWN0aW9uVGl0bGV9PlZpb2xhdGlvbiBEZXRhaWxzPC9oMj4KICAgICAgICAgIDxkaXYgc3R5bGU9e3MuZ3JpZH0+CgogICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLnMuaXRlbSwgLi4ucy5mdWxsQ29sIH19PgogICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17cy5sYWJlbH0+VmlvbGF0aW9uIFR5cGU6PC9sYWJlbD4KICAgICAgICAgICAgICA8c2VsZWN0IHN0eWxlPXtzLmlucHV0fSB2YWx1ZT17Zm9ybS52aW9sYXRpb25UeXBlfSBvbkNoYW5nZT17aGFuZGxlVmlvbGF0aW9uQ2hhbmdlfSByZXF1aXJlZD4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+LS0gU2VsZWN0IFZpb2xhdGlvbiBUeXBlIC0tPC9vcHRpb24+CiAgICAgICAgICAgICAgICB7T2JqZWN0LmVudHJpZXModmlvbGF0aW9uR3JvdXBzKS5tYXAoKFtncm91cCwgaXRlbXNdKSA9PiAoCiAgICAgICAgICAgICAgICAgIDxvcHRncm91cCBrZXk9e2dyb3VwfSBsYWJlbD17Z3JvdXB9PgogICAgICAgICAgICAgICAgICAgIHtpdGVtcy5tYXAodiA9PiB7CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmlvciA9IHByaW9yQ291bnQ5MCh2LmtleSk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT17di5rZXl9IHZhbHVlPXt2LmtleX0+CiAgICAgICAgICAgICAgICAgICAgICAgICAge3YubmFtZX17cHJpb3IgPiAwID8gYCDimqAgJHtwcmlvcn14IGluIDkwIGRheXNgIDogJyd9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9KX0KICAgICAgICAgICAgICAgICAgPC9vcHRncm91cD4KICAgICAgICAgICAgICAgICkpfQogICAgICAgICAgICAgIDwvc2VsZWN0PgoKICAgICAgICAgICAgICB7dmlvbGF0aW9uICYmICgKICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3MuY29udGV4dEJveH0+CiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3Zpb2xhdGlvbi5uYW1lfTwvc3Ryb25nPgogICAgICAgICAgICAgICAgICB7aXNSZXBlYXQoZm9ybS52aW9sYXRpb25UeXBlKSAmJiBmb3JtLmVtcGxveWVlSWQgJiYgKAogICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXtzLnJlcGVhdEJhZGdlfT4KICAgICAgICAgICAgICAgICAgICAgIOKaoCBSZXBlYXQg4oCUIHtpbnRlbC5jb3VudHNBbGxUaW1lW2Zvcm0udmlvbGF0aW9uVHlwZV0/LmNvdW50fXggcHJpb3IKICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICl9CiAgICAgICAgICAgICAgICAgIDxiciAvPnt2aW9sYXRpb24uZGVzY3JpcHRpb259PGJyIC8+CiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRTaXplOiAnMTFweCcsIGNvbG9yOiAnI2EwYTNiYScgfX0+e3Zpb2xhdGlvbi5jaGFwdGVyfTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICl9CgogICAgICAgICAgICAgIHt2aW9sYXRpb24gJiYgaXNSZXBlYXQoZm9ybS52aW9sYXRpb25UeXBlKSAmJiBmb3JtLmVtcGxveWVlSWQgJiYgdmlvbGF0aW9uLm1pblBvaW50cyAhPT0gdmlvbGF0aW9uLm1heFBvaW50cyAmJiAoCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtzLnJlcGVhdFdhcm59PgogICAgICAgICAgICAgICAgICA8c3Ryb25nPlJlcGVhdCBvZmZlbnNlIGRldGVjdGVkLjwvc3Ryb25nPiBQb2ludCBzbGlkZXIgc2V0IHRvIG1heGltdW0gKHt2aW9sYXRpb24ubWF4UG9pbnRzfSBwdHMpIHBlciByZWNpZGl2aXN0IHBvbGljeS4gQWRqdXN0IGlmIG5lZWRlZC4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICl9CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBzdHlsZT17cy5pdGVtfT4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3MubGFiZWx9PkluY2lkZW50IERhdGU6PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9e3MuaW5wdXR9IHR5cGU9ImRhdGUiIG5hbWU9ImluY2lkZW50RGF0ZSIgdmFsdWU9e2Zvcm0uaW5jaWRlbnREYXRlfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSByZXF1aXJlZCAvPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIHtzaG93RmllbGQoJ3RpbWUnKSAmJiAoCiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17cy5pdGVtfT4KICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17cy5sYWJlbH0+SW5jaWRlbnQgVGltZTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPXtzLmlucHV0fSB0eXBlPSJ0aW1lIiBuYW1lPSJpbmNpZGVudFRpbWUiIHZhbHVlPXtmb3JtLmluY2lkZW50VGltZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gLz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgKX0KICAgICAgICAgICAge3Nob3dGaWVsZCgnbWludXRlcycpICYmICgKICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtzLml0ZW19PgogICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtzLmxhYmVsfT5NaW51dGVzIExhdGU6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT17cy5pbnB1dH0gdHlwZT0ibnVtYmVyIiBuYW1lPSJtaW51dGVzTGF0ZSIgdmFsdWU9e2Zvcm0ubWludXRlc0xhdGV9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IHBsYWNlaG9sZGVyPSIxNSIgLz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgKX0KICAgICAgICAgICAge3Nob3dGaWVsZCgnYW1vdW50JykgJiYgKAogICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3MuaXRlbX0+CiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3MubGFiZWx9PkFtb3VudCAvIFZhbHVlOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9e3MuaW5wdXR9IHR5cGU9InRleHQiIG5hbWU9ImFtb3VudCIgdmFsdWU9e2Zvcm0uYW1vdW50fSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSBwbGFjZWhvbGRlcj0iJDE1MC4wMCIgLz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgKX0KICAgICAgICAgICAge3Nob3dGaWVsZCgnbG9jYXRpb24nKSAmJiAoCiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5zLml0ZW0sIC4uLnMuZnVsbENvbCB9fT4KICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17cy5sYWJlbH0+TG9jYXRpb24gLyBDb250ZXh0OjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9e3MuaW5wdXR9IHR5cGU9InRleHQiIG5hbWU9ImxvY2F0aW9uIiB2YWx1ZT17Zm9ybS5sb2NhdGlvbn0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9Ik9mZmljZSwgdmVoaWNsZSwgZmFjaWxpdHkgYXJlYSwgZXRjLiIgLz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgKX0KICAgICAgICAgICAge3Nob3dGaWVsZCgnZGVzY3JpcHRpb24nKSAmJiAoCiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5zLml0ZW0sIC4uLnMuZnVsbENvbCB9fT4KICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17cy5sYWJlbH0+QWRkaXRpb25hbCBEZXRhaWxzOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgc3R5bGU9e3sgLi4ucy5pbnB1dCwgcmVzaXplOiAndmVydGljYWwnLCBtaW5IZWlnaHQ6ICc4MHB4JyB9fSBuYW1lPSJhZGRpdGlvbmFsRGV0YWlscyIgdmFsdWU9e2Zvcm0uYWRkaXRpb25hbERldGFpbHN9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IHBsYWNlaG9sZGVyPSJQcm92aWRlIHNwZWNpZmljIGNvbnRleHQsIG9ic2VydmF0aW9ucywgb3IgZGV0YWlscy4uLiIgLz4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgKX0KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIHtpbnRlbC5zY29yZSAmJiB2aW9sYXRpb24gJiYgKAogICAgICAgICAgICA8VGllcldhcm5pbmcKICAgICAgICAgICAgICBjdXJyZW50UG9pbnRzPXtpbnRlbC5zY29yZS5hY3RpdmVfcG9pbnRzfQogICAgICAgICAgICAgIGFkZGluZ1BvaW50cz17cGFyc2VJbnQoZm9ybS5wb2ludHMpIHx8IDB9CiAgICAgICAgICAgIC8+CiAgICAgICAgICApfQoKICAgICAgICAgIHt2aW9sYXRpb24gJiYgKAogICAgICAgICAgICA8ZGl2IHN0eWxlPXtzLnBvaW50Qm94fT4KICAgICAgICAgICAgICA8aDQgc3R5bGU9e3sgY29sb3I6ICcjZmZkZjhhJywgbWFyZ2luQm90dG9tOiAnMTBweCcgfX0+Q1BBUyBQb2ludCBBc3Nlc3NtZW50PC9oND4KICAgICAgICAgICAgICA8cCBzdHlsZT17eyBtYXJnaW46IDAgfX0+CiAgICAgICAgICAgICAgICB7dmlvbGF0aW9uLm5hbWV9OiB7dmlvbGF0aW9uLm1pblBvaW50cyA9PT0gdmlvbGF0aW9uLm1heFBvaW50cwogICAgICAgICAgICAgICAgICA/IGAke3Zpb2xhdGlvbi5taW5Qb2ludHN9IFBvaW50cyAoRml4ZWQpYAogICAgICAgICAgICAgICAgICA6IGAke3Zpb2xhdGlvbi5taW5Qb2ludHN94oCTJHt2aW9sYXRpb24ubWF4UG9pbnRzfSBQb2ludHNgfQogICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgbWFyZ2luVG9wOiAnMTBweCcgfX0gdHlwZT0icmFuZ2UiIG5hbWU9InBvaW50cyIKICAgICAgICAgICAgICAgIG1pbj17dmlvbGF0aW9uLm1pblBvaW50c30gbWF4PXt2aW9sYXRpb24ubWF4UG9pbnRzfQogICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm0ucG9pbnRzfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSAvPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3MucG9pbnRWYWx1ZX0+e2Zvcm0ucG9pbnRzfSBQb2ludHM8L2Rpdj4KICAgICAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogJzEycHgnLCBjb2xvcjogJyNkMWQzZTAnIH19PkFkanVzdCB0byByZWZsZWN0IHNldmVyaXR5IGFuZCBjb250ZXh0PC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICl9CiAgICAgICAgPC9kaXY+CgogICAgICAgIHsvKiBBY2tub3dsZWRnbWVudCBTaWduYXR1cmUgU2VjdGlvbiAqL30KICAgICAgICA8ZGl2IHN0eWxlPXtzLmFja1NlY3Rpb259PgogICAgICAgICAgPGgyIHN0eWxlPXt7IC4uLnMuc2VjdGlvblRpdGxlLCBmb250U2l6ZTogJzE3cHgnIH19PkVtcGxveWVlIEFja25vd2xlZGdtZW50PC9oMj4KICAgICAgICAgIDxwIHN0eWxlPXt7IGZvbnRTaXplOiAnMTJweCcsIGNvbG9yOiAnIzljYTBiOCcsIG1hcmdpbkJvdHRvbTogJzE0cHgnLCBsaW5lSGVpZ2h0OiAxLjYgfX0+CiAgICAgICAgICAgIElmIHRoZSBlbXBsb3llZSBpcyBwcmVzZW50IGFuZCBhY2tub3dsZWRnZXMgcmVjZWlwdCBvZiB0aGlzIHZpb2xhdGlvbiwgZW50ZXIgdGhlaXIgbmFtZSBhbmQgdGhlIGRhdGUgYmVsb3cuCiAgICAgICAgICAgIFRoaXMgcmVwbGFjZXMgdGhlIGJsYW5rIHNpZ25hdHVyZSBsaW5lIG9uIHRoZSBQREYgd2l0aCBhIHJlY29yZGVkIGFja25vd2xlZGdtZW50LgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRpdiBzdHlsZT17cy5ncmlkfT4KICAgICAgICAgICAgPGRpdiBzdHlsZT17cy5pdGVtfT4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3MubGFiZWx9PkFja25vd2xlZGdlZCBCeSAoRW1wbG95ZWUgTmFtZSk6PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9e3MuaW5wdXR9IHR5cGU9InRleHQiIG5hbWU9ImFja25vd2xlZGdlZEJ5IiB2YWx1ZT17Zm9ybS5hY2tub3dsZWRnZWRCeX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9IkVtcGxveWVlJ3MgcHJpbnRlZCBuYW1lIiAvPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3MuYWNrSGludH0+TGVhdmUgYmxhbmsgaWYgZW1wbG95ZWUgaXMgbm90IHByZXNlbnQgb3IgZGVjbGluZXMgdG8gc2lnbjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT17cy5pdGVtfT4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3MubGFiZWx9PkFja25vd2xlZGdtZW50IERhdGU6PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9e3MuaW5wdXR9IHR5cGU9ImRhdGUiIG5hbWU9ImFja25vd2xlZGdlZERhdGUiIHZhbHVlPXtmb3JtLmFja25vd2xlZGdlZERhdGV9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IC8+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17cy5hY2tIaW50fT5EYXRlIHRoZSBlbXBsb3llZSByZWNlaXZlZCBhbmQgYWNrbm93bGVkZ2VkIHRoaXMgZG9jdW1lbnQ8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBzdHlsZT17cy5idG5Sb3d9PgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHN0eWxlPXtzLmJ0blByaW1hcnl9PlN1Ym1pdCBWaW9sYXRpb248L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBzdHlsZT17cy5idG5TZWNvbmRhcnl9IG9uQ2xpY2s9eygpID0+IHsgc2V0Rm9ybShFTVBUWV9GT1JNKTsgc2V0VmlvbGF0aW9uKG51bGwpOyBzZXRTdGF0dXMobnVsbCk7IHNldExhc3RWaW9sSWQobnVsbCk7IH19PgogICAgICAgICAgICBDbGVhciBGb3JtCiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAge2xhc3RWaW9sSWQgJiYgc3RhdHVzPy5vayAmJiAoCiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHRleHRBbGlnbjogJ2NlbnRlcicsIG1hcmdpblRvcDogJzE2cHgnIH19PgogICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgICAgICAgIHN0eWxlPXt7IC4uLnMuYnRuUGRmLCBvcGFjaXR5OiBwZGZMb2FkaW5nID8gMC43IDogMSB9fQogICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZURvd25sb2FkUGRmfQogICAgICAgICAgICAgIGRpc2FibGVkPXtwZGZMb2FkaW5nfQogICAgICAgICAgICA+CiAgICAgICAgICAgICAge3BkZkxvYWRpbmcgPyAn4o+zIEdlbmVyYXRpbmcgUERGLi4uJyA6ICfijJcgRG93bmxvYWQgUERGJ30KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxwIHN0eWxlPXt7IGZvbnRTaXplOiAnMTFweCcsIGNvbG9yOiAnIzljYTBiOCcsIG1hcmdpblRvcDogJzZweCcgfX0+CiAgICAgICAgICAgICAgVmlvbGF0aW9uICN7bGFzdFZpb2xJZH0g4oCUIGNsaWNrIHRvIGRvd25sb2FkIHRoZSBzaWduZWQgdmlvbGF0aW9uIGRvY3VtZW50CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICl9CgogICAgICAgIHtzdGF0dXMgJiYgPGRpdiBzdHlsZT17c3RhdHVzLm9rID8geyBtYXJnaW5Ub3A6ICcxNXB4JywgcGFkZGluZzogJzE1cHgnLCBib3JkZXJSYWRpdXM6ICc2cHgnLCB0ZXh0QWxpZ246ICdjZW50ZXInLCBmb250V2VpZ2h0OiA2MDAsIGJhY2tncm91bmQ6ICcjMDUzMzIxJywgY29sb3I6ICcjOWVmN2MxJywgYm9yZGVyOiAnMXB4IHNvbGlkICMwZjUxMzInIH0gOiB7IG1hcmdpblRvcDogJzE1cHgnLCBwYWRkaW5nOiAnMTVweCcsIGJvcmRlclJhZGl1czogJzZweCcsIHRleHRBbGlnbjogJ2NlbnRlcicsIGZvbnRXZWlnaHQ6IDYwMCwgYmFja2dyb3VuZDogJyMzYzExMTQnLCBjb2xvcjogJyNmZmIzYjgnLCBib3JkZXI6ICcxcHggc29saWQgI2Y1YzZjYicgfX0+e3N0YXR1cy5tc2d9PC9kaXY+fQogICAgICA8L2Zvcm0+CgogICAgICB7Zm9ybS5lbXBsb3llZUlkICYmICgKICAgICAgICA8ZGl2IHN0eWxlPXtzLnNlY3Rpb259PgogICAgICAgICAgPGgyIHN0eWxlPXtzLnNlY3Rpb25UaXRsZX0+VmlvbGF0aW9uIEhpc3Rvcnk8L2gyPgogICAgICAgICAgPFZpb2xhdGlvbkhpc3RvcnkgaGlzdG9yeT17aW50ZWwuaGlzdG9yeX0gbG9hZGluZz17aW50ZWwubG9hZGluZ30gLz4KICAgICAgICA8L2Rpdj4KICAgICAgKX0KCiAgICA8L2Rpdj4KICApOwp9Cg==
\ No newline at end of file
diff --git a/client/src/data/departments.js b/client/src/data/departments.js
new file mode 100644
index 0000000..2764cd3
--- /dev/null
+++ b/client/src/data/departments.js
@@ -0,0 +1,10 @@
+// Canonical department list – shared across all forms
+export const DEPARTMENTS = [
+ 'Administrative',
+ 'Business Development',
+ 'Design and Content',
+ 'Executive',
+ 'Implementation and Support',
+ 'Operations',
+ 'Production',
+];