-\r
-       while (RunBootloader)\r
-       {\r
-               USB_USBTask();\r
-               CDC_Task();\r
-       }\r
-       \r
-       Endpoint_SelectEndpoint(CDC_TX_EPNUM);\r
-\r
-       /* Wait until any pending transmissions have completed before shutting down */\r
-       while (!(Endpoint_IsINReady()));\r
-       \r
-       /* Shut down the USB subsystem */\r
-       USB_ShutDown();\r
-       \r
-       /* Relocate the interrupt vector table back to the application section */\r
-       MCUCR = (1 << IVCE);\r
-       MCUCR = 0;\r
-\r
-       /* Reset any used hardware ports back to their defaults */\r
-       PORTD = 0;\r
-       DDRD  = 0;\r
-       \r
-       #if defined(PORTE)\r
-       PORTE = 0;\r
-       DDRE  = 0;\r
-       #endif\r
-       \r
-       /* Re-enable RWW section */\r
-       boot_rww_enable();\r
-\r
-       /* Start the user application */\r
-       AppPtr_t AppStartPtr = (AppPtr_t)0x0000;\r
-       AppStartPtr();  \r
-}\r
-\r
-/** Event handler for the USB_Disconnect event. This indicates that the bootloader should exit and the user\r
- *  application started.\r
- */\r
-EVENT_HANDLER(USB_Disconnect)\r
-{\r
-       /* Upon disconnection, run user application */\r
-       RunBootloader = false;\r