/* Generated by Nim Compiler v2.2.10 */
/* Compiled for: MacOSX, arm64, clang */
/* Command for C compiler:
   clang -c  -w -ferror-limit=3 -fno-strict-aliasing -pthread -isysroot /Applications/Xcode_16.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -target arm64-apple-darwin24.2.0 -O3   -I/Users/runner/work/nightlies/nightlies/nim-2.2.10/lib -I/Users/runner/work/nightlies/nightlies/nim-2.2.10/dist/atlas/src -o /Users/runner/work/nightlies/nightlies/nim-2.2.10/dist/atlas/.nimcache/@pparsejson.nim.c.o /Users/runner/work/nightlies/nightlies/nim-2.2.10/dist/atlas/.nimcache/@pparsejson.nim.c */
#define NIM_INTBITS 64
#define NIM_EmulateOverflowChecks

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw;
typedef struct tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw;
typedef struct RootObj RootObj;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyObject_StreamObj__bsqueMN9aCOGm2aNaHkuxoQ tyObject_StreamObj__bsqueMN9aCOGm2aNaHkuxoQ;
typedef struct tySequence__KnLzabZgqRI2nq1lKQIAhw tySequence__KnLzabZgqRI2nq1lKQIAhw;
typedef struct tySequence__KnLzabZgqRI2nq1lKQIAhw_Content tySequence__KnLzabZgqRI2nq1lKQIAhw_Content;
typedef struct tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA;
typedef struct tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A;
typedef struct tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw;
typedef struct tyTuple__N4J9cV4JZGem3ljqqj5rT0Q tyTuple__N4J9cV4JZGem3ljqqj5rT0Q;
typedef struct tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ;
typedef struct tyTuple__EMes4DT7YbRCwj3TmsFXyA tyTuple__EMes4DT7YbRCwj3TmsFXyA;
typedef struct tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ;
typedef struct tyObject_ValueError__YUzEEs8pGqG7cYmcRoc5rw tyObject_ValueError__YUzEEs8pGqG7cYmcRoc5rw;
typedef struct tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug;
typedef struct Exception Exception;
typedef struct tySequence__3EvzHGO0xyXGnJBUggwfKQ tySequence__3EvzHGO0xyXGnJBUggwfKQ;
typedef struct tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content;
typedef struct tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q;
typedef struct tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw;
struct TNimTypeV2 {
	void* destructor;
	NI size;
	NI16 align;
	NI16 depth;
	NU32* display;
	void* traceImpl;
	void* typeInfoV1;
	NI flags;
	void* vTable[SEQ_DECL_SIZE];
};
struct RootObj {
	TNimTypeV2* m_type;
};
struct NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
typedef NU8 tySet_tyChar__nmiMWKVIe46vacnhAFrQvw[32];
struct tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw {
	RootObj Sup;
	NI bufpos;
	NimStringV2 buf;
	tyObject_StreamObj__bsqueMN9aCOGm2aNaHkuxoQ* input;
	NI lineNumber;
	NI sentinel;
	NI lineStart;
	NI offsetBase;
	tySet_tyChar__nmiMWKVIe46vacnhAFrQvw refillChars;
};
typedef NU8 tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA;
typedef NU8 tyEnum_JsonEventKind__YIAu4LdwbaXASo0G5ZZpMg;
typedef NU8 tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ;
struct tySequence__KnLzabZgqRI2nq1lKQIAhw {
  NI len; tySequence__KnLzabZgqRI2nq1lKQIAhw_Content* p;
};
struct tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw {
	tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw Sup;
	NimStringV2 a;
	tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA tok;
	tyEnum_JsonEventKind__YIAu4LdwbaXASo0G5ZZpMg kind;
	tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ err;
	tySequence__KnLzabZgqRI2nq1lKQIAhw state;
	NimStringV2 filename;
	NIM_BOOL rawStringLiterals;
};
typedef NU8 tyEnum_ParserState__BnbsvODK39aUHD9a1QDNM0Zg;
struct tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA {
	NI rc;
	NI rootIdx;
};
struct tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw {
	NI len;
	NI cap;
	tyTuple__N4J9cV4JZGem3ljqqj5rT0Q* d;
};
struct tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ {
	NI len;
	NI cap;
	tyTuple__EMes4DT7YbRCwj3TmsFXyA* d;
};
struct tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A {
	tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw traceStack;
	tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ toFree;
	NI freed;
	NI touched;
	NI edges;
	NI rcSum;
	NIM_BOOL keepThreshold;
};
struct tyTuple__N4J9cV4JZGem3ljqqj5rT0Q {
	void** Field0;
	TNimTypeV2* Field1;
};
struct tySequence__3EvzHGO0xyXGnJBUggwfKQ {
  NI len; tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content* p;
};
struct Exception {
	RootObj Sup;
	Exception* parent;
	NCSTRING name;
	NimStringV2 message;
	tySequence__3EvzHGO0xyXGnJBUggwfKQ trace;
	Exception* up;
};
struct tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug {
	Exception Sup;
};
struct tyObject_ValueError__YUzEEs8pGqG7cYmcRoc5rw {
	tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug Sup;
};
struct tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ {
	tyObject_ValueError__YUzEEs8pGqG7cYmcRoc5rw Sup;
};
typedef NimStringV2 tyArray__Seu7uK9aaOSN0BK3EAjjSHw[4];
typedef NimStringV2 tyArray__9aAF0qlHWa9aZGF1tkv01n4Q[14];
struct tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q {
	tyObject_ValueError__YUzEEs8pGqG7cYmcRoc5rw Sup;
};
struct tySequence__KnLzabZgqRI2nq1lKQIAhw_Content { NI cap; tyEnum_ParserState__BnbsvODK39aUHD9a1QDNM0Zg data[SEQ_DECL_SIZE]; };
struct tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw {
	NCSTRING procname;
	NI line;
	NCSTRING filename;
};
struct tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content { NI cap; tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__pureZparsejson_u973)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZparsejson_u127)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* dest_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZparsejson_u157)(tySequence__KnLzabZgqRI2nq1lKQIAhw dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1);
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p_p0);
static N_INLINE(NI, minuspercent___system_u813)(NI x_p0, NI y_p1);
N_LIB_PRIVATE N_NOINLINE(void, rememberCycle__system_u3555)(NIM_BOOL isDestroyAction_p0, tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA* s_p1, TNimTypeV2* desc_p2);
N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___pureZparsejson_u139)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* dest_p0, void* env_p1);
static N_INLINE(void, nimTraceRefDyn)(void* q_p0, void* env_p1);
static N_INLINE(void, add__system_u3076)(tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw* s_p0, void** c_p1, TNimTypeV2* t_p2);
N_LIB_PRIVATE N_NIMCALL(void, resize__system_u3084)(tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw* s_p0);
static N_INLINE(NI, pluspercent___system_u793)(NI x_p0, NI y_p1);
N_LIB_PRIVATE N_NIMCALL(void, open__pureZlexbase_u144)(tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw* L_p0, tyObject_StreamObj__bsqueMN9aCOGm2aNaHkuxoQ* input_p1, NI bufLen_p2, tySet_tyChar__nmiMWKVIe46vacnhAFrQvw refillChars_p3);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___system_u2754)(NimStringV2* dest_p0, NimStringV2 src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___pureZparsejson_u166)(tySequence__KnLzabZgqRI2nq1lKQIAhw* dest_p0, tySequence__KnLzabZgqRI2nq1lKQIAhw src_p1);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap_p0, NI elemSize_p1, NI elemAlign_p2);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___system_u2760)(NimStringV2* dest_p0, NimStringV2 src_p1);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, setLengthStrV2)(NimStringV2* s_p0, NI newLen_p1);
N_LIB_PRIVATE N_NIMCALL(void, skip__pureZparsejson_u516)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NIM_BOOL, nimAddInt)(NI a_p0, NI b_p1, NI* res_p2);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_LIB_PRIVATE N_NIMCALL(NI, handleCR__pureZlexbase_u91)(tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw* L_p0, NI pos_p1);
N_LIB_PRIVATE N_NIMCALL(NI, handleLF__pureZlexbase_u105)(tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw* L_p0, NI pos_p1);
N_LIB_PRIVATE N_NIMCALL(void, parseNumber__pureZparsejson_u554)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1);
N_LIB_PRIVATE N_NIMCALL(void, prepareAdd)(NimStringV2* s_p0, NI addLen_p1);
static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1);
static N_INLINE(void, copyMem__system_u1755)(void* dest_p0, void* source_p1, NI size_p2);
static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__pureZstrutils_u1904)(NimStringV2 s_p0, tySet_tyChar__nmiMWKVIe46vacnhAFrQvw chars_p1);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA, parseString__pureZparsejson_u392)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
N_LIB_PRIVATE N_NIMCALL(NI, parseEscapedUTF16__pureZparsejson_u378)(NCSTRING buf_p0, NI* pos_p1);
static N_INLINE(NIM_BOOL, handleHexChar__stdZprivateZdecode95helpers_u1)(NIM_CHAR c_p0, NI* x_p1);
static N_INLINE(NIM_BOOL, nimSubInt)(NI a_p0, NI b_p1, NI* res_p2);
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringV2 s_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, nuctoUTF8)(NI32 c_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
N_LIB_PRIVATE N_NIMCALL(void, parseName__pureZparsejson_u617)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a_p0, NimStringV2 b_p1);
static N_INLINE(NIM_BOOL, equalMem__system_u1763)(void* a_p0, void* b_p1, NI size_p2);
static N_INLINE(int, nimCmpMem)(void* a_p0, void* b_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(void*, nimNewObj)(NI size_p0, NI alignment_p1);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__pureZparsejson_u990)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZparsejson_u834)(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___system_u3757)(tySequence__3EvzHGO0xyXGnJBUggwfKQ dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___pureZparsejson_u846)(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ* dest_p0, void* env_p1);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, errorMsgExpected__pureZparsejson_u374)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0, NimStringV2 e_p1);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, nsuFormatOpenArray)(NimStringV2 formatstr_p0, NimStringV2* a_p1, NI a_p1Len_0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___systemZdollars_u14)(NI xX60gensym0__p0);
static N_INLINE(NI, getLine__pureZparsejson_u356)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
static N_INLINE(NI, getColumn__pureZparsejson_u353)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
N_LIB_PRIVATE N_NIMCALL(NI, getColNumber__pureZlexbase_u163)(tyObject_BaseLexer__uXaqyrqvlVgJisQ4nTlfBw* L_p0, NI pos_p1);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, rawNewString)(NI space_p0);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e_p0, NCSTRING ename_p1, NCSTRING procname_p2, NCSTRING filename_p3, NI line_p4);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA, getTok__pureZparsejson_u633)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseParseErr__pureZparsejson_u827)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* p_p0, NimStringV2 msg_p1);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__pureZparsejson_u995)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZjson_u5826)(tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___pureZjson_u5838)(tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q* dest_p0, void* env_p1);
N_LIB_PRIVATE TNimTypeV2 NTIv2__36wI9cyxoyt1Pvn8bP6kcpw_;
static NIM_CONST tySet_tyChar__nmiMWKVIe46vacnhAFrQvw TM__nIinruGrC8EPIfjL3PuTvA_3 = {
0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static const struct {
  NI cap; NIM_CHAR data[0+1];
} TM__nIinruGrC8EPIfjL3PuTvA_4 = { 0 | NIM_STRLIT_FLAG, "" };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_5 = {0, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_4};
static const struct {
  NI cap; NIM_CHAR data[2+1];
} TM__nIinruGrC8EPIfjL3PuTvA_16 = { 2 | NIM_STRLIT_FLAG, "0." };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_17 = {2, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_16};
static NIM_CONST tySet_tyChar__nmiMWKVIe46vacnhAFrQvw TM__nIinruGrC8EPIfjL3PuTvA_25 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static const struct {
  NI cap; NIM_CHAR data[4+1];
} TM__nIinruGrC8EPIfjL3PuTvA_62 = { 4 | NIM_STRLIT_FLAG, "null" };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_63 = {4, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_62};
static const struct {
  NI cap; NIM_CHAR data[4+1];
} TM__nIinruGrC8EPIfjL3PuTvA_64 = { 4 | NIM_STRLIT_FLAG, "true" };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_65 = {4, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_64};
static const struct {
  NI cap; NIM_CHAR data[5+1];
} TM__nIinruGrC8EPIfjL3PuTvA_66 = { 5 | NIM_STRLIT_FLAG, "false" };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_67 = {5, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_66};
N_LIB_PRIVATE TNimTypeV2 NTIv2__Yhh6VFCOGeOxhKuEbQeKHQ_;
static const struct {
  NI cap; NIM_CHAR data[20+1];
} TM__nIinruGrC8EPIfjL3PuTvA_70 = { 20 | NIM_STRLIT_FLAG, "$1($2, $3) Error: $4" };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_71 = {20, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_70};
static const struct {
  NI cap; NIM_CHAR data[9+1];
} TM__nIinruGrC8EPIfjL3PuTvA_72 = { 9 | NIM_STRLIT_FLAG, " expected" };
static const NimStringV2 TM__nIinruGrC8EPIfjL3PuTvA_73 = {9, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_72};
static const struct {
  NI cap; NIM_CHAR data[13+1];
} TM__nIinruGrC8EPIfjL3PuTvA_74 = { 13 | NIM_STRLIT_FLAG, "invalid token" };
static const struct {
  NI cap; NIM_CHAR data[3+1];
} TM__nIinruGrC8EPIfjL3PuTvA_75 = { 3 | NIM_STRLIT_FLAG, "EOF" };
static const struct {
  NI cap; NIM_CHAR data[14+1];
} TM__nIinruGrC8EPIfjL3PuTvA_76 = { 14 | NIM_STRLIT_FLAG, "string literal" };
static const struct {
  NI cap; NIM_CHAR data[11+1];
} TM__nIinruGrC8EPIfjL3PuTvA_77 = { 11 | NIM_STRLIT_FLAG, "int literal" };
static const struct {
  NI cap; NIM_CHAR data[13+1];
} TM__nIinruGrC8EPIfjL3PuTvA_78 = { 13 | NIM_STRLIT_FLAG, "float literal" };
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__nIinruGrC8EPIfjL3PuTvA_79 = { 1 | NIM_STRLIT_FLAG, "{" };
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__nIinruGrC8EPIfjL3PuTvA_80 = { 1 | NIM_STRLIT_FLAG, "}" };
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__nIinruGrC8EPIfjL3PuTvA_81 = { 1 | NIM_STRLIT_FLAG, "[" };
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__nIinruGrC8EPIfjL3PuTvA_82 = { 1 | NIM_STRLIT_FLAG, "]" };
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__nIinruGrC8EPIfjL3PuTvA_83 = { 1 | NIM_STRLIT_FLAG, ":" };
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__nIinruGrC8EPIfjL3PuTvA_84 = { 1 | NIM_STRLIT_FLAG, "," };
N_LIB_PRIVATE TNimTypeV2 NTIv2__2PC87p2TBc9apRjznv9cEE0Q_;
N_LIB_PRIVATE NIM_CONST tyArray__9aAF0qlHWa9aZGF1tkv01n4Q tokToStr__pureZparsejson_u78 = {{13, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_74},
{3, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_75},
{14, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_76},
{11, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_77},
{13, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_78},
{4, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_64},
{5, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_66},
{4, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_62},
{1, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_79},
{1, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_80},
{1, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_81},
{1, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_82},
{1, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_83},
{1, (NimStrPayload*)&TM__nIinruGrC8EPIfjL3PuTvA_84}}
;
static NIM_CONST NU32 TM__nIinruGrC8EPIfjL3PuTvA_2[3] = {3701606400, 1990904320, 2886270720};
N_LIB_PRIVATE TNimTypeV2 NTIv2__36wI9cyxoyt1Pvn8bP6kcpw_ = {.destructor = (void*)rttiDestroy__pureZparsejson_u973, .size = sizeof(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw), .align = (NI16) NIM_ALIGNOF(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw), .depth = 2, .display = TM__nIinruGrC8EPIfjL3PuTvA_2, .traceImpl = (void*)eqtrace___pureZparsejson_u139, .flags = 0};
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4198;
static NIM_CONST NU32 TM__nIinruGrC8EPIfjL3PuTvA_69[5] = {3701606400, 1285336064, 599397120, 1287918080, 410670080};
N_LIB_PRIVATE TNimTypeV2 NTIv2__Yhh6VFCOGeOxhKuEbQeKHQ_ = {.destructor = (void*)rttiDestroy__pureZparsejson_u990, .size = sizeof(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ), .align = (NI16) NIM_ALIGNOF(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ), .depth = 4, .display = TM__nIinruGrC8EPIfjL3PuTvA_69, .traceImpl = (void*)eqtrace___pureZparsejson_u846, .flags = 0};
static NIM_CONST NU32 TM__nIinruGrC8EPIfjL3PuTvA_85[5] = {3701606400, 1285336064, 599397120, 1287918080, 4038913536};
N_LIB_PRIVATE TNimTypeV2 NTIv2__2PC87p2TBc9apRjznv9cEE0Q_ = {.destructor = (void*)rttiDestroy__pureZparsejson_u995, .size = sizeof(tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q), .align = (NI16) NIM_ALIGNOF(tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q), .depth = 4, .display = TM__nIinruGrC8EPIfjL3PuTvA_85, .traceImpl = (void*)eqtrace___pureZjson_u5838, .flags = 0};
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZparsejson_u157)(tySequence__KnLzabZgqRI2nq1lKQIAhw dest_p0) {
	if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
 alignedDealloc(dest_p0.p, NIM_ALIGNOF(tyEnum_ParserState__BnbsvODK39aUHD9a1QDNM0Zg));
}
}
static N_INLINE(NI, minuspercent___system_u813)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU64)(((NU) (x_p0))) - (NU64)(((NU) (y_p1))))));
	return result;
}
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p_p0) {
	NIM_BOOL result;
	result = NIM_FALSE;
	{
		tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA* cell_1;
		NI T5_;
		if (!!((p_p0 == NIM_NIL))) goto LA3_;
		T5_ = (NI)0;
		T5_ = minuspercent___system_u813(((NI) (ptrdiff_t) (p_p0)), ((NI)16));
		cell_1 = ((tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA*) (T5_));
		{
			if (!((NI)((*cell_1).rc & ((NI)-16)) == ((NI)0))) goto LA8_;
			result = NIM_TRUE;
		}
		goto LA6_;
LA8_: ;
		{
			(*cell_1).rc = minuspercent___system_u813((*cell_1).rc, ((NI)16));
		}
LA6_: ;
		rememberCycle__system_u3555(result, cell_1, (*((TNimTypeV2**) (p_p0))));
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZparsejson_u127)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* dest_p0) {
	if ((*dest_p0).filename.p && !((*dest_p0).filename.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared((*dest_p0).filename.p);
}
	eqdestroy___pureZparsejson_u157((*dest_p0).state);
	if ((*dest_p0).a.p && !((*dest_p0).a.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared((*dest_p0).a.p);
}
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.input);
		if (!T3_) goto LA4_;
		nimDestroyAndDispose((*dest_p0).Sup.input);
	}
LA4_: ;
	if ((*dest_p0).Sup.buf.p && !((*dest_p0).Sup.buf.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared((*dest_p0).Sup.buf.p);
}
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__pureZparsejson_u973)(void* dest_p0) {
	eqdestroy___pureZparsejson_u127(((tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw*) (dest_p0)));
}
static N_INLINE(NI, pluspercent___system_u793)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU64)(((NU) (x_p0))) + (NU64)(((NU) (y_p1))))));
	return result;
}
static N_INLINE(void, add__system_u3076)(tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw* s_p0, void** c_p1, TNimTypeV2* t_p2) {
	void** colontmp_;
	TNimTypeV2* colontmp__2;
	{
		if (!((*s_p0).cap <= (*s_p0).len)) goto LA3_;
		resize__system_u3084(s_p0);
	}
LA3_: ;
	colontmp_ = c_p1;
	colontmp__2 = t_p2;
	(*s_p0).d[(*s_p0).len].Field0 = colontmp_;
	(*s_p0).d[(*s_p0).len].Field1 = colontmp__2;
	(*s_p0).len = pluspercent___system_u793((*s_p0).len, ((NI)1));
}
static N_INLINE(void, nimTraceRefDyn)(void* q_p0, void* env_p1) {
	void** p_1;
	p_1 = ((void**) (q_p0));
	{
		tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A* j_1;
		if (!!(((*p_1) == NIM_NIL))) goto LA3_;
		j_1 = ((tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A*) (env_p1));
		add__system_u3076((&(*j_1).traceStack), p_1, (*((TNimTypeV2**) ((*p_1)))));
	}
LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___pureZparsejson_u139)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* dest_p0, void* env_p1) {
	nimTraceRefDyn(&(*dest_p0).Sup.input, env_p1);
}
N_LIB_PRIVATE N_NIMCALL(void, eqsink___pureZparsejson_u166)(tySequence__KnLzabZgqRI2nq1lKQIAhw* dest_p0, tySequence__KnLzabZgqRI2nq1lKQIAhw src_p1) {
	if ((*dest_p0).p != src_p1.p) {	eqdestroy___pureZparsejson_u157((*dest_p0));
	}
(*dest_p0).len = src_p1.len; (*dest_p0).p = src_p1.p;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4198);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, open__pureZparsejson_u79)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0, tyObject_StreamObj__bsqueMN9aCOGm2aNaHkuxoQ* input_p1, NimStringV2 filename_p2, NIM_BOOL rawStringLiterals_p3) {
	tySequence__KnLzabZgqRI2nq1lKQIAhw T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	open__pureZlexbase_u144(&my_p0->Sup, input_p1, ((NI)8192), TM__nIinruGrC8EPIfjL3PuTvA_3);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	eqcopy___system_u2754((&(*my_p0).filename), filename_p2);
	T1_.len = 0; T1_.p = NIM_NIL;
	T1_.len = 1; T1_.p = (tySequence__KnLzabZgqRI2nq1lKQIAhw_Content*) newSeqPayload(1, sizeof(tyEnum_ParserState__BnbsvODK39aUHD9a1QDNM0Zg), NIM_ALIGNOF(tyEnum_ParserState__BnbsvODK39aUHD9a1QDNM0Zg));
	T1_.p->data[0] = ((tyEnum_ParserState__BnbsvODK39aUHD9a1QDNM0Zg)1);
	eqsink___pureZparsejson_u166((&(*my_p0).state), T1_);
	(*my_p0).kind = ((tyEnum_JsonEventKind__YIAu4LdwbaXASo0G5ZZpMg)0);
	eqsink___system_u2760((&(*my_p0).a), TM__nIinruGrC8EPIfjL3PuTvA_5);
	(*my_p0).rawStringLiterals = rawStringLiterals_p3;
	}BeforeRet_: ;
}
static N_INLINE(NIM_BOOL, nimAddInt)(NI a_p0, NI b_p1, NI* res_p2) {
	NIM_BOOL result;
	NI r_1;
	result = (NIM_BOOL)0;
	r_1 = ((NI) ((NU)((NU64)(((NU) (a_p0))) + (NU64)(((NU) (b_p1))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI)0) <= (NI)(r_1 ^ a_p0));
		if (T3_) goto LA4_;
		T3_ = (((NI)0) <= (NI)(r_1 ^ b_p1));
LA4_: ;
		if (!T3_) goto LA5_;
		(*res_p2) = r_1;
	}
	goto LA1_;
LA5_: ;
	{
		result = NIM_TRUE;
	}
LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, skip__pureZparsejson_u516)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	NI pos_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	pos_1 = (*my_p0).Sup.bufpos;
	{
		while (1) {
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			switch (((NU8)((*my_p0).Sup.buf.p->data[pos_1]))) {
			case 47:
			{
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_6;
					NI TM__nIinruGrC8EPIfjL3PuTvA_7;
					if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_6)) { raiseOverflow(); goto BeforeRet_;
					};
					if ((NI)(TM__nIinruGrC8EPIfjL3PuTvA_6) < 0 || (NI)(TM__nIinruGrC8EPIfjL3PuTvA_6) >= (*my_p0).Sup.buf.len){ raiseIndexError2((NI)(TM__nIinruGrC8EPIfjL3PuTvA_6),(*my_p0).Sup.buf.len-1); goto BeforeRet_;
					}
					if (!((NU8)((*my_p0).Sup.buf.p->data[(NI)(TM__nIinruGrC8EPIfjL3PuTvA_6)]) == (NU8)(47))) goto LA6_;
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_7)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_7);
					{
						while (1) {
							if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
							}
							switch (((NU8)((*my_p0).Sup.buf.p->data[pos_1]))) {
							case 0:
							{
								goto LA8;
							}
							break;
							case 13:
							{
								pos_1 = handleCR__pureZlexbase_u91(&my_p0->Sup, pos_1);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								goto LA8;
							}
							break;
							case 10:
							{
								pos_1 = handleLF__pureZlexbase_u105(&my_p0->Sup, pos_1);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								goto LA8;
							}
							break;
							default:
							{
								NI TM__nIinruGrC8EPIfjL3PuTvA_8;
								if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_8)) { raiseOverflow(); goto BeforeRet_;
								};
								pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_8);
							}
							break;
							}
						}
					} LA8: ;
				}
				goto LA4_;
