@prantlf/jsonlint 11.7.2 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,6 @@
1
- (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint-formatter",["exports"],factory):(global=global||self,factory(global.jsonlintFormatter={}))})(this,(function(exports){"use strict";function repeat(s,count){return new Array(count+1).join(s)}function format(json,indent){let i=0;let length=0;const indentString=indent!==undefined?typeof indent==="number"?new Array(indent+1).join(" "):indent:" ";let outputString="";let indentLevel=0;let inString;let currentChar;for(i=0,length=json.length;i<length;i+=1){currentChar=json.charAt(i);switch(currentChar){case"{":case"[":if(!inString){outputString+=currentChar+"\n"+repeat(indentString,indentLevel+1);indentLevel+=1}else{outputString+=currentChar}break;case"}":case"]":if(!inString){indentLevel-=1;outputString+="\n"+repeat(indentString,indentLevel)+currentChar}else{outputString+=currentChar}break;case",":if(!inString){outputString+=",\n"+repeat(indentString,indentLevel)}else{outputString+=currentChar}break;case":":if(!inString){outputString+=": "}else{outputString+=currentChar}break;case" ":case"\n":case"\t":if(inString){outputString+=currentChar}break;case'"':if(i>0&&json.charAt(i-1)!=="\\"){inString=!inString}outputString+=currentChar;break;default:outputString+=currentChar;break}}return outputString}exports.format=format;Object.defineProperty(exports,"__esModule",{value:true})}));
2
- //# sourceMappingURL=formatter.min.js.map
1
+ (function(i,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define("jsonlint-formatter",["exports"],n):(i=i||self,n(i.jsonlintFormatter={}))})(this,function(i){"use strict";function n(s,a){return new Array(a+1).join(s)}function l(s,a){let f=0,u=0;const o=a!==void 0?typeof a=="number"?new Array(a+1).join(" "):a:" ";let e="",c=0,r,t;for(f=0,u=s.length;f<u;f+=1)switch(t=s.charAt(f),t){case"{":case"[":r?e+=t:(e+=t+`
2
+ `+n(o,c+1),c+=1);break;case"}":case"]":r?e+=t:(c-=1,e+=`
3
+ `+n(o,c)+t);break;case",":r?e+=t:e+=`,
4
+ `+n(o,c);break;case":":r?e+=t:e+=": ";break;case" ":case`
5
+ `:case" ":r&&(e+=t);break;case'"':f>0&&s.charAt(f-1)!=="\\"&&(r=!r),e+=t;break;default:e+=t;break}return e}i.format=l,Object.defineProperty(i,"__esModule",{value:!0})});
6
+ //# sourceMappingURL=formatter.min.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"formatter.js","names":["global","factory","exports","module","define","amd","self","jsonlintFormatter","this","repeat","s","count","Array","join","format","json","indent","i","length","indentString","undefined","outputString","indentLevel","inString","currentChar","charAt","Object","defineProperty","value"],"sources":["lib/formatter.js"],"sourcesContent":["(function (global, factory) {\n // eslint-disable-next-line no-unused-expressions, multiline-ternary\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)\n // eslint-disable-next-line no-undef, multiline-ternary\n : typeof define === 'function' && define.amd ? define('jsonlint-formatter', ['exports'], factory)\n // eslint-disable-next-line no-undef\n : (global = global || self, factory(global.jsonlintFormatter = {}))\n}(this, function (exports) {\n 'use strict'\n\n /**\n * Manual formatter taken straight from https://github.com/umbrae/jsonlintdotcom\n *\n * jsl.format - Provide json reformatting in a character-by-character approach,\n * so that even invalid JSON may be reformatted (to the best of its ability).\n *\n */\n\n function repeat (s, count) {\n return new Array(count + 1).join(s)\n }\n\n function format (json, indent) {\n let i = 0\n let length = 0\n const indentString = indent !== undefined\n ? typeof indent === 'number'\n ? new Array(indent + 1).join(' ')\n : indent\n : ' '\n let outputString = ''\n let indentLevel = 0\n let inString\n let currentChar\n\n for (i = 0, length = json.length; i < length; i += 1) {\n currentChar = json.charAt(i)\n switch (currentChar) {\n case '{':\n case '[':\n if (!inString) {\n outputString += currentChar + '\\n' + repeat(indentString, indentLevel + 1)\n indentLevel += 1\n } else {\n outputString += currentChar\n }\n break\n case '}':\n case ']':\n if (!inString) {\n indentLevel -= 1\n outputString += '\\n' + repeat(indentString, indentLevel) + currentChar\n } else {\n outputString += currentChar\n }\n break\n case ',':\n if (!inString) {\n outputString += ',\\n' + repeat(indentString, indentLevel)\n } else {\n outputString += currentChar\n }\n break\n case ':':\n if (!inString) {\n outputString += ': '\n } else {\n outputString += currentChar\n }\n break\n case ' ':\n case '\\n':\n case '\\t':\n if (inString) {\n outputString += currentChar\n }\n break\n case '\"':\n if (i > 0 && json.charAt(i - 1) !== '\\\\') {\n inString = !inString\n }\n outputString += currentChar\n break\n default:\n outputString += currentChar\n break\n }\n }\n\n return outputString\n }\n\n exports.format = format\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}))\n"],"mappings":"CAAC,SAAUA,OAAQC,gBAEVC,UAAY,iBAAmBC,SAAW,YAAcF,QAAQC,gBAE5DE,SAAW,YAAcA,OAAOC,IAAMD,OAAO,qBAAsB,CAAC,WAAYH,UAEpFD,OAASA,QAAUM,KAAML,QAAQD,OAAOO,kBAAoB,CAAC,GACtE,EAPA,CAOEC,MAAM,SAAUN,SAChB,aAUA,SAASO,OAAQC,EAAGC,OAClB,OAAO,IAAIC,MAAMD,MAAQ,GAAGE,KAAKH,EACnC,CAEA,SAASI,OAAQC,KAAMC,QACrB,IAAIC,EAAI,EACR,IAAIC,OAAS,EACb,MAAMC,aAAeH,SAAWI,iBACrBJ,SAAW,SAChB,IAAIJ,MAAMI,OAAS,GAAGH,KAAK,KAC3BG,OACF,KACJ,IAAIK,aAAe,GACnB,IAAIC,YAAc,EAClB,IAAIC,SACJ,IAAIC,YAEJ,IAAKP,EAAI,EAAGC,OAASH,KAAKG,OAAQD,EAAIC,OAAQD,GAAK,EAAG,CACpDO,YAAcT,KAAKU,OAAOR,GAC1B,OAAQO,aACN,IAAK,IACL,IAAK,IACH,IAAKD,SAAU,CACbF,cAAgBG,YAAc,KAAOf,OAAOU,aAAcG,YAAc,GACxEA,aAAe,CACjB,KAAO,CACLD,cAAgBG,WAClB,CACA,MACF,IAAK,IACL,IAAK,IACH,IAAKD,SAAU,CACbD,aAAe,EACfD,cAAgB,KAAOZ,OAAOU,aAAcG,aAAeE,WAC7D,KAAO,CACLH,cAAgBG,WAClB,CACA,MACF,IAAK,IACH,IAAKD,SAAU,CACbF,cAAgB,MAAQZ,OAAOU,aAAcG,YAC/C,KAAO,CACLD,cAAgBG,WAClB,CACA,MACF,IAAK,IACH,IAAKD,SAAU,CACbF,cAAgB,IAClB,KAAO,CACLA,cAAgBG,WAClB,CACA,MACF,IAAK,IACL,IAAK,KACL,IAAK,KACH,GAAID,SAAU,CACZF,cAAgBG,WAClB,CACA,MACF,IAAK,IACH,GAAIP,EAAI,GAAKF,KAAKU,OAAOR,EAAI,KAAO,KAAM,CACxCM,UAAYA,QACd,CACAF,cAAgBG,YAChB,MACF,QACEH,cAAgBG,YAChB,MAEN,CAEA,OAAOH,YACT,CAEAnB,QAAQY,OAASA,OAEjBY,OAAOC,eAAezB,QAAS,aAAc,CAAE0B,MAAO,MACxD"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../lib/formatter.js"],
4
+ "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)\n : typeof define === 'function' && define.amd ? define('jsonlint-formatter', ['exports'], factory)\n : (global = global || self, factory(global.jsonlintFormatter = {}))\n}(this, function (exports) {\n 'use strict'\n\n /**\n * Manual formatter taken straight from https://github.com/umbrae/jsonlintdotcom\n *\n * jsl.format - Provide json reformatting in a character-by-character approach,\n * so that even invalid JSON may be reformatted (to the best of its ability).\n *\n */\n\n function repeat (s, count) {\n return new Array(count + 1).join(s)\n }\n\n function format (json, indent) {\n let i = 0\n let length = 0\n const indentString = indent !== undefined\n ? typeof indent === 'number'\n ? new Array(indent + 1).join(' ')\n : indent\n : ' '\n let outputString = ''\n let indentLevel = 0\n let inString\n let currentChar\n\n for (i = 0, length = json.length; i < length; i += 1) {\n currentChar = json.charAt(i)\n switch (currentChar) {\n case '{':\n case '[':\n if (!inString) {\n outputString += currentChar + '\\n' + repeat(indentString, indentLevel + 1)\n indentLevel += 1\n } else {\n outputString += currentChar\n }\n break\n case '}':\n case ']':\n if (!inString) {\n indentLevel -= 1\n outputString += '\\n' + repeat(indentString, indentLevel) + currentChar\n } else {\n outputString += currentChar\n }\n break\n case ',':\n if (!inString) {\n outputString += ',\\n' + repeat(indentString, indentLevel)\n } else {\n outputString += currentChar\n }\n break\n case ':':\n if (!inString) {\n outputString += ': '\n } else {\n outputString += currentChar\n }\n break\n case ' ':\n case '\\n':\n case '\\t':\n if (inString) {\n outputString += currentChar\n }\n break\n case '\"':\n if (i > 0 && json.charAt(i - 1) !== '\\\\') {\n inString = !inString\n }\n outputString += currentChar\n break\n default:\n outputString += currentChar\n break\n }\n }\n\n return outputString\n }\n\n exports.format = format\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}))\n"],
5
+ "mappings": "CAAC,SAAUA,EAAQC,EAAS,CAC1B,OAAO,SAAY,UAAY,OAAO,OAAW,IAAcA,EAAQ,OAAO,EAC1E,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,qBAAsB,CAAC,SAAS,EAAGA,CAAO,GAC3FD,EAASA,GAAU,KAAMC,EAAQD,EAAO,kBAAoB,CAAC,CAAC,EACvE,GAAE,KAAM,SAAUE,EAAS,CACzB,aAUA,SAASC,EAAQ,EAAGC,EAAO,CACzB,OAAO,IAAI,MAAMA,EAAQ,CAAC,EAAE,KAAK,CAAC,CACpC,CAEA,SAASC,EAAQC,EAAMC,EAAQ,CAC7B,IAAIC,EAAI,EACJC,EAAS,EACb,MAAMC,EAAeH,IAAW,OAC5B,OAAOA,GAAW,SAChB,IAAI,MAAMA,EAAS,CAAC,EAAE,KAAK,GAAG,EAC9BA,EACF,KACJ,IAAII,EAAe,GACfC,EAAc,EACdC,EACAC,EAEJ,IAAKN,EAAI,EAAGC,EAASH,EAAK,OAAQE,EAAIC,EAAQD,GAAK,EAEjD,OADAM,EAAcR,EAAK,OAAOE,CAAC,EACnBM,EAAa,CACnB,IAAK,IACL,IAAK,IACED,EAIHF,GAAgBG,GAHhBH,GAAgBG,EAAc;AAAA,EAAOX,EAAOO,EAAcE,EAAc,CAAC,EACzEA,GAAe,GAIjB,MACF,IAAK,IACL,IAAK,IACEC,EAIHF,GAAgBG,GAHhBF,GAAe,EACfD,GAAgB;AAAA,EAAOR,EAAOO,EAAcE,CAAW,EAAIE,GAI7D,MACF,IAAK,IACED,EAGHF,GAAgBG,EAFhBH,GAAgB;AAAA,EAAQR,EAAOO,EAAcE,CAAW,EAI1D,MACF,IAAK,IACEC,EAGHF,GAAgBG,EAFhBH,GAAgB,KAIlB,MACF,IAAK,IACL,IAAK;AAAA,EACL,IAAK,IACCE,IACFF,GAAgBG,GAElB,MACF,IAAK,IACCN,EAAI,GAAKF,EAAK,OAAOE,EAAI,CAAC,IAAM,OAClCK,EAAW,CAACA,GAEdF,GAAgBG,EAChB,MACF,QACEH,GAAgBG,EAChB,KACJ,CAGF,OAAOH,CACT,CAEAT,EAAQ,OAASG,EAEjB,OAAO,eAAeH,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAC9D,CAAC",
6
+ "names": ["global", "factory", "exports", "repeat", "count", "format", "json", "indent", "i", "length", "indentString", "outputString", "indentLevel", "inString", "currentChar"]
7
+ }
package/web/jsonlint.html CHANGED
@@ -179,7 +179,7 @@
179
179
  </main>
