/* Generated by Nim Compiler v1.6.10 */
#define NIM_INTBITS 64

#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
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_BuildCache__XHJLjuVXhiJ46Ktee6XNog tyObject_BuildCache__XHJLjuVXhiJ46Ktee6XNog;
typedef struct tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q;
typedef struct tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw;
typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
typedef struct tyTuple__jq7X5k7hWG0tdTZTDkiyGQ tyTuple__jq7X5k7hWG0tdTZTDkiyGQ;
typedef struct tyObject_OrderedTable__ZZvSdVkA2s2sIyifu4cpkg tyObject_OrderedTable__ZZvSdVkA2s2sIyifu4cpkg;
typedef struct tySequence__MlAD6nAPq9bHKla9cWiIZP0g tySequence__MlAD6nAPq9bHKla9cWiIZP0g;
typedef struct tySequence__oLpBKXzW3hF9aCVMo5EymfQ tySequence__oLpBKXzW3hF9aCVMo5EymfQ;
typedef struct tySequence__4eQHGndY6XBYpFOH09apV8Q tySequence__4eQHGndY6XBYpFOH09apV8Q;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tyTuple__d8cOxWret6fRDupvUsyoyw tyTuple__d8cOxWret6fRDupvUsyoyw;
typedef struct tyTuple__UV3llMMYFckfui8YMBuUZA tyTuple__UV3llMMYFckfui8YMBuUZA;
typedef struct tyTuple__awOivLjlO76sGdHY7nQUjQ tyTuple__awOivLjlO76sGdHY7nQUjQ;
typedef struct tyTuple__YOdO3R1J4biIW9bY9agwbAQw tyTuple__YOdO3R1J4biIW9bY9agwbAQw;
typedef struct tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
struct tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ {
NIM_BOOL allowExtraKeys;
NIM_BOOL allowMissingKeys;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
Exception* up;
};
struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
  Exception Sup;
};
struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw {
  tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
struct tyTuple__jq7X5k7hWG0tdTZTDkiyGQ {
NimStringDesc* Field0;
tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* Field1;
};
typedef NU8 tyEnum_JsonNodeKind__RUngo7nCHe6O8aBGIcrhtg;
struct tyObject_OrderedTable__ZZvSdVkA2s2sIyifu4cpkg {
tySequence__MlAD6nAPq9bHKla9cWiIZP0g* data;
NI counter;
NI first;
NI last;
};
struct tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q {
NIM_BOOL isUnquoted;
tyEnum_JsonNodeKind__RUngo7nCHe6O8aBGIcrhtg kind;
union{
struct {NimStringDesc* str;
} _kind_1;
struct {NI64 num;
} _kind_2;
struct {NF fnum;
} _kind_3;
struct {NIM_BOOL bval;
} _kind_4;
struct {tyObject_OrderedTable__ZZvSdVkA2s2sIyifu4cpkg fields;
} _kind_6;
struct {tySequence__oLpBKXzW3hF9aCVMo5EymfQ* elems;
} _kind_7;
};
};
struct tyObject_BuildCache__XHJLjuVXhiJ46Ktee6XNog {
NimStringDesc* cacheVersion;
NimStringDesc* outputFile;
tySequence__4eQHGndY6XBYpFOH09apV8Q* compile;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* link;
NimStringDesc* linkcmd;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* extraCmds;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* configFiles;
NIM_BOOL stdinInput;
NIM_BOOL projectIsCmd;
NimStringDesc* cmdInput;
NimStringDesc* currentDir;
NimStringDesc* cmdline;
tySequence__4eQHGndY6XBYpFOH09apV8Q* depfiles;
NimStringDesc* nimexe;
};
struct tyTuple__d8cOxWret6fRDupvUsyoyw {
NimStringDesc* Field0;
NimStringDesc* Field1;
tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* Field2;
};
struct tyTuple__UV3llMMYFckfui8YMBuUZA {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct tyTuple__awOivLjlO76sGdHY7nQUjQ {
NI Field0;
NI Field1;
NimStringDesc* Field2;
tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* Field3;
};
struct tyTuple__YOdO3R1J4biIW9bY9agwbAQw {
NI Field0;
NI Field1;
NI Field2;
NimStringDesc* Field3;
tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* Field4;
};
typedef NU8 tyEnum_EnumMode__VBQLiQclXYpinosAjWkfrg;
typedef NU8 tyEnum_JsonNodeMode__UTXRaEPTjXpNdVaD9bbN0bQ;
struct tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ {
tyEnum_EnumMode__VBQLiQclXYpinosAjWkfrg enumMode;
tyEnum_JsonNodeMode__UTXRaEPTjXpNdVaD9bbN0bQ jsonNodeMode;
};
struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct tySequence__4eQHGndY6XBYpFOH09apV8Q {
  TGenericSeq Sup;
  tyTuple__UV3llMMYFckfui8YMBuUZA data[SEQ_DECL_SIZE];
};
struct tySequence__oLpBKXzW3hF9aCVMo5EymfQ {
  TGenericSeq Sup;
  tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* data[SEQ_DECL_SIZE];
};
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tySequence__uB9b75OUPRENsBAu4AnoePA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
struct tySequence__MlAD6nAPq9bHKla9cWiIZP0g {
  TGenericSeq Sup;
  tyTuple__awOivLjlO76sGdHY7nQUjQ data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___pureZjson_2054)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b);
N_LIB_PRIVATE N_NOINLINE(void, raiseJsonException__stdZjsonutils_168)(NimStringDesc* condStr, NimStringDesc* msg);
N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__system_5309)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5271)(void* usr);
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
static N_INLINE(void, decRef__system_5316)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__system_5314)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5265)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___stdZjsonutils_407)(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ x);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasKey__pureZjson_3162)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node, NimStringDesc* key);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__stdZjsonutils_566)(NimStringDesc** a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, to__stdZjsonutils_581)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
static N_INLINE(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, X5BX5D___pureZjson_3053)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q**, X5BX5D___pureZjson_2648)(tyObject_OrderedTable__ZZvSdVkA2s2sIyifu4cpkg* t, NimStringDesc* key);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___stdZjsonutils_504)(tyTuple__d8cOxWret6fRDupvUsyoyw x);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_1962)(tySequence__4eQHGndY6XBYpFOH09apV8Q** a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt);
N_LIB_PRIVATE N_NIMCALL(NI, len__pureZjson_2999)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* n);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(tySequence__oLpBKXzW3hF9aCVMo5EymfQ*, getElems__pureZjson_217)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* n, tySequence__oLpBKXzW3hF9aCVMo5EymfQ* default_0);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2014)(tyTuple__UV3llMMYFckfui8YMBuUZA* a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt);
static N_INLINE(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, X5BX5D___pureZjson_3128)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node, NI index);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___extccomp_2068)(tyTuple__awOivLjlO76sGdHY7nQUjQ* x);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2150)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ** a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt);
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2270)(NIM_BOOL* a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, to__extccomp_2281)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___extccomp_2439)(tyTuple__YOdO3R1J4biIW9bY9agwbAQw* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, newJObject__pureZjson_102)(void);
static N_INLINE(void, X5BX5Deq___pureZjson_1933)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* obj, NimStringDesc* key, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* val);
N_LIB_PRIVATE N_NIMCALL(void, X5BX5Deq___pureZjson_297)(tyObject_OrderedTable__ZZvSdVkA2s2sIyifu4cpkg* t, NimStringDesc* key, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* val);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__stdZjsonutils_603)(NimStringDesc* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, percent___pureZjson_1800)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1706)(tySequence__4eQHGndY6XBYpFOH09apV8Q* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, newJArray__pureZjson_133)(void);
N_LIB_PRIVATE N_NIMCALL(void, add__pureZjson_232)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* father, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* child);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1734)(tyTuple__UV3llMMYFckfui8YMBuUZA a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1755)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1783)(NIM_BOOL a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt);
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, percent___pureZjson_1826)(NIM_BOOL b);
extern TNimType NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_;
extern TNimType NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_2, " failed: ", 9);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_3, "\012not (b == nil)", 15);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_4, "BuildCache", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_5, "b.kind == JObject", 17);
extern TNimType NTIjsonnodekind__RUngo7nCHe6O8aBGIcrhtg_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_6, "cacheVersion", 12);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_7, "string", 6);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_8, "false", 5);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_9, "outputFile", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_10, "compile", 7);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_11, "seq[(string, string)]", 21);
extern TNimType NTIseqLtupleLkey58string_value58stringTT__4eQHGndY6XBYpFOH09apV8Q_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_12, "(string, string)", 16);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_13, "b.kind == JArray", 16);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_14, "b.len == i", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_15, "link", 4);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_16, "seq[string]", 11);
extern TNimType NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_;
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_17, "linkcmd", 7);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_18, "extraCmds", 9);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_19, "configFiles", 11);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_20, "stdinInput", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_21, "bool", 4);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_22, "projectIsCmd", 12);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_23, "cmdInput", 8);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_24, "currentDir", 10);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_25, "cmdline", 7);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_26, "depfiles", 8);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_27, "nimexe", 6);
STRING_LITERAL(TM__D9aPSI6l3gZsoFvdx9c3FKBg_28, "ok`gensym14", 11);
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5218;
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(void, incRef__system_5309)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
}
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5271)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	return result;
}
static N_INLINE(void, rtlAddZCT__system_5314)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT__system_5265((&gch__system_5218.zct), c);
}
static N_INLINE(void, decRef__system_5316)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__system_5314(c);
	}
	LA4_: ;
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__system_5271(src);
		incRef__system_5309(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__system_5271((*dest));
		decRef__system_5316(T10_);
	}
	LA8_: ;
	(*dest) = src;
}
N_LIB_PRIVATE N_NOINLINE(void, raiseJsonException__stdZjsonutils_168)(NimStringDesc* condStr, NimStringDesc* msg) {
	tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw* T1_;
	NimStringDesc* T2_;
	T1_ = NIM_NIL;
	T1_ = (tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*) newObj((&NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_), sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw));
	(*T1_).Sup.Sup.Sup.m_type = (&NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_);
	(*T1_).Sup.Sup.name = "ValueError";
	T2_ = NIM_NIL;
	T2_ = rawNewString((condStr ? condStr->Sup.len : 0) + (msg ? msg->Sup.len : 0) + 9);
