{"version":3,"sources":["../src/rest/RESTManager.ts","../src/rest/endpoints.ts","../src/structures/Balance.ts","../src/structures/Payment.ts","../src/structures/HistoryEvent.ts","../src/structures/Booking.ts","../src/structures/Terminal.ts","../src/structures/BookingDay.ts","../src/utils/weekRange.ts","../src/structures/Establishment.ts","../src/structures/Host.ts","../src/utils/transformers.ts","../src/routes/Host.ts","../src/routes/Account.ts","../src/routes/Establishment.ts","../src/routes/Payment.ts","../src/utils/authenticate.ts","../src/structures/Client.ts"],"names":["responseData","manager"],"mappings":";AAGO,IAAM,cAAN,MAAkB;AAAA,EAGvB,YAAY,OAAiB,EAAA;AAC3B,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AACjB,EAEA,MAAc,YAAe,OAAqC,EAAA;AAChE,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAM,EAAA,IAAA,EAAM,SAAY,GAAA,OAAA;AACxC,IAAA,MAAM,GAAM,GAAA,CAAA,EAAG,IAAK,CAAA,OAAO,IAAI,IAAI,CAAA,CAAA;AAEnC,IAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,MAChC,MAAA;AAAA,MACA,IAAM,EAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,IAAI,CAAI,GAAA,MAAA;AAAA,MACpC,OAAS,EAAA;AAAA,QACP,cAAgB,EAAA,kBAAA;AAAA,QAChB,GAAG,OAAA;AAAA,QACH,YAAc,EAAA;AAAA;AAChB,KACD,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAMA,MAAAA,aAAAA,GAAe,MAAM,QAAA,CAAS,IAAK,EAAA;AACzC,MAAM,MAAA,IAAI,KAAM,CAAA,CAAA,EAAG,QAAS,CAAA,MAAM,KAAK,IAAK,CAAA,SAAA,CAAUA,aAAY,CAAC,CAAE,CAAA,CAAA;AAAA;AAGvE,IAAM,MAAA,YAAA,GAAe,MAAM,QAAA,CAAS,IAAK,EAAA;AACzC,IAAO,OAAA,YAAA;AAAA;AACT,EAEA,MAAM,GACJ,CAAA,IAAA,EACA,OACY,EAAA;AACZ,IAAA,OAAO,KAAK,WAAe,CAAA;AAAA,MACzB,MAAQ,EAAA,KAAA;AAAA,MACR,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA;AACH,EAEA,MAAM,IAAA,CACJ,IACA,EAAA,IAAA,EACA,OACY,EAAA;AACZ,IAAA,OAAO,KAAK,WAAe,CAAA;AAAA,MACzB,MAAQ,EAAA,MAAA;AAAA,MACR,IAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAS,OAAS,EAAA;AAAA,KACnB,CAAA;AAAA;AACH,EAEA,MAAM,GAAA,CACJ,IACA,EAAA,IAAA,EACA,OACY,EAAA;AACZ,IAAA,OAAO,KAAK,WAAe,CAAA;AAAA,MACzB,MAAQ,EAAA,KAAA;AAAA,MACR,IAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAS,OAAS,EAAA;AAAA,KACnB,CAAA;AAAA;AACH,EAEA,MAAM,MAAA,CACJ,IACA,EAAA,MAAA,EACA,OACY,EAAA;AACZ,IAAA,MAAM,SAAY,GAAA,IAAI,eAAgB,CAAA,MAAM,EAAE,QAAS,EAAA;AACvD,IAAA,MAAM,UAAU,SAAY,GAAA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,SAAS,CAAK,CAAA,GAAA,IAAA;AACrD,IAAA,OAAO,KAAK,WAAe,CAAA;AAAA,MACzB,MAAQ,EAAA,QAAA;AAAA,MACR,IAAM,EAAA,OAAA;AAAA,MACN,SAAS,OAAS,EAAA;AAAA,KACnB,CAAA;AAAA;AAEL,CAAA;;;AChFO,IAAM,aAAa,MAAM,eAAA;AAEzB,IAAM,mBAAsB,GAAA,CAAC,KAAkB,KAAA,CAAA,+BAAA,EAAkC,KAAK,CAAA,CAAA;AACtF,IAAM,uBAAuB,MAAM,0BAAA;AAKnC,IAAM,IAAO,GAAA,CAAC,MAAmB,KAAA,CAAA,SAAA,EAAY,MAAM,CAAA,CAAA;AACnD,IAAM,YAAe,GAAA,CAAC,MAAmB,KAAA,CAAA,iBAAA,EAAoB,MAAM,CAAA,EAAA,CAAA;AACnE,IAAM,SAAY,GAAA,CAAC,MAAmB,KAAA,CAAA,SAAA,EAAY,MAAM,CAAA,QAAA,CAAA;AAExD,IAAM,aAAgB,GAAA,CAAC,MAAmB,KAAA,CAAA,SAAA,EAAY,MAAM,CAAA,cAAA,CAAA;AAC5D,IAAM,iBAAoB,GAAA,CAAC,MAAmB,KAAA,CAAA,SAAA,EAAY,MAAM,CAAA,UAAA,CAAA;AAChE,IAAM,mBAAsB,GAAA,CAAC,MAAmB,KAAA,CAAA,qBAAA,EAAwB,MAAM,CAAA,CAAA;AAC9E,IAAM,iBAAoB,GAAA,CAAC,MAAmB,KAAA,CAAA,SAAA,EAAY,MAAM,CAAA,eAAA,CAAA;AAGhE,IAAM,iBAAA,GAAoB,CAAC,MAAgB,EAAA,IAAA,KAAkB,yBAAyB,MAAM,CAAA,SAAA,EAAY,OAAU,GAAA,IAAA,IAAQ,EAAE,CAAA,CAAA;AAE5H,IAAM,cAAiB,GAAA,CAAC,MAAmB,KAAA,CAAA,SAAA,EAAY,MAAM,CAAA,mBAAA,CAAA;AAE7D,IAAM,qBAAwB,GAAA,CAAC,IAAiB,KAAA,CAAA,0BAAA,EAA6B,IAAI,CAAA,CAAA;AACjF,IAAM,mBAAsB,GAAA,CAAC,eAA4B,KAAA,CAAA,yBAAA,EAA4B,eAAe,CAAA,CAAA;AACpG,IAAM,oBAAA,GAAuB,CAAC,KAAA,EAAe,IAAc,EAAA,KAAA,KAAkB,uBAAuB,KAAK,CAAA,SAAA,EAAY,IAAI,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAIxI,IAAM,iBAAoB,GAAA,CAAC,YAAyB,KAAA,CAAA,qBAAA,EAAwB,YAAY,CAAA,CAAA;;;AC/BxF,IAAM,UAAN,MAAc;AAAA,EACjB,YAEW,EAEA,EAAA,MAAA,EAEA,KAEA,EAAA,MAAA,EAEA,iBAEA,aACT,EAAA;AAXS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAEA,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAAA;AAEf;;;ACfO,IAAM,UAAN,MAAc;AAAA,EACjB,WAAA,CAEW,IAEA,MAEA,EAAA,MAAA,EAEA,QAEA,KAEA,EAAA,GAAA,EAEA,SAEA,EAAA,SAAA,EAEA,IACT,EAAA;AAjBS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAEA,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAEA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAEA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AAGf;;;ACtBO,IAAM,eAAN,MAAmB;AAAA,EACtB,WAEW,CAAA,EAAA,EAEA,IAEA,EAAA,KAAA,EAEA,MACT,EAAA;AAPS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA;AAGf;;;ACTO,IAAM,UAAN,MAAc;AAAA,EACjB,YAEW,EAEA,EAAA,IAAA,EAEA,QAEA,IAEA,EAAA,EAAA,EAEA,UAEA,IACT,EAAA;AAbS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AAEf;;;ACpBO,IAAM,WAAN,MAAe;AAAA,EAClB,WAEW,CAAA,EAAA,EAEA,OAEA,EAAA,IAAA,EAEA,MACA,MAUT,EAAA;AAjBS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA;AAWf;;;ACnBO,IAAM,aAAN,MAAiB;AAAA,EACpB,WAAA,CACY,OAED,MAEA,EAAA,EAAA,EAEA,QAEA,OAEA,EAAA,SAAA,EAEA,OAEA,EAAA,YAAA,EAEA,IACT,EAAA;AAjBU,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAED,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AACR,EAEH,MAAM,IAAA,CAAK,YAAe,GAAA,CAAA,EAAG,cAAc,KAA4B,EAAA;AACnE,IAAA,IAAA,CAAK,SAAS,YAAe,GAAA,CAAA;AAC7B,IAAA,OAAO,QAAS,CAAA,IAAA,CAAK,KAAO,EAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,CAAK,EAAI,EAAA,IAAA,CAAK,IAAK,CAAA,MAAA,EAAU,EAAA,YAAA,EAAc,WAAW,CAAA;AAAA;AAEvG;;;AC3BO,SAAS,YAAA,CAAa,YAAoB,IAAyC,EAAA;AACtF,EAAc,UAAA,IAAA,CAAA;AACd,EAAA,MAAM,cAAiB,GAAA,IAAI,IAAK,CAAA,IAAA,EAAM,GAAG,CAAC,CAAA;AAC1C,EAAM,MAAA,SAAA,GAAY,eAAe,MAAO,EAAA;AACxC,EAAA,MAAM,iBAAqB,GAAA,SAAA,KAAc,CAAK,GAAA,CAAA,GAAK,CAAI,GAAA,SAAA;AACvD,EAAM,MAAA,WAAA,GAAc,IAAI,IAAA,CAAK,cAAc,CAAA;AAC3C,EAAA,WAAA,CAAY,OAAQ,CAAA,cAAA,CAAe,OAAQ,EAAA,GAAI,iBAAiB,CAAA;AAChE,EAAM,MAAA,aAAA,GAAgB,IAAI,IAAA,CAAK,WAAW,CAAA;AAC1C,EAAA,aAAA,CAAc,OAAQ,CAAA,WAAA,CAAY,OAAQ,EAAA,GAAI,aAAa,CAAC,CAAA;AAC5D,EAAM,MAAA,WAAA,GAAc,IAAI,IAAA,CAAK,aAAa,CAAA;AAC1C,EAAA,WAAA,CAAY,OAAQ,CAAA,aAAA,CAAc,OAAQ,EAAA,GAAI,CAAC,CAAA;AAC/C,EAAA,aAAA,CAAc,QAAS,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAC,CAAA;AACjC,EAAA,WAAA,CAAY,QAAS,CAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,GAAG,CAAA;AACpC,EAAM,MAAA,cAAA,GAAiB,aAAc,CAAA,iBAAA,EAAsB,GAAA,GAAA;AAC3D,EAAA,MAAM,YAAY,IAAI,IAAA,CAAK,aAAc,CAAA,OAAA,KAAY,cAAc,CAAA;AACnE,EAAA,MAAM,UAAU,IAAI,IAAA,CAAK,WAAY,CAAA,OAAA,KAAY,cAAc,CAAA;AAC/D,EAAA,OAAO,EAAE,IAAA,EAAM,SAAW,EAAA,EAAA,EAAI,OAAQ,EAAA;AAC1C;;;ACNO,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAEW,EAEA,EAAA,IAAA,EAEA,gBAEA,IAEA,EAAA,OAAA,EAEA,KAEA,UAEA,EAAA,IAAA,EAEA,gBAEA,EAAA,eAAA,EAEA,mBAEA,QACA,EAAA,QAAA,EACA,UACA,OACA,EAAA,WAAA,EACA,KACA,eACT,EAAA;AA7BS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAEA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,gBAAA,GAAA,gBAAA;AAEA,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAEA,IAAA,IAAA,CAAA,iBAAA,GAAA,iBAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AACA,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA;AAGf;;;AC3CO,IAAM,OAAN,MAAW;AAAA,EACd,WAEW,CAAA,EAAA,EAEA,OACA,EAAA,MAAA,EAEA,SAEA,EAAA,QAAA,EAEA,IAEA,EAAA,OAAA,EAEA,QAEA,EAAA,UAAA,EAEA,IAEA,EAAA,UAAA,EAEA,cACA,WAYT,EAAA;AAlCS,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAEA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAEA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAAA;AAef;;;ACrCA,SAAS,yBAAyB,aAA+G,EAAA;AAC7I,EAAA,OAAQ,cAAyC,EAAO,KAAA,MAAA;AAC5D;AAEO,SAAS,yBAAyB,aAAqF,EAAA;AAC1H,EAAA,OAAO,IAAI,aAAA;AAAA,IACP,wBAAyB,CAAA,aAAa,CAAK,GAAA,aAAA,CAAc,MAAM,CAAK,GAAA,CAAA;AAAA,IACpE,yBAAyB,aAAa,CAAA,GAAK,aAAc,CAAA,GAAA,IAAO,QAAS,aAAc,CAAA,GAAA;AAAA,IACvF,wBAAyB,CAAA,aAAa,CAAK,GAAA,aAAA,CAAc,kBAAkB,IAAQ,GAAA,IAAA;AAAA,IACnF,yBAAyB,aAAa,CAAA,GAAK,aAAc,CAAA,OAAA,IAAW,OAAQ,aAAc,CAAA,OAAA;AAAA,IAC1F,wBAAyB,CAAA,aAAa,CAAK,GAAA,aAAA,CAAc,WAAW,IAAQ,GAAA,IAAA;AAAA,IAC5E,wBAAyB,CAAA,aAAa,CAAK,GAAA,aAAA,CAAc,WAAW,IAAQ,GAAA,IAAA;AAAA,IAC5E,wBAAyB,CAAA,aAAa,CAAK,GAAA,aAAA,CAAc,aAAa,IAAQ,GAAA,IAAA;AAAA,IAC9E,yBAAyB,aAAa,CAAA,GAAK,aAAc,CAAA,aAAA,EAAe,cAAc,EAAM,GAAA,iDAAA;AAAA,IAC5F,yBAAyB,aAAa,CAAA,GAAK,aAAc,CAAA,aAAA,EAAe,eAAe,CAAK,GAAA,IAAA;AAAA,IAC5F,yBAAyB,aAAa,CAAA,GAAK,aAAc,CAAA,aAAA,EAAe,eAAe,CAAK,GAAA,IAAA;AAAA,IAC5F,yBAAyB,aAAa,CAAA,GAAK,aAAc,CAAA,aAAA,EAAe,qBAAqB,CAAK,GAAA,IAAA;AAAA,IAClG,wBAAyB,CAAA,aAAa,CAAK,GAAA,aAAA,CAAc,aAAa,KAAS,GAAA,IAAA;AAAA,IAC/E,yBAAyB,aAAa,CAAA,GAAK,cAAc,aAAe,EAAA,UAAA,EAAY,IAAI,CAAY,OAAA,MAAA;AAAA,MAChG,IAAS,OAAQ,CAAA,EAAA;AAAA,MACjB,OAAA,EAAS,CAAC,OAAQ,CAAA,GAAA;AAAA,MAClB,MAAA,EAAS,CAAC,OAAQ,CAAA,QAAA;AAAA,MAClB,IAAS,EAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,MAC5B,EAAS,EAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,EAAE;AAAA,KAC9B,CAAA,CAAA,IAAK,EAAC,GAAK,EAAC;AAAA,IACd,wBAAA,CAAyB,aAAa,CAAK,GAAA;AAAA,MACvC,MAAU,aAAc,CAAA,KAAA;AAAA,MACxB,OAAU,EAAA,aAAA,CAAc,IAAO,GAAA,GAAA,GAAM,aAAc,CAAA,IAAA;AAAA,MACnD,UAAU,aAAc,CAAA;AAAA,KACvB,GAAA;AAAA,MACD,IAAU,EAAA,IAAA;AAAA,MACV,OAAU,EAAA,IAAA;AAAA,MACV,QAAU,EAAA;AAAA,KACd;AAAA,IACA,wBAAA,CAAyB,aAAa,CAAK,GAAA;AAAA,MACvC,WAAA,EAAa,cAAc,GAAO,IAAA,IAAA;AAAA,MAClC,SAAA,EAAa,cAAc,GAAO,IAAA,IAAA;AAAA,MAClC,KAAA,EAAa,aAAc,CAAA,aAAA,EAAe,KAAS,IAAA,IAAA;AAAA,MACnD,OAAA,EAAa,aAAc,CAAA,aAAA,EAAe,GAAO,IAAA;AAAA,KAChD,GAAA;AAAA,MACD,WAAa,EAAA,IAAA;AAAA,MACb,SAAa,EAAA,IAAA;AAAA,MACb,KAAa,EAAA,IAAA;AAAA,MACb,OAAa,EAAA;AAAA,KACjB;AAAA,IACA,wBAAA,CAAyB,aAAa,CAAK,GAAA;AAAA,MACvC,2BAAA,EAAiC,aAAc,CAAA,iBAAA,EAAmB,aAAiB,IAAA,IAAA;AAAA,MACnF,6BAAA,EAAiC,aAAc,CAAA,iBAAA,EAAmB,aAAiB,IAAA,IAAA;AAAA,MACnF,6BAAA,EAAiC,aAAc,CAAA,iBAAA,EAAmB,aAAiB,IAAA,IAAA;AAAA,MACnF,+BAAA,EAAiC,aAAc,CAAA,iBAAA,EAAmB,aAAiB,IAAA,IAAA;AAAA,MACnF,2BAAA,EAAiC,aAAc,CAAA,iBAAA,EAAmB,aAAiB,IAAA,IAAA;AAAA,MACnF,6BAAA,EAAiC,aAAc,CAAA,iBAAA,EAAmB,aAAiB,IAAA,IAAA;AAAA,MACnF,aAAA,EAAiC,aAAc,CAAA,aAAA,EAAe,mBAAuB,IAAA,IAAA;AAAA,MACrF,eAAA,EAAiC,aAAc,CAAA,aAAA,EAAe,uBAA2B,IAAA,IAAA;AAAA,MACzF,aAAA,EAAiC,aAAc,CAAA,aAAA,EAAe,uBAA2B,IAAA,IAAA;AAAA,MACzF,WAAA,EAAiC,aAAc,CAAA,aAAA,EAAe,gBAAoB,IAAA;AAAA,KACjF,GAAA;AAAA,MACD,2BAAiC,EAAA,IAAA;AAAA,MACjC,6BAAiC,EAAA,IAAA;AAAA,MACjC,6BAAiC,EAAA,IAAA;AAAA,MACjC,+BAAiC,EAAA,IAAA;AAAA,MACjC,2BAAiC,EAAA,IAAA;AAAA,MACjC,6BAAiC,EAAA,IAAA;AAAA,MACjC,aAAiC,EAAA,IAAA;AAAA,MACjC,eAAiC,EAAA,IAAA;AAAA,MACjC,aAAiC,EAAA,IAAA;AAAA,MACjC,WAAiC,EAAA;AAAA,KACrC;AAAA,IACA,wBAAA,CAAyB,aAAa,CAAK,GAAA;AAAA,MACvC,EAAY,EAAA,aAAA,CAAc,aAAe,EAAA,GAAA,EAAK,EAAM,IAAA,IAAA;AAAA,MACpD,OAAY,EAAA,aAAA,CAAc,aAAe,EAAA,GAAA,EAAK,OAAW,IAAA,IAAA;AAAA,MACzD,OAAY,EAAA,aAAA,CAAc,aAAe,EAAA,GAAA,EAAK,OAAW,IAAA,IAAA;AAAA,MACzD,UAAY,EAAA,aAAA,CAAc,aAAe,EAAA,GAAA,EAAK,UAAc,IAAA,IAAA;AAAA,MAC5D,OAAY,EAAA,aAAA,CAAc,aAAe,EAAA,GAAA,EAAK,OAAW,IAAA;AAAA,KACxD,GAAA;AAAA,MACD,EAAY,EAAA,IAAA;AAAA,MACZ,OAAY,EAAA,IAAA;AAAA,MACZ,OAAY,EAAA,IAAA;AAAA,MACZ,UAAY,EAAA,IAAA;AAAA,MACZ,OAAY,EAAA;AAAA,KAChB;AAAA,IACA,wBAAA,CAAyB,aAAa,CAAK,GAAA;AAAA,MACvC,SAAW,EAAA,IAAI,IAAK,CAAA,aAAA,CAAc,mBAAmB,CAAC,CAAA;AAAA,MACtD,QAAW,EAAA,IAAI,IAAK,CAAA,aAAA,CAAc,mBAAmB,CAAC;AAAA,KACrD,GAAA;AAAA,MACD,SAAA,kBAAe,IAAA,IAAA,CAAK,CAAC,CAAA;AAAA,MACrB,QAAA,kBAAe,IAAA,IAAA,CAAK,CAAC;AAAA;AACzB,GACJ;AACJ;AAEO,SAAS,gBAAgB,IAA2B,EAAA;AACvD,EAAA,OAAO,IAAI,IAAA;AAAA,IACP,IAAK,CAAA,EAAA;AAAA,IACL,IAAK,CAAA,MAAA;AAAA,IACL,KAAK,IAAK,CAAA,EAAA;AAAA,IACV,IAAK,CAAA,MAAA;AAAA,IACL,IAAK,CAAA,GAAA;AAAA,IACL,IAAK,CAAA,IAAA;AAAA,IACL,IAAK,CAAA,OAAA;AAAA,IACL,IAAK,CAAA,QAAA;AAAA,IACL,IAAK,CAAA,OAAA;AAAA,IACL,IAAK,CAAA,IAAA;AAAA,IACL,IAAK,CAAA,UAAA;AAAA,IACL,KAAK,YAAgB,IAAA,IAAA;AAAA,IACrB;AAAA,MACI,OAAA,EAAyB,KAAK,aAAiB,IAAA,KAAA;AAAA,MAC/C,WAAA,EAAyB,KAAK,gBAAoB,IAAA,KAAA;AAAA,MAClD,SAAA,EAAyB,KAAK,cAAkB,IAAA,KAAA;AAAA,MAChD,yBAAyB,IAAK,CAAA,sBAAA;AAAA,MAC9B,aAAyB,IAAK,CAAA;AAAA;AAClC,GACJ;AACJ;;;ACvFA,IAAM,OAAA,GAAU,IAAI,WAAA,CAAY,mCAAmC,CAAA;AAEtD,IAAA,OAAA,GAAU,OAAO,KAAA,EAAe,MAAkC,KAAA;AAC3E,EAAA,MAAM,UAAa,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAmB,IAAK,CAAA,MAAM,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AAEtG,EAAA,OAAO,gBAAgB,UAAU,CAAA;AACrC;AAEa,IAAA,WAAA,GAAc,OAAO,KAAA,EAAe,MAA4C,KAAA;AACzF,EAAA,MAAM,aAAgB,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAiC,YAAa,CAAA,MAAM,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AAC/H,EAAA,MAAM,WAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,WAAW,aAAe,EAAA;AACjC,IAAM,MAAA,UAAA,GAAa,OAAQ,CAAA,gBAAA,GACrB,OAAQ,CAAA,gBAAA,CAAiB,KAAM,CAAA,2BAA2B,CAAG,EAAA,KAAA,CAAM,CAAG,EAAA,CAAC,CACvE,GAAA,MAAA;AACN,IAAI,IAAA,IAAA,uBAAW,IAAK,EAAA;AACpB,IAAA,IAAI,UAAY,EAAA;AACZ,MAAO,IAAA,GAAA,IAAI,KAAK,QAAS,CAAA,UAAA,CAAW,CAAC,CAAG,EAAA,EAAE,GAAG,QAAS,CAAA,UAAA,CAAW,CAAC,CAAG,EAAA,EAAE,IAAI,CAAG,EAAA,QAAA,CAAS,WAAW,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA;AAE7G,IAAA,QAAA,CAAS,KAAK,IAAI,OAAA;AAAA,MACd,OAAQ,CAAA,EAAA;AAAA,MACR,QAAQ,IAAK,CAAA,EAAA;AAAA,MACb,QAAQ,KAAM,CAAA,GAAA;AAAA,MACd,OAAQ,CAAA,OAAA;AAAA,MACR,OAAQ,CAAA,aAAA;AAAA,MACR;AAAA,KACH,CAAA;AAAA;AAGL,EAAO,OAAA,QAAA;AACX;AAGO,IAAM,WAAc,GAAA,OAAO,KAAe,EAAA,MAAA,EAAgB,MAAqC,KAAA;AAClG,EAAA,MAAM,iBAAiB,MAAM,OAAA,CAAQ,KAA2B,iBAAkB,CAAA,MAAM,GAAG,CAAC;AAAA,IACxF,eAAiB,EAAA;AAAA,MACb,IAAM,EAAA;AAAA,QACF,EAAI,EAAA;AAAA;AACR,KACJ;AAAA,IACA,OAAS,EAAA;AAAA,GACZ,CAAG,EAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACL,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAClC,GACH,CAAA;AACD,EAAA,OAAO,IAAI,OAAA;AAAA,IACP,IAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAe,CAAA,KAAA;AAAA,IACf,cAAe,CAAA,WAAA;AAAA,IACf,0EAA0E,cAAe,CAAA,KAAA;AAAA,IACzF,0EAA0E,cAAe,CAAA,KAAA;AAAA,wBACrF,IAAK;AAAA,GACb;AACJ;AAEa,IAAA,UAAA,GAAa,OAAO,KAAA,EAAe,MAAiD,KAAA;AAC7F,EAAA,MAAM,UAAa,GAAA,MAAM,OAAQ,CAAA,GAAA,CAA0B,mBAAoB,CAAA,MAAM,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AAC5H,EAAA,MAAM,UAA+B,EAAC;AACtC,EAAA,KAAA,MAAW,SAAS,UAAY,EAAA;AAC5B,IAAA,OAAA,CAAQ,KAAK,IAAI,YAAA;AAAA,MACb,KAAM,CAAA,EAAA;AAAA,MACN,IAAI,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA,MACnB,KAAM,CAAA,MAAA;AAAA,MAAA,CACL,KAAM,CAAA,MAAA,IAAU,CAAM,KAAA,KAAA,CAAM,KAAS,IAAA,CAAA;AAAA,KACzC,CAAA;AAAA;AAGL,EAAO,OAAA,OAAA;AACX;AAEO,IAAM,eAAkB,GAAA,OAAO,KAAe,EAAA,MAAA,EAAgB,OAA2C,KAAA;AAC5G,EAAA,MAAM,UAAa,GAAA,MAAM,OAAQ,CAAA,GAAA,CAA0B,mBAAoB,CAAA,MAAM,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AAC5H,EAAA,MAAM,QAAQ,UAAW,CAAA,IAAA,CAAK,CAAW,OAAA,KAAA,OAAA,CAAQ,OAAO,OAAO,CAAA;AAE/D,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,iBAAiB,CAAA;AAE7C,EAAA,OAAO,IAAI,YAAA;AAAA,IACP,KAAM,CAAA,EAAA;AAAA,IACN,IAAI,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA,IACnB,KAAM,CAAA,MAAA;AAAA,IAAA,CACL,KAAM,CAAA,MAAA,IAAU,CAAM,KAAA,KAAA,CAAM,KAAS,IAAA,CAAA;AAAA,GAC1C;AACJ;AAEa,IAAA,cAAA,GAAiB,OAAO,KAAA,EAAe,MAAqC,KAAA;AACrF,EAAA,MAAM,UAAc,GAAA,CAAA,MAAM,OAAQ,CAAA,GAAA,CAAuB,SAAU,CAAA,MAAM,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAG,EAAA,cAAA;AACnH,EAAA,OAAO,IAAI,OAAA;AAAA,IACP,UAAW,CAAA,EAAA;AAAA,IACX,MAAA;AAAA,IACA,UAAW,CAAA,OAAA;AAAA,IACX,UAAW,CAAA,MAAA;AAAA,IACX,UAAW,CAAA,KAAA;AAAA,IACX,IAAA;AAAA,IACA,0EAA0E,UAAW,CAAA,KAAA;AAAA,IACrF,0EAA0E,UAAW,CAAA,KAAA;AAAA,IACrF,IAAI,IAAK,CAAA,UAAA,CAAW,IAAI;AAAA,GAC5B;AACJ;AAEO,IAAM,cAAiB,GAAA,OAAO,KAAe,EAAA,MAAA,KAAqC,QAAQ,GAAa,CAAA,iBAAA,CAAkB,MAAM,CAAA,EAAG,EAAE,aAAA,EAAe,CAAU,OAAA,EAAA,KAAK,IAAI;AAEtK,IAAM,WAAc,GAAA,OAAO,KAAe,EAAA,MAAA,EAAgB,IAA2C,KAAA;AACxG,EAAA,MAAM,UAAa,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAsB,iBAAkB,CAAA,MAAA,EAAQ,IAAI,CAAA,EAAG,EAAE,aAAA,EAAe,CAAU,OAAA,EAAA,KAAK,IAAI,CAAA;AAC5H,EAAA,IAAI,CAAC,UAAA,CAAW,SAAU,CAAA,CAAC,CAAG,EAAA;AAC1B,IAAM,MAAA,IAAI,MAAM,iCAAiC,CAAA;AAAA;AAErD,EAAM,MAAA,SAAA,GAAY,YAAa,CAAA,UAAA,CAAW,SAAU,CAAA,CAAC,CAAE,CAAA,OAAA,EAAS,UAAW,CAAA,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,CAAA;AAC7F,EAAA,MAAM,WAAW,EAAC;AAClB,EAAW,KAAA,MAAA,aAAA,IAAiB,WAAW,SAAW,EAAA;AAC9C,IAAA,MAAM,OAAO,EAAC;AAEd,IAAW,KAAA,MAAA,MAAA,IAAU,cAAc,KAAO,EAAA;AACtC,MAAA,IAAA,CAAK,KAAK,IAAI,UAAA;AAAA,QACV,KAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAc,CAAA,EAAA;AAAA,QACd,OAAO,SAAY,GAAA,CAAA;AAAA,QACnB,MAAO,CAAA,QAAA;AAAA,QACP,MAAO,CAAA,SAAA;AAAA,QACP,OAAO,GAAO,IAAA,EAAA;AAAA,QACd,MAAO,CAAA,SAAA;AAAA,QACP,IAAI,KAAK,SAAU,CAAA,IAAA,CAAK,SAAa,GAAA,CAAA,MAAA,CAAO,SAAY,GAAA,CAAA,IAAK,KAAQ;AAAA,OACxE,CAAA;AAAA;AAGL,IAAA,QAAA,CAAS,KAAK,IAAI,OAAA;AAAA,MACd,aAAc,CAAA,EAAA;AAAA,MACd,aAAc,CAAA,OAAA;AAAA,MACd,cAAc,IAAK,CAAA,EAAA;AAAA,MACnB,SAAU,CAAA,IAAA;AAAA,MACV,SAAU,CAAA,EAAA;AAAA,MACV,IAAI,QAAA;AAAA,QACA,cAAc,KAAM,CAAA,EAAA;AAAA,QACpB,cAAc,KAAM,CAAA,MAAA;AAAA,QACpB,cAAc,KAAM,CAAA,OAAA;AAAA,QACpB,cAAc,KAAM,CAAA,GAAA;AAAA,QACpB,aAAc,CAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,CAAU,KAAA,MAAA;AAAA,UACnC,IAAS,KAAM,CAAA,EAAA;AAAA,UACf,SAAS,KAAM,CAAA,MAAA;AAAA,UACf,MAAS,KAAM,CAAA,GAAA;AAAA,UACf,OAAS,KAAM,CAAA;AAAA,SACjB,CAAA;AAAA,OACN;AAAA,MACA;AAAA,KACH,CAAA;AAAA;AAGL,EAAO,OAAA,QAAA;AACX;AAEa,IAAA,QAAA,GAAW,OAAO,KAAe,EAAA,MAAA,EAAgB,QAAgB,GAAa,EAAA,YAAA,GAAe,CAAG,EAAA,WAAA,GAAc,KAA+B,KAAA;AACtJ,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,IAAoB,CAAA,cAAA,CAAe,MAAM,CAAG,EAAA;AAAA,IACtE,SAAW,EAAA,GAAA;AAAA,IACX,SAAW,EAAA,YAAA;AAAA,IACX,GAAW,EAAA;AAAA,MACP,EAAI,EAAA;AAAA,KACR;AAAA,IACA,qBAAuB,EAAA;AAAA,GACxB,EAAA;AAAA,IACC,OAAS,EAAA;AAAA,MACL,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAClC,GACH,CAAA;AAED,EAAA,OAAO,IAAI,UAAA;AAAA,IACP,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAQ,CAAA,EAAA;AAAA,IACR,QAAQ,SAAY,GAAA,CAAA;AAAA,IACpB,IAAA;AAAA,IACA,OAAQ,CAAA,SAAA;AAAA,IACR,QAAQ,GAAO,IAAA,EAAA;AAAA,IACf,OAAQ,CAAA,SAAA;AAAA,wBACJ,IAAK;AAAA,GACb;AACJ;AAEa,IAAA,eAAA,GAAkB,OAAO,KAAA,EAAe,MAAyC,KAAA;AAC1F,EAAA,MAAM,WAAc,GAAA,MAAM,OAAQ,CAAA,GAAA,CAA0B,aAAc,CAAA,MAAM,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AACvH,EAAA,MAAM,WAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,cAAc,WAAa,EAAA;AAClC,IAAS,QAAA,CAAA,IAAA,CAAK,eAAgB,CAAA,UAAU,CAAC,CAAA;AAAA;AAG7C,EAAO,OAAA,QAAA;AACX;;;ACxNA,IAAMC,QAAAA,GAAU,IAAI,WAAA,CAAY,mCAAmC,CAAA;AAEtD,IAAA,oBAAA,GAAuB,OAAO,KAAoC,KAAA;AAC3E,EAAA,MAAM,0BAA0B,MAAMA,QAAAA,CAAQ,GAAmC,CAAA,mBAAA,CAAoB,KAAK,CAAC,CAAA;AAC3G,EAAI,IAAA,uBAAA,CAAwB,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/C,IAAM,MAAA,IAAI,MAAM,CAA0C,uCAAA,EAAA,uBAAA,CAAwB,SAAS,IAAK,CAAA,IAAI,CAAC,CAAE,CAAA,CAAA;AAAA;AAE3G,EAAO,OAAA,IAAA;AACX;AAEO,IAAM,YAAe,GAAA,OAAO,IAAc,EAAA,cAAA,EAAwB,UAAkB,KAAmC,KAAA;AAC1H,EAAA,MAAM,iBAAoB,GAAA,MAAMA,QAAQ,CAAA,GAAA,CAA6B,sBAAwB,EAAA;AAAA,IACzF,EAAa,EAAA,IAAA;AAAA,IACb,QAAa,EAAA,cAAA;AAAA,IACb,WAAa,EAAA;AAAA,GACd,EAAA;AAAA,IACC,OAAS,EAAA;AAAA,MACL,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAClC,GACH,CAAA;AAED,EAAA,OAAO,iBAAkB,CAAA,KAAA;AAC7B;;;ACpBA,IAAMA,QAAAA,GAAU,IAAI,WAAA,CAAY,mCAAmC,CAAA;AAEtD,IAAA,oBAAA,GAAuB,OAAO,KAAe,EAAA,IAAA,GAAO,IAAI,KAAQ,GAAA,EAAA,EAAI,UAAa,GAAA,KAAA,EAAO,KAAkD,KAAA;AACnJ,EAAM,MAAA,sBAAA,GAAyB,MAAMA,QAAQ,CAAA,GAAA,CAAyC,qBAAqB,KAAO,EAAA,IAAA,EAAM,KAAK,CAAC,CAAA;AAE9H,EAAA,MAAM,iBAAuC,EAAC;AAC9C,EAAI,IAAA,KAAA,IAAS,CAAC,UAAY,EAAA;AACtB,IAAA,KAAA,MAAW,iBAAiB,sBAAwB,EAAA;AAChD,MAAA,cAAA,CAAe,KAAK,MAAM,qBAAA,CAAsB,KAAO,EAAA,aAAA,CAAc,OAAO,CAAC,CAAA;AAAA;AACjF,GACG,MAAA;AACH,IAAA,KAAA,MAAW,iBAAiB,sBAAwB,EAAA;AAChD,MAAe,cAAA,CAAA,IAAA,CAAK,wBAAyB,CAAA,aAAa,CAAC,CAAA;AAAA;AAC/D;AAIJ,EAAO,OAAA,cAAA;AACX;AAEa,IAAA,qBAAA,GAAwB,OAAO,KAAA,EAAe,OAA4C,KAAA;AACnG,EAAA,MAAM,sBAAsB,MAAMA,QAAAA,CAAQ,GAAmC,CAAA,qBAAA,CAAsB,OAAO,CAAG,EAAA;AAAA,IACzG,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA,GACjC,CAAA;AACD,EAAI,IAAA,mBAAA,CAAoB,WAAW,CAAG,EAAA;AAClC,IAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA;AAAA;AAE7C,EAAM,MAAA,aAAA,GAAgB,oBAAoB,CAAC,CAAA;AAC3C,EAAA,OAAO,yBAAyB,aAAa,CAAA;AACjD;AAEa,IAAA,gBAAA,GAAmB,OAAO,KAAA,EAAe,MAA2C,KAAA;AAC7F,EAAA,MAAM,sBAAsB,MAAMA,QAAAA,CAAQ,GAA4B,CAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAAA,IAC/F,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA,GACjC,CAAA;AACD,EAAA,OAAO,yBAAyB,mBAAmB,CAAA;AACvD;;;ACrCA,IAAMA,QAAAA,GAAU,IAAI,WAAA,CAAY,mCAAmC,CAAA;AAEtD,IAAA,UAAA,GAAa,OAAO,KAAA,EAAe,YAA2C,KAAA;AACvF,EAAA,MAAM,aAAgB,GAAA,MAAMA,QAAQ,CAAA,GAAA,CAAsB,iBAAkB,CAAA,YAAY,CAAG,EAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AAC/H,EAAA,OAAO,IAAI,OAAA;AAAA,IACP,aAAc,CAAA,EAAA;AAAA,IACd,cAAc,IAAK,CAAA,EAAA;AAAA,IACnB,aAAc,CAAA,OAAA;AAAA,IACd,aAAc,CAAA,MAAA;AAAA,IACd,YAAA;AAAA,IACA,IAAA;AAAA,IACA,uEAA0E,GAAA,YAAA;AAAA,IAC1E,uEAA0E,GAAA,YAAA;AAAA,IAC1E,IAAI,IAAK,CAAA,aAAA,CAAc,IAAI;AAAA,GAC/B;AACJ;;;ACbA,IAAMA,QAAAA,GAAU,IAAI,WAAA,CAAY,mCAAmC,CAAA;AAEnE,IAAM,eAAe,OACjB,IAAA,EACA,QACA,EAAA,QAAA,EACA,UACA,UACkB,KAAA;AAClB,EAAA,IAAI,UAAY,EAAA;AACZ,IAAA,OAAO,IAAI,MAAO,CAAA;AAAA,MACd,OAAc,IAAK,CAAA,YAAA;AAAA,MACnB,QAAc,IAAK,CAAA,MAAA;AAAA,MACnB,QAAc,IAAK,CAAA,MAAA;AAAA,MACnB,QAAA,EAAc,WAAW,QAAW,GAAA,IAAA;AAAA,MACpC,QAAA,EAAc,WAAW,QAAW,GAAA,IAAA;AAAA,MACpC,YAAA,EAAc,IAAK,CAAA,GAAA,EAAQ,GAAA;AAAA,KAC9B,CAAA;AAAA;AAGL,EAAA,MAAM,OAAO,MAAM,OAAA,CAAQ,IAAK,CAAA,YAAA,EAAc,KAAK,MAAM,CAAA;AAEzD,EAAA,MAAM,CAAC,OAAS,EAAA,aAAa,CAAI,GAAA,MAAM,QAAQ,GAAI,CAAA;AAAA,IAC/C,WAAY,CAAA,IAAA,CAAK,YAAc,EAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IAC1C,gBAAiB,CAAA,IAAA,CAAK,YAAc,EAAA,IAAA,CAAK,MAAM;AAAA,GAClD,CAAA;AAED,EAAA,OAAO,IAAI,MAAO,CAAA;AAAA,IACd,OAAc,IAAK,CAAA,YAAA;AAAA,IACnB,QAAc,IAAK,CAAA,MAAA;AAAA,IACnB,QAAc,IAAK,CAAA,MAAA;AAAA,IACnB,QAAA,EAAc,WAAW,QAAW,GAAA,IAAA;AAAA,IACpC,QAAA,EAAc,WAAW,QAAW,GAAA,IAAA;AAAA,IACpC,YAAA,EAAc,IAAK,CAAA,GAAA,EAAQ,GAAA;AAAA,GAC/B,EAAG,aAAe,EAAA,IAAA,EAAM,OAAO,CAAA;AACnC,CAAA;AAEa,IAAA,2BAAA,GAA8B,OACvC,QACA,EAAA,QAAA,EACA,WAAW,IACX,EAAA,UAAA,GAAa,OACb,MACkB,KAAA;AAClB,EAAA,MAAM,IAAO,GAAA,MAAMA,QAAQ,CAAA,IAAA,CAAoB,YAAc,EAAA;AAAA,IACzD,QAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACH,CAAA;AAED,EAAA,OAAO,YAAa,CAAA,IAAA,EAAM,QAAU,EAAA,QAAA,EAAU,UAAU,UAAU,CAAA;AACtE;AAEO,IAAM,yBAAyB,OAClC,GAAA,EACA,QACA,QAAW,GAAA,IAAA,EACX,aAAa,KACK,KAAA;AAClB,EAAA,MAAM,WAAW,MAAM,KAAA,CAAM,6DAA6D,GAAG,CAAA,QAAA,EAAW,MAAM,CAAE,CAAA,CAAA;AAChH,EAAA,MAAM,OAAU,GAAA,QAAA,CAAS,OAAQ,CAAA,GAAA,CAAI,YAAY,CAAA;AACjD,EAAM,MAAA,QAAA,GAAmB,OAAS,EAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAAK,IAAA,EAAA;AACjE,EAAM,MAAA,QAAA,GAAmB,OAAS,EAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAAK,IAAA,EAAA;AAEjE,EAAA,MAAM,IAAO,GAAA,MAAMA,QAAQ,CAAA,IAAA,CAAoB,YAAc,EAAA;AAAA,IACzD,QAAA;AAAA,IACA;AAAA,GACH,CAAA;AAED,EAAA,OAAO,YAAa,CAAA,IAAA,EAAM,QAAU,EAAA,QAAA,EAAU,UAAU,UAAU,CAAA;AACtE;;;ACpDO,IAAM,SAAN,MAAa;AAAA,EAChB,WACY,CAAA,WAAA,EACD,aACA,EAAA,IAAA,EACA,QACT,EAAA;AAJU,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACD,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOH,MAAM,QAAA,CAAS,MAAgB,EAAA,GAAA,EAAa,cAAuB,WAA4C,EAAA;AAC3G,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAO,OAAA,QAAA,CAAS,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAQ,EAAA,MAAA,EAAQ,GAAK,EAAA,YAAA,EAAc,WAAW,CAAA;AAAA;AAC3G;AAAA;AAAA,EAGA,MAAM,cAAmC,GAAA;AACrC,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,eAAe,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA;AACzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAa,CAAA,cAAA,EAAwB,QAAmC,EAAA;AAC1E,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAO,OAAA,YAAA,CAAa,KAAK,WAAY,CAAA,MAAA,EAAQ,gBAAgB,QAAU,EAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA;AACjG;AAAA;AAAA,EAIA,MAAM,WAAuC,GAAA;AACzC,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,YAAY,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA;AACtE,EACA,MAAM,YAAY,IAAwC,EAAA;AACtD,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,YAAY,IAAK,CAAA,WAAA,CAAY,OAAO,IAAK,CAAA,WAAA,CAAY,QAAQ,IAAI,CAAA;AAAA;AAC5E;AAAA;AAAA;AAAA,EAIA,MAAM,iBAAiB,eAAkD,EAAA;AACrE,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAM,MAAA,MAAA,GAAS,eAAmB,IAAA,IAAA,CAAK,IAAM,EAAA,MAAA;AAC7C,IAAA,IAAI,CAAC,MAAQ,EAAA;AACT,MAAA,MAAM,IAAI,KAAA;AAAA,QACN;AAAA,OAEJ;AAAA;AAEJ,IAAA,OAAO,gBAAiB,CAAA,IAAA,CAAK,WAAY,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA;AAC1D;AAAA;AAAA,EAGA,MAAM,UAA2C,GAAA;AAC7C,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,WAAW,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA;AACrE;AAAA;AAAA;AAAA,EAIA,MAAM,gBAAgB,OAAwC,EAAA;AAC1D,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,gBAAgB,IAAK,CAAA,WAAA,CAAY,OAAO,IAAK,CAAA,WAAA,CAAY,QAAQ,OAAO,CAAA;AAAA;AACnF;AAAA;AAAA,EAGA,MAAM,OAAyB,GAAA;AAC3B,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,QAAQ,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA;AAClE;AAAA;AAAA,EAGA,MAAM,cAAmC,GAAA;AACrC,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,eAAe,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA;AACzE;AAAA;AAAA;AAAA,EAIA,MAAM,WAAW,YAAwC,EAAA;AACrD,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,WAAY,CAAA,KAAA,EAAO,YAAY,CAAA;AAAA;AAC1D;AAAA;AAAA,EAIA,MAAM,WAAoC,GAAA;AACtC,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,gBAAgB,IAAK,CAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA;AAC1E;AAAA;AAAA;AAAA,EAIA,MAAM,YAAY,MAAkC,EAAA;AAChD,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,YAAY,IAAK,CAAA,WAAA,CAAY,OAAO,IAAK,CAAA,WAAA,CAAY,QAAQ,MAAM,CAAA;AAAA;AAC9E,EACA,MAAM,kBAAmB,CAAA,KAAA,GAAQ,KAAyB,EAAA;AACtD,IAAA,IAAI,CAAC,KAAS,IAAA,IAAA,CAAK,YAAY,YAAe,GAAA,IAAA,CAAK,KAAO,EAAA;AACtD,MAAO,OAAA,KAAA;AAAA;AAEX,IAAA,IAAI,CAAC,IAAK,CAAA,WAAA,CAAY,YAAY,CAAC,IAAA,CAAK,YAAY,QAAU,EAAA;AAC1D,MAAM,MAAA,IAAI,MAAM,0EAA0E,CAAA;AAAA;AAE9F,IAAM,MAAA,MAAA,GAAS,MAAM,2BAAA,CAA4B,IAAK,CAAA,WAAA,CAAY,UAAU,IAAK,CAAA,WAAA,CAAY,QAAU,EAAA,IAAA,EAAM,KAAK,CAAA;AAClH,IAAA,IAAA,CAAK,cAAc,MAAO,CAAA,WAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,qBAAqB,KAAe,EAAA,IAAA,GAAO,IAAI,KAAQ,GAAA,EAAA,EAAI,aAAa,KAAsC,EAAA;AAChH,IAAA,MAAM,KAAK,kBAAmB,EAAA;AAC9B,IAAA,OAAO,qBAAqB,KAAO,EAAA,IAAA,EAAM,OAAO,UAAY,EAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA;AAE1F","file":"index.mjs","sourcesContent":["/** @module RESTManager */\nimport { RequestOptions } from \"../types/request-handler\";\n\nexport class RestManager {\n  private readonly baseURL: string;\n\n  constructor(baseURL: string) {\n    this.baseURL = baseURL;\n  }\n\n  private async sendRequest<T>(options: RequestOptions): Promise<T> {\n    const { method, path, body, headers } = options;\n    const url = `${this.baseURL}/${path}`;\n\n    const response = await fetch(url, {\n      method,\n      body: body ? JSON.stringify(body) : undefined,\n      headers: {\n        \"Content-Type\": \"application/json\",\n        ...headers,\n        \"User-Agent\": \"@raphckrman/turboself-api\"\n      }\n    });\n\n    if (!response.ok) {\n      const responseData = await response.json();\n      throw new Error(`${response.status}: ${JSON.stringify(responseData)}`);\n    }\n\n    const responseData = await response.json();\n    return responseData as T;\n  }\n\n  async get<T>(\n    path: string,\n    headers?: Record<string, string>\n  ): Promise<T> {\n    return this.sendRequest<T>({\n      method: \"GET\",\n      path: path,\n      headers: headers\n    });\n  }\n\n  async post<T>(\n    path: string,\n    body: any,\n    options?: RequestOptions\n  ): Promise<T> {\n    return this.sendRequest<T>({\n      method: \"POST\",\n      path,\n      body,\n      headers: options?.headers\n    });\n  }\n\n  async put<T>(\n    path: string,\n    body: any,\n    options?: RequestOptions\n  ): Promise<T> {\n    return this.sendRequest<T>({\n      method: \"PUT\",\n      path,\n      body,\n      headers: options?.headers\n    });\n  }\n\n  async delete<T>(\n    path: string,\n    params?: Record<string, any>,\n    options?: RequestOptions\n  ): Promise<T> {\n    const urlParams = new URLSearchParams(params).toString();\n    const urlPath = urlParams ? `${path}?${urlParams}` : path;\n    return this.sendRequest<T>({\n      method: \"DELETE\",\n      path: urlPath,\n      headers: options?.headers\n    });\n  }\n}\n","/** REST/Endpoints */\nexport const BASE_URL = () => \"https://api-rest-prod.incb.fr/api\";\n\nexport const AUTH_LOGIN = () => \"v1/auth/login\";\nexport const AUTH_SIGNUP = () => \"v1/creation-comptes\";\nexport const AUTH_PASSWORD_RESET = (email: string) => `v1/utilisateurs/password?email=${email}`;\nexport const AUTH_PASSWORD_CHANGE = () => \"v1/utilisateurs/password\";\n\nexport const USER_BY_ID = (userId: number) => `v1/utilisateurs/${userId}`;\nexport const USER_BY_HOTE = (hostId: number) => `v1/utilisateurs/hotes/${hostId}`;\n\nexport const HOST = (hostId: number) => `v1/hotes/${hostId}`;\nexport const HOST_BALANCE = (hostId: number) => `v1/comptes/hotes/${hostId}/3`;\nexport const HOST_HOME = (hostId: number) => `v2/hotes/${hostId}/accueil`;\nexport const HOST_ACCOUNTS = (hostId: number) => `v2/hotes/${hostId}/comptes`;\nexport const HOST_SIBLINGS = (hostId: number) => `v1/hotes/${hostId}/freres-soeurs`;\nexport const HOST_BOOK_EVENING = (hostId: number) => `v1/hotes/${hostId}/resa-soir`;\nexport const HOST_HISTORY_GLOBAL = (hostId: number) => `v1/historiques/hotes/${hostId}`;\nexport const HOST_INIT_PAYMENT = (hostId: number) => `v2/hotes/${hostId}/paiements/init`;\nexport const HOST_PAYMENTS_LATEST = (hostId: number) => `v2/hotes/${hostId}/paiements-payline/latest`;\nexport const HOST_HISTORY_SPECIFIC = (hostId: number, eventId: number) => `v2/hotes/${hostId}/historiques/${eventId}`;\nexport const HOST_RESERVATIONS = (hostId: number, week?: number) => `v1/reservations/hotes/${hostId}/semaines${\"?num=\" + week || \"\"}`;\nexport const HOST_RESERVATIONS_SPECIFIC = (hostId: number, reservationId: string) => `v2/hotes/${hostId}/reservations/${reservationId}`;\nexport const HOST_BOOK_MEAL = (hostId: number) => `v2/hotes/${hostId}/reservations-jours`;\n\nexport const ESTABLISHMENT_BY_CODE = (code: string) => `v2/etablissements?code2p5=${code}`;\nexport const ESTABLISHMENT_BY_ID = (establishmentId: number) => `v1/etablissements/etabId/${establishmentId}`;\nexport const ESTABLISHMENT_SEARCH = (query: string, code: string, limit: number) => `v1/etablissements?q=${query}&code2p5=${code}&limit=${limit}`;\n\nexport const TERMINALS_BY_ID = (terminalId: number) => `v1/bornes/${terminalId}`;\n\nexport const PAYMENTS_SPECIFIC = (paymentToken: string) => `v1/paiements-payline/${paymentToken}`;\n","export class Balance {\n    constructor(\n        /** Internal identifier of a host's accounting in the digital space */\n        public id: number,\n        /** Internal identifier of the host */\n        public hostId: number,\n        /** Label of the balance */\n        public label: string,\n        /** Amount of the balance */\n        public amount: number,\n        /** Estimated host account balance (taking into account future reservations and OK payments) */\n        public estimatedAmount: number,\n        /** Date of the estimated balance */\n        public estimatedDate: Date\n    ) {}\n}\n","export class Payment {\n    constructor(\n        /** Internal identifier of Payline payment in the digital space */\n        public id: number | null,\n        /** Host ID of the buyer */\n        public hostId: number,\n        /** Amount of the payment */\n        public amount: number,\n        /** Status of the payment */\n        public status: string,\n        /** Payment token */\n        public token: string,\n        /** URL of the payment page */\n        public url: string | null,\n        /** URL to redirect to if the payment is cancelled */\n        public cancelURL: string,\n        /** URL to redirect to if the payment is successful */\n        public returnURL: string,\n        /** Date of the payment */\n        public date: Date\n    ) {}\n\n}\n","export class HistoryEvent {\n    constructor(\n        /** Internal identifier of a host's history in digital space */\n        public id: number,\n        /** Date of the operation */\n        public date: Date,\n        /** Operation details */\n        public label: string,\n        /** Amount of the operation */\n        public amount: number\n    ) {}\n\n}\n","import { BookingDay } from \"./BookingDay\";\nimport { Terminal } from \"./Terminal\";\n\nexport class Booking {\n    constructor(\n        /** Internal identifier of a host's accounting in the digital space */\n        public id: string,\n        /** Calendar week number */\n        public week: number,\n        /** Internal identifier of the host on the digital space */\n        public hostId: number,\n        /** Week Start Date */\n        public from: Date,\n        /** Week End Date */\n        public to: Date,\n        /** Terminal information */\n        public terminal: Terminal,\n        /** Days of the week available to book */\n        public days: Array<BookingDay>\n    ) {}\n}\n","export class Terminal {\n    constructor(\n        /** Internal identifier of the Self terminal in the digital space */\n        public id: number,\n        /** Internal identfeir of the Self terminal in the local database */\n        public localId: number,\n        /** 2P5 Code of the establishment */\n        public code: number,\n        /** Terminal Name (eg. Self) */\n        public name: string,\n        public prices: Array<{\n            /** Internal identifier of the price in the digital space */\n            id: number;\n            /** Internal identifier of the price in the local database */\n            localId: number;\n            /** Name of the price */\n            name: string;\n            /** Price in cents */\n            price: number;\n        }>\n    ) {}\n}\n","import { bookMeal } from \"../routes/Host\";\n\nexport class BookingDay {\n    constructor(\n        private token: string,\n        /** Internal identifier of the host on the digital space */\n        public hostId: number,\n        /** Internal identifier of the booking week in the digital space */\n        public id: string,\n        /** Whether the day is booked */\n        public booked: boolean,\n        /** Whether the day is available to book */\n        public canBook: boolean,\n        /** Day of the week */\n        public dayNumber: number,\n        /** Message to display */\n        public message: string,\n        /** Number of reservations this day */\n        public reservations: number,\n        /** Date of the day */\n        public date: Date\n    ) {}\n\n    async book(reservations = 1, bookEvening = false): Promise<BookingDay> {\n        this.booked = reservations > 0;\n        return bookMeal(this.token, this.hostId, this.id, this.date.getDay(), reservations, bookEvening);\n    }\n}\n","export function getWeekRange(weekNumber: number, year: number): { from: Date; to: Date; } {\n    weekNumber -= 2;\n    const firstDayOfYear = new Date(year, 0, 1);\n    const dayOfWeek = firstDayOfYear.getDay();\n    const daysToFirstMonday = (dayOfWeek === 0) ? 1 : (8 - dayOfWeek);\n    const firstMonday = new Date(firstDayOfYear);\n    firstMonday.setDate(firstDayOfYear.getDate() + daysToFirstMonday);\n    const weekStartDate = new Date(firstMonday);\n    weekStartDate.setDate(firstMonday.getDate() + weekNumber * 7);\n    const weekEndDate = new Date(weekStartDate);\n    weekEndDate.setDate(weekStartDate.getDate() + 6);\n    weekStartDate.setHours(0, 0, 0, 0);\n    weekEndDate.setHours(23, 59, 59, 999);\n    const timezoneOffset = weekStartDate.getTimezoneOffset() * 60000;\n    const fromLocal = new Date(weekStartDate.getTime() - timezoneOffset);\n    const toLocal = new Date(weekEndDate.getTime() - timezoneOffset);\n    return { from: fromLocal, to: toLocal };\n}\n","/** @class Establishment */\n\nimport {\n    Closure,\n    Contact,\n    Location,\n    Permissions,\n    SSOConfiguration,\n    Synchronisation\n} from \"../types/establishment\";\n\nexport class Establishment {\n    constructor(\n    /** Internal identifier of the establishment on the digital space */\n        public id: number,\n        /** Name of establishment (max length: 50) */\n        public name: string,\n        /** Currency symbol */\n        public currencySymbol: string | null,\n        /** 2p5 code */\n        public code: string | null,\n        /** URL of the establishment logo */\n        public logoUrl: string | null,\n        /** UAI (Unité Administrative Immatriculée) code, unique to each establishment */\n        public uai: string | null,\n        /** Server MAC Adress */\n        public macAddress: string | null,\n        /** Digital space greeting */\n        public motd: string,\n        /** Minimum number of meals to credit the Self account */\n        public minMealsToCredit: number | null,\n        /** Minimum debt to credit the Forfait account */\n        public minDebtToCredit: number | null,\n        /** Minimum amount to credit the Self account */\n        public minAmountToCredit: number | null,\n        /** If the establishment is disabled */\n        public disabled: boolean | null,\n        public closures: Array<Closure>,\n        public location: Location,\n        public contact: Contact,\n        public permissions: Permissions,\n        public sso: SSOConfiguration | null,\n        public synchronisation: Synchronisation\n    ) {}\n\n}\n","/** @class Host */\n\nexport class Host {\n    constructor(\n    /** Internal identifier of the host on the digital space */\n        public id: number,\n        /** Internal identifier of the host in the TurboSelf local database */\n        public localId: number,\n        public etabId: number,\n        /** First name of the host */\n        public firstName: string,\n        /** Last name of the host */\n        public lastName: string,\n        /** Host mode */\n        public mode: \"Argent\" | \"Forfait\",\n        /** Host quality */\n        public quality: string,\n        /** Host's Class */\n        public division: string,\n        /** Lunch Price */\n        public lunchPrice: number,\n        /** Type of host (Student or Commensal or Trainee) */\n        public type: number,\n        /** Host coded card number */\n        public cardNumber: number,\n        /** Access URL for Cafeteria pre-order */\n        public cafeteriaUrl: string | null,\n        public permissions: {\n            /** Does the student have the right to payment in the digital space? */\n            payment?: boolean;\n            /** Does the student have the right to reservation on the digital space? */\n            reservation?: boolean;\n            /** Is the student entitled to pre-order Cafeteria on the digital space? */\n            cafeteria?: boolean;\n            /** Is the host allowed to book if their balance is insufficient? */\n            bookWithNegativeBalance?: boolean;\n            /** Number of passages or reservations authorized at the Self for a service */\n            maxPassages?: number;\n        }\n    ) {}\n\n\n}\n","import { Establishment } from \"../structures/Establishment\";\nimport { Host } from \"../structures/Host\";\nimport { rawEstablishmentResult, rawEstablishmentSearchResult } from \"../types/establishment\";\nimport { rawHostResult } from \"../types/host\";\n\nfunction isRawEstablishmentResult(establishment: rawEstablishmentResult | rawEstablishmentSearchResult): establishment is rawEstablishmentResult {\n    return (establishment as rawEstablishmentResult).id !== undefined;\n}\n\nexport function transformToEstablishment(establishment: rawEstablishmentResult | rawEstablishmentSearchResult): Establishment {\n    return new Establishment(\n        isRawEstablishmentResult(establishment) ? (establishment.id ?? 0) : 0,\n        isRawEstablishmentResult(establishment) ? (establishment.nom || \"N/A\") : establishment.nom,\n        isRawEstablishmentResult(establishment) ? (establishment.currencySymbol || null) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.code2p5 || null) : establishment.code2p5,\n        isRawEstablishmentResult(establishment) ? (establishment.logoUrl || null) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.numEtab || null) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.pcServeur || null) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.configuration?.msgAccueil || \"\") : \"You are not logged in so you can't see all data\",\n        isRawEstablishmentResult(establishment) ? (establishment.configuration?.nbRepasMini || 0) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.configuration?.creanceMini || 0) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.configuration?.montantCreditMini || 0) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.desactive || false) : null,\n        isRawEstablishmentResult(establishment) ? (establishment.configuration?.fermetures?.map(closure => ({\n            id:      closure.id,\n            canBook: !closure.rsv,\n            canPay:  !closure.paiement,\n            from:    new Date(closure.du),\n            to:      new Date(closure.au)\n        })) || []) : [],\n        isRawEstablishmentResult(establishment) ? ({\n            city:     establishment.ville,\n            address:  establishment.adr1 + \" \" + establishment.adr2,\n            postcode: establishment.cp\n        }) : {\n            city:     null,\n            address:  null,\n            postcode: null\n        },\n        isRawEstablishmentResult(establishment) ? ({\n            phoneNumber: establishment.tel || null,\n            faxNumber:   establishment.fax || null,\n            email:       establishment.configuration?.email || null,\n            website:     establishment.configuration?.url || null\n        }) : {\n            phoneNumber: null,\n            faxNumber:   null,\n            email:       null,\n            website:     null\n        },\n        isRawEstablishmentResult(establishment) ? ({\n            maxReservationsStudentMoney:     establishment.configurationSelf?.nbmultiElvArg || null,\n            maxReservationsStudentPackage:   establishment.configurationSelf?.nbmultiElvFor || null,\n            maxReservationsCommensalMoney:   establishment.configurationSelf?.nbmultiComArg || null,\n            maxReservationsCommensalPackage: establishment.configurationSelf?.nbmultiComFor || null,\n            maxReservationsTraineeMoney:     establishment.configurationSelf?.nbmultiStgArg || null,\n            maxReservationsTraineePackage:   establishment.configurationSelf?.nbmultiStgFor || null,\n            qrCodeStudent:                   establishment.configuration?.autoriseQrCodeEleve || null,\n            qrCodeCommensal:                 establishment.configuration?.autoriseQrCodeCommensal || null,\n            qrCodeTrainee:                   establishment.configuration?.autoriseQrCodeStagiaire || null,\n            hideHistory:                     establishment.configuration?.cacherHistorique || false\n        }) : {\n            maxReservationsStudentMoney:     null,\n            maxReservationsStudentPackage:   null,\n            maxReservationsCommensalMoney:   null,\n            maxReservationsCommensalPackage: null,\n            maxReservationsTraineeMoney:     null,\n            maxReservationsTraineePackage:   null,\n            qrCodeStudent:                   null,\n            qrCodeCommensal:                 null,\n            qrCodeTrainee:                   null,\n            hideHistory:                     null\n        },\n        isRawEstablishmentResult(establishment) ? ({\n            id:         establishment.configuration?.sso?.id || null,\n            entCode:    establishment.configuration?.sso?.entCode || null,\n            entName:    establishment.configuration?.sso?.entName || null,\n            serveurCas: establishment.configuration?.sso?.serveurCas || null,\n            service:    establishment.configuration?.sso?.service || null\n        }) : {\n            id:         null,\n            entCode:    null,\n            entName:    null,\n            serveurCas: null,\n            service:    null\n        },\n        isRawEstablishmentResult(establishment) ? ({\n            firstSync: new Date(establishment.datePremSynchro || 0),\n            lastSync:  new Date(establishment.dateDernSynchro || 0)\n        }) : {\n            firstSync: new Date(0),\n            lastSync:  new Date(0)\n        }\n    );\n}\n\nexport function transformToHost(host: rawHostResult): Host {\n    return new Host(\n        host.id,\n        host.idOrig,\n        host.etab.id,\n        host.prenom,\n        host.nom,\n        host.mode,\n        host.qualite,\n        host.division,\n        host.prixDej,\n        host.type,\n        host.carteCodee,\n        host.urlCafeteria || null,\n        {\n            payment:                 host.droitPaiement || false,\n            reservation:             host.droitReservation || false,\n            cafeteria:               host.droitCafeteria || false,\n            bookWithNegativeBalance: host.autoriseReservSoldeIns,\n            maxPassages:             host.nbMulti\n        }\n    );\n}\n","import { RestManager } from \"../rest/RESTManager\";\nimport {\n    HOST,\n    HOST_BALANCE,\n    HOST_BOOK_EVENING,\n    HOST_BOOK_MEAL,\n    HOST_HISTORY_GLOBAL,\n    HOST_HOME,\n    HOST_INIT_PAYMENT,\n    HOST_RESERVATIONS,\n    HOST_SIBLINGS\n} from \"../rest/endpoints\";\nimport { Host } from \"../structures/Host\";\nimport {\n    rawBookingResult,\n    rawBookResult,\n    rawHistoryGet,\n    rawHostBalanceResult,\n    rawHostHomeResult,\n    rawHostResult,\n    rawPaymentInitResult\n} from \"../types/host\";\nimport { Balance } from \"../structures/Balance\";\nimport { Payment } from \"../structures/Payment\";\nimport { HistoryEvent } from \"../structures/HistoryEvent\";\nimport { Booking } from \"../structures/Booking\";\nimport { Terminal } from \"../structures/Terminal\";\nimport { BookingDay } from \"../structures/BookingDay\";\nimport { getWeekRange } from \"../utils/weekRange\";\nimport { transformToHost } from \"../utils/transformers\";\n\nconst manager = new RestManager(\"https://api-rest-prod.incb.fr/api\");\n\nexport const getHost = async (token: string, hostId: number): Promise<Host> => {\n    const rawHostGet = await manager.get<rawHostResult>(HOST(hostId), { Authorization: `Bearer ${token}` });\n\n    return transformToHost(rawHostGet);\n};\n\nexport const getBalances = async (token: string, hostId: number): Promise<Array<Balance>> => {\n    const rawBalanceGet = await manager.get<Array<rawHostBalanceResult>>(HOST_BALANCE(hostId), { Authorization: `Bearer ${token}` });\n    const balances: Array<Balance> = [];\n    for (const balance of rawBalanceGet) {\n        const dateString = balance.montantEstimeMsg\n            ? balance.montantEstimeMsg.match(/(\\d{2})\\/(\\d{2})\\/(\\d{4})/)?.slice(1, 4)\n            : undefined;\n        let date = new Date();\n        if (dateString) {\n            date = new Date(parseInt(dateString[2], 10), parseInt(dateString[1], 10) - 1, parseInt(dateString[0], 10));\n        }\n        balances.push(new Balance(\n            balance.id,\n            balance.hote.id,\n            balance.appli.lib,\n            balance.montant,\n            balance.montantEstime,\n            date\n        ));\n    }\n\n    return balances;\n};\n\n\nexport const initPayment = async (token: string, hostId: number, amount: number): Promise<Payment> => {\n    const rawPaymentInit = await manager.post<rawPaymentInitResult>(HOST_INIT_PAYMENT(hostId), [{\n        paiementPayline: {\n            hote: {\n                id: hostId\n            }\n        },\n        montant: amount\n    }], {\n        headers: {\n            Authorization: `Bearer ${token}`\n        }\n    });\n    return new Payment(\n        null,\n        hostId,\n        amount,\n        \"INIT\",\n        rawPaymentInit.token,\n        rawPaymentInit.redirectURL,\n        \"https://espacenumerique.turbo-self.com/PagePaiementRefuse.aspx?token=\" + rawPaymentInit.token,\n        \"https://espacenumerique.turbo-self.com/PagePaiementValide.aspx?token=\" + rawPaymentInit.token,\n        new Date()\n    );\n};\n\nexport const getHistory = async (token: string, hostId: number): Promise<Array<HistoryEvent>> => {\n    const rawHistory = await manager.get<Array<rawHistoryGet>>(HOST_HISTORY_GLOBAL(hostId), { Authorization: `Bearer ${token}` });\n    const history: Array<HistoryEvent> = [];\n    for (const event of rawHistory) {\n        history.push(new HistoryEvent(\n            event.id,\n            new Date(event.date),\n            event.detail,\n            (event.credit ?? 0) - (event.debit ?? 0)\n        ));\n    }\n\n    return history;\n};\n\nexport const getHistoryEvent = async (token: string, hostId: number, eventId: number): Promise<HistoryEvent> => {\n    const rawHistory = await manager.get<Array<rawHistoryGet>>(HOST_HISTORY_GLOBAL(hostId), { Authorization: `Bearer ${token}` });\n    const event = rawHistory.find(history => history.id === eventId);\n\n    if (!event) throw new Error(\"Event not found\");\n\n    return new HistoryEvent(\n        event.id,\n        new Date(event.date),\n        event.detail,\n        (event.credit ?? 0) - (event.debit ?? 0)\n    );\n};\n\nexport const getLastPayment = async (token: string, hostId: number): Promise<Payment> => {\n    const rawPayment = (await manager.get<rawHostHomeResult>(HOST_HOME(hostId), { Authorization: `Bearer ${token}` })).latestPaiement;\n    return new Payment(\n        rawPayment.id,\n        hostId,\n        rawPayment.montant,\n        rawPayment.statut,\n        rawPayment.token,\n        null,\n        \"https://espacenumerique.turbo-self.com/PagePaiementRefuse.aspx?token=\" + rawPayment.token,\n        \"https://espacenumerique.turbo-self.com/PagePaiementValide.aspx?token=\" + rawPayment.token,\n        new Date(rawPayment.date)\n    );\n};\n\nexport const canBookEvening = async (token: string, hostId: number): Promise<boolean> => manager.get<boolean>(HOST_BOOK_EVENING(hostId), { Authorization: `Bearer ${token}` });\n\nexport const getBookings = async (token: string, hostId: number, week?: number): Promise<Array<Booking>> => {\n    const rawBooking = await manager.get<rawBookingResult>(HOST_RESERVATIONS(hostId, week), { Authorization: `Bearer ${token}` });\n    if (!rawBooking.rsvWebDto[0]) {\n        throw new Error(\"No booking found for this week.\");\n    }\n    const weekRange = getWeekRange(rawBooking.rsvWebDto[0].semaine, rawBooking.rsvWebDto[0].annee);\n    const bookings = [];\n    for (const rawBookingDto of rawBooking.rsvWebDto) {\n        const days = [];\n\n        for (const rawDay of rawBookingDto.jours) {\n            days.push(new BookingDay(\n                token,\n                hostId,\n                rawBookingDto.id,\n                rawDay.dayReserv > 0,\n                rawDay.autorise,\n                rawDay.dayOfWeek,\n                rawDay.msg || \"\",\n                rawDay.dayReserv,\n                new Date(weekRange.from.getTime() + (rawDay.dayOfWeek - 1) * 86400000)\n            ));\n        }\n\n        bookings.push(new Booking(\n            rawBookingDto.id,\n            rawBookingDto.semaine,\n            rawBookingDto.hote.id,\n            weekRange.from,\n            weekRange.to,\n            new Terminal(\n                rawBookingDto.borne.id,\n                rawBookingDto.borne.idOrig,\n                rawBookingDto.borne.code2p5,\n                rawBookingDto.borne.lib,\n                rawBookingDto.borne.prix.map(price => ({\n                    id:      price.id,\n                    localId: price.idOrig,\n                    name:    price.lib,\n                    price:   price.prix\n                }))\n            ),\n            days\n        ));\n    }\n\n    return bookings;\n};\n\nexport const bookMeal = async (token: string, hostId: number, bookId: string, day: number, reservations = 1, bookEvening = false): Promise<BookingDay> => {\n    const rawBook = await manager.post<rawBookResult>(HOST_BOOK_MEAL(hostId), {\n        dayOfWeek: day,\n        dayReserv: reservations,\n        web:       {\n            id: bookId\n        },\n        hasHoteResaSoirActive: bookEvening\n    }, {\n        headers: {\n            Authorization: `Bearer ${token}`\n        }\n    });\n\n    return new BookingDay(\n        token,\n        hostId,\n        rawBook.id,\n        rawBook.dayReserv > 0,\n        true,\n        rawBook.dayOfWeek,\n        rawBook.msg || \"\",\n        rawBook.dayReserv,\n        new Date()\n    );\n};\n\nexport const getHostSiblings = async (token: string, hostId: number): Promise<Array<Host>> => {\n    const rawSiblings = await manager.get<Array<rawHostResult>>(HOST_SIBLINGS(hostId), { Authorization: `Bearer ${token}` });\n    const siblings: Array<Host> = [];\n    for (const rawSibling of rawSiblings) {\n        siblings.push(transformToHost(rawSibling));\n    }\n\n    return siblings;\n};\n","import { RestManager } from \"../rest/RESTManager\";\nimport { rawPasswordChangeResult, rawRequestPasswordResetResult } from \"../types/account\";\nimport { AUTH_PASSWORD_CHANGE, AUTH_PASSWORD_RESET } from \"../rest/endpoints\";\n\nconst manager = new RestManager(\"https://api-rest-prod.incb.fr/api\");\n\nexport const requestPasswordReset = async (email: string): Promise<boolean> => {\n    const rawRequestPasswordReset = await manager.get<rawRequestPasswordResetResult>(AUTH_PASSWORD_RESET(email));\n    if (rawRequestPasswordReset.rejected.length !== 0) {\n        throw new Error(`Failed to send password reset email to ${rawRequestPasswordReset.rejected.join(\", \")}`);\n    }\n    return true;\n};\n\nexport const editPassword = async (user: number, actualPassword: string, password: string, token: string): Promise<string> => {\n    const rawPasswordChange = await manager.put<rawPasswordChangeResult>(AUTH_PASSWORD_CHANGE(), {\n        id:          user,\n        password:    actualPassword,\n        newPassword: password\n    }, {\n        headers: {\n            Authorization: `Bearer ${token}`\n        }\n    });\n\n    return rawPasswordChange.token;\n};\n","import { RestManager } from \"../rest/RESTManager\";\nimport { ESTABLISHMENT_BY_CODE, ESTABLISHMENT_BY_ID, ESTABLISHMENT_SEARCH } from \"../rest/endpoints\";\nimport { Establishment } from \"../structures/Establishment\";\nimport { rawEstablishmentResult, rawEstablishmentSearchResult } from \"../types/establishment\";\nimport { transformToEstablishment } from \"../utils/transformers\";\n\nconst manager = new RestManager(\"https://api-rest-prod.incb.fr/api\");\n\nexport const searchEstablishments = async (query: string, code = \"\", limit = 10, minimalist = false, token?: string): Promise<Array<Establishment>> => {\n    const rawEstablishmentSearch = await manager.get<Array<rawEstablishmentSearchResult>>(ESTABLISHMENT_SEARCH(query, code, limit));\n\n    const establishments: Array<Establishment> = [];\n    if (token && !minimalist) {\n        for (const establishment of rawEstablishmentSearch) {\n            establishments.push(await getEstablishmentBy2P5(token, establishment.code2p5));\n        }\n    } else {\n        for (const establishment of rawEstablishmentSearch) {\n            establishments.push(transformToEstablishment(establishment));\n        }\n    }\n\n\n    return establishments;\n};\n\nexport const getEstablishmentBy2P5 = async (token: string, code2p5: string): Promise<Establishment> => {\n    const rawEstablishmentGet = await manager.get<Array<rawEstablishmentResult>>(ESTABLISHMENT_BY_CODE(code2p5), {\n        Authorization: `Bearer ${token}`\n    });\n    if (rawEstablishmentGet.length === 0) {\n        throw new Error(\"Establishment not found\");\n    }\n    const establishment = rawEstablishmentGet[0];\n    return transformToEstablishment(establishment);\n};\n\nexport const getEstablishment = async (token: string, etabId: number): Promise<Establishment> => {\n    const rawEstablishmentGet = await manager.get<rawEstablishmentResult>(ESTABLISHMENT_BY_ID(etabId), {\n        Authorization: `Bearer ${token}`\n    });\n    return transformToEstablishment(rawEstablishmentGet);\n};\n","import { RestManager } from \"../rest/RESTManager\";\nimport { Payment } from \"../structures/Payment\";\nimport { rawPaymentResult } from \"../types/payment\";\nimport { PAYMENTS_SPECIFIC } from \"../rest/endpoints\";\n\nconst manager = new RestManager(\"https://api-rest-prod.incb.fr/api\");\n\nexport const getPayment = async (token: string, paymentToken: string): Promise<Payment> => {\n    const rawPaymentGet = await manager.get<rawPaymentResult>(PAYMENTS_SPECIFIC(paymentToken), { Authorization: `Bearer ${token}` });\n    return new Payment(\n        rawPaymentGet.id,\n        rawPaymentGet.hote.id,\n        rawPaymentGet.montant,\n        rawPaymentGet.statut,\n        paymentToken,\n        null,\n        \"https://espacenumerique.turbo-self.com/PagePaiementRefuse.aspx?token=\" + paymentToken,\n        \"https://espacenumerique.turbo-self.com/PagePaiementValide.aspx?token=\" + paymentToken,\n        new Date(rawPaymentGet.date)\n    );\n};\n","import { RestManager } from \"../rest/RESTManager\";\nimport { AUTH_LOGIN } from \"../rest/endpoints\";\nimport { getEstablishment } from \"../routes/Establishment\";\nimport { getBalances, getHost } from \"../routes/Host\";\nimport { Client } from \"../structures/Client\";\nimport { rawAuthResult } from \"../types/authentication\";\n\nconst manager = new RestManager(\"https://api-rest-prod.incb.fr/api\");\n\nconst createClient = async (\n    data: rawAuthResult,\n    remember: boolean,\n    username: string | null,\n    password: string | null,\n    minimalist: boolean\n): Promise<Client> => {\n    if (minimalist) {\n        return new Client({\n            token:        data.access_token,\n            hostId:       data.hoteId,\n            userId:       data.userId,\n            username:     remember ? username : null,\n            password:     remember ? password : null,\n            token_expiry: Date.now() + 3300000\n        });\n    }\n\n    const host = await getHost(data.access_token, data.hoteId);\n\n    const [balance, establishment] = await Promise.all([\n        getBalances(data.access_token, data.hoteId),\n        getEstablishment(data.access_token, host.etabId)\n    ]);\n\n    return new Client({\n        token:        data.access_token,\n        hostId:       data.hoteId,\n        userId:       data.userId,\n        username:     remember ? username : null,\n        password:     remember ? password : null,\n        token_expiry: Date.now() + 3300000\n    }, establishment, host, balance);\n};\n\nexport const authenticateWithCredentials = async (\n    username: string,\n    password: string,\n    remember = true,\n    minimalist = false,\n    hoteId?: number\n): Promise<Client> => {\n    const data = await manager.post<rawAuthResult>(AUTH_LOGIN(), {\n        username,\n        password,\n        hoteId\n    });\n\n    return createClient(data, remember, username, password, minimalist);\n};\n\nexport const authenticateWithTicket = async (\n    ent: \"PRONOTE\" | string,\n    ticket: string,\n    remember = true,\n    minimalist = false\n): Promise<Client> => {\n    const response = await fetch(`https://espacenumerique.turbo-self.com/Connexion.aspx?ent=${ent}&ticket=${ticket}`);\n    const cookies = response.headers.get(\"set-cookie\");\n    const username: string = cookies?.split(\";\")[0].split(\"=\")[1] ?? \"\";\n    const password: string = cookies?.split(\";\")[0].split(\"=\")[1] ?? \"\";\n\n    const data = await manager.post<rawAuthResult>(AUTH_LOGIN(), {\n        username,\n        password\n    });\n\n    return createClient(data, remember, username, password, minimalist);\n};\n","import { Establishment } from \"./Establishment\";\nimport { Host } from \"./Host\";\nimport { Balance } from \"./Balance\";\nimport { Payment } from \"./Payment\";\nimport { HistoryEvent } from \"./HistoryEvent\";\nimport { Booking } from \"./Booking\";\nimport { BookingDay } from \"./BookingDay\";\nimport { AuthCredentials } from \"../types/authentication\";\nimport {\n    bookMeal,\n    canBookEvening,\n    getBalances,\n    getBookings,\n    getHistory,\n    getHistoryEvent,\n    getHost,\n    getHostSiblings,\n    getLastPayment,\n    initPayment\n} from \"../routes/Host\";\nimport { getEstablishment, searchEstablishments } from \"../routes/Establishment\";\nimport { authenticateWithCredentials } from \"../utils/authenticate\";\nimport { getPayment } from \"../routes/Payment\";\nimport { editPassword } from \"../routes/Account\";\n\nexport class Client {\n    constructor(\n        private credentials: AuthCredentials,\n        public establishment?: Establishment,\n        public host?: Host,\n        public balances?: Array<Balance>\n    ) {}\n    /** This method is used to book a meal.\n     * @param bookId The booking ID\n     * @param day The day\n     * @param reservations The number of reservations\n     * @param bookEvening Whether to book the evening\n     */\n    async bookMeal(bookId: string, day: number, reservations?: number, bookEvening?: boolean): Promise<BookingDay> {\n        await this.refreshBearerToken();\n        return bookMeal(this.credentials.token, this.credentials.hostId, bookId, day, reservations, bookEvening);\n    }\n    /** This method is used to check if the client can book an evening.\n     */\n    async canBookEvening(): Promise<boolean> {\n        await this.refreshBearerToken();\n        return canBookEvening(this.credentials.token, this.credentials.hostId);\n    }\n\n    /** This method is used to edit the password of the client.\n     * @param actualPassword The actual password\n     * @param password The new password\n     * @returns The token of the request\n     */\n    async editPassword(actualPassword: string, password: string): Promise<string> {\n        await this.refreshBearerToken();\n        return editPassword(this.credentials.userId, actualPassword, password, this.credentials.token);\n    }\n\n    /** This method is used to get the balances of the client.\n     */\n    async getBalances(): Promise<Array<Balance>> {\n        await this.refreshBearerToken();\n        return getBalances(this.credentials.token, this.credentials.hostId);\n    }\n    async getBookings(week?: number): Promise<Array<Booking>> {\n        await this.refreshBearerToken();\n        return getBookings(this.credentials.token, this.credentials.hostId, week);\n    }\n    /** This method is used to get the establishment of the client.\n     * @param establishmentId The establishment ID to get. If not provided, the establishment of the host will be returned.\n     */\n    async getEstablishment(establishmentId?: number): Promise<Establishment> {\n        await this.refreshBearerToken();\n        const etabId = establishmentId || this.host?.etabId;\n        if (!etabId) {\n            throw new Error(\n                \"You need to provide an establishment ID to get the establishment. \" +\n                \"You can also disable the minimalist mode on authentication.\"\n            );\n        }\n        return getEstablishment(this.credentials.token, etabId);\n    }\n    /** This method is used to get the history of the client.\n     */\n    async getHistory(): Promise<Array<HistoryEvent>> {\n        await this.refreshBearerToken();\n        return getHistory(this.credentials.token, this.credentials.hostId);\n    }\n    /** This method is used to get a specific history event.\n     * @param eventId The event ID\n     */\n    async getHistoryEvent(eventId: number): Promise<HistoryEvent> {\n        await this.refreshBearerToken();\n        return getHistoryEvent(this.credentials.token, this.credentials.hostId, eventId);\n    }\n    /** This method is used to get the host of the client.\n     */\n    async getHost(): Promise<Host> {\n        await this.refreshBearerToken();\n        return getHost(this.credentials.token, this.credentials.hostId);\n    }\n    /** This method is used to get the last payment of the client.\n     */\n    async getLastPayment(): Promise<Payment> {\n        await this.refreshBearerToken();\n        return getLastPayment(this.credentials.token, this.credentials.hostId);\n    }\n    /** This method is used to get a specific payment.\n     * @param paymentToken The payment token\n     */\n    async getPayment(paymentToken: string): Promise<Payment> {\n        await this.refreshBearerToken();\n        return getPayment(this.credentials.token, paymentToken);\n    }\n\n    /** This method is used to get siblings of the host\n     */\n    async getSiblings(): Promise<Array<Host>> {\n        await this.refreshBearerToken();\n        return getHostSiblings(this.credentials.token, this.credentials.hostId);\n    }\n    /** This method is used to initialize a payment.\n     * @param amount The amount\n     */\n    async initPayment(amount: number): Promise<Payment> {\n        await this.refreshBearerToken();\n        return initPayment(this.credentials.token, this.credentials.hostId, amount);\n    }\n    async refreshBearerToken(force = false): Promise<boolean> {\n        if (!force && this.credentials.token_expiry > Date.now()) {\n            return false;\n        }\n        if (!this.credentials.password || !this.credentials.username) {\n            throw new Error(\"You need to provide a username and password to refresh the bearer token.\");\n        }\n        const client = await authenticateWithCredentials(this.credentials.username, this.credentials.password, true, false);\n        this.credentials = client.credentials;\n        return true;\n    }\n\n\n    /** This method is used to search for establishments.\n     * @param query The query to search for.\n     * @param code The establishment code to search for.\n     * @param limit The maximum number of establishments to return.\n     * @param minimalist Whether to return only minimalist data or the full establishment data (more requests).\n     */\n    async searchEstablishments(query: string, code = \"\", limit = 10, minimalist = false): Promise<Array<Establishment>> {\n        await this.refreshBearerToken();\n        return searchEstablishments(query, code, limit, minimalist, this.credentials.token);\n    }\n}\n"]}