LA6_: ;
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_9;
					NI TM__nIinruGrC8EPIfjL3PuTvA_10;
					if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_9)) { raiseOverflow(); goto BeforeRet_;
					};
					if ((NI)(TM__nIinruGrC8EPIfjL3PuTvA_9) < 0 || (NI)(TM__nIinruGrC8EPIfjL3PuTvA_9) >= (*my_p0).Sup.buf.len){ raiseIndexError2((NI)(TM__nIinruGrC8EPIfjL3PuTvA_9),(*my_p0).Sup.buf.len-1); goto BeforeRet_;
					}
					if (!((NU8)((*my_p0).Sup.buf.p->data[(NI)(TM__nIinruGrC8EPIfjL3PuTvA_9)]) == (NU8)(42))) goto LA15_;
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_10)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_10);
					{
						while (1) {
							if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
							}
							switch (((NU8)((*my_p0).Sup.buf.p->data[pos_1]))) {
							case 0:
							{
								(*my_p0).err = ((tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ)8);
								goto LA17;
							}
							break;
							case 13:
							{
								pos_1 = handleCR__pureZlexbase_u91(&my_p0->Sup, pos_1);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							}
							break;
							case 10:
							{
								pos_1 = handleLF__pureZlexbase_u105(&my_p0->Sup, pos_1);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							}
							break;
							case 42:
							{
								NI TM__nIinruGrC8EPIfjL3PuTvA_11;
								if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_11)) { raiseOverflow(); goto BeforeRet_;
								};
								pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_11);
								{
									NI TM__nIinruGrC8EPIfjL3PuTvA_12;
									if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
									}
									if (!((NU8)((*my_p0).Sup.buf.p->data[pos_1]) == (NU8)(47))) goto LA25_;
									if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_12)) { raiseOverflow(); goto BeforeRet_;
									};
									pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_12);
									goto LA17;
								}