180
180
  <hr>
181
181
  <footer>
182
- <small>Copyright &copy; 2012-2022 Zachary Carter, Ferdinand Prantl. See the <a href="https://github.com/prantlf/jsonlint#json-lint">project pages</a> to learn about command-line validation and programmatic usage.</small>
182
+ <small>Copyright &copy; 2012-2023 Zachary Carter, Ferdinand Prantl. See the <a href="https://github.com/prantlf/jsonlint#json-lint">project pages</a> to learn about command-line validation and programmatic usage.</small>
183
183
  <!-- See http://tholman.com/github-corners/ -->
184
184
  <a href="http://github.com/prantlf/jsonlint" class="github-corner" title="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
185
185
  </footer>
@@ -1,2 +1,12 @@
1
- (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint",["exports"],factory):(global=global||self,factory(global.jsonlint={}))})(this,(function(exports){"use strict";const Uni={isWhiteSpace:function isWhiteSpace(x){return x===" "||x===" "||x==="\ufeff"||x>="\t"&&x<="\r"||x===" "||x>=" "&&x<=" "||x==="\u2028"||x==="\u2029"||x===" "||x===" "||x===" "},isWhiteSpaceJSON:function isWhiteSpaceJSON(x){return x===" "||x==="\t"||x==="\n"||x==="\r"},isLineTerminator:function isLineTerminator(x){return x==="\n"||x==="\r"||x==="\u2028"||x==="\u2029"},isLineTerminatorJSON:function isLineTerminatorJSON(x){return x==="\n"||x==="\r"},isIdentifierStart:function isIdentifierStart(x){return x==="$"||x==="_"||x>="A"&&x<="Z"||x>="a"&&x<="z"||x>="€"&&Uni.NonAsciiIdentifierStart.test(x)},isIdentifierPart:function isIdentifierPart(x){return x==="$"||x==="_"||x>="A"&&x<="Z"||x>="a"&&x<="z"||x>="0"&&x<="9"||x>="€"&&Uni.NonAsciiIdentifierPart.test(x)},NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/};function isHexDigit(x){return x>="0"&&x<="9"||x>="A"&&x<="F"||x>="a"&&x<="f"}function isOctDigit(x){return x>="0"&&x<="7"}function isDecDigit(x){return x>="0"&&x<="9"}function isBOM(x){return x.charCodeAt(0)===65279}const unescapeMap={"'":"'",'"':'"',"\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t",v:"\v","/":"/"};function parseInternal(input,options){if(typeof input!=="string"||!(input instanceof String)){input=String(input)}const json5=options.mode==="json5";const ignoreBOM=options.ignoreBOM;const ignoreComments=options.ignoreComments||options.mode==="cjson"||json5;const ignoreTrailingCommas=options.ignoreTrailingCommas||json5;const allowSingleQuotedStrings=options.allowSingleQuotedStrings||json5;const allowDuplicateObjectKeys=options.allowDuplicateObjectKeys;const reviver=options.reviver;const tokenize=options.tokenize;const rawTokens=options.rawTokens;const tokenLocations=options.tokenLocations;const tokenPaths=options.tokenPaths;const isLineTerminator=json5?Uni.isLineTerminator:Uni.isLineTerminatorJSON;const isWhiteSpace=json5?Uni.isWhiteSpace:Uni.isWhiteSpaceJSON;const inputLength=input.length;let lineNumber=0;let lineStart=0;let position=0;const tokens=[];let startToken;let endToken;let tokenPath;if(tokenize){let tokenOffset=null;let tokenLine;let tokenColumn;startToken=function(){if(tokenOffset!==null)throw Error("internal error, token overlap");tokenLine=lineNumber+1;tokenColumn=position-lineStart+1;tokenOffset=position};endToken=function(type,value){if(tokenOffset!==position){const token={type:type};if(rawTokens){token.raw=input.substr(tokenOffset,position-tokenOffset)}if(value!==undefined){token.value=value}if(tokenLocations){token.location={start:{column:tokenColumn,line:tokenLine,offset:tokenOffset}}}if(tokenPaths){token.path=tokenPath.slice()}tokens.push(token)}tokenOffset=null;return value};tokenPaths&&(tokenPath=[])}function generateMessage(){let message;if(position<inputLength){const token=JSON.stringify(input[position]);message="Unexpected token "+token}else{message="Unexpected end of input"}return message}function createError(message){const column=position-lineStart+1;++lineNumber;const texts=getTexts(message,input,position,lineNumber,column);const error=SyntaxError(texts.message);error.reason=message;error.excerpt=texts.excerpt;error.pointer=texts.pointer;error.location={start:{column:column,line:lineNumber,offset:position}};return error}function fail(message){if(!message){message=generateMessage()}const error=createError(message);throw error}function newLine(char){if(char==="\r"&&input[position]==="\n"){++position}lineStart=position;++lineNumber}function parseGeneric(){if(position<inputLength){startToken&&startToken();const char=input[position++];if(char==='"'||char==="'"&&allowSingleQuotedStrings){const string=parseString(char);endToken&&endToken("literal",string);return string}else if(char==="{"){endToken&&endToken("symbol","{");return parseObject()}else if(char==="["){endToken&&endToken("symbol","[");return parseArray()}else if(char==="-"||char==="."||isDecDigit(char)||json5&&(char==="+"||char==="I"||char==="N")){const number=parseNumber();endToken&&endToken("literal",number);return number}else if(char==="n"){parseKeyword("null");endToken&&endToken("literal",null);return null}else if(char==="t"){parseKeyword("true");endToken&&endToken("literal",true);return true}else if(char==="f"){parseKeyword("false");endToken&&endToken("literal",false);return false}else{--position;endToken&&endToken();return undefined}}}function parseKey(){let result;if(position<inputLength){startToken&&startToken();const char=input[position++];if(char==='"'||char==="'"&&allowSingleQuotedStrings){const string=parseString(char);endToken&&endToken("literal",string);return string}else if(char==="{"){endToken&&endToken("symbol","{");return parseObject()}else if(char==="["){endToken&&endToken("symbol","[");return parseArray()}else if(char==="."||isDecDigit(char)){const number=parseNumber(true);endToken&&endToken("literal",number);return number}else if(json5&&Uni.isIdentifierStart(char)||char==="\\"&&input[position]==="u"){const rollback=position-1;result=parseIdentifier();if(result===undefined){position=rollback;endToken&&endToken();return undefined}else{endToken&&endToken("literal",result);return result}}else{--position;endToken&&endToken();return undefined}}}function skipBOM(){if(isBOM(input)){startToken&&startToken();++position;endToken&&endToken("bom")}}function skipWhiteSpace(){let insideWhiteSpace;function startWhiteSpace(){if(!insideWhiteSpace){insideWhiteSpace=true;--position;startToken();++position}}function endWhiteSpace(){if(insideWhiteSpace){insideWhiteSpace=false;endToken("whitespace")}}while(position<inputLength){const char=input[position++];if(isLineTerminator(char)){startToken&&startWhiteSpace();newLine(char)}else if(isWhiteSpace(char)){startToken&&startWhiteSpace()}else if(char==="/"&&ignoreComments&&(input[position]==="/"||input[position]==="*")){if(startToken){--position;endWhiteSpace();startToken();++position}skipComment(input[position++]==="*");endToken&&endToken("comment")}else{--position;break}}endToken&&endWhiteSpace()}function skipComment(multiLine){while(position<inputLength){const char=input[position++];if(isLineTerminator(char)){if(!multiLine){--position;return}newLine(char)}else if(char==="*"&&multiLine){if(input[position]==="/"){++position;return}}else{}}if(multiLine){fail("Unclosed multiline comment")}}function parseKeyword(keyword){const startPosition=position;for(let i=1,keywordLength=keyword.length;i<keywordLength;++i){if(position>=inputLength||keyword[i]!==input[position]){position=startPosition-1;fail()}++position}}function parseObject(){const result={};const emptyObject={};let isNotEmpty=false;while(position<inputLength){skipWhiteSpace();const key=parseKey();if(allowDuplicateObjectKeys===false&&result[key]){fail('Duplicate key: "'+key+'"')}skipWhiteSpace();startToken&&startToken();let char=input[position++];endToken&&endToken("symbol",char);if(char==="}"&&key===undefined){if(!ignoreTrailingCommas&&isNotEmpty){--position;fail("Trailing comma in object")}return result}else if(char===":"&&key!==undefined){skipWhiteSpace();tokenPath&&tokenPath.push(key);let value=parseGeneric();tokenPath&&tokenPath.pop();if(value===undefined)fail('No value found for key "'+key+'"');if(typeof key!=="string"){if(!json5||typeof key!=="number"){fail('Wrong key type: "'+key+'"')}}if(key in emptyObject||emptyObject[key]!=null){}else{if(reviver){value=reviver(key,value)}if(value!==undefined){isNotEmpty=true;result[key]=value}}skipWhiteSpace();startToken&&startToken();char=input[position++];endToken&&endToken("symbol",char);if(char===","){continue}else if(char==="}"){return result}else{fail()}}else{--position;fail()}}fail()}function parseArray(){const result=[];while(position<inputLength){skipWhiteSpace();tokenPath&&tokenPath.push(result.length);let item=parseGeneric();tokenPath&&tokenPath.pop();skipWhiteSpace();startToken&&startToken();const char=input[position++];endToken&&endToken("symbol",char);if(item!==undefined){if(reviver){item=reviver(String(result.length),item)}if(item===undefined){++result.length;item=true}else{result.push(item)}}if(char===","){if(item===undefined){fail("Elisions are not supported")}}else if(char==="]"){if(!ignoreTrailingCommas&&item===undefined&&result.length){--position;fail("Trailing comma in array")}return result}else{--position;fail()}}}function parseNumber(){--position;let start=position;let char=input[position++];const toNumber=function(isOctal){const string=input.substr(start,position-start);let result;if(isOctal){result=parseInt(string.replace(/^0o?/,""),8)}else{result=Number(string)}if(Number.isNaN(result)){--position;fail('Bad numeric literal - "'+input.substr(start,position-start+1)+'"')}else if(!json5&&!string.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)){--position;fail('Non-json numeric literal - "'+input.substr(start,position-start+1)+'"')}else{return result}};if(char==="-"||char==="+"&&json5){char=input[position++]}if(char==="N"&&json5){parseKeyword("NaN");return NaN}if(char==="I"&&json5){parseKeyword("Infinity");return toNumber()}if(char>="1"&&char<="9"){while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}if(char==="0"){char=input[position++];const isOctal=char==="o"||char==="O"||isOctDigit(char);const isHex=char==="x"||char==="X";if(json5&&(isOctal||isHex)){while(position<inputLength&&(isHex?isHexDigit:isOctDigit)(input[position])){++position}let sign=1;if(input[start]==="-"){sign=-1;++start}else if(input[start]==="+"){++start}return sign*toNumber(isOctal)}}if(char==="."){while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}if(char==="e"||char==="E"){char=input[position++];if(char==="-"||char==="+"){++position}while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}--position;return toNumber()}function parseIdentifier(){--position;let result="";while(position<inputLength){let char=input[position++];if(char==="\\"&&input[position]==="u"&&isHexDigit(input[position+1])&&isHexDigit(input[position+2])&&isHexDigit(input[position+3])&&isHexDigit(input[position+4])){char=String.fromCharCode(parseInt(input.substr(position+1,4),16));position+=5}if(result.length){if(Uni.isIdentifierPart(char)){result+=char}else{--position;return result}}else{if(Uni.isIdentifierStart(char)){result+=char}else{return undefined}}}fail()}function parseString(endChar){let result="";while(position<inputLength){let char=input[position++];if(char===endChar){return result}else if(char==="\\"){if(position>=inputLength){fail()}char=input[position++];if(unescapeMap[char]&&(json5||char!=="v"&&(char!=="'"||allowSingleQuotedStrings))){result+=unescapeMap[char]}else if(json5&&isLineTerminator(char)){newLine(char)}else if(char==="u"||char==="x"&&json5){const count=char==="u"?4:2;for(let i=0;i<count;++i){if(position>=inputLength){fail()}if(!isHexDigit(input[position])){fail("Bad escape sequence")}position++}result+=String.fromCharCode(parseInt(input.substr(position-count,count),16))}else if(json5&&isOctDigit(char)){let digits;if(char<"4"&&isOctDigit(input[position])&&isOctDigit(input[position+1])){digits=3}else if(isOctDigit(input[position])){digits=2}else{digits=1}position+=digits-1;result+=String.fromCharCode(parseInt(input.substr(position-digits,digits),8))}else if(json5){result+=char}else{--position;fail()}}else if(isLineTerminator(char)){fail()}else{if(!json5&&char.charCodeAt(0)<32){--position;fail("Unexpected control character")}result+=char}}fail()}if(ignoreBOM){skipBOM()}skipWhiteSpace();let returnValue=parseGeneric();if(returnValue!==undefined||position<inputLength){skipWhiteSpace();if(position>=inputLength){if(reviver){returnValue=reviver("",returnValue)}return tokenize?tokens:returnValue}else{fail()}}else{if(position){fail("No data, only a whitespace")}else{fail("No data, empty input")}}}function parseCustom(input,options){if(typeof options==="function"){options={reviver:options}}else if(!options){options={}}return parseInternal(input,options)}function tokenize(input,options){if(!options){options={}}const oldTokenize=options.tokenize;options.tokenize=true;const tokens=parseInternal(input,options);options.tokenize=oldTokenize;return tokens}function escapePointerToken(token){return token.toString().replace(/~/g,"~0").replace(/\//g,"~1")}function pathToPointer(tokens){if(tokens.length===0){return""}return"/"+tokens.map(escapePointerToken).join("/")}function unescapePointerToken(token){return token.replace(/~1/g,"/").replace(/~0/g,"~")}function pointerToPath(pointer){if(pointer===""){return[]}if(pointer[0]!=="/"){throw new Error('Missing initial "/" in the reference')}return pointer.substr(1).split("/").map(unescapePointerToken)}function getLineAndColumn(input,offset){const lines=input.substr(0,offset).split(/\r?\n/);const line=lines.length;const column=lines[line-1].length+1;return{line:line,column:column}}function getOffset(input,line,column){if(line>1){const breaks=/\r?\n/g;let match;while(match=breaks.exec(input)){if(--line===1){return match.index+column}}}return column-1}function pastInput(input,offset){const start=Math.max(0,offset-20);const previous=input.substr(start,offset-start);return(offset>20?"...":"")+previous.replace(/\r?\n/g,"")}function upcomingInput(input,offset){let start=Math.max(0,offset-20);start+=offset-start;const rest=input.length-start;const next=input.substr(start,Math.min(20,rest));return next.replace(/\r?\n/g,"")+(rest>20?"...":"")}function getPositionContext(input,offset){const past=pastInput(input,offset);const upcoming=upcomingInput(input,offset);const pointer=new Array(past.length+1).join("-")+"^";return{excerpt:past+upcoming,pointer:pointer}}function getReason(error){let message=error.message.replace("JSON.parse: ","").replace("JSON Parse error: ","");const firstCharacter=message.charAt(0);if(firstCharacter>="a"){message=firstCharacter.toUpperCase()+message.substr(1)}return message}function getLocationOnV8(input,reason){const match=/ in JSON at position (\d+)$/.exec(reason);if(match){const offset=+match[1];const location=getLineAndColumn(input,offset);return{offset:offset,line:location.line,column:location.column,reason:reason.substr(0,match.index)}}}function checkUnexpectedEndOnV8(input,reason){const match=/ end of JSON input$/.exec(reason);if(match){const offset=input.length;const location=getLineAndColumn(input,offset);return{offset:offset,line:location.line,column:location.column,reason:reason.substr(0,match.index+4)}}}function getLocationOnSpiderMonkey(input,reason){const match=/ at line (\d+) column (\d+) of the JSON data$/.exec(reason);if(match){const line=+match[1];const column=+match[2];const offset=getOffset(input,line,column);return{offset:offset,line:line,column:column,reason:reason.substr(0,match.index)}}}function getTexts(reason,input,offset,line,column){const position=getPositionContext(input,offset);const excerpt=position.excerpt;let message,pointer;if(typeof line==="number"){pointer=position.pointer;message="Parse error on line "+line+", column "+column+":\n"+excerpt+"\n"+pointer+"\n"+reason}else{message="Parse error in JSON input:\n"+excerpt+"\n"+reason}return{message:message,excerpt:excerpt,pointer:pointer}}function improveNativeError(input,error){let reason=getReason(error);const location=getLocationOnV8(input,reason)||checkUnexpectedEndOnV8(input,reason)||getLocationOnSpiderMonkey(input,reason);let offset,line,column;if(location){offset=location.offset;line=location.line;column=location.column;reason=location.reason}else{offset=0}error.reason=reason;const texts=getTexts(reason,input,offset,line,column);error.message=texts.message;error.excerpt=texts.excerpt;if(texts.pointer){error.pointer=texts.pointer;error.location={start:{column:column,line:line,offset:offset}}}return error}function parseNative(input,reviver){try{return JSON.parse(input,reviver)}catch(error){throw improveNativeError(input,error)}}const isSafari=typeof navigator!=="undefined"&&/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor);const oldNode=typeof process!=="undefined"&&process.version.startsWith("v4.");function needsCustomParser(options){return options.ignoreBOM||options.ignoreComments||options.ignoreTrailingCommas||options.allowSingleQuotedStrings||options.allowDuplicateObjectKeys===false||options.mode==="cjson"||options.mode==="json5"||isSafari||oldNode}function getReviver(options){if(typeof options==="function"){return options}else if(options){return options.reviver}}function parse(input,options){options||(options={});return needsCustomParser(options)?parseCustom(input,options):parseNative(input,getReviver(options))}exports.parse=parse;exports.tokenize=tokenize;exports.pathToPointer=pathToPointer;exports.pointerToPath=pointerToPath;exports.parseNative=parseNative;exports.parseCustom=parseCustom;exports.getErrorTexts=getTexts;Object.defineProperty(exports,"__esModule",{value:true})}));
2
- //# sourceMappingURL=jsonlint.min.js.map
1
+ (function(a,E){typeof exports=="object"&&typeof module<"u"?E(exports):typeof define=="function"&&define.amd?define("jsonlint",["exports"],E):(a=a||self,E(a.jsonlint={}))})(this,function(a){"use strict";const E={isWhiteSpace:function(e){return e===" "||e==="\xA0"||e==="\uFEFF"||e>=" "&&e<="\r"||e==="\u1680"||e>="\u2000"&&e<="\u200A"||e==="\u2028"||e==="\u2029"||e==="\u202F"||e==="\u205F"||e==="\u3000"},isWhiteSpaceJSON:function(e){return e===" "||e===" "||e===`
2
+ `||e==="\r"},isLineTerminator:function(e){return e===`
3
+ `||e==="\r"||e==="\u2028"||e==="\u2029"},isLineTerminatorJSON:function(e){return e===`
4
+ `||e==="\r"},isIdentifierStart:function(e){return e==="$"||e==="_"||e>="A"&&e<="Z"||e>="a"&&e<="z"||e>="\x80"&&E.NonAsciiIdentifierStart.test(e)},isIdentifierPart:function(e){return e==="$"||e==="_"||e>="A"&&e<="Z"||e>="a"&&e<="z"||e>="0"&&e<="9"||e>="\x80"&&E.NonAsciiIdentifierPart.test(e)},NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/};function k(u){return u>="0"&&u<="9"||u>="A"&&u<="F"||u>="a"&&u<="f"}function N(u){return u>="0"&&u<="7"}function y(u){return u>="0"&&u<="9"}function H(u){return u.charCodeAt(0)===65279}const J={"'":"'",'"':'"',"\\":"\\",b:"\b",f:"\f",n:`
5
+ `,r:"\r",t:" ",v:"\v","/":"/"};function L(u,e){(typeof u!="string"||!(u instanceof String))&&(u=String(u));const r=e.mode==="json5",D=e.ignoreBOM,B=e.ignoreComments||e.mode==="cjson"||r,m=e.ignoreTrailingCommas||r,d=e.allowSingleQuotedStrings||r,h=e.allowDuplicateObjectKeys,g=e.reviver,U=e.tokenize,cu=e.rawTokens,fu=e.tokenLocations,$=e.tokenPaths,w=r?E.isLineTerminator:E.isLineTerminatorJSON,lu=r?E.isWhiteSpace:E.isWhiteSpaceJSON,f=u.length;let p=0,I=0,A=0;const K=[];let l,C,S;if(U){let t=null,n,F;l=function(){if(t!==null)throw Error("internal error, token overlap");n=p+1,F=A-I+1,t=A},C=function(i,o){if(t!==A){const c={type:i};cu&&(c.raw=u.substr(t,A-t)),o!==void 0&&(c.value=o),fu&&(c.location={start:{column:F,line:n,offset:t}}),$&&(c.path=S.slice()),K.push(c)}return t=null,o},$&&(S=[])}function Eu(){let t;return A<f?t="Unexpected token "+JSON.stringify(u[A]):t="Unexpected end of input",t}function au(t){const n=A-I+1;++p;const F=T(t,u,A,p,n),i=SyntaxError(F.message);return i.reason=t,i.excerpt=F.excerpt,i.pointer=F.pointer,i.location={start:{column:n,line:p,offset:A}},i}function s(t){throw t||(t=Eu()),au(t)}function P(t){t==="\r"&&u[A]===`
6
+ `&&++A,I=A,++p}function j(){if(A<f){l&&l();const t=u[A++];if(t==='"'||t==="'"&&d){const n=V(t);return C&&C("literal",n),n}else{if(t==="{")return C&&C("symbol","{"),x();if(t==="[")return C&&C("symbol","["),_();if(t==="-"||t==="."||y(t)||r&&(t==="+"||t==="I"||t==="N")){const n=Q();return C&&C("literal",n),n}else{if(t==="n")return O("null"),C&&C("literal",null),null;if(t==="t")return O("true"),C&&C("literal",!0),!0;if(t==="f")return O("false"),C&&C("literal",!1),!1;--A,C&&C();return}}}}function du(){let t;if(A<f){l&&l();const n=u[A++];if(n==='"'||n==="'"&&d){const F=V(n);return C&&C("literal",F),F}else{if(n==="{")return C&&C("symbol","{"),x();if(n==="[")return C&&C("symbol","["),_();if(n==="."||y(n)){const F=Q(!0);return C&&C("literal",F),F}else if(r&&E.isIdentifierStart(n)||n==="\\"&&u[A]==="u"){const F=A-1;if(t=gu(),t===void 0){A=F,C&&C();return}else return C&&C("literal",t),t}else{--A,C&&C();return}}}}function mu(){H(u)&&(l&&l(),++A,C&&C("bom"))}function b(){let t;function n(){t||(t=!0,--A,l(),++A)}function F(){t&&(t=!1,C("whitespace"))}for(;A<f;){const i=u[A++];if(w(i))l&&n(),P(i);else if(lu(i))l&&n();else if(i==="/"&&B&&(u[A]==="/"||u[A]==="*"))l&&(--A,F(),l(),++A),hu(u[A++]==="*"),C&&C("comment");else{--A;break}}C&&F()}function hu(t){for(;A<f;){const n=u[A++];if(w(n)){if(!t){--A;return}P(n)}else if(n==="*"&&t&&u[A]==="/"){++A;return}}t&&s("Unclosed multiline comment")}function O(t){const n=A;for(let F=1,i=t.length;F<i;++F)(A>=f||t[F]!==u[A])&&(A=n-1,s()),++A}function x(){const t={},n={};let F=!1;for(;A<f;){b();const i=du();h===!1&&t[i]&&s('Duplicate key: "'+i+'"'),b(),l&&l();let o=u[A++];if(C&&C("symbol",o),o==="}"&&i===void 0)return!m&&F&&(--A,s("Trailing comma in object")),t;if(o===":"&&i!==void 0){b(),S&&S.push(i);let c=j();if(S&&S.pop(),c===void 0&&s('No value found for key "'+i+'"'),typeof i!="string"&&(!r||typeof i!="number")&&s('Wrong key type: "'+i+'"'),i in n||n[i]!=null||(g&&(c=g(i,c)),c!==void 0&&(F=!0,t[i]=c)),b(),l&&l(),o=u[A++],C&&C("symbol",o),o===",")continue;if(o==="}")return t;s()}else--A,s()}s()}function _(){const t=[];for(;A<f;){b(),S&&S.push(t.length);let n=j();S&&S.pop(),b(),l&&l();const F=u[A++];if(C&&C("symbol",F),n!==void 0&&(g&&(n=g(String(t.length),n)),n===void 0?(++t.length,n=!0):t.push(n)),F===",")n===void 0&&s("Elisions are not supported");else{if(F==="]")return!m&&n===void 0&&t.length&&(--A,s("Trailing comma in array")),t;--A,s()}}}function Q(){--A;let t=A,n=u[A++];const F=function(i){const o=u.substr(t,A-t);let c;if(i?c=parseInt(o.replace(/^0o?/,""),8):c=Number(o),Number.isNaN(c))--A,s('Bad numeric literal - "'+u.substr(t,A-t+1)+'"');else if(!r&&!o.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i))--A,s('Non-json numeric literal - "'+u.substr(t,A-t+1)+'"');else return c};if((n==="-"||n==="+"&&r)&&(n=u[A++]),n==="N"&&r)return O("NaN"),NaN;if(n==="I"&&r)return O("Infinity"),F();if(n>="1"&&n<="9"){for(;A<f&&y(u[A]);)++A;n=u[A++]}if(n==="0"){n=u[A++];const i=n==="o"||n==="O"||N(n),o=n==="x"||n==="X";if(r&&(i||o)){for(;A<f&&(o?k:N)(u[A]);)++A;let c=1;return u[t]==="-"?(c=-1,++t):u[t]==="+"&&++t,c*F(i)}}if(n==="."){for(;A<f&&y(u[A]);)++A;n=u[A++]}if(n==="e"||n==="E"){for(n=u[A++],(n==="-"||n==="+")&&++A;A<f&&y(u[A]);)++A;n=u[A++]}return--A,F()}function gu(){--A;let t="";for(;A<f;){let n=u[A++];if(n==="\\"&&u[A]==="u"&&k(u[A+1])&&k(u[A+2])&&k(u[A+3])&&k(u[A+4])&&(n=String.fromCharCode(parseInt(u.substr(A+1,4),16)),A+=5),t.length)if(E.isIdentifierPart(n))t+=n;else return--A,t;else if(E.isIdentifierStart(n))t+=n;else return}s()}function V(t){let n="";for(;A<f;){let F=u[A++];if(F===t)return n;if(F==="\\")if(A>=f&&s(),F=u[A++],J[F]&&(r||F!=="v"&&(F!=="'"||d)))n+=J[F];else if(r&&w(F))P(F);else if(F==="u"||F==="x"&&r){const i=F==="u"?4:2;for(let o=0;o<i;++o)A>=f&&s(),k(u[A])||s("Bad escape sequence"),A++;n+=String.fromCharCode(parseInt(u.substr(A-i,i),16))}else if(r&&N(F)){let i;F<"4"&&N(u[A])&&N(u[A+1])?i=3:N(u[A])?i=2:i=1,A+=i-1,n+=String.fromCharCode(parseInt(u.substr(A-i,i),8))}else r?n+=F:(--A,s());else w(F)?s():(!r&&F.charCodeAt(0)<32&&(--A,s("Unexpected control character")),n+=F)}s()}D&&mu(),b();let v=j();if(v!==void 0||A<f){if(b(),A>=f)return g&&(v=g("",v)),U?K:v;s()}else s(A?"No data, only a whitespace":"No data, empty input")}function M(u,e){return typeof e=="function"?e={reviver:e}:e||(e={}),L(u,e)}function R(u,e){e||(e={});const r=e.tokenize;e.tokenize=!0;const D=L(u,e);return e.tokenize=r,D}function Z(u){return u.toString().replace(/~/g,"~0").replace(/\//g,"~1")}function q(u){return u.length===0?"":"/"+u.map(Z).join("/")}function G(u){return u.replace(/~1/g,"/").replace(/~0/g,"~")}function X(u){if(u==="")return[];if(u[0]!=="/")throw new Error('Missing initial "/" in the reference');return u.substr(1).split("/").map(G)}function W(u,e){const r=u.substr(0,e).split(/\r?\n/),D=r.length,B=r[D-1].length+1;return{line:D,column:B}}function Y(u,e,r){if(e>1){const D=/\r?\n/g;let B;for(;B=D.exec(u);)if(--e===1)return B.index+r}return r-1}function uu(u,e){const r=Math.max(0,e-20),D=u.substr(r,e-r);return(e>20?"...":"")+D.replace(/\r?\n/g,"")}function eu(u,e){let r=Math.max(0,e-20);r+=e-r;const D=u.length-r;return u.substr(r,Math.min(20,D)).replace(/\r?\n/g,"")+(D>20?"...":"")}function Au(u,e){const r=uu(u,e),D=eu(u,e),B=new Array(r.length+1).join("-")+"^";return{excerpt:r+D,pointer:B}}function tu(u){let e=u.message.replace("JSON.parse: ","").replace("JSON Parse error: ","");const r=e.charAt(0);return r>="a"&&(e=r.toUpperCase()+e.substr(1)),e}function nu(u,e){const r=/ in JSON at position (\d+)$/.exec(e);if(r){const D=+r[1],B=W(u,D);return{offset:D,line:B.line,column:B.column,reason:e.substr(0,r.index)}}}function ru(u,e){const r=/ end of JSON input$/.exec(e);if(r){const D=u.length,B=W(u,D);return{offset:D,line:B.line,column:B.column,reason:e.substr(0,r.index+4)}}}function Fu(u,e){const r=/ at line (\d+) column (\d+) of the JSON data$/.exec(e);if(r){const D=+r[1],B=+r[2];return{offset:Y(u,D,B),line:D,column:B,reason:e.substr(0,r.index)}}}function T(u,e,r,D,B){const m=Au(e,r),d=m.excerpt;let h,g;return typeof D=="number"?(g=m.pointer,h="Parse error on line "+D+", column "+B+`:
7
+ `+d+`
8
+ `+g+`
9
+ `+u):h=`Parse error in JSON input:
10
+ `+d+`
11
+ `+u,{message:h,excerpt:d,pointer:g}}function iu(u,e){let r=tu(e);const D=nu(u,r)||ru(u,r)||Fu(u,r);let B,m,d;D?(B=D.offset,m=D.line,d=D.column,r=D.reason):B=0,e.reason=r;const h=T(r,u,B,m,d);return e.message=h.message,e.excerpt=h.excerpt,h.pointer&&(e.pointer=h.pointer,e.location={start:{column:d,line:m,offset:B}}),e}function z(u,e){try{return JSON.parse(u,e)}catch(r){throw iu(u,r)}}const Cu=typeof navigator<"u"&&/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor),Du=typeof process<"u"&&process.version.startsWith("v4.");function Bu(u){return u.ignoreBOM||u.ignoreComments||u.ignoreTrailingCommas||u.allowSingleQuotedStrings||u.allowDuplicateObjectKeys===!1||u.mode==="cjson"||u.mode==="json5"||Cu||Du}function su(u){if(typeof u=="function")return u;if(u)return u.reviver}function ou(u,e){return e||(e={}),Bu(e)?M(u,e):z(u,su(e))}a.parse=ou,a.tokenize=R,a.pathToPointer=q,a.pointerToPath=X,a.parseNative=z,a.parseCustom=M,a.getErrorTexts=T,Object.defineProperty(a,"__esModule",{value:!0})});
12
+ //# sourceMappingURL=jsonlint.min.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"jsonlint.js","names":["global","factory","exports","module","define","amd","self","jsonlint","this","Uni","isWhiteSpace","x","isWhiteSpaceJSON","isLineTerminator","isLineTerminatorJSON","isIdentifierStart","NonAsciiIdentifierStart","test","isIdentifierPart","NonAsciiIdentifierPart","isHexDigit","isOctDigit","isDecDigit","isBOM","charCodeAt","unescapeMap","b","f","n","r","t","v","parseInternal","input","options","String","json5","mode","ignoreBOM","ignoreComments","ignoreTrailingCommas","allowSingleQuotedStrings","allowDuplicateObjectKeys","reviver","tokenize","rawTokens","tokenLocations","tokenPaths","inputLength","length","lineNumber","lineStart","position","tokens","startToken","endToken","tokenPath","tokenOffset","tokenLine","tokenColumn","Error","type","value","token","raw","substr","undefined","location","start","column","line","offset","path","slice","push","generateMessage","message","JSON","stringify","createError","texts","getTexts","error","SyntaxError","reason","excerpt","pointer","fail","newLine","char","parseGeneric","string","parseString","parseObject","parseArray","number","parseNumber","parseKeyword","parseKey","result","rollback","parseIdentifier","skipBOM","skipWhiteSpace","insideWhiteSpace","startWhiteSpace","endWhiteSpace","skipComment","multiLine","keyword","startPosition","i","keywordLength","emptyObject","isNotEmpty","key","pop","item","toNumber","isOctal","parseInt","replace","Number","isNaN","match","NaN","isHex","sign","fromCharCode","endChar","count","digits","returnValue","parseCustom","oldTokenize","escapePointerToken","toString","pathToPointer","map","join","unescapePointerToken","pointerToPath","split","getLineAndColumn","lines","getOffset","breaks","exec","index","pastInput","Math","max","previous","upcomingInput","rest","next","min","getPositionContext","past","upcoming","Array","getReason","firstCharacter","charAt","toUpperCase","getLocationOnV8","checkUnexpectedEndOnV8","getLocationOnSpiderMonkey","improveNativeError","parseNative","parse","isSafari","navigator","userAgent","vendor","oldNode","process","version","startsWith","needsCustomParser","getReviver","getErrorTexts","Object","defineProperty"],"sources":["lib/jsonlint.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('jsonlint', ['exports'], factory) :\n (global = global || self, factory(global.jsonlint = {}))\n}(this, function (exports) { 'use strict'\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/unicode.js\n\n// This is autogenerated with esprima tools, see:\n// https://github.com/ariya/esprima/blob/master/esprima.js\n\nconst Uni = { // eslint-disable-line no-unused-vars\n isWhiteSpace: function isWhiteSpace (x) {\n // section 7.2, table 2\n return x === '\\u0020' ||\n x === '\\u00A0' ||\n x === '\\uFEFF' || // <-- this is not a Unicode WS, only a JS one\n (x >= '\\u0009' && x <= '\\u000D') || // 9 A B C D\n\n // + whitespace characters from unicode, category Zs\n x === '\\u1680' ||\n (x >= '\\u2000' && x <= '\\u200A') || // 0 1 2 3 4 5 6 7 8 9 A\n x === '\\u2028' ||\n x === '\\u2029' ||\n x === '\\u202F' ||\n x === '\\u205F' ||\n x === '\\u3000'\n },\n isWhiteSpaceJSON: function isWhiteSpaceJSON (x) {\n return x === '\\u0020' ||\n x === '\\u0009' ||\n x === '\\u000A' ||\n x === '\\u000D'\n },\n isLineTerminator: function isLineTerminator (x) {\n // ok, here is the part when JSON is wrong\n // section 7.3, table 3\n return x === '\\u000A' ||\n x === '\\u000D' ||\n x === '\\u2028' ||\n x === '\\u2029'\n },\n isLineTerminatorJSON: function isLineTerminatorJSON (x) {\n return x === '\\u000A' ||\n x === '\\u000D'\n },\n isIdentifierStart: function isIdentifierStart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '\\u0080' && Uni.NonAsciiIdentifierStart.test(x))\n },\n isIdentifierPart: function isIdentifierPart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '0' && x <= '9') || // <-- addition to Start\n (x >= '\\u0080' && Uni.NonAsciiIdentifierPart.test(x))\n },\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart:\n /* eslint-disable-next-line no-misleading-character-class */\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0\\u08A2-\\u08AC\\u08E4-\\u08FE\\u0900-\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-\\u097F\\u0981-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C82\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1D00-\\u1DE6\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA697\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7B\\uAA80-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE26\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/\n}\n\n/* globals Uni, getTexts */\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/parse.js\n\nfunction isHexDigit (x) {\n return (x >= '0' && x <= '9') ||\n (x >= 'A' && x <= 'F') ||\n (x >= 'a' && x <= 'f')\n}\n\nfunction isOctDigit (x) {\n return x >= '0' && x <= '7'\n}\n\nfunction isDecDigit (x) {\n return x >= '0' && x <= '9'\n}\n\nfunction isBOM (x) {\n // This catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n // conversion in `fs.readFileSync()` translates it to FEFF (UTF-16 BOM).\n return x.charCodeAt(0) === 0xFEFF\n}\n\nconst unescapeMap = {\n '\\'': '\\'',\n '\"': '\"',\n '\\\\': '\\\\',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t',\n v: '\\v',\n '/': '/'\n}\n\nfunction parseInternal (input, options) {\n if (typeof input !== 'string' || !(input instanceof String)) {\n input = String(input)\n }\n\n const json5 = options.mode === 'json5'\n const ignoreBOM = options.ignoreBOM\n const ignoreComments = options.ignoreComments || options.mode === 'cjson' || json5\n const ignoreTrailingCommas = options.ignoreTrailingCommas || json5\n const allowSingleQuotedStrings = options.allowSingleQuotedStrings || json5\n const allowDuplicateObjectKeys = options.allowDuplicateObjectKeys\n const reviver = options.reviver\n const tokenize = options.tokenize\n const rawTokens = options.rawTokens\n const tokenLocations = options.tokenLocations\n const tokenPaths = options.tokenPaths\n\n const isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON\n const isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON\n\n const inputLength = input.length\n let lineNumber = 0\n let lineStart = 0\n let position = 0\n\n const tokens = []\n let startToken\n let endToken\n let tokenPath\n\n if (tokenize) {\n let tokenOffset = null\n let tokenLine\n let tokenColumn\n startToken = function () {\n if (tokenOffset !== null) throw Error('internal error, token overlap')\n tokenLine = lineNumber + 1\n tokenColumn = position - lineStart + 1\n tokenOffset = position\n }\n endToken = function (type, value) {\n if (tokenOffset !== position) {\n const token = { type }\n if (rawTokens) {\n token.raw = input.substr(tokenOffset, position - tokenOffset)\n }\n if (value !== undefined) {\n token.value = value\n }\n if (tokenLocations) {\n token.location = {\n start: {\n column: tokenColumn,\n line: tokenLine,\n offset: tokenOffset\n }\n }\n }\n if (tokenPaths) {\n token.path = tokenPath.slice()\n }\n tokens.push(token)\n }\n tokenOffset = null\n return value\n }\n tokenPaths && (tokenPath = [])\n }\n\n function generateMessage () {\n let message\n if (position < inputLength) {\n const token = JSON.stringify(input[position])\n message = 'Unexpected token ' + token\n } else {\n message = 'Unexpected end of input'\n }\n return message\n }\n\n function createError (message) {\n const column = position - lineStart + 1\n ++lineNumber\n const texts = getTexts(message, input, position, lineNumber, column)\n const error = SyntaxError(texts.message)\n error.reason = message\n error.excerpt = texts.excerpt\n error.pointer = texts.pointer\n error.location = {\n start: {\n column,\n line: lineNumber,\n offset: position\n }\n }\n return error\n }\n\n function fail (message) {\n if (!message) {\n message = generateMessage()\n }\n const error = createError(message)\n throw error\n }\n\n function newLine (char) {\n // account for <cr><lf>\n if (char === '\\r' && input[position] === '\\n') {\n ++position\n }\n lineStart = position\n ++lineNumber\n }\n\n function parseGeneric () {\n if (position < inputLength) {\n startToken && startToken()\n const char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n const string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '-' || char === '.' || isDecDigit(char) ||\n (json5 && (char === '+' || char === 'I' || char === 'N'))) {\n const number = parseNumber()\n endToken && endToken('literal', number)\n return number\n } else if (char === 'n') {\n parseKeyword('null')\n endToken && endToken('literal', null)\n return null\n } else if (char === 't') {\n parseKeyword('true')\n endToken && endToken('literal', true)\n return true\n } else if (char === 'f') {\n parseKeyword('false')\n endToken && endToken('literal', false)\n return false\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function parseKey () {\n let result\n if (position < inputLength) {\n startToken && startToken()\n const char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n const string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '.' || isDecDigit(char)) {\n const number = parseNumber(true)\n endToken && endToken('literal', number)\n return number\n } else if ((json5 && Uni.isIdentifierStart(char)) ||\n (char === '\\\\' && input[position] === 'u')) {\n const rollback = position - 1\n result = parseIdentifier()\n if (result === undefined) {\n position = rollback\n endToken && endToken()\n return undefined\n } else {\n endToken && endToken('literal', result)\n return result\n }\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function skipBOM () {\n if (isBOM(input)) {\n startToken && startToken()\n ++position\n endToken && endToken('bom')\n }\n }\n\n function skipWhiteSpace () {\n let insideWhiteSpace\n function startWhiteSpace () {\n if (!insideWhiteSpace) {\n insideWhiteSpace = true\n --position\n startToken()\n ++position\n }\n }\n function endWhiteSpace () {\n if (insideWhiteSpace) {\n insideWhiteSpace = false\n endToken('whitespace')\n }\n }\n while (position < inputLength) {\n const char = input[position++]\n if (isLineTerminator(char)) {\n startToken && startWhiteSpace()\n newLine(char)\n } else if (isWhiteSpace(char)) {\n startToken && startWhiteSpace()\n } else if (char === '/' && ignoreComments &&\n (input[position] === '/' || input[position] === '*')) {\n if (startToken) {\n --position\n endWhiteSpace()\n startToken()\n ++position\n }\n skipComment(input[position++] === '*')\n endToken && endToken('comment')\n } else {\n --position\n break\n }\n }\n endToken && endWhiteSpace()\n }\n\n function skipComment (multiLine) {\n while (position < inputLength) {\n const char = input[position++]\n if (isLineTerminator(char)) {\n if (!multiLine) {\n // let parent function deal with newline\n --position\n return\n }\n newLine(char)\n } else if (char === '*' && multiLine) {\n if (input[position] === '/') {\n ++position\n return\n }\n } else {\n // nothing\n }\n }\n if (multiLine) {\n fail('Unclosed multiline comment')\n }\n }\n\n function parseKeyword (keyword) {\n // keyword[0] is not checked because it was checked earlier\n const startPosition = position\n for (let i = 1, keywordLength = keyword.length; i < keywordLength; ++i) {\n if (position >= inputLength || keyword[i] !== input[position]) {\n position = startPosition - 1\n fail()\n }\n ++position\n }\n }\n\n function parseObject () {\n const result = {}\n const emptyObject = {}\n let isNotEmpty = false\n\n while (position < inputLength) {\n skipWhiteSpace()\n const key = parseKey()\n if (allowDuplicateObjectKeys === false && result[key]) {\n fail('Duplicate key: \"' + key + '\"')\n }\n skipWhiteSpace()\n startToken && startToken()\n let char = input[position++]\n endToken && endToken('symbol', char)\n if (char === '}' && key === undefined) {\n if (!ignoreTrailingCommas && isNotEmpty) {\n --position\n fail('Trailing comma in object')\n }\n return result\n } else if (char === ':' && key !== undefined) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(key)\n let value = parseGeneric()\n tokenPath && tokenPath.pop()\n\n if (value === undefined) fail('No value found for key \"' + key + '\"')\n if (typeof key !== 'string') {\n if (!json5 || typeof key !== 'number') {\n fail('Wrong key type: \"' + key + '\"')\n }\n }\n\n if (key in emptyObject || emptyObject[key] != null) {\n // silently ignore it\n } else {\n if (reviver) {\n value = reviver(key, value)\n }\n if (value !== undefined) {\n isNotEmpty = true\n result[key] = value\n }\n }\n\n skipWhiteSpace()\n startToken && startToken()\n char = input[position++]\n endToken && endToken('symbol', char)\n if (char === ',') {\n continue\n } else if (char === '}') {\n return result\n } else {\n fail()\n }\n } else {\n --position\n fail()\n }\n }\n\n fail()\n }\n\n function parseArray () {\n const result = []\n while (position < inputLength) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(result.length)\n let item = parseGeneric()\n tokenPath && tokenPath.pop()\n skipWhiteSpace()\n startToken && startToken()\n const char = input[position++]\n endToken && endToken('symbol', char)\n if (item !== undefined) {\n if (reviver) {\n item = reviver(String(result.length), item)\n }\n if (item === undefined) {\n ++result.length\n item = true // hack for check below, not included into result\n } else {\n result.push(item)\n }\n }\n\n if (char === ',') {\n if (item === undefined) {\n fail('Elisions are not supported')\n }\n } else if (char === ']') {\n if (!ignoreTrailingCommas && item === undefined && result.length) {\n --position\n fail('Trailing comma in array')\n }\n return result\n } else {\n --position\n fail()\n }\n }\n }\n\n function parseNumber () {\n // rewind because we don't know first char\n --position\n\n let start = position\n let char = input[position++]\n const toNumber = function (isOctal) {\n const string = input.substr(start, position - start)\n let result\n\n if (isOctal) {\n result = parseInt(string.replace(/^0o?/, ''), 8)\n } else {\n result = Number(string)\n }\n\n if (Number.isNaN(result)) {\n --position\n fail('Bad numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else if (!json5 && !string.match(/^-?(0|[1-9][0-9]*)(\\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {\n // additional restrictions imposed by json\n --position\n fail('Non-json numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else {\n return result\n }\n }\n\n // ex: -5982475.249875e+29384\n // ^ skipping this\n if (char === '-' || (char === '+' && json5)) {\n char = input[position++]\n }\n\n if (char === 'N' && json5) {\n parseKeyword('NaN')\n return NaN\n }\n\n if (char === 'I' && json5) {\n parseKeyword('Infinity')\n // returning +inf or -inf\n return toNumber()\n }\n\n if (char >= '1' && char <= '9') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // special case for leading zero: 0.123456\n if (char === '0') {\n char = input[position++]\n\n // new syntax, \"0o777\" old syntax, \"0777\"\n const isOctal = char === 'o' || char === 'O' || isOctDigit(char)\n const isHex = char === 'x' || char === 'X'\n\n if (json5 && (isOctal || isHex)) {\n while (position < inputLength &&\n (isHex ? isHexDigit : isOctDigit)(input[position])) {\n ++position\n }\n\n let sign = 1\n if (input[start] === '-') {\n sign = -1\n ++start\n } else if (input[start] === '+') {\n ++start\n }\n\n return sign * toNumber(isOctal)\n }\n }\n\n if (char === '.') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n if (char === 'e' || char === 'E') {\n char = input[position++]\n if (char === '-' || char === '+') {\n ++position\n }\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // we have char in the buffer, so count for it\n --position\n return toNumber()\n }\n\n function parseIdentifier () {\n // rewind because we don't know first char\n --position\n\n let result = ''\n while (position < inputLength) {\n let char = input[position++]\n if (char === '\\\\' &&\n input[position] === 'u' &&\n isHexDigit(input[position + 1]) &&\n isHexDigit(input[position + 2]) &&\n isHexDigit(input[position + 3]) &&\n isHexDigit(input[position + 4])) {\n // UnicodeEscapeSequence\n char = String.fromCharCode(parseInt(input.substr(position + 1, 4), 16))\n position += 5\n }\n\n if (result.length) {\n // identifier started\n if (Uni.isIdentifierPart(char)) {\n result += char\n } else {\n --position\n return result\n }\n } else {\n if (Uni.isIdentifierStart(char)) {\n result += char\n } else {\n return undefined\n }\n }\n }\n\n fail()\n }\n\n function parseString (endChar) {\n // 7.8.4 of ES262 spec\n let result = ''\n while (position < inputLength) {\n let char = input[position++]\n if (char === endChar) {\n return result\n } else if (char === '\\\\') {\n if (position >= inputLength) {\n fail()\n }\n char = input[position++]\n if (unescapeMap[char] && (json5 || (char !== 'v' && (char !== \"'\" || allowSingleQuotedStrings)))) {\n result += unescapeMap[char]\n } else if (json5 && isLineTerminator(char)) {\n // line continuation\n newLine(char)\n } else if (char === 'u' || (char === 'x' && json5)) {\n // unicode/character escape sequence\n const count = char === 'u' ? 4 : 2\n // validation for \\uXXXX\n for (let i = 0; i < count; ++i) {\n if (position >= inputLength) {\n fail()\n }\n if (!isHexDigit(input[position])) {\n fail('Bad escape sequence')\n }\n position++\n }\n result += String.fromCharCode(parseInt(input.substr(position - count, count), 16))\n } else if (json5 && isOctDigit(char)) {\n let digits\n if (char < '4' && isOctDigit(input[position]) && isOctDigit(input[position + 1])) {\n // three-digit octal\n digits = 3\n } else if (isOctDigit(input[position])) {\n // two-digit octal\n digits = 2\n } else {\n digits = 1\n }\n position += digits - 1\n result += String.fromCharCode(parseInt(input.substr(position - digits, digits), 8))\n } else if (json5) {\n // \\X -> x\n result += char\n } else {\n --position\n fail()\n }\n } else if (isLineTerminator(char)) {\n fail()\n } else {\n if (!json5 && char.charCodeAt(0) < 32) {\n --position\n fail('Unexpected control character')\n }\n // SourceCharacter but not one of \" or \\ or LineTerminator\n result += char\n }\n }\n\n fail()\n }\n\n if (ignoreBOM) {\n skipBOM()\n }\n skipWhiteSpace()\n let returnValue = parseGeneric()\n if (returnValue !== undefined || position < inputLength) {\n skipWhiteSpace()\n if (position >= inputLength) {\n if (reviver) {\n returnValue = reviver('', returnValue)\n }\n return tokenize ? tokens : returnValue\n } else {\n fail()\n }\n } else {\n if (position) {\n fail('No data, only a whitespace')\n } else {\n fail('No data, empty input')\n }\n }\n}\n\nfunction parseCustom (input, options) { // eslint-disable-line no-unused-vars\n if (typeof options === 'function') {\n options = {\n reviver: options\n }\n } else if (!options) {\n options = {}\n }\n return parseInternal(input, options)\n}\n\nfunction tokenize (input, options) { // eslint-disable-line no-unused-vars\n if (!options) {\n options = {}\n }\n // As long as this is the single modification, this is easier than cloning.\n // (Once Node.js 6 is dropped, this can be replaced by object destructuring.)\n const oldTokenize = options.tokenize\n options.tokenize = true\n const tokens = parseInternal(input, options)\n options.tokenize = oldTokenize\n return tokens\n}\n\nfunction escapePointerToken (token) {\n return token\n .toString()\n .replace(/~/g, '~0')\n .replace(/\\//g, '~1')\n}\n\nfunction pathToPointer (tokens) { // eslint-disable-line no-unused-vars\n if (tokens.length === 0) {\n return ''\n }\n return '/' + tokens\n .map(escapePointerToken)\n .join('/')\n}\n\nfunction unescapePointerToken (token) {\n return token\n .replace(/~1/g, '/')\n .replace(/~0/g, '~')\n}\n\nfunction pointerToPath (pointer) { // eslint-disable-line no-unused-vars\n if (pointer === '') {\n return []\n }\n if (pointer[0] !== '/') {\n throw new Error('Missing initial \"/\" in the reference')\n }\n return pointer\n .substr(1)\n .split('/')\n .map(unescapePointerToken)\n}\n\nfunction getLineAndColumn (input, offset) {\n const lines = input\n .substr(0, offset)\n .split(/\\r?\\n/)\n const line = lines.length\n const column = lines[line - 1].length + 1\n return {\n line,\n column\n }\n}\n\nfunction getOffset (input, line, column) {\n if (line > 1) {\n const breaks = /\\r?\\n/g\n let match\n while (match = breaks.exec(input)) { // eslint-disable-line no-cond-assign\n if (--line === 1) {\n return match.index + column\n }\n }\n }\n return column - 1\n}\n\nfunction pastInput (input, offset) {\n const start = Math.max(0, offset - 20)\n const previous = input.substr(start, offset - start)\n return (offset > 20 ? '...' : '') + previous.replace(/\\r?\\n/g, '')\n}\n\nfunction upcomingInput (input, offset) {\n let start = Math.max(0, offset - 20)\n start += offset - start\n const rest = input.length - start\n const next = input.substr(start, Math.min(20, rest))\n return next.replace(/\\r?\\n/g, '') + (rest > 20 ? '...' : '')\n}\n\nfunction getPositionContext (input, offset) {\n const past = pastInput(input, offset)\n const upcoming = upcomingInput(input, offset)\n const pointer = new Array(past.length + 1).join('-') + '^'\n return {\n excerpt: past + upcoming,\n pointer\n }\n}\n\nfunction getReason (error) {\n let message = error.message\n .replace('JSON.parse: ', '') // SpiderMonkey\n .replace('JSON Parse error: ', '') // SquirrelFish\n const firstCharacter = message.charAt(0)\n if (firstCharacter >= 'a') {\n message = firstCharacter.toUpperCase() + message.substr(1)\n }\n return message\n}\n\nfunction getLocationOnV8 (input, reason) {\n const match = / in JSON at position (\\d+)$/.exec(reason)\n if (match) {\n const offset = +match[1]\n const location = getLineAndColumn(input, offset)\n return {\n offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction checkUnexpectedEndOnV8 (input, reason) {\n const match = / end of JSON input$/.exec(reason)\n if (match) {\n const offset = input.length\n const location = getLineAndColumn(input, offset)\n return {\n offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index + 4)\n }\n }\n}\n\nfunction getLocationOnSpiderMonkey (input, reason) {\n const match = / at line (\\d+) column (\\d+) of the JSON data$/.exec(reason)\n if (match) {\n const line = +match[1]\n const column = +match[2]\n const offset = getOffset(input, line, column) // eslint-disable-line no-undef\n return {\n offset,\n line,\n column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction getTexts (reason, input, offset, line, column) {\n const position = getPositionContext(input, offset)\n const excerpt = position.excerpt\n let message, pointer\n if (typeof line === 'number') {\n pointer = position.pointer\n message = 'Parse error on line ' + line + ', column ' +\n column + ':\\n' + excerpt + '\\n' + pointer + '\\n' + reason\n } else {\n message = 'Parse error in JSON input:\\n' + excerpt + '\\n' + reason\n }\n return {\n message,\n excerpt,\n pointer\n }\n}\n\nfunction improveNativeError (input, error) {\n let reason = getReason(error)\n const location = getLocationOnV8(input, reason) ||\n checkUnexpectedEndOnV8(input, reason) ||\n getLocationOnSpiderMonkey(input, reason)\n let offset, line, column\n if (location) {\n offset = location.offset\n line = location.line\n column = location.column\n reason = location.reason\n } else {\n offset = 0\n }\n error.reason = reason\n const texts = getTexts(reason, input, offset, line, column)\n error.message = texts.message\n error.excerpt = texts.excerpt\n if (texts.pointer) {\n error.pointer = texts.pointer\n error.location = {\n start: {\n column,\n line,\n offset\n }\n }\n }\n return error\n}\n\nfunction parseNative (input, reviver) { // eslint-disable-line no-unused-vars\n try {\n return JSON.parse(input, reviver)\n } catch (error) {\n throw improveNativeError(input, error)\n }\n}\n\n/* globals navigator, process, parseCustom, parseNative */\n\nconst isSafari = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor)\nconst oldNode = typeof process !== 'undefined' && process.version.startsWith('v4.')\n\nfunction needsCustomParser (options) {\n return options.ignoreBOM || options.ignoreComments || options.ignoreTrailingCommas ||\n options.allowSingleQuotedStrings || options.allowDuplicateObjectKeys === false ||\n options.mode === 'cjson' || options.mode === 'json5' || isSafari || oldNode\n}\n\nfunction getReviver (options) {\n if (typeof options === 'function') {\n return options\n } else if (options) {\n return options.reviver\n }\n}\n\nfunction parse (input, options) { // eslint-disable-line no-unused-vars\n options || (options = {})\n return needsCustomParser(options)\n ? parseCustom(input, options)\n : parseNative(input, getReviver(options))\n}\n\n exports.parse = parse\n exports.tokenize = tokenize\n exports.pathToPointer = pathToPointer\n exports.pointerToPath = pointerToPath\n\n exports.parseNative = parseNative\n exports.parseCustom = parseCustom\n exports.getErrorTexts = getTexts\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}));\n"],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../lib/jsonlint.js"],
4
+ "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('jsonlint', ['exports'], factory) :\n (global = global || self, factory(global.jsonlint = {}))\n}(this, function (exports) { 'use strict'\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/unicode.js\n\n// This is autogenerated with esprima tools, see:\n// https://github.com/ariya/esprima/blob/master/esprima.js\n\n// eslint-disable-next-line no-unused-vars\nconst Uni = {\n isWhiteSpace: function isWhiteSpace (x) {\n // section 7.2, table 2\n return x === '\\u0020' ||\n x === '\\u00A0' ||\n x === '\\uFEFF' || // <-- this is not a Unicode WS, only a JS one\n (x >= '\\u0009' && x <= '\\u000D') || // 9 A B C D\n\n // + whitespace characters from unicode, category Zs\n x === '\\u1680' ||\n (x >= '\\u2000' && x <= '\\u200A') || // 0 1 2 3 4 5 6 7 8 9 A\n x === '\\u2028' ||\n x === '\\u2029' ||\n x === '\\u202F' ||\n x === '\\u205F' ||\n x === '\\u3000'\n },\n isWhiteSpaceJSON: function isWhiteSpaceJSON (x) {\n return x === '\\u0020' ||\n x === '\\u0009' ||\n x === '\\u000A' ||\n x === '\\u000D'\n },\n isLineTerminator: function isLineTerminator (x) {\n // ok, here is the part when JSON is wrong\n // section 7.3, table 3\n return x === '\\u000A' ||\n x === '\\u000D' ||\n x === '\\u2028' ||\n x === '\\u2029'\n },\n isLineTerminatorJSON: function isLineTerminatorJSON (x) {\n return x === '\\u000A' ||\n x === '\\u000D'\n },\n isIdentifierStart: function isIdentifierStart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '\\u0080' && Uni.NonAsciiIdentifierStart.test(x))\n },\n isIdentifierPart: function isIdentifierPart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '0' && x <= '9') || // <-- addition to Start\n (x >= '\\u0080' && Uni.NonAsciiIdentifierPart.test(x))\n },\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart:\n /* eslint-disable-next-line no-misleading-character-class */\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0\\u08A2-\\u08AC\\u08E4-\\u08FE\\u0900-\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-\\u097F\\u0981-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C82\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1D00-\\u1DE6\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA697\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7B\\uAA80-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE26\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/\n}\n/* globals Uni, getTexts */\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/parse.js\n\nfunction isHexDigit (x) {\n return (x >= '0' && x <= '9') ||\n (x >= 'A' && x <= 'F') ||\n (x >= 'a' && x <= 'f')\n}\n\nfunction isOctDigit (x) {\n return x >= '0' && x <= '7'\n}\n\nfunction isDecDigit (x) {\n return x >= '0' && x <= '9'\n}\n\nfunction isBOM (x) {\n // This catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n // conversion in `fs.readFileSync()` translates it to FEFF (UTF-16 BOM).\n return x.charCodeAt(0) === 0xFEFF\n}\n\nconst unescapeMap = {\n '\\'': '\\'',\n '\"': '\"',\n '\\\\': '\\\\',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t',\n v: '\\v',\n '/': '/'\n}\n\nfunction parseInternal (input, options) {\n if (typeof input !== 'string' || !(input instanceof String)) {\n input = String(input)\n }\n\n const json5 = options.mode === 'json5'\n const ignoreBOM = options.ignoreBOM\n const ignoreComments = options.ignoreComments || options.mode === 'cjson' || json5\n const ignoreTrailingCommas = options.ignoreTrailingCommas || json5\n const allowSingleQuotedStrings = options.allowSingleQuotedStrings || json5\n const allowDuplicateObjectKeys = options.allowDuplicateObjectKeys\n const reviver = options.reviver\n const tokenize = options.tokenize\n const rawTokens = options.rawTokens\n const tokenLocations = options.tokenLocations\n const tokenPaths = options.tokenPaths\n\n const isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON\n const isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON\n\n const inputLength = input.length\n let lineNumber = 0\n let lineStart = 0\n let position = 0\n\n const tokens = []\n let startToken\n let endToken\n let tokenPath\n\n if (tokenize) {\n let tokenOffset = null\n let tokenLine\n let tokenColumn\n startToken = function () {\n if (tokenOffset !== null) throw Error('internal error, token overlap')\n tokenLine = lineNumber + 1\n tokenColumn = position - lineStart + 1\n tokenOffset = position\n }\n endToken = function (type, value) {\n if (tokenOffset !== position) {\n const token = { type }\n if (rawTokens) {\n token.raw = input.substr(tokenOffset, position - tokenOffset)\n }\n if (value !== undefined) {\n token.value = value\n }\n if (tokenLocations) {\n token.location = {\n start: {\n column: tokenColumn,\n line: tokenLine,\n offset: tokenOffset\n }\n }\n }\n if (tokenPaths) {\n token.path = tokenPath.slice()\n }\n tokens.push(token)\n }\n tokenOffset = null\n return value\n }\n tokenPaths && (tokenPath = [])\n }\n\n function generateMessage () {\n let message\n if (position < inputLength) {\n const token = JSON.stringify(input[position])\n message = 'Unexpected token ' + token\n } else {\n message = 'Unexpected end of input'\n }\n return message\n }\n\n function createError (message) {\n const column = position - lineStart + 1\n ++lineNumber\n const texts = getTexts(message, input, position, lineNumber, column)\n const error = SyntaxError(texts.message)\n error.reason = message\n error.excerpt = texts.excerpt\n error.pointer = texts.pointer\n error.location = {\n start: {\n column,\n line: lineNumber,\n offset: position\n }\n }\n return error\n }\n\n function fail (message) {\n if (!message) {\n message = generateMessage()\n }\n const error = createError(message)\n throw error\n }\n\n function newLine (char) {\n // account for <cr><lf>\n if (char === '\\r' && input[position] === '\\n') {\n ++position\n }\n lineStart = position\n ++lineNumber\n }\n\n function parseGeneric () {\n if (position < inputLength) {\n startToken && startToken()\n const char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n const string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '-' || char === '.' || isDecDigit(char) ||\n (json5 && (char === '+' || char === 'I' || char === 'N'))) {\n const number = parseNumber()\n endToken && endToken('literal', number)\n return number\n } else if (char === 'n') {\n parseKeyword('null')\n endToken && endToken('literal', null)\n return null\n } else if (char === 't') {\n parseKeyword('true')\n endToken && endToken('literal', true)\n return true\n } else if (char === 'f') {\n parseKeyword('false')\n endToken && endToken('literal', false)\n return false\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function parseKey () {\n let result\n if (position < inputLength) {\n startToken && startToken()\n const char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n const string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '.' || isDecDigit(char)) {\n const number = parseNumber(true)\n endToken && endToken('literal', number)\n return number\n } else if ((json5 && Uni.isIdentifierStart(char)) ||\n (char === '\\\\' && input[position] === 'u')) {\n const rollback = position - 1\n result = parseIdentifier()\n if (result === undefined) {\n position = rollback\n endToken && endToken()\n return undefined\n } else {\n endToken && endToken('literal', result)\n return result\n }\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function skipBOM () {\n if (isBOM(input)) {\n startToken && startToken()\n ++position\n endToken && endToken('bom')\n }\n }\n\n function skipWhiteSpace () {\n let insideWhiteSpace\n function startWhiteSpace () {\n if (!insideWhiteSpace) {\n insideWhiteSpace = true\n --position\n startToken()\n ++position\n }\n }\n function endWhiteSpace () {\n if (insideWhiteSpace) {\n insideWhiteSpace = false\n endToken('whitespace')\n }\n }\n while (position < inputLength) {\n const char = input[position++]\n if (isLineTerminator(char)) {\n startToken && startWhiteSpace()\n newLine(char)\n } else if (isWhiteSpace(char)) {\n startToken && startWhiteSpace()\n } else if (char === '/' && ignoreComments &&\n (input[position] === '/' || input[position] === '*')) {\n if (startToken) {\n --position\n endWhiteSpace()\n startToken()\n ++position\n }\n skipComment(input[position++] === '*')\n endToken && endToken('comment')\n } else {\n --position\n break\n }\n }\n endToken && endWhiteSpace()\n }\n\n function skipComment (multiLine) {\n while (position < inputLength) {\n const char = input[position++]\n if (isLineTerminator(char)) {\n if (!multiLine) {\n // let parent function deal with newline\n --position\n return\n }\n newLine(char)\n } else if (char === '*' && multiLine) {\n if (input[position] === '/') {\n ++position\n return\n }\n } else {\n // nothing\n }\n }\n if (multiLine) {\n fail('Unclosed multiline comment')\n }\n }\n\n function parseKeyword (keyword) {\n // keyword[0] is not checked because it was checked earlier\n const startPosition = position\n for (let i = 1, keywordLength = keyword.length; i < keywordLength; ++i) {\n if (position >= inputLength || keyword[i] !== input[position]) {\n position = startPosition - 1\n fail()\n }\n ++position\n }\n }\n\n function parseObject () {\n const result = {}\n const emptyObject = {}\n let isNotEmpty = false\n\n while (position < inputLength) {\n skipWhiteSpace()\n const key = parseKey()\n if (allowDuplicateObjectKeys === false && result[key]) {\n fail('Duplicate key: \"' + key + '\"')\n }\n skipWhiteSpace()\n startToken && startToken()\n let char = input[position++]\n endToken && endToken('symbol', char)\n if (char === '}' && key === undefined) {\n if (!ignoreTrailingCommas && isNotEmpty) {\n --position\n fail('Trailing comma in object')\n }\n return result\n } else if (char === ':' && key !== undefined) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(key)\n let value = parseGeneric()\n tokenPath && tokenPath.pop()\n\n if (value === undefined) fail('No value found for key \"' + key + '\"')\n if (typeof key !== 'string') {\n if (!json5 || typeof key !== 'number') {\n fail('Wrong key type: \"' + key + '\"')\n }\n }\n\n if (key in emptyObject || emptyObject[key] != null) {\n // silently ignore it\n } else {\n if (reviver) {\n value = reviver(key, value)\n }\n if (value !== undefined) {\n isNotEmpty = true\n result[key] = value\n }\n }\n\n skipWhiteSpace()\n startToken && startToken()\n char = input[position++]\n endToken && endToken('symbol', char)\n if (char === ',') {\n continue\n } else if (char === '}') {\n return result\n } else {\n fail()\n }\n } else {\n --position\n fail()\n }\n }\n\n fail()\n }\n\n function parseArray () {\n const result = []\n while (position < inputLength) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(result.length)\n let item = parseGeneric()\n tokenPath && tokenPath.pop()\n skipWhiteSpace()\n startToken && startToken()\n const char = input[position++]\n endToken && endToken('symbol', char)\n if (item !== undefined) {\n if (reviver) {\n item = reviver(String(result.length), item)\n }\n if (item === undefined) {\n ++result.length\n item = true // hack for check below, not included into result\n } else {\n result.push(item)\n }\n }\n\n if (char === ',') {\n if (item === undefined) {\n fail('Elisions are not supported')\n }\n } else if (char === ']') {\n if (!ignoreTrailingCommas && item === undefined && result.length) {\n --position\n fail('Trailing comma in array')\n }\n return result\n } else {\n --position\n fail()\n }\n }\n }\n\n function parseNumber () {\n // rewind because we don't know first char\n --position\n\n let start = position\n let char = input[position++]\n const toNumber = function (isOctal) {\n const string = input.substr(start, position - start)\n let result\n\n if (isOctal) {\n result = parseInt(string.replace(/^0o?/, ''), 8)\n } else {\n result = Number(string)\n }\n\n if (Number.isNaN(result)) {\n --position\n fail('Bad numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else if (!json5 && !string.match(/^-?(0|[1-9][0-9]*)(\\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {\n // additional restrictions imposed by json\n --position\n fail('Non-json numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else {\n return result\n }\n }\n\n // ex: -5982475.249875e+29384\n // ^ skipping this\n if (char === '-' || (char === '+' && json5)) {\n char = input[position++]\n }\n\n if (char === 'N' && json5) {\n parseKeyword('NaN')\n return NaN\n }\n\n if (char === 'I' && json5) {\n parseKeyword('Infinity')\n // returning +inf or -inf\n return toNumber()\n }\n\n if (char >= '1' && char <= '9') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // special case for leading zero: 0.123456\n if (char === '0') {\n char = input[position++]\n\n // new syntax, \"0o777\" old syntax, \"0777\"\n const isOctal = char === 'o' || char === 'O' || isOctDigit(char)\n const isHex = char === 'x' || char === 'X'\n\n if (json5 && (isOctal || isHex)) {\n while (position < inputLength &&\n (isHex ? isHexDigit : isOctDigit)(input[position])) {\n ++position\n }\n\n let sign = 1\n if (input[start] === '-') {\n sign = -1\n ++start\n } else if (input[start] === '+') {\n ++start\n }\n\n return sign * toNumber(isOctal)\n }\n }\n\n if (char === '.') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n if (char === 'e' || char === 'E') {\n char = input[position++]\n if (char === '-' || char === '+') {\n ++position\n }\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // we have char in the buffer, so count for it\n --position\n return toNumber()\n }\n\n function parseIdentifier () {\n // rewind because we don't know first char\n --position\n\n let result = ''\n while (position < inputLength) {\n let char = input[position++]\n if (char === '\\\\' &&\n input[position] === 'u' &&\n isHexDigit(input[position + 1]) &&\n isHexDigit(input[position + 2]) &&\n isHexDigit(input[position + 3]) &&\n isHexDigit(input[position + 4])) {\n // UnicodeEscapeSequence\n char = String.fromCharCode(parseInt(input.substr(position + 1, 4), 16))\n position += 5\n }\n\n if (result.length) {\n // identifier started\n if (Uni.isIdentifierPart(char)) {\n result += char\n } else {\n --position\n return result\n }\n } else {\n if (Uni.isIdentifierStart(char)) {\n result += char\n } else {\n return undefined\n }\n }\n }\n\n fail()\n }\n\n function parseString (endChar) {\n // 7.8.4 of ES262 spec\n let result = ''\n while (position < inputLength) {\n let char = input[position++]\n if (char === endChar) {\n return result\n } else if (char === '\\\\') {\n if (position >= inputLength) {\n fail()\n }\n char = input[position++]\n if (unescapeMap[char] && (json5 || (char !== 'v' && (char !== \"'\" || allowSingleQuotedStrings)))) {\n result += unescapeMap[char]\n } else if (json5 && isLineTerminator(char)) {\n // line continuation\n newLine(char)\n } else if (char === 'u' || (char === 'x' && json5)) {\n // unicode/character escape sequence\n const count = char === 'u' ? 4 : 2\n // validation for \\uXXXX\n for (let i = 0; i < count; ++i) {\n if (position >= inputLength) {\n fail()\n }\n if (!isHexDigit(input[position])) {\n fail('Bad escape sequence')\n }\n position++\n }\n result += String.fromCharCode(parseInt(input.substr(position - count, count), 16))\n } else if (json5 && isOctDigit(char)) {\n let digits\n if (char < '4' && isOctDigit(input[position]) && isOctDigit(input[position + 1])) {\n // three-digit octal\n digits = 3\n } else if (isOctDigit(input[position])) {\n // two-digit octal\n digits = 2\n } else {\n digits = 1\n }\n position += digits - 1\n result += String.fromCharCode(parseInt(input.substr(position - digits, digits), 8))\n } else if (json5) {\n // \\X -> x\n result += char\n } else {\n --position\n fail()\n }\n } else if (isLineTerminator(char)) {\n fail()\n } else {\n if (!json5 && char.charCodeAt(0) < 32) {\n --position\n fail('Unexpected control character')\n }\n // SourceCharacter but not one of \" or \\ or LineTerminator\n result += char\n }\n }\n\n fail()\n }\n\n if (ignoreBOM) {\n skipBOM()\n }\n skipWhiteSpace()\n let returnValue = parseGeneric()\n if (returnValue !== undefined || position < inputLength) {\n skipWhiteSpace()\n if (position >= inputLength) {\n if (reviver) {\n returnValue = reviver('', returnValue)\n }\n return tokenize ? tokens : returnValue\n } else {\n fail()\n }\n } else {\n if (position) {\n fail('No data, only a whitespace')\n } else {\n fail('No data, empty input')\n }\n }\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction parseCustom (input, options) {\n if (typeof options === 'function') {\n options = {\n reviver: options\n }\n } else if (!options) {\n options = {}\n }\n return parseInternal(input, options)\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction tokenize (input, options) {\n if (!options) {\n options = {}\n }\n // As long as this is the single modification, this is easier than cloning.\n // (Once Node.js 6 is dropped, this can be replaced by object destructuring.)\n const oldTokenize = options.tokenize\n options.tokenize = true\n const tokens = parseInternal(input, options)\n options.tokenize = oldTokenize\n return tokens\n}\nfunction escapePointerToken (token) {\n return token\n .toString()\n .replace(/~/g, '~0')\n .replace(/\\//g, '~1')\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction pathToPointer (tokens) {\n if (tokens.length === 0) {\n return ''\n }\n return '/' + tokens\n .map(escapePointerToken)\n .join('/')\n}\n\nfunction unescapePointerToken (token) {\n return token\n .replace(/~1/g, '/')\n .replace(/~0/g, '~')\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction pointerToPath (pointer) {\n if (pointer === '') {\n return []\n }\n if (pointer[0] !== '/') {\n throw new Error('Missing initial \"/\" in the reference')\n }\n return pointer\n .substr(1)\n .split('/')\n .map(unescapePointerToken)\n}\nfunction getLineAndColumn (input, offset) {\n const lines = input\n .substr(0, offset)\n .split(/\\r?\\n/)\n const line = lines.length\n const column = lines[line - 1].length + 1\n return {\n line,\n column\n }\n}\n\nfunction getOffset (input, line, column) {\n if (line > 1) {\n const breaks = /\\r?\\n/g\n let match\n while ((match = breaks.exec(input))) {\n if (--line === 1) {\n return match.index + column\n }\n }\n }\n return column - 1\n}\n\nfunction pastInput (input, offset) {\n const start = Math.max(0, offset - 20)\n const previous = input.substr(start, offset - start)\n return (offset > 20 ? '...' : '') + previous.replace(/\\r?\\n/g, '')\n}\n\nfunction upcomingInput (input, offset) {\n let start = Math.max(0, offset - 20)\n start += offset - start\n const rest = input.length - start\n const next = input.substr(start, Math.min(20, rest))\n return next.replace(/\\r?\\n/g, '') + (rest > 20 ? '...' : '')\n}\n\nfunction getPositionContext (input, offset) {\n const past = pastInput(input, offset)\n const upcoming = upcomingInput(input, offset)\n const pointer = new Array(past.length + 1).join('-') + '^'\n return {\n excerpt: past + upcoming,\n pointer\n }\n}\n\nfunction getReason (error) {\n let message = error.message\n .replace('JSON.parse: ', '') // SpiderMonkey\n .replace('JSON Parse error: ', '') // SquirrelFish\n const firstCharacter = message.charAt(0)\n if (firstCharacter >= 'a') {\n message = firstCharacter.toUpperCase() + message.substr(1)\n }\n return message\n}\n\nfunction getLocationOnV8 (input, reason) {\n const match = / in JSON at position (\\d+)$/.exec(reason)\n if (match) {\n const offset = +match[1]\n const location = getLineAndColumn(input, offset)\n return {\n offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction checkUnexpectedEndOnV8 (input, reason) {\n const match = / end of JSON input$/.exec(reason)\n if (match) {\n const offset = input.length\n const location = getLineAndColumn(input, offset)\n return {\n offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index + 4)\n }\n }\n}\n\nfunction getLocationOnSpiderMonkey (input, reason) {\n const match = / at line (\\d+) column (\\d+) of the JSON data$/.exec(reason)\n if (match) {\n const line = +match[1]\n const column = +match[2]\n const offset = getOffset(input, line, column) // eslint-disable-line no-undef\n return {\n offset,\n line,\n column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction getTexts (reason, input, offset, line, column) {\n const position = getPositionContext(input, offset)\n const excerpt = position.excerpt\n let message, pointer\n if (typeof line === 'number') {\n pointer = position.pointer\n message = 'Parse error on line ' + line + ', column ' +\n column + ':\\n' + excerpt + '\\n' + pointer + '\\n' + reason\n } else {\n message = 'Parse error in JSON input:\\n' + excerpt + '\\n' + reason\n }\n return {\n message,\n excerpt,\n pointer\n }\n}\n\nfunction improveNativeError (input, error) {\n let reason = getReason(error)\n const location = getLocationOnV8(input, reason) ||\n checkUnexpectedEndOnV8(input, reason) ||\n getLocationOnSpiderMonkey(input, reason)\n let offset, line, column\n if (location) {\n offset = location.offset\n line = location.line\n column = location.column\n reason = location.reason\n } else {\n offset = 0\n }\n error.reason = reason\n const texts = getTexts(reason, input, offset, line, column)\n error.message = texts.message\n error.excerpt = texts.excerpt\n if (texts.pointer) {\n error.pointer = texts.pointer\n error.location = {\n start: {\n column,\n line,\n offset\n }\n }\n }\n return error\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction parseNative (input, reviver) {\n try {\n return JSON.parse(input, reviver)\n } catch (error) {\n throw improveNativeError(input, error)\n }\n}\n/* globals navigator, process, parseCustom, parseNative */\n\nconst isSafari = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor)\nconst oldNode = typeof process !== 'undefined' && process.version.startsWith('v4.')\n\nfunction needsCustomParser (options) {\n return options.ignoreBOM || options.ignoreComments || options.ignoreTrailingCommas ||\n options.allowSingleQuotedStrings || options.allowDuplicateObjectKeys === false ||\n options.mode === 'cjson' || options.mode === 'json5' || isSafari || oldNode\n}\n\nfunction getReviver (options) {\n if (typeof options === 'function') {\n return options\n } else if (options) {\n return options.reviver\n }\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction parse (input, options) {\n options || (options = {})\n return needsCustomParser(options)\n ? parseCustom(input, options)\n : parseNative(input, getReviver(options))\n}\n\n exports.parse = parse\n exports.tokenize = tokenize\n exports.pathToPointer = pathToPointer\n exports.pointerToPath = pointerToPath\n\n exports.parseNative = parseNative\n exports.parseCustom = parseCustom\n exports.getErrorTexts = getTexts\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}));\n"],
5
+ "mappings": "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",
6
+ "names": ["global", "factory", "exports", "Uni", "x", "isHexDigit", "isOctDigit", "isDecDigit", "isBOM", "unescapeMap", "parseInternal", "input", "options", "json5", "ignoreBOM", "ignoreComments", "ignoreTrailingCommas", "allowSingleQuotedStrings", "allowDuplicateObjectKeys", "reviver", "tokenize", "rawTokens", "tokenLocations", "tokenPaths", "isLineTerminator", "isWhiteSpace", "inputLength", "lineNumber", "lineStart", "position", "tokens", "startToken", "endToken", "tokenPath", "tokenOffset", "tokenLine", "tokenColumn", "type", "value", "token", "generateMessage", "message", "createError", "column", "texts", "getTexts", "error", "fail", "newLine", "char", "parseGeneric", "string", "parseString", "parseObject", "parseArray", "number", "parseNumber", "parseKeyword", "parseKey", "result", "rollback", "parseIdentifier", "skipBOM", "skipWhiteSpace", "insideWhiteSpace", "startWhiteSpace", "endWhiteSpace", "skipComment", "multiLine", "keyword", "startPosition", "i", "keywordLength", "emptyObject", "isNotEmpty", "key", "item", "start", "toNumber", "isOctal", "isHex", "sign", "endChar", "count", "digits", "returnValue", "parseCustom", "oldTokenize", "escapePointerToken", "pathToPointer", "unescapePointerToken", "pointerToPath", "pointer", "getLineAndColumn", "offset", "lines", "line", "getOffset", "breaks", "match", "pastInput", "previous", "upcomingInput", "rest", "getPositionContext", "past", "upcoming", "getReason", "firstCharacter", "getLocationOnV8", "reason", "location", "checkUnexpectedEndOnV8", "getLocationOnSpiderMonkey", "excerpt", "improveNativeError", "parseNative", "isSafari", "oldNode", "needsCustomParser", "getReviver", "parse"]
7
+ }
@@ -1,2 +1,5 @@
1
- (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint-printer",["exports"],factory):(global=global||self,factory(global.jsonlintPrinter={}))})(this,(function(exports){"use strict";function noop(){}function isIdentifierName(value){return/^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value)}function concatenateTokens(tokens){let outputString="";const tokenCount=tokens.length;let tokenIndex;for(tokenIndex=0;tokenIndex<tokenCount;++tokenIndex){outputString+=tokens[tokenIndex].raw}return outputString}function print(tokens,options){if(!(tokens&&tokens.length)){throw new Error("JSON tokens missing.")}if(!(tokens[0]&&tokens[0].raw)){throw new Error("JSON tokens lack raw values.")}if(!options){return concatenateTokens(tokens)}let indentString=options.indent;if(typeof indentString==="number"){indentString=new Array(indentString+1).join(" ")}const prettyPrint=indentString!==undefined;const pruneComments=options.pruneComments;const stripObjectKeys=options.stripObjectKeys;const enforceDoubleQuotes=options.enforceDoubleQuotes;const enforceSingleQuotes=options.enforceSingleQuotes;const trimTrailingCommas=options.trimTrailingCommas;let outputString="";let foundLineBreak,addedLineBreak,needsLineBreak;let addedSpace,needsSpace;let indentLevel=0;const scopes=[];let scopeType;let isValue;const tokenCount=tokens.length;let tokenIndex,token,tokenType,tokenContent;function peekAtNextToken(){let nextTokenIndex=tokenIndex;let nextToken;do{nextToken=tokens[++nextTokenIndex]}while(nextToken&&(nextToken.type==="whitespace"||nextToken.type==="comment"));return nextToken}let addIndent;if(prettyPrint&&indentString){addIndent=function(){for(let i=0;i<indentLevel;++i){outputString+=indentString}}}else{addIndent=noop}let addLineBreak,addDelayedSpaceOrLineBreak;if(prettyPrint){addLineBreak=function(){outputString+="\n"};addDelayedSpaceOrLineBreak=function(){if(needsLineBreak){addLineBreak();addIndent()}else if(needsSpace){outputString+=" "}needsSpace=needsLineBreak=false}}else{addLineBreak=addDelayedSpaceOrLineBreak=noop}let addStandaloneComment,tryAddingInlineComment;if(pruneComments){addStandaloneComment=tryAddingInlineComment=noop}else{if(prettyPrint){addStandaloneComment=function(){if(!addedLineBreak&&tokenIndex>0){addLineBreak();addIndent()}outputString+=tokenContent;foundLineBreak=false;addedLineBreak=false;needsLineBreak=true};tryAddingInlineComment=function(){foundLineBreak=false;addedLineBreak=false;addedSpace=false;let tryTokenIndex=tokenIndex+1;function skipWhitespace(){let token=tokens[tryTokenIndex];if(token&&token.type==="whitespace"){foundLineBreak=token.raw.indexOf("\n")>=0;token=tokens[++tryTokenIndex]}return token}const token=skipWhitespace();if(!foundLineBreak&&token&&token.type==="comment"){if(needsLineBreak){if(!addedLineBreak){addLineBreak();addIndent()}}else{if(!addedSpace){outputString+=" "}}outputString+=token.raw;tokenIndex=tryTokenIndex++;skipWhitespace();if(foundLineBreak){needsSpace=false;needsLineBreak=true}else{needsSpace=true;needsLineBreak=false}}}}else{addStandaloneComment=function(){if(tokenContent[1]==="/"){outputString+="/*";outputString+=tokenContent.substr(2,tokenContent.length-2);outputString+=" */"}else{outputString+=tokenContent}};tryAddingInlineComment=noop}}function addLiteral(){addDelayedSpaceOrLineBreak();const tokenValue=token.value;if(stripObjectKeys&&scopeType==="{"&&!isValue&&isIdentifierName(tokenValue)){outputString+=tokenValue}else if(typeof tokenValue==="string"){if(enforceDoubleQuotes&&tokenContent[0]!=='"'){outputString+=JSON.stringify(tokenValue)}else if(enforceSingleQuotes&&tokenContent[0]!=="'"){outputString+="'"+tokenValue.replace(/'/g,"\\'")+"'"}else{outputString+=tokenContent}}else{outputString+=tokenContent}tryAddingInlineComment()}function openScope(){addDelayedSpaceOrLineBreak();scopes.push(scopeType);scopeType=tokenContent;isValue=scopeType==="[";outputString+=tokenContent;tryAddingInlineComment();++indentLevel;needsLineBreak=true}function closeScope(){scopeType=scopes.pop();addLineBreak();--indentLevel;addIndent();needsSpace=needsLineBreak=false;outputString+=tokenContent;tryAddingInlineComment()}function addComma(){if(trimTrailingCommas){const nextToken=peekAtNextToken();if(nextToken&&nextToken.type==="symbol"){return tryAddingInlineComment()}}addDelayedSpaceOrLineBreak();outputString+=",";tryAddingInlineComment();addLineBreak();addIndent();addedLineBreak=true;needsLineBreak=false;isValue=scopeType==="["}function addColon(){addDelayedSpaceOrLineBreak();outputString+=":";needsSpace=true;tryAddingInlineComment();isValue=true}for(tokenIndex=0;tokenIndex<tokenCount;++tokenIndex){token=tokens[tokenIndex];tokenType=token.type;tokenContent=token.raw;switch(tokenType){case"literal":addLiteral();break;case"comment":addStandaloneComment();break;case"symbol":switch(tokenContent){case"{":case"[":openScope();break;case"}":case"]":closeScope();break;case",":addComma();break;case":":addColon()}break;default:foundLineBreak=tokenContent.indexOf("\n")>=0}}return outputString}exports.print=print;Object.defineProperty(exports,"__esModule",{value:true})}));
2
- //# sourceMappingURL=printer.min.js.map
1
+ (function(m,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define("jsonlint-printer",["exports"],s):(m=m||self,s(m.jsonlintPrinter={}))})(this,function(m){"use strict";function s(){}function A(t){return/^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(t)}function B(t){let r="";const a=t.length;let l;for(l=0;l<a;++l)r+=t[l].raw;return r}function N(t,r){if(!(t&&t.length))throw new Error("JSON tokens missing.");if(!(t[0]&&t[0].raw))throw new Error("JSON tokens lack raw values.");if(!r)return B(t);let a=r.indent;typeof a=="number"&&(a=new Array(a+1).join(" "));const l=a!==void 0,v=r.pruneComments,Q=r.stripObjectKeys,_=r.enforceDoubleQuotes,D=r.enforceSingleQuotes,J=r.trimTrailingCommas;let e="",k,g,o,j,y,T=0;const I=[];let w,S;const P=t.length;let c,x,L,i;function $(){let n=c,u;do u=t[++n];while(u&&(u.type==="whitespace"||u.type==="comment"));return u}let d;l&&a?d=function(){for(let n=0;n<T;++n)e+=a}:d=s;let p,b;l?(p=function(){e+=`
2
+ `},b=function(){o?(p(),d()):y&&(e+=" "),y=o=!1}):p=b=s;let C,f;v?C=f=s:l?(C=function(){!g&&c>0&&(p(),d()),e+=i,k=!1,g=!1,o=!0},f=function(){k=!1,g=!1,j=!1;let n=c+1;function u(){let h=t[n];return h&&h.type==="whitespace"&&(k=h.raw.indexOf(`
3
+ `)>=0,h=t[++n]),h}const O=u();!k&&O&&O.type==="comment"&&(o?g||(p(),d()):j||(e+=" "),e+=O.raw,c=n++,u(),k?(y=!1,o=!0):(y=!0,o=!1))}):(C=function(){i[1]==="/"?(e+="/*",e+=i.substr(2,i.length-2),e+=" */"):e+=i},f=s);function z(){b();const n=x.value;Q&&w==="{"&&!S&&A(n)?e+=n:typeof n=="string"?_&&i[0]!=='"'?e+=JSON.stringify(n):D&&i[0]!=="'"?e+="'"+n.replace(/'/g,"\\'")+"'":e+=i:e+=i,f()}function E(){b(),I.push(w),w=i,S=w==="[",e+=i,f(),++T,o=!0}function K(){w=I.pop(),p(),--T,d(),y=o=!1,e+=i,f()}function V(){if(J){const n=$();if(n&&n.type==="symbol")return f()}b(),e+=",",f(),p(),d(),g=!0,o=!1,S=w==="["}function Z(){b(),e+=":",y=!0,f(),S=!0}for(c=0;c<P;++c)switch(x=t[c],L=x.type,i=x.raw,L){case"literal":z();break;case"comment":C();break;case"symbol":switch(i){case"{":case"[":E();break;case"}":case"]":K();break;case",":V();break;case":":Z()}break;default:k=i.indexOf(`
4
+ `)>=0}return e}m.print=N,Object.defineProperty(m,"__esModule",{value:!0})});
5
+ //# sourceMappingURL=printer.min.js.map