appendString(T2_, condStr);
appendString(T2_, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_2));
appendString(T2_, msg);
	asgnRef((void**) (&(*T1_).Sup.Sup.message), T2_);
	asgnRef((void**) (&(*T1_).Sup.Sup.parent), ((Exception*) NIM_NIL));
	raiseExceptionEx((Exception*)T1_, "ValueError", "raiseJsonException", "jsonutils.nim", 134);
}
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__systemZmemory_7(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__stdZjsonutils_566)(NimStringDesc** a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt) {
	{
		NIM_BOOL T3_;
		tyTuple__jq7X5k7hWG0tdTZTDkiyGQ T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2054(b, ((tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_7));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_407(T6_);
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	unsureAsgnRef((void**) (&(*a)), to__stdZjsonutils_581(b));
}
static N_INLINE(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, X5BX5D___pureZjson_3053)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node, NimStringDesc* name) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q** T1_;
	result = NIM_NIL;
	T1_ = (tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q**)0;
	T1_ = X5BX5D___pureZjson_2648((&(*node)._kind_6.fields), name);
	result = (*T1_);
	return result;
}
static N_INLINE(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, X5BX5D___pureZjson_3128)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* node, NI index) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
{	result = NIM_NIL;
	result = (*node)._kind_7.elems->data[index];
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2014)(tyTuple__UV3llMMYFckfui8YMBuUZA* a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt) {
	NI i;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T12_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T13_;
	{
		NIM_BOOL T3_;
		tyTuple__jq7X5k7hWG0tdTZTDkiyGQ T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2054(b, ((tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_12));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_407(T6_);
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	{
		if (!!(((*b).kind == ((tyEnum_JsonNodeKind__RUngo7nCHe6O8aBGIcrhtg) 6)))) goto LA10_;
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_13), reprEnum((NI)(*b).kind, (&NTIjsonnodekind__RUngo7nCHe6O8aBGIcrhtg_)));
	}
	LA10_: ;
	i = ((NI) 0);
	T12_ = NIM_NIL;
	T12_ = X5BX5D___pureZjson_3128(b, i);
	fromJson__stdZjsonutils_566((&(*a).Field0), T12_, opt);
	i += ((NI) 1);
	T13_ = NIM_NIL;
	T13_ = X5BX5D___pureZjson_3128(b, i);
	fromJson__stdZjsonutils_566((&(*a).Field1), T13_, opt);
	i += ((NI) 1);
	{
		NI T16_;
		tyTuple__awOivLjlO76sGdHY7nQUjQ T19_;
		NimStringDesc* T20_;
		T16_ = (NI)0;
		T16_ = len__pureZjson_2999(b);
		if (!!((T16_ == i))) goto LA17_;
		nimZeroMem((void*)(&T19_), sizeof(tyTuple__awOivLjlO76sGdHY7nQUjQ));
		T19_.Field0 = len__pureZjson_2999(b);
		T19_.Field1 = i;
		T19_.Field2 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_12));
		T19_.Field3 = b;
		T20_ = NIM_NIL;
		T20_ = dollar___extccomp_2068((&T19_));
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_14), T20_);
	}
	LA17_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_1962)(tySequence__4eQHGndY6XBYpFOH09apV8Q** a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt) {
	NI T8_;
	{
		NIM_BOOL T3_;
		tyTuple__jq7X5k7hWG0tdTZTDkiyGQ T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2054(b, ((tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_11));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_407(T6_);
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	T8_ = (NI)0;
	T8_ = len__pureZjson_2999(b);
	unsureAsgnRef((void**) (&(*a)), (tySequence__4eQHGndY6XBYpFOH09apV8Q*) setLengthSeqV2(&((*a))->Sup, (&NTIseqLtupleLkey58string_value58stringTT__4eQHGndY6XBYpFOH09apV8Q_), ((NI) (T8_))));
	{
		NI i;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* val;
		tySequence__oLpBKXzW3hF9aCVMo5EymfQ* colontmp_;
		tySequence__oLpBKXzW3hF9aCVMo5EymfQ* T10_;
		NI i_2;
		NI L;
		NI T11_;
		i = (NI)0;
		val = NIM_NIL;
		colontmp_ = NIM_NIL;
		T10_ = NIM_NIL;
		T10_ = NIM_NIL;
		colontmp_ = getElems__pureZjson_217(b, T10_);
		i_2 = ((NI) 0);
		T11_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T11_;
		{
			while (1) {
				if (!(i_2 < L)) goto LA13;
				i = i_2;
				val = colontmp_->data[i_2];
				fromJson__extccomp_2014((&(*a)->data[i]), val, opt);
				i_2 += ((NI) 1);
			} LA13: ;
		}
	}
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2150)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ** a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt) {
	NI T8_;
	{
		NIM_BOOL T3_;
		tyTuple__jq7X5k7hWG0tdTZTDkiyGQ T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2054(b, ((tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_16));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_407(T6_);
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	T8_ = (NI)0;
	T8_ = len__pureZjson_2999(b);
	unsureAsgnRef((void**) (&(*a)), (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) setLengthSeqV2(&((*a))->Sup, (&NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_), ((NI) (T8_))));
	{
		NI i;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* val;
		tySequence__oLpBKXzW3hF9aCVMo5EymfQ* colontmp_;
		tySequence__oLpBKXzW3hF9aCVMo5EymfQ* T10_;
		NI i_2;
		NI L;
		NI T11_;
		i = (NI)0;
		val = NIM_NIL;
		colontmp_ = NIM_NIL;
		T10_ = NIM_NIL;
		T10_ = NIM_NIL;
		colontmp_ = getElems__pureZjson_217(b, T10_);
		i_2 = ((NI) 0);
		T11_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T11_;
		{
			while (1) {
				if (!(i_2 < L)) goto LA13;
				i = i_2;
				val = colontmp_->data[i_2];
				fromJson__stdZjsonutils_566((&(*a)->data[i]), val, opt);
				i_2 += ((NI) 1);
			} LA13: ;
		}
	}
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_2270)(NIM_BOOL* a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt) {
	{
		NIM_BOOL T3_;
		tyTuple__jq7X5k7hWG0tdTZTDkiyGQ T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2054(b, ((tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_21));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_407(T6_);
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	(*a) = to__extccomp_2281(b);
}
N_LIB_PRIVATE N_NIMCALL(void, fromJson__extccomp_1848)(tyObject_BuildCache__XHJLjuVXhiJ46Ktee6XNog* a, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* b, tyObject_Joptions__LkVLf5IMKBOgl3HJApAzgQ opt) {
	NI numX60gensym14_;
	NI numMatchedX60gensym14_;
	NIM_BOOL okX60gensym14_;
	{
		NIM_BOOL T3_;
		tyTuple__jq7X5k7hWG0tdTZTDkiyGQ T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___pureZjson_2054(b, ((tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*) NIM_NIL));
		if (!!(!(T3_))) goto LA4_;
		nimZeroMem((void*)(&T6_), sizeof(tyTuple__jq7X5k7hWG0tdTZTDkiyGQ));
		T6_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
		T6_.Field1 = b;
		T7_ = NIM_NIL;
		T7_ = dollar___stdZjsonutils_407(T6_);
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_3), T7_);
	}
	LA4_: ;
	{
		if (!!(((*b).kind == ((tyEnum_JsonNodeKind__RUngo7nCHe6O8aBGIcrhtg) 5)))) goto LA10_;
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_5), reprEnum((NI)(*b).kind, (&NTIjsonnodekind__RUngo7nCHe6O8aBGIcrhtg_)));
	}
	LA10_: ;
	numX60gensym14_ = ((NI) 0);
	numMatchedX60gensym14_ = ((NI) 0);
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T14_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T17_;
		T14_ = (NIM_BOOL)0;
		T14_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6));
		if (!T14_) goto LA15_;
		numMatchedX60gensym14_ += ((NI) 1);
		T17_ = NIM_NIL;
		T17_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6));
		fromJson__stdZjsonutils_566((&(*a).cacheVersion), T17_, opt);
	}
	goto LA12_;
	LA15_: ;
	{
		if (!opt.allowMissingKeys) goto LA19_;
	}
	goto LA12_;
	LA19_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T26_;
			NimStringDesc* T27_;
			if (!NIM_TRUE) goto LA24_;
			nimZeroMem((void*)(&T26_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T26_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T26_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6));
			T26_.Field2 = b;
			T27_ = NIM_NIL;
			T27_ = dollar___stdZjsonutils_504(T26_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T27_);
		}
		LA24_: ;
	}
	LA12_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T30_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T33_;
		T30_ = (NIM_BOOL)0;
		T30_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9));
		if (!T30_) goto LA31_;
		numMatchedX60gensym14_ += ((NI) 1);
		T33_ = NIM_NIL;
		T33_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9));
		fromJson__stdZjsonutils_566((&(*a).outputFile), T33_, opt);
	}
	goto LA28_;
	LA31_: ;
	{
		if (!opt.allowMissingKeys) goto LA35_;
	}
	goto LA28_;
	LA35_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T42_;
			NimStringDesc* T43_;
			if (!NIM_TRUE) goto LA40_;
			nimZeroMem((void*)(&T42_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T42_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T42_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9));
			T42_.Field2 = b;
			T43_ = NIM_NIL;
			T43_ = dollar___stdZjsonutils_504(T42_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T43_);
		}
		LA40_: ;
	}
	LA28_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T46_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T49_;
		T46_ = (NIM_BOOL)0;
		T46_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10));
		if (!T46_) goto LA47_;
		numMatchedX60gensym14_ += ((NI) 1);
		T49_ = NIM_NIL;
		T49_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10));
		fromJson__extccomp_1962((&(*a).compile), T49_, opt);
	}
	goto LA44_;
	LA47_: ;
	{
		if (!opt.allowMissingKeys) goto LA51_;
	}
	goto LA44_;
	LA51_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T58_;
			NimStringDesc* T59_;
			if (!NIM_TRUE) goto LA56_;
			nimZeroMem((void*)(&T58_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T58_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T58_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10));
			T58_.Field2 = b;
			T59_ = NIM_NIL;
			T59_ = dollar___stdZjsonutils_504(T58_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T59_);
		}
		LA56_: ;
	}
	LA44_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T62_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T65_;
		T62_ = (NIM_BOOL)0;
		T62_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15));
		if (!T62_) goto LA63_;
		numMatchedX60gensym14_ += ((NI) 1);
		T65_ = NIM_NIL;
		T65_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15));
		fromJson__extccomp_2150((&(*a).link), T65_, opt);
	}
	goto LA60_;
	LA63_: ;
	{
		if (!opt.allowMissingKeys) goto LA67_;
	}
	goto LA60_;
	LA67_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T74_;
			NimStringDesc* T75_;
			if (!NIM_TRUE) goto LA72_;
			nimZeroMem((void*)(&T74_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T74_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T74_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15));
			T74_.Field2 = b;
			T75_ = NIM_NIL;
			T75_ = dollar___stdZjsonutils_504(T74_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T75_);
		}
		LA72_: ;
	}
	LA60_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T78_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T81_;
		T78_ = (NIM_BOOL)0;
		T78_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17));
		if (!T78_) goto LA79_;
		numMatchedX60gensym14_ += ((NI) 1);
		T81_ = NIM_NIL;
		T81_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17));
		fromJson__stdZjsonutils_566((&(*a).linkcmd), T81_, opt);
	}
	goto LA76_;
	LA79_: ;
	{
		if (!opt.allowMissingKeys) goto LA83_;
	}
	goto LA76_;
	LA83_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T90_;
			NimStringDesc* T91_;
			if (!NIM_TRUE) goto LA88_;
			nimZeroMem((void*)(&T90_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T90_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T90_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17));
			T90_.Field2 = b;
			T91_ = NIM_NIL;
			T91_ = dollar___stdZjsonutils_504(T90_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T91_);
		}
		LA88_: ;
	}
	LA76_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T94_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T97_;
		T94_ = (NIM_BOOL)0;
		T94_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18));
		if (!T94_) goto LA95_;
		numMatchedX60gensym14_ += ((NI) 1);
		T97_ = NIM_NIL;
		T97_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18));
		fromJson__extccomp_2150((&(*a).extraCmds), T97_, opt);
	}
	goto LA92_;
	LA95_: ;
	{
		if (!opt.allowMissingKeys) goto LA99_;
	}
	goto LA92_;
	LA99_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T106_;
			NimStringDesc* T107_;
			if (!NIM_TRUE) goto LA104_;
			nimZeroMem((void*)(&T106_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T106_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T106_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18));
			T106_.Field2 = b;
			T107_ = NIM_NIL;
			T107_ = dollar___stdZjsonutils_504(T106_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T107_);
		}
		LA104_: ;
	}
	LA92_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T110_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T113_;
		T110_ = (NIM_BOOL)0;
		T110_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19));
		if (!T110_) goto LA111_;
		numMatchedX60gensym14_ += ((NI) 1);
		T113_ = NIM_NIL;
		T113_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19));
		fromJson__extccomp_2150((&(*a).configFiles), T113_, opt);
	}
	goto LA108_;
	LA111_: ;
	{
		if (!opt.allowMissingKeys) goto LA115_;
	}
	goto LA108_;
	LA115_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T122_;
			NimStringDesc* T123_;
			if (!NIM_TRUE) goto LA120_;
			nimZeroMem((void*)(&T122_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T122_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T122_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19));
			T122_.Field2 = b;
			T123_ = NIM_NIL;
			T123_ = dollar___stdZjsonutils_504(T122_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T123_);
		}
		LA120_: ;
	}
	LA108_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T126_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T129_;
		T126_ = (NIM_BOOL)0;
		T126_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20));
		if (!T126_) goto LA127_;
		numMatchedX60gensym14_ += ((NI) 1);
		T129_ = NIM_NIL;
		T129_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20));
		fromJson__extccomp_2270((&(*a).stdinInput), T129_, opt);
	}
	goto LA124_;
	LA127_: ;
	{
		if (!opt.allowMissingKeys) goto LA131_;
	}
	goto LA124_;
	LA131_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T138_;
			NimStringDesc* T139_;
			if (!NIM_TRUE) goto LA136_;
			nimZeroMem((void*)(&T138_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T138_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T138_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20));
			T138_.Field2 = b;
			T139_ = NIM_NIL;
			T139_ = dollar___stdZjsonutils_504(T138_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T139_);
		}
		LA136_: ;
	}
	LA124_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T142_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T145_;
		T142_ = (NIM_BOOL)0;
		T142_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22));
		if (!T142_) goto LA143_;
		numMatchedX60gensym14_ += ((NI) 1);
		T145_ = NIM_NIL;
		T145_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22));
		fromJson__extccomp_2270((&(*a).projectIsCmd), T145_, opt);
	}
	goto LA140_;
	LA143_: ;
	{
		if (!opt.allowMissingKeys) goto LA147_;
	}
	goto LA140_;
	LA147_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T154_;
			NimStringDesc* T155_;
			if (!NIM_TRUE) goto LA152_;
			nimZeroMem((void*)(&T154_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T154_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T154_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22));
			T154_.Field2 = b;
			T155_ = NIM_NIL;
			T155_ = dollar___stdZjsonutils_504(T154_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T155_);
		}
		LA152_: ;
	}
	LA140_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T158_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T161_;
		T158_ = (NIM_BOOL)0;
		T158_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23));
		if (!T158_) goto LA159_;
		numMatchedX60gensym14_ += ((NI) 1);
		T161_ = NIM_NIL;
		T161_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23));
		fromJson__stdZjsonutils_566((&(*a).cmdInput), T161_, opt);
	}
	goto LA156_;
	LA159_: ;
	{
		if (!opt.allowMissingKeys) goto LA163_;
	}
	goto LA156_;
	LA163_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T170_;
			NimStringDesc* T171_;
			if (!NIM_TRUE) goto LA168_;
			nimZeroMem((void*)(&T170_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T170_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T170_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23));
			T170_.Field2 = b;
			T171_ = NIM_NIL;
			T171_ = dollar___stdZjsonutils_504(T170_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T171_);
		}
		LA168_: ;
	}
	LA156_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T174_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T177_;
		T174_ = (NIM_BOOL)0;
		T174_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24));
		if (!T174_) goto LA175_;
		numMatchedX60gensym14_ += ((NI) 1);
		T177_ = NIM_NIL;
		T177_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24));
		fromJson__stdZjsonutils_566((&(*a).currentDir), T177_, opt);
	}
	goto LA172_;
	LA175_: ;
	{
		if (!opt.allowMissingKeys) goto LA179_;
	}
	goto LA172_;
	LA179_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T186_;
			NimStringDesc* T187_;
			if (!NIM_TRUE) goto LA184_;
			nimZeroMem((void*)(&T186_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T186_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T186_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24));
			T186_.Field2 = b;
			T187_ = NIM_NIL;
			T187_ = dollar___stdZjsonutils_504(T186_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T187_);
		}
		LA184_: ;
	}
	LA172_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T190_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T193_;
		T190_ = (NIM_BOOL)0;
		T190_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25));
		if (!T190_) goto LA191_;
		numMatchedX60gensym14_ += ((NI) 1);
		T193_ = NIM_NIL;
		T193_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25));
		fromJson__stdZjsonutils_566((&(*a).cmdline), T193_, opt);
	}
	goto LA188_;
	LA191_: ;
	{
		if (!opt.allowMissingKeys) goto LA195_;
	}
	goto LA188_;
	LA195_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T202_;
			NimStringDesc* T203_;
			if (!NIM_TRUE) goto LA200_;
			nimZeroMem((void*)(&T202_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T202_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T202_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25));
			T202_.Field2 = b;
			T203_ = NIM_NIL;
			T203_ = dollar___stdZjsonutils_504(T202_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T203_);
		}
		LA200_: ;
	}
	LA188_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T206_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T209_;
		T206_ = (NIM_BOOL)0;
		T206_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26));
		if (!T206_) goto LA207_;
		numMatchedX60gensym14_ += ((NI) 1);
		T209_ = NIM_NIL;
		T209_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26));
		fromJson__extccomp_1962((&(*a).depfiles), T209_, opt);
	}
	goto LA204_;
	LA207_: ;
	{
		if (!opt.allowMissingKeys) goto LA211_;
	}
	goto LA204_;
	LA211_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T218_;
			NimStringDesc* T219_;
			if (!NIM_TRUE) goto LA216_;
			nimZeroMem((void*)(&T218_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T218_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T218_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26));
			T218_.Field2 = b;
			T219_ = NIM_NIL;
			T219_ = dollar___stdZjsonutils_504(T218_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T219_);
		}
		LA216_: ;
	}
	LA204_: ;
	numX60gensym14_ += ((NI) 1);
	{
		NIM_BOOL T222_;
		tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T225_;
		T222_ = (NIM_BOOL)0;
		T222_ = hasKey__pureZjson_3162(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27));
		if (!T222_) goto LA223_;
		numMatchedX60gensym14_ += ((NI) 1);
		T225_ = NIM_NIL;
		T225_ = X5BX5D___pureZjson_3053(b, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27));
		fromJson__stdZjsonutils_566((&(*a).nimexe), T225_, opt);
	}
	goto LA220_;
	LA223_: ;
	{
		if (!opt.allowMissingKeys) goto LA227_;
	}
	goto LA220_;
	LA227_: ;
	{
		{
			tyTuple__d8cOxWret6fRDupvUsyoyw T234_;
			NimStringDesc* T235_;
			if (!NIM_TRUE) goto LA232_;
			nimZeroMem((void*)(&T234_), sizeof(tyTuple__d8cOxWret6fRDupvUsyoyw));
			T234_.Field0 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
			T234_.Field1 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27));
			T234_.Field2 = b;
			T235_ = NIM_NIL;
			T235_ = dollar___stdZjsonutils_504(T234_);
			raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_8), T235_);
		}
		LA232_: ;
	}
	LA220_: ;
	{
		NIM_BOOL T238_;
		T238_ = (NIM_BOOL)0;
		T238_ = opt.allowExtraKeys;
		if (!(T238_)) goto LA239_;
		T238_ = opt.allowMissingKeys;
		LA239_: ;
		if (!T238_) goto LA240_;
		okX60gensym14_ = NIM_TRUE;
	}
	goto LA236_;
	LA240_: ;
	{
		if (!opt.allowExtraKeys) goto LA243_;
		okX60gensym14_ = (numX60gensym14_ == numMatchedX60gensym14_);
	}
	goto LA236_;
	LA243_: ;
	{
		NI T248_;
		if (!opt.allowMissingKeys) goto LA246_;
		T248_ = (NI)0;
		T248_ = len__pureZjson_2999(b);
		okX60gensym14_ = (T248_ == numMatchedX60gensym14_);
	}
	goto LA236_;
	LA246_: ;
	{
		NIM_BOOL T250_;
		NI T251_;
		T250_ = (NIM_BOOL)0;
		T251_ = (NI)0;
		T251_ = len__pureZjson_2999(b);
		T250_ = (T251_ == numX60gensym14_);
		if (!(T250_)) goto LA252_;
		T250_ = (numX60gensym14_ == numMatchedX60gensym14_);
		LA252_: ;
		okX60gensym14_ = T250_;
	}
	LA236_: ;
	{
		tyTuple__YOdO3R1J4biIW9bY9agwbAQw T257_;
		NimStringDesc* T258_;
		if (!!(okX60gensym14_)) goto LA255_;
		nimZeroMem((void*)(&T257_), sizeof(tyTuple__YOdO3R1J4biIW9bY9agwbAQw));
		T257_.Field0 = len__pureZjson_2999(b);
		T257_.Field1 = numX60gensym14_;
		T257_.Field2 = numMatchedX60gensym14_;
		T257_.Field3 = copyString(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_4));
		T257_.Field4 = b;
		T258_ = NIM_NIL;
		T258_ = dollar___extccomp_2439((&T257_));
		raiseJsonException__stdZjsonutils_168(((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_28), T258_);
	}
	LA255_: ;
}
static N_INLINE(void, X5BX5Deq___pureZjson_1933)(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* obj, NimStringDesc* key, tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* val) {
	X5BX5Deq___pureZjson_297((&(*obj)._kind_6.fields), key, val);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__stdZjsonutils_603)(NimStringDesc* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	result = NIM_NIL;
	result = percent___pureZjson_1800(a);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1734)(tyTuple__UV3llMMYFckfui8YMBuUZA a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T1_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T2_;
	result = NIM_NIL;
	result = newJArray__pureZjson_133();
	T1_ = NIM_NIL;
	T1_ = toJson__stdZjsonutils_603(a.Field0, opt);
	add__pureZjson_232(result, T1_);
	T2_ = NIM_NIL;
	T2_ = toJson__stdZjsonutils_603(a.Field1, opt);
	add__pureZjson_232(result, T2_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1706)(tySequence__4eQHGndY6XBYpFOH09apV8Q* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	result = NIM_NIL;
	result = newJArray__pureZjson_133();
	{
		tyTuple__UV3llMMYFckfui8YMBuUZA* ai;
		NI i;
		NI L;
		NI T2_;
		ai = (tyTuple__UV3llMMYFckfui8YMBuUZA*)0;
		i = ((NI) 0);
		T2_ = (a ? a->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T5_;
				if (!(i < L)) goto LA4;
				ai = (&a->data[i]);
				T5_ = NIM_NIL;
				T5_ = toJson__extccomp_1734((*ai), opt);
				add__pureZjson_232(result, T5_);
				i += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1755)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	result = NIM_NIL;
	result = newJArray__pureZjson_133();
	{
		NimStringDesc** ai;
		NI i;
		NI L;
		NI T2_;
		ai = (NimStringDesc**)0;
		i = ((NI) 0);
		T2_ = (a ? a->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T5_;
				if (!(i < L)) goto LA4;
				ai = (&a->data[i]);
				T5_ = NIM_NIL;
				T5_ = toJson__stdZjsonutils_603((*ai), opt);
				add__pureZjson_232(result, T5_);
				i += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1783)(NIM_BOOL a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	result = NIM_NIL;
	result = percent___pureZjson_1826(a);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q*, toJson__extccomp_1685)(tyObject_BuildCache__XHJLjuVXhiJ46Ktee6XNog* a, tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ opt) {
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* result;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T1_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T2_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T3_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T4_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T5_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T6_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T7_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T8_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T9_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T10_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T11_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T12_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T13_;
	tyObject_JsonNodeObj__df9bshXB7C9cTiWPIOtX3j1Q* T14_;
	result = NIM_NIL;
	result = newJObject__pureZjson_102();
	T1_ = NIM_NIL;
	T1_ = toJson__stdZjsonutils_603((*a).cacheVersion, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_6), T1_);
	T2_ = NIM_NIL;
	T2_ = toJson__stdZjsonutils_603((*a).outputFile, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_9), T2_);
	T3_ = NIM_NIL;
	T3_ = toJson__extccomp_1706((*a).compile, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_10), T3_);
	T4_ = NIM_NIL;
	T4_ = toJson__extccomp_1755((*a).link, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_15), T4_);
	T5_ = NIM_NIL;
	T5_ = toJson__stdZjsonutils_603((*a).linkcmd, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_17), T5_);
	T6_ = NIM_NIL;
	T6_ = toJson__extccomp_1755((*a).extraCmds, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_18), T6_);
	T7_ = NIM_NIL;
	T7_ = toJson__extccomp_1755((*a).configFiles, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_19), T7_);
	T8_ = NIM_NIL;
	T8_ = toJson__extccomp_1783((*a).stdinInput, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_20), T8_);
	T9_ = NIM_NIL;
	T9_ = toJson__extccomp_1783((*a).projectIsCmd, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_22), T9_);
	T10_ = NIM_NIL;
	T10_ = toJson__stdZjsonutils_603((*a).cmdInput, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_23), T10_);
	T11_ = NIM_NIL;
	T11_ = toJson__stdZjsonutils_603((*a).currentDir, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_24), T11_);
	T12_ = NIM_NIL;
	T12_ = toJson__stdZjsonutils_603((*a).cmdline, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_25), T12_);
	T13_ = NIM_NIL;
	T13_ = toJson__extccomp_1706((*a).depfiles, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_26), T13_);
	T14_ = NIM_NIL;
	T14_ = toJson__stdZjsonutils_603((*a).nimexe, opt);
	X5BX5Deq___pureZjson_1933(result, ((NimStringDesc*) &TM__D9aPSI6l3gZsoFvdx9c3FKBg_27), T14_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ, initToJsonOptions__stdZjsonutils_33)(void) {
	tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ));
	nimZeroMem((void*)(&result), sizeof(tyObject_ToJsonOptions__T9bCB8O1ZaL5BIvSkjYqMnQ));
	result.enumMode = ((tyEnum_EnumMode__VBQLiQclXYpinosAjWkfrg) 0);
	result.jsonNodeMode = ((tyEnum_JsonNodeMode__UTXRaEPTjXpNdVaD9bbN0bQ) 0);
	return result;
}