LA25_: ;
							}
							break;
							default:
							{
								NI TM__nIinruGrC8EPIfjL3PuTvA_13;
								if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_13)) { raiseOverflow(); goto BeforeRet_;
								};
								pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_13);
							}
							break;
							}
						}
					} LA17: ;
				}
				goto LA4_;
LA15_: ;
				{
					goto LA1;
				}
LA4_: ;
			}
			break;
			case 32:
			case 9:
			{
				NI TM__nIinruGrC8EPIfjL3PuTvA_14;
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_14)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_14);
			}
			break;
			case 13:
			{
				pos_1 = handleCR__pureZlexbase_u91(&my_p0->Sup, pos_1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
			break;
			case 10:
			{
				pos_1 = handleLF__pureZlexbase_u105(&my_p0->Sup, pos_1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	(*my_p0).Sup.bufpos = pos_1;
	}BeforeRet_: ;
}
static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1) {
	prepareAdd(s_p0, ((NI)1));
	(*(*s_p0).p).data[(*s_p0).len] = c_p1;
	(*s_p0).len += ((NI)1);
	(*(*s_p0).p).data[(*s_p0).len] = 0;
}
static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest_p0, source_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, copyMem__system_u1755)(void* dest_p0, void* source_p1, NI size_p2) {
	nimCopyMem(dest_p0, source_p1, size_p2);
}
static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1) {
	{
		if (!(((NI)0) < src_p1.len)) goto LA3_;
		copyMem__system_u1755(((void*) ((&(*(*dest_p0).p).data[(*dest_p0).len]))), ((void*) ((&(*src_p1.p).data[((NI)0)]))), (src_p1.len));
		(*dest_p0).len += src_p1.len;
		(*(*dest_p0).p).data[(*dest_p0).len] = 0;
	}
LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, parseNumber__pureZparsejson_u554)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	NI pos_1;
{	pos_1 = (*my_p0).Sup.bufpos;
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_15;
		if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
		}
		if (!((NU8)((*my_p0).Sup.buf.p->data[pos_1]) == (NU8)(45))) goto LA3_;
		nimAddCharV1((&(*my_p0).a), 45);
		if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_15)) { raiseOverflow(); goto BeforeRet_;
		};
		pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_15);
	}
LA3_: ;
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_18;
		if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
		}
		if (!((NU8)((*my_p0).Sup.buf.p->data[pos_1]) == (NU8)(46))) goto LA7_;
		prepareAdd((&(*my_p0).a), 2);
appendString((&(*my_p0).a), TM__nIinruGrC8EPIfjL3PuTvA_17);
		if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_18)) { raiseOverflow(); goto BeforeRet_;
		};
		pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_18);
	}
	goto LA5_;
LA7_: ;
	{
		{
			while (1) {
				NI TM__nIinruGrC8EPIfjL3PuTvA_19;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(48)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(57)))) goto LA11;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_19)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_19);
			} LA11: ;
		}
		{
			NI TM__nIinruGrC8EPIfjL3PuTvA_20;
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			if (!((NU8)((*my_p0).Sup.buf.p->data[pos_1]) == (NU8)(46))) goto LA14_;
			nimAddCharV1((&(*my_p0).a), 46);
			if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_20)) { raiseOverflow(); goto BeforeRet_;
			};
			pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_20);
		}
LA14_: ;
	}
LA5_: ;
	{
		while (1) {
			NI TM__nIinruGrC8EPIfjL3PuTvA_21;
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(48)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(57)))) goto LA17;
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
			if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_21)) { raiseOverflow(); goto BeforeRet_;
			};
			pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_21);
		} LA17: ;
	}
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_22;
		if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
		}
		if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) == ((NU8)(69)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) == ((NU8)(101)))) goto LA20_;
		if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
		}
		nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
		if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_22)) { raiseOverflow(); goto BeforeRet_;
		};
		pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_22);
		{
			NI TM__nIinruGrC8EPIfjL3PuTvA_23;
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) == ((NU8)(43)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) == ((NU8)(45)))) goto LA24_;
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
			if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_23)) { raiseOverflow(); goto BeforeRet_;
			};
			pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_23);
		}
