@dcl/asset-packs 2.0.0 → 2.1.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.
- package/bin/index.js +61 -32
- package/dist/actions.js +1 -1
- package/dist/bin/index.js +61 -32
- package/dist/clone.js +11 -2
- package/dist/components.js +4 -2
- package/dist/definitions.d.ts +3 -1
- package/dist/definitions.js +1 -1
- package/dist/index.js +2 -2
- package/dist/scene-entrypoint.d.ts +8 -1
- package/dist/scene-entrypoint.js +7 -2
- package/dist/triggers.js +13 -9
- package/package.json +2 -2
package/dist/actions.js
CHANGED
|
@@ -823,4 +823,4 @@ export function createActionsSystem(engine) {
|
|
|
823
823
|
}
|
|
824
824
|
}
|
|
825
825
|
}
|
|
826
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFNWCxtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixLQUFLLEdBS04sTUFBTSxVQUFVLENBQUE7QUFDakIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDeEQsT0FBTyxFQUVMLFVBQVUsRUFDVixjQUFjLEVBRWQsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLEVBQ0wsYUFBYSxFQUNiLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVELE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLHFCQUFxQixHQUN0QixNQUFNLE1BQU0sQ0FBQTtBQUNiLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNwRCxPQUFPLEVB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QThDO1FBRTlDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFFOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFjLEVBQVUsRUFBRTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0MsQ0FBQyxDQUFBO1FBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDNUIsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNqQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQy9CLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElFbmdpbmUsXG4gIEVudGl0eSxcbiAgVmlkZW9QbGF5ZXIsXG4gIE1hdGVyaWFsLFxuICBBdWRpb1N0cmVhbSxcbiAgWUdVbml0LFxuICBUZXh0QWxpZ25Nb2RlLFxuICBGb250LFxuICBZR1Bvc2l0aW9uVHlwZSxcbiAgUG9pbnRlckZpbHRlck1vZGUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIElucHV0QWN0aW9uLFxuICBNZXNoQ29sbGlkZXIsXG4gIGdldENvbXBvbmVudEVudGl0eVRyZWUsXG4gIFR3ZWVuLFxuICBNb3ZlLFxuICBQQlR3ZWVuLFxuICBSb3RhdGUsXG4gIFNjYWxlLFxufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgcmVxdWVzdFRlbGVwb3J0IH0gZnJvbSAnfnN5c3RlbS9Vc2VyQWN0aW9uTW9kdWxlJ1xuaW1wb3J0IHtcbiAgbW92ZVBsYXllclRvLFxuICB0cmlnZ2VyRW1vdGUsXG4gIHRyaWdnZXJTY2VuZUVtb3RlLFxuICBvcGVuRXh0ZXJuYWxVcmwsXG59IGZyb20gJ35zeXN0ZW0vUmVzdHJpY3RlZEFjdGlvbnMnXG5pbXBvcnQgeyBnZXRBY3RpdmVWaWRlb1N0cmVhbXMgfSBmcm9tICd+c3lzdGVtL0NvbW1zQXBpJ1xuaW1wb3J0IHtcbiAgQWN0aW9uUGF5bG9hZCxcbiAgQWN0aW9uVHlwZSxcbiAgUHJveGltaXR5TGF5ZXIsXG4gIFNjcmVlbkFsaWduTW9kZSxcbiAgVHJpZ2dlclR5cGUsXG4gIFR3ZWVuVHlwZSxcbiAgY2xvbmUsXG4gIGdldENvbXBvbmVudHMsXG4gIGluaXRWaWRlb1BsYXllckNvbXBvbmVudE1hdGVyaWFsLFxufSBmcm9tICcuL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFZhbHVlLCBpc1ZhbGlkU3RhdGUgfSBmcm9tICcuL3N0YXRlcydcbmltcG9ydCB7IGdldEFjdGlvbkV2ZW50cywgZ2V0VHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJ1xuaW1wb3J0IHtcbiAgc3RhcnRJbnRlcnZhbCxcbiAgc3RhcnRUaW1lb3V0LFxuICBzdG9wQWxsSW50ZXJ2YWxzLFxuICBzdG9wQWxsVGltZW91dHMsXG4gIHN0b3BJbnRlcnZhbCxcbiAgc3RvcFRpbWVvdXQsXG59IGZyb20gJy4vdGltZXInXG5pbXBvcnQgeyBnZXRQYXlsb2FkIH0gZnJvbSAnLi9hY3Rpb24tdHlwZXMnXG5pbXBvcnQge1xuICBnZXRVSUJhY2tncm91bmQsXG4gIGdldFVJVGV4dCxcbiAgZ2V0VUlUcmFuc2Zvcm0sXG4gIG1hcEFsaWduVG9TY3JlZW5BbGlnbixcbn0gZnJvbSAnLi91aSdcbmltcG9ydCB7IGdldEV4cGxvcmVyQ29tcG9uZW50cyB9IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IGluaXRUcmlnZ2VycywgZGFtYWdlVGFyZ2V0cywgaGVhbFRhcmdldHMgfSBmcm9tICcuL3RyaWdnZXJzJ1xuaW1wb3J0IHtcbiAgZ2V0RW50aXR5UGFyZW50LFxuICBnZXRQbGF5ZXJQb3NpdGlvbixcbiAgZ2V0V29ybGRQb3NpdGlvbixcbn0gZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBmb2xsb3dNYXAgfSBmcm9tICcuL3RyYW5zZm9ybSdcbmltcG9ydCB7IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24gfSBmcm9tICcuL3R3ZWVucydcblxuY29uc3QgaW5pdGVkRW50aXRpZXMgPSBuZXcgU2V0PEVudGl0eT4oKVxuY29uc3QgdWlTdGFja3MgPSBuZXcgTWFwPHN0cmluZywgRW50aXR5PigpXG5jb25zdCBsYXN0VWlFbnRpdHlDbGlja2VkID0gbmV3IE1hcDxFbnRpdHksIEVudGl0eT4oKVxuXG5sZXQgaW50ZXJuYWxJbml0QWN0aW9uczogKChlbnRpdHk6IEVudGl0eSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEFjdGlvbnMoZW50aXR5OiBFbnRpdHkpIHtcbiAgaWYgKGludGVybmFsSW5pdEFjdGlvbnMpIHtcbiAgICByZXR1cm4gaW50ZXJuYWxJbml0QWN0aW9ucyhlbnRpdHkpXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW5ub3QgY2FsbCBpbml0QWN0aW9ucyB3aGlsZSBhY3Rpb25zU3lzdGVtIGhhcyBub3QgYmVlbiBjcmVhdGVkYCxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWN0aW9uc1N5c3RlbShlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3Qge1xuICAgIEFuaW1hdG9yLFxuICAgIFRyYW5zZm9ybSxcbiAgICBBdWRpb1NvdXJjZSxcbiAgICBBdmF0YXJBdHRhY2gsXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudCxcbiAgICBHbHRmQ29udGFpbmVyLFxuICAgIFVpVHJhbnNmb3JtLFxuICAgIFVpVGV4dCxcbiAgICBVaUJhY2tncm91bmQsXG4gICAgTmFtZSxcbiAgICBUd2VlbjogVHdlZW5Db21wb25lbnQsXG4gICAgVHdlZW5TZXF1ZW5jZSxcbiAgfSA9IGdldEV4cGxvcmVyQ29tcG9uZW50cyhlbmdpbmUpXG4gIGNvbnN0IHsgQWN0aW9ucywgU3RhdGVzLCBDb3VudGVyLCBUcmlnZ2VycyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG5cbiAgLy8gc2F2ZSBpbnRlcm5hbCByZWZlcmVuY2UgdG8gaW5pdCBmdW5jaW9uXG4gIGludGVybmFsSW5pdEFjdGlvbnMgPSBpbml0QWN0aW9uc1xuXG4gIHJldHVybiBmdW5jdGlvbiBhY3Rpb25zU3lzdGVtKF9kdDogbnVtYmVyKSB7XG4gICAgY29uc3QgZW50aXRpZXNXaXRoQWN0aW9ucyA9IGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWN0aW9ucylcblxuICAgIGZvciAoY29uc3QgW2VudGl0eV0gb2YgZW50aXRpZXNXaXRoQWN0aW9ucykge1xuICAgICAgaW5pdEFjdGlvbnMoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRBY3Rpb25zKGVudGl0eTogRW50aXR5KSB7XG4gICAgaWYgKCFBY3Rpb25zLmhhcyhlbnRpdHkpIHx8IGluaXRlZEVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBnZXQgYWN0aW9ucyBkYXRhXG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0KGVudGl0eSlcblxuICAgIC8vIGluaXRpYWxpemUgYWN0aW9ucyBmb3IgZ2l2ZW4gZW50aXR5XG4gICAgY29uc3QgdHlwZXMgPSBhY3Rpb25zLnZhbHVlLnJlZHVjZShcbiAgICAgICh0eXBlcywgYWN0aW9uKSA9PiB0eXBlcy5hZGQoYWN0aW9uLnR5cGUpLFxuICAgICAgbmV3IFNldDxTdHJpbmc+KCksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgaW5pdFBsYXlBbmltYXRpb24oZW50aXR5KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJpbmQgYWN0aW9uc1xuICAgIGNvbnN0IGFjdGlvbkV2ZW50cyA9IGdldEFjdGlvbkV2ZW50cyhlbnRpdHkpXG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucy52YWx1ZSkge1xuICAgICAgYWN0aW9uRXZlbnRzLm9uKGFjdGlvbi5uYW1lLCAoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBbmltYXRpb24oXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wQW5pbWF0aW9uKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfU1RBVEU6IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFN0YXRlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TVEFURT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVEFSVF9UV0VFTjoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRUd2VlbihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Q291bnRlcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfQ09VTlRFUj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlSW5jcmVtZW50Q291bnRlcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVDUkVBU0VfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ERUNSRUFTRV9DT1VOVEVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9WSVNJQklMSVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRWaXNpYmlsaXR5KFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfVklTSUJJTElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFVEFDSF9GUk9NX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlUGxheVZpZGVvKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcFZpZGVvKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlUGxheUF1ZGlvU3RyZWFtKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEF1ZGlvU3RyZWFtKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVRlbGVwb3J0UGxheWVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTU9WRV9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZU1vdmVQbGF5ZXIoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuTU9WRV9QTEFZRVI+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0RFRkFVTFRfRU1PVEU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlDdXN0b21FbW90ZShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuT1BFTl9MSU5LOiB7XG4gICAgICAgICAgICBoYW5kbGVPcGVuTGluayhlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5PUEVOX0xJTks+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0hPV19URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93VGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TSE9XX1RFWFQ+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSElERV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfREVMQVk6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0RGVsYXkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfREVMQVk+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9ERUxBWToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcERlbGF5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfREVMQVk+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfTE9PUDoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9MT09QOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wTG9vcChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0xPT1A+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVDbG9uZUVudGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk6IHtcbiAgICAgICAgICAgIGhhbmRsZVJlbW92ZUVudGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUkVNT1ZFX0VOVElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TSE9XX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93SW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19JTUFHRT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ISURFX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlSW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSElERV9JTUFHRT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5EQU1BR0U6IHtcbiAgICAgICAgICAgIGhhbmRsZURhbWFnZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5EQU1BR0U+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTU9WRV9QTEFZRVJfSEVSRToge1xuICAgICAgICAgICAgaGFuZGxlTW92ZVBsYXllckhlcmUoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSX0hFUkU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuRk9MTE9XX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlRm9sbG93UGxheWVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5GT0xMT1dfUExBWUVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfRk9MTE9XSU5HX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEZvbGxvd2luZ1BsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9GT0xMT1dJTkdfUExBWUVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQUNFX09OX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlUGxhY2VPblBsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBQ0VfT05fUExBWUVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJPVEFURV9BU19QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVJvdGF0ZUFzUGxheWVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQUNFX09OX0NBTUVSQToge1xuICAgICAgICAgICAgaGFuZGxlUGxhY2VPbkNhbWVyYShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBQ0VfT05fQ0FNRVJBPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJPVEFURV9BU19DQU1FUkE6IHtcbiAgICAgICAgICAgIGhhbmRsZVJvdGF0ZUFzQ2FtZXJhKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfQ0FNRVJBPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9QT1NJVElPTjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0UG9zaXRpb24oXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9QT1NJVElPTj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfUk9UQVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFJvdGF0aW9uKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfUk9UQVRJT04+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1NDQUxFOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRTY2FsZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU0NBTEU+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUkFORE9NOiB7XG4gICAgICAgICAgICBoYW5kbGVSYW5kb20oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUkFORE9NPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkJBVENIOiB7XG4gICAgICAgICAgICBoYW5kbGVCYXRjaChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5CQVRDSD4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5IRUFMX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlSGVhbFBsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5IRUFMX1BMQVlFUj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGluaXRlZEVudGl0aWVzLmFkZChlbnRpdHkpXG4gIH1cblxuICAvLyBQTEFZX0FOSU1BVElPTlxuICBmdW5jdGlvbiBpbml0UGxheUFuaW1hdGlvbihlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmICghQW5pbWF0b3IuaGFzKGVudGl0eSkpIHtcbiAgICAgIEFuaW1hdG9yLmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIH0pXG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BTklNQVRJT04+LFxuICApIHtcbiAgICBjb25zdCB7IGFuaW1hdGlvbiwgbG9vcCB9ID0gcGF5bG9hZFxuXG4gICAgY29uc3QgYW5pbWF0b3IgPSBBbmltYXRvci5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICBpZiAoIWFuaW1hdG9yLnN0YXRlcy5zb21lKCgkKSA9PiAkLmNsaXAgPT09IGFuaW1hdGlvbikpIHtcbiAgICAgIGFuaW1hdG9yLnN0YXRlcyA9IFtcbiAgICAgICAgLi4uYW5pbWF0b3Iuc3RhdGVzLFxuICAgICAgICB7XG4gICAgICAgICAgY2xpcDogYW5pbWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSlcbiAgICBjb25zdCBjbGlwID0gQW5pbWF0b3IuZ2V0Q2xpcChlbnRpdHksIGFuaW1hdGlvbilcbiAgICBjbGlwLnBsYXlpbmcgPSB0cnVlXG4gICAgY2xpcC5sb29wID0gbG9vcCA/PyBmYWxzZVxuICB9XG5cbiAgLy8gU1RPUF9BTklNQVRJT05cbiAgZnVuY3Rpb24gaGFuZGxlU3RvcEFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OPixcbiAgKSB7XG4gICAgaWYgKEFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1NUQVRFXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFN0YXRlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU1RBVEU+LFxuICApIHtcbiAgICBjb25zdCBzdGF0ZXMgPSBTdGF0ZXMuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoc3RhdGVzKSB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBnZXREZWZhdWx0VmFsdWUoc3RhdGVzKVxuICAgICAgbGV0IG5leHRTdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gcGF5bG9hZC5zdGF0ZVxuICAgICAgbmV4dFN0YXRlID0gaXNWYWxpZFN0YXRlKHN0YXRlcywgbmV4dFN0YXRlKSA/IG5leHRTdGF0ZSA6IGRlZmF1bHRWYWx1ZVxuICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHN0YXRlcy5jdXJyZW50VmFsdWUgPz8gZGVmYXVsdFZhbHVlID8/IHVuZGVmaW5lZFxuICAgICAgc3RhdGVzLnByZXZpb3VzVmFsdWUgPSBwcmV2aW91c1ZhbHVlXG4gICAgICBzdGF0ZXMuY3VycmVudFZhbHVlID0gbmV4dFN0YXRlXG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9TVEFURV9DSEFOR0UpXG4gICAgfVxuICB9XG5cbiAgLy8gU1RBUlRfVFdFRU5cbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnRUd2VlbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICApIHtcbiAgICBpZiAocGF5bG9hZCkge1xuICAgICAgLy8gR2V0IHRoZSBpbml0aWFsIHR3ZWVuIGlmIGV4aXN0cyB0byByZXZlcnQgdGhlIG9iamVjdCBtb3ZlbWVudCB0byB0aGF0IHNlcXVlbmNlIHdoZW4gZXhlY3V0aW5nIGEgdHdlZW4gZnJvbSBhY3Rpb25zXG4gICAgICBjb25zdCBpbml0aWFsVHdlZW4gPSBUd2VlbkNvbXBvbmVudC5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICAgIGxldCB0d2VlblxuXG4gICAgICBzd2l0Y2ggKHBheWxvYWQudHlwZSkge1xuICAgICAgICBjYXNlIFR3ZWVuVHlwZS5NT1ZFX0lURU06IHtcbiAgICAgICAgICB0d2VlbiA9IGhhbmRsZU1vdmVJdGVtKGVudGl0eSwgcGF5bG9hZClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlJPVEFURV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eSwgcGF5bG9hZClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlNDQUxFX0lURU06IHtcbiAgICAgICAgICB0d2VlbiA9IGhhbmRsZVNjYWxlSXRlbShlbnRpdHksIHBheWxvYWQpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR3ZWVuIHR5cGU6ICR7cGF5bG9hZC50eXBlfWApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV2ZXJ0VHdlZW4oZW50aXR5LCBpbml0aWFsVHdlZW4sIHR3ZWVuKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RhcnQgdG8gdGhlIGluaXRpYWwgbW92ZW1lbnQgc2VxdWVuY2Ugd2hlbiBleGVjdXRpbmcgYW4gYWRpdGlvbmFsIHR3ZWVuXG4gIGZ1bmN0aW9uIHJldmVydFR3ZWVuKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIGluaXRpYWxUd2VlbjogUEJUd2VlbiB8IG51bGwsXG4gICAgdHdlZW46IFBCVHdlZW4sXG4gICkge1xuICAgIGNvbnN0IHR3ZWVuU2VxdWVuY2UgPSBUd2VlblNlcXVlbmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGxldCBfcmV2ZXJ0VHdlZW4gPSB7XG4gICAgICAuLi50d2VlbixcbiAgICB9XG5cbiAgICBpZiAoIWluaXRpYWxUd2VlbiB8fCAhdHdlZW5TZXF1ZW5jZSB8fCAhdHdlZW5TZXF1ZW5jZS5sb29wKSByZXR1cm5cblxuICAgIHN3aXRjaCAoaW5pdGlhbFR3ZWVuLm1vZGU/LiRjYXNlKSB7XG4gICAgICBjYXNlICdtb3ZlJzoge1xuICAgICAgICBfcmV2ZXJ0VHdlZW4gPSB7XG4gICAgICAgICAgLi4uX3JldmVydFR3ZWVuLFxuICAgICAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuTW92ZSh7XG4gICAgICAgICAgICBzdGFydDogKHR3ZWVuLm1vZGUgYXMgeyAkY2FzZTogJ21vdmUnOyBtb3ZlOiBNb3ZlIH0pLm1vdmUuZW5kLFxuICAgICAgICAgICAgZW5kOiBpbml0aWFsVHdlZW4ubW9kZS5tb3ZlLnN0YXJ0LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdyb3RhdGUnOiB7XG4gICAgICAgIF9yZXZlcnRUd2VlbiA9IHtcbiAgICAgICAgICAuLi5fcmV2ZXJ0VHdlZW4sXG4gICAgICAgICAgbW9kZTogVHdlZW4uTW9kZS5Sb3RhdGUoe1xuICAgICAgICAgICAgc3RhcnQ6ICh0d2Vlbi5tb2RlIGFzIHsgJGNhc2U6ICdyb3RhdGUnOyByb3RhdGU6IFJvdGF0ZSB9KS5yb3RhdGVcbiAgICAgICAgICAgICAgLmVuZCxcbiAgICAgICAgICAgIGVuZDogaW5pdGlhbFR3ZWVuLm1vZGUucm90YXRlLnN0YXJ0LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdzY2FsZSc6IHtcbiAgICAgICAgX3JldmVydFR3ZWVuID0ge1xuICAgICAgICAgIC4uLl9yZXZlcnRUd2VlbixcbiAgICAgICAgICBtb2RlOiBUd2Vlbi5Nb2RlLlNjYWxlKHtcbiAgICAgICAgICAgIHN0YXJ0OiAodHdlZW4ubW9kZSBhcyB7ICRjYXNlOiAnc2NhbGUnOyBzY2FsZTogU2NhbGUgfSkuc2NhbGUuZW5kLFxuICAgICAgICAgICAgZW5kOiBpbml0aWFsVHdlZW4ubW9kZS5zY2FsZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHdlZW4gbW9kZTogJHtpbml0aWFsVHdlZW4ubW9kZX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBpbml0aWFsIHR3ZWVuIGlzIG5vdCBwbGF5aW5nIGJ1dCB0aGUgbG9vcCBwcm9wZXJ0eSBpcyBhY3RpdmUsIHN0YXJ0IGl0XG4gICAgaW5pdGlhbFR3ZWVuLnBsYXlpbmcgPSB0cnVlXG4gICAgdHdlZW5TZXF1ZW5jZS5zZXF1ZW5jZSA9IFtfcmV2ZXJ0VHdlZW4sIGluaXRpYWxUd2Vlbl1cbiAgfVxuXG4gIC8vIE1PVkVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVNb3ZlSXRlbShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgY29uc3QgeyBkdXJhdGlvbiwgaW50ZXJwb2xhdGlvblR5cGUsIHJlbGF0aXZlIH0gPSB0d2VlblxuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopXG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSByZWxhdGl2ZSA/IFZlY3RvcjMuYWRkKHRyYW5zZm9ybS5wb3NpdGlvbiwgZW5kKSA6IGVuZFxuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuTW92ZSh7XG4gICAgICAgIHN0YXJ0OiB0cmFuc2Zvcm0ucG9zaXRpb24sXG4gICAgICAgIGVuZDogZW5kUG9zaXRpb24sXG4gICAgICB9KSxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDEwMDAsIC8vIGZyb20gc2VjcyB0byBtc1xuICAgICAgZWFzaW5nRnVuY3Rpb246IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvblR5cGUpLFxuICAgIH0pXG4gIH1cblxuICAvLyBST1RBVEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0KGVudGl0eSlcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuXG4gICAgY29uc3QgZW5kID0gUXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKFxuICAgICAgdHdlZW4uZW5kLngsXG4gICAgICB0d2Vlbi5lbmQueSxcbiAgICAgIHR3ZWVuLmVuZC56LFxuICAgIClcbiAgICBjb25zdCBlbmRSb3RhdGlvbiA9IHJlbGF0aXZlXG4gICAgICA/IFF1YXRlcm5pb24ubXVsdGlwbHkodHJhbnNmb3JtLnJvdGF0aW9uLCBlbmQpXG4gICAgICA6IGVuZFxuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuUm90YXRlKHtcbiAgICAgICAgc3RhcnQ6IHRyYW5zZm9ybS5yb3RhdGlvbixcbiAgICAgICAgZW5kOiBlbmRSb3RhdGlvbixcbiAgICAgIH0pLFxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uICogMTAwMCwgLy8gZnJvbSBzZWNzIHRvIG1zXG4gICAgICBlYXNpbmdGdW5jdGlvbjogZ2V0RWFzaW5nRnVuY3Rpb25Gcm9tSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uVHlwZSksXG4gICAgfSlcbiAgfVxuXG4gIC8vIFNDQUxFX0lURU1cbiAgZnVuY3Rpb24gaGFuZGxlU2NhbGVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0KGVudGl0eSlcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuXG4gICAgY29uc3QgZW5kID0gVmVjdG9yMy5jcmVhdGUodHdlZW4uZW5kLngsIHR3ZWVuLmVuZC55LCB0d2Vlbi5lbmQueilcbiAgICBjb25zdCBlbmRTY2FsZSA9IHJlbGF0aXZlID8gVmVjdG9yMy5hZGQodHJhbnNmb3JtLnNjYWxlLCBlbmQpIDogZW5kXG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5TY2FsZSh7XG4gICAgICAgIHN0YXJ0OiB0cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgIGVuZDogZW5kU2NhbGUsXG4gICAgICB9KSxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDEwMDAsIC8vIGZyb20gc2VjcyB0byBtc1xuICAgICAgZWFzaW5nRnVuY3Rpb246IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvblR5cGUpLFxuICAgIH0pXG4gIH1cblxuICAvLyBTRVRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVTZXRDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfQ09VTlRFUj4sXG4gICkge1xuICAgIGNvbnN0IGNvdW50ZXIgPSBDb3VudGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgPSBwYXlsb2FkLmNvdW50ZXJcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIElOQ1JFTUVOVF9DT1VOVEVSXG4gIGZ1bmN0aW9uIGhhbmRsZUluY3JlbWVudENvdW50ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPixcbiAgKSB7XG4gICAgY29uc3QgY291bnRlciA9IENvdW50ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgY29uc3QgYW1vdW50ID0gcGF5bG9hZC5hbW91bnQgPz8gMVxuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgKz0gYW1vdW50XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DT1VOVEVSX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBERUNSRUFTRV9DT1VOVEVSXG4gIGZ1bmN0aW9uIGhhbmRsZURlY3JlYXNlQ291bnRlcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBjb25zdCBhbW91bnQgPSBwYXlsb2FkLmFtb3VudCA/PyAxXG5cbiAgICBpZiAoY291bnRlcikge1xuICAgICAgY291bnRlci52YWx1ZSAtPSBhbW91bnRcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIFBMQVlfU09VTkRcbiAgZnVuY3Rpb24gaGFuZGxlUGxheVNvdW5kKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPixcbiAgKSB7XG4gICAgY29uc3QgeyBzcmMsIGxvb3AsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIGlmIChBdWRpb1NvdXJjZS5oYXMoZW50aXR5KSkge1xuICAgICAgQXVkaW9Tb3VyY2UucGxheVNvdW5kKGVudGl0eSwgc3JjKVxuICAgICAgY29uc3QgYXVkaW9Tb3VyY2UgPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICAgIGF1ZGlvU291cmNlLmxvb3AgPSBsb29wXG4gICAgICBhdWRpb1NvdXJjZS52b2x1bWUgPSB2b2x1bWUgPz8gMVxuICAgIH0gZWxzZSB7XG4gICAgICBBdWRpb1NvdXJjZS5jcmVhdGUoZW50aXR5LCB7XG4gICAgICAgIGF1ZGlvQ2xpcFVybDogc3JjLFxuICAgICAgICBsb29wLFxuICAgICAgICBwbGF5aW5nOiB0cnVlLFxuICAgICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBTVE9QX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BTb3VuZChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfU09VTkQ+LFxuICApIHtcbiAgICBjb25zdCBhdWRpb1NvdXJjZSA9IEF1ZGlvU291cmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGlmIChhdWRpb1NvdXJjZSkge1xuICAgICAgYXVkaW9Tb3VyY2UucGxheWluZyA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1ZJU0lCSUxJVFlcbiAgZnVuY3Rpb24gaGFuZGxlU2V0VmlzaWJpbGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+LFxuICApIHtcbiAgICBjb25zdCB7IHZpc2libGUsIGNvbGxpZGVyIH0gPSBwYXlsb2FkXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7IHZpc2libGUgfSlcbiAgICBjb25zdCBnbHRmID0gR2x0ZkNvbnRhaW5lci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBjb25zdCBtZXNoQ29sbGlkZXIgPSBNZXNoQ29sbGlkZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoY29sbGlkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGdsdGYpIHtcbiAgICAgICAgZ2x0Zi5pbnZpc2libGVNZXNoZXNDb2xsaXNpb25NYXNrID0gY29sbGlkZXJcbiAgICAgIH0gZWxzZSBpZiAobWVzaENvbGxpZGVyKSB7XG4gICAgICAgIG1lc2hDb2xsaWRlci5jb2xsaXNpb25NYXNrID0gY29sbGlkZXJcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBVFRBQ0hfVE9fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZUF0dGFjaFRvUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyBhbmNob3JQb2ludElkIH0gPSBwYXlsb2FkXG4gICAgQXZhdGFyQXR0YWNoLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgYW5jaG9yUG9pbnRJZCB9KVxuICB9XG5cbiAgLy8gREVUQUNIX0ZST01fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+LFxuICApIHtcbiAgICBpZiAoQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBdmF0YXJBdHRhY2guZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gVEVMRVBPUlQgUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZVRlbGVwb3J0UGxheWVyKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuVEVMRVBPUlRfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBwYXlsb2FkXG4gICAgcmVxdWVzdFRlbGVwb3J0KHtcbiAgICAgIGRlc3RpbmF0aW9uOiBgJHt4fSwke3l9YCxcbiAgICB9KVxuICB9XG5cbiAgLy8gTU9WRSBQTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllcihcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIG5ld1JlbGF0aXZlUG9zaXRpb246IHBheWxvYWQucG9zaXRpb24sXG4gICAgICBjYW1lcmFUYXJnZXQ6IHBheWxvYWQuY2FtZXJhVGFyZ2V0LFxuICAgIH1cbiAgICB2b2lkIG1vdmVQbGF5ZXJUbyhvcHRpb25zKVxuICB9XG5cbiAgLy8gUExBWSBERUZBVUxUIEVNT1RFXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlEZWZhdWx0RW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0RFRkFVTFRfRU1PVEU+LFxuICApIHtcbiAgICBjb25zdCB7IGVtb3RlIH0gPSBwYXlsb2FkXG4gICAgdm9pZCB0cmlnZ2VyRW1vdGUoeyBwcmVkZWZpbmVkRW1vdGU6IGVtb3RlIH0pXG4gIH1cblxuICAvLyBQTEFZIENVU1RPTSBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0NVU1RPTV9FTU9URT4sXG4gICkge1xuICAgIGNvbnN0IHsgc3JjLCBsb29wIH0gPSBwYXlsb2FkXG4gICAgdm9pZCB0cmlnZ2VyU2NlbmVFbW90ZSh7IHNyYywgbG9vcCB9KVxuICB9XG5cbiAgLy8gT1BFTiBMSU5LXG4gIGZ1bmN0aW9uIGhhbmRsZU9wZW5MaW5rKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuT1BFTl9MSU5LPixcbiAgKSB7XG4gICAgY29uc3QgeyB1cmwgfSA9IHBheWxvYWRcbiAgICB2b2lkIG9wZW5FeHRlcm5hbFVybCh7IHVybCB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VmlkZW9TcmMoe1xuICAgIHNyYyxcbiAgICBkY2xDYXN0LFxuICB9OiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+KSB7XG4gICAgaWYgKGRjbENhc3QpIHtcbiAgICAgIGNvbnN0IHsgc3RyZWFtcyB9ID0gYXdhaXQgZ2V0QWN0aXZlVmlkZW9TdHJlYW1zKHt9KVxuICAgICAgcmV0dXJuIHN0cmVhbXMubGVuZ3RoID4gMCA/IHN0cmVhbXNbMF0udHJhY2tTaWQgOiAnJ1xuICAgIH1cbiAgICByZXR1cm4gc3JjID8/ICcnXG4gIH1cblxuICAvLyBQTEFZX1ZJREVPXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlWaWRlbyhcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+LFxuICApIHtcbiAgICBjb25zdCB2aWRlb1NvdXJjZSA9IFZpZGVvUGxheWVyLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKHZpZGVvU291cmNlICYmIHZpZGVvU291cmNlLnNyYykge1xuICAgICAgdmlkZW9Tb3VyY2UucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2V0IHRoZSB2aWRlbyBzcmMgZnJvbSBhIHByb21pc2UgKFZpZGVvIEZpbGUvVmlkZW8gU3RyZWFtL0RDTCBDYXN0KVxuICAgICAgZ2V0VmlkZW9TcmMocGF5bG9hZCkudGhlbigoc3JjKSA9PiB7XG4gICAgICAgIGlmICghc3JjKSByZXR1cm5cblxuICAgICAgICBWaWRlb1BsYXllci5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICAgICAgc3JjLFxuICAgICAgICAgIHZvbHVtZTogcGF5bG9hZC52b2x1bWUgPz8gMSxcbiAgICAgICAgICBsb29wOiBwYXlsb2FkLmxvb3AgPz8gZmFsc2UsXG4gICAgICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBJbml0IHZpZGVvIHBsYXllciBtYXRlcmlhbCB3aGVuIHRoZSBlbnRpdHkgZG9lc24ndCBoYXZlIGEgVmlkZW9QbGF5ZXIgY29tcG9uZW50IGRlZmluZWRcbiAgICAgICAgaW5pdFZpZGVvUGxheWVyQ29tcG9uZW50TWF0ZXJpYWwoXG4gICAgICAgICAgZW50aXR5LFxuICAgICAgICAgIHsgTWF0ZXJpYWwgfSxcbiAgICAgICAgICBNYXRlcmlhbC5nZXRPck51bGwoZW50aXR5KSxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBTVE9QX1ZJREVPXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BWaWRlbyhcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfVklERU9fU1RSRUFNPixcbiAgKSB7XG4gICAgY29uc3QgdmlkZW9Tb3VyY2UgPSBWaWRlb1BsYXllci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBpZiAodmlkZW9Tb3VyY2UpIHtcbiAgICAgIHZpZGVvU291cmNlLnBsYXlpbmcgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8vIFBMQVlfQVVESU9fU1RSRUFNXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlBdWRpb1N0cmVhbShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BVURJT19TVFJFQU0+LFxuICApIHtcbiAgICBjb25zdCB7IHVybCwgdm9sdW1lIH0gPSBwYXlsb2FkXG4gICAgQXVkaW9TdHJlYW0uY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgdXJsLFxuICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgIHZvbHVtZTogdm9sdW1lID8/IDEsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFNUT1BfQVVESU9fU1RSRUFNXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BBdWRpb1N0cmVhbShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfQVVESU9fU1RSRUFNPixcbiAgKSB7XG4gICAgY29uc3QgYXVkaW9Tb3VyY2UgPSBBdWRpb1N0cmVhbS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBpZiAoYXVkaW9Tb3VyY2UpIHtcbiAgICAgIGF1ZGlvU291cmNlLnBsYXlpbmcgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8vIFNIT1dfVEVYVFxuICBmdW5jdGlvbiBoYW5kbGVTaG93VGV4dChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0hPV19URVhUPixcbiAgKSB7XG4gICAgY29uc3QgeyB0ZXh0LCBoaWRlQWZ0ZXJTZWNvbmRzLCBmb250LCBmb250U2l6ZSwgdGV4dEFsaWduIH0gPSBwYXlsb2FkXG4gICAgY29uc3QgdWlUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybShVaVRyYW5zZm9ybSwgZW50aXR5KVxuICAgIGlmICh1aVRyYW5zZm9ybUNvbXBvbmVudCkge1xuICAgICAgVWlUZXh0LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgICAgdmFsdWU6IHRleHQsXG4gICAgICAgIGZvbnQ6IGZvbnQgYXMgdW5rbm93biBhcyBGb250LFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgdGV4dEFsaWduOiB0ZXh0QWxpZ24gYXMgdW5rbm93biBhcyBUZXh0QWxpZ25Nb2RlLFxuICAgICAgfSlcbiAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIEFjdGlvblR5cGUuSElERV9URVhULCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIHt9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBISURFX1RFWFRcbiAgZnVuY3Rpb24gaGFuZGxlSGlkZVRleHQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+LFxuICApIHtcbiAgICBjb25zdCB1aVRleHRDb21wb25lbnQgPSBVaVRleHQuZ2V0T3JOdWxsKGVudGl0eSlcbiAgICBpZiAodWlUZXh0Q29tcG9uZW50KSB7XG4gICAgICBVaVRleHQuZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHk6IEVudGl0eSwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0T3JOdWxsKGVudGl0eSlcbiAgICByZXR1cm4gYWN0aW9ucz8udmFsdWUuZmluZCgoJCkgPT4gJC5uYW1lID09PSBuYW1lKVxuICB9XG5cbiAgLy8gU1RBUlRfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnREZWxheShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfREVMQVk+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIHRpbWVvdXQgfSA9IHBheWxvYWRcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpXG4gICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIGFjdGlvbk5hbWUsIHRpbWVvdXQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9ERUxBWVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wRGVsYXkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfREVMQVk+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZFxuICAgIHN0b3BUaW1lb3V0KGVudGl0eSwgYWN0aW9uKVxuICB9XG5cbiAgLy8gU1RBUlRfTE9PUFxuICBmdW5jdGlvbiBoYW5kbGVTdGFydExvb3AoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIGludGVydmFsIH0gPSBwYXlsb2FkXG4gICAgZm9yIChjb25zdCBhY3Rpb25OYW1lIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKVxuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydEludGVydmFsKGVudGl0eSwgYWN0aW9uTmFtZSwgaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BMb29wKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0xPT1A+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZFxuICAgIHN0b3BJbnRlcnZhbChlbnRpdHksIGFjdGlvbilcbiAgfVxuXG4gIC8vIENMT05FX0VOVElUWVxuICBmdW5jdGlvbiBoYW5kbGVDbG9uZUVudGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPixcbiAgKSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gcGF5bG9hZFxuXG4gICAgLy8gY2xvbmUgZW50aXR5XG4gICAgY29uc3QgeyBjbG9uZWQsIGVudGl0aWVzIH0gPSBjbG9uZShlbnRpdHksIGVuZ2luZSwgVHJhbnNmb3JtLCBUcmlnZ2VycylcbiAgICBmb3IgKGNvbnN0IGNsb25lZCBvZiBlbnRpdGllcy52YWx1ZXMoKSkge1xuICAgICAgLy8gaW5pdGlhbGl6ZVxuICAgICAgaW5pdEFjdGlvbnMoY2xvbmVkKVxuICAgICAgaW5pdFRyaWdnZXJzKGNsb25lZClcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoY2xvbmVkKVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NMT05FKVxuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRPckNyZWF0ZU11dGFibGUoY2xvbmVkKVxuICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IHBvc2l0aW9uXG4gIH1cblxuICAvLyBSRU1PVkVfRU5USVRZXG4gIGZ1bmN0aW9uIGhhbmRsZVJlbW92ZUVudGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+LFxuICApIHtcbiAgICAvLyBSZW1vdmUgYWxsIHRpbWVycyBiZWZvcmUgcmVtb3ZlIHRoZSBlbnRpdHlcbiAgICBzdG9wQWxsVGltZW91dHMoZW50aXR5KVxuICAgIHN0b3BBbGxJbnRlcnZhbHMoZW50aXR5KVxuXG4gICAgY29uc3QgdHJlZSA9IGdldENvbXBvbmVudEVudGl0eVRyZWUoZW5naW5lLCBlbnRpdHksIFRyYW5zZm9ybSlcbiAgICBmb3IgKGNvbnN0IGVudGl0eVRvUmVtb3ZlIG9mIHRyZWUpIHtcbiAgICAgIGVuZ2luZS5yZW1vdmVFbnRpdHkoZW50aXR5VG9SZW1vdmUpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VWlTdGFjayhhbGlnbjogU2NyZWVuQWxpZ25Nb2RlKSB7XG4gICAgY29uc3Qga2V5ID0gYCR7YWxpZ24uYWxpZ25JdGVtc30sJHthbGlnbi5qdXN0aWZ5Q29udGVudH1gXG5cbiAgICBpZiAoIXVpU3RhY2tzLmhhcyhrZXkpKSB7XG4gICAgICB1aVN0YWNrcy5zZXQoa2V5LCBlbmdpbmUuYWRkRW50aXR5KCkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHVpU3RhY2tzLmdldChrZXkpIVxuICB9XG5cbiAgLy8gU0hPV19JTUFHRVxuICBmdW5jdGlvbiBoYW5kbGVTaG93SW1hZ2UoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfSU1BR0U+LFxuICApIHtcbiAgICBjb25zdCB7IHNyYywgdGV4dCwgaGlkZUFmdGVyU2Vjb25kcywgZm9udFNpemUsIGFsaWduLCBoZWlnaHQsIHdpZHRoIH0gPVxuICAgICAgcGF5bG9hZFxuXG4gICAgLy8gR2V0L0NyZWF0ZSBhIFVJIHRyYW5zZm9ybSBmb3IgdGhlIHJvb3QgZW50aXR5XG4gICAgZ2V0VUlUcmFuc2Zvcm0oVWlUcmFuc2Zvcm0sIGVuZ2luZS5Sb290RW50aXR5KVxuXG4gICAgLy8gR2V0IGEgVUkgU3RhY2sgZW50aXR5XG4gICAgY29uc3Qgc2NyZWVuQWxpZ24gPSBtYXBBbGlnblRvU2NyZWVuQWxpZ24oYWxpZ24pXG4gICAgY29uc3QgdWlTdGFjayA9IGdldFVpU3RhY2soc2NyZWVuQWxpZ24pXG5cbiAgICAvLyBUT0RPOiBGaXggaXRlbXMgd3JhcHBpbmdcbiAgICAvLyBHZXQvQ3JlYXRlIGEgVUkgVHJhbnNmb3JtIGZvciB0aGUgVUkgc3RhY2tcbiAgICBjb25zdCB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oVWlUcmFuc2Zvcm0sIHVpU3RhY2spXG4gICAgdWlTdGFja1RyYW5zZm9ybUNvbXBvbmVudC5hbGlnbkl0ZW1zID0gc2NyZWVuQWxpZ24uYWxpZ25JdGVtc1xuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQuanVzdGlmeUNvbnRlbnQgPSBzY3JlZW5BbGlnbi5qdXN0aWZ5Q29udGVudFxuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQucG9zaXRpb25UeXBlID0gWUdQb3NpdGlvblR5cGUuWUdQVF9BQlNPTFVURVxuXG4gICAgLy8gQ3JlYXRlIGEgVUkgZW50aXR5IGFuZCBhIFRyYW5zZm9ybSBjb21wb25lbnQgZm9yIHRoZSBpbWFnZVxuICAgIGNvbnN0IGltYWdlRW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgY29uc3QgaW1hZ2VUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybShcbiAgICAgIFVpVHJhbnNmb3JtLFxuICAgICAgaW1hZ2VFbnRpdHksXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIFlHVW5pdC5ZR1VfUE9JTlQsXG4gICAgKVxuICAgIGltYWdlVHJhbnNmb3JtQ29tcG9uZW50LnBhcmVudCA9IHVpU3RhY2tcbiAgICBpbWFnZVRyYW5zZm9ybUNvbXBvbmVudC5wb2ludGVyRmlsdGVyID0gUG9pbnRlckZpbHRlck1vZGUuUEZNX0JMT0NLXG5cbiAgICAvLyBDcmVhdGUgQmFja2dyb3VuZCBDb21wb25lbnRcbiAgICBnZXRVSUJhY2tncm91bmQoVWlCYWNrZ3JvdW5kLCBpbWFnZUVudGl0eSwgc3JjKVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIC8vIENyZWF0ZSBUZXh0IENvbXBvbmVudFxuICAgICAgLy8gVE9ETzogRml4IHRleHQgd3JhcHBpbmcgYW5kIHNjcm9sbGluZ1xuICAgICAgZ2V0VUlUZXh0KFVpVGV4dCwgaW1hZ2VFbnRpdHksIHRleHQsIGZvbnRTaXplLCB3aWR0aClcbiAgICB9XG5cbiAgICBwb2ludGVyRXZlbnRzU3lzdGVtLm9uUG9pbnRlckRvd24oXG4gICAgICB7XG4gICAgICAgIGVudGl0eTogaW1hZ2VFbnRpdHksXG4gICAgICAgIG9wdHM6IHtcbiAgICAgICAgICBidXR0b246IElucHV0QWN0aW9uLklBX1BPSU5URVIsXG4gICAgICAgICAgaG92ZXJUZXh0OiAnQ2xpY2snLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGFzdFVpRW50aXR5Q2xpY2tlZC5zZXQoZW50aXR5LCBpbWFnZUVudGl0eSlcbiAgICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ0xJQ0tfSU1BR0UpXG4gICAgICB9LFxuICAgIClcblxuICAgIGlmIChoaWRlQWZ0ZXJTZWNvbmRzKSB7XG4gICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBBY3Rpb25UeXBlLkhJREVfSU1BR0UsIGhpZGVBZnRlclNlY29uZHMsICgpID0+XG4gICAgICAgIGhhbmRsZUhpZGVJbWFnZShlbnRpdHksIHsgaW1hZ2VFbnRpdHk6IGltYWdlRW50aXR5IH0pLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIEhJREVfSU1BR0VcbiAgZnVuY3Rpb24gaGFuZGxlSGlkZUltYWdlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX0lNQUdFPixcbiAgKSB7XG4gICAgY29uc3QgeyBpbWFnZUVudGl0eSB9ID0gcGF5bG9hZFxuXG4gICAgaWYgKGltYWdlRW50aXR5KSB7XG4gICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGltYWdlRW50aXR5IGFzIEVudGl0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpY2tlZEltYWdlID0gbGFzdFVpRW50aXR5Q2xpY2tlZC5nZXQoZW50aXR5KVxuICAgICAgaWYgKGNsaWNrZWRJbWFnZSkge1xuICAgICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGNsaWNrZWRJbWFnZSlcbiAgICAgICAgbGFzdFVpRW50aXR5Q2xpY2tlZC5kZWxldGUoZW50aXR5KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIERBTUFHRVxuICBmdW5jdGlvbiBoYW5kbGVEYW1hZ2UoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkRBTUFHRT4sXG4gICkge1xuICAgIGNvbnN0IHsgcmFkaXVzLCBsYXllciwgaGl0cyB9ID0gcGF5bG9hZFxuICAgIGNvbnN0IGVudGl0eVBvc2l0aW9uID0gQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpXG4gICAgICA/IGdldFBsYXllclBvc2l0aW9uKClcbiAgICAgIDogZ2V0V29ybGRQb3NpdGlvbihlbnRpdHkpXG5cbiAgICBjb25zdCBnZXRSb290ID0gKGVudGl0eTogRW50aXR5KTogRW50aXR5ID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGdldEVudGl0eVBhcmVudChlbnRpdHkpXG4gICAgICByZXR1cm4gIXBhcmVudCA/IGVudGl0eSA6IGdldFJvb3QocGFyZW50KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIGRhbWFnZVRhcmdldHMpIHtcbiAgICAgIGNvbnN0IHRhcmdldFBvc2l0aW9uID0gZ2V0V29ybGRQb3NpdGlvbih0YXJnZXQpXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IFZlY3RvcjMuZGlzdGFuY2UoZW50aXR5UG9zaXRpb24sIHRhcmdldFBvc2l0aW9uKVxuXG4gICAgICAvLyBhdm9pZCBjYXVzaW5nIGRhbWFnZSB0byB0aGUgZW50aXR5IGl0c2VsZiBvciBpdHMgY2hpbGRyZW5cbiAgICAgIGNvbnN0IGVudGl0eVRyZWUgPSBBcnJheS5mcm9tKFxuICAgICAgICBnZXRDb21wb25lbnRFbnRpdHlUcmVlKGVuZ2luZSwgZW50aXR5LCBUcmFuc2Zvcm0pLFxuICAgICAgKVxuICAgICAgY29uc3QgaXNQYXJ0T2ZFbnRpdHlUcmVlID0gZW50aXR5VHJlZS5zb21lKCgkKSA9PiAkID09PSB0YXJnZXQpXG4gICAgICBpZiAoaXNQYXJ0T2ZFbnRpdHlUcmVlKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXllcikge1xuICAgICAgICBpZiAobGF5ZXIgPT09IFByb3hpbWl0eUxheWVyLlBMQVlFUikge1xuICAgICAgICAgIGNvbnN0IHJvb3QgPSBnZXRSb290KHRhcmdldClcbiAgICAgICAgICBpZiAocm9vdCAhPT0gZW5naW5lLlBsYXllckVudGl0eSAmJiByb290ICE9PSBlbmdpbmUuQ2FtZXJhRW50aXR5KSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChsYXllciA9PT0gUHJveGltaXR5TGF5ZXIuTk9OX1BMQVlFUikge1xuICAgICAgICAgIGNvbnN0IHJvb3QgPSBnZXRSb290KHRhcmdldClcbiAgICAgICAgICBpZiAocm9vdCA9PT0gZW5naW5lLlBsYXllckVudGl0eSB8fCByb290ID09PSBlbmdpbmUuQ2FtZXJhRW50aXR5KSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRpc3RhbmNlIDw9IHJhZGl1cykge1xuICAgICAgICBjb25zdCB0b3RhbCA9IGhpdHMgPT09IHVuZGVmaW5lZCA/IDEgOiBNYXRoLm1heChoaXRzLCAxKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyh0YXJnZXQpXG4gICAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0RBTUFHRSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1PVkVfUExBWUVSX0hFUkVcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllckhlcmUoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUl9IRVJFPixcbiAgKSB7XG4gICAgY29uc3QgaGVyZSA9IGdldFdvcmxkUG9zaXRpb24oZW50aXR5KVxuICAgIHZvaWQgbW92ZVBsYXllclRvKHsgbmV3UmVsYXRpdmVQb3NpdGlvbjogaGVyZSB9KVxuICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fUExBWUVSX1NQQVdOKVxuICB9XG5cbiAgLy8gUExBQ0VfT05fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYWNlT25QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFDRV9PTl9QTEFZRVI+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgY29uc3QgcGxheWVyID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuUGxheWVyRW50aXR5KVxuICAgIGlmICh0cmFuc2Zvcm0gJiYgcGxheWVyKSB7XG4gICAgICB0cmFuc2Zvcm0ucG9zaXRpb24gPSBwbGF5ZXIucG9zaXRpb25cbiAgICB9XG4gIH1cblxuICAvLyBST1RBVEVfQVNfUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZVJvdGF0ZUFzUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUk9UQVRFX0FTX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBjb25zdCBwbGF5ZXIgPSBUcmFuc2Zvcm0uZ2V0T3JOdWxsKGVuZ2luZS5QbGF5ZXJFbnRpdHkpXG4gICAgaWYgKHRyYW5zZm9ybSAmJiBwbGF5ZXIpIHtcbiAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IHBsYXllci5yb3RhdGlvblxuICAgIH1cbiAgfVxuXG4gIC8vIFBMQUNFX09OX0NBTUVSQVxuICBmdW5jdGlvbiBoYW5kbGVQbGFjZU9uQ2FtZXJhKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBQ0VfT05fQ0FNRVJBPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGNvbnN0IGNhbWVyYSA9IFRyYW5zZm9ybS5nZXRPck51bGwoZW5naW5lLkNhbWVyYUVudGl0eSlcbiAgICBpZiAodHJhbnNmb3JtICYmIGNhbWVyYSkge1xuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gY2FtZXJhLnBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgLy8gUk9UQVRFX0FTX0NBTUVSQVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVBc0NhbWVyYShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJPVEFURV9BU19DQU1FUkE+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgY29uc3QgY2FtZXJhID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuQ2FtZXJhRW50aXR5KVxuICAgIGlmICh0cmFuc2Zvcm0gJiYgY2FtZXJhKSB7XG4gICAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSBjYW1lcmEucm90YXRpb25cbiAgICB9XG4gIH1cblxuICAvLyBTRVRfUE9TSVRJT05cbiAgZnVuY3Rpb24gaGFuZGxlU2V0UG9zaXRpb24oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9QT1NJVElPTj4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICBpZiAocGF5bG9hZC5yZWxhdGl2ZSkge1xuICAgICAgICB0cmFuc2Zvcm0ucG9zaXRpb24gPSBWZWN0b3IzLmFkZChcbiAgICAgICAgICB0cmFuc2Zvcm0ucG9zaXRpb24sXG4gICAgICAgICAgVmVjdG9yMy5jcmVhdGUocGF5bG9hZC54LCBwYXlsb2FkLnksIHBheWxvYWQueiksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IFZlY3RvcjMuY3JlYXRlKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1JPVEFUSU9OXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFJvdGF0aW9uKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfUk9UQVRJT04+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgaWYgKHBheWxvYWQucmVsYXRpdmUpIHtcbiAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uID0gUXVhdGVybmlvbi5tdWx0aXBseShcbiAgICAgICAgICB0cmFuc2Zvcm0ucm90YXRpb24sXG4gICAgICAgICAgUXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSBRdWF0ZXJuaW9uLmZyb21FdWxlckRlZ3JlZXMoXG4gICAgICAgICAgcGF5bG9hZC54LFxuICAgICAgICAgIHBheWxvYWQueSxcbiAgICAgICAgICBwYXlsb2FkLnosXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTRVRfU0NBTEVcbiAgZnVuY3Rpb24gaGFuZGxlU2V0U2NhbGUoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TQ0FMRT4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICBpZiAocGF5bG9hZC5yZWxhdGl2ZSkge1xuICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBWZWN0b3IzLmFkZChcbiAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgICAgVmVjdG9yMy5jcmVhdGUocGF5bG9hZC54LCBwYXlsb2FkLnksIHBheWxvYWQueiksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybS5zY2FsZSA9IFZlY3RvcjMuY3JlYXRlKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRk9MTE9XX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVGb2xsb3dQbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkZPTExPV19QTEFZRVI+LFxuICApIHtcbiAgICBjb25zdCB7IHNwZWVkLCB4LCB5LCB6LCBtaW5EaXN0YW5jZSB9ID0gcGF5bG9hZFxuICAgIGZvbGxvd01hcC5zZXQoZW50aXR5LCB7XG4gICAgICB0YXJnZXQ6IGVuZ2luZS5QbGF5ZXJFbnRpdHksXG4gICAgICBzcGVlZCxcbiAgICAgIG1pbkRpc3RhbmNlLFxuICAgICAgYXhlczogeyB4LCB5LCB6IH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIFNUT1BfRk9MTE9XSU5HX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVTdG9wRm9sbG93aW5nUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9GT0xMT1dJTkdfUExBWUVSPixcbiAgKSB7XG4gICAgZm9sbG93TWFwLmRlbGV0ZShlbnRpdHkpXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVSYW5kb20oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJBTkRPTT4sXG4gICkge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcGF5bG9hZFxuICAgIGNvbnN0IGFjdGlvbkV2ZW50cyA9IGdldEFjdGlvbkV2ZW50cyhlbnRpdHkpXG4gICAgY29uc3QgYWN0aW9uTmFtZSA9IGFjdGlvbnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYWN0aW9ucy5sZW5ndGgpXVxuICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKVxuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQmF0Y2goXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkJBVENIPixcbiAgKSB7XG4gICAgY29uc3QgeyBhY3Rpb25zIH0gPSBwYXlsb2FkXG4gICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSlcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpXG4gICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlSGVhbFBsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSEVBTF9QTEFZRVI+LFxuICApIHtcbiAgICBjb25zdCB7IG11bHRpcGxpZXIgfSA9IHBheWxvYWRcblxuICAgIGNvbnN0IGdldFJvb3QgPSAoZW50aXR5OiBFbnRpdHkpOiBFbnRpdHkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50ID0gZ2V0RW50aXR5UGFyZW50KGVudGl0eSlcbiAgICAgIHJldHVybiAhcGFyZW50ID8gZW50aXR5IDogZ2V0Um9vdChwYXJlbnQpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgaGVhbFRhcmdldHMpIHtcbiAgICAgIGNvbnN0IHJvb3QgPSBnZXRSb290KHRhcmdldClcbiAgICAgIGlmIChyb290ID09PSBlbmdpbmUuUGxheWVyRW50aXR5KSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKHRhcmdldClcbiAgICAgICAgY29uc3QgdG90YWwgPSBNYXRoLm1heChtdWx0aXBsaWVyID8/IDEsIDEpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWw7IGkrKykge1xuICAgICAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9IRUFMX1BMQVlFUilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
826
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFNWCxtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixLQUFLLEdBS04sTUFBTSxVQUFVLENBQUE7QUFDakIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDeEQsT0FBTyxFQUVMLFVBQVUsRUFDVixjQUFjLEVBRWQsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLEVBQ0wsYUFBYSxFQUNiLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVELE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLHFCQUFxQixHQUN0QixNQUFNLE1BQU0sQ0FBQTtBQUNiLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNwRCxPQUFPLEVB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QThDO1FBRTlDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFFOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFjLEVBQVUsRUFBRTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0MsQ0FBQyxDQUFBO1FBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDNUIsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNqQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQy9CLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElFbmdpbmUsXG4gIEVudGl0eSxcbiAgVmlkZW9QbGF5ZXIsXG4gIE1hdGVyaWFsLFxuICBBdWRpb1N0cmVhbSxcbiAgWUdVbml0LFxuICBUZXh0QWxpZ25Nb2RlLFxuICBGb250LFxuICBZR1Bvc2l0aW9uVHlwZSxcbiAgUG9pbnRlckZpbHRlck1vZGUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIElucHV0QWN0aW9uLFxuICBNZXNoQ29sbGlkZXIsXG4gIGdldENvbXBvbmVudEVudGl0eVRyZWUsXG4gIFR3ZWVuLFxuICBNb3ZlLFxuICBQQlR3ZWVuLFxuICBSb3RhdGUsXG4gIFNjYWxlLFxufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgcmVxdWVzdFRlbGVwb3J0IH0gZnJvbSAnfnN5c3RlbS9Vc2VyQWN0aW9uTW9kdWxlJ1xuaW1wb3J0IHtcbiAgbW92ZVBsYXllclRvLFxuICB0cmlnZ2VyRW1vdGUsXG4gIHRyaWdnZXJTY2VuZUVtb3RlLFxuICBvcGVuRXh0ZXJuYWxVcmwsXG59IGZyb20gJ35zeXN0ZW0vUmVzdHJpY3RlZEFjdGlvbnMnXG5pbXBvcnQgeyBnZXRBY3RpdmVWaWRlb1N0cmVhbXMgfSBmcm9tICd+c3lzdGVtL0NvbW1zQXBpJ1xuaW1wb3J0IHtcbiAgQWN0aW9uUGF5bG9hZCxcbiAgQWN0aW9uVHlwZSxcbiAgUHJveGltaXR5TGF5ZXIsXG4gIFNjcmVlbkFsaWduTW9kZSxcbiAgVHJpZ2dlclR5cGUsXG4gIFR3ZWVuVHlwZSxcbiAgY2xvbmUsXG4gIGdldENvbXBvbmVudHMsXG4gIGluaXRWaWRlb1BsYXllckNvbXBvbmVudE1hdGVyaWFsLFxufSBmcm9tICcuL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFZhbHVlLCBpc1ZhbGlkU3RhdGUgfSBmcm9tICcuL3N0YXRlcydcbmltcG9ydCB7IGdldEFjdGlvbkV2ZW50cywgZ2V0VHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJ1xuaW1wb3J0IHtcbiAgc3RhcnRJbnRlcnZhbCxcbiAgc3RhcnRUaW1lb3V0LFxuICBzdG9wQWxsSW50ZXJ2YWxzLFxuICBzdG9wQWxsVGltZW91dHMsXG4gIHN0b3BJbnRlcnZhbCxcbiAgc3RvcFRpbWVvdXQsXG59IGZyb20gJy4vdGltZXInXG5pbXBvcnQgeyBnZXRQYXlsb2FkIH0gZnJvbSAnLi9hY3Rpb24tdHlwZXMnXG5pbXBvcnQge1xuICBnZXRVSUJhY2tncm91bmQsXG4gIGdldFVJVGV4dCxcbiAgZ2V0VUlUcmFuc2Zvcm0sXG4gIG1hcEFsaWduVG9TY3JlZW5BbGlnbixcbn0gZnJvbSAnLi91aSdcbmltcG9ydCB7IGdldEV4cGxvcmVyQ29tcG9uZW50cyB9IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IGluaXRUcmlnZ2VycywgZGFtYWdlVGFyZ2V0cywgaGVhbFRhcmdldHMgfSBmcm9tICcuL3RyaWdnZXJzJ1xuaW1wb3J0IHtcbiAgZ2V0RW50aXR5UGFyZW50LFxuICBnZXRQbGF5ZXJQb3NpdGlvbixcbiAgZ2V0V29ybGRQb3NpdGlvbixcbn0gZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBmb2xsb3dNYXAgfSBmcm9tICcuL3RyYW5zZm9ybSdcbmltcG9ydCB7IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24gfSBmcm9tICcuL3R3ZWVucydcbmltcG9ydCB7IFN5bmNFbnRpdHlTREsgfSBmcm9tICcuL3NjZW5lLWVudHJ5cG9pbnQnXG5cbmNvbnN0IGluaXRlZEVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KClcbmNvbnN0IHVpU3RhY2tzID0gbmV3IE1hcDxzdHJpbmcsIEVudGl0eT4oKVxuY29uc3QgbGFzdFVpRW50aXR5Q2xpY2tlZCA9IG5ldyBNYXA8RW50aXR5LCBFbnRpdHk+KClcblxubGV0IGludGVybmFsSW5pdEFjdGlvbnM6ICgoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRBY3Rpb25zKGVudGl0eTogRW50aXR5KSB7XG4gIGlmIChpbnRlcm5hbEluaXRBY3Rpb25zKSB7XG4gICAgcmV0dXJuIGludGVybmFsSW5pdEFjdGlvbnMoZW50aXR5KVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQ2Fubm90IGNhbGwgaW5pdEFjdGlvbnMgd2hpbGUgYWN0aW9uc1N5c3RlbSBoYXMgbm90IGJlZW4gY3JlYXRlZGAsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFjdGlvbnNTeXN0ZW0oZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IHtcbiAgICBBbmltYXRvcixcbiAgICBUcmFuc2Zvcm0sXG4gICAgQXVkaW9Tb3VyY2UsXG4gICAgQXZhdGFyQXR0YWNoLFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQsXG4gICAgR2x0ZkNvbnRhaW5lcixcbiAgICBVaVRyYW5zZm9ybSxcbiAgICBVaVRleHQsXG4gICAgVWlCYWNrZ3JvdW5kLFxuICAgIE5hbWUsXG4gICAgVHdlZW46IFR3ZWVuQ29tcG9uZW50LFxuICAgIFR3ZWVuU2VxdWVuY2UsXG4gIH0gPSBnZXRFeHBsb3JlckNvbXBvbmVudHMoZW5naW5lKVxuICBjb25zdCB7IEFjdGlvbnMsIFN0YXRlcywgQ291bnRlciwgVHJpZ2dlcnMgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKVxuXG4gIC8vIHNhdmUgaW50ZXJuYWwgcmVmZXJlbmNlIHRvIGluaXQgZnVuY2lvblxuICBpbnRlcm5hbEluaXRBY3Rpb25zID0gaW5pdEFjdGlvbnNcblxuICByZXR1cm4gZnVuY3Rpb24gYWN0aW9uc1N5c3RlbShfZHQ6IG51bWJlcikge1xuICAgIGNvbnN0IGVudGl0aWVzV2l0aEFjdGlvbnMgPSBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKEFjdGlvbnMpXG5cbiAgICBmb3IgKGNvbnN0IFtlbnRpdHldIG9mIGVudGl0aWVzV2l0aEFjdGlvbnMpIHtcbiAgICAgIGluaXRBY3Rpb25zKGVudGl0eSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0QWN0aW9ucyhlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmICghQWN0aW9ucy5oYXMoZW50aXR5KSB8fCBpbml0ZWRFbnRpdGllcy5oYXMoZW50aXR5KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZ2V0IGFjdGlvbnMgZGF0YVxuICAgIGNvbnN0IGFjdGlvbnMgPSBBY3Rpb25zLmdldChlbnRpdHkpXG5cbiAgICAvLyBpbml0aWFsaXplIGFjdGlvbnMgZm9yIGdpdmVuIGVudGl0eVxuICAgIGNvbnN0IHR5cGVzID0gYWN0aW9ucy52YWx1ZS5yZWR1Y2UoXG4gICAgICAodHlwZXMsIGFjdGlvbikgPT4gdHlwZXMuYWRkKGFjdGlvbi50eXBlKSxcbiAgICAgIG5ldyBTZXQ8U3RyaW5nPigpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX0FOSU1BVElPTjoge1xuICAgICAgICAgIGluaXRQbGF5QW5pbWF0aW9uKGVudGl0eSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBiaW5kIGFjdGlvbnNcbiAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMudmFsdWUpIHtcbiAgICAgIGFjdGlvbkV2ZW50cy5vbihhY3Rpb24ubmFtZSwgKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5QW5pbWF0aW9uKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FOSU1BVElPTj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTjoge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEFuaW1hdGlvbihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9BTklNQVRJT04+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1NUQVRFOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRTdGF0ZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU1RBVEU+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfVFdFRU46IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0VHdlZW4oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX0NPVU5URVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVNldENvdW50ZXIoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI6IHtcbiAgICAgICAgICAgIGhhbmRsZUluY3JlbWVudENvdW50ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkRFQ1JFQVNFX0NPVU5URVI6IHtcbiAgICAgICAgICAgIGhhbmRsZURlY3JlYXNlQ291bnRlcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuREVDUkVBU0VfQ09VTlRFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1NPVU5EOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5U291bmQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9TT1VORD4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1NPVU5EOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wU291bmQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9TT1VORD4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfVklTSUJJTElUWToge1xuICAgICAgICAgICAgaGFuZGxlU2V0VmlzaWJpbGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlQXR0YWNoVG9QbGF5ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkFUVEFDSF9UT19QTEFZRVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVUQUNIX0ZST01fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVEZXRhY2hGcm9tUGxheWVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU06IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlWaWRlbyhcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9WSURFT19TVFJFQU06IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BWaWRlbyhcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9WSURFT19TVFJFQU0+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BVURJT19TVFJFQU06IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBdWRpb1N0cmVhbShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BVURJT19TVFJFQU0+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9BVURJT19TVFJFQU06IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BBdWRpb1N0cmVhbShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9BVURJT19TVFJFQU0+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuVEVMRVBPUlRfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVUZWxlcG9ydFBsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuVEVMRVBPUlRfUExBWUVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLk1PVkVfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVNb3ZlUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfREVGQVVMVF9FTU9URToge1xuICAgICAgICAgICAgaGFuZGxlUGxheURlZmF1bHRFbW90ZShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQ1VTVE9NX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQ1VTVE9NX0VNT1RFPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLk9QRU5fTElOSzoge1xuICAgICAgICAgICAgaGFuZGxlT3BlbkxpbmsoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuT1BFTl9MSU5LPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNIT1dfVEVYVDoge1xuICAgICAgICAgICAgaGFuZGxlU2hvd1RleHQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19URVhUPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkhJREVfVEVYVDoge1xuICAgICAgICAgICAgaGFuZGxlSGlkZVRleHQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSElERV9URVhUPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUQVJUX0RFTEFZOiB7XG4gICAgICAgICAgICBoYW5kbGVTdGFydERlbGF5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0RFTEFZPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfREVMQVk6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BEZWxheShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0RFTEFZPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUQVJUX0xPT1A6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0TG9vcChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9MT09QPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfTE9PUDoge1xuICAgICAgICAgICAgaGFuZGxlU3RvcExvb3AoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9MT09QPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNMT05FX0VOVElUWToge1xuICAgICAgICAgICAgaGFuZGxlQ2xvbmVFbnRpdHkoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkNMT05FX0VOVElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5SRU1PVkVfRU5USVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVSZW1vdmVFbnRpdHkoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0hPV19JTUFHRToge1xuICAgICAgICAgICAgaGFuZGxlU2hvd0ltYWdlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfSU1BR0U+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSElERV9JTUFHRToge1xuICAgICAgICAgICAgaGFuZGxlSGlkZUltYWdlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkhJREVfSU1BR0U+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREFNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVEYW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuREFNQUdFPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLk1PVkVfUExBWUVSX0hFUkU6IHtcbiAgICAgICAgICAgIGhhbmRsZU1vdmVQbGF5ZXJIZXJlKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUl9IRVJFPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkZPTExPV19QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZUZvbGxvd1BsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuRk9MTE9XX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0ZPTExPV0lOR19QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BGb2xsb3dpbmdQbGF5ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfRk9MTE9XSU5HX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFDRV9PTl9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYWNlT25QbGF5ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVSb3RhdGVBc1BsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUk9UQVRFX0FTX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFDRV9PTl9DQU1FUkE6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYWNlT25DYW1lcmEoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX0NBTUVSQT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ST1RBVEVfQVNfQ0FNRVJBOiB7XG4gICAgICAgICAgICBoYW5kbGVSb3RhdGVBc0NhbWVyYShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUk9UQVRFX0FTX0NBTUVSQT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfUE9TSVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFBvc2l0aW9uKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfUE9TSVRJT04+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1JPVEFUSU9OOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRSb3RhdGlvbihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1JPVEFUSU9OPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9TQ0FMRToge1xuICAgICAgICAgICAgaGFuZGxlU2V0U2NhbGUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1NDQUxFPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJBTkRPTToge1xuICAgICAgICAgICAgaGFuZGxlUmFuZG9tKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlJBTkRPTT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5CQVRDSDoge1xuICAgICAgICAgICAgaGFuZGxlQmF0Y2goZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQkFUQ0g+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSEVBTF9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZUhlYWxQbGF5ZXIoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSEVBTF9QTEFZRVI+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpbml0ZWRFbnRpdGllcy5hZGQoZW50aXR5KVxuICB9XG5cbiAgLy8gUExBWV9BTklNQVRJT05cbiAgZnVuY3Rpb24gaW5pdFBsYXlBbmltYXRpb24oZW50aXR5OiBFbnRpdHkpIHtcbiAgICBpZiAoIUFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5jcmVhdGUoZW50aXR5LCB7XG4gICAgICAgIHN0YXRlczogW10sXG4gICAgICB9KVxuICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlBbmltYXRpb24oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPixcbiAgKSB7XG4gICAgY29uc3QgeyBhbmltYXRpb24sIGxvb3AgfSA9IHBheWxvYWRcblxuICAgIGNvbnN0IGFuaW1hdG9yID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShlbnRpdHkpXG4gICAgaWYgKCFhbmltYXRvci5zdGF0ZXMuc29tZSgoJCkgPT4gJC5jbGlwID09PSBhbmltYXRpb24pKSB7XG4gICAgICBhbmltYXRvci5zdGF0ZXMgPSBbXG4gICAgICAgIC4uLmFuaW1hdG9yLnN0YXRlcyxcbiAgICAgICAge1xuICAgICAgICAgIGNsaXA6IGFuaW1hdGlvbixcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9XG5cbiAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgY29uc3QgY2xpcCA9IEFuaW1hdG9yLmdldENsaXAoZW50aXR5LCBhbmltYXRpb24pXG4gICAgY2xpcC5wbGF5aW5nID0gdHJ1ZVxuICAgIGNsaXAubG9vcCA9IGxvb3AgPz8gZmFsc2VcbiAgfVxuXG4gIC8vIFNUT1BfQU5JTUFUSU9OXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BBbmltYXRpb24oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTj4sXG4gICkge1xuICAgIGlmIChBbmltYXRvci5oYXMoZW50aXR5KSkge1xuICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9TVEFURVxuICBmdW5jdGlvbiBoYW5kbGVTZXRTdGF0ZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1NUQVRFPixcbiAgKSB7XG4gICAgY29uc3Qgc3RhdGVzID0gU3RhdGVzLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKHN0YXRlcykge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlKHN0YXRlcylcbiAgICAgIGxldCBuZXh0U3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHBheWxvYWQuc3RhdGVcbiAgICAgIG5leHRTdGF0ZSA9IGlzVmFsaWRTdGF0ZShzdGF0ZXMsIG5leHRTdGF0ZSkgPyBuZXh0U3RhdGUgOiBkZWZhdWx0VmFsdWVcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBzdGF0ZXMuY3VycmVudFZhbHVlID8/IGRlZmF1bHRWYWx1ZSA/PyB1bmRlZmluZWRcbiAgICAgIHN0YXRlcy5wcmV2aW91c1ZhbHVlID0gcHJldmlvdXNWYWx1ZVxuICAgICAgc3RhdGVzLmN1cnJlbnRWYWx1ZSA9IG5leHRTdGF0ZVxuXG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpXG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fU1RBVEVfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIFNUQVJUX1RXRUVOXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0VHdlZW4oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPixcbiAgKSB7XG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgIC8vIEdldCB0aGUgaW5pdGlhbCB0d2VlbiBpZiBleGlzdHMgdG8gcmV2ZXJ0IHRoZSBvYmplY3QgbW92ZW1lbnQgdG8gdGhhdCBzZXF1ZW5jZSB3aGVuIGV4ZWN1dGluZyBhIHR3ZWVuIGZyb20gYWN0aW9uc1xuICAgICAgY29uc3QgaW5pdGlhbFR3ZWVuID0gVHdlZW5Db21wb25lbnQuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgICBsZXQgdHdlZW5cblxuICAgICAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUd2VlblR5cGUuTU9WRV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVNb3ZlSXRlbShlbnRpdHksIHBheWxvYWQpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFR3ZWVuVHlwZS5ST1RBVEVfSVRFTToge1xuICAgICAgICAgIHR3ZWVuID0gaGFuZGxlUm90YXRlSXRlbShlbnRpdHksIHBheWxvYWQpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFR3ZWVuVHlwZS5TQ0FMRV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVTY2FsZUl0ZW0oZW50aXR5LCBwYXlsb2FkKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiB0eXBlOiAke3BheWxvYWQudHlwZX1gKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldmVydFR3ZWVuKGVudGl0eSwgaW5pdGlhbFR3ZWVuLCB0d2VlbilcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0YXJ0IHRvIHRoZSBpbml0aWFsIG1vdmVtZW50IHNlcXVlbmNlIHdoZW4gZXhlY3V0aW5nIGFuIGFkaXRpb25hbCB0d2VlblxuICBmdW5jdGlvbiByZXZlcnRUd2VlbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBpbml0aWFsVHdlZW46IFBCVHdlZW4gfCBudWxsLFxuICAgIHR3ZWVuOiBQQlR3ZWVuLFxuICApIHtcbiAgICBjb25zdCB0d2VlblNlcXVlbmNlID0gVHdlZW5TZXF1ZW5jZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBsZXQgX3JldmVydFR3ZWVuID0ge1xuICAgICAgLi4udHdlZW4sXG4gICAgfVxuXG4gICAgaWYgKCFpbml0aWFsVHdlZW4gfHwgIXR3ZWVuU2VxdWVuY2UgfHwgIXR3ZWVuU2VxdWVuY2UubG9vcCkgcmV0dXJuXG5cbiAgICBzd2l0Y2ggKGluaXRpYWxUd2Vlbi5tb2RlPy4kY2FzZSkge1xuICAgICAgY2FzZSAnbW92ZSc6IHtcbiAgICAgICAgX3JldmVydFR3ZWVuID0ge1xuICAgICAgICAgIC4uLl9yZXZlcnRUd2VlbixcbiAgICAgICAgICBtb2RlOiBUd2Vlbi5Nb2RlLk1vdmUoe1xuICAgICAgICAgICAgc3RhcnQ6ICh0d2Vlbi5tb2RlIGFzIHsgJGNhc2U6ICdtb3ZlJzsgbW92ZTogTW92ZSB9KS5tb3ZlLmVuZCxcbiAgICAgICAgICAgIGVuZDogaW5pdGlhbFR3ZWVuLm1vZGUubW92ZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncm90YXRlJzoge1xuICAgICAgICBfcmV2ZXJ0VHdlZW4gPSB7XG4gICAgICAgICAgLi4uX3JldmVydFR3ZWVuLFxuICAgICAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuUm90YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0OiAodHdlZW4ubW9kZSBhcyB7ICRjYXNlOiAncm90YXRlJzsgcm90YXRlOiBSb3RhdGUgfSkucm90YXRlXG4gICAgICAgICAgICAgIC5lbmQsXG4gICAgICAgICAgICBlbmQ6IGluaXRpYWxUd2Vlbi5tb2RlLnJvdGF0ZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnc2NhbGUnOiB7XG4gICAgICAgIF9yZXZlcnRUd2VlbiA9IHtcbiAgICAgICAgICAuLi5fcmV2ZXJ0VHdlZW4sXG4gICAgICAgICAgbW9kZTogVHdlZW4uTW9kZS5TY2FsZSh7XG4gICAgICAgICAgICBzdGFydDogKHR3ZWVuLm1vZGUgYXMgeyAkY2FzZTogJ3NjYWxlJzsgc2NhbGU6IFNjYWxlIH0pLnNjYWxlLmVuZCxcbiAgICAgICAgICAgIGVuZDogaW5pdGlhbFR3ZWVuLm1vZGUuc2NhbGUuc3RhcnQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR3ZWVuIG1vZGU6ICR7aW5pdGlhbFR3ZWVuLm1vZGV9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgaW5pdGlhbCB0d2VlbiBpcyBub3QgcGxheWluZyBidXQgdGhlIGxvb3AgcHJvcGVydHkgaXMgYWN0aXZlLCBzdGFydCBpdFxuICAgIGluaXRpYWxUd2Vlbi5wbGF5aW5nID0gdHJ1ZVxuICAgIHR3ZWVuU2VxdWVuY2Uuc2VxdWVuY2UgPSBbX3JldmVydFR3ZWVuLCBpbml0aWFsVHdlZW5dXG4gIH1cblxuICAvLyBNT1ZFX0lURU1cbiAgZnVuY3Rpb24gaGFuZGxlTW92ZUl0ZW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgdHdlZW46IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBWZWN0b3IzLmNyZWF0ZSh0d2Vlbi5lbmQueCwgdHdlZW4uZW5kLnksIHR3ZWVuLmVuZC56KVxuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0ucG9zaXRpb24sIGVuZCkgOiBlbmRcblxuICAgIHJldHVybiBUd2VlbkNvbXBvbmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICBtb2RlOiBUd2Vlbi5Nb2RlLk1vdmUoe1xuICAgICAgICBzdGFydDogdHJhbnNmb3JtLnBvc2l0aW9uLFxuICAgICAgICBlbmQ6IGVuZFBvc2l0aW9uLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiAxMDAwLCAvLyBmcm9tIHNlY3MgdG8gbXNcbiAgICAgIGVhc2luZ0Z1bmN0aW9uOiBnZXRFYXNpbmdGdW5jdGlvbkZyb21JbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25UeXBlKSxcbiAgICB9KVxuICB9XG5cbiAgLy8gUk9UQVRFX0lURU1cbiAgZnVuY3Rpb24gaGFuZGxlUm90YXRlSXRlbShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgY29uc3QgeyBkdXJhdGlvbiwgaW50ZXJwb2xhdGlvblR5cGUsIHJlbGF0aXZlIH0gPSB0d2VlblxuICAgIGNvbnN0IGVuZCA9IFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyhcbiAgICAgIHR3ZWVuLmVuZC54LFxuICAgICAgdHdlZW4uZW5kLnksXG4gICAgICB0d2Vlbi5lbmQueixcbiAgICApXG4gICAgY29uc3QgZW5kUm90YXRpb24gPSByZWxhdGl2ZVxuICAgICAgPyBRdWF0ZXJuaW9uLm11bHRpcGx5KHRyYW5zZm9ybS5yb3RhdGlvbiwgZW5kKVxuICAgICAgOiBlbmRcblxuICAgIHJldHVybiBUd2VlbkNvbXBvbmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICBtb2RlOiBUd2Vlbi5Nb2RlLlJvdGF0ZSh7XG4gICAgICAgIHN0YXJ0OiB0cmFuc2Zvcm0ucm90YXRpb24sXG4gICAgICAgIGVuZDogZW5kUm90YXRpb24sXG4gICAgICB9KSxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDEwMDAsIC8vIGZyb20gc2VjcyB0byBtc1xuICAgICAgZWFzaW5nRnVuY3Rpb246IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvblR5cGUpLFxuICAgIH0pXG4gIH1cblxuICAvLyBTQ0FMRV9JVEVNXG4gIGZ1bmN0aW9uIGhhbmRsZVNjYWxlSXRlbShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgY29uc3QgeyBkdXJhdGlvbiwgaW50ZXJwb2xhdGlvblR5cGUsIHJlbGF0aXZlIH0gPSB0d2VlblxuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopXG4gICAgY29uc3QgZW5kU2NhbGUgPSByZWxhdGl2ZSA/IFZlY3RvcjMuYWRkKHRyYW5zZm9ybS5zY2FsZSwgZW5kKSA6IGVuZFxuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuU2NhbGUoe1xuICAgICAgICBzdGFydDogdHJhbnNmb3JtLnNjYWxlLFxuICAgICAgICBlbmQ6IGVuZFNjYWxlLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiAxMDAwLCAvLyBmcm9tIHNlY3MgdG8gbXNcbiAgICAgIGVhc2luZ0Z1bmN0aW9uOiBnZXRFYXNpbmdGdW5jdGlvbkZyb21JbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25UeXBlKSxcbiAgICB9KVxuICB9XG5cbiAgLy8gU0VUX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlU2V0Q291bnRlcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlID0gcGF5bG9hZC5jb3VudGVyXG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DT1VOVEVSX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBJTkNSRU1FTlRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUj4sXG4gICkge1xuICAgIGNvbnN0IGNvdW50ZXIgPSBDb3VudGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGNvbnN0IGFtb3VudCA9IHBheWxvYWQuYW1vdW50ID8/IDFcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlICs9IGFtb3VudFxuXG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpXG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ09VTlRFUl9DSEFOR0UpXG4gICAgfVxuICB9XG5cbiAgLy8gREVDUkVBU0VfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVEZWNyZWFzZUNvdW50ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPixcbiAgKSB7XG4gICAgY29uc3QgY291bnRlciA9IENvdW50ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgY29uc3QgYW1vdW50ID0gcGF5bG9hZC5hbW91bnQgPz8gMVxuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgLT0gYW1vdW50XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DT1VOVEVSX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBQTEFZX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlTb3VuZChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9TT1VORD4sXG4gICkge1xuICAgIGNvbnN0IHsgc3JjLCBsb29wLCB2b2x1bWUgfSA9IHBheWxvYWRcbiAgICBpZiAoQXVkaW9Tb3VyY2UuaGFzKGVudGl0eSkpIHtcbiAgICAgIEF1ZGlvU291cmNlLnBsYXlTb3VuZChlbnRpdHksIHNyYylcbiAgICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShlbnRpdHkpXG4gICAgICBhdWRpb1NvdXJjZS5sb29wID0gbG9vcFxuICAgICAgYXVkaW9Tb3VyY2Uudm9sdW1lID0gdm9sdW1lID8/IDFcbiAgICB9IGVsc2Uge1xuICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBhdWRpb0NsaXBVcmw6IHNyYyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgICAgdm9sdW1lOiB2b2x1bWUgPz8gMSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9TT1VORFxuICBmdW5jdGlvbiBoYW5kbGVTdG9wU291bmQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1NPVU5EPixcbiAgKSB7XG4gICAgY29uc3QgYXVkaW9Tb3VyY2UgPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBpZiAoYXVkaW9Tb3VyY2UpIHtcbiAgICAgIGF1ZGlvU291cmNlLnBsYXlpbmcgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9WSVNJQklMSVRZXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFZpc2liaWxpdHkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9WSVNJQklMSVRZPixcbiAgKSB7XG4gICAgY29uc3QgeyB2aXNpYmxlLCBjb2xsaWRlciB9ID0gcGF5bG9hZFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwgeyB2aXNpYmxlIH0pXG4gICAgY29uc3QgZ2x0ZiA9IEdsdGZDb250YWluZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgY29uc3QgbWVzaENvbGxpZGVyID0gTWVzaENvbGxpZGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKGNvbGxpZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChnbHRmKSB7XG4gICAgICAgIGdsdGYuaW52aXNpYmxlTWVzaGVzQ29sbGlzaW9uTWFzayA9IGNvbGxpZGVyXG4gICAgICB9IGVsc2UgaWYgKG1lc2hDb2xsaWRlcikge1xuICAgICAgICBtZXNoQ29sbGlkZXIuY29sbGlzaW9uTWFzayA9IGNvbGxpZGVyXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQVRUQUNIX1RPX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHsgYW5jaG9yUG9pbnRJZCB9ID0gcGF5bG9hZFxuICAgIEF2YXRhckF0dGFjaC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7IGFuY2hvclBvaW50SWQgfSlcbiAgfVxuXG4gIC8vIERFVEFDSF9GUk9NX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVEZXRhY2hGcm9tUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuREVUQUNIX0ZST01fUExBWUVSPixcbiAgKSB7XG4gICAgaWYgKEF2YXRhckF0dGFjaC5oYXMoZW50aXR5KSkge1xuICAgICAgQXZhdGFyQXR0YWNoLmRlbGV0ZUZyb20oZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIC8vIFRFTEVQT1JUIFBMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVUZWxlcG9ydFBsYXllcihcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlRFTEVQT1JUX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gcGF5bG9hZFxuICAgIHJlcXVlc3RUZWxlcG9ydCh7XG4gICAgICBkZXN0aW5hdGlvbjogYCR7eH0sJHt5fWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIE1PVkUgUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVQbGF5ZXIoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBuZXdSZWxhdGl2ZVBvc2l0aW9uOiBwYXlsb2FkLnBvc2l0aW9uLFxuICAgICAgY2FtZXJhVGFyZ2V0OiBwYXlsb2FkLmNhbWVyYVRhcmdldCxcbiAgICB9XG4gICAgdm9pZCBtb3ZlUGxheWVyVG8ob3B0aW9ucylcbiAgfVxuXG4gIC8vIFBMQVkgREVGQVVMVCBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFPixcbiAgKSB7XG4gICAgY29uc3QgeyBlbW90ZSB9ID0gcGF5bG9hZFxuICAgIHZvaWQgdHJpZ2dlckVtb3RlKHsgcHJlZGVmaW5lZEVtb3RlOiBlbW90ZSB9KVxuICB9XG5cbiAgLy8gUExBWSBDVVNUT00gRU1PVEVcbiAgZnVuY3Rpb24gaGFuZGxlUGxheUN1c3RvbUVtb3RlKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU+LFxuICApIHtcbiAgICBjb25zdCB7IHNyYywgbG9vcCB9ID0gcGF5bG9hZFxuICAgIHZvaWQgdHJpZ2dlclNjZW5lRW1vdGUoeyBzcmMsIGxvb3AgfSlcbiAgfVxuXG4gIC8vIE9QRU4gTElOS1xuICBmdW5jdGlvbiBoYW5kbGVPcGVuTGluayhcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLk9QRU5fTElOSz4sXG4gICkge1xuICAgIGNvbnN0IHsgdXJsIH0gPSBwYXlsb2FkXG4gICAgdm9pZCBvcGVuRXh0ZXJuYWxVcmwoeyB1cmwgfSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFZpZGVvU3JjKHtcbiAgICBzcmMsXG4gICAgZGNsQ2FzdCxcbiAgfTogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfVklERU9fU1RSRUFNPikge1xuICAgIGlmIChkY2xDYXN0KSB7XG4gICAgICBjb25zdCB7IHN0cmVhbXMgfSA9IGF3YWl0IGdldEFjdGl2ZVZpZGVvU3RyZWFtcyh7fSlcbiAgICAgIHJldHVybiBzdHJlYW1zLmxlbmd0aCA+IDAgPyBzdHJlYW1zWzBdLnRyYWNrU2lkIDogJydcbiAgICB9XG4gICAgcmV0dXJuIHNyYyA/PyAnJ1xuICB9XG5cbiAgLy8gUExBWV9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVQbGF5VmlkZW8oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfVklERU9fU1RSRUFNPixcbiAgKSB7XG4gICAgY29uc3QgdmlkZW9Tb3VyY2UgPSBWaWRlb1BsYXllci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmICh2aWRlb1NvdXJjZSAmJiB2aWRlb1NvdXJjZS5zcmMpIHtcbiAgICAgIHZpZGVvU291cmNlLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdldCB0aGUgdmlkZW8gc3JjIGZyb20gYSBwcm9taXNlIChWaWRlbyBGaWxlL1ZpZGVvIFN0cmVhbS9EQ0wgQ2FzdClcbiAgICAgIGdldFZpZGVvU3JjKHBheWxvYWQpLnRoZW4oKHNyYykgPT4ge1xuICAgICAgICBpZiAoIXNyYykgcmV0dXJuXG5cbiAgICAgICAgVmlkZW9QbGF5ZXIuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgICAgIHNyYyxcbiAgICAgICAgICB2b2x1bWU6IHBheWxvYWQudm9sdW1lID8/IDEsXG4gICAgICAgICAgbG9vcDogcGF5bG9hZC5sb29wID8/IGZhbHNlLFxuICAgICAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gSW5pdCB2aWRlbyBwbGF5ZXIgbWF0ZXJpYWwgd2hlbiB0aGUgZW50aXR5IGRvZXNuJ3QgaGF2ZSBhIFZpZGVvUGxheWVyIGNvbXBvbmVudCBkZWZpbmVkXG4gICAgICAgIGluaXRWaWRlb1BsYXllckNvbXBvbmVudE1hdGVyaWFsKFxuICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICB7IE1hdGVyaWFsIH0sXG4gICAgICAgICAgTWF0ZXJpYWwuZ2V0T3JOdWxsKGVudGl0eSksXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVTdG9wVmlkZW8oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IHZpZGVvU291cmNlID0gVmlkZW9QbGF5ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBQTEFZX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5QXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQVVESU9fU1RSRUFNPixcbiAgKSB7XG4gICAgY29uc3QgeyB1cmwsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIEF1ZGlvU3RyZWFtLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIHVybCxcbiAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9TdHJlYW0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKGF1ZGlvU291cmNlKSB7XG4gICAgICBhdWRpb1NvdXJjZS5wbGF5aW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBTSE9XX1RFWFRcbiAgZnVuY3Rpb24gaGFuZGxlU2hvd1RleHQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfVEVYVD4sXG4gICkge1xuICAgIGNvbnN0IHsgdGV4dCwgaGlkZUFmdGVyU2Vjb25kcywgZm9udCwgZm9udFNpemUsIHRleHRBbGlnbiB9ID0gcGF5bG9hZFxuICAgIGNvbnN0IHVpVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oVWlUcmFuc2Zvcm0sIGVudGl0eSlcbiAgICBpZiAodWlUcmFuc2Zvcm1Db21wb25lbnQpIHtcbiAgICAgIFVpVGV4dC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICAgIHZhbHVlOiB0ZXh0LFxuICAgICAgICBmb250OiBmb250IGFzIHVua25vd24gYXMgRm9udCxcbiAgICAgICAgZm9udFNpemUsXG4gICAgICAgIHRleHRBbGlnbjogdGV4dEFsaWduIGFzIHVua25vd24gYXMgVGV4dEFsaWduTW9kZSxcbiAgICAgIH0pXG4gICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBBY3Rpb25UeXBlLkhJREVfVEVYVCwgaGlkZUFmdGVyU2Vjb25kcywgKCkgPT5cbiAgICAgICAgaGFuZGxlSGlkZVRleHQoZW50aXR5LCB7fSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLy8gSElERV9URVhUXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVUZXh0KFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSElERV9URVhUPixcbiAgKSB7XG4gICAgY29uc3QgdWlUZXh0Q29tcG9uZW50ID0gVWlUZXh0LmdldE9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHVpVGV4dENvbXBvbmVudCkge1xuICAgICAgVWlUZXh0LmRlbGV0ZUZyb20oZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5OiBFbnRpdHksIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBBY3Rpb25zLmdldE9yTnVsbChlbnRpdHkpXG4gICAgcmV0dXJuIGFjdGlvbnM/LnZhbHVlLmZpbmQoKCQpID0+ICQubmFtZSA9PT0gbmFtZSlcbiAgfVxuXG4gIC8vIFNUQVJUX0RFTEFZXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0RGVsYXkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0RFTEFZPixcbiAgKSB7XG4gICAgY29uc3QgeyBhY3Rpb25zLCB0aW1lb3V0IH0gPSBwYXlsb2FkXG4gICAgZm9yIChjb25zdCBhY3Rpb25OYW1lIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKVxuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBhY3Rpb25OYW1lLCB0aW1lb3V0LCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSlcbiAgICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNUT1BfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RvcERlbGF5KFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0RFTEFZPixcbiAgKSB7XG4gICAgY29uc3QgeyBhY3Rpb24gfSA9IHBheWxvYWRcbiAgICBzdG9wVGltZW91dChlbnRpdHksIGFjdGlvbilcbiAgfVxuXG4gIC8vIFNUQVJUX0xPT1BcbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnRMb29wKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9MT09QPixcbiAgKSB7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBpbnRlcnZhbCB9ID0gcGF5bG9hZFxuICAgIGZvciAoY29uc3QgYWN0aW9uTmFtZSBvZiBhY3Rpb25zKSB7XG4gICAgICBjb25zdCBhY3Rpb24gPSBmaW5kQWN0aW9uQnlOYW1lKGVudGl0eSwgYWN0aW9uTmFtZSlcbiAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgc3RhcnRJbnRlcnZhbChlbnRpdHksIGFjdGlvbk5hbWUsIGludGVydmFsLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSlcbiAgICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNUT1BfTE9PUFxuICBmdW5jdGlvbiBoYW5kbGVTdG9wTG9vcChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9MT09QPixcbiAgKSB7XG4gICAgY29uc3QgeyBhY3Rpb24gfSA9IHBheWxvYWRcbiAgICBzdG9wSW50ZXJ2YWwoZW50aXR5LCBhY3Rpb24pXG4gIH1cblxuICAvLyBDTE9ORV9FTlRJVFlcbiAgZnVuY3Rpb24gaGFuZGxlQ2xvbmVFbnRpdHkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkNMT05FX0VOVElUWT4sXG4gICkge1xuICAgIGNvbnN0IHsgcG9zaXRpb24gfSA9IHBheWxvYWRcblxuICAgIC8vIGNsb25lIGVudGl0eVxuICAgIGNvbnN0IHsgY2xvbmVkLCBlbnRpdGllcyB9ID0gY2xvbmUoZW50aXR5LCBlbmdpbmUsIFRyYW5zZm9ybSwgVHJpZ2dlcnMpXG4gICAgZm9yIChjb25zdCBjbG9uZWQgb2YgZW50aXRpZXMudmFsdWVzKCkpIHtcbiAgICAgIC8vIGluaXRpYWxpemVcbiAgICAgIGluaXRBY3Rpb25zKGNsb25lZClcbiAgICAgIGluaXRUcmlnZ2VycyhjbG9uZWQpXG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGNsb25lZClcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DTE9ORSlcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0T3JDcmVhdGVNdXRhYmxlKGNsb25lZClcbiAgICB0cmFuc2Zvcm0ucG9zaXRpb24gPSBwb3NpdGlvblxuICB9XG5cbiAgLy8gUkVNT1ZFX0VOVElUWVxuICBmdW5jdGlvbiBoYW5kbGVSZW1vdmVFbnRpdHkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5SRU1PVkVfRU5USVRZPixcbiAgKSB7XG4gICAgLy8gUmVtb3ZlIGFsbCB0aW1lcnMgYmVmb3JlIHJlbW92ZSB0aGUgZW50aXR5XG4gICAgc3RvcEFsbFRpbWVvdXRzKGVudGl0eSlcbiAgICBzdG9wQWxsSW50ZXJ2YWxzKGVudGl0eSlcblxuICAgIGNvbnN0IHRyZWUgPSBnZXRDb21wb25lbnRFbnRpdHlUcmVlKGVuZ2luZSwgZW50aXR5LCBUcmFuc2Zvcm0pXG4gICAgZm9yIChjb25zdCBlbnRpdHlUb1JlbW92ZSBvZiB0cmVlKSB7XG4gICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGVudGl0eVRvUmVtb3ZlKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFVpU3RhY2soYWxpZ246IFNjcmVlbkFsaWduTW9kZSkge1xuICAgIGNvbnN0IGtleSA9IGAke2FsaWduLmFsaWduSXRlbXN9LCR7YWxpZ24uanVzdGlmeUNvbnRlbnR9YFxuXG4gICAgaWYgKCF1aVN0YWNrcy5oYXMoa2V5KSkge1xuICAgICAgdWlTdGFja3Muc2V0KGtleSwgZW5naW5lLmFkZEVudGl0eSgpKVxuICAgIH1cblxuICAgIHJldHVybiB1aVN0YWNrcy5nZXQoa2V5KSFcbiAgfVxuXG4gIC8vIFNIT1dfSU1BR0VcbiAgZnVuY3Rpb24gaGFuZGxlU2hvd0ltYWdlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TSE9XX0lNQUdFPixcbiAgKSB7XG4gICAgY29uc3QgeyBzcmMsIHRleHQsIGhpZGVBZnRlclNlY29uZHMsIGZvbnRTaXplLCBhbGlnbiwgaGVpZ2h0LCB3aWR0aCB9ID1cbiAgICAgIHBheWxvYWRcblxuICAgIC8vIEdldC9DcmVhdGUgYSBVSSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IGVudGl0eVxuICAgIGdldFVJVHJhbnNmb3JtKFVpVHJhbnNmb3JtLCBlbmdpbmUuUm9vdEVudGl0eSlcblxuICAgIC8vIEdldCBhIFVJIFN0YWNrIGVudGl0eVxuICAgIGNvbnN0IHNjcmVlbkFsaWduID0gbWFwQWxpZ25Ub1NjcmVlbkFsaWduKGFsaWduKVxuICAgIGNvbnN0IHVpU3RhY2sgPSBnZXRVaVN0YWNrKHNjcmVlbkFsaWduKVxuXG4gICAgLy8gVE9ETzogRml4IGl0ZW1zIHdyYXBwaW5nXG4gICAgLy8gR2V0L0NyZWF0ZSBhIFVJIFRyYW5zZm9ybSBmb3IgdGhlIFVJIHN0YWNrXG4gICAgY29uc3QgdWlTdGFja1RyYW5zZm9ybUNvbXBvbmVudCA9IGdldFVJVHJhbnNmb3JtKFVpVHJhbnNmb3JtLCB1aVN0YWNrKVxuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQuYWxpZ25JdGVtcyA9IHNjcmVlbkFsaWduLmFsaWduSXRlbXNcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50Lmp1c3RpZnlDb250ZW50ID0gc2NyZWVuQWxpZ24uanVzdGlmeUNvbnRlbnRcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LnBvc2l0aW9uVHlwZSA9IFlHUG9zaXRpb25UeXBlLllHUFRfQUJTT0xVVEVcblxuICAgIC8vIENyZWF0ZSBhIFVJIGVudGl0eSBhbmQgYSBUcmFuc2Zvcm0gY29tcG9uZW50IGZvciB0aGUgaW1hZ2VcbiAgICBjb25zdCBpbWFnZUVudGl0eSA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIGNvbnN0IGltYWdlVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oXG4gICAgICBVaVRyYW5zZm9ybSxcbiAgICAgIGltYWdlRW50aXR5LFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBZR1VuaXQuWUdVX1BPSU5ULFxuICAgIClcbiAgICBpbWFnZVRyYW5zZm9ybUNvbXBvbmVudC5wYXJlbnQgPSB1aVN0YWNrXG4gICAgaW1hZ2VUcmFuc2Zvcm1Db21wb25lbnQucG9pbnRlckZpbHRlciA9IFBvaW50ZXJGaWx0ZXJNb2RlLlBGTV9CTE9DS1xuXG4gICAgLy8gQ3JlYXRlIEJhY2tncm91bmQgQ29tcG9uZW50XG4gICAgZ2V0VUlCYWNrZ3JvdW5kKFVpQmFja2dyb3VuZCwgaW1hZ2VFbnRpdHksIHNyYylcblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICAvLyBDcmVhdGUgVGV4dCBDb21wb25lbnRcbiAgICAgIC8vIFRPRE86IEZpeCB0ZXh0IHdyYXBwaW5nIGFuZCBzY3JvbGxpbmdcbiAgICAgIGdldFVJVGV4dChVaVRleHQsIGltYWdlRW50aXR5LCB0ZXh0LCBmb250U2l6ZSwgd2lkdGgpXG4gICAgfVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGltYWdlRW50aXR5LFxuICAgICAgICBvcHRzOiB7XG4gICAgICAgICAgYnV0dG9uOiBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSLFxuICAgICAgICAgIGhvdmVyVGV4dDogJ0NsaWNrJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuc2V0KGVudGl0eSwgaW1hZ2VFbnRpdHkpXG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NMSUNLX0lNQUdFKVxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoaGlkZUFmdGVyU2Vjb25kcykge1xuICAgICAgc3RhcnRUaW1lb3V0KGVudGl0eSwgQWN0aW9uVHlwZS5ISURFX0lNQUdFLCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlSW1hZ2UoZW50aXR5LCB7IGltYWdlRW50aXR5OiBpbWFnZUVudGl0eSB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBISURFX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVJbWFnZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSElERV9JTUFHRT4sXG4gICkge1xuICAgIGNvbnN0IHsgaW1hZ2VFbnRpdHkgfSA9IHBheWxvYWRcblxuICAgIGlmIChpbWFnZUVudGl0eSkge1xuICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShpbWFnZUVudGl0eSBhcyBFbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbWFnZSA9IGxhc3RVaUVudGl0eUNsaWNrZWQuZ2V0KGVudGl0eSlcbiAgICAgIGlmIChjbGlja2VkSW1hZ2UpIHtcbiAgICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShjbGlja2VkSW1hZ2UpXG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuZGVsZXRlKGVudGl0eSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBEQU1BR0VcbiAgZnVuY3Rpb24gaGFuZGxlRGFtYWdlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5EQU1BR0U+LFxuICApIHtcbiAgICBjb25zdCB7IHJhZGl1cywgbGF5ZXIsIGhpdHMgfSA9IHBheWxvYWRcbiAgICBjb25zdCBlbnRpdHlQb3NpdGlvbiA9IEF2YXRhckF0dGFjaC5oYXMoZW50aXR5KVxuICAgICAgPyBnZXRQbGF5ZXJQb3NpdGlvbigpXG4gICAgICA6IGdldFdvcmxkUG9zaXRpb24oZW50aXR5KVxuXG4gICAgY29uc3QgZ2V0Um9vdCA9IChlbnRpdHk6IEVudGl0eSk6IEVudGl0eSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBnZXRFbnRpdHlQYXJlbnQoZW50aXR5KVxuICAgICAgcmV0dXJuICFwYXJlbnQgPyBlbnRpdHkgOiBnZXRSb290KHBhcmVudClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiBkYW1hZ2VUYXJnZXRzKSB7XG4gICAgICBjb25zdCB0YXJnZXRQb3NpdGlvbiA9IGdldFdvcmxkUG9zaXRpb24odGFyZ2V0KVxuICAgICAgY29uc3QgZGlzdGFuY2UgPSBWZWN0b3IzLmRpc3RhbmNlKGVudGl0eVBvc2l0aW9uLCB0YXJnZXRQb3NpdGlvbilcblxuICAgICAgLy8gYXZvaWQgY2F1c2luZyBkYW1hZ2UgdG8gdGhlIGVudGl0eSBpdHNlbGYgb3IgaXRzIGNoaWxkcmVuXG4gICAgICBjb25zdCBlbnRpdHlUcmVlID0gQXJyYXkuZnJvbShcbiAgICAgICAgZ2V0Q29tcG9uZW50RW50aXR5VHJlZShlbmdpbmUsIGVudGl0eSwgVHJhbnNmb3JtKSxcbiAgICAgIClcbiAgICAgIGNvbnN0IGlzUGFydE9mRW50aXR5VHJlZSA9IGVudGl0eVRyZWUuc29tZSgoJCkgPT4gJCA9PT0gdGFyZ2V0KVxuICAgICAgaWYgKGlzUGFydE9mRW50aXR5VHJlZSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAobGF5ZXIpIHtcbiAgICAgICAgaWYgKGxheWVyID09PSBQcm94aW1pdHlMYXllci5QTEFZRVIpIHtcbiAgICAgICAgICBjb25zdCByb290ID0gZ2V0Um9vdCh0YXJnZXQpXG4gICAgICAgICAgaWYgKHJvb3QgIT09IGVuZ2luZS5QbGF5ZXJFbnRpdHkgJiYgcm9vdCAhPT0gZW5naW5lLkNhbWVyYUVudGl0eSkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgPT09IFByb3hpbWl0eUxheWVyLk5PTl9QTEFZRVIpIHtcbiAgICAgICAgICBjb25zdCByb290ID0gZ2V0Um9vdCh0YXJnZXQpXG4gICAgICAgICAgaWYgKHJvb3QgPT09IGVuZ2luZS5QbGF5ZXJFbnRpdHkgfHwgcm9vdCA9PT0gZW5naW5lLkNhbWVyYUVudGl0eSkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkaXN0YW5jZSA8PSByYWRpdXMpIHtcbiAgICAgICAgY29uc3QgdG90YWwgPSBoaXRzID09PSB1bmRlZmluZWQgPyAxIDogTWF0aC5tYXgoaGl0cywgMSlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHModGFyZ2V0KVxuICAgICAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9EQU1BR0UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNT1ZFX1BMQVlFUl9IRVJFXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVQbGF5ZXJIZXJlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuTU9WRV9QTEFZRVJfSEVSRT4sXG4gICkge1xuICAgIGNvbnN0IGhlcmUgPSBnZXRXb3JsZFBvc2l0aW9uKGVudGl0eSlcbiAgICB2b2lkIG1vdmVQbGF5ZXJUbyh7IG5ld1JlbGF0aXZlUG9zaXRpb246IGhlcmUgfSlcbiAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpXG4gICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1BMQVlFUl9TUEFXTilcbiAgfVxuXG4gIC8vIFBMQUNFX09OX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVQbGFjZU9uUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBQ0VfT05fUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGNvbnN0IHBsYXllciA9IFRyYW5zZm9ybS5nZXRPck51bGwoZW5naW5lLlBsYXllckVudGl0eSlcbiAgICBpZiAodHJhbnNmb3JtICYmIHBsYXllcikge1xuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gcGxheWVyLnBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgLy8gUk9UQVRFX0FTX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVBc1BsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJPVEFURV9BU19QTEFZRVI+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgY29uc3QgcGxheWVyID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuUGxheWVyRW50aXR5KVxuICAgIGlmICh0cmFuc2Zvcm0gJiYgcGxheWVyKSB7XG4gICAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSBwbGF5ZXIucm90YXRpb25cbiAgICB9XG4gIH1cblxuICAvLyBQTEFDRV9PTl9DQU1FUkFcbiAgZnVuY3Rpb24gaGFuZGxlUGxhY2VPbkNhbWVyYShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX0NBTUVSQT4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBjb25zdCBjYW1lcmEgPSBUcmFuc2Zvcm0uZ2V0T3JOdWxsKGVuZ2luZS5DYW1lcmFFbnRpdHkpXG4gICAgaWYgKHRyYW5zZm9ybSAmJiBjYW1lcmEpIHtcbiAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IGNhbWVyYS5wb3NpdGlvblxuICAgIH1cbiAgfVxuXG4gIC8vIFJPVEFURV9BU19DQU1FUkFcbiAgZnVuY3Rpb24gaGFuZGxlUm90YXRlQXNDYW1lcmEoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfQ0FNRVJBPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGNvbnN0IGNhbWVyYSA9IFRyYW5zZm9ybS5nZXRPck51bGwoZW5naW5lLkNhbWVyYUVudGl0eSlcbiAgICBpZiAodHJhbnNmb3JtICYmIGNhbWVyYSkge1xuICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uID0gY2FtZXJhLnJvdGF0aW9uXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1BPU0lUSU9OXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFBvc2l0aW9uKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfUE9TSVRJT04+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgaWYgKHBheWxvYWQucmVsYXRpdmUpIHtcbiAgICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gVmVjdG9yMy5hZGQoXG4gICAgICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uLFxuICAgICAgICAgIFZlY3RvcjMuY3JlYXRlKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm0ucG9zaXRpb24gPSBWZWN0b3IzLmNyZWF0ZShwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9ST1RBVElPTlxuICBmdW5jdGlvbiBoYW5kbGVTZXRSb3RhdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1JPVEFUSU9OPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlbGF0aXZlKSB7XG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24ubXVsdGlwbHkoXG4gICAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uLFxuICAgICAgICAgIFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyhwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uID0gUXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKFxuICAgICAgICAgIHBheWxvYWQueCxcbiAgICAgICAgICBwYXlsb2FkLnksXG4gICAgICAgICAgcGF5bG9hZC56LFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1NDQUxFXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFNjYWxlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU0NBTEU+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgaWYgKHBheWxvYWQucmVsYXRpdmUpIHtcbiAgICAgICAgdHJhbnNmb3JtLnNjYWxlID0gVmVjdG9yMy5hZGQoXG4gICAgICAgICAgdHJhbnNmb3JtLnNjYWxlLFxuICAgICAgICAgIFZlY3RvcjMuY3JlYXRlKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBWZWN0b3IzLmNyZWF0ZShwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZPTExPV19QTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlRm9sbG93UGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5GT0xMT1dfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyBzcGVlZCwgeCwgeSwgeiwgbWluRGlzdGFuY2UgfSA9IHBheWxvYWRcbiAgICBmb2xsb3dNYXAuc2V0KGVudGl0eSwge1xuICAgICAgdGFyZ2V0OiBlbmdpbmUuUGxheWVyRW50aXR5LFxuICAgICAgc3BlZWQsXG4gICAgICBtaW5EaXN0YW5jZSxcbiAgICAgIGF4ZXM6IHsgeCwgeSwgeiB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX0ZPTExPV0lOR19QTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlU3RvcEZvbGxvd2luZ1BsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfRk9MTE9XSU5HX1BMQVlFUj4sXG4gICkge1xuICAgIGZvbGxvd01hcC5kZWxldGUoZW50aXR5KVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUmFuZG9tKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5SQU5ET00+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMgfSA9IHBheWxvYWRcbiAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBhY3Rpb25zW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFjdGlvbnMubGVuZ3RoKV1cbiAgICBjb25zdCBhY3Rpb24gPSBmaW5kQWN0aW9uQnlOYW1lKGVudGl0eSwgYWN0aW9uTmFtZSlcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUJhdGNoKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5CQVRDSD4sXG4gICkge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcGF5bG9hZFxuICAgIGNvbnN0IGFjdGlvbkV2ZW50cyA9IGdldEFjdGlvbkV2ZW50cyhlbnRpdHkpXG4gICAgZm9yIChjb25zdCBhY3Rpb25OYW1lIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKVxuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUhlYWxQbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkhFQUxfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyBtdWx0aXBsaWVyIH0gPSBwYXlsb2FkXG5cbiAgICBjb25zdCBnZXRSb290ID0gKGVudGl0eTogRW50aXR5KTogRW50aXR5ID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGdldEVudGl0eVBhcmVudChlbnRpdHkpXG4gICAgICByZXR1cm4gIXBhcmVudCA/IGVudGl0eSA6IGdldFJvb3QocGFyZW50KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIGhlYWxUYXJnZXRzKSB7XG4gICAgICBjb25zdCByb290ID0gZ2V0Um9vdCh0YXJnZXQpXG4gICAgICBpZiAocm9vdCA9PT0gZW5naW5lLlBsYXllckVudGl0eSkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyh0YXJnZXQpXG4gICAgICAgIGNvbnN0IHRvdGFsID0gTWF0aC5tYXgobXVsdGlwbGllciA/PyAxLCAxKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsOyBpKyspIHtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fSEVBTF9QTEFZRVIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|