| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
							
- exports = module.exports = function(bytes)
 
- {
 
-     var i = 0;
 
-     while(i < bytes.length)
 
-     {
 
-         if(     (// ASCII
 
-                     bytes[i] == 0x09 ||
 
-                     bytes[i] == 0x0A ||
 
-                     bytes[i] == 0x0D ||
 
-                     (0x20 <= bytes[i] && bytes[i] <= 0x7E)
 
-                 )
 
-           ) {
 
-               i += 1;
 
-               continue;
 
-           }
 
-         if(     (// non-overlong 2-byte
 
-                     (0xC2 <= bytes[i] && bytes[i] <= 0xDF) &&
 
-                     (0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF)
 
-                 )
 
-           ) {
 
-               i += 2;
 
-               continue;
 
-           }
 
-         if(     (// excluding overlongs
 
-                     bytes[i] == 0xE0 &&
 
-                     (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&
 
-                     (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF)
 
-                 ) ||
 
-                 (// straight 3-byte
 
-                  ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) ||
 
-                   bytes[i] == 0xEE ||
 
-                   bytes[i] == 0xEF) &&
 
-                  (0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) &&
 
-                  (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF)
 
-                 ) ||
 
-                 (// excluding surrogates
 
-                  bytes[i] == 0xED &&
 
-                  (0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) &&
 
-                  (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF)
 
-                 )
 
-           ) {
 
-               i += 3;
 
-               continue;
 
-           }
 
-         if(     (// planes 1-3
 
-                     bytes[i] == 0xF0 &&
 
-                     (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&
 
-                     (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&
 
-                     (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)
 
-                 ) ||
 
-                 (// planes 4-15
 
-                  (0xF1 <= bytes[i] && bytes[i] <= 0xF3) &&
 
-                  (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&
 
-                  (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&
 
-                  (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)
 
-                 ) ||
 
-                 (// plane 16
 
-                  bytes[i] == 0xF4 &&
 
-                  (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) &&
 
-                  (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&
 
-                  (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)
 
-                 )
 
-           ) {
 
-               i += 4;
 
-               continue;
 
-           }
 
-         return false;
 
-     }
 
-     return true;
 
- }
 
 
  |