LA24_: ;
		{
			while (1) {
				NI TM__nIinruGrC8EPIfjL3PuTvA_24;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(48)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(57)))) goto LA27;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_24)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_24);
			} LA27: ;
		}
	}
LA20_: ;
	(*my_p0).Sup.bufpos = pos_1;
	}BeforeRet_: ;
}
static N_INLINE(NIM_BOOL, nimSubInt)(NI a_p0, NI b_p1, NI* res_p2) {
	NIM_BOOL result;
	NI r_1;
	result = (NIM_BOOL)0;
	r_1 = ((NI) ((NU)((NU64)(((NU) (a_p0))) - (NU64)(((NU) (b_p1))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI)0) <= (NI)(r_1 ^ a_p0));
		if (T3_) goto LA4_;
		T3_ = (((NI)0) <= (NI)(r_1 ^ (NI)((NU64) ~(b_p1))));
LA4_: ;
		if (!T3_) goto LA5_;
		(*res_p2) = r_1;
	}
	goto LA1_;
LA5_: ;
	{
		result = NIM_TRUE;
	}
LA1_: ;
	return result;
}
static N_INLINE(NIM_BOOL, handleHexChar__stdZprivateZdecode95helpers_u1)(NIM_CHAR c_p0, NI* x_p1) {
	NIM_BOOL result;
{	result = NIM_TRUE;
	switch (((NU8)(c_p0))) {
	case 48 ... 57:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_38;
		if (nimSubInt(((NU8)(c_p0)), ((NI)48), &TM__nIinruGrC8EPIfjL3PuTvA_38)) { raiseOverflow(); goto BeforeRet_;
		};
		(*x_p1) = (NI)((NI)((NU64)((*x_p1)) << (NU64)(((NI)4) & (64 - 1))) | (NI)(TM__nIinruGrC8EPIfjL3PuTvA_38));
	}
	break;
	case 97 ... 102:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_39;
		NI TM__nIinruGrC8EPIfjL3PuTvA_40;
		if (nimSubInt(((NU8)(c_p0)), ((NI)97), &TM__nIinruGrC8EPIfjL3PuTvA_39)) { raiseOverflow(); goto BeforeRet_;
		};
		if (nimAddInt((NI)(TM__nIinruGrC8EPIfjL3PuTvA_39), ((NI)10), &TM__nIinruGrC8EPIfjL3PuTvA_40)) { raiseOverflow(); goto BeforeRet_;
		};
		(*x_p1) = (NI)((NI)((NU64)((*x_p1)) << (NU64)(((NI)4) & (64 - 1))) | (NI)(TM__nIinruGrC8EPIfjL3PuTvA_40));
	}
	break;
	case 65 ... 70:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_41;
		NI TM__nIinruGrC8EPIfjL3PuTvA_42;
		if (nimSubInt(((NU8)(c_p0)), ((NI)65), &TM__nIinruGrC8EPIfjL3PuTvA_41)) { raiseOverflow(); goto BeforeRet_;
		};
		if (nimAddInt((NI)(TM__nIinruGrC8EPIfjL3PuTvA_41), ((NI)10), &TM__nIinruGrC8EPIfjL3PuTvA_42)) { raiseOverflow(); goto BeforeRet_;
		};
		(*x_p1) = (NI)((NI)((NU64)((*x_p1)) << (NU64)(((NI)4) & (64 - 1))) | (NI)(TM__nIinruGrC8EPIfjL3PuTvA_42));
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, parseEscapedUTF16__pureZparsejson_u378)(NCSTRING buf_p0, NI* pos_p1) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = ((NI)0);
	{
		NI __1;
		NI res_1;
		__1 = (NI)0;
		res_1 = ((NI)0);
		{
			while (1) {
				NI TM__nIinruGrC8EPIfjL3PuTvA_44;
				if (!(res_1 <= ((NI)3))) goto LA3;
				__1 = ((NI) (res_1));
				{
					NIM_BOOL T6_;
					NI TM__nIinruGrC8EPIfjL3PuTvA_43;
					T6_ = (NIM_BOOL)0;
					T6_ = handleHexChar__stdZprivateZdecode95helpers_u1(buf_p0[(*pos_p1)], (&result));
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					if (!T6_) goto LA7_;
					if (nimAddInt((*pos_p1), ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_43)) { raiseOverflow(); goto BeforeRet_;
					};
					(*pos_p1) = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_43);
				}
				goto LA4_;
LA7_: ;
				{
					result = ((NI)-1);
					goto BeforeRet_;
				}
LA4_: ;
				if (nimAddInt(res_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_44)) { raiseOverflow(); goto BeforeRet_;
				};
				res_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_44);
			} LA3: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringV2 s_p0) {
	NCSTRING result;
	{
		if (!(s_p0.len == ((NI)0))) goto LA3_;
		result = "";
	}
	goto LA1_;
LA3_: ;
	{
		result = ((NCSTRING) ((*s_p0.p).data));
	}
LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA, parseString__pureZparsejson_u392)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA result;
	NI pos_1;
	NI TM__nIinruGrC8EPIfjL3PuTvA_26;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)2);
	if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_26)) { raiseOverflow(); goto BeforeRet_;
	};
	pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_26);
	{
		if (!(*my_p0).rawStringLiterals) goto LA3_;
		nimAddCharV1((&(*my_p0).a), 34);
	}
