aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape')
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js522
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js523
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js2058
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js522
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js521
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js522
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js28
28 files changed, 5407 insertions, 0 deletions
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js
new file mode 100644
index 000000000..83b6972ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js
@@ -0,0 +1,522 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T1;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: WhiteSpace
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u005B\u005C\u005D\u005E\u005F\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u0100\u0101\u0102\u0103\u0104\u0105\u0106\u0107\u0108\u0109\u010A\u010B\u010C\u010D\u010E\u010F\u0110\u0111\u0112\u0113\u0114\u0115\u0116\u0117\u0118\u0119\u011A\u011B\u011C\u011D\u011E\u011F\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127\u0128\u0129\u012A\u012B\u012C\u012D\u012E\u012F\u0130\u0131\u0132\u0133\u0134\u0135\u0136\u0137\u0138\u0139\u013A\u013B\u013C\u013D\u013E\u013F\u0140\u0141\u0142\u0143\u0144\u0145\u0146\u0147\u0148\u0149\u014A\u014B\u014C\u014D\u014E\u014F\u0150\u0151\u0152\u0153\u0154\u0155\u0156\u0157\u0158\u0159\u015A\u015B\u015C\u015D\u015E\u015F\u0160\u0161\u0162\u0163\u0164\u0165\u0166\u0167\u0168\u0169\u016A\u016B\u016C\u016D\u016E\u016F\u0170\u0171\u0172\u0173\u0174\u0175\u0176\u0177\u0178\u0179\u017A\u017B\u017C\u017D\u017E\u017F\u0180\u0181\u0182\u0183\u0184\u0185\u0186\u0187\u0188\u0189\u018A\u018B\u018C\u018D\u018E\u018F\u0190\u0191\u0192\u0193\u0194\u0195\u0196\u0197\u0198\u0199\u019A\u019B\u019C\u019D\u019E\u019F\u01A0\u01A1\u01A2\u01A3\u01A4\u01A5\u01A6\u01A7\u01A8\u01A9\u01AA\u01AB\u01AC\u01AD\u01AE\u01AF\u01B0\u01B1\u01B2\u01B3\u01B4\u01B5\u01B6\u01B7\u01B8\u01B9\u01BA\u01BB\u01BC\u01BD\u01BE\u01BF\u01C0\u01C1\u01C2\u01C3\u01C4\u01C5\u01C6\u01C7\u01C8\u01C9\u01CA\u01CB\u01CC\u01CD\u01CE\u01CF\u01D0\u01D1\u01D2\u01D3\u01D4\u01D5\u01D6\u01D7\u01D8\u01D9\u01DA\u01DB\u01DC\u01DD\u01DE\u01DF\u01E0\u01E1\u01E2\u01E3\u01E4\u01E5\u01E6\u01E7\u01E8\u01E9\u01EA\u01EB\u01EC\u01ED\u01EE\u01EF\u01F0\u01F1\u01F2\u01F3\u01F4\u01F5\u01F6\u01F7\u01F8\u01F9\u01FA\u01FB\u01FC\u01FD\u01FE\u01FF\u0200\u0201\u0202\u0203\u0204\u0205\u0206\u0207\u0208\u0209\u020A\u020B\u020C\u020D\u020E\u020F\u0210\u0211\u0212\u0213\u0214\u0215\u0216\u0217\u0218\u0219\u021A\u021B\u021C\u021D\u021E\u021F\u0220\u0221\u0222\u0223\u0224\u0225\u0226\u0227\u0228\u0229\u022A\u022B\u022C\u022D\u022E\u022F\u0230\u0231\u0232\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023A\u023B\u023C\u023D\u023E\u023F\u0240\u0241\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024A\u024B\u024C\u024D\u024E\u024F\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D\u025E\u025F\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E\u028F\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE\u02AF\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE\u02BF\u02C0\u02C1\u02C2\u02C3\u02C4\u02C5\u02C6\u02C7\u02C8\u02C9\u02CA\u02CB\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02D2\u02D3\u02D4\u02D5\u02D6\u02D7\u02D8\u02D9\u02DA\u02DB\u02DC\u02DD\u02DE\u02DF\u02E0\u02E1\u02E2\u02E3\u02E4\u02E5\u02E6\u02E7\u02E8\u02E9\u02EA\u02EB\u02EC\u02ED\u02EE\u02EF\u02F0\u02F1\u02F2\u02F3\u02F4\u02F5\u02F6\u02F7\u02F8\u02F9\u02FA\u02FB\u02FC\u02FD\u02FE\u02FF\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B\u036C\u036D\u036E\u036F\u0370\u0371\u0372\u0373\u0374\u0375\u0376\u0377\u0378\u0379\u037A\u037B\u037C\u037D\u037E\u037F\u0380\u0381\u0382\u0383\u0384\u0385\u0386\u0387\u0388\u0389\u038A\u038B\u038C\u038D\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A2\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\u03CF\u03D0\u03D1\u03D2\u03D3\u03D4\u03D5\u03D6\u03D7\u03D8\u03D9\u03DA\u03DB\u03DC\u03DD\u03DE\u03DF\u03E0\u03E1\u03E2\u03E3\u03E4\u03E5\u03E6\u03E7\u03E8\u03E9\u03EA\u03EB\u03EC\u03ED\u03EE\u03EF\u03F0\u03F1\u03F2\u03F3\u03F4\u03F5\u03F6\u03F7\u03F8\u03F9\u03FA\u03FB\u03FC\u03FD\u03FE\u03FF";
+if (i0.replace(/\s+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \s between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = i1;
+if (i1.replace(/\s+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \s between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = i2;
+if (i2.replace(/\s+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \s between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = i3;
+if (i3.replace(/\s+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \s between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = i4;
+if (i4.replace(/\s+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \s between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "\u1400\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140A\u140B\u140C\u140D\u140E\u140F\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141A\u141B\u141C\u141D\u141E\u141F\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142A\u142B\u142C\u142D\u142E\u142F\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143A\u143B\u143C\u143D\u143E\u143F\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144A\u144B\u144C\u144D\u144E\u144F\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145A\u145B\u145C\u145D\u145E\u145F\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146A\u146B\u146C\u146D\u146E\u146F\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147A\u147B\u147C\u147D\u147E\u147F\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148A\u148B\u148C\u148D\u148E\u148F\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149A\u149B\u149C\u149D\u149E\u149F\u14A0\u14A1\u14A2\u14A3\u14A4\u14A5\u14A6\u14A7\u14A8\u14A9\u14AA\u14AB\u14AC\u14AD\u14AE\u14AF\u14B0\u14B1\u14B2\u14B3\u14B4\u14B5\u14B6\u14B7\u14B8\u14B9\u14BA\u14BB\u14BC\u14BD\u14BE\u14BF\u14C0\u14C1\u14C2\u14C3\u14C4\u14C5\u14C6\u14C7\u14C8\u14C9\u14CA\u14CB\u14CC\u14CD\u14CE\u14CF\u14D0\u14D1\u14D2\u14D3\u14D4\u14D5\u14D6\u14D7\u14D8\u14D9\u14DA\u14DB\u14DC\u14DD\u14DE\u14DF\u14E0\u14E1\u14E2\u14E3\u14E4\u14E5\u14E6\u14E7\u14E8\u14E9\u14EA\u14EB\u14EC\u14ED\u14EE\u14EF\u14F0\u14F1\u14F2\u14F3\u14F4\u14F5\u14F6\u14F7\u14F8\u14F9\u14FA\u14FB\u14FC\u14FD\u14FE\u14FF\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150A\u150B\u150C\u150D\u150E\u150F\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151A\u151B\u151C\u151D\u151E\u151F\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152A\u152B\u152C\u152D\u152E\u152F\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153A\u153B\u153C\u153D\u153E\u153F\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154A\u154B\u154C\u154D\u154E\u154F\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155A\u155B\u155C\u155D\u155E\u155F\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156A\u156B\u156C\u156D\u156E\u156F\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157A\u157B\u157C\u157D\u157E\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158A\u158B\u158C\u158D\u158E\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1596\u1597\u1598\u1599\u159A\u159B\u159C\u159D\u159E\u159F\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u15A7\u15A8\u15A9\u15AA\u15AB\u15AC\u15AD\u15AE\u15AF\u15B0\u15B1\u15B2\u15B3\u15B4\u15B5\u15B6\u15B7\u15B8\u15B9\u15BA\u15BB\u15BC\u15BD\u15BE\u15BF\u15C0\u15C1\u15C2\u15C3\u15C4\u15C5\u15C6\u15C7\u15C8\u15C9\u15CA\u15CB\u15CC\u15CD\u15CE\u15CF\u15D0\u15D1\u15D2\u15D3\u15D4\u15D5\u15D6\u15D7\u15D8\u15D9\u15DA\u15DB\u15DC\u15DD\u15DE\u15DF\u15E0\u15E1\u15E2\u15E3\u15E4\u15E5\u15E6\u15E7\u15E8\u15E9\u15EA\u15EB\u15EC\u15ED\u15EE\u15EF\u15F0\u15F1\u15F2\u15F3\u15F4\u15F5\u15F6\u15F7\u15F8\u15F9\u15FA\u15FB\u15FC\u15FD\u15FE\u15FF\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160A\u160B\u160C\u160D\u160E\u160F\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161A\u161B\u161C\u161D\u161E\u161F\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162A\u162B\u162C\u162D\u162E\u162F\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163A\u163B\u163C\u163D\u163E\u163F\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164A\u164B\u164C\u164D\u164E\u164F\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165A\u165B\u165C\u165D\u165E\u165F\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166A\u166B\u166C\u166D\u166E\u166F\u1670\u1671\u1672\u1673\u1674\u1675\u1676\u1677\u1678\u1679\u167A\u167B\u167C\u167D\u167E\u167F\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168A\u168B\u168C\u168D\u168E\u168F\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169A\u169B\u169C\u169D\u169E\u169F\u16A0\u16A1\u16A2\u16A3\u16A4\u16A5\u16A6\u16A7\u16A8\u16A9\u16AA\u16AB\u16AC\u16AD\u16AE\u16AF\u16B0\u16B1\u16B2\u16B3\u16B4\u16B5\u16B6\u16B7\u16B8\u16B9\u16BA\u16BB\u16BC\u16BD\u16BE\u16BF\u16C0\u16C1\u16C2\u16C3\u16C4\u16C5\u16C6\u16C7\u16C8\u16C9\u16CA\u16CB\u16CC\u16CD\u16CE\u16CF\u16D0\u16D1\u16D2\u16D3\u16D4\u16D5\u16D6\u16D7\u16D8\u16D9\u16DA\u16DB\u16DC\u16DD\u16DE\u16DF\u16E0\u16E1\u16E2\u16E3\u16E4\u16E5\u16E6\u16E7\u16E8\u16E9\u16EA\u16EB\u16EC\u16ED\u16EE\u16EF\u16F0\u16F1\u16F2\u16F3\u16F4\u16F5\u16F6\u16F7\u16F8\u16F9\u16FA\u16FB\u16FC\u16FD\u16FE\u16FF\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170A\u170B\u170C\u170D\u170E\u170F\u1710\u1711\u1712\u1713\u1714\u1715\u1716\u1717\u1718\u1719\u171A\u171B\u171C\u171D\u171E\u171F\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172A\u172B\u172C\u172D\u172E\u172F\u1730\u1731\u1732\u1733\u1734\u1735\u1736\u1737\u1738\u1739\u173A\u173B\u173C\u173D\u173E\u173F\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174A\u174B\u174C\u174D\u174E\u174F\u1750\u1751\u1752\u1753\u1754\u1755\u1756\u1757\u1758\u1759\u175A\u175B\u175C\u175D\u175E\u175F\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176A\u176B\u176C\u176D\u176E\u176F\u1770\u1771\u1772\u1773\u1774\u1775\u1776\u1777\u1778\u1779\u177A\u177B\u177C\u177D\u177E\u177F\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178A\u178B\u178C\u178D\u178E\u178F\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179A\u179B\u179C\u179D\u179E\u179F\u17A0\u17A1\u17A2\u17A3\u17A4\u17A5\u17A6\u17A7\u17A8\u17A9\u17AA\u17AB\u17AC\u17AD\u17AE\u17AF\u17B0\u17B1\u17B2\u17B3\u17B4\u17B5\u17B6\u17B7\u17B8\u17B9\u17BA\u17BB\u17BC\u17BD\u17BE\u17BF\u17C0\u17C1\u17C2\u17C3\u17C4\u17C5\u17C6\u17C7\u17C8\u17C9\u17CA\u17CB\u17CC\u17CD\u17CE\u17CF\u17D0\u17D1\u17D2\u17D3\u17D4\u17D5\u17D6\u17D7\u17D8\u17D9\u17DA\u17DB\u17DC\u17DD\u17DE\u17DF\u17E0\u17E1\u17E2\u17E3\u17E4\u17E5\u17E6\u17E7\u17E8\u17E9\u17EA\u17EB\u17EC\u17ED\u17EE\u17EF\u17F0\u17F1\u17F2\u17F3\u17F4\u17F5\u17F6\u17F7\u17F8\u17F9\u17FA\u17FB\u17FC\u17FD\u17FE\u17FF";
+if (i5.replace(/\s+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \s between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "\u1800\u1801\u1802\u1803\u1804\u1805\u1806\u1807\u1808\u1809\u180A\u180B\u180C\u180D\u180F\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819\u181A\u181B\u181C\u181D\u181E\u181F\u1820\u1821\u1822\u1823\u1824\u1825\u1826\u1827\u1828\u1829\u182A\u182B\u182C\u182D\u182E\u182F\u1830\u1831\u1832\u1833\u1834\u1835\u1836\u1837\u1838\u1839\u183A\u183B\u183C\u183D\u183E\u183F\u1840\u1841\u1842\u1843\u1844\u1845\u1846\u1847\u1848\u1849\u184A\u184B\u184C\u184D\u184E\u184F\u1850\u1851\u1852\u1853\u1854\u1855\u1856\u1857\u1858\u1859\u185A\u185B\u185C\u185D\u185E\u185F\u1860\u1861\u1862\u1863\u1864\u1865\u1866\u1867\u1868\u1869\u186A\u186B\u186C\u186D\u186E\u186F\u1870\u1871\u1872\u1873\u1874\u1875\u1876\u1877\u1878\u1879\u187A\u187B\u187C\u187D\u187E\u187F\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1887\u1888\u1889\u188A\u188B\u188C\u188D\u188E\u188F\u1890\u1891\u1892\u1893\u1894\u1895\u1896\u1897\u1898\u1899\u189A\u189B\u189C\u189D\u189E\u189F\u18A0\u18A1\u18A2\u18A3\u18A4\u18A5\u18A6\u18A7\u18A8\u18A9\u18AA\u18AB\u18AC\u18AD\u18AE\u18AF\u18B0\u18B1\u18B2\u18B3\u18B4\u18B5\u18B6\u18B7\u18B8\u18B9\u18BA\u18BB\u18BC\u18BD\u18BE\u18BF\u18C0\u18C1\u18C2\u18C3\u18C4\u18C5\u18C6\u18C7\u18C8\u18C9\u18CA\u18CB\u18CC\u18CD\u18CE\u18CF\u18D0\u18D1\u18D2\u18D3\u18D4\u18D5\u18D6\u18D7\u18D8\u18D9\u18DA\u18DB\u18DC\u18DD\u18DE\u18DF\u18E0\u18E1\u18E2\u18E3\u18E4\u18E5\u18E6\u18E7\u18E8\u18E9\u18EA\u18EB\u18EC\u18ED\u18EE\u18EF\u18F0\u18F1\u18F2\u18F3\u18F4\u18F5\u18F6\u18F7\u18F8\u18F9\u18FA\u18FB\u18FC\u18FD\u18FE\u18FF\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u1909\u190A\u190B\u190C\u190D\u190E\u190F\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191A\u191B\u191C\u191D\u191E\u191F\u1920\u1921\u1922\u1923\u1924\u1925\u1926\u1927\u1928\u1929\u192A\u192B\u192C\u192D\u192E\u192F\u1930\u1931\u1932\u1933\u1934\u1935\u1936\u1937\u1938\u1939\u193A\u193B\u193C\u193D\u193E\u193F\u1940\u1941\u1942\u1943\u1944\u1945\u1946\u1947\u1948\u1949\u194A\u194B\u194C\u194D\u194E\u194F\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195A\u195B\u195C\u195D\u195E\u195F\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196A\u196B\u196C\u196D\u196E\u196F\u1970\u1971\u1972\u1973\u1974\u1975\u1976\u1977\u1978\u1979\u197A\u197B\u197C\u197D\u197E\u197F\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198A\u198B\u198C\u198D\u198E\u198F\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199A\u199B\u199C\u199D\u199E\u199F\u19A0\u19A1\u19A2\u19A3\u19A4\u19A5\u19A6\u19A7\u19A8\u19A9\u19AA\u19AB\u19AC\u19AD\u19AE\u19AF\u19B0\u19B1\u19B2\u19B3\u19B4\u19B5\u19B6\u19B7\u19B8\u19B9\u19BA\u19BB\u19BC\u19BD\u19BE\u19BF\u19C0\u19C1\u19C2\u19C3\u19C4\u19C5\u19C6\u19C7\u19C8\u19C9\u19CA\u19CB\u19CC\u19CD\u19CE\u19CF\u19D0\u19D1\u19D2\u19D3\u19D4\u19D5\u19D6\u19D7\u19D8\u19D9\u19DA\u19DB\u19DC\u19DD\u19DE\u19DF\u19E0\u19E1\u19E2\u19E3\u19E4\u19E5\u19E6\u19E7\u19E8\u19E9\u19EA\u19EB\u19EC\u19ED\u19EE\u19EF\u19F0\u19F1\u19F2\u19F3\u19F4\u19F5\u19F6\u19F7\u19F8\u19F9\u19FA\u19FB\u19FC\u19FD\u19FE\u19FF\u1A00\u1A01\u1A02\u1A03\u1A04\u1A05\u1A06\u1A07\u1A08\u1A09\u1A0A\u1A0B\u1A0C\u1A0D\u1A0E\u1A0F\u1A10\u1A11\u1A12\u1A13\u1A14\u1A15\u1A16\u1A17\u1A18\u1A19\u1A1A\u1A1B\u1A1C\u1A1D\u1A1E\u1A1F\u1A20\u1A21\u1A22\u1A23\u1A24\u1A25\u1A26\u1A27\u1A28\u1A29\u1A2A\u1A2B\u1A2C\u1A2D\u1A2E\u1A2F\u1A30\u1A31\u1A32\u1A33\u1A34\u1A35\u1A36\u1A37\u1A38\u1A39\u1A3A\u1A3B\u1A3C\u1A3D\u1A3E\u1A3F\u1A40\u1A41\u1A42\u1A43\u1A44\u1A45\u1A46\u1A47\u1A48\u1A49\u1A4A\u1A4B\u1A4C\u1A4D\u1A4E\u1A4F\u1A50\u1A51\u1A52\u1A53\u1A54\u1A55\u1A56\u1A57\u1A58\u1A59\u1A5A\u1A5B\u1A5C\u1A5D\u1A5E\u1A5F\u1A60\u1A61\u1A62\u1A63\u1A64\u1A65\u1A66\u1A67\u1A68\u1A69\u1A6A\u1A6B\u1A6C\u1A6D\u1A6E\u1A6F\u1A70\u1A71\u1A72\u1A73\u1A74\u1A75\u1A76\u1A77\u1A78\u1A79\u1A7A\u1A7B\u1A7C\u1A7D\u1A7E\u1A7F\u1A80\u1A81\u1A82\u1A83\u1A84\u1A85\u1A86\u1A87\u1A88\u1A89\u1A8A\u1A8B\u1A8C\u1A8D\u1A8E\u1A8F\u1A90\u1A91\u1A92\u1A93\u1A94\u1A95\u1A96\u1A97\u1A98\u1A99\u1A9A\u1A9B\u1A9C\u1A9D\u1A9E\u1A9F\u1AA0\u1AA1\u1AA2\u1AA3\u1AA4\u1AA5\u1AA6\u1AA7\u1AA8\u1AA9\u1AAA\u1AAB\u1AAC\u1AAD\u1AAE\u1AAF\u1AB0\u1AB1\u1AB2\u1AB3\u1AB4\u1AB5\u1AB6\u1AB7\u1AB8\u1AB9\u1ABA\u1ABB\u1ABC\u1ABD\u1ABE\u1ABF\u1AC0\u1AC1\u1AC2\u1AC3\u1AC4\u1AC5\u1AC6\u1AC7\u1AC8\u1AC9\u1ACA\u1ACB\u1ACC\u1ACD\u1ACE\u1ACF\u1AD0\u1AD1\u1AD2\u1AD3\u1AD4\u1AD5\u1AD6\u1AD7\u1AD8\u1AD9\u1ADA\u1ADB\u1ADC\u1ADD\u1ADE\u1ADF\u1AE0\u1AE1\u1AE2\u1AE3\u1AE4\u1AE5\u1AE6\u1AE7\u1AE8\u1AE9\u1AEA\u1AEB\u1AEC\u1AED\u1AEE\u1AEF\u1AF0\u1AF1\u1AF2\u1AF3\u1AF4\u1AF5\u1AF6\u1AF7\u1AF8\u1AF9\u1AFA\u1AFB\u1AFC\u1AFD\u1AFE\u1AFF\u1B00\u1B01\u1B02\u1B03\u1B04\u1B05\u1B06\u1B07\u1B08\u1B09\u1B0A\u1B0B\u1B0C\u1B0D\u1B0E\u1B0F\u1B10\u1B11\u1B12\u1B13\u1B14\u1B15\u1B16\u1B17\u1B18\u1B19\u1B1A\u1B1B\u1B1C\u1B1D\u1B1E\u1B1F\u1B20\u1B21\u1B22\u1B23\u1B24\u1B25\u1B26\u1B27\u1B28\u1B29\u1B2A\u1B2B\u1B2C\u1B2D\u1B2E\u1B2F\u1B30\u1B31\u1B32\u1B33\u1B34\u1B35\u1B36\u1B37\u1B38\u1B39\u1B3A\u1B3B\u1B3C\u1B3D\u1B3E\u1B3F\u1B40\u1B41\u1B42\u1B43\u1B44\u1B45\u1B46\u1B47\u1B48\u1B49\u1B4A\u1B4B\u1B4C\u1B4D\u1B4E\u1B4F\u1B50\u1B51\u1B52\u1B53\u1B54\u1B55\u1B56\u1B57\u1B58\u1B59\u1B5A\u1B5B\u1B5C\u1B5D\u1B5E\u1B5F\u1B60\u1B61\u1B62\u1B63\u1B64\u1B65\u1B66\u1B67\u1B68\u1B69\u1B6A\u1B6B\u1B6C\u1B6D\u1B6E\u1B6F\u1B70\u1B71\u1B72\u1B73\u1B74\u1B75\u1B76\u1B77\u1B78\u1B79\u1B7A\u1B7B\u1B7C\u1B7D\u1B7E\u1B7F\u1B80\u1B81\u1B82\u1B83\u1B84\u1B85\u1B86\u1B87\u1B88\u1B89\u1B8A\u1B8B\u1B8C\u1B8D\u1B8E\u1B8F\u1B90\u1B91\u1B92\u1B93\u1B94\u1B95\u1B96\u1B97\u1B98\u1B99\u1B9A\u1B9B\u1B9C\u1B9D\u1B9E\u1B9F\u1BA0\u1BA1\u1BA2\u1BA3\u1BA4\u1BA5\u1BA6\u1BA7\u1BA8\u1BA9\u1BAA\u1BAB\u1BAC\u1BAD\u1BAE\u1BAF\u1BB0\u1BB1\u1BB2\u1BB3\u1BB4\u1BB5\u1BB6\u1BB7\u1BB8\u1BB9\u1BBA\u1BBB\u1BBC\u1BBD\u1BBE\u1BBF\u1BC0\u1BC1\u1BC2\u1BC3\u1BC4\u1BC5\u1BC6\u1BC7\u1BC8\u1BC9\u1BCA\u1BCB\u1BCC\u1BCD\u1BCE\u1BCF\u1BD0\u1BD1\u1BD2\u1BD3\u1BD4\u1BD5\u1BD6\u1BD7\u1BD8\u1BD9\u1BDA\u1BDB\u1BDC\u1BDD\u1BDE\u1BDF\u1BE0\u1BE1\u1BE2\u1BE3\u1BE4\u1BE5\u1BE6\u1BE7\u1BE8\u1BE9\u1BEA\u1BEB\u1BEC\u1BED\u1BEE\u1BEF\u1BF0\u1BF1\u1BF2\u1BF3\u1BF4\u1BF5\u1BF6\u1BF7\u1BF8\u1BF9\u1BFA\u1BFB\u1BFC\u1BFD\u1BFE\u1BFF";
+if (i6.replace(/\s+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \s between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = i7;
+if (i7.replace(/\s+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \s between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "\u200B\u200C\u200D\u200E\u200F\u2010\u2011\u2012\u2013\u2014\u2015\u2016\u2017\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F\u2020\u2021\u2022\u2023\u2024\u2025\u2026\u2027\u202A\u202B\u202C\u202D\u202E\u2030\u2031\u2032\u2033\u2034\u2035\u2036\u2037\u2038\u2039\u203A\u203B\u203C\u203D\u203E\u203F\u2040\u2041\u2042\u2043\u2044\u2045\u2046\u2047\u2048\u2049\u204A\u204B\u204C\u204D\u204E\u204F\u2050\u2051\u2052\u2053\u2054\u2055\u2056\u2057\u2058\u2059\u205A\u205B\u205C\u205D\u205E\u2060\u2061\u2062\u2063\u2064\u2065\u2066\u2067\u2068\u2069\u206A\u206B\u206C\u206D\u206E\u206F\u2070\u2071\u2072\u2073\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D\u207E\u207F\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u208A\u208B\u208C\u208D\u208E\u208F\u2090\u2091\u2092\u2093\u2094\u2095\u2096\u2097\u2098\u2099\u209A\u209B\u209C\u209D\u209E\u209F\u20A0\u20A1\u20A2\u20A3\u20A4\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB\u20AC\u20AD\u20AE\u20AF\u20B0\u20B1\u20B2\u20B3\u20B4\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC\u20CD\u20CE\u20CF\u20D0\u20D1\u20D2\u20D3\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB\u20EC\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2\u20F3\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA\u20FB\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102\u2103\u2104\u2105\u2106\u2107\u2108\u2109\u210A\u210B\u210C\u210D\u210E\u210F\u2110\u2111\u2112\u2113\u2114\u2115\u2116\u2117\u2118\u2119\u211A\u211B\u211C\u211D\u211E\u211F\u2120\u2121\u2122\u2123\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B\u212C\u212D\u212E\u212F\u2130\u2131\u2132\u2133\u2134\u2135\u2136\u2137\u2138\u2139\u213A\u213B\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215A\u215B\u215C\u215D\u215E\u215F\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182\u2183\u2184\u2185\u2186\u2187\u2188\u2189\u218A\u218B\u218C\u218D\u218E\u218F\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219A\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA\u21AB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1\u21B2\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9\u21BA\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1\u21C2\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9\u21CA\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1\u21D2\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9\u21DA\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1\u21E2\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9\u21EA\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1\u21F2\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9\u21FA\u21FB\u21FC\u21FD\u21FE\u21FF\u2200\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220A\u220B\u220C\u220D\u220E\u220F\u2210\u2211\u2212\u2213\u2214\u2215\u2216\u2217\u2218\u2219\u221A\u221B\u221C\u221D\u221E\u221F\u2220\u2221\u2222\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222A\u222B\u222C\u222D\u222E\u222F\u2230\u2231\u2232\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2\u22C3\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302\u2303\u2304\u2305\u2306\u2307\u2308\u2309\u230A\u230B\u230C\u230D\u230E\u230F\u2310\u2311\u2312\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231A\u231B\u231C\u231D\u231E\u231F\u2320\u2321\u2322\u2323\u2324\u2325\u2326\u2327\u2328\u2329\u232A\u232B\u232C\u232D\u232E\u232F\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233A\u233B\u233C\u233D\u233E\u233F\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235A\u235B\u235C\u235D\u235E\u235F\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237A\u237B\u237C\u237D\u237E\u237F\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238A\u238B\u238C\u238D\u238E\u238F\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239A\u239B\u239C\u239D\u239E\u239F\u23A0\u23A1\u23A2\u23A3\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9\u23AA\u23AB\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1\u23B2\u23B3\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9\u23BA\u23BB\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1\u23C2\u23C3\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9\u23CA\u23CB\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1\u23D2\u23D3\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9\u23DA\u23DB\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1\u23E2\u23E3\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9\u23EA\u23EB\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1\u23F2\u23F3\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9\u23FA\u23FB\u23FC\u23FD\u23FE\u23FF";
+if (i8.replace(/\s+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \s between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = i9;
+if (i9.replace(/\s+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \s between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = i10;
+if (i10.replace(/\s+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \s between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = i11;
+if (i11.replace(/\s+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \s between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "\u3001\u3002\u3003\u3004\u3005\u3006\u3007\u3008\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011\u3012\u3013\u3014\u3015\u3016\u3017\u3018\u3019\u301A\u301B\u301C\u301D\u301E\u301F\u3020\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u302A\u302B\u302C\u302D\u302E\u302F\u3030\u3031\u3032\u3033\u3034\u3035\u3036\u3037\u3038\u3039\u303A\u303B\u303C\u303D\u303E\u303F\u3040\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093\u3094\u3095\u3096\u3097\u3098\u3099\u309A\u309B\u309C\u309D\u309E\u309F\u30A0\u30A1\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4\u30F5\u30F6\u30F7\u30F8\u30F9\u30FA\u30FB\u30FC\u30FD\u30FE\u30FF\u3100\u3101\u3102\u3103\u3104\u3105\u3106\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u312A\u312B\u312C\u312D\u312E\u312F\u3130\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318A\u318B\u318C\u318D\u318E\u318F\u3190\u3191\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199\u319A\u319B\u319C\u319D\u319E\u319F\u31A0\u31A1\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31B8\u31B9\u31BA\u31BB\u31BC\u31BD\u31BE\u31BF\u31C0\u31C1\u31C2\u31C3\u31C4\u31C5\u31C6\u31C7\u31C8\u31C9\u31CA\u31CB\u31CC\u31CD\u31CE\u31CF\u31D0\u31D1\u31D2\u31D3\u31D4\u31D5\u31D6\u31D7\u31D8\u31D9\u31DA\u31DB\u31DC\u31DD\u31DE\u31DF\u31E0\u31E1\u31E2\u31E3\u31E4\u31E5\u31E6\u31E7\u31E8\u31E9\u31EA\u31EB\u31EC\u31ED\u31EE\u31EF\u31F0\u31F1\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3200\u3201\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209\u320A\u320B\u320C\u320D\u320E\u320F\u3210\u3211\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219\u321A\u321B\u321C\u321D\u321E\u321F\u3220\u3221\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229\u322A\u322B\u322C\u322D\u322E\u322F\u3230\u3231\u3232\u3233\u3234\u3235\u3236\u3237\u3238\u3239\u323A\u323B\u323C\u323D\u323E\u323F\u3240\u3241\u3242\u3243\u3244\u3245\u3246\u3247\u3248\u3249\u324A\u324B\u324C\u324D\u324E\u324F\u3250\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325A\u325B\u325C\u325D\u325E\u325F\u3260\u3261\u3262\u3263\u3264\u3265\u3266\u3267\u3268\u3269\u326A\u326B\u326C\u326D\u326E\u326F\u3270\u3271\u3272\u3273\u3274\u3275\u3276\u3277\u3278\u3279\u327A\u327B\u327C\u327D\u327E\u327F\u3280\u3281\u3282\u3283\u3284\u3285\u3286\u3287\u3288\u3289\u328A\u328B\u328C\u328D\u328E\u328F\u3290\u3291\u3292\u3293\u3294\u3295\u3296\u3297\u3298\u3299\u329A\u329B\u329C\u329D\u329E\u329F\u32A0\u32A1\u32A2\u32A3\u32A4\u32A5\u32A6\u32A7\u32A8\u32A9\u32AA\u32AB\u32AC\u32AD\u32AE\u32AF\u32B0\u32B1\u32B2\u32B3\u32B4\u32B5\u32B6\u32B7\u32B8\u32B9\u32BA\u32BB\u32BC\u32BD\u32BE\u32BF\u32C0\u32C1\u32C2\u32C3\u32C4\u32C5\u32C6\u32C7\u32C8\u32C9\u32CA\u32CB\u32CC\u32CD\u32CE\u32CF\u32D0\u32D1\u32D2\u32D3\u32D4\u32D5\u32D6\u32D7\u32D8\u32D9\u32DA\u32DB\u32DC\u32DD\u32DE\u32DF\u32E0\u32E1\u32E2\u32E3\u32E4\u32E5\u32E6\u32E7\u32E8\u32E9\u32EA\u32EB\u32EC\u32ED\u32EE\u32EF\u32F0\u32F1\u32F2\u32F3\u32F4\u32F5\u32F6\u32F7\u32F8\u32F9\u32FA\u32FB\u32FC\u32FD\u32FE\u32FF\u3300\u3301\u3302\u3303\u3304\u3305\u3306\u3307\u3308\u3309\u330A\u330B\u330C\u330D\u330E\u330F\u3310\u3311\u3312\u3313\u3314\u3315\u3316\u3317\u3318\u3319\u331A\u331B\u331C\u331D\u331E\u331F\u3320\u3321\u3322\u3323\u3324\u3325\u3326\u3327\u3328\u3329\u332A\u332B\u332C\u332D\u332E\u332F\u3330\u3331\u3332\u3333\u3334\u3335\u3336\u3337\u3338\u3339\u333A\u333B\u333C\u333D\u333E\u333F\u3340\u3341\u3342\u3343\u3344\u3345\u3346\u3347\u3348\u3349\u334A\u334B\u334C\u334D\u334E\u334F\u3350\u3351\u3352\u3353\u3354\u3355\u3356\u3357\u3358\u3359\u335A\u335B\u335C\u335D\u335E\u335F\u3360\u3361\u3362\u3363\u3364\u3365\u3366\u3367\u3368\u3369\u336A\u336B\u336C\u336D\u336E\u336F\u3370\u3371\u3372\u3373\u3374\u3375\u3376\u3377\u3378\u3379\u337A\u337B\u337C\u337D\u337E\u337F\u3380\u3381\u3382\u3383\u3384\u3385\u3386\u3387\u3388\u3389\u338A\u338B\u338C\u338D\u338E\u338F\u3390\u3391\u3392\u3393\u3394\u3395\u3396\u3397\u3398\u3399\u339A\u339B\u339C\u339D\u339E\u339F\u33A0\u33A1\u33A2\u33A3\u33A4\u33A5\u33A6\u33A7\u33A8\u33A9\u33AA\u33AB\u33AC\u33AD\u33AE\u33AF\u33B0\u33B1\u33B2\u33B3\u33B4\u33B5\u33B6\u33B7\u33B8\u33B9\u33BA\u33BB\u33BC\u33BD\u33BE\u33BF\u33C0\u33C1\u33C2\u33C3\u33C4\u33C5\u33C6\u33C7\u33C8\u33C9\u33CA\u33CB\u33CC\u33CD\u33CE\u33CF\u33D0\u33D1\u33D2\u33D3\u33D4\u33D5\u33D6\u33D7\u33D8\u33D9\u33DA\u33DB\u33DC\u33DD\u33DE\u33DF\u33E0\u33E1\u33E2\u33E3\u33E4\u33E5\u33E6\u33E7\u33E8\u33E9\u33EA\u33EB\u33EC\u33ED\u33EE\u33EF\u33F0\u33F1\u33F2\u33F3\u33F4\u33F5\u33F6\u33F7\u33F8\u33F9\u33FA\u33FB\u33FC\u33FD\u33FE\u33FF";
+if (i12.replace(/\s+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \s between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = i13;
+if (i13.replace(/\s+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \s between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = i14;
+if (i14.replace(/\s+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \s between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = i15;
+if (i15.replace(/\s+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \s between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = i16;
+if (i16.replace(/\s+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \s between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = i17;
+if (i17.replace(/\s+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \s between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = i18;
+if (i18.replace(/\s+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \s between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = i19;
+if (i19.replace(/\s+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \s between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = i20;
+if (i20.replace(/\s+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \s between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = i21;
+if (i21.replace(/\s+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \s between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = i22;
+if (i22.replace(/\s+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \s between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = i23;
+if (i23.replace(/\s+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \s between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = i24;
+if (i24.replace(/\s+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \s between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = i25;
+if (i25.replace(/\s+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \s between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = i26;
+if (i26.replace(/\s+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \s between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = i27;
+if (i27.replace(/\s+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \s between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = i28;
+if (i28.replace(/\s+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \s between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = i29;
+if (i29.replace(/\s+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \s between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = i30;
+if (i30.replace(/\s+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \s between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = i31;
+if (i31.replace(/\s+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \s between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = i32;
+if (i32.replace(/\s+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \s between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = i33;
+if (i33.replace(/\s+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \s between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = i34;
+if (i34.replace(/\s+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \s between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = i35;
+if (i35.replace(/\s+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \s between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = i36;
+if (i36.replace(/\s+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \s between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = i37;
+if (i37.replace(/\s+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \s between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = i38;
+if (i38.replace(/\s+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \s between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = i39;
+if (i39.replace(/\s+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \s between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = i40;
+if (i40.replace(/\s+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \s between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = i41;
+if (i41.replace(/\s+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \s between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = i42;
+if (i42.replace(/\s+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \s between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = i43;
+if (i43.replace(/\s+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \s between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = i44;
+if (i44.replace(/\s+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \s between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = i45;
+if (i45.replace(/\s+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \s between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = i46;
+if (i46.replace(/\s+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \s between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = i47;
+if (i47.replace(/\s+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \s between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = i48;
+if (i48.replace(/\s+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \s between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = i49;
+if (i49.replace(/\s+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \s between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = i50;
+if (i50.replace(/\s+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \s between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = i51;
+if (i51.replace(/\s+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \s between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = i52;
+if (i52.replace(/\s+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \s between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = i53;
+if (i53.replace(/\s+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \s between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = i54;
+if (i54.replace(/\s+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \s between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = i55;
+if (i55.replace(/\s+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \s between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = i56;
+if (i56.replace(/\s+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \s between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = i57;
+if (i57.replace(/\s+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \s between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = i58;
+if (i58.replace(/\s+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \s between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = i59;
+if (i59.replace(/\s+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \s between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = i60;
+if (i60.replace(/\s+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \s between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = i61;
+if (i61.replace(/\s+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \s between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = i62;
+if (i62.replace(/\s+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \s between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = i63;
+if (i63.replace(/\s+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \s between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js
new file mode 100644
index 000000000..84b9828d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T2;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: LineTerminator;
+*/
+
+//CHECK#1
+var arr = /\s/.exec("\u000A");
+if ((arr === null) || (arr[0] !== "\u000A")) {
+ $ERROR('#1: var arr = /\\s/.exec("\\u000A"); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\s/.exec("\u000D");
+if ((arr === null) || (arr[0] !== "\u000D")) {
+ $ERROR('#2: var arr = /\\s/.exec("\\u000D"); arr[0] === "\\u000D". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#3
+var arr = /\s/.exec("\u2028");
+if ((arr === null) || (arr[0] !== "\u2028")) {
+ $ERROR('#3: var arr = /\\s/.exec("\\u2028"); arr[0] === "\\u2028". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#4
+var arr = /\s/.exec("\u2029");
+if ((arr === null) || (arr[0] !== "\u2029")) {
+ $ERROR('#4: var arr = /\\s/.exec("\\u2029"); arr[0] === "\\u2029". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js
new file mode 100644
index 000000000..68fdac57e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T3;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_s = /\s/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js
new file mode 100644
index 000000000..639d6081c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T4;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_s = /\s/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js
new file mode 100644
index 000000000..ce50ca5d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T5;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: Tested string is "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+*/
+
+//CHECK#1
+var non_s = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+if (/\s/.exec(non_s) !== null) {
+ $ERROR('#1: non-s');
+}
+
+//CHECK#2
+var non_S = '\f\n\r\t\v ';
+var regexp_s = /\s/g;
+var k = 0;
+while (regexp_s.exec(non_S) !== null) {
+ k++;
+}
+
+if (non_S.length !== k) {
+ $ERROR('#2: non-S');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js
new file mode 100644
index 000000000..8fe557dee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js
@@ -0,0 +1,523 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T1;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: WhiteSpace
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0009\u000A\u000B\u000C\u000D\u0020\u00A0";
+if (i0.replace(/\S+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \S between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = "";
+if (i1.replace(/\S+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \S between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = "";
+if (i2.replace(/\S+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \S between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = "";
+if (i3.replace(/\S+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \S between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = "";
+if (i4.replace(/\S+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \S between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "\u1680";
+if (i5.replace(/\S+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \S between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "\u180E";
+if (i6.replace(/\S+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \S between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = "";
+if (i7.replace(/\S+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \S between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F";
+if (i8.replace(/\S+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \S between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = "";
+if (i9.replace(/\S+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \S between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = "";
+if (i10.replace(/\S+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \S between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = "";
+if (i11.replace(/\S+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \S between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "\u3000";
+if (i12.replace(/\S+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \S between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = "";
+if (i13.replace(/\S+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \S between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = "";
+if (i14.replace(/\S+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \S between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = "";
+if (i15.replace(/\S+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \S between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = "";
+if (i16.replace(/\S+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \S between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = "";
+if (i17.replace(/\S+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \S between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = "";
+if (i18.replace(/\S+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \S between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = "";
+if (i19.replace(/\S+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \S between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = "";
+if (i20.replace(/\S+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \S between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = "";
+if (i21.replace(/\S+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \S between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = "";
+if (i22.replace(/\S+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \S between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = "";
+if (i23.replace(/\S+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \S between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = "";
+if (i24.replace(/\S+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \S between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = "";
+if (i25.replace(/\S+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \S between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = "";
+if (i26.replace(/\S+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \S between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = "";
+if (i27.replace(/\S+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \S between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = "";
+if (i28.replace(/\S+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \S between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = "";
+if (i29.replace(/\S+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \S between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = "";
+if (i30.replace(/\S+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \S between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = "";
+if (i31.replace(/\S+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \S between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = "";
+if (i32.replace(/\S+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \S between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = "";
+if (i33.replace(/\S+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \S between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = "";
+if (i34.replace(/\S+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \S between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = "";
+if (i35.replace(/\S+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \S between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = "";
+if (i36.replace(/\S+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \S between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = "";
+if (i37.replace(/\S+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \S between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = "";
+if (i38.replace(/\S+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \S between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = "";
+if (i39.replace(/\S+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \S between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = "";
+if (i40.replace(/\S+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \S between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = "";
+if (i41.replace(/\S+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \S between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = "";
+if (i42.replace(/\S+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \S between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = "";
+if (i43.replace(/\S+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \S between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = "";
+if (i44.replace(/\S+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \S between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = "";
+if (i45.replace(/\S+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \S between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = "";
+if (i46.replace(/\S+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \S between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = "";
+if (i47.replace(/\S+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \S between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = "";
+if (i48.replace(/\S+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \S between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = "";
+if (i49.replace(/\S+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \S between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = "";
+if (i50.replace(/\S+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \S between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = "";
+if (i51.replace(/\S+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \S between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = "";
+if (i52.replace(/\S+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \S between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = "";
+if (i53.replace(/\S+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \S between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = "";
+if (i54.replace(/\S+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \S between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = "";
+if (i55.replace(/\S+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \S between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = "";
+if (i56.replace(/\S+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \S between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = "";
+if (i57.replace(/\S+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \S between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = "";
+if (i58.replace(/\S+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \S between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = "";
+if (i59.replace(/\S+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \S between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = "";
+if (i60.replace(/\S+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \S between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = "";
+if (i61.replace(/\S+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \S between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = "";
+if (i62.replace(/\S+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \S between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = "";
+if (i63.replace(/\S+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \S between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js
new file mode 100644
index 000000000..9bd98b403
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T2;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: LineTerminator;
+*/
+
+//CHECK#1
+var arr = /\S/.exec("\u000A");
+if (arr !== null) {
+ $ERROR('#1: var arr = /\\S/.exec("\\u000A"); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\S/.exec("\u000D");
+if (arr !== null) {
+ $ERROR('#2: var arr = /\\S/.exec("\\u000D"); arr[0] === "\\u000D". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#3
+var arr = /\S/.exec("\u2028");
+if (arr !== null) {
+ $ERROR('#3: var arr = /\\S/.exec("\\u2028"); arr[0] === "\\u2028". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#4
+var arr = /\S/.exec("\u2029");
+if (arr !== null) {
+ $ERROR('#4: var arr = /\\S/.exec("\\u2029"); arr[0] === "\\u2029". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js
new file mode 100644
index 000000000..0c3d644df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T3;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_S = /\S/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js
new file mode 100644
index 000000000..a46442f74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T4;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_S = /\S/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js
new file mode 100644
index 000000000..36fbaedff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T5;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: Tested string is "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+*/
+
+//CHECK#1
+var non_s = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+var regexp_S = /\S/g;
+var k = 0;
+while (regexp_S.exec(non_s) !== null) {
+ k++;
+}
+
+if (non_s.length !== k) {
+ $ERROR('#1: non-s');
+}
+
+//CHECK#2
+var non_S = '\f\n\r\t\v ';
+if (/\S/.exec(non_S) !== null) {
+ $ERROR('#2: non-S');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js
new file mode 100644
index 000000000..a735cbfa5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js
@@ -0,0 +1,2058 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: A - Z;
+*/
+
+var i0 = "";
+for (var j = 0; j < 256; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\u000A\u000B\u000C\u000D\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0020\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u003A\u003B\u003C\u003D\u003E\u003F\u0040\u005B\u005C\u005D\u005E\u0060\u007B\u007C\u007D\u007E\u007F\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF";
+if (i0.replace(/\w+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \w between character 0 and ff");
+}
+
+var i1 = "";
+for (var j = 256; j < 512; j++)
+ i1 += String.fromCharCode(j);
+var o1 = i1;
+if (i1.replace(/\w+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \w between character 100 and 1ff");
+}
+
+var i2 = "";
+for (var j = 512; j < 768; j++)
+ i2 += String.fromCharCode(j);
+var o2 = i2;
+if (i2.replace(/\w+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \w between character 200 and 2ff");
+}
+
+var i3 = "";
+for (var j = 768; j < 1024; j++)
+ i3 += String.fromCharCode(j);
+var o3 = i3;
+if (i3.replace(/\w+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \w between character 300 and 3ff");
+}
+
+var i4 = "";
+for (var j = 1024; j < 1280; j++)
+ i4 += String.fromCharCode(j);
+var o4 = i4;
+if (i4.replace(/\w+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \w between character 400 and 4ff");
+}
+
+var i5 = "";
+for (var j = 1280; j < 1536; j++)
+ i5 += String.fromCharCode(j);
+var o5 = i5;
+if (i5.replace(/\w+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \w between character 500 and 5ff");
+}
+
+var i6 = "";
+for (var j = 1536; j < 1792; j++)
+ i6 += String.fromCharCode(j);
+var o6 = i6;
+if (i6.replace(/\w+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \w between character 600 and 6ff");
+}
+
+var i7 = "";
+for (var j = 1792; j < 2048; j++)
+ i7 += String.fromCharCode(j);
+var o7 = i7;
+if (i7.replace(/\w+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \w between character 700 and 7ff");
+}
+
+var i8 = "";
+for (var j = 2048; j < 2304; j++)
+ i8 += String.fromCharCode(j);
+var o8 = i8;
+if (i8.replace(/\w+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \w between character 800 and 8ff");
+}
+
+var i9 = "";
+for (var j = 2304; j < 2560; j++)
+ i9 += String.fromCharCode(j);
+var o9 = i9;
+if (i9.replace(/\w+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \w between character 900 and 9ff");
+}
+
+var i10 = "";
+for (var j = 2560; j < 2816; j++)
+ i10 += String.fromCharCode(j);
+var o10 = i10;
+if (i10.replace(/\w+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \w between character a00 and aff");
+}
+
+var i11 = "";
+for (var j = 2816; j < 3072; j++)
+ i11 += String.fromCharCode(j);
+var o11 = i11;
+if (i11.replace(/\w+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \w between character b00 and bff");
+}
+
+var i12 = "";
+for (var j = 3072; j < 3328; j++)
+ i12 += String.fromCharCode(j);
+var o12 = i12;
+if (i12.replace(/\w+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \w between character c00 and cff");
+}
+
+var i13 = "";
+for (var j = 3328; j < 3584; j++)
+ i13 += String.fromCharCode(j);
+var o13 = i13;
+if (i13.replace(/\w+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \w between character d00 and dff");
+}
+
+var i14 = "";
+for (var j = 3584; j < 3840; j++)
+ i14 += String.fromCharCode(j);
+var o14 = i14;
+if (i14.replace(/\w+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \w between character e00 and eff");
+}
+
+var i15 = "";
+for (var j = 3840; j < 4096; j++)
+ i15 += String.fromCharCode(j);
+var o15 = i15;
+if (i15.replace(/\w+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \w between character f00 and fff");
+}
+
+var i16 = "";
+for (var j = 4096; j < 4352; j++)
+ i16 += String.fromCharCode(j);
+var o16 = i16;
+if (i16.replace(/\w+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \w between character 1000 and 10ff");
+}
+
+var i17 = "";
+for (var j = 4352; j < 4608; j++)
+ i17 += String.fromCharCode(j);
+var o17 = i17;
+if (i17.replace(/\w+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \w between character 1100 and 11ff");
+}
+
+var i18 = "";
+for (var j = 4608; j < 4864; j++)
+ i18 += String.fromCharCode(j);
+var o18 = i18;
+if (i18.replace(/\w+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \w between character 1200 and 12ff");
+}
+
+var i19 = "";
+for (var j = 4864; j < 5120; j++)
+ i19 += String.fromCharCode(j);
+var o19 = i19;
+if (i19.replace(/\w+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \w between character 1300 and 13ff");
+}
+
+var i20 = "";
+for (var j = 5120; j < 5376; j++)
+ i20 += String.fromCharCode(j);
+var o20 = i20;
+if (i20.replace(/\w+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \w between character 1400 and 14ff");
+}
+
+var i21 = "";
+for (var j = 5376; j < 5632; j++)
+ i21 += String.fromCharCode(j);
+var o21 = i21;
+if (i21.replace(/\w+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \w between character 1500 and 15ff");
+}
+
+var i22 = "";
+for (var j = 5632; j < 5888; j++)
+ i22 += String.fromCharCode(j);
+var o22 = i22;
+if (i22.replace(/\w+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \w between character 1600 and 16ff");
+}
+
+var i23 = "";
+for (var j = 5888; j < 6144; j++)
+ i23 += String.fromCharCode(j);
+var o23 = i23;
+if (i23.replace(/\w+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \w between character 1700 and 17ff");
+}
+
+var i24 = "";
+for (var j = 6144; j < 6400; j++)
+ i24 += String.fromCharCode(j);
+var o24 = i24;
+if (i24.replace(/\w+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \w between character 1800 and 18ff");
+}
+
+var i25 = "";
+for (var j = 6400; j < 6656; j++)
+ i25 += String.fromCharCode(j);
+var o25 = i25;
+if (i25.replace(/\w+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \w between character 1900 and 19ff");
+}
+
+var i26 = "";
+for (var j = 6656; j < 6912; j++)
+ i26 += String.fromCharCode(j);
+var o26 = i26;
+if (i26.replace(/\w+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \w between character 1a00 and 1aff");
+}
+
+var i27 = "";
+for (var j = 6912; j < 7168; j++)
+ i27 += String.fromCharCode(j);
+var o27 = i27;
+if (i27.replace(/\w+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \w between character 1b00 and 1bff");
+}
+
+var i28 = "";
+for (var j = 7168; j < 7424; j++)
+ i28 += String.fromCharCode(j);
+var o28 = i28;
+if (i28.replace(/\w+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \w between character 1c00 and 1cff");
+}
+
+var i29 = "";
+for (var j = 7424; j < 7680; j++)
+ i29 += String.fromCharCode(j);
+var o29 = i29;
+if (i29.replace(/\w+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \w between character 1d00 and 1dff");
+}
+
+var i30 = "";
+for (var j = 7680; j < 7936; j++)
+ i30 += String.fromCharCode(j);
+var o30 = i30;
+if (i30.replace(/\w+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \w between character 1e00 and 1eff");
+}
+
+var i31 = "";
+for (var j = 7936; j < 8192; j++)
+ i31 += String.fromCharCode(j);
+var o31 = i31;
+if (i31.replace(/\w+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \w between character 1f00 and 1fff");
+}
+
+var i32 = "";
+for (var j = 8192; j < 8448; j++)
+ i32 += String.fromCharCode(j);
+var o32 = i32;
+if (i32.replace(/\w+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \w between character 2000 and 20ff");
+}
+
+var i33 = "";
+for (var j = 8448; j < 8704; j++)
+ i33 += String.fromCharCode(j);
+var o33 = i33;
+if (i33.replace(/\w+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \w between character 2100 and 21ff");
+}
+
+var i34 = "";
+for (var j = 8704; j < 8960; j++)
+ i34 += String.fromCharCode(j);
+var o34 = i34;
+if (i34.replace(/\w+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \w between character 2200 and 22ff");
+}
+
+var i35 = "";
+for (var j = 8960; j < 9216; j++)
+ i35 += String.fromCharCode(j);
+var o35 = i35;
+if (i35.replace(/\w+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \w between character 2300 and 23ff");
+}
+
+var i36 = "";
+for (var j = 9216; j < 9472; j++)
+ i36 += String.fromCharCode(j);
+var o36 = i36;
+if (i36.replace(/\w+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \w between character 2400 and 24ff");
+}
+
+var i37 = "";
+for (var j = 9472; j < 9728; j++)
+ i37 += String.fromCharCode(j);
+var o37 = i37;
+if (i37.replace(/\w+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \w between character 2500 and 25ff");
+}
+
+var i38 = "";
+for (var j = 9728; j < 9984; j++)
+ i38 += String.fromCharCode(j);
+var o38 = i38;
+if (i38.replace(/\w+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \w between character 2600 and 26ff");
+}
+
+var i39 = "";
+for (var j = 9984; j < 10240; j++)
+ i39 += String.fromCharCode(j);
+var o39 = i39;
+if (i39.replace(/\w+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \w between character 2700 and 27ff");
+}
+
+var i40 = "";
+for (var j = 10240; j < 10496; j++)
+ i40 += String.fromCharCode(j);
+var o40 = i40;
+if (i40.replace(/\w+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \w between character 2800 and 28ff");
+}
+
+var i41 = "";
+for (var j = 10496; j < 10752; j++)
+ i41 += String.fromCharCode(j);
+var o41 = i41;
+if (i41.replace(/\w+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \w between character 2900 and 29ff");
+}
+
+var i42 = "";
+for (var j = 10752; j < 11008; j++)
+ i42 += String.fromCharCode(j);
+var o42 = i42;
+if (i42.replace(/\w+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \w between character 2a00 and 2aff");
+}
+
+var i43 = "";
+for (var j = 11008; j < 11264; j++)
+ i43 += String.fromCharCode(j);
+var o43 = i43;
+if (i43.replace(/\w+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \w between character 2b00 and 2bff");
+}
+
+var i44 = "";
+for (var j = 11264; j < 11520; j++)
+ i44 += String.fromCharCode(j);
+var o44 = i44;
+if (i44.replace(/\w+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \w between character 2c00 and 2cff");
+}
+
+var i45 = "";
+for (var j = 11520; j < 11776; j++)
+ i45 += String.fromCharCode(j);
+var o45 = i45;
+if (i45.replace(/\w+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \w between character 2d00 and 2dff");
+}
+
+var i46 = "";
+for (var j = 11776; j < 12032; j++)
+ i46 += String.fromCharCode(j);
+var o46 = i46;
+if (i46.replace(/\w+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \w between character 2e00 and 2eff");
+}
+
+var i47 = "";
+for (var j = 12032; j < 12288; j++)
+ i47 += String.fromCharCode(j);
+var o47 = i47;
+if (i47.replace(/\w+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \w between character 2f00 and 2fff");
+}
+
+var i48 = "";
+for (var j = 12288; j < 12544; j++)
+ i48 += String.fromCharCode(j);
+var o48 = i48;
+if (i48.replace(/\w+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \w between character 3000 and 30ff");
+}
+
+var i49 = "";
+for (var j = 12544; j < 12800; j++)
+ i49 += String.fromCharCode(j);
+var o49 = i49;
+if (i49.replace(/\w+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \w between character 3100 and 31ff");
+}
+
+var i50 = "";
+for (var j = 12800; j < 13056; j++)
+ i50 += String.fromCharCode(j);
+var o50 = i50;
+if (i50.replace(/\w+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \w between character 3200 and 32ff");
+}
+
+var i51 = "";
+for (var j = 13056; j < 13312; j++)
+ i51 += String.fromCharCode(j);
+var o51 = i51;
+if (i51.replace(/\w+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \w between character 3300 and 33ff");
+}
+
+var i52 = "";
+for (var j = 13312; j < 13568; j++)
+ i52 += String.fromCharCode(j);
+var o52 = i52;
+if (i52.replace(/\w+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \w between character 3400 and 34ff");
+}
+
+var i53 = "";
+for (var j = 13568; j < 13824; j++)
+ i53 += String.fromCharCode(j);
+var o53 = i53;
+if (i53.replace(/\w+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \w between character 3500 and 35ff");
+}
+
+var i54 = "";
+for (var j = 13824; j < 14080; j++)
+ i54 += String.fromCharCode(j);
+var o54 = i54;
+if (i54.replace(/\w+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \w between character 3600 and 36ff");
+}
+
+var i55 = "";
+for (var j = 14080; j < 14336; j++)
+ i55 += String.fromCharCode(j);
+var o55 = i55;
+if (i55.replace(/\w+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \w between character 3700 and 37ff");
+}
+
+var i56 = "";
+for (var j = 14336; j < 14592; j++)
+ i56 += String.fromCharCode(j);
+var o56 = i56;
+if (i56.replace(/\w+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \w between character 3800 and 38ff");
+}
+
+var i57 = "";
+for (var j = 14592; j < 14848; j++)
+ i57 += String.fromCharCode(j);
+var o57 = i57;
+if (i57.replace(/\w+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \w between character 3900 and 39ff");
+}
+
+var i58 = "";
+for (var j = 14848; j < 15104; j++)
+ i58 += String.fromCharCode(j);
+var o58 = i58;
+if (i58.replace(/\w+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \w between character 3a00 and 3aff");
+}
+
+var i59 = "";
+for (var j = 15104; j < 15360; j++)
+ i59 += String.fromCharCode(j);
+var o59 = i59;
+if (i59.replace(/\w+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \w between character 3b00 and 3bff");
+}
+
+var i60 = "";
+for (var j = 15360; j < 15616; j++)
+ i60 += String.fromCharCode(j);
+var o60 = i60;
+if (i60.replace(/\w+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \w between character 3c00 and 3cff");
+}
+
+var i61 = "";
+for (var j = 15616; j < 15872; j++)
+ i61 += String.fromCharCode(j);
+var o61 = i61;
+if (i61.replace(/\w+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \w between character 3d00 and 3dff");
+}
+
+var i62 = "";
+for (var j = 15872; j < 16128; j++)
+ i62 += String.fromCharCode(j);
+var o62 = i62;
+if (i62.replace(/\w+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \w between character 3e00 and 3eff");
+}
+
+var i63 = "";
+for (var j = 16128; j < 16384; j++)
+ i63 += String.fromCharCode(j);
+var o63 = i63;
+if (i63.replace(/\w+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \w between character 3f00 and 3fff");
+}
+
+var i64 = "";
+for (var j = 16384; j < 16640; j++)
+ i64 += String.fromCharCode(j);
+var o64 = i64;
+if (i64.replace(/\w+/g, "") !== o64) {
+ $ERROR("#64: Error matching character class \w between character 4000 and 40ff");
+}
+
+var i65 = "";
+for (var j = 16640; j < 16896; j++)
+ i65 += String.fromCharCode(j);
+var o65 = i65;
+if (i65.replace(/\w+/g, "") !== o65) {
+ $ERROR("#65: Error matching character class \w between character 4100 and 41ff");
+}
+
+var i66 = "";
+for (var j = 16896; j < 17152; j++)
+ i66 += String.fromCharCode(j);
+var o66 = i66;
+if (i66.replace(/\w+/g, "") !== o66) {
+ $ERROR("#66: Error matching character class \w between character 4200 and 42ff");
+}
+
+var i67 = "";
+for (var j = 17152; j < 17408; j++)
+ i67 += String.fromCharCode(j);
+var o67 = i67;
+if (i67.replace(/\w+/g, "") !== o67) {
+ $ERROR("#67: Error matching character class \w between character 4300 and 43ff");
+}
+
+var i68 = "";
+for (var j = 17408; j < 17664; j++)
+ i68 += String.fromCharCode(j);
+var o68 = i68;
+if (i68.replace(/\w+/g, "") !== o68) {
+ $ERROR("#68: Error matching character class \w between character 4400 and 44ff");
+}
+
+var i69 = "";
+for (var j = 17664; j < 17920; j++)
+ i69 += String.fromCharCode(j);
+var o69 = i69;
+if (i69.replace(/\w+/g, "") !== o69) {
+ $ERROR("#69: Error matching character class \w between character 4500 and 45ff");
+}
+
+var i70 = "";
+for (var j = 17920; j < 18176; j++)
+ i70 += String.fromCharCode(j);
+var o70 = i70;
+if (i70.replace(/\w+/g, "") !== o70) {
+ $ERROR("#70: Error matching character class \w between character 4600 and 46ff");
+}
+
+var i71 = "";
+for (var j = 18176; j < 18432; j++)
+ i71 += String.fromCharCode(j);
+var o71 = i71;
+if (i71.replace(/\w+/g, "") !== o71) {
+ $ERROR("#71: Error matching character class \w between character 4700 and 47ff");
+}
+
+var i72 = "";
+for (var j = 18432; j < 18688; j++)
+ i72 += String.fromCharCode(j);
+var o72 = i72;
+if (i72.replace(/\w+/g, "") !== o72) {
+ $ERROR("#72: Error matching character class \w between character 4800 and 48ff");
+}
+
+var i73 = "";
+for (var j = 18688; j < 18944; j++)
+ i73 += String.fromCharCode(j);
+var o73 = i73;
+if (i73.replace(/\w+/g, "") !== o73) {
+ $ERROR("#73: Error matching character class \w between character 4900 and 49ff");
+}
+
+var i74 = "";
+for (var j = 18944; j < 19200; j++)
+ i74 += String.fromCharCode(j);
+var o74 = i74;
+if (i74.replace(/\w+/g, "") !== o74) {
+ $ERROR("#74: Error matching character class \w between character 4a00 and 4aff");
+}
+
+var i75 = "";
+for (var j = 19200; j < 19456; j++)
+ i75 += String.fromCharCode(j);
+var o75 = i75;
+if (i75.replace(/\w+/g, "") !== o75) {
+ $ERROR("#75: Error matching character class \w between character 4b00 and 4bff");
+}
+
+var i76 = "";
+for (var j = 19456; j < 19712; j++)
+ i76 += String.fromCharCode(j);
+var o76 = i76;
+if (i76.replace(/\w+/g, "") !== o76) {
+ $ERROR("#76: Error matching character class \w between character 4c00 and 4cff");
+}
+
+var i77 = "";
+for (var j = 19712; j < 19968; j++)
+ i77 += String.fromCharCode(j);
+var o77 = i77;
+if (i77.replace(/\w+/g, "") !== o77) {
+ $ERROR("#77: Error matching character class \w between character 4d00 and 4dff");
+}
+
+var i78 = "";
+for (var j = 19968; j < 20224; j++)
+ i78 += String.fromCharCode(j);
+var o78 = i78;
+if (i78.replace(/\w+/g, "") !== o78) {
+ $ERROR("#78: Error matching character class \w between character 4e00 and 4eff");
+}
+
+var i79 = "";
+for (var j = 20224; j < 20480; j++)
+ i79 += String.fromCharCode(j);
+var o79 = i79;
+if (i79.replace(/\w+/g, "") !== o79) {
+ $ERROR("#79: Error matching character class \w between character 4f00 and 4fff");
+}
+
+var i80 = "";
+for (var j = 20480; j < 20736; j++)
+ i80 += String.fromCharCode(j);
+var o80 = i80;
+if (i80.replace(/\w+/g, "") !== o80) {
+ $ERROR("#80: Error matching character class \w between character 5000 and 50ff");
+}
+
+var i81 = "";
+for (var j = 20736; j < 20992; j++)
+ i81 += String.fromCharCode(j);
+var o81 = i81;
+if (i81.replace(/\w+/g, "") !== o81) {
+ $ERROR("#81: Error matching character class \w between character 5100 and 51ff");
+}
+
+var i82 = "";
+for (var j = 20992; j < 21248; j++)
+ i82 += String.fromCharCode(j);
+var o82 = i82;
+if (i82.replace(/\w+/g, "") !== o82) {
+ $ERROR("#82: Error matching character class \w between character 5200 and 52ff");
+}
+
+var i83 = "";
+for (var j = 21248; j < 21504; j++)
+ i83 += String.fromCharCode(j);
+var o83 = i83;
+if (i83.replace(/\w+/g, "") !== o83) {
+ $ERROR("#83: Error matching character class \w between character 5300 and 53ff");
+}
+
+var i84 = "";
+for (var j = 21504; j < 21760; j++)
+ i84 += String.fromCharCode(j);
+var o84 = i84;
+if (i84.replace(/\w+/g, "") !== o84) {
+ $ERROR("#84: Error matching character class \w between character 5400 and 54ff");
+}
+
+var i85 = "";
+for (var j = 21760; j < 22016; j++)
+ i85 += String.fromCharCode(j);
+var o85 = i85;
+if (i85.replace(/\w+/g, "") !== o85) {
+ $ERROR("#85: Error matching character class \w between character 5500 and 55ff");
+}
+
+var i86 = "";
+for (var j = 22016; j < 22272; j++)
+ i86 += String.fromCharCode(j);
+var o86 = i86;
+if (i86.replace(/\w+/g, "") !== o86) {
+ $ERROR("#86: Error matching character class \w between character 5600 and 56ff");
+}
+
+var i87 = "";
+for (var j = 22272; j < 22528; j++)
+ i87 += String.fromCharCode(j);
+var o87 = i87;
+if (i87.replace(/\w+/g, "") !== o87) {
+ $ERROR("#87: Error matching character class \w between character 5700 and 57ff");
+}
+
+var i88 = "";
+for (var j = 22528; j < 22784; j++)
+ i88 += String.fromCharCode(j);
+var o88 = i88;
+if (i88.replace(/\w+/g, "") !== o88) {
+ $ERROR("#88: Error matching character class \w between character 5800 and 58ff");
+}
+
+var i89 = "";
+for (var j = 22784; j < 23040; j++)
+ i89 += String.fromCharCode(j);
+var o89 = i89;
+if (i89.replace(/\w+/g, "") !== o89) {
+ $ERROR("#89: Error matching character class \w between character 5900 and 59ff");
+}
+
+var i90 = "";
+for (var j = 23040; j < 23296; j++)
+ i90 += String.fromCharCode(j);
+var o90 = i90;
+if (i90.replace(/\w+/g, "") !== o90) {
+ $ERROR("#90: Error matching character class \w between character 5a00 and 5aff");
+}
+
+var i91 = "";
+for (var j = 23296; j < 23552; j++)
+ i91 += String.fromCharCode(j);
+var o91 = i91;
+if (i91.replace(/\w+/g, "") !== o91) {
+ $ERROR("#91: Error matching character class \w between character 5b00 and 5bff");
+}
+
+var i92 = "";
+for (var j = 23552; j < 23808; j++)
+ i92 += String.fromCharCode(j);
+var o92 = i92;
+if (i92.replace(/\w+/g, "") !== o92) {
+ $ERROR("#92: Error matching character class \w between character 5c00 and 5cff");
+}
+
+var i93 = "";
+for (var j = 23808; j < 24064; j++)
+ i93 += String.fromCharCode(j);
+var o93 = i93;
+if (i93.replace(/\w+/g, "") !== o93) {
+ $ERROR("#93: Error matching character class \w between character 5d00 and 5dff");
+}
+
+var i94 = "";
+for (var j = 24064; j < 24320; j++)
+ i94 += String.fromCharCode(j);
+var o94 = i94;
+if (i94.replace(/\w+/g, "") !== o94) {
+ $ERROR("#94: Error matching character class \w between character 5e00 and 5eff");
+}
+
+var i95 = "";
+for (var j = 24320; j < 24576; j++)
+ i95 += String.fromCharCode(j);
+var o95 = i95;
+if (i95.replace(/\w+/g, "") !== o95) {
+ $ERROR("#95: Error matching character class \w between character 5f00 and 5fff");
+}
+
+var i96 = "";
+for (var j = 24576; j < 24832; j++)
+ i96 += String.fromCharCode(j);
+var o96 = i96;
+if (i96.replace(/\w+/g, "") !== o96) {
+ $ERROR("#96: Error matching character class \w between character 6000 and 60ff");
+}
+
+var i97 = "";
+for (var j = 24832; j < 25088; j++)
+ i97 += String.fromCharCode(j);
+var o97 = i97;
+if (i97.replace(/\w+/g, "") !== o97) {
+ $ERROR("#97: Error matching character class \w between character 6100 and 61ff");
+}
+
+var i98 = "";
+for (var j = 25088; j < 25344; j++)
+ i98 += String.fromCharCode(j);
+var o98 = i98;
+if (i98.replace(/\w+/g, "") !== o98) {
+ $ERROR("#98: Error matching character class \w between character 6200 and 62ff");
+}
+
+var i99 = "";
+for (var j = 25344; j < 25600; j++)
+ i99 += String.fromCharCode(j);
+var o99 = i99;
+if (i99.replace(/\w+/g, "") !== o99) {
+ $ERROR("#99: Error matching character class \w between character 6300 and 63ff");
+}
+
+var i100 = "";
+for (var j = 25600; j < 25856; j++)
+ i100 += String.fromCharCode(j);
+var o100 = i100;
+if (i100.replace(/\w+/g, "") !== o100) {
+ $ERROR("#100: Error matching character class \w between character 6400 and 64ff");
+}
+
+var i101 = "";
+for (var j = 25856; j < 26112; j++)
+ i101 += String.fromCharCode(j);
+var o101 = i101;
+if (i101.replace(/\w+/g, "") !== o101) {
+ $ERROR("#101: Error matching character class \w between character 6500 and 65ff");
+}
+
+var i102 = "";
+for (var j = 26112; j < 26368; j++)
+ i102 += String.fromCharCode(j);
+var o102 = i102;
+if (i102.replace(/\w+/g, "") !== o102) {
+ $ERROR("#102: Error matching character class \w between character 6600 and 66ff");
+}
+
+var i103 = "";
+for (var j = 26368; j < 26624; j++)
+ i103 += String.fromCharCode(j);
+var o103 = i103;
+if (i103.replace(/\w+/g, "") !== o103) {
+ $ERROR("#103: Error matching character class \w between character 6700 and 67ff");
+}
+
+var i104 = "";
+for (var j = 26624; j < 26880; j++)
+ i104 += String.fromCharCode(j);
+var o104 = i104;
+if (i104.replace(/\w+/g, "") !== o104) {
+ $ERROR("#104: Error matching character class \w between character 6800 and 68ff");
+}
+
+var i105 = "";
+for (var j = 26880; j < 27136; j++)
+ i105 += String.fromCharCode(j);
+var o105 = i105;
+if (i105.replace(/\w+/g, "") !== o105) {
+ $ERROR("#105: Error matching character class \w between character 6900 and 69ff");
+}
+
+var i106 = "";
+for (var j = 27136; j < 27392; j++)
+ i106 += String.fromCharCode(j);
+var o106 = i106;
+if (i106.replace(/\w+/g, "") !== o106) {
+ $ERROR("#106: Error matching character class \w between character 6a00 and 6aff");
+}
+
+var i107 = "";
+for (var j = 27392; j < 27648; j++)
+ i107 += String.fromCharCode(j);
+var o107 = i107;
+if (i107.replace(/\w+/g, "") !== o107) {
+ $ERROR("#107: Error matching character class \w between character 6b00 and 6bff");
+}
+
+var i108 = "";
+for (var j = 27648; j < 27904; j++)
+ i108 += String.fromCharCode(j);
+var o108 = i108;
+if (i108.replace(/\w+/g, "") !== o108) {
+ $ERROR("#108: Error matching character class \w between character 6c00 and 6cff");
+}
+
+var i109 = "";
+for (var j = 27904; j < 28160; j++)
+ i109 += String.fromCharCode(j);
+var o109 = i109;
+if (i109.replace(/\w+/g, "") !== o109) {
+ $ERROR("#109: Error matching character class \w between character 6d00 and 6dff");
+}
+
+var i110 = "";
+for (var j = 28160; j < 28416; j++)
+ i110 += String.fromCharCode(j);
+var o110 = i110;
+if (i110.replace(/\w+/g, "") !== o110) {
+ $ERROR("#110: Error matching character class \w between character 6e00 and 6eff");
+}
+
+var i111 = "";
+for (var j = 28416; j < 28672; j++)
+ i111 += String.fromCharCode(j);
+var o111 = i111;
+if (i111.replace(/\w+/g, "") !== o111) {
+ $ERROR("#111: Error matching character class \w between character 6f00 and 6fff");
+}
+
+var i112 = "";
+for (var j = 28672; j < 28928; j++)
+ i112 += String.fromCharCode(j);
+var o112 = i112;
+if (i112.replace(/\w+/g, "") !== o112) {
+ $ERROR("#112: Error matching character class \w between character 7000 and 70ff");
+}
+
+var i113 = "";
+for (var j = 28928; j < 29184; j++)
+ i113 += String.fromCharCode(j);
+var o113 = i113;
+if (i113.replace(/\w+/g, "") !== o113) {
+ $ERROR("#113: Error matching character class \w between character 7100 and 71ff");
+}
+
+var i114 = "";
+for (var j = 29184; j < 29440; j++)
+ i114 += String.fromCharCode(j);
+var o114 = i114;
+if (i114.replace(/\w+/g, "") !== o114) {
+ $ERROR("#114: Error matching character class \w between character 7200 and 72ff");
+}
+
+var i115 = "";
+for (var j = 29440; j < 29696; j++)
+ i115 += String.fromCharCode(j);
+var o115 = i115;
+if (i115.replace(/\w+/g, "") !== o115) {
+ $ERROR("#115: Error matching character class \w between character 7300 and 73ff");
+}
+
+var i116 = "";
+for (var j = 29696; j < 29952; j++)
+ i116 += String.fromCharCode(j);
+var o116 = i116;
+if (i116.replace(/\w+/g, "") !== o116) {
+ $ERROR("#116: Error matching character class \w between character 7400 and 74ff");
+}
+
+var i117 = "";
+for (var j = 29952; j < 30208; j++)
+ i117 += String.fromCharCode(j);
+var o117 = i117;
+if (i117.replace(/\w+/g, "") !== o117) {
+ $ERROR("#117: Error matching character class \w between character 7500 and 75ff");
+}
+
+var i118 = "";
+for (var j = 30208; j < 30464; j++)
+ i118 += String.fromCharCode(j);
+var o118 = i118;
+if (i118.replace(/\w+/g, "") !== o118) {
+ $ERROR("#118: Error matching character class \w between character 7600 and 76ff");
+}
+
+var i119 = "";
+for (var j = 30464; j < 30720; j++)
+ i119 += String.fromCharCode(j);
+var o119 = i119;
+if (i119.replace(/\w+/g, "") !== o119) {
+ $ERROR("#119: Error matching character class \w between character 7700 and 77ff");
+}
+
+var i120 = "";
+for (var j = 30720; j < 30976; j++)
+ i120 += String.fromCharCode(j);
+var o120 = i120;
+if (i120.replace(/\w+/g, "") !== o120) {
+ $ERROR("#120: Error matching character class \w between character 7800 and 78ff");
+}
+
+var i121 = "";
+for (var j = 30976; j < 31232; j++)
+ i121 += String.fromCharCode(j);
+var o121 = i121;
+if (i121.replace(/\w+/g, "") !== o121) {
+ $ERROR("#121: Error matching character class \w between character 7900 and 79ff");
+}
+
+var i122 = "";
+for (var j = 31232; j < 31488; j++)
+ i122 += String.fromCharCode(j);
+var o122 = i122;
+if (i122.replace(/\w+/g, "") !== o122) {
+ $ERROR("#122: Error matching character class \w between character 7a00 and 7aff");
+}
+
+var i123 = "";
+for (var j = 31488; j < 31744; j++)
+ i123 += String.fromCharCode(j);
+var o123 = i123;
+if (i123.replace(/\w+/g, "") !== o123) {
+ $ERROR("#123: Error matching character class \w between character 7b00 and 7bff");
+}
+
+var i124 = "";
+for (var j = 31744; j < 32000; j++)
+ i124 += String.fromCharCode(j);
+var o124 = i124;
+if (i124.replace(/\w+/g, "") !== o124) {
+ $ERROR("#124: Error matching character class \w between character 7c00 and 7cff");
+}
+
+var i125 = "";
+for (var j = 32000; j < 32256; j++)
+ i125 += String.fromCharCode(j);
+var o125 = i125;
+if (i125.replace(/\w+/g, "") !== o125) {
+ $ERROR("#125: Error matching character class \w between character 7d00 and 7dff");
+}
+
+var i126 = "";
+for (var j = 32256; j < 32512; j++)
+ i126 += String.fromCharCode(j);
+var o126 = i126;
+if (i126.replace(/\w+/g, "") !== o126) {
+ $ERROR("#126: Error matching character class \w between character 7e00 and 7eff");
+}
+
+var i127 = "";
+for (var j = 32512; j < 32768; j++)
+ i127 += String.fromCharCode(j);
+var o127 = i127;
+if (i127.replace(/\w+/g, "") !== o127) {
+ $ERROR("#127: Error matching character class \w between character 7f00 and 7fff");
+}
+
+var i128 = "";
+for (var j = 32768; j < 33024; j++)
+ i128 += String.fromCharCode(j);
+var o128 = i128;
+if (i128.replace(/\w+/g, "") !== o128) {
+ $ERROR("#128: Error matching character class \w between character 8000 and 80ff");
+}
+
+var i129 = "";
+for (var j = 33024; j < 33280; j++)
+ i129 += String.fromCharCode(j);
+var o129 = i129;
+if (i129.replace(/\w+/g, "") !== o129) {
+ $ERROR("#129: Error matching character class \w between character 8100 and 81ff");
+}
+
+var i130 = "";
+for (var j = 33280; j < 33536; j++)
+ i130 += String.fromCharCode(j);
+var o130 = i130;
+if (i130.replace(/\w+/g, "") !== o130) {
+ $ERROR("#130: Error matching character class \w between character 8200 and 82ff");
+}
+
+var i131 = "";
+for (var j = 33536; j < 33792; j++)
+ i131 += String.fromCharCode(j);
+var o131 = i131;
+if (i131.replace(/\w+/g, "") !== o131) {
+ $ERROR("#131: Error matching character class \w between character 8300 and 83ff");
+}
+
+var i132 = "";
+for (var j = 33792; j < 34048; j++)
+ i132 += String.fromCharCode(j);
+var o132 = i132;
+if (i132.replace(/\w+/g, "") !== o132) {
+ $ERROR("#132: Error matching character class \w between character 8400 and 84ff");
+}
+
+var i133 = "";
+for (var j = 34048; j < 34304; j++)
+ i133 += String.fromCharCode(j);
+var o133 = i133;
+if (i133.replace(/\w+/g, "") !== o133) {
+ $ERROR("#133: Error matching character class \w between character 8500 and 85ff");
+}
+
+var i134 = "";
+for (var j = 34304; j < 34560; j++)
+ i134 += String.fromCharCode(j);
+var o134 = i134;
+if (i134.replace(/\w+/g, "") !== o134) {
+ $ERROR("#134: Error matching character class \w between character 8600 and 86ff");
+}
+
+var i135 = "";
+for (var j = 34560; j < 34816; j++)
+ i135 += String.fromCharCode(j);
+var o135 = i135;
+if (i135.replace(/\w+/g, "") !== o135) {
+ $ERROR("#135: Error matching character class \w between character 8700 and 87ff");
+}
+
+var i136 = "";
+for (var j = 34816; j < 35072; j++)
+ i136 += String.fromCharCode(j);
+var o136 = i136;
+if (i136.replace(/\w+/g, "") !== o136) {
+ $ERROR("#136: Error matching character class \w between character 8800 and 88ff");
+}
+
+var i137 = "";
+for (var j = 35072; j < 35328; j++)
+ i137 += String.fromCharCode(j);
+var o137 = i137;
+if (i137.replace(/\w+/g, "") !== o137) {
+ $ERROR("#137: Error matching character class \w between character 8900 and 89ff");
+}
+
+var i138 = "";
+for (var j = 35328; j < 35584; j++)
+ i138 += String.fromCharCode(j);
+var o138 = i138;
+if (i138.replace(/\w+/g, "") !== o138) {
+ $ERROR("#138: Error matching character class \w between character 8a00 and 8aff");
+}
+
+var i139 = "";
+for (var j = 35584; j < 35840; j++)
+ i139 += String.fromCharCode(j);
+var o139 = i139;
+if (i139.replace(/\w+/g, "") !== o139) {
+ $ERROR("#139: Error matching character class \w between character 8b00 and 8bff");
+}
+
+var i140 = "";
+for (var j = 35840; j < 36096; j++)
+ i140 += String.fromCharCode(j);
+var o140 = i140;
+if (i140.replace(/\w+/g, "") !== o140) {
+ $ERROR("#140: Error matching character class \w between character 8c00 and 8cff");
+}
+
+var i141 = "";
+for (var j = 36096; j < 36352; j++)
+ i141 += String.fromCharCode(j);
+var o141 = i141;
+if (i141.replace(/\w+/g, "") !== o141) {
+ $ERROR("#141: Error matching character class \w between character 8d00 and 8dff");
+}
+
+var i142 = "";
+for (var j = 36352; j < 36608; j++)
+ i142 += String.fromCharCode(j);
+var o142 = i142;
+if (i142.replace(/\w+/g, "") !== o142) {
+ $ERROR("#142: Error matching character class \w between character 8e00 and 8eff");
+}
+
+var i143 = "";
+for (var j = 36608; j < 36864; j++)
+ i143 += String.fromCharCode(j);
+var o143 = i143;
+if (i143.replace(/\w+/g, "") !== o143) {
+ $ERROR("#143: Error matching character class \w between character 8f00 and 8fff");
+}
+
+var i144 = "";
+for (var j = 36864; j < 37120; j++)
+ i144 += String.fromCharCode(j);
+var o144 = i144;
+if (i144.replace(/\w+/g, "") !== o144) {
+ $ERROR("#144: Error matching character class \w between character 9000 and 90ff");
+}
+
+var i145 = "";
+for (var j = 37120; j < 37376; j++)
+ i145 += String.fromCharCode(j);
+var o145 = i145;
+if (i145.replace(/\w+/g, "") !== o145) {
+ $ERROR("#145: Error matching character class \w between character 9100 and 91ff");
+}
+
+var i146 = "";
+for (var j = 37376; j < 37632; j++)
+ i146 += String.fromCharCode(j);
+var o146 = i146;
+if (i146.replace(/\w+/g, "") !== o146) {
+ $ERROR("#146: Error matching character class \w between character 9200 and 92ff");
+}
+
+var i147 = "";
+for (var j = 37632; j < 37888; j++)
+ i147 += String.fromCharCode(j);
+var o147 = i147;
+if (i147.replace(/\w+/g, "") !== o147) {
+ $ERROR("#147: Error matching character class \w between character 9300 and 93ff");
+}
+
+var i148 = "";
+for (var j = 37888; j < 38144; j++)
+ i148 += String.fromCharCode(j);
+var o148 = i148;
+if (i148.replace(/\w+/g, "") !== o148) {
+ $ERROR("#148: Error matching character class \w between character 9400 and 94ff");
+}
+
+var i149 = "";
+for (var j = 38144; j < 38400; j++)
+ i149 += String.fromCharCode(j);
+var o149 = i149;
+if (i149.replace(/\w+/g, "") !== o149) {
+ $ERROR("#149: Error matching character class \w between character 9500 and 95ff");
+}
+
+var i150 = "";
+for (var j = 38400; j < 38656; j++)
+ i150 += String.fromCharCode(j);
+var o150 = i150;
+if (i150.replace(/\w+/g, "") !== o150) {
+ $ERROR("#150: Error matching character class \w between character 9600 and 96ff");
+}
+
+var i151 = "";
+for (var j = 38656; j < 38912; j++)
+ i151 += String.fromCharCode(j);
+var o151 = i151;
+if (i151.replace(/\w+/g, "") !== o151) {
+ $ERROR("#151: Error matching character class \w between character 9700 and 97ff");
+}
+
+var i152 = "";
+for (var j = 38912; j < 39168; j++)
+ i152 += String.fromCharCode(j);
+var o152 = i152;
+if (i152.replace(/\w+/g, "") !== o152) {
+ $ERROR("#152: Error matching character class \w between character 9800 and 98ff");
+}
+
+var i153 = "";
+for (var j = 39168; j < 39424; j++)
+ i153 += String.fromCharCode(j);
+var o153 = i153;
+if (i153.replace(/\w+/g, "") !== o153) {
+ $ERROR("#153: Error matching character class \w between character 9900 and 99ff");
+}
+
+var i154 = "";
+for (var j = 39424; j < 39680; j++)
+ i154 += String.fromCharCode(j);
+var o154 = i154;
+if (i154.replace(/\w+/g, "") !== o154) {
+ $ERROR("#154: Error matching character class \w between character 9a00 and 9aff");
+}
+
+var i155 = "";
+for (var j = 39680; j < 39936; j++)
+ i155 += String.fromCharCode(j);
+var o155 = i155;
+if (i155.replace(/\w+/g, "") !== o155) {
+ $ERROR("#155: Error matching character class \w between character 9b00 and 9bff");
+}
+
+var i156 = "";
+for (var j = 39936; j < 40192; j++)
+ i156 += String.fromCharCode(j);
+var o156 = i156;
+if (i156.replace(/\w+/g, "") !== o156) {
+ $ERROR("#156: Error matching character class \w between character 9c00 and 9cff");
+}
+
+var i157 = "";
+for (var j = 40192; j < 40448; j++)
+ i157 += String.fromCharCode(j);
+var o157 = i157;
+if (i157.replace(/\w+/g, "") !== o157) {
+ $ERROR("#157: Error matching character class \w between character 9d00 and 9dff");
+}
+
+var i158 = "";
+for (var j = 40448; j < 40704; j++)
+ i158 += String.fromCharCode(j);
+var o158 = i158;
+if (i158.replace(/\w+/g, "") !== o158) {
+ $ERROR("#158: Error matching character class \w between character 9e00 and 9eff");
+}
+
+var i159 = "";
+for (var j = 40704; j < 40960; j++)
+ i159 += String.fromCharCode(j);
+var o159 = i159;
+if (i159.replace(/\w+/g, "") !== o159) {
+ $ERROR("#159: Error matching character class \w between character 9f00 and 9fff");
+}
+
+var i160 = "";
+for (var j = 40960; j < 41216; j++)
+ i160 += String.fromCharCode(j);
+var o160 = i160;
+if (i160.replace(/\w+/g, "") !== o160) {
+ $ERROR("#160: Error matching character class \w between character a000 and a0ff");
+}
+
+var i161 = "";
+for (var j = 41216; j < 41472; j++)
+ i161 += String.fromCharCode(j);
+var o161 = i161;
+if (i161.replace(/\w+/g, "") !== o161) {
+ $ERROR("#161: Error matching character class \w between character a100 and a1ff");
+}
+
+var i162 = "";
+for (var j = 41472; j < 41728; j++)
+ i162 += String.fromCharCode(j);
+var o162 = i162;
+if (i162.replace(/\w+/g, "") !== o162) {
+ $ERROR("#162: Error matching character class \w between character a200 and a2ff");
+}
+
+var i163 = "";
+for (var j = 41728; j < 41984; j++)
+ i163 += String.fromCharCode(j);
+var o163 = i163;
+if (i163.replace(/\w+/g, "") !== o163) {
+ $ERROR("#163: Error matching character class \w between character a300 and a3ff");
+}
+
+var i164 = "";
+for (var j = 41984; j < 42240; j++)
+ i164 += String.fromCharCode(j);
+var o164 = i164;
+if (i164.replace(/\w+/g, "") !== o164) {
+ $ERROR("#164: Error matching character class \w between character a400 and a4ff");
+}
+
+var i165 = "";
+for (var j = 42240; j < 42496; j++)
+ i165 += String.fromCharCode(j);
+var o165 = i165;
+if (i165.replace(/\w+/g, "") !== o165) {
+ $ERROR("#165: Error matching character class \w between character a500 and a5ff");
+}
+
+var i166 = "";
+for (var j = 42496; j < 42752; j++)
+ i166 += String.fromCharCode(j);
+var o166 = i166;
+if (i166.replace(/\w+/g, "") !== o166) {
+ $ERROR("#166: Error matching character class \w between character a600 and a6ff");
+}
+
+var i167 = "";
+for (var j = 42752; j < 43008; j++)
+ i167 += String.fromCharCode(j);
+var o167 = i167;
+if (i167.replace(/\w+/g, "") !== o167) {
+ $ERROR("#167: Error matching character class \w between character a700 and a7ff");
+}
+
+var i168 = "";
+for (var j = 43008; j < 43264; j++)
+ i168 += String.fromCharCode(j);
+var o168 = i168;
+if (i168.replace(/\w+/g, "") !== o168) {
+ $ERROR("#168: Error matching character class \w between character a800 and a8ff");
+}
+
+var i169 = "";
+for (var j = 43264; j < 43520; j++)
+ i169 += String.fromCharCode(j);
+var o169 = i169;
+if (i169.replace(/\w+/g, "") !== o169) {
+ $ERROR("#169: Error matching character class \w between character a900 and a9ff");
+}
+
+var i170 = "";
+for (var j = 43520; j < 43776; j++)
+ i170 += String.fromCharCode(j);
+var o170 = i170;
+if (i170.replace(/\w+/g, "") !== o170) {
+ $ERROR("#170: Error matching character class \w between character aa00 and aaff");
+}
+
+var i171 = "";
+for (var j = 43776; j < 44032; j++)
+ i171 += String.fromCharCode(j);
+var o171 = i171;
+if (i171.replace(/\w+/g, "") !== o171) {
+ $ERROR("#171: Error matching character class \w between character ab00 and abff");
+}
+
+var i172 = "";
+for (var j = 44032; j < 44288; j++)
+ i172 += String.fromCharCode(j);
+var o172 = i172;
+if (i172.replace(/\w+/g, "") !== o172) {
+ $ERROR("#172: Error matching character class \w between character ac00 and acff");
+}
+
+var i173 = "";
+for (var j = 44288; j < 44544; j++)
+ i173 += String.fromCharCode(j);
+var o173 = i173;
+if (i173.replace(/\w+/g, "") !== o173) {
+ $ERROR("#173: Error matching character class \w between character ad00 and adff");
+}
+
+var i174 = "";
+for (var j = 44544; j < 44800; j++)
+ i174 += String.fromCharCode(j);
+var o174 = i174;
+if (i174.replace(/\w+/g, "") !== o174) {
+ $ERROR("#174: Error matching character class \w between character ae00 and aeff");
+}
+
+var i175 = "";
+for (var j = 44800; j < 45056; j++)
+ i175 += String.fromCharCode(j);
+var o175 = i175;
+if (i175.replace(/\w+/g, "") !== o175) {
+ $ERROR("#175: Error matching character class \w between character af00 and afff");
+}
+
+var i176 = "";
+for (var j = 45056; j < 45312; j++)
+ i176 += String.fromCharCode(j);
+var o176 = i176;
+if (i176.replace(/\w+/g, "") !== o176) {
+ $ERROR("#176: Error matching character class \w between character b000 and b0ff");
+}
+
+var i177 = "";
+for (var j = 45312; j < 45568; j++)
+ i177 += String.fromCharCode(j);
+var o177 = i177;
+if (i177.replace(/\w+/g, "") !== o177) {
+ $ERROR("#177: Error matching character class \w between character b100 and b1ff");
+}
+
+var i178 = "";
+for (var j = 45568; j < 45824; j++)
+ i178 += String.fromCharCode(j);
+var o178 = i178;
+if (i178.replace(/\w+/g, "") !== o178) {
+ $ERROR("#178: Error matching character class \w between character b200 and b2ff");
+}
+
+var i179 = "";
+for (var j = 45824; j < 46080; j++)
+ i179 += String.fromCharCode(j);
+var o179 = i179;
+if (i179.replace(/\w+/g, "") !== o179) {
+ $ERROR("#179: Error matching character class \w between character b300 and b3ff");
+}
+
+var i180 = "";
+for (var j = 46080; j < 46336; j++)
+ i180 += String.fromCharCode(j);
+var o180 = i180;
+if (i180.replace(/\w+/g, "") !== o180) {
+ $ERROR("#180: Error matching character class \w between character b400 and b4ff");
+}
+
+var i181 = "";
+for (var j = 46336; j < 46592; j++)
+ i181 += String.fromCharCode(j);
+var o181 = i181;
+if (i181.replace(/\w+/g, "") !== o181) {
+ $ERROR("#181: Error matching character class \w between character b500 and b5ff");
+}
+
+var i182 = "";
+for (var j = 46592; j < 46848; j++)
+ i182 += String.fromCharCode(j);
+var o182 = i182;
+if (i182.replace(/\w+/g, "") !== o182) {
+ $ERROR("#182: Error matching character class \w between character b600 and b6ff");
+}
+
+var i183 = "";
+for (var j = 46848; j < 47104; j++)
+ i183 += String.fromCharCode(j);
+var o183 = i183;
+if (i183.replace(/\w+/g, "") !== o183) {
+ $ERROR("#183: Error matching character class \w between character b700 and b7ff");
+}
+
+var i184 = "";
+for (var j = 47104; j < 47360; j++)
+ i184 += String.fromCharCode(j);
+var o184 = i184;
+if (i184.replace(/\w+/g, "") !== o184) {
+ $ERROR("#184: Error matching character class \w between character b800 and b8ff");
+}
+
+var i185 = "";
+for (var j = 47360; j < 47616; j++)
+ i185 += String.fromCharCode(j);
+var o185 = i185;
+if (i185.replace(/\w+/g, "") !== o185) {
+ $ERROR("#185: Error matching character class \w between character b900 and b9ff");
+}
+
+var i186 = "";
+for (var j = 47616; j < 47872; j++)
+ i186 += String.fromCharCode(j);
+var o186 = i186;
+if (i186.replace(/\w+/g, "") !== o186) {
+ $ERROR("#186: Error matching character class \w between character ba00 and baff");
+}
+
+var i187 = "";
+for (var j = 47872; j < 48128; j++)
+ i187 += String.fromCharCode(j);
+var o187 = i187;
+if (i187.replace(/\w+/g, "") !== o187) {
+ $ERROR("#187: Error matching character class \w between character bb00 and bbff");
+}
+
+var i188 = "";
+for (var j = 48128; j < 48384; j++)
+ i188 += String.fromCharCode(j);
+var o188 = i188;
+if (i188.replace(/\w+/g, "") !== o188) {
+ $ERROR("#188: Error matching character class \w between character bc00 and bcff");
+}
+
+var i189 = "";
+for (var j = 48384; j < 48640; j++)
+ i189 += String.fromCharCode(j);
+var o189 = i189;
+if (i189.replace(/\w+/g, "") !== o189) {
+ $ERROR("#189: Error matching character class \w between character bd00 and bdff");
+}
+
+var i190 = "";
+for (var j = 48640; j < 48896; j++)
+ i190 += String.fromCharCode(j);
+var o190 = i190;
+if (i190.replace(/\w+/g, "") !== o190) {
+ $ERROR("#190: Error matching character class \w between character be00 and beff");
+}
+
+var i191 = "";
+for (var j = 48896; j < 49152; j++)
+ i191 += String.fromCharCode(j);
+var o191 = i191;
+if (i191.replace(/\w+/g, "") !== o191) {
+ $ERROR("#191: Error matching character class \w between character bf00 and bfff");
+}
+
+var i192 = "";
+for (var j = 49152; j < 49408; j++)
+ i192 += String.fromCharCode(j);
+var o192 = i192;
+if (i192.replace(/\w+/g, "") !== o192) {
+ $ERROR("#192: Error matching character class \w between character c000 and c0ff");
+}
+
+var i193 = "";
+for (var j = 49408; j < 49664; j++)
+ i193 += String.fromCharCode(j);
+var o193 = i193;
+if (i193.replace(/\w+/g, "") !== o193) {
+ $ERROR("#193: Error matching character class \w between character c100 and c1ff");
+}
+
+var i194 = "";
+for (var j = 49664; j < 49920; j++)
+ i194 += String.fromCharCode(j);
+var o194 = i194;
+if (i194.replace(/\w+/g, "") !== o194) {
+ $ERROR("#194: Error matching character class \w between character c200 and c2ff");
+}
+
+var i195 = "";
+for (var j = 49920; j < 50176; j++)
+ i195 += String.fromCharCode(j);
+var o195 = i195;
+if (i195.replace(/\w+/g, "") !== o195) {
+ $ERROR("#195: Error matching character class \w between character c300 and c3ff");
+}
+
+var i196 = "";
+for (var j = 50176; j < 50432; j++)
+ i196 += String.fromCharCode(j);
+var o196 = i196;
+if (i196.replace(/\w+/g, "") !== o196) {
+ $ERROR("#196: Error matching character class \w between character c400 and c4ff");
+}
+
+var i197 = "";
+for (var j = 50432; j < 50688; j++)
+ i197 += String.fromCharCode(j);
+var o197 = i197;
+if (i197.replace(/\w+/g, "") !== o197) {
+ $ERROR("#197: Error matching character class \w between character c500 and c5ff");
+}
+
+var i198 = "";
+for (var j = 50688; j < 50944; j++)
+ i198 += String.fromCharCode(j);
+var o198 = i198;
+if (i198.replace(/\w+/g, "") !== o198) {
+ $ERROR("#198: Error matching character class \w between character c600 and c6ff");
+}
+
+var i199 = "";
+for (var j = 50944; j < 51200; j++)
+ i199 += String.fromCharCode(j);
+var o199 = i199;
+if (i199.replace(/\w+/g, "") !== o199) {
+ $ERROR("#199: Error matching character class \w between character c700 and c7ff");
+}
+
+var i200 = "";
+for (var j = 51200; j < 51456; j++)
+ i200 += String.fromCharCode(j);
+var o200 = i200;
+if (i200.replace(/\w+/g, "") !== o200) {
+ $ERROR("#200: Error matching character class \w between character c800 and c8ff");
+}
+
+var i201 = "";
+for (var j = 51456; j < 51712; j++)
+ i201 += String.fromCharCode(j);
+var o201 = i201;
+if (i201.replace(/\w+/g, "") !== o201) {
+ $ERROR("#201: Error matching character class \w between character c900 and c9ff");
+}
+
+var i202 = "";
+for (var j = 51712; j < 51968; j++)
+ i202 += String.fromCharCode(j);
+var o202 = i202;
+if (i202.replace(/\w+/g, "") !== o202) {
+ $ERROR("#202: Error matching character class \w between character ca00 and caff");
+}
+
+var i203 = "";
+for (var j = 51968; j < 52224; j++)
+ i203 += String.fromCharCode(j);
+var o203 = i203;
+if (i203.replace(/\w+/g, "") !== o203) {
+ $ERROR("#203: Error matching character class \w between character cb00 and cbff");
+}
+
+var i204 = "";
+for (var j = 52224; j < 52480; j++)
+ i204 += String.fromCharCode(j);
+var o204 = i204;
+if (i204.replace(/\w+/g, "") !== o204) {
+ $ERROR("#204: Error matching character class \w between character cc00 and ccff");
+}
+
+var i205 = "";
+for (var j = 52480; j < 52736; j++)
+ i205 += String.fromCharCode(j);
+var o205 = i205;
+if (i205.replace(/\w+/g, "") !== o205) {
+ $ERROR("#205: Error matching character class \w between character cd00 and cdff");
+}
+
+var i206 = "";
+for (var j = 52736; j < 52992; j++)
+ i206 += String.fromCharCode(j);
+var o206 = i206;
+if (i206.replace(/\w+/g, "") !== o206) {
+ $ERROR("#206: Error matching character class \w between character ce00 and ceff");
+}
+
+var i207 = "";
+for (var j = 52992; j < 53248; j++)
+ i207 += String.fromCharCode(j);
+var o207 = i207;
+if (i207.replace(/\w+/g, "") !== o207) {
+ $ERROR("#207: Error matching character class \w between character cf00 and cfff");
+}
+
+var i208 = "";
+for (var j = 53248; j < 53504; j++)
+ i208 += String.fromCharCode(j);
+var o208 = i208;
+if (i208.replace(/\w+/g, "") !== o208) {
+ $ERROR("#208: Error matching character class \w between character d000 and d0ff");
+}
+
+var i209 = "";
+for (var j = 53504; j < 53760; j++)
+ i209 += String.fromCharCode(j);
+var o209 = i209;
+if (i209.replace(/\w+/g, "") !== o209) {
+ $ERROR("#209: Error matching character class \w between character d100 and d1ff");
+}
+
+var i210 = "";
+for (var j = 53760; j < 54016; j++)
+ i210 += String.fromCharCode(j);
+var o210 = i210;
+if (i210.replace(/\w+/g, "") !== o210) {
+ $ERROR("#210: Error matching character class \w between character d200 and d2ff");
+}
+
+var i211 = "";
+for (var j = 54016; j < 54272; j++)
+ i211 += String.fromCharCode(j);
+var o211 = i211;
+if (i211.replace(/\w+/g, "") !== o211) {
+ $ERROR("#211: Error matching character class \w between character d300 and d3ff");
+}
+
+var i212 = "";
+for (var j = 54272; j < 54528; j++)
+ i212 += String.fromCharCode(j);
+var o212 = i212;
+if (i212.replace(/\w+/g, "") !== o212) {
+ $ERROR("#212: Error matching character class \w between character d400 and d4ff");
+}
+
+var i213 = "";
+for (var j = 54528; j < 54784; j++)
+ i213 += String.fromCharCode(j);
+var o213 = i213;
+if (i213.replace(/\w+/g, "") !== o213) {
+ $ERROR("#213: Error matching character class \w between character d500 and d5ff");
+}
+
+var i214 = "";
+for (var j = 54784; j < 55040; j++)
+ i214 += String.fromCharCode(j);
+var o214 = i214;
+if (i214.replace(/\w+/g, "") !== o214) {
+ $ERROR("#214: Error matching character class \w between character d600 and d6ff");
+}
+
+var i215 = "";
+for (var j = 55040; j < 55296; j++)
+ i215 += String.fromCharCode(j);
+var o215 = i215;
+if (i215.replace(/\w+/g, "") !== o215) {
+ $ERROR("#215: Error matching character class \w between character d700 and d7ff");
+}
+
+var i216 = "";
+for (var j = 55296; j < 55552; j++)
+ i216 += String.fromCharCode(j);
+var o216 = i216;
+if (i216.replace(/\w+/g, "") !== o216) {
+ $ERROR("#216: Error matching character class \w between character d800 and d8ff");
+}
+
+var i217 = "";
+for (var j = 55552; j < 55808; j++)
+ i217 += String.fromCharCode(j);
+var o217 = i217;
+if (i217.replace(/\w+/g, "") !== o217) {
+ $ERROR("#217: Error matching character class \w between character d900 and d9ff");
+}
+
+var i218 = "";
+for (var j = 55808; j < 56064; j++)
+ i218 += String.fromCharCode(j);
+var o218 = i218;
+if (i218.replace(/\w+/g, "") !== o218) {
+ $ERROR("#218: Error matching character class \w between character da00 and daff");
+}
+
+var i219 = "";
+for (var j = 56064; j < 56320; j++)
+ i219 += String.fromCharCode(j);
+var o219 = i219;
+if (i219.replace(/\w+/g, "") !== o219) {
+ $ERROR("#219: Error matching character class \w between character db00 and dbff");
+}
+
+var i220 = "";
+for (var j = 56320; j < 56576; j++)
+ i220 += String.fromCharCode(j);
+var o220 = i220;
+if (i220.replace(/\w+/g, "") !== o220) {
+ $ERROR("#220: Error matching character class \w between character dc00 and dcff");
+}
+
+var i221 = "";
+for (var j = 56576; j < 56832; j++)
+ i221 += String.fromCharCode(j);
+var o221 = i221;
+if (i221.replace(/\w+/g, "") !== o221) {
+ $ERROR("#221: Error matching character class \w between character dd00 and ddff");
+}
+
+var i222 = "";
+for (var j = 56832; j < 57088; j++)
+ i222 += String.fromCharCode(j);
+var o222 = i222;
+if (i222.replace(/\w+/g, "") !== o222) {
+ $ERROR("#222: Error matching character class \w between character de00 and deff");
+}
+
+var i223 = "";
+for (var j = 57088; j < 57344; j++)
+ i223 += String.fromCharCode(j);
+var o223 = i223;
+if (i223.replace(/\w+/g, "") !== o223) {
+ $ERROR("#223: Error matching character class \w between character df00 and dfff");
+}
+
+var i224 = "";
+for (var j = 57344; j < 57600; j++)
+ i224 += String.fromCharCode(j);
+var o224 = i224;
+if (i224.replace(/\w+/g, "") !== o224) {
+ $ERROR("#224: Error matching character class \w between character e000 and e0ff");
+}
+
+var i225 = "";
+for (var j = 57600; j < 57856; j++)
+ i225 += String.fromCharCode(j);
+var o225 = i225;
+if (i225.replace(/\w+/g, "") !== o225) {
+ $ERROR("#225: Error matching character class \w between character e100 and e1ff");
+}
+
+var i226 = "";
+for (var j = 57856; j < 58112; j++)
+ i226 += String.fromCharCode(j);
+var o226 = i226;
+if (i226.replace(/\w+/g, "") !== o226) {
+ $ERROR("#226: Error matching character class \w between character e200 and e2ff");
+}
+
+var i227 = "";
+for (var j = 58112; j < 58368; j++)
+ i227 += String.fromCharCode(j);
+var o227 = i227;
+if (i227.replace(/\w+/g, "") !== o227) {
+ $ERROR("#227: Error matching character class \w between character e300 and e3ff");
+}
+
+var i228 = "";
+for (var j = 58368; j < 58624; j++)
+ i228 += String.fromCharCode(j);
+var o228 = i228;
+if (i228.replace(/\w+/g, "") !== o228) {
+ $ERROR("#228: Error matching character class \w between character e400 and e4ff");
+}
+
+var i229 = "";
+for (var j = 58624; j < 58880; j++)
+ i229 += String.fromCharCode(j);
+var o229 = i229;
+if (i229.replace(/\w+/g, "") !== o229) {
+ $ERROR("#229: Error matching character class \w between character e500 and e5ff");
+}
+
+var i230 = "";
+for (var j = 58880; j < 59136; j++)
+ i230 += String.fromCharCode(j);
+var o230 = i230;
+if (i230.replace(/\w+/g, "") !== o230) {
+ $ERROR("#230: Error matching character class \w between character e600 and e6ff");
+}
+
+var i231 = "";
+for (var j = 59136; j < 59392; j++)
+ i231 += String.fromCharCode(j);
+var o231 = i231;
+if (i231.replace(/\w+/g, "") !== o231) {
+ $ERROR("#231: Error matching character class \w between character e700 and e7ff");
+}
+
+var i232 = "";
+for (var j = 59392; j < 59648; j++)
+ i232 += String.fromCharCode(j);
+var o232 = i232;
+if (i232.replace(/\w+/g, "") !== o232) {
+ $ERROR("#232: Error matching character class \w between character e800 and e8ff");
+}
+
+var i233 = "";
+for (var j = 59648; j < 59904; j++)
+ i233 += String.fromCharCode(j);
+var o233 = i233;
+if (i233.replace(/\w+/g, "") !== o233) {
+ $ERROR("#233: Error matching character class \w between character e900 and e9ff");
+}
+
+var i234 = "";
+for (var j = 59904; j < 60160; j++)
+ i234 += String.fromCharCode(j);
+var o234 = i234;
+if (i234.replace(/\w+/g, "") !== o234) {
+ $ERROR("#234: Error matching character class \w between character ea00 and eaff");
+}
+
+var i235 = "";
+for (var j = 60160; j < 60416; j++)
+ i235 += String.fromCharCode(j);
+var o235 = i235;
+if (i235.replace(/\w+/g, "") !== o235) {
+ $ERROR("#235: Error matching character class \w between character eb00 and ebff");
+}
+
+var i236 = "";
+for (var j = 60416; j < 60672; j++)
+ i236 += String.fromCharCode(j);
+var o236 = i236;
+if (i236.replace(/\w+/g, "") !== o236) {
+ $ERROR("#236: Error matching character class \w between character ec00 and ecff");
+}
+
+var i237 = "";
+for (var j = 60672; j < 60928; j++)
+ i237 += String.fromCharCode(j);
+var o237 = i237;
+if (i237.replace(/\w+/g, "") !== o237) {
+ $ERROR("#237: Error matching character class \w between character ed00 and edff");
+}
+
+var i238 = "";
+for (var j = 60928; j < 61184; j++)
+ i238 += String.fromCharCode(j);
+var o238 = i238;
+if (i238.replace(/\w+/g, "") !== o238) {
+ $ERROR("#238: Error matching character class \w between character ee00 and eeff");
+}
+
+var i239 = "";
+for (var j = 61184; j < 61440; j++)
+ i239 += String.fromCharCode(j);
+var o239 = i239;
+if (i239.replace(/\w+/g, "") !== o239) {
+ $ERROR("#239: Error matching character class \w between character ef00 and efff");
+}
+
+var i240 = "";
+for (var j = 61440; j < 61696; j++)
+ i240 += String.fromCharCode(j);
+var o240 = i240;
+if (i240.replace(/\w+/g, "") !== o240) {
+ $ERROR("#240: Error matching character class \w between character f000 and f0ff");
+}
+
+var i241 = "";
+for (var j = 61696; j < 61952; j++)
+ i241 += String.fromCharCode(j);
+var o241 = i241;
+if (i241.replace(/\w+/g, "") !== o241) {
+ $ERROR("#241: Error matching character class \w between character f100 and f1ff");
+}
+
+var i242 = "";
+for (var j = 61952; j < 62208; j++)
+ i242 += String.fromCharCode(j);
+var o242 = i242;
+if (i242.replace(/\w+/g, "") !== o242) {
+ $ERROR("#242: Error matching character class \w between character f200 and f2ff");
+}
+
+var i243 = "";
+for (var j = 62208; j < 62464; j++)
+ i243 += String.fromCharCode(j);
+var o243 = i243;
+if (i243.replace(/\w+/g, "") !== o243) {
+ $ERROR("#243: Error matching character class \w between character f300 and f3ff");
+}
+
+var i244 = "";
+for (var j = 62464; j < 62720; j++)
+ i244 += String.fromCharCode(j);
+var o244 = i244;
+if (i244.replace(/\w+/g, "") !== o244) {
+ $ERROR("#244: Error matching character class \w between character f400 and f4ff");
+}
+
+var i245 = "";
+for (var j = 62720; j < 62976; j++)
+ i245 += String.fromCharCode(j);
+var o245 = i245;
+if (i245.replace(/\w+/g, "") !== o245) {
+ $ERROR("#245: Error matching character class \w between character f500 and f5ff");
+}
+
+var i246 = "";
+for (var j = 62976; j < 63232; j++)
+ i246 += String.fromCharCode(j);
+var o246 = i246;
+if (i246.replace(/\w+/g, "") !== o246) {
+ $ERROR("#246: Error matching character class \w between character f600 and f6ff");
+}
+
+var i247 = "";
+for (var j = 63232; j < 63488; j++)
+ i247 += String.fromCharCode(j);
+var o247 = i247;
+if (i247.replace(/\w+/g, "") !== o247) {
+ $ERROR("#247: Error matching character class \w between character f700 and f7ff");
+}
+
+var i248 = "";
+for (var j = 63488; j < 63744; j++)
+ i248 += String.fromCharCode(j);
+var o248 = i248;
+if (i248.replace(/\w+/g, "") !== o248) {
+ $ERROR("#248: Error matching character class \w between character f800 and f8ff");
+}
+
+var i249 = "";
+for (var j = 63744; j < 64000; j++)
+ i249 += String.fromCharCode(j);
+var o249 = i249;
+if (i249.replace(/\w+/g, "") !== o249) {
+ $ERROR("#249: Error matching character class \w between character f900 and f9ff");
+}
+
+var i250 = "";
+for (var j = 64000; j < 64256; j++)
+ i250 += String.fromCharCode(j);
+var o250 = i250;
+if (i250.replace(/\w+/g, "") !== o250) {
+ $ERROR("#250: Error matching character class \w between character fa00 and faff");
+}
+
+var i251 = "";
+for (var j = 64256; j < 64512; j++)
+ i251 += String.fromCharCode(j);
+var o251 = i251;
+if (i251.replace(/\w+/g, "") !== o251) {
+ $ERROR("#251: Error matching character class \w between character fb00 and fbff");
+}
+
+var i252 = "";
+for (var j = 64512; j < 64768; j++)
+ i252 += String.fromCharCode(j);
+var o252 = i252;
+if (i252.replace(/\w+/g, "") !== o252) {
+ $ERROR("#252: Error matching character class \w between character fc00 and fcff");
+}
+
+var i253 = "";
+for (var j = 64768; j < 65024; j++)
+ i253 += String.fromCharCode(j);
+var o253 = i253;
+if (i253.replace(/\w+/g, "") !== o253) {
+ $ERROR("#253: Error matching character class \w between character fd00 and fdff");
+}
+
+var i254 = "";
+for (var j = 65024; j < 65280; j++)
+ i254 += String.fromCharCode(j);
+var o254 = i254;
+if (i254.replace(/\w+/g, "") !== o254) {
+ $ERROR("#254: Error matching character class \w between character fe00 and feff");
+}
+
+var i255 = "";
+for (var j = 65280; j < 65536; j++)
+ i255 += String.fromCharCode(j);
+var o255 = i255;
+if (i255.replace(/\w+/g, "") !== o255) {
+ $ERROR("#255: Error matching character class \w between character ff00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js
new file mode 100644
index 000000000..4d2066236
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: a - z;
+*/
+
+var regexp_w = /\w/;
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_w.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: a - z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js
new file mode 100644
index 000000000..b463c3635
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: 0 - 9, _;
+*/
+
+var regexp_w = /\w/;
+
+//CHECK#0030-0039
+var result = true;
+for (alpha = 0x0030; alpha <= 0x0039; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_w.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: 0 - 9');
+}
+
+//CHECK#005F
+var arr = regexp_w.exec("_");
+if ((arr === null) || (arr[0] !== "\u005F")) {
+ $ERROR('#2: _');
+}
+
+//CHECK#0020
+if (regexp_w.exec(" ") !== null) {
+ $ERROR('#3: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js
new file mode 100644
index 000000000..9273abdde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_w = /\w/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ if (regexp_w.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ if (regexp_w.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js
new file mode 100644
index 000000000..9724c0143
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T5;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: non-w;
+*/
+
+//CHECK#1
+var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+if (/\w/.exec(non_w) !== null) {
+ $ERROR('#1: non-w');
+}
+
+//CHECK#2
+var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+var regexp_w = /\w/g;
+var k = 0;
+while (regexp_w.exec(non_W) !== null) {
+ k++;
+}
+
+if (non_W.length !== k) {
+ $ERROR('#2: non-W');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js
new file mode 100644
index 000000000..e6d564ab9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js
@@ -0,0 +1,522 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: A - Z;
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u005F\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A";
+if (i0.replace(/\W+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \W between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = "";
+if (i1.replace(/\W+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \W between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = "";
+if (i2.replace(/\W+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \W between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = "";
+if (i3.replace(/\W+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \W between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = "";
+if (i4.replace(/\W+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \W between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "";
+if (i5.replace(/\W+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \W between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "";
+if (i6.replace(/\W+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \W between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = "";
+if (i7.replace(/\W+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \W between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "";
+if (i8.replace(/\W+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \W between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = "";
+if (i9.replace(/\W+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \W between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = "";
+if (i10.replace(/\W+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \W between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = "";
+if (i11.replace(/\W+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \W between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "";
+if (i12.replace(/\W+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \W between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = "";
+if (i13.replace(/\W+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \W between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = "";
+if (i14.replace(/\W+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \W between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = "";
+if (i15.replace(/\W+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \W between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = "";
+if (i16.replace(/\W+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \W between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = "";
+if (i17.replace(/\W+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \W between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = "";
+if (i18.replace(/\W+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \W between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = "";
+if (i19.replace(/\W+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \W between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = "";
+if (i20.replace(/\W+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \W between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = "";
+if (i21.replace(/\W+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \W between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = "";
+if (i22.replace(/\W+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \W between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = "";
+if (i23.replace(/\W+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \W between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = "";
+if (i24.replace(/\W+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \W between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = "";
+if (i25.replace(/\W+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \W between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = "";
+if (i26.replace(/\W+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \W between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = "";
+if (i27.replace(/\W+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \W between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = "";
+if (i28.replace(/\W+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \W between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = "";
+if (i29.replace(/\W+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \W between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = "";
+if (i30.replace(/\W+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \W between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = "";
+if (i31.replace(/\W+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \W between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = "";
+if (i32.replace(/\W+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \W between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = "";
+if (i33.replace(/\W+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \W between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = "";
+if (i34.replace(/\W+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \W between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = "";
+if (i35.replace(/\W+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \W between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = "";
+if (i36.replace(/\W+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \W between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = "";
+if (i37.replace(/\W+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \W between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = "";
+if (i38.replace(/\W+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \W between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = "";
+if (i39.replace(/\W+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \W between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = "";
+if (i40.replace(/\W+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \W between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = "";
+if (i41.replace(/\W+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \W between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = "";
+if (i42.replace(/\W+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \W between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = "";
+if (i43.replace(/\W+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \W between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = "";
+if (i44.replace(/\W+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \W between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = "";
+if (i45.replace(/\W+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \W between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = "";
+if (i46.replace(/\W+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \W between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = "";
+if (i47.replace(/\W+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \W between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = "";
+if (i48.replace(/\W+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \W between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = "";
+if (i49.replace(/\W+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \W between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = "";
+if (i50.replace(/\W+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \W between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = "";
+if (i51.replace(/\W+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \W between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = "";
+if (i52.replace(/\W+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \W between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = "";
+if (i53.replace(/\W+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \W between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = "";
+if (i54.replace(/\W+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \W between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = "";
+if (i55.replace(/\W+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \W between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = "";
+if (i56.replace(/\W+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \W between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = "";
+if (i57.replace(/\W+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \W between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = "";
+if (i58.replace(/\W+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \W between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = "";
+if (i59.replace(/\W+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \W between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = "";
+if (i60.replace(/\W+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \W between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = "";
+if (i61.replace(/\W+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \W between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = "";
+if (i62.replace(/\W+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \W between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = "";
+if (i63.replace(/\W+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \W between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js
new file mode 100644
index 000000000..91b630822
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: a - z;
+*/
+
+var regexp_W = /\W/;
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ if (regexp_W.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: a - z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js
new file mode 100644
index 000000000..b551560db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: 0 - 9;
+*/
+
+var regexp_W = /\W/;
+
+//CHECK#0030-0039
+var result = true;
+for (alpha = 0x0030; alpha <= 0x0039; alpha++) {
+ if (regexp_W.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: 0 - 9');
+}
+
+//CHECK#005F
+if (regexp_W.exec("_") !== null) {
+ $ERROR('#2: _');
+}
+
+//CHECK#0020
+var arr = regexp_W.exec(" ");
+if ((arr === null) || (arr[0] !== "\u0020")) {
+ $ERROR('#2: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js
new file mode 100644
index 000000000..9427fd65e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_W = /\W/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_W.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_W.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js
new file mode 100644
index 000000000..a76e56e6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T5;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: non-w;
+*/
+
+//CHECK#1
+var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+var regexp_W = /\W/g;
+var k = 0;
+while (regexp_W.exec(non_w) !== null) {
+ k++;
+}
+
+if (non_w.length !== k) {
+ $ERROR('#1: non-w');
+}
+
+//CHECK#2
+var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+if (/\W/.exec(non_W) !== null) {
+ $ERROR('#2: non-W');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js
new file mode 100644
index 000000000..b2e01cb7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js
@@ -0,0 +1,521 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: 0 - 9;
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\u000A\u000B\u000C\u000D\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0020\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u003A\u003B\u003C\u003D\u003E\u003F\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u005B\u005C\u005D\u005E\u005F\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u0100\u0101\u0102\u0103\u0104\u0105\u0106\u0107\u0108\u0109\u010A\u010B\u010C\u010D\u010E\u010F\u0110\u0111\u0112\u0113\u0114\u0115\u0116\u0117\u0118\u0119\u011A\u011B\u011C\u011D\u011E\u011F\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127\u0128\u0129\u012A\u012B\u012C\u012D\u012E\u012F\u0130\u0131\u0132\u0133\u0134\u0135\u0136\u0137\u0138\u0139\u013A\u013B\u013C\u013D\u013E\u013F\u0140\u0141\u0142\u0143\u0144\u0145\u0146\u0147\u0148\u0149\u014A\u014B\u014C\u014D\u014E\u014F\u0150\u0151\u0152\u0153\u0154\u0155\u0156\u0157\u0158\u0159\u015A\u015B\u015C\u015D\u015E\u015F\u0160\u0161\u0162\u0163\u0164\u0165\u0166\u0167\u0168\u0169\u016A\u016B\u016C\u016D\u016E\u016F\u0170\u0171\u0172\u0173\u0174\u0175\u0176\u0177\u0178\u0179\u017A\u017B\u017C\u017D\u017E\u017F\u0180\u0181\u0182\u0183\u0184\u0185\u0186\u0187\u0188\u0189\u018A\u018B\u018C\u018D\u018E\u018F\u0190\u0191\u0192\u0193\u0194\u0195\u0196\u0197\u0198\u0199\u019A\u019B\u019C\u019D\u019E\u019F\u01A0\u01A1\u01A2\u01A3\u01A4\u01A5\u01A6\u01A7\u01A8\u01A9\u01AA\u01AB\u01AC\u01AD\u01AE\u01AF\u01B0\u01B1\u01B2\u01B3\u01B4\u01B5\u01B6\u01B7\u01B8\u01B9\u01BA\u01BB\u01BC\u01BD\u01BE\u01BF\u01C0\u01C1\u01C2\u01C3\u01C4\u01C5\u01C6\u01C7\u01C8\u01C9\u01CA\u01CB\u01CC\u01CD\u01CE\u01CF\u01D0\u01D1\u01D2\u01D3\u01D4\u01D5\u01D6\u01D7\u01D8\u01D9\u01DA\u01DB\u01DC\u01DD\u01DE\u01DF\u01E0\u01E1\u01E2\u01E3\u01E4\u01E5\u01E6\u01E7\u01E8\u01E9\u01EA\u01EB\u01EC\u01ED\u01EE\u01EF\u01F0\u01F1\u01F2\u01F3\u01F4\u01F5\u01F6\u01F7\u01F8\u01F9\u01FA\u01FB\u01FC\u01FD\u01FE\u01FF\u0200\u0201\u0202\u0203\u0204\u0205\u0206\u0207\u0208\u0209\u020A\u020B\u020C\u020D\u020E\u020F\u0210\u0211\u0212\u0213\u0214\u0215\u0216\u0217\u0218\u0219\u021A\u021B\u021C\u021D\u021E\u021F\u0220\u0221\u0222\u0223\u0224\u0225\u0226\u0227\u0228\u0229\u022A\u022B\u022C\u022D\u022E\u022F\u0230\u0231\u0232\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023A\u023B\u023C\u023D\u023E\u023F\u0240\u0241\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024A\u024B\u024C\u024D\u024E\u024F\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D\u025E\u025F\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E\u028F\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE\u02AF\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE\u02BF\u02C0\u02C1\u02C2\u02C3\u02C4\u02C5\u02C6\u02C7\u02C8\u02C9\u02CA\u02CB\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02D2\u02D3\u02D4\u02D5\u02D6\u02D7\u02D8\u02D9\u02DA\u02DB\u02DC\u02DD\u02DE\u02DF\u02E0\u02E1\u02E2\u02E3\u02E4\u02E5\u02E6\u02E7\u02E8\u02E9\u02EA\u02EB\u02EC\u02ED\u02EE\u02EF\u02F0\u02F1\u02F2\u02F3\u02F4\u02F5\u02F6\u02F7\u02F8\u02F9\u02FA\u02FB\u02FC\u02FD\u02FE\u02FF\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B\u036C\u036D\u036E\u036F\u0370\u0371\u0372\u0373\u0374\u0375\u0376\u0377\u0378\u0379\u037A\u037B\u037C\u037D\u037E\u037F\u0380\u0381\u0382\u0383\u0384\u0385\u0386\u0387\u0388\u0389\u038A\u038B\u038C\u038D\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A2\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\u03CF\u03D0\u03D1\u03D2\u03D3\u03D4\u03D5\u03D6\u03D7\u03D8\u03D9\u03DA\u03DB\u03DC\u03DD\u03DE\u03DF\u03E0\u03E1\u03E2\u03E3\u03E4\u03E5\u03E6\u03E7\u03E8\u03E9\u03EA\u03EB\u03EC\u03ED\u03EE\u03EF\u03F0\u03F1\u03F2\u03F3\u03F4\u03F5\u03F6\u03F7\u03F8\u03F9\u03FA\u03FB\u03FC\u03FD\u03FE\u03FF";
+if (i0.replace(/\d+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \d between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = i1;
+if (i1.replace(/\d+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \d between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = i2;
+if (i2.replace(/\d+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \d between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = i3;
+if (i3.replace(/\d+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \d between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = i4;
+if (i4.replace(/\d+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \d between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = i5;
+if (i5.replace(/\d+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \d between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = i6;
+if (i6.replace(/\d+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \d between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = i7;
+if (i7.replace(/\d+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \d between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = i8;
+if (i8.replace(/\d+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \d between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = i9;
+if (i9.replace(/\d+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \d between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = i10;
+if (i10.replace(/\d+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \d between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = i11;
+if (i11.replace(/\d+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \d between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = i12;
+if (i12.replace(/\d+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \d between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = i13;
+if (i13.replace(/\d+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \d between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = i14;
+if (i14.replace(/\d+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \d between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = i15;
+if (i15.replace(/\d+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \d between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = i16;
+if (i16.replace(/\d+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \d between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = i17;
+if (i17.replace(/\d+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \d between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = i18;
+if (i18.replace(/\d+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \d between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = i19;
+if (i19.replace(/\d+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \d between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = i20;
+if (i20.replace(/\d+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \d between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = i21;
+if (i21.replace(/\d+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \d between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = i22;
+if (i22.replace(/\d+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \d between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = i23;
+if (i23.replace(/\d+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \d between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = i24;
+if (i24.replace(/\d+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \d between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = i25;
+if (i25.replace(/\d+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \d between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = i26;
+if (i26.replace(/\d+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \d between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = i27;
+if (i27.replace(/\d+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \d between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = i28;
+if (i28.replace(/\d+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \d between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = i29;
+if (i29.replace(/\d+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \d between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = i30;
+if (i30.replace(/\d+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \d between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = i31;
+if (i31.replace(/\d+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \d between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = i32;
+if (i32.replace(/\d+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \d between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = i33;
+if (i33.replace(/\d+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \d between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = i34;
+if (i34.replace(/\d+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \d between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = i35;
+if (i35.replace(/\d+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \d between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = i36;
+if (i36.replace(/\d+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \d between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = i37;
+if (i37.replace(/\d+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \d between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = i38;
+if (i38.replace(/\d+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \d between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = i39;
+if (i39.replace(/\d+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \d between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = i40;
+if (i40.replace(/\d+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \d between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = i41;
+if (i41.replace(/\d+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \d between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = i42;
+if (i42.replace(/\d+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \d between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = i43;
+if (i43.replace(/\d+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \d between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = i44;
+if (i44.replace(/\d+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \d between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = i45;
+if (i45.replace(/\d+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \d between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = i46;
+if (i46.replace(/\d+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \d between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = i47;
+if (i47.replace(/\d+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \d between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = i48;
+if (i48.replace(/\d+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \d between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = i49;
+if (i49.replace(/\d+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \d between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = i50;
+if (i50.replace(/\d+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \d between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = i51;
+if (i51.replace(/\d+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \d between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = i52;
+if (i52.replace(/\d+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \d between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = i53;
+if (i53.replace(/\d+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \d between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = i54;
+if (i54.replace(/\d+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \d between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = i55;
+if (i55.replace(/\d+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \d between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = i56;
+if (i56.replace(/\d+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \d between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = i57;
+if (i57.replace(/\d+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \d between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = i58;
+if (i58.replace(/\d+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \d between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = i59;
+if (i59.replace(/\d+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \d between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = i60;
+if (i60.replace(/\d+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \d between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = i61;
+if (i61.replace(/\d+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \d between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = i62;
+if (i62.replace(/\d+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \d between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = i63;
+if (i63.replace(/\d+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \d between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js
new file mode 100644
index 000000000..775020100
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_d = /\d/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js
new file mode 100644
index 000000000..e0cca8d1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_d = /\d/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js
new file mode 100644
index 000000000..3e1a22959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: non-d;
+*/
+
+//CHECK#1
+var non_d = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+if (/\d/.exec(non_d) !== null) {
+ $ERROR('#1: non-d');
+}
+
+//CHECK#2
+var non_D = '0123456789';
+var regexp_d = /\d/g;
+var k = 0;
+while (regexp_d.exec(non_D) !== null) {
+ k++;
+}
+
+if (non_D.length !== k) {
+ $ERROR('#2: non-D');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js
new file mode 100644
index 000000000..318b40e7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js
@@ -0,0 +1,522 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: 0 - 9;
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039";
+if (i0.replace(/\D+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \D between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = "";
+if (i1.replace(/\D+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \D between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = "";
+if (i2.replace(/\D+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \D between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = "";
+if (i3.replace(/\D+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \D between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = "";
+if (i4.replace(/\D+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \D between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "";
+if (i5.replace(/\D+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \D between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "";
+if (i6.replace(/\D+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \D between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = "";
+if (i7.replace(/\D+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \D between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "";
+if (i8.replace(/\D+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \D between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = "";
+if (i9.replace(/\D+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \D between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = "";
+if (i10.replace(/\D+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \D between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = "";
+if (i11.replace(/\D+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \D between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "";
+if (i12.replace(/\D+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \D between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = "";
+if (i13.replace(/\D+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \D between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = "";
+if (i14.replace(/\D+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \D between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = "";
+if (i15.replace(/\D+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \D between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = "";
+if (i16.replace(/\D+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \D between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = "";
+if (i17.replace(/\D+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \D between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = "";
+if (i18.replace(/\D+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \D between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = "";
+if (i19.replace(/\D+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \D between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = "";
+if (i20.replace(/\D+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \D between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = "";
+if (i21.replace(/\D+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \D between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = "";
+if (i22.replace(/\D+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \D between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = "";
+if (i23.replace(/\D+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \D between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = "";
+if (i24.replace(/\D+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \D between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = "";
+if (i25.replace(/\D+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \D between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = "";
+if (i26.replace(/\D+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \D between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = "";
+if (i27.replace(/\D+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \D between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = "";
+if (i28.replace(/\D+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \D between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = "";
+if (i29.replace(/\D+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \D between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = "";
+if (i30.replace(/\D+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \D between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = "";
+if (i31.replace(/\D+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \D between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = "";
+if (i32.replace(/\D+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \D between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = "";
+if (i33.replace(/\D+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \D between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = "";
+if (i34.replace(/\D+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \D between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = "";
+if (i35.replace(/\D+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \D between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = "";
+if (i36.replace(/\D+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \D between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = "";
+if (i37.replace(/\D+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \D between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = "";
+if (i38.replace(/\D+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \D between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = "";
+if (i39.replace(/\D+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \D between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = "";
+if (i40.replace(/\D+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \D between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = "";
+if (i41.replace(/\D+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \D between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = "";
+if (i42.replace(/\D+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \D between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = "";
+if (i43.replace(/\D+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \D between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = "";
+if (i44.replace(/\D+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \D between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = "";
+if (i45.replace(/\D+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \D between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = "";
+if (i46.replace(/\D+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \D between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = "";
+if (i47.replace(/\D+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \D between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = "";
+if (i48.replace(/\D+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \D between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = "";
+if (i49.replace(/\D+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \D between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = "";
+if (i50.replace(/\D+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \D between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = "";
+if (i51.replace(/\D+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \D between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = "";
+if (i52.replace(/\D+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \D between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = "";
+if (i53.replace(/\D+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \D between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = "";
+if (i54.replace(/\D+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \D between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = "";
+if (i55.replace(/\D+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \D between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = "";
+if (i56.replace(/\D+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \D between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = "";
+if (i57.replace(/\D+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \D between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = "";
+if (i58.replace(/\D+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \D between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = "";
+if (i59.replace(/\D+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \D between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = "";
+if (i60.replace(/\D+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \D between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = "";
+if (i61.replace(/\D+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \D between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = "";
+if (i62.replace(/\D+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \D between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = "";
+if (i63.replace(/\D+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \D between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js
new file mode 100644
index 000000000..3604bf9c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_D = /\D/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js
new file mode 100644
index 000000000..a5751f3f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_D = /\D/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js
new file mode 100644
index 000000000..400f73a91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+var non_d = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+var regexp_D = /\D/g;
+var k = 0;
+while (regexp_D.exec(non_d) !== null) {
+ k++;
+}
+
+if (non_d.length !== k) {
+ $ERROR('#1: non-d');
+}
+
+//CHECK#2
+var non_d = '0123456789';
+if (/\D/.exec(non_d) !== null) {
+ $ERROR('#2: non-d');
+}