LA3_: ;
	{
		while (1) {
			if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
			}
			switch (((NU8)((*my_p0).Sup.buf.p->data[pos_1]))) {
			case 0:
			{
				(*my_p0).err = ((tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ)7);
				result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)0);
				goto LA5;
			}
			break;
			case 34:
			{
				NI TM__nIinruGrC8EPIfjL3PuTvA_27;
				{
					if (!(*my_p0).rawStringLiterals) goto LA11_;
					nimAddCharV1((&(*my_p0).a), 34);
				}
LA11_: ;
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_27)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_27);
				goto LA5;
			}
			break;
			case 92:
			{
				NI TM__nIinruGrC8EPIfjL3PuTvA_28;
				{
					if (!(*my_p0).rawStringLiterals) goto LA16_;
					nimAddCharV1((&(*my_p0).a), 92);
				}
LA16_: ;
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_28)) { raiseOverflow(); goto BeforeRet_;
				};
				if ((NI)(TM__nIinruGrC8EPIfjL3PuTvA_28) < 0 || (NI)(TM__nIinruGrC8EPIfjL3PuTvA_28) >= (*my_p0).Sup.buf.len){ raiseIndexError2((NI)(TM__nIinruGrC8EPIfjL3PuTvA_28),(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				switch (((NU8)((*my_p0).Sup.buf.p->data[(NI)(TM__nIinruGrC8EPIfjL3PuTvA_28)]))) {
				case 92:
				case 34:
				case 39:
				case 47:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_29;
					NI TM__nIinruGrC8EPIfjL3PuTvA_30;
					if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_29)) { raiseOverflow(); goto BeforeRet_;
					};
					if ((NI)(TM__nIinruGrC8EPIfjL3PuTvA_29) < 0 || (NI)(TM__nIinruGrC8EPIfjL3PuTvA_29) >= (*my_p0).Sup.buf.len){ raiseIndexError2((NI)(TM__nIinruGrC8EPIfjL3PuTvA_29),(*my_p0).Sup.buf.len-1); goto BeforeRet_;
					}
					nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[(NI)(TM__nIinruGrC8EPIfjL3PuTvA_29)]);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_30)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_30);
				}
				break;
				case 98:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_31;
					nimAddCharV1((&(*my_p0).a), 8);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_31)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_31);
				}
				break;
				case 102:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_32;
					nimAddCharV1((&(*my_p0).a), 12);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_32)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_32);
				}
				break;
				case 110:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_33;
					nimAddCharV1((&(*my_p0).a), 10);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_33)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_33);
				}
				break;
				case 114:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_34;
					nimAddCharV1((&(*my_p0).a), 13);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_34)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_34);
				}
				break;
				case 116:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_35;
					nimAddCharV1((&(*my_p0).a), 9);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_35)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_35);
				}
				break;
				case 118:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_36;
					nimAddCharV1((&(*my_p0).a), 11);
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_36)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_36);
				}
				break;
				case 117:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_37;
					NI pos2_1;
					NI r_1;
					{
						if (!(*my_p0).rawStringLiterals) goto LA28_;
						nimAddCharV1((&(*my_p0).a), 117);
					}
LA28_: ;
					if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_37)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_37);
					pos2_1 = pos_1;
					r_1 = parseEscapedUTF16__pureZparsejson_u378(nimToCStringConv((*my_p0).Sup.buf), (&pos_1));
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					{
						if (!(r_1 < ((NI)0))) goto LA32_;
						(*my_p0).err = ((tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ)1);
						goto LA5;
					}
LA32_: ;
					{
						NI TM__nIinruGrC8EPIfjL3PuTvA_46;
						NI s_1;
						if (!((NI)(r_1 & ((NI)64512)) == ((NI)55296))) goto LA36_;
						{
							NIM_BOOL T40_;
							NI TM__nIinruGrC8EPIfjL3PuTvA_45;
							T40_ = (NIM_BOOL)0;
							if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
							}
							T40_ = !(((NU8)((*my_p0).Sup.buf.p->data[pos_1]) == (NU8)(92)));
							if (T40_) goto LA41_;
							if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_45)) { raiseOverflow(); goto BeforeRet_;
							};
							if ((NI)(TM__nIinruGrC8EPIfjL3PuTvA_45) < 0 || (NI)(TM__nIinruGrC8EPIfjL3PuTvA_45) >= (*my_p0).Sup.buf.len){ raiseIndexError2((NI)(TM__nIinruGrC8EPIfjL3PuTvA_45),(*my_p0).Sup.buf.len-1); goto BeforeRet_;
							}
							T40_ = !(((NU8)((*my_p0).Sup.buf.p->data[(NI)(TM__nIinruGrC8EPIfjL3PuTvA_45)]) == (NU8)(117)));
LA41_: ;
							if (!T40_) goto LA42_;
							(*my_p0).err = ((tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ)1);
							goto LA5;
						}
LA42_: ;
						if (nimAddInt(pos_1, ((NI)2), &TM__nIinruGrC8EPIfjL3PuTvA_46)) { raiseOverflow(); goto BeforeRet_;
						};
						pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_46);
						s_1 = parseEscapedUTF16__pureZparsejson_u378(nimToCStringConv((*my_p0).Sup.buf), (&pos_1));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						{
							NIM_BOOL T46_;
							NI TM__nIinruGrC8EPIfjL3PuTvA_47;
							NI TM__nIinruGrC8EPIfjL3PuTvA_48;
							NI TM__nIinruGrC8EPIfjL3PuTvA_49;
							T46_ = (NIM_BOOL)0;
							T46_ = ((NI)(s_1 & ((NI)64512)) == ((NI)56320));
							if (!(T46_)) goto LA47_;
							T46_ = (((NI)0) < s_1);
LA47_: ;
							if (!T46_) goto LA48_;
							if (nimSubInt(r_1, ((NI)55296), &TM__nIinruGrC8EPIfjL3PuTvA_47)) { raiseOverflow(); goto BeforeRet_;
							};
							if (nimSubInt(s_1, ((NI)56320), &TM__nIinruGrC8EPIfjL3PuTvA_48)) { raiseOverflow(); goto BeforeRet_;
							};
							if (nimAddInt(((NI)65536), (NI)((NI)((NU64)((NI)(TM__nIinruGrC8EPIfjL3PuTvA_47)) << (NU64)(((NI)10) & (64 - 1))) | (NI)(TM__nIinruGrC8EPIfjL3PuTvA_48)), &TM__nIinruGrC8EPIfjL3PuTvA_49)) { raiseOverflow(); goto BeforeRet_;
							};
							r_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_49);
						}
						goto LA44_;
LA48_: ;
						{
							(*my_p0).err = ((tyEnum_JsonError__nbpBoeCdF9a80tMzQEhCoZQ)1);
							goto LA5;
						}
LA44_: ;
					}
LA36_: ;
					{
						NI length_1;
						NI TM__nIinruGrC8EPIfjL3PuTvA_50;
						if (!(*my_p0).rawStringLiterals) goto LA53_;
						if (nimSubInt(pos_1, pos2_1, &TM__nIinruGrC8EPIfjL3PuTvA_50)) { raiseOverflow(); goto BeforeRet_;
						};
						length_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_50);
						{
							NI i_1;
							NI res_1;
							i_1 = (NI)0;
							res_1 = ((NI)1);
							{
								while (1) {
									NI TM__nIinruGrC8EPIfjL3PuTvA_52;
									if (!(res_1 <= length_1)) goto LA57;
									i_1 = ((NI) (res_1));
									{
										NI TM__nIinruGrC8EPIfjL3PuTvA_51;
										if (pos2_1 < 0 || pos2_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos2_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
										}
										if (!(((NU8)((*my_p0).Sup.buf.p->data[pos2_1])) >= ((NU8)(48)) && ((NU8)((*my_p0).Sup.buf.p->data[pos2_1])) <= ((NU8)(57)) || ((NU8)((*my_p0).Sup.buf.p->data[pos2_1])) >= ((NU8)(65)) && ((NU8)((*my_p0).Sup.buf.p->data[pos2_1])) <= ((NU8)(70)) || ((NU8)((*my_p0).Sup.buf.p->data[pos2_1])) >= ((NU8)(97)) && ((NU8)((*my_p0).Sup.buf.p->data[pos2_1])) <= ((NU8)(102)))) goto LA60_;
										if (pos2_1 < 0 || pos2_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos2_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
										}
										nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos2_1]);
										if (nimAddInt(pos2_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_51)) { raiseOverflow(); goto BeforeRet_;
										};
										pos2_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_51);
									}
									goto LA58_;
LA60_: ;
									{
										goto LA55;
									}
LA58_: ;
									if (nimAddInt(res_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_52)) { raiseOverflow(); goto BeforeRet_;
									};
									res_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_52);
								} LA57: ;
							}
						} LA55: ;
					}
					goto LA51_;
LA53_: ;
					{
						NimStringV2 colontmpD_;
						colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
						if ((r_1) < ((NI32)(-2147483647 -1)) || (r_1) > ((NI32)2147483647)){ raiseRangeErrorI(r_1, ((NI32)(-2147483647 -1)), ((NI32)2147483647)); goto BeforeRet_;
						}
						colontmpD_ = nuctoUTF8(((NI32) (r_1)));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						prepareAdd((&(*my_p0).a), colontmpD_.len + 0);
appendString((&(*my_p0).a), colontmpD_);
						if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared(colontmpD_.p);
}
					}
LA51_: ;
				}
				break;
				default:
				{
					NI TM__nIinruGrC8EPIfjL3PuTvA_53;
					if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
					}
					nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
					if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_53)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_53);
				}
				break;
				}
			}
			break;
			case 13:
			{
				pos_1 = handleCR__pureZlexbase_u91(&my_p0->Sup, pos_1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				nimAddCharV1((&(*my_p0).a), 13);
			}
			break;
			case 10:
			{
				pos_1 = handleLF__pureZlexbase_u105(&my_p0->Sup, pos_1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				nimAddCharV1((&(*my_p0).a), 10);
			}
			break;
			default:
			{
				NI TM__nIinruGrC8EPIfjL3PuTvA_54;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_54)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_54);
			}
			break;
			}
		}
	} LA5: ;
	(*my_p0).Sup.bufpos = pos_1;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, parseName__pureZparsejson_u617)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	NI pos_1;
{	pos_1 = (*my_p0).Sup.bufpos;
	{
		if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
		}
		if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(97)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(122)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(65)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(90)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) == ((NU8)(95)))) goto LA3_;
		{
			while (1) {
				NI TM__nIinruGrC8EPIfjL3PuTvA_61;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				if (!(((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(97)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(122)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(65)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(90)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) >= ((NU8)(48)) && ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) <= ((NU8)(57)) || ((NU8)((*my_p0).Sup.buf.p->data[pos_1])) == ((NU8)(95)))) goto LA6;
				if (pos_1 < 0 || pos_1 >= (*my_p0).Sup.buf.len){ raiseIndexError2(pos_1,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
				}
				nimAddCharV1((&(*my_p0).a), (*my_p0).Sup.buf.p->data[pos_1]);
				if (nimAddInt(pos_1, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_61)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_61);
			} LA6: ;
		}
	}
LA3_: ;
	(*my_p0).Sup.bufpos = pos_1;
	}BeforeRet_: ;
}
static N_INLINE(int, nimCmpMem)(void* a_p0, void* b_p1, NI size_p2) {
	int result;
	result = memcmp(a_p0, b_p1, ((size_t) (size_p2)));
	return result;
}
static N_INLINE(NIM_BOOL, equalMem__system_u1763)(void* a_p0, void* b_p1, NI size_p2) {
	NIM_BOOL result;
	int T1_;
	T1_ = (int)0;
	T1_ = nimCmpMem(a_p0, b_p1, size_p2);
	result = (T1_ == ((NI32)0));
	return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a_p0, NimStringV2 b_p1) {
	NIM_BOOL result;
	NI alen_1;
	NI blen_1;
{	result = NIM_FALSE;
	alen_1 = a_p0.len;
	blen_1 = b_p1.len;
	{
		if (!(alen_1 == blen_1)) goto LA3_;
		{
			if (!(alen_1 == ((NI)0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
LA7_: ;
		result = equalMem__system_u1763(((void*) ((&a_p0.p->data[((NI)0)]))), ((void*) ((&b_p1.p->data[((NI)0)]))), (alen_1));
		goto BeforeRet_;
	}
LA3_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA, getTok__pureZparsejson_u633)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)0;
	setLengthStrV2((&(*my_p0).a), ((NI)0));
	skip__pureZparsejson_u516(my_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	if ((*my_p0).Sup.bufpos < 0 || (*my_p0).Sup.bufpos >= (*my_p0).Sup.buf.len){ raiseIndexError2((*my_p0).Sup.bufpos,(*my_p0).Sup.buf.len-1); goto BeforeRet_;
	}
	switch (((NU8)((*my_p0).Sup.buf.p->data[(*my_p0).Sup.bufpos]))) {
	case 45:
	case 46:
	case 48 ... 57:
	{
		parseNumber__pureZparsejson_u554(my_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		{
			NIM_BOOL T4_;
			T4_ = (NIM_BOOL)0;
			T4_ = contains__pureZstrutils_u1904((*my_p0).a, TM__nIinruGrC8EPIfjL3PuTvA_25);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			if (!T4_) goto LA5_;
			result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)4);
		}
		goto LA2_;
LA5_: ;
		{
			result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)3);
		}
LA2_: ;
	}
	break;
	case 34:
	{
		result = parseString__pureZparsejson_u392(my_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case 91:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_55;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_55)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_55);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)10);
	}
	break;
	case 123:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_56;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_56)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_56);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)8);
	}
	break;
	case 93:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_57;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_57)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_57);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)11);
	}
	break;
	case 125:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_58;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_58)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_58);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)9);
	}
	break;
	case 44:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_59;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_59)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_59);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)13);
	}
	break;
	case 58:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_60;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_60)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_60);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)12);
	}
	break;
	case 0:
	{
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)1);
	}
	break;
	case 97 ... 122:
	case 65 ... 90:
	case 95:
	{
		parseName__pureZparsejson_u617(my_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (eqStrings((*my_p0).a, TM__nIinruGrC8EPIfjL3PuTvA_63)) goto LA17_;
		if (eqStrings((*my_p0).a, TM__nIinruGrC8EPIfjL3PuTvA_65)) goto LA18_;
		if (eqStrings((*my_p0).a, TM__nIinruGrC8EPIfjL3PuTvA_67)) goto LA19_;
		goto LA20_;
		LA17_: ;
		{
			result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)7);
		}
		goto LA21_;
		LA18_: ;
		{
			result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)5);
		}
		goto LA21_;
		LA19_: ;
		{
			result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)6);
		}
		goto LA21_;
		LA20_: ;
		{
			result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)0);
		}
LA21_: ;
	}
	break;
	default:
	{
		NI TM__nIinruGrC8EPIfjL3PuTvA_68;
		if (nimAddInt((*my_p0).Sup.bufpos, ((NI)1), &TM__nIinruGrC8EPIfjL3PuTvA_68)) { raiseOverflow(); goto BeforeRet_;
		};
		(*my_p0).Sup.bufpos = (NI)(TM__nIinruGrC8EPIfjL3PuTvA_68);
		result = ((tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)0);
	}
	break;
	}
	(*my_p0).tok = result;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZparsejson_u834)(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ* dest_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.Sup.Sup.up);
		if (!T3_) goto LA4_;
		nimDestroyAndDispose((*dest_p0).Sup.Sup.Sup.up);
	}
LA4_: ;
	eqdestroy___system_u3757((*dest_p0).Sup.Sup.Sup.trace);
	if ((*dest_p0).Sup.Sup.Sup.message.p && !((*dest_p0).Sup.Sup.Sup.message.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared((*dest_p0).Sup.Sup.Sup.message.p);
}
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.Sup.Sup.parent);
		if (!T8_) goto LA9_;
		nimDestroyAndDispose((*dest_p0).Sup.Sup.Sup.parent);
	}
LA9_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__pureZparsejson_u990)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	eqdestroy___pureZparsejson_u834(((tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ*) (dest_p0)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___pureZparsejson_u846)(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ* dest_p0, void* env_p1) {
	nimTraceRefDyn(&(*dest_p0).Sup.Sup.Sup.parent, env_p1);
	nimTraceRefDyn(&(*dest_p0).Sup.Sup.Sup.up, env_p1);
}
static N_INLINE(NI, getLine__pureZparsejson_u356)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	NI result;
	result = (*my_p0).Sup.lineNumber;
	return result;
}
static N_INLINE(NI, getColumn__pureZparsejson_u353)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	result = getColNumber__pureZlexbase_u163((&(*my_p0).Sup), (*my_p0).Sup.bufpos);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringV2, errorMsgExpected__pureZparsejson_u374)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* my_p0, NimStringV2 e_p1) {
	NimStringV2 result;
	NimStringV2 colontmpD_;
	NimStringV2 colontmpD__2;
	NimStringV2 colontmpD__3;
	tyArray__Seu7uK9aaOSN0BK3EAjjSHw T2_;
	NI T3_;
	NI T4_;
	NimStringV2 T5_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result.len = 0; result.p = NIM_NIL;
	colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
	colontmpD__2.len = 0; colontmpD__2.p = NIM_NIL;
	colontmpD__3.len = 0; colontmpD__3.p = NIM_NIL;
	T2_[0] = (*my_p0).filename;
	T3_ = (NI)0;
	T3_ = getLine__pureZparsejson_u356(my_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	colontmpD_ = dollar___systemZdollars_u14(T3_);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	T2_[1] = colontmpD_;
	T4_ = (NI)0;
	T4_ = getColumn__pureZparsejson_u353(my_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	colontmpD__2 = dollar___systemZdollars_u14(T4_);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	T2_[2] = colontmpD__2;
	T5_.len = 0; T5_.p = NIM_NIL;
	T5_ = rawNewString(e_p1.len + 9);
appendString((&T5_), e_p1);
appendString((&T5_), TM__nIinruGrC8EPIfjL3PuTvA_73);
	colontmpD__3 = T5_;
	T2_[3] = colontmpD__3;
	result = nsuFormatOpenArray(TM__nIinruGrC8EPIfjL3PuTvA_71, T2_, 4);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		LA1_:;
	}
	{
		if (colontmpD__3.p && !(colontmpD__3.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared(colontmpD__3.p);
}
		if (colontmpD__2.p && !(colontmpD__2.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared(colontmpD__2.p);
}
		if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared(colontmpD_.p);
}
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NOINLINE(void, raiseParseErr__pureZparsejson_u827)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* p_p0, NimStringV2 msg_p1) {
	tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ* T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	T1_ = NIM_NIL;
	T1_ = (tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ*) nimNewObj(sizeof(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ), NIM_ALIGNOF(tyObject_JsonParsingError__Yhh6VFCOGeOxhKuEbQeKHQ));
	(*T1_).Sup.Sup.Sup.Sup.m_type = (&NTIv2__Yhh6VFCOGeOxhKuEbQeKHQ_);
	(*T1_).Sup.Sup.Sup.name = "JsonParsingError";
	(*T1_).Sup.Sup.Sup.message = errorMsgExpected__pureZparsejson_u374(p_p0, msg_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	(*T1_).Sup.Sup.Sup.parent = ((Exception*) NIM_NIL);
	raiseExceptionEx((Exception*)T1_, "JsonParsingError", "raiseParseErr", "parsejson.nim", 518);
goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eat__pureZparsejson_u892)(tyObject_JsonParser__36wI9cyxoyt1Pvn8bP6kcpw* p_p0, tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA tok_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	{
		tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA T5_;
		if (!((*p_p0).tok == tok_p1)) goto LA3_;
		T5_ = (tyEnum_TokKind__P5IOiLAOhO6n9aY9b9ae0i5dA)0;
		T5_ = getTok__pureZparsejson_u633(p_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		(void)(T5_);
	}
	goto LA1_;
LA3_: ;
	{
		raiseParseErr__pureZparsejson_u827((&(*p_p0)), tokToStr__pureZparsejson_u78[(tok_p1)- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA1_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZjson_u5826)(tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q* dest_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.Sup.Sup.up);
		if (!T3_) goto LA4_;
		nimDestroyAndDispose((*dest_p0).Sup.Sup.Sup.up);
	}
LA4_: ;
	eqdestroy___system_u3757((*dest_p0).Sup.Sup.Sup.trace);
	if ((*dest_p0).Sup.Sup.Sup.message.p && !((*dest_p0).Sup.Sup.Sup.message.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared((*dest_p0).Sup.Sup.Sup.message.p);
}
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.Sup.Sup.parent);
		if (!T8_) goto LA9_;
		nimDestroyAndDispose((*dest_p0).Sup.Sup.Sup.parent);
	}
LA9_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__pureZparsejson_u995)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	eqdestroy___pureZjson_u5826(((tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q*) (dest_p0)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___pureZjson_u5838)(tyObject_JsonKindError__2PC87p2TBc9apRjznv9cEE0Q* dest_p0, void* env_p1) {
	nimTraceRefDyn(&(*dest_p0).Sup.Sup.Sup.parent, env_p1);
	nimTraceRefDyn(&(*dest_p0).Sup.Sup.Sup.up, env_p1);
}
