{"version":3,"sources":["jsdelivr-header.js","/npm/react-image-picker-editor@1.3.6/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,IAAI,MAAQ,QAAQ,SAEpB,SAAS,sBAAuB,GAAK,OAAO,GAAkB,iBAAN,GAAkB,YAAa,EAAI,EAAI,CAAE,QAAW,EAAK,CAEjH,IAAI,eAA8B,sBAAsB,OAkBpD,cAAgB,SAAS,EAAG,GAI9B,OAHA,cAAgB,OAAO,gBAClB,CAAE,UAAW,cAAgB,OAAS,SAAU,EAAG,GAAK,EAAE,UAAY,CAAG,GAC1E,SAAU,EAAG,GAAK,IAAK,IAAI,KAAK,EAAO,OAAO,UAAU,eAAe,KAAK,EAAG,KAAI,EAAE,GAAK,EAAE,GAAI,EAC7F,cAAc,EAAG,EAC1B,EAEA,SAAS,UAAU,EAAG,GACpB,GAAiB,mBAAN,GAA0B,OAAN,EAC3B,MAAM,IAAI,UAAU,uBAAyB,OAAO,GAAK,iCAE7D,SAAS,IAAO,KAAK,YAAc,CAAG,CADtC,cAAc,EAAG,GAEjB,EAAE,UAAkB,OAAN,EAAa,OAAO,OAAO,IAAM,EAAG,UAAY,EAAE,UAAW,IAAI,EACjF,CAEA,IAAI,SAAW,WAQb,OAPA,SAAW,OAAO,QAAU,SAAkB,GAC1C,IAAK,IAAI,EAAG,EAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAE5C,IAAK,IAAI,KADT,EAAI,UAAU,GACO,OAAO,UAAU,eAAe,KAAK,EAAG,KAAI,EAAE,GAAK,EAAE,IAE9E,OAAO,CACX,EACO,SAAS,MAAM,KAAM,UAC9B,EAEA,SAAS,OAAO,EAAG,GACjB,IAAI,EAAI,CAAC,EACT,IAAK,IAAI,KAAK,EAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAM,EAAE,QAAQ,GAAK,IAC9E,EAAE,GAAK,EAAE,IACb,GAAS,MAAL,GAAqD,mBAAjC,OAAO,sBACtB,KAAI,EAAI,EAAb,IAAgB,EAAI,OAAO,sBAAsB,GAAI,EAAI,EAAE,OAAQ,IAC3D,EAAE,QAAQ,EAAE,IAAM,GAAK,OAAO,UAAU,qBAAqB,KAAK,EAAG,EAAE,MACvE,EAAE,EAAE,IAAM,EAAE,EAAE,IAF4B,CAItD,OAAO,CACT,CAEA,SAAS,UAAU,EAAS,EAAY,EAAG,GAEzC,OAAO,IAAK,IAAM,EAAI,WAAU,SAAU,EAAS,GAC/C,SAAS,EAAU,GAAS,IAAM,EAAK,EAAU,KAAK,GAAS,CAAE,MAAO,GAAK,EAAO,EAAI,CAAE,CAC1F,SAAS,EAAS,GAAS,IAAM,EAAK,EAAiB,MAAE,GAAS,CAAE,MAAO,GAAK,EAAO,EAAI,CAAE,CAC7F,SAAS,EAAK,GAJlB,IAAe,EAIa,EAAO,KAAO,EAAQ,EAAO,QAJ1C,EAIyD,EAAO,MAJhD,aAAiB,EAAI,EAAQ,IAAI,GAAE,SAAU,GAAW,EAAQ,EAAQ,KAIjB,KAAK,EAAW,EAAW,CAC7G,GAAM,EAAY,EAAU,MAAM,EAAS,GAAc,KAAK,OAClE,GACF,CAEA,SAAS,YAAY,EAAS,GAC5B,IAAsG,EAAG,EAAG,EAAxG,EAAI,CAAE,MAAO,EAAG,KAAM,WAAa,GAAW,EAAP,EAAE,GAAQ,MAAM,EAAE,GAAI,OAAO,EAAE,EAAI,EAAG,KAAM,GAAI,IAAK,IAAe,EAAI,OAAO,QAA4B,mBAAb,SAA0B,SAAW,QAAQ,WACtL,OAAO,EAAE,KAAO,EAAK,GAAI,EAAS,MAAI,EAAK,GAAI,EAAU,OAAI,EAAK,GAAsB,mBAAX,SAA0B,EAAE,OAAO,UAAY,WAAa,OAAO,IAAM,GAAI,EAC1J,SAAS,EAAK,GAAK,OAAO,SAAU,GAAK,OACzC,SAAc,GACV,GAAI,EAAG,MAAM,IAAI,UAAU,mCAC3B,KAAO,IAAM,EAAI,EAAG,EAAG,KAAO,EAAI,IAAK,OACnC,GAAI,EAAI,EAAG,IAAM,EAAY,EAAR,EAAG,GAAS,EAAU,OAAI,EAAG,GAAK,EAAS,SAAO,EAAI,EAAU,SAAM,EAAE,KAAK,GAAI,GAAK,EAAE,SAAW,EAAI,EAAE,KAAK,EAAG,EAAG,KAAK,KAAM,OAAO,EAE3J,OADI,EAAI,EAAG,IAAG,EAAK,CAAS,EAAR,EAAG,GAAQ,EAAE,QACzB,EAAG,IACP,KAAK,EAAG,KAAK,EAAG,EAAI,EAAI,MACxB,KAAK,EAAc,OAAX,EAAE,QAAgB,CAAE,MAAO,EAAG,GAAI,MAAM,GAChD,KAAK,EAAG,EAAE,QAAS,EAAI,EAAG,GAAI,EAAK,CAAC,GAAI,SACxC,KAAK,EAAG,EAAK,EAAE,IAAI,MAAO,EAAE,KAAK,MAAO,SACxC,QACI,KAAM,EAAI,EAAE,MAAM,EAAI,EAAE,OAAS,GAAK,EAAE,EAAE,OAAS,KAAkB,IAAV,EAAG,IAAsB,IAAV,EAAG,IAAW,CAAE,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV,EAAG,MAAc,GAAM,EAAG,GAAK,EAAE,IAAM,EAAG,GAAK,EAAE,IAAM,CAAE,EAAE,MAAQ,EAAG,GAAI,KAAO,CACrF,GAAc,IAAV,EAAG,IAAY,EAAE,MAAQ,EAAE,GAAI,CAAE,EAAE,MAAQ,EAAE,GAAI,EAAI,EAAI,KAAO,CACpE,GAAI,GAAK,EAAE,MAAQ,EAAE,GAAI,CAAE,EAAE,MAAQ,EAAE,GAAI,EAAE,IAAI,KAAK,GAAK,KAAO,CAC9D,EAAE,IAAI,EAAE,IAAI,MAChB,EAAE,KAAK,MAAO,SAEtB,EAAK,EAAK,KAAK,EAAS,EAC5B,CAAE,MAAO,GAAK,EAAK,CAAC,EAAG,GAAI,EAAI,CAAG,CAAE,QAAU,EAAI,EAAI,CAAG,CACzD,GAAY,EAAR,EAAG,GAAQ,MAAM,EAAG,GAAI,MAAO,CAAE,MAAO,EAAG,GAAK,EAAG,QAAK,EAAQ,MAAM,EAC9E,CAtBgD,CAAK,CAAC,EAAG,GAAK,CAAG,CAuBnE,CAE2B,mBAApB,iBAAiC,gBAKxC,IAAI,SAAW,SACX,UAAY,UACZ,SAAW,UACX,OAAS,WACT,OAAS,UACT,WAAa,YACb,OAAS,OACT,aAAe,SACf,YAAc,gBACd,WAAa,aACb,QAAU,QACV,SAAW,QACX,OAAS,WACT,QAAU,SACV,UAAY,UACZ,QAAU,CACb,iBAAkB,kBAClB,gDAAiD,iDACjD,YAAa,aACb,wBAAyB,2BACzB,qBAAsB,qBACtB,gBAAiB,mBACjB,OAAQ,SACR,QAAS,UACT,iBAAkB,cAClB,eAAgB,mBAChB,gBAAiB,aACjB,iBAAkB,YAClB,OAAQ,SACR,KAAM,OACN,eAAgB,kBAChB,YAAa,YACb,aAAc,aACd,KAAM,OACN,SAAU,WACV,KAAM,OACN,WAAY,aACZ,UAAW,YACX,SAAU,WACV,MAAO,QACP,OAAQ,SACR,KAAM,OACN,MAAO,QACP,QAAS,WAGN,UAAY,YACZ,SAAW,UACX,OAAS,SACT,SAAW,UACX,OAAS,SACT,WAAa,YACb,OAAS,OACT,aAAe,SACf,YAAc,YACd,WAAa,YACb,QAAU,QACV,SAAW,QACX,OAAS,WACT,QAAU,SACV,UAAY,UACZ,QAAU,CACb,iBAAkB,sBAClB,gDAAiD,iDACjD,YAAa,eACb,wBAAyB,0BACzB,qBAAsB,iBACtB,gBAAiB,qBACjB,QAAS,UACT,iBAAkB,oBAClB,eAAgB,oBAChB,gBAAiB,gBACjB,iBAAkB,iBAClB,OAAQ,SACR,KAAM,OACN,eAAgB,kBAChB,YAAa,YACb,aAAc,aACd,OAAQ,SACR,KAAM,OACN,SAAU,WACV,KAAM,OACN,WAAY,aACZ,UAAW,YACX,SAAU,WACV,MAAO,QACP,OAAQ,SACR,KAAM,OACN,MAAO,QACP,QAAS,WAGN,UAAY,UACZ,SAAW,SACX,OAAS,OACT,SAAW,SACX,OAAS,OACT,WAAa,WACb,OAAS,OACT,aAAe,aACf,YAAc,YACd,WAAa,WACb,QAAU,QACV,SAAW,SACX,OAAS,OACT,QAAU,QACV,UAAY,UACZ,QAAU,CACb,iBAAkB,iBAClB,gDAAiD,gDACjD,YAAa,YACb,wBAAyB,wBACzB,qBAAsB,qBACtB,gBAAiB,gBACjB,QAAS,UACT,iBAAkB,iBAClB,eAAgB,eAChB,gBAAiB,gBACjB,iBAAkB,iBAClB,OAAQ,SACR,KAAM,OACN,eAAgB,eAChB,YAAa,YACb,aAAc,aACd,OAAQ,SACR,KAAM,OACN,SAAU,WACV,KAAM,OACN,WAAY,aACZ,UAAW,YACX,SAAU,WACV,MAAO,QACP,OAAQ,SACR,KAAM,OACN,MAAO,QACP,QAAS,WAGN,SAAW,YACX,UAAY,UACZ,SAAW,SACX,OAAS,WACT,OAAS,SACT,WAAa,YACb,OAAS,OACT,aAAe,aACf,YAAc,YACd,WAAa,UACb,QAAU,SACV,OAAS,UACT,QAAU,UACV,UAAY,UACZ,QAAU,CACb,iBAAkB,oBAClB,gDAAiD,mDACjD,YAAa,cACb,wBAAyB,8BACzB,qBAAsB,sBACtB,gBAAiB,sBACjB,OAAQ,SACR,QAAS,UACT,iBAAkB,uBAClB,eAAgB,mBAChB,gBAAiB,eACjB,iBAAkB,cAClB,OAAQ,SACR,KAAM,OACN,eAAgB,yBAChB,YAAa,cACb,aAAc,cACd,KAAM,OACN,SAAU,WACV,KAAM,OACN,WAAY,aACZ,UAAW,YACX,SAAU,WACV,MAAO,QACP,KAAM,OACN,MAAO,QACP,QAAS,WAGN,UAAY,WACZ,SAAW,SACX,OAAS,cACT,SAAW,YACX,OAAS,YACT,WAAa,WACb,OAAS,OACT,aAAe,aACf,YAAc,aACd,QAAU,WACV,QAAU,cACV,OAAS,OACT,QAAU,UACV,UAAY,SACZ,QAAU,CACb,iBAAkB,iBAClB,gDAAiD,2DACjD,YAAa,UACb,wBAAyB,wBACzB,qBAAsB,qBACtB,gBAAiB,aACjB,QAAS,UACT,iBAAkB,iBAClB,eAAgB,mBAChB,gBAAiB,kBACjB,iBAAkB,gBAClB,OAAQ,SACR,KAAM,OACN,eAAgB,qBAChB,YAAa,aACb,aAAc,WACd,OAAQ,SACR,KAAM,OACN,SAAU,WACV,KAAM,OACN,WAAY,aACZ,UAAW,YACX,QAAS,QACT,MAAO,QACP,KAAM,OACN,MAAO,QACP,QAAS,WAGN,QAAU,QACV,OAAS,OACT,KAAO,MACP,OAAS,MACT,KAAO,QACP,SAAW,UACX,KAAO,MACP,WAAa,UACb,UAAY,UACZ,SAAW,QACX,MAAQ,QACR,OAAS,OACT,KAAO,QACP,MAAQ,OACR,QAAU,WACV,QAAU,CACb,iBAAkB,cAClB,gDAAiD,iDACjD,YAAa,aACb,wBAAyB,aACzB,qBAAsB,eACtB,gBAAiB,YACjB,QAAS,QACT,iBAAkB,eAClB,eAAgB,cAChB,gBAAiB,kBACjB,iBAAkB,qBAClB,OAAQ,OACR,KAAM,KACN,eAAgB,YAChB,YAAa,WACb,aAAc,cACd,OAAQ,OACR,KAAM,KACN,SAAU,SACV,KAAM,KACN,WAAY,WACZ,UAAW,UACX,SAAU,SACV,MAAO,MACP,OAAQ,OACR,KAAM,KACN,MAAO,MACP,QAAS,SAGN,uBAAyB,GACzB,wBAA0B,SAAU,EAAS,EAAc,EAAO,GAElE,YADqB,IAAjB,IAA2B,GAAe,GACvC,IAAI,SAAQ,SAAU,EAAS,GAAK,OAAO,eAAU,OAAQ,OAAQ,GAAQ,WAChF,IAAI,EAAK,EAAS,EAClB,OAAO,YAAY,MAAM,SAAU,GAgD/B,OA/CA,EAAM,SAAS,cAAc,QACzB,IAAM,EAAU,GACpB,EAAI,YAAc,YAClB,EAAU,EAAM,QAAU,IAC1B,EAAgB,EAAM,oBACtB,EAAI,OAAS,WACT,IAgDW,EAhDP,EAAS,SAAS,cAAc,UAChC,EAAM,EAAO,WAAW,MACxB,EAAQ,EAAI,MAAQ,EAAI,OACxB,EAAQ,EAAM,SACd,EAAS,EAAM,WACf,aAAyC,EAAS,EAAQ,mBAC1D,EAAQ,EAAI,MACZ,EAAS,EAAI,QAEb,GACA,EAAO,MAAQ,EACf,EAAO,OAAS,EAAQ,EACpB,IACA,EAAO,MAAQ,EAAS,EACxB,EAAO,OAAS,KAIpB,EAAO,MAAQ,EACf,EAAO,OAAS,GAGhB,EAAM,WACN,EAAI,OACJ,EAAI,UAAU,EAAO,MAAQ,EAAG,EAAO,OAAS,GAChD,EAAI,OAAQ,EAAM,SAAW,KAAK,GAAM,KACxC,EAAI,WAAW,EAAO,MAAQ,GAAI,EAAO,OAAS,IAElD,EAAM,eACN,EAAI,QAmBG,EAnBoB,EAAM,aAoBtC,OAAO,KAAK,GACd,KAAI,SAAU,GACf,MAAI,CAAC,QAAQ,SAAS,GACX,GAAG,OAAO,EAAK,KAAK,OAAO,EAAK,GAAM,OAGtC,GAAG,OAAO,EAAK,KAAK,OAAO,EAAK,GAAM,IAErD,IACK,KAAK,MA3BF,EAAI,UAAU,EAAK,EAAG,EAAG,EAAO,MAAO,EAAO,QAC9C,IAAI,EAAO,EAAM,OACb,EAAU,EAAO,UAAU,SAAS,OAAO,GAAO,GAEtD,EAAQ,CACJ,QAAS,EACT,MAAO,EAAO,MACd,OAAQ,EAAO,QAEvB,EACO,CAAC,EACZ,GACJ,GAAI,IAAG,MAAK,SAAU,GAGlB,OAFA,EAAM,UAAY,EAAK,OACvB,EAAM,SAAW,EAAK,MACf,CAAE,SAAU,EAAK,QAAS,MAAO,UAAU,EAAO,EAAK,SAClE,GAaJ,EACI,UAAY,SAAU,EAAO,GAuB7B,OAtBI,EAAM,kBAAkB,QAAU,uBAClC,EAAM,kBAAkB,KAAK,CACzB,UAAW,EACX,MAAO,EAAM,SACb,OAAQ,EAAM,UACd,QAAS,EAAM,QACf,OAAQ,EAAM,OACd,eAAgB,EAAM,eACtB,aAAc,EAAM,eAIxB,EAAM,kBAAkB,EAAM,kBAAkB,OAAS,GAAK,CAC1D,UAAW,EACX,MAAO,EAAM,SACb,OAAQ,EAAM,UACd,QAAS,EAAM,QACf,OAAQ,EAAM,OACd,eAAgB,EAAM,eACtB,aAAc,EAAM,cAGrB,KAAK,MAAM,KAAK,UAAU,GACrC,EAGI,aAAe,MAAM,MAAK,SAAU,GACpC,IAAI,EAAK,EAAG,YAAa,OAAqB,IAAP,EAAgB,EAAI,EAAI,EAAW,EAAG,SAAU,EAAK,EAAG,gBAAiB,OAAyB,IAAP,EAAgB,UAAY,EAAI,EAAK,EAAG,MAAO,OAAe,IAAP,EAAgB,UAAY,EAAI,EAAK,EAAG,eAAgB,OAAwB,IAAP,EAAgB,aAAe,EAAI,EAAK,EAAG,YAAa,OAAqB,IAAP,EAAgB,SAAU,GAAS,EAAI,EAAI,EAAK,EAAG,aAAc,OAAsB,IAAP,EAAgB,IAAM,EAAI,EAAK,EAAG,WAAY,OAAoB,IAAP,GAAwB,EAAI,EAAK,EAAG,UAAW,OAAmB,IAAP,EAAgB,UAAY,EAAI,EAAK,EAAG,KAAM,OAAc,IAAP,GAAwB,EACvlB,EAAK,MAAM,SAAS,IAAK,EAAS,EAAG,GAAI,EAAY,EAAG,GACxD,EAAK,MAAM,SAAS,GAAc,EAAY,EAAG,GAAI,EAAe,EAAG,GACvE,EAAkB,MAAM,OAAO,MACnC,MAAM,WAAU,WACZ,IAAI,EAAY,aAAoB,MAAQ,EAAW,CAAC,IAmB5D,SAAwB,GACpB,IACI,EAAK,KAAI,SAAU,GACf,IAAK,EAAG,MAAM,KACV,MAAM,IAAI,MAAM,qGACpB,OAAO,CACX,GACJ,CACA,MAAO,GACH,MAAM,IAAI,MAAM,mEACpB,CACJ,CA7BI,CAAe,GACf,IAAI,EAAO,EAAU,KAAI,SAAU,GAAM,MAAO,CAAG,MAAO,EAAG,MAAM,KAAM,KAAM,EAAG,MAAM,KAAM,SAAU,EAAG,MAAM,SAAa,IAC9H,GAAI,EAAc,EAAK,OAAS,GAAK,EAAc,EAC/C,MAAM,IAAI,MAAM,iCAAiC,OAAO,IAC5D,EAAU,EACd,GAAG,CAAC,IACJ,MAAM,WAAU,WACZ,IAAI,EAAI,EACJ,EAAY,aAAoB,MAAQ,EAAW,CAAC,GACxD,GAAI,EAAc,EAAU,OAAS,GAAK,EAAc,EACpD,MAAM,IAAI,MAAM,iCAAiC,OAAO,IAC5D,GAAqG,QAAtF,EAAuC,QAAjC,EAAK,EAAU,UAAiC,IAAP,OAAgB,EAAS,EAAG,aAA0B,IAAP,OAAgB,EAAS,EAAG,UAAY,EAAI,EAC7J,GAAG,CAAC,IACJ,MAAM,WAAU,WACR,GAAU,EAAO,QACjB,EAAY,EAEpB,GAAG,CAAC,IAaJ,IAAI,EAAY,aAAoB,MAAQ,EAAW,CAAC,GACxD,OAAO,eAAwB,QAAE,cAAc,MAAO,CAAE,IAAK,EAAiB,UAAW,UACrF,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,SAAU,MAAO,CAAE,gBAAiB,EAAiB,aAAc,EAAa,oBAAsB,UAAa,EAAO,KAAI,SAAU,EAAI,GAAS,OAAQ,eAAwB,QAAE,cAAc,SAAU,CAAE,QAAS,WAC1Q,EAAG,UAEP,EAAa,EACjB,EAAG,IAAK,EAAG,MAAO,MAAO,CACrB,MAAO,GAAS,GAAiC,WAAnB,GAAkD,eAAnB,EAA2C,EAAR,EAChG,gBAAiB,GAAS,GAAiC,WAAnB,EAA+B,EAAQ,WAChF,UAAW,GAAS,EAAY,aAAa,OAAO,EAAgB,WAAa,YAAa,SAAU,EAAG,UAC9G,EAAG,KACH,IACA,EAAG,MACgB,eAAnB,GAAoC,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,gBAAiB,KAAe,KAClI,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,QAAU,EAAU,KAAI,SAAU,EAAO,GACjG,OAAI,EAAQ,EACA,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CACxD,UAAW,+BACX,OAAQ,MACR,SAAU,SACV,WAAY,aAAa,OAAO,EAAe,IAAM,WACtD,IAAK,EAAO,UAAW,iBAAmB,GAAQ,GAEzD,EAAQ,EACA,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CACxD,UAAW,8BACX,OAAQ,MACR,SAAU,SACV,WAAY,aAAa,OAAO,EAAe,IAAM,WACtD,IAAK,EAAO,UAAW,iBAAmB,GAAQ,GAGjD,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CACxD,WAAY,UACZ,SAAU,OACV,OAAQ,OACR,SAAU,WACV,WAAY,aAAa,OAAO,EAAe,IAAM,WACtD,IAAK,EAAO,UAAW,gBAAkB,EAExD,KACR,IACI,QAAU,MAAM,MAAK,SAAU,GAC/B,EAAG,KAAM,IAAI,EAAW,EAAG,SAC3B,OADqC,EAAG,KAAM,EAAG,KAAM,EAAG,SACnD,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,gBAAmB,EACjG,IAEI,MAAQ,MAAM,MAAK,SAAU,GAC7B,IAAI,EAAK,EAAO,EAAoB,EAAG,kBAAmB,EAAmB,EAAG,iBAAkB,EAAiB,EAAG,eAAgB,EAAU,EAAG,QAAS,EAAS,EAAG,OAAQ,EAAY,OAAO,EAAI,CAAC,oBAAqB,mBAAoB,iBAAkB,UAAW,WAC1Q,EAAK,MAAM,SAAS,EAAM,OAAQ,EAAQ,EAAG,GAAI,EAAW,EAAG,GAC/D,EAAW,MAAM,SACjB,EAAW,MAAM,QAAO,GA0B5B,SAAS,EAAY,GACb,CAAC,WAAY,SAAS,SAAS,EAAM,OACrC,EAAS,EAAE,OAAO,SAClB,GAAkB,EAAe,EAAE,OAAO,WAG1C,EAAS,EAAE,OAAO,OAClB,GAAkB,EAAe,EAAE,OAAO,OAElD,CACA,OAnCA,MAAM,QAAO,GASb,MAAM,WAAU,WACZ,GAAK,EAAL,CAEA,IAAI,EAAS,QASb,OALA,aAAa,EAAS,SACtB,EAAS,QAAU,YAAW,WAC1B,aAAa,EAAS,SACtB,EAAiB,EACrB,GAAG,GAAW,KACP,WACH,aAAa,EAAS,QAC1B,EAVI,EAAS,SAAU,CAFb,CAad,GAAG,CAAC,IAWI,eAAwB,QAAE,cAAc,eAAwB,QAAE,SAAU,KAChF,GAAsB,eAAwB,QAAE,cAAc,QAAS,SAAS,CAAE,cAAe,GAAU,EAAW,CAAE,UAAW,aAA6C,EAAS,EAAU,UAAW,MAAO,EAAU,MAAO,MAAO,EAAM,MAAO,SAAU,EAAa,OAAQ,SAAU,GAC3R,EAAkB,EAAE,OAAO,MAC/B,EAAG,UAAW,SAAU,GACP,SAAT,EAAE,KACF,EAAkB,EAC1B,MACH,GAAsB,eAAwB,QAAE,cAAc,QAAS,SAAS,CAAE,cAAe,GAAU,EAAW,CAAE,UAAW,aAA6C,EAAS,EAAU,UAAW,MAAO,EAAU,MAAO,MAAO,EAAM,MAAO,SAAU,KAC7Q,IAEI,gBAAkB,CAClB,SAAU,EACV,KAAM,EACN,WAAY,EACZ,UAAW,EACX,OAAQ,EACR,SAAU,EACV,MAAO,GAEP,YAAc,MAAM,MAAK,SAAU,GACnC,IAAI,EAAS,EAAG,OAAQ,EAAQ,EAAG,MAAO,EAAK,EAAG,aAAc,OAAsB,IAAP,EAAgB,gBAAkB,EAAI,EAAK,EAAG,aAAc,OAAsB,IAAP,EAAgB,WAAc,EAAI,EACxL,EAAK,MAAM,SAAS,GAAe,EAAQ,EAAG,GAAI,EAAW,EAAG,GA2BpE,OA1BA,MAAM,WAAU,WAER,EADA,EACS,KAAK,MAAM,KAAK,UAAU,SAAS,SAAS,CAAC,EAAG,GAAQ,KAGxD,gBAEjB,GAAG,CAAC,IAmBI,eAAwB,QAAE,cAAc,MAAO,KACnD,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,aAAc,cAAe,kBAAoB,EAAiB,UAC5H,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,aAAc,cAAe,oBAAsB,EAAM,UAAU,QAAQ,KACzI,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,OAAQ,WAAY,GAAI,WAAY,KAAM,WAAY,UAAW,cAAe,iBAvBzI,SAA0B,GACtB,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,SAAU,IAC3D,EAqB6K,QAAS,IAAK,eAAgB,SAAU,GACrM,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,SAAU,IACvD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,IAAK,IAAK,IAAK,KAAM,OAAQ,MAAO,EAAM,YACzE,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,aAAc,cAAe,oBAAsB,EAAmB,YAChI,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,aAAc,cAAe,sBAAwB,EAAM,YAAY,QAAQ,KAC7I,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,OAAQ,aAAc,GAAI,aAAc,KAAM,aAAc,UAAW,cAAe,iBA/B/I,SAA4B,GACxB,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,WAAY,IAC7D,EA6BqL,eAAgB,SAAU,GAC/L,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,WAAY,IACzD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,IAAK,IAAK,IAAK,KAAM,OAAQ,MAAO,EAAM,cACzE,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAkB,WAC5F,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,gBAAkB,EAAM,WAAW,QAAQ,KACzG,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,OAAQ,YAAa,GAAI,YAAa,KAAM,YAAa,UAAW,cAAe,iBAvC5I,SAA2B,GACvB,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,UAAW,IAC5D,EAqCiL,QAAS,IAAK,eAAgB,SAAU,GACzM,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,UAAW,IACxD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,IAAK,IAAK,IAAK,KAAM,OAAQ,MAAO,EAAM,aACzE,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAiB,UAC3F,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,aAAc,cAAe,qBAAuB,EAAM,UAAU,QAAQ,KAC1I,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,cAAe,iBA/CnF,SAA0B,GACtB,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,SAAU,IAC3D,EA6CuH,eAAgB,SAAU,GACjI,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,SAAU,IACvD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,IAAK,IAAK,IAAK,KAAM,OAAQ,MAAO,EAAM,YACzE,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAc,OACxF,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,gBAAkB,EAAM,OAAO,QAAQ,KACrG,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,cAAe,iBAvDnF,SAAuB,GACnB,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,MAAO,IACxD,EAqDoH,eAAgB,SAAU,GAC9H,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,MAAO,IACpD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,IAAK,IAAK,IAAK,KAAM,OAAQ,MAAO,EAAM,SACzE,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAa,MACvF,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,gBAAkB,EAAM,MAAM,QAAQ,KACpG,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,cAAe,iBA/DnF,SAAsB,GAClB,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,KAAM,IACvD,EA6DmH,eAAgB,SAAU,GAC7H,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,KAAM,IACnD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,IAAK,IAAK,IAAK,KAAM,OAAQ,MAAO,EAAM,QACjF,KAMA,WAGI,IAFA,IAAI,EAAW,EACX,EAAU,CAAC,KAAM,MAAO,SAAU,KAC7B,EAAI,EAAG,EAAI,EAAQ,SAAW,OAAO,sBAAuB,IACjE,OAAO,sBAAwB,OAAQ,EAAQ,GAAK,yBACpD,OAAO,qBAAwB,OAAQ,EAAQ,GAAK,yBAA4B,OAAQ,EAAQ,GAAK,+BAEpG,OAAO,wBACR,OAAO,sBAAwB,SAAU,EAAU,GAC/C,IAAI,GAAW,IAAI,MAAO,UACtB,EAAa,KAAK,IAAI,EAAG,IAAM,EAAW,IAC1C,EAAK,OAAO,YAAW,WACvB,EAAS,EAAW,EACxB,GAAG,GAEH,OADA,EAAW,EAAW,EACf,CACX,GACC,OAAO,uBACR,OAAO,qBAAuB,SAAU,GACpC,aAAa,EACjB,EACP,CArBD,GAuBA,WACI,GAAkC,mBAAvB,OAAO,YACd,OAAO,EACX,SAAS,EAAY,EAAO,GACxB,EAAS,GAAU,CAAE,SAAS,EAAO,YAAY,EAAO,YAAQ,GAChE,IAAI,EAAM,SAAS,YAAY,eAE/B,OADA,EAAI,gBAAgB,EAAO,EAAO,QAAS,EAAO,WAAY,EAAO,QAC9D,CACX,CACA,EAAY,UAAY,OAAO,MAAM,UACrC,OAAO,YAAc,CACxB,CAXD,GAaA,SAAW,GACP,IAEI,OADA,IAAI,YAAY,SACT,CACX,CACA,MAAO,GAEP,CAEA,SAAS,EAAW,EAAW,GAC3B,EAAS,GAAU,CAAE,SAAS,EAAO,YAAY,GACjD,IAAI,EAAa,SAAS,YAAY,cAEtC,OADA,EAAW,eAAe,EAAW,EAAO,QAAS,EAAO,WAAY,EAAQ,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MACvH,CACX,CACA,EAAW,UAAY,MAAM,UAC7B,EAAO,WAAa,CACvB,CAjBD,CAiBG,QAKH,IAAI,OACA,SAAgB,EAAU,EAAa,EAAQ,GAC3C,IAAI,EAAO,KAoBX,SAAS,EAAU,GACf,EAAE,kBACF,SAAS,oBAAoB,UAAW,GACxC,SAAS,oBAAoB,YAAa,GAE1C,EAAK,SAAS,cAAc,IAAI,YAAY,YAAa,CACrD,OAAQ,CAAE,OAAQ,KAE1B,CACA,SAAS,EAAY,GACjB,EAAE,kBAEF,EAAK,SAAS,cAAc,IAAI,YAAY,aAAc,CACtD,OAAQ,CAAE,OAAQ,EAAE,QAAS,OAAQ,EAAE,WAE/C,CAlCA,KAAK,SAAW,EAChB,KAAK,YAAc,EACnB,KAAK,OAAS,EACd,KAAK,SAAW,EAEhB,KAAK,GAAK,SAAS,cAAc,OACjC,KAAK,GAAG,UAAY,gBACpB,KAAK,GAAG,MAAM,OAAS,EAEvB,KAAK,GAAG,iBAAiB,aACzB,SAAqB,GACjB,EAAE,kBACF,SAAS,iBAAiB,UAAW,GACrC,SAAS,iBAAiB,YAAa,GAEvC,EAAK,SAAS,cAAc,IAAI,YAAY,cAAe,CACvD,OAAQ,CAAE,OAAQ,KAE1B,GAiBJ,EAOA,IAAqB,WACrB,SAAS,EAAI,EAAI,EAAI,EAAI,GACrB,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,CACd,CAqOA,OA7NA,EAAI,UAAU,IAAM,SAAU,EAAI,EAAI,EAAI,GAStC,YARW,IAAP,IAAiB,EAAK,WACf,IAAP,IAAiB,EAAK,WACf,IAAP,IAAiB,EAAK,WACf,IAAP,IAAiB,EAAK,MAC1B,KAAK,GAAW,MAAN,EAAa,KAAK,GAAK,EACjC,KAAK,GAAW,MAAN,EAAa,KAAK,GAAK,EACjC,KAAK,GAAW,MAAN,EAAa,KAAK,GAAK,EACjC,KAAK,GAAW,MAAN,EAAa,KAAK,GAAK,EAC1B,IACX,EAKA,EAAI,UAAU,MAAQ,WAClB,OAAO,KAAK,IAAI,KAAK,GAAK,KAAK,GACnC,EAKA,EAAI,UAAU,OAAS,WACnB,OAAO,KAAK,IAAI,KAAK,GAAK,KAAK,GACnC,EAQA,EAAI,UAAU,OAAS,SAAU,EAAU,EAAW,QACnC,IAAX,IAAqB,EAAS,CAAC,EAAG,IACtC,IAAI,EAAQ,KAAK,GAAK,KAAK,QAAU,EAAO,GACxC,EAAQ,KAAK,GAAK,KAAK,SAAW,EAAO,GAK7C,OAJA,KAAK,GAAK,EAAQ,EAAW,EAAO,GACpC,KAAK,GAAK,EAAQ,EAAY,EAAO,GACrC,KAAK,GAAK,KAAK,GAAK,EACpB,KAAK,GAAK,KAAK,GAAK,EACb,IACX,EAOA,EAAI,UAAU,MAAQ,SAAU,EAAQ,QACrB,IAAX,IAAqB,EAAS,CAAC,EAAG,IACtC,IAAI,EAAW,KAAK,QAAU,EAC1B,EAAY,KAAK,SAAW,EAEhC,OADA,KAAK,OAAO,EAAU,EAAW,GAC1B,IACX,EAIA,EAAI,UAAU,KAAO,SAAU,EAAG,QACpB,IAAN,IAAgB,EAAI,WACd,IAAN,IAAgB,EAAI,MACxB,IAAI,EAAQ,KAAK,QACb,EAAS,KAAK,SAOlB,OANA,EAAU,OAAN,EAAa,KAAK,GAAK,EAC3B,EAAU,OAAN,EAAa,KAAK,GAAK,EAC3B,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,EAAI,EACd,KAAK,GAAK,EAAI,EACP,IACX,EAMA,EAAI,UAAU,iBAAmB,SAAU,GAIvC,YAHc,IAAV,IAAoB,EAAQ,CAAC,EAAG,IAG7B,CAFC,KAAK,QAAU,EAAM,GACrB,KAAK,SAAW,EAAM,GAElC,EAMA,EAAI,UAAU,iBAAmB,SAAU,GAIvC,YAHc,IAAV,IAAoB,EAAQ,CAAC,EAAG,IAG7B,CAFC,KAAK,GAAK,KAAK,QAAU,EAAM,GAC/B,KAAK,GAAK,KAAK,SAAW,EAAM,GAE5C,EASA,EAAI,UAAU,iBAAmB,SAAU,EAAO,EAAQ,GAGtD,QAFe,IAAX,IAAqB,EAAS,CAAC,EAAG,SACzB,IAAT,IAAmB,EAAO,UAChB,OAAV,EAAJ,CAKA,OAFA,KAAK,QACL,KAAK,SACG,GACJ,IAAK,SAML,QACI,KAAK,OAAO,KAAK,QAAS,KAAK,QAAU,EAAO,SAJpD,IAAK,QACD,KAAK,OAAwB,EAAhB,KAAK,SAAgB,EAAO,KAAK,SAAU,GAKhE,OAAO,IAbP,CAcJ,EAQA,EAAI,UAAU,oBAAsB,SAAU,EAAe,EAAgB,QAC1D,IAAX,IAAqB,EAAS,CAAC,EAAG,IAEtC,IAAI,EAAK,KAAK,iBAAiB,GAAS,EAAU,EAAG,GAAI,EAAU,EAAG,GAClE,EAAY,EACZ,EAAW,EACX,EAAa,EAAgB,EAC7B,EAAc,EAAiB,EAG/B,GAAc,EAAI,EAAO,GAAK,EAC9B,GAAc,EAAI,EAAO,GAAK,EAE9B,EAAK,CAAC,KAAM,MAAO,EAAW,EAAG,GAAI,EAAY,EAAG,GACxD,OAAQ,GACJ,KAAM,EACF,EAAW,EACX,MACJ,KAAK,EACD,EAA8C,EAAlC,KAAK,IAAI,EAAW,GAChC,MACJ,KAAK,EACD,EAAW,EAGnB,OAAQ,GACJ,KAAM,EACF,EAAY,EACZ,MACJ,KAAK,EACD,EAA+C,EAAlC,KAAK,IAAI,EAAU,GAChC,MACJ,KAAK,EACD,EAAY,EAIpB,GAAI,KAAK,QAAU,EAAU,CACzB,IAAI,EAAS,EAAW,KAAK,QAC7B,KAAK,MAAM,EAAQ,EACvB,CACA,GAAI,KAAK,SAAW,EAAW,CACvB,EAAS,EAAY,KAAK,SAC9B,KAAK,MAAM,EAAQ,EACvB,CACA,OAAO,IACX,EAWA,EAAI,UAAU,gBAAkB,SAAU,EAAU,EAAW,EAAU,EAAW,EAAQ,GAkBxF,QAjBiB,IAAb,IAAuB,EAAW,WACpB,IAAd,IAAwB,EAAY,WACvB,IAAb,IAAuB,EAAW,WACpB,IAAd,IAAwB,EAAY,WACzB,IAAX,IAAqB,EAAS,CAAC,EAAG,SACxB,IAAV,IAAoB,EAAQ,MAE5B,IACI,EAAQ,GACR,EAAwB,EAAZ,EAAiB,EAC7B,GAAwB,GAEnB,EAAQ,IACb,EAAY,EAAW,EACvB,EAAwB,EAAZ,EAAiB,IAGjC,GAAY,KAAK,QAAU,EAAU,CACrC,IAAI,EAAW,EAAU,EAAsB,OAAV,EAAiB,KAAK,SAAW,EACtE,KAAK,OAAO,EAAU,EAAW,EACrC,CACA,GAAI,GAAa,KAAK,SAAW,EAAW,CACpC,EAAqB,OAAV,EAAiB,KAAK,QAAU,EAAU,EAAY,EACrE,KAAK,OAAO,EAAU,EAAW,EACrC,CACA,GAAI,GAAY,KAAK,QAAU,EAAU,CACjC,EAAW,EAAU,EAAsB,OAAV,EAAiB,KAAK,SAAW,EACtE,KAAK,OAAO,EAAU,EAAW,EACrC,CACA,GAAI,GAAa,KAAK,SAAW,EAAW,CACpC,EAAqB,OAAV,EAAiB,KAAK,QAAU,EAAU,EAAY,EACrE,KAAK,OAAO,EAAU,EAAW,EACrC,CACA,OAAO,IACX,EACO,CACX,CA5OwB,GAuPxB,SAAS,YAAY,GACjB,EAAQ,iBAAiB,aAAc,oBACvC,EAAQ,iBAAiB,WAAY,oBACrC,EAAQ,iBAAiB,YAAa,mBAC1C,CAKA,SAAS,mBAAmB,GACxB,EAAE,iBACF,IAAI,EAAQ,EAAE,eAAe,GAM7B,EAAM,OAAO,cAAc,IAAI,WALhB,CACX,WAAY,YACZ,UAAW,YACX,SAAU,WAEqC,EAAE,MAAO,CACxD,SAAS,EACT,YAAY,EACZ,KAAM,OACN,QAAS,EAAM,QACf,QAAS,EAAM,QACf,QAAS,EAAM,QACf,QAAS,EAAM,UAEvB,CAgBA,IAAI,QAAU,CACV,CAAE,SAAU,CAAC,EAAK,GAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,aAC3D,CAAE,SAAU,CAAC,GAAK,GAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,YAC3D,CAAE,SAAU,CAAC,EAAK,GAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,aAC3D,CAAE,SAAU,CAAC,EAAK,IAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,YAC3D,CAAE,SAAU,CAAC,EAAK,GAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,aAC3D,CAAE,SAAU,CAAC,GAAK,GAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,YAC3D,CAAE,SAAU,CAAC,EAAK,GAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,aAC3D,CAAE,SAAU,CAAC,EAAK,IAAM,YAAa,CAAC,EAAG,EAAG,EAAG,GAAI,OAAQ,aAK3D,WAA4B,WAC5B,SAAS,EAAW,EAAS,EAAS,QACjB,IAAb,IAAuB,GAAW,GACtC,IAAI,EAAQ,KAKZ,GAFA,KAAK,QAAU,EAAW,aAAa,GAAW,CAAC,IAE9C,EAAQ,UAGM,OAFf,EAAU,SAAS,cAAc,IAG7B,KAAM,0BAGd,IAAK,EAAQ,aAAa,OACtB,KAAM,0BAGV,KAAK,cAAe,EACpB,KAAK,SAAW,CACZ,OAAQ,EAAQ,WAChB,QAAS,GAGR,IACqB,IAAlB,EAAQ,OAAkC,IAAnB,EAAQ,OAC/B,EAAQ,OAAS,WACb,EAAM,WAAW,EACrB,EAGA,KAAK,WAAW,GAG5B,CAulBA,OAnlBA,EAAW,UAAU,WAAa,SAAU,GAExC,KAAK,UAAU,GAEf,KAAK,QAAQ,gBAAgB,KAAK,WAElC,KAAK,sBACL,KAAK,qBACL,KAAK,sBAEL,KAAK,IAAM,KAAK,cAAc,KAAK,SACnC,KAAK,SAEL,KAAK,cAAe,EACc,OAA9B,KAAK,QAAQ,cACb,KAAK,QAAQ,aAAa,KAElC,EAIA,EAAW,UAAU,UAAY,SAAU,GAEvC,KAAK,YAAc,SAAS,cAAc,OAC1C,KAAK,YAAY,UAAY,mBAC7B,KAAK,SAAW,KAAK,YACrB,YAAY,KAAK,aAEjB,KAAK,UAAY,SAAS,cAAc,OACxC,KAAK,UAAU,UAAY,SAE3B,KAAK,QAAU,SAAS,cAAc,OACtC,KAAK,QAAQ,aAAa,MAAO,EAAS,aAAa,QACvD,KAAK,QAAQ,aAAa,MAAO,EAAS,aAAa,QACvD,KAAK,QAAQ,UAAY,eAEzB,KAAK,eAAiB,KAAK,QAAQ,YACnC,KAAK,eAAe,UAAY,sBAEhC,KAAK,SAAW,SAAS,cAAc,OACvC,KAAK,SAAS,UAAY,IAAI,MAAM,GAC/B,KAAK,GACL,KAAI,WAAc,MAAO,gDAAoD,IAC7E,KAAK,IACV,KAAK,SAAS,UAAY,gBAE1B,KAAK,UAAY,SAAS,cAAc,OACxC,KAAK,UAAU,UAAY,iBAE3B,IAAI,EAAoB,SAAS,cAAc,OAC/C,EAAkB,UAAY,yBAC9B,KAAK,QAAU,GACf,IAAK,IAAI,EAAI,EAAG,EAAI,QAAQ,OAAQ,IAAK,CACrC,IAAI,EAAS,IAAI,OAAO,QAAQ,GAAG,SAAU,QAAQ,GAAG,YAAa,QAAQ,GAAG,OAAQ,KAAK,UAC7F,KAAK,QAAQ,KAAK,GAClB,EAAkB,YAAY,EAAO,GACzC,CAEA,KAAK,UAAU,YAAY,KAAK,SAChC,KAAK,UAAU,YAAY,KAAK,gBAChC,KAAK,UAAU,YAAY,KAAK,UAChC,KAAK,UAAU,YAAY,KAAK,WAChC,KAAK,UAAU,YAAY,GAC3B,KAAK,YAAY,YAAY,KAAK,WAElC,EAAS,cAAc,aAAa,KAAK,YAAa,EAC1D,EAKA,EAAW,UAAU,SAAW,SAAU,GACtC,IAAI,EAAQ,KASZ,OAPA,KAAK,QAAQ,OAAS,WAClB,EAAM,IAAM,EAAM,cAAc,EAAM,SACtC,EAAM,QACV,EAEA,KAAK,QAAQ,IAAM,EACnB,KAAK,eAAe,IAAM,EACnB,IACX,EAIA,EAAW,UAAU,QAAU,WAC3B,KAAK,SAAS,OAAO,aAAa,KAAK,SAAS,QAAS,KAAK,YAClE,EAMA,EAAW,UAAU,cAAgB,SAAU,GAE3C,IAAI,EAAQ,EAAK,UAAU,MACvB,EAAS,EAAK,UAAU,OACxB,EAAM,IAAI,IAAI,EAAG,EAAG,EAAO,GAG/B,EAAI,iBAAiB,EAAK,YAAa,CAAC,GAAK,KAE7C,IAAI,EAAM,EAAK,QACX,EAAM,EAAK,QACf,EAAI,gBAAgB,EAAI,MAAO,EAAI,OAAQ,EAAI,MAAO,EAAI,OAAQ,CAAC,GAAK,IAAM,EAAK,aAEnF,IAAI,EAAc,KAAK,UAAU,YAC7B,EAAe,KAAK,UAAU,aAClC,EAAI,oBAAoB,EAAa,EAAc,CAAC,GAAK,KAEzD,IAAI,EAAI,KAAK,UAAU,YAAc,EAAI,EAAI,QAAU,EACnD,EAAI,KAAK,UAAU,aAAe,EAAI,EAAI,SAAW,EAIzD,OADA,EAAI,KAAK,EAAG,GACL,CACX,EAIA,EAAW,UAAU,OAAS,WAC1B,IAAI,EAAQ,KAGR,EAAQ,KAAK,MAAM,KAAK,IAAI,SAAU,EAAS,KAAK,MAAM,KAAK,IAAI,UAAW,EAAK,KAAK,MAAM,KAAK,IAAI,IAAK,EAAK,KAAK,MAAM,KAAK,IAAI,IAAK,EAAK,KAAK,MAAM,KAAK,IAAI,IAAK,EAAK,KAAK,MAAM,KAAK,IAAI,IACrM,OAAO,uBAAsB,WAEzB,EAAM,SAAS,MAAM,UAAY,aAAa,OAAO,EAAI,QAAQ,OAAO,EAAI,OAC5E,EAAM,SAAS,MAAM,MAAQ,EAAQ,KACrC,EAAM,SAAS,MAAM,OAAS,EAAS,KAEvC,EAAM,eAAe,MAAM,KAAO,QAAQ,OAAO,EAAI,QAAQ,OAAO,EAAI,QAAQ,OAAO,EAAI,QAAQ,OAAO,EAAI,OAY9G,IARA,IAAI,EAAS,EAAM,IAAI,iBAAiB,CAAC,GAAK,KAC1C,EAAS,EAAO,GAAK,EAAM,UAAU,YAAc,GAAM,GACzD,EAAS,EAAO,GAAK,EAAM,UAAU,aAAe,GAAM,GAI1D,GAAyB,IAHb,EAAQ,GAAS,EAAQ,EAAQ,GAGL,EAEnC,EAAI,EAAG,EAAI,EAAM,QAAQ,OAAQ,IAAK,CAC3C,IAAI,EAAS,EAAM,QAAQ,GAEvB,EAAc,EAAO,GAAG,YACxB,EAAe,EAAO,GAAG,aACzB,EAAO,EAAK,EAAQ,EAAO,SAAS,GAAK,EAAc,EACvD,EAAQ,EAAK,EAAS,EAAO,SAAS,GAAK,EAAe,EAG9D,EAAO,GAAG,MAAM,UAAY,aAAa,OAAO,KAAK,MAAM,GAAO,QAAQ,OAAO,KAAK,MAAM,GAAQ,OACpG,EAAO,GAAG,MAAM,OAAS,GAAyB,EAAI,EAAI,CAC9D,CACJ,GACJ,EAKA,EAAW,UAAU,oBAAsB,WACvC,IAAI,EAAW,KAAK,SACpB,EAAS,iBAAiB,cAAe,KAAK,kBAAkB,KAAK,OACrE,EAAS,iBAAiB,aAAc,KAAK,mBAAmB,KAAK,OACrE,EAAS,iBAAiB,YAAa,KAAK,gBAAgB,KAAK,MACrE,EAKA,EAAW,UAAU,mBAAqB,WACtC,IAAI,EAAW,KAAK,SAcpB,SAAS,EAAY,GACjB,EAAE,kBAEF,EAAS,cAAc,IAAI,YAAY,aAAc,CACjD,OAAQ,CAAE,OAAQ,EAAE,QAAS,OAAQ,EAAE,WAE/C,CACA,SAAS,EAAU,GACf,EAAE,kBACF,SAAS,oBAAoB,UAAW,GACxC,SAAS,oBAAoB,YAAa,GAE1C,EAAS,cAAc,IAAI,YAAY,YAAa,CAChD,OAAQ,CAAE,OAAQ,EAAE,QAAS,OAAQ,EAAE,WAE/C,CA5BA,KAAK,SAAS,iBAAiB,aAI/B,SAAqB,GACjB,EAAE,kBACF,SAAS,iBAAiB,UAAW,GACrC,SAAS,iBAAiB,YAAa,GAEvC,EAAS,cAAc,IAAI,YAAY,cAAe,CAClD,OAAQ,CAAE,OAAQ,EAAE,QAAS,OAAQ,EAAE,WAE/C,IAXA,EAAS,iBAAiB,cAAe,KAAK,kBAAkB,KAAK,OACrE,EAAS,iBAAiB,aAAc,KAAK,mBAAmB,KAAK,OACrE,EAAS,iBAAiB,YAAa,KAAK,gBAAgB,KAAK,MA0BrE,EAKA,EAAW,UAAU,oBAAsB,WACvC,IACI,EAAO,KACP,EAAS,KAkBb,SAAS,EAAY,GACjB,EAAE,kBACF,EAAK,SAAS,cAAc,IAAI,YAAY,aAAc,CACtD,OAAQ,CAAE,OAAQ,EAAE,QAAS,OAAQ,EAAE,WAE/C,CACA,SAAS,EAAU,GACf,EAAE,kBACF,SAAS,oBAAoB,UAAW,GACxC,SAAS,oBAAoB,YAAa,GAKjB,IAArB,EAAK,IAAI,SAAuC,IAAtB,EAAK,IAAI,SAIvC,EAAK,SAAS,cAAc,IAAI,YAAY,YAAa,CACrD,OAAQ,CAAE,OAAQ,EAAE,QAAS,OAAQ,EAAE,YAJvC,EAAK,IAAM,CAMnB,CAtCA,KAAK,UAAU,iBAAiB,aAChC,SAAqB,GACjB,EAAE,kBACF,SAAS,iBAAiB,UAAW,GACrC,SAAS,iBAAiB,YAAa,GAEvC,IAAI,EAAY,EAAK,UAAU,wBAC3B,EAAS,EAAE,QAAU,EAAU,KAC/B,EAAS,EAAE,QAAU,EAAU,IAEnC,EAAS,EAAK,IACd,EAAK,IAAM,IAAI,IAAI,EAAQ,EAAQ,EAAS,EAAG,EAAS,GAExD,EAAK,SAAS,cAAc,IAAI,YAAY,cAAe,CACvD,OAAQ,CAAE,OAAQ,EAAK,QAjBJ,MAmB3B,GAuBJ,EAKA,EAAW,UAAU,kBAAoB,SAAU,GAC/C,IAAI,EAAS,EAAE,OAAO,OAGlB,EAAc,CAAC,EAAI,EAAO,SAAS,GAAI,EAAI,EAAO,SAAS,IAC3D,EAAK,KAAK,IAAI,iBAAiB,GAAc,EAAU,EAAG,GAAI,EAAU,EAAG,GAC/E,KAAK,aAAe,CAAE,OAAQ,EAAQ,YAAa,EAAa,QAAS,EAAS,QAAS,GAE1D,OAA7B,KAAK,QAAQ,aACb,KAAK,QAAQ,YAAY,KAAK,WAEtC,EAKA,EAAW,UAAU,mBAAqB,SAAU,GAChD,IAAI,EAAK,EAAE,OAAQ,EAAS,EAAG,OAAQ,EAAS,EAAG,OAE/C,EAAY,KAAK,UAAU,wBAC/B,GAAkB,EAAU,KAC5B,GAAkB,EAAU,IAExB,EAAS,EACT,EAAS,EAEJ,EAAS,EAAU,QACxB,EAAS,EAAU,OAEnB,EAAS,EACT,EAAS,EAEJ,EAAS,EAAU,SACxB,EAAS,EAAU,QAGvB,IAAI,EAAS,KAAK,aAAa,YAAY,QACvC,EAAU,KAAK,aAAa,QAC5B,EAAU,KAAK,aAAa,QAC5B,EAAS,KAAK,aAAa,OAC3B,EAAwC,IAA1B,EAAO,YAAY,GACjC,EAA0C,IAA1B,EAAO,YAAY,GACnC,EAA2C,IAA1B,EAAO,YAAY,GACpC,EAAyC,IAA1B,EAAO,YAAY,GAClC,GAAc,GAAgB,KAAmB,GAAe,GAGhE,EAAK,GAAgB,EAAgB,EAAU,KAAK,IAAI,GACxD,EAAK,GAAgB,EAAgB,EAAU,KAAK,IAAI,GACxD,EAAK,GAAe,EAAiB,EAAU,KAAK,IAAI,GACxD,EAAK,GAAe,EAAiB,EAAU,KAAK,IAAI,GAC5D,EAAK,EAAe,EAAS,EAC7B,EAAK,EAAgB,EAAS,EAC9B,EAAK,EAAc,EAAS,EAC5B,EAAK,EAAiB,EAAS,EAG/B,IAAI,EAAK,EAAC,GAAO,GAAQ,EAAa,EAAG,GAAI,EAAa,EAAG,GAQ7D,IAPI,GAAgB,KAChB,EAAa,EAAe,EAAS,EAAU,EAAS,IAExD,GAAe,KACf,EAAa,EAAc,EAAS,EAAU,EAAS,GAGvD,EAAY,CACZ,IAAI,EAAM,EACV,EAAK,EACL,EAAK,EACL,EAAO,GAAK,EAAI,EAAO,EAC3B,CACA,GAAI,EAAY,CACR,EAAM,EACV,EAAK,EACL,EAAK,EACL,EAAO,GAAK,EAAI,EAAO,EAC3B,CAEA,IAAI,EAAM,IAAI,IAAI,EAAI,EAAI,EAAI,GAE9B,GAAI,KAAK,QAAQ,YAAa,CAC1B,IAAI,EAAQ,KAAK,QAAQ,YACrB,GAAqB,EACrB,EACA,EACI,EAAS,EAAI,GAAK,EAAQ,EAAI,SAC1B,EAAS,EAAI,GAAK,EAAQ,EAAI,SAEjC,GAAe,KACpB,GAAqB,GAEzB,IAAI,EAAY,EAAqB,QAAU,SAC/C,EAAI,iBAAiB,EAAO,EAAQ,EACxC,CAEA,IAAI,EAAM,KAAK,QAAQ,QACnB,EAAM,KAAK,QAAQ,QACvB,EAAI,gBAAgB,EAAI,MAAO,EAAI,OAAQ,EAAI,MAAO,EAAI,OAAQ,EAAQ,KAAK,QAAQ,aAEvF,IAAI,EAAc,KAAK,UAAU,YAC7B,EAAe,KAAK,UAAU,aAClC,EAAI,oBAAoB,EAAa,EAAc,GAEnD,KAAK,IAAM,EACX,KAAK,SAE2B,OAA5B,KAAK,QAAQ,YACb,KAAK,QAAQ,WAAW,KAAK,WAErC,EAKA,EAAW,UAAU,gBAAkB,SAAU,GAEd,OAA3B,KAAK,QAAQ,WACb,KAAK,QAAQ,UAAU,KAAK,WAEpC,EAKA,EAAW,UAAU,kBAAoB,SAAU,GAC/C,IAAI,EAAK,EAAE,OAAQ,EAAS,EAAG,OAAQ,EAAS,EAAG,OAE/C,EAAY,KAAK,UAAU,wBAC/B,GAAkB,EAAU,KAC5B,GAAkB,EAAU,IAC5B,KAAK,YAAc,CACf,QAAS,EAAS,KAAK,IAAI,GAC3B,QAAS,EAAS,KAAK,IAAI,IAGE,OAA7B,KAAK,QAAQ,aACb,KAAK,QAAQ,YAAY,KAAK,WAEtC,EAKA,EAAW,UAAU,mBAAqB,SAAU,GAChD,IAAI,EAAK,EAAE,OAAQ,EAAS,EAAG,OAAQ,EAAS,EAAG,OAC/C,EAAK,KAAK,YAAa,EAAU,EAAG,QAAS,EAAU,EAAG,QAE1D,EAAY,KAAK,UAAU,wBAC/B,GAAkB,EAAU,KAC5B,GAAkB,EAAU,IAC5B,KAAK,IAAI,KAAK,EAAS,EAAS,EAAS,GAErC,KAAK,IAAI,GAAK,GACd,KAAK,IAAI,KAAK,EAAG,MAEjB,KAAK,IAAI,GAAK,EAAU,OACxB,KAAK,IAAI,KAAK,EAAU,MAAQ,KAAK,IAAI,QAAS,MAElD,KAAK,IAAI,GAAK,GACd,KAAK,IAAI,KAAK,KAAM,GAEpB,KAAK,IAAI,GAAK,EAAU,QACxB,KAAK,IAAI,KAAK,KAAM,EAAU,OAAS,KAAK,IAAI,UAGpD,KAAK,SAE2B,OAA5B,KAAK,QAAQ,YACb,KAAK,QAAQ,WAAW,KAAK,WAErC,EAKA,EAAW,UAAU,gBAAkB,SAAU,GAEd,OAA3B,KAAK,QAAQ,WACb,KAAK,QAAQ,UAAU,KAAK,WAEpC,EAIA,EAAW,UAAU,SAAW,SAAU,GAKtC,QAJa,IAAT,IAAmB,EAAO,MACjB,OAAT,IACA,EAAO,KAAK,QAAQ,YAEZ,QAAR,EAAgB,CAChB,IAAI,EAAc,KAAK,QAAQ,aAC3B,EAAe,KAAK,QAAQ,cAC5B,EAAK,KAAK,QAAQ,wBAClB,EAAU,GADiC,EAAe,EAAG,OAE7D,EAAU,GAF0D,EAAgB,EAAG,QAG3F,MAAO,CACH,EAAG,KAAK,MAAM,KAAK,IAAI,GAAK,GAC5B,EAAG,KAAK,MAAM,KAAK,IAAI,GAAK,GAC5B,MAAO,KAAK,MAAM,KAAK,IAAI,QAAU,GACrC,OAAQ,KAAK,MAAM,KAAK,IAAI,SAAW,GAE/C,CACK,GAAY,SAAR,EAAiB,CACtB,IAAI,EAAK,KAAK,QAAQ,wBAAyB,EAAe,EAAG,MAAO,EAAgB,EAAG,OAC3F,MAAO,CACH,EAAG,MAAM,KAAK,IAAI,GAAK,EAAc,GACrC,EAAG,MAAM,KAAK,IAAI,GAAK,EAAe,GACtC,MAAO,MAAM,KAAK,IAAI,QAAU,EAAc,GAC9C,OAAQ,MAAM,KAAK,IAAI,SAAW,EAAe,GAEzD,CACK,GAAY,OAAR,EACL,MAAO,CACH,EAAG,KAAK,MAAM,KAAK,IAAI,IACvB,EAAG,KAAK,MAAM,KAAK,IAAI,IACvB,MAAO,KAAK,MAAM,KAAK,IAAI,SAC3B,OAAQ,KAAK,MAAM,KAAK,IAAI,UAGxC,EAIA,EAAW,aAAe,SAAU,GAChC,IAAI,EACa,KADb,EAES,CAAE,MAAO,KAAM,OAAQ,MAFhC,EAGS,CAAE,MAAO,KAAM,OAAQ,MAHhC,EAIW,CAAE,MAAO,IAAK,OAAQ,IAAK,KAAM,KAJ5C,EAKY,OALZ,EAMc,KANd,EAOa,KAPb,EAQY,KARZ,EASW,KAGX,EAAc,UACO,IAArB,EAAK,cAC2B,iBAArB,EAAK,YACZ,EAAc,EAAK,YAEd,EAAK,uBAAuB,QACjC,EAAc,EAAK,YAAY,GAAK,EAAK,YAAY,KAI7D,IAAI,EAAU,UACO,IAAjB,EAAK,SAA0C,OAAjB,EAAK,UACnC,EAAU,CACN,MAAO,EAAK,QAAQ,IAAM,KAC1B,OAAQ,EAAK,QAAQ,IAAM,KAC3B,KAAM,EAAK,QAAQ,IAAM,OAIjC,IAAI,EAAU,UACO,IAAjB,EAAK,SAA0C,OAAjB,EAAK,UACnC,EAAU,CACN,MAAO,EAAK,QAAQ,IAAM,KAC1B,OAAQ,EAAK,QAAQ,IAAM,KAC3B,KAAM,EAAK,QAAQ,IAAM,OAIjC,IAAI,EAAY,UACO,IAAnB,EAAK,WAA8C,OAAnB,EAAK,YACrC,EAAY,CACR,MAAO,EAAK,UAAU,IAAM,KAC5B,OAAQ,EAAK,UAAU,IAAM,KAC7B,KAAM,EAAK,UAAU,IAAM,MAInC,IAAI,EAAe,KACc,mBAAtB,EAAK,eACZ,EAAe,EAAK,cAExB,IAAI,EAAc,KACc,mBAArB,EAAK,cACZ,EAAc,EAAK,aAEvB,IAAI,EAAY,KACc,mBAAnB,EAAK,YACZ,EAAY,EAAK,WAErB,IAAI,EAAa,KACY,mBAAlB,EAAK,WAGZ,QAAQ,KAAK,sIACb,EAAa,EAAK,UAES,mBAApB,EAAK,aACZ,EAAa,EAAK,YAGtB,IAAI,EAAa,KACjB,QAAwB,IAApB,EAAK,WAA0B,CAC/B,IAAI,EAAI,EAAK,WAAW,cACxB,IAA6C,IAAzC,CAAC,OAAQ,QAAS,OAAO,QAAQ,GACjC,KAAM,uBAEV,EAAa,CACjB,CAEA,IAoBI,EAAe,SAAU,EAAG,GAAK,OAAc,OAAN,EAAa,EAAI,CAAI,EAClE,MAAO,CACH,YAAa,EAAa,EAAa,GACvC,QAAS,EAAa,EAAS,GAC/B,QAAS,EAAa,EAAS,GAC/B,UAAW,EAAa,EAAW,GACnC,WAAY,EAAa,EAAY,GACrC,aAAc,EAAa,EAAc,GACzC,YAAa,EAAa,EAAa,GACvC,WAAY,EAAa,EAAY,GACrC,UAAW,EAAa,EAAW,GACnC,gBA/BkB,SAAU,GAK5B,IAJA,IAAI,EAAQ,EAAU,YAClB,EAAS,EAAU,aAEnB,EAAW,CAAC,UAAW,UAAW,aAC7B,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACtC,IAAI,EAAM,EAAS,GACD,OAAd,KAAK,KACiB,KAAlB,KAAK,GAAK,OACc,OAApB,KAAK,GAAK,QACV,KAAK,GAAK,MAAS,KAAK,GAAK,MAAQ,IAAO,GAEvB,OAArB,KAAK,GAAK,SACV,KAAK,GAAK,OAAU,KAAK,GAAK,OAAS,IAAO,WAG/C,KAAK,GAAK,KAEzB,CACJ,EAcJ,EACO,CACX,CA3nB+B,GA+nB/B,SAAS,MAAM,EAAO,GAClB,OAAO,OAAO,KAAK,MAAO,EAAQ,IAAM,GAAa,KAAO,EAChE,CAgBA,IAAI,OAAwB,SAAU,GAMlC,SAAS,EAAO,EAAS,EAAS,GAE9B,YADkB,IAAd,IAAwB,GAAY,GACjC,EAAO,KAAK,KAAM,EAAS,EAAS,IAAc,IAC7D,CAqGA,OA7GA,UAAU,EAAQ,GAclB,EAAO,UAAU,SAAW,SAAU,GAClC,OAAO,EAAO,UAAU,SAAS,KAAK,KAAM,EAChD,EAKA,EAAO,UAAU,SAAW,SAAU,GAClC,OAAO,EAAO,UAAU,SAAS,KAAK,KAAM,EAChD,EAIA,EAAO,UAAU,QAAU,WACvB,OAAO,EAAO,UAAU,QAAQ,KAAK,KACzC,EAMA,EAAO,UAAU,OAAS,SAAU,EAAG,GAOnC,OANA,KAAK,IAAI,KAAK,EAAG,GACjB,KAAK,SAE0B,OAA3B,KAAK,QAAQ,WACb,KAAK,QAAQ,UAAU,KAAK,YAEzB,IACX,EAQA,EAAO,UAAU,SAAW,SAAU,EAAO,EAAQ,QAClC,IAAX,IAAqB,EAAS,CAAC,GAAK,KACxC,KAAK,IAAI,OAAO,EAAO,EAAQ,GAE/B,IAAI,EAAc,KAAK,UAAU,YAC7B,EAAe,KAAK,UAAU,aAQlC,OAPA,KAAK,IAAI,oBAAoB,EAAa,EAAc,CAAC,GAAK,KAE9D,KAAK,SAE0B,OAA3B,KAAK,QAAQ,WACb,KAAK,QAAQ,UAAU,KAAK,YAEzB,IACX,EAOA,EAAO,UAAU,QAAU,SAAU,EAAQ,GAQzC,YAPe,IAAX,IAAqB,EAAS,CAAC,GAAK,KACxC,KAAK,IAAI,MAAM,EAAQ,GACvB,KAAK,SAE0B,OAA3B,KAAK,QAAQ,WACb,KAAK,QAAQ,UAAU,KAAK,YAEzB,IACX,EAIA,EAAO,UAAU,MAAQ,SAAU,GAW/B,OAVI,IACA,KAAK,QAAU,SAAS,SAAS,CAAC,EAAG,KAAK,SAAU,CAAE,WAAY,KAEtE,KAAK,IAAM,KAAK,cAAc,KAAK,SAEnC,KAAK,SAE0B,OAA3B,KAAK,QAAQ,WACb,KAAK,QAAQ,UAAU,KAAK,YAEzB,IACX,EACA,EAAO,UAAU,iBAAmB,SAAU,GAC1C,IAAI,EAAiB,SAAS,cAAc,qBAC5C,IAAK,EACD,MAAM,IAAI,MAAM,2BAEhB,EAAe,MAAM,QADrB,EAC+B,QAGA,MAEvC,EACO,CACX,CA/G2B,CA+GzB,YAEE,cAAgB,MAAM,MAAK,SAAU,GACrC,IAAI,EAAM,EAAG,IAAK,EAAO,EAAG,KAAM,EAAc,EAAG,YAC/C,EAAK,MAAM,WAAY,EAAW,EAAG,GAAI,EAAc,EAAG,GAC1D,EAAK,MAAM,SAAS,CAAE,MAAO,IAAK,OAAQ,MAAQ,EAAY,EAAG,GAAI,EAAe,EAAG,GACvF,EAAS,MAAM,OAAO,MACtB,EAAQ,MAAM,SA4BlB,OA3BA,MAAM,WAAU,WACR,IACA,EAAa,SAAS,CAAC,EAAG,IACtB,EAAO,SACP,EAAO,QAAQ,SAAS,EAAK,MAAO,EAAK,QAErD,GAAG,CAAC,IACJ,MAAM,WAAU,WACR,GACA,EAAY,EAEpB,GAAG,CAAC,IACJ,MAAM,WAAU,WAaZ,OAZI,EAAM,SAAW,IACjB,EAAO,QAAU,IAAI,OAAO,UAAW,CACnC,QAAS,CAAC,GAAI,GAAI,MAClB,UAAW,CAAC,EAAU,MAAO,EAAU,OAAQ,MAC/C,aAAc,SAAU,GACpB,EAAY,aAAmC,EAAS,EAAK,WACjE,EACA,UAAW,SAAU,GACjB,EAAY,EAChB,KAGD,WAAc,IAAI,EAAI,OAAkF,QAAzE,EAAK,aAAuC,EAAS,EAAO,eAA4B,IAAP,OAAgB,EAAS,EAAG,SAAY,CACnK,GAAG,CAAC,EAAM,QAAS,IACZ,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBAC/D,eAAwB,QAAE,cAAc,MAAO,CAAE,IAAK,EAAO,IAAK,EAAU,GAAI,WACxF,IAEI,cAAgB,CAChB,QAAS,GACT,UAAW,IACX,SAAU,IACV,WAAY,IACZ,UAAW,IACX,qBAAqB,EACrB,OAAQ,OACR,kBAAmB,GACnB,eAAgB,GAChB,SAAU,GAEV,UAAY,MAAM,MAAK,SAAU,GACjC,IAAI,EACA,EAAK,EAAG,OAAQ,OAAgB,IAAP,EAAgB,CAAC,EAAI,EAAI,EAAK,EAAG,MAAO,OAAe,IAAP,EAAgB,GAAK,EAAI,EAAK,EAAG,MAAO,OAAe,IAAP,EAAgB,UAAY,EAAI,EAAK,EAAG,aAAc,OAAsB,IAAP,EAAgB,cAAgB,EAAI,EAAM,EAAG,IAAK,EAAO,EAAG,KAAM,EAAK,EAAG,YAAa,OAAqB,IAAP,EAAgB,WAAc,EAAI,EACrU,EAAK,MAAM,SAAS,GAAe,EAAQ,EAAG,GAAI,EAAW,EAAG,GAChE,EAAK,MAAM,SAAS,IAAK,EAAW,EAAG,GAAI,EAAc,EAAG,GAC5D,EAAK,MAAM,UAAS,GAAQ,EAAW,EAAG,GAAI,EAAc,EAAG,GAC/D,EAAK,MAAM,SAAS,CACpB,MAAO,IACP,OAAQ,MACR,EAAY,EAAG,GAAI,EAAe,EAAG,GACrC,EAAK,MAAM,WAAY,EAAa,EAAG,GAAI,EAAgB,EAAG,GAC9D,EAAK,MAAM,SAAS,GAAI,EAAW,EAAG,GAAI,EAAc,EAAG,GAC3D,EAAW,MAAM,QAAO,GAc5B,SAAS,EAAa,EAAc,GAEhC,YADqB,IAAjB,IAA2B,GAAe,GACvC,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAI,EAAU,EAAU,EAC5B,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EAED,OADA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa,wBAAwB,EAAM,eAAgB,EAAc,IACrF,KAAK,EAID,OAHA,EAAK,EAAG,OAAQ,EAAW,EAAG,MAAO,EAAW,EAAG,SACnD,EAAY,GACZ,EAAS,GACF,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA,EAAU,EAAG,OACb,QAAQ,IAAI,4DAA6D,GAClE,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,CA0BA,SAAS,EAAa,EAAO,GAEzB,YADqB,IAAjB,IAA2B,GAAe,GACvC,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAG,EAAU,EACjB,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EAGD,GAFA,EAAI,KAAK,IAAI,KAAK,IAAI,EAAO,KAAO,IACpC,EAAW,SAAS,CAAC,EAAG,GACpB,EAAc,CACd,GAAI,EAAS,YAAc,EACvB,MAAO,CAAC,GACZ,EAAS,UAAY,CACzB,KACK,CACD,GAAI,EAAS,WAAa,EACtB,MAAO,CAAC,GACZ,EAAS,SAAW,CACxB,CACA,EAAS,GACT,EAAG,MAAQ,EACf,KAAK,EAED,OADA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa,EAAa,EAAU,IAChD,KAAK,EAED,OADA,EAAG,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA,EAAU,EAAG,OACb,QAAQ,IAAI,uBAAwB,GAC7B,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,CAyBA,SAAS,EAAa,EAAO,GACrB,IACA,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,UAAW,KACpD,EAAa,SAAS,SAAS,CAAC,EAAG,GAAY,CAAE,MAAO,MAExD,IACA,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,WAAY,KACrD,EAAa,SAAS,SAAS,CAAC,EAAG,GAAY,CAAE,OAAQ,KAEjE,CAoCA,SAAS,EAAiB,QACF,IAAhB,IAA0B,GAAc,GAC5C,GAAY,GAER,EADA,EACY,CAAE,MAAO,EAAO,SAAU,GAE1B,KACpB,CA5KA,MAAM,WAAU,WACZ,EAAS,QAAU,OAAO,WAAa,IACvC,EAAS,KAAK,MAAM,KAAK,UAAU,SAAS,SAAS,CAAC,EAAG,GAAQ,KACrE,GAAG,CAAC,IACJ,MAAM,WAAU,WACZ,EAAY,EAChB,GAAG,CAAC,IACJ,MAAM,WAAU,WACP,GACD,EAAa,CAAE,MAAO,IAAK,OAAQ,KAE3C,GAAG,CAAC,IAkNJ,IAAI,EAAY,MAAM,SAAQ,WAC1B,OAAI,GAAY,EAAS,OACd,KAAK,KAAO,EAAI,EAAK,EAAS,OAAU,MAGxC,EAEf,GAAG,CAAC,IACJ,SAAS,EAAa,GAClB,OAAO,KAAK,MAAM,KAAK,UAAU,GACrC,CACA,SAAS,EAAS,GACd,IAAI,GAAe,EAAW,EAAQ,KAAO,IAC7C,EAAY,GACZ,EAAa,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,SAAU,KAAgB,EAC3E,CACA,OAAQ,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAa,OAAO,EAAO,OAAS,KACpG,eAAwB,QAAE,cAAc,MAAO,CAAE,GAAI,QAAS,UAAW,SACrE,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAChD,cAAe,MACf,UAAW,aACX,QAAS,OACT,aAAc,kBACd,WAAY,SACZ,QAAS,aAEb,eAAwB,QAAE,cAAc,SAAU,CAAE,UAAW,WAAY,QAAS,WAC5E,GAAiB,EACrB,GACA,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,WACzF,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,mBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,sBACvD,GAAY,eAAwB,QAAE,cAAc,MAAO,CAAE,GAAI,aAAc,IAAK,IACrF,GAAa,eAAwB,QAAE,cAAc,cAAe,CAAE,IAAK,EAAU,KAAM,EAAW,YA7FtH,SAAuB,GACnB,EAAc,GACd,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,WAAY,EAAK,OAAQ,UAAW,EAAK,QACtF,KA2FY,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBACxD,eAAwB,QAAE,cAAc,aAAc,CAAE,MAAM,EAAM,YAAY,GAC5E,eAAwB,QAAE,cAAc,QAAS,CAAE,KAAM,EAAc,SACjE,EAAS,SAAY,EAAS,UAAY,IAAe,eAAwB,QAAE,cAAc,eAAwB,QAAE,SAAU,KACnI,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBACtG,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAgB,SAC1F,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAM,QAAU,MAC9F,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,kBACxD,eAAwB,QAAE,cAAc,MAAO,CAAE,SAAU,EAAU,SAAU,EAAU,UAAW,cAAe,iBApOnJ,SAAyB,GACrB,OAAO,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAU,EACd,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EACD,EAAU,KAAK,IAAI,KAAK,IAAI,EAAS,KAAM,GAC3C,EAAW,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,QAAS,IACpD,EAAS,GACT,EAAG,MAAQ,EACf,KAAK,EAED,OADA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa,EAAa,GAAU,IAChD,KAAK,EAED,OADA,EAAG,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA,EAAU,EAAG,OACb,QAAQ,IAAI,0BAA2B,GAChC,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EA4MsL,eAAgB,SAAU,GACxK,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,QAAS,IACtD,EAAG,MAAO,CACN,SAAU,OACV,MAAO,OACP,MAAO,GACR,KAAM,QAAS,IAAK,EAAG,IAAK,IAAK,MAAO,EAAM,WACzD,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAc,MAAO,CAAE,QAAS,OAAQ,MAAO,OAAQ,eAAgB,kBAC/H,EAAO,kBACP,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,UAClG,eAAwB,QAAE,cAAc,QAAS,CAAE,SAAU,EAAU,SAAU,EAAU,KAAM,WAAY,QAAS,EAAM,oBAAqB,SAAU,SAAU,GAC7J,OAAO,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,oBAAqB,EAAE,OAAO,UAClF,EAAG,MAAO,CAAE,MAAO,KACvB,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,WAAa,EAAO,mBACzF,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBAAkB,MAAO,CAAE,UAAW,OAAQ,eAAgB,kBACtH,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAc,MAAO,CAAE,SAAU,MAAO,MAAO,QACvG,eAAwB,QAAE,cAAc,QAAS,KAAM,EAAO,kBAC9D,eAAwB,QAAE,cAAc,MAAO,CAAE,SAAU,EAAU,SAAU,EAAU,YAAa,EAAO,iBAAkB,MAAO,EAAM,SAAU,eAAgB,SAAU,GACxK,OAAO,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,SAAU,IAC9D,EAAG,KAAM,SAAU,IAAK,EAAG,IAAK,IAAM,kBAAmB,SAAU,GAC/D,EAAa,GAAO,EACxB,KACR,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAc,MAAO,CAAE,SAAU,MAAO,MAAO,QACvG,eAAwB,QAAE,cAAc,QAAS,KAAM,EAAO,mBAC9D,eAAwB,QAAE,cAAc,MAAO,CAAE,SAAU,EAAU,SAAU,EAAU,YAAa,EAAO,kBAAmB,MAAO,EAAM,UAAW,eAAgB,SAAU,GAC1K,OAAO,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,UAAW,IAC/D,EAAG,KAAM,SAAU,IAAK,EAAG,IAAK,IAAM,kBAAmB,SAAU,GAC/D,EAAa,GAAO,EACxB,MACZ,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,cAAgB,EAAe,QACzF,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBAAkB,MAAO,CAAE,UAAW,OAAQ,eAAgB,kBACtH,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAc,MAAO,CAAE,MAAO,SACtF,eAAwB,QAAE,cAAc,SAAU,CAAE,SAAU,EAAU,MAAO,EAAM,OAAQ,SAvMjI,SAAwB,GACpB,OAAO,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAU,EACd,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EACD,EAAW,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,OAAQ,EAAE,OAAO,QAC5D,EAAG,MAAQ,EACf,KAAK,EAGD,OAFA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB,EAAS,GACF,CAAC,EAAa,EAAa,GAAU,IAChD,KAAK,EAED,OADA,EAAG,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA,EAAU,EAAG,OACb,QAAQ,IAAI,yBAA0B,GAC/B,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,GAxHiB,CAAC,OAAQ,OAAQ,OAwSsI,KAAI,SAAU,EAAY,GAAS,OAAQ,eAAwB,QAAE,cAAc,SAAU,CAAE,IAAK,EAAO,MAAO,GAAc,EAAc,QAC9R,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBAAkB,MAAO,CAAE,UAAW,MAAO,eAAgB,kBACrH,eAAwB,QAAE,cAAc,OAAQ,CAAE,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,UACnG,eAAwB,QAAE,cAAc,SAAU,CAAE,SAAU,EAAU,QAAS,WAAc,OAAO,GAAU,GAAK,EAAG,UAAW,YAC/H,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,gBACrF,eAAwB,QAAE,cAAc,SAAU,CAAE,SAAU,EAAU,QAAS,WAAc,OAAO,EAAS,GAAK,EAAG,UAAW,YAC9H,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,kBACzF,eAAwB,QAAE,cAAc,OAAQ,CAAE,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,UACnG,eAAwB,QAAE,cAAc,QAAS,CAAE,cAAe,oBAAqB,KAAM,WAAY,KAAM,WAAY,SAAU,SAAU,GACvI,EAAY,EAAE,OAAO,QACzB,EAAG,QAAS,EAAU,MAAO,CAAE,MAAO,EAAO,aAAc,SAC/D,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,aAAc,MAAO,CAAE,WAAY,QAAW,EAAa,QAChI,GAAa,eAAwB,QAAE,cAAc,eAAwB,QAAE,SAAU,KACrF,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBAAkB,MAAO,CAAE,UAAW,OAAQ,eAAgB,kBACtH,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAc,MAAO,CAAE,SAAU,MAAO,MAAO,QACvG,eAAwB,QAAE,cAAc,QAAS,KAAM,EAAO,cAC9D,eAAwB,QAAE,cAAc,MAAO,CAAE,KAAM,SAAU,IAAK,EAAG,MAAO,EAAM,UAAW,eAAgB,SAAU,GACnH,OAAO,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,UAAW,IAC/D,EAAG,kBAAmB,SAAU,GAC5B,GAAc,EAAO,KACzB,EAAG,YAAa,EAAO,gBAC/B,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,aAAc,MAAO,CAAE,SAAU,MAAO,MAAO,QACvG,eAAwB,QAAE,cAAc,QAAS,KAAM,EAAO,eAC9D,eAAwB,QAAE,cAAc,MAAO,CAAE,KAAM,SAAU,IAAK,EAAG,MAAO,EAAM,WAAY,kBAAmB,SAAU,GACvH,EAAa,MAAO,EACxB,EAAG,eAAgB,SAAU,GACzB,OAAO,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,WAAY,IAChE,EAAG,YAAa,EAAO,kBACnC,eAAwB,QAAE,cAAc,IAAK,CAAE,MAAO,CAAE,aAAc,mBAClE,eAAwB,QAAE,cAAc,SAAU,CAAE,MAAO,EAAO,gBAAiB,UAAW,WAAY,QAlM1I,WACI,IAAI,EAAW,EAAa,GACxB,EAAS,SAAS,cAAc,UACpC,OAAO,IAAI,SAAQ,SAAU,EAAS,GAClC,IAAI,EAAM,EAAO,WAAW,MACxB,EAAQ,IAAI,MAChB,EAAM,IAAM,EACZ,EAAM,OAAS,WACX,IAAI,EAAW,aAA+C,EAAS,EAAW,MAC9E,EAAY,aAA+C,EAAS,EAAW,OAInF,OAHA,EAAO,OAAS,EAChB,EAAO,MAAQ,EACf,EAAI,UAAU,EAAO,KAAK,IAAI,aAA+C,EAAS,EAAW,GAAI,KAAK,IAAI,aAA+C,EAAS,EAAW,GAAI,aAA+C,EAAS,EAAW,MAAO,aAA+C,EAAS,EAAW,OAAQ,EAAG,EAAG,aAA+C,EAAS,EAAW,MAAO,aAA+C,EAAS,EAAW,QACtd,EAAQ,EAAO,UAAU,SAAS,OAAO,EAAS,QAAS,EAAS,SAC/E,EACA,EAAM,QAAU,SAAU,GACtB,EAAO,EACX,CACJ,IACK,MAAK,SAAU,GAChB,EAAS,SAAW,EAAO,MAC3B,EAAS,UAAY,EAAO,OAC5B,EAAS,eAAiB,EAC1B,EAAW,UAAU,EAAU,GAC/B,EAAS,GACT,EAAY,GACZ,GAAY,EAChB,IAAU,OAAE,SAAU,GAClB,QAAQ,IAAI,EAChB,GACJ,GAqKoC,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,UACjF,eAAwB,QAAE,cAAc,OAAQ,CAAE,MAAO,CAAE,MAAO,OAAQ,WAAY,IAAO,EAAO,qBACpH,eAAwB,QAAE,cAAc,QAAS,CAAE,SAAU,EAAU,KAAM,EAAgB,SACzF,eAAwB,QAAE,cAAc,YAAa,CAAE,MAAO,EAAO,OAAQ,EAAQ,aAAc,EAAM,aAAc,aAtI/I,SAAyB,GACrB,OAAO,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAU,EACd,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EASD,OARA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAG,CAAE,KACtB,EAAW,EAAa,IACV,aAIV,EAAS,aAAe,SAAS,SAAS,CAAC,EAAG,EAAS,cAAe,GAHtE,EAAS,aAAe,EAKrB,CAAC,EAAa,EAAa,GAAU,IAChD,KAAK,EAED,OADA,EAAG,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA,EAAM,EAAG,OACT,QAAQ,IAAI,4DAA6D,GAClE,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,MA6GgB,eAAwB,QAAE,cAAc,SAAU,CAAE,MAAO,EAAa,KAAG,SAAU,EAAM,kBAAkB,QAAU,EAAG,OAAQ,EAAK,CAAE,SAAU,YAAc,EAAG,EAAM,OAAS,SAAW,OAAQ,EAAG,IAAM,OAAQ,GAAK,UAAW,WAAY,QA5JnQ,WACI,OAAO,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAU,EACd,OAAO,YAAY,MAAM,SAAU,GAC/B,KACI,EAAW,EAAa,IACX,kBAAkB,OAAS,IACpC,EAAS,kBAAkB,MAC3B,EAAW,EAAS,kBAAkB,EAAS,kBAAkB,OAAS,GAC1E,EAAW,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,kBAAmB,EAAS,kBAAmB,UAAW,EAAS,OAAQ,SAAU,EAAS,MAAO,QAAS,EAAS,QAAS,OAAQ,EAAS,OAAQ,eAAgB,EAAS,eAAgB,aAAc,EAAS,eACpQ,EAAS,GACT,EAAY,EAAS,WAE7B,CACA,MAAO,GACH,QAAQ,IAAI,qFAAsF,EACtG,CACA,MAAO,CAAC,EACZ,GACJ,GACJ,GAyIoB,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,cACrF,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,iBAAkB,MAAO,CAAE,UAAW,OAAQ,eAAgB,gBAAiB,WAAY,WACnJ,eAAwB,QAAE,cAAc,SAAU,CAAE,UAAW,WAAY,SAAU,EAAU,QAAS,WAChG,GAAiB,EACrB,GAAK,EAAa,MACtB,GAAc,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,wBAAyB,MAAO,CAChG,MAAO,EAAY,IAAM,UAAY,QACrC,WAAY,EAAY,IAAM,MAAQ,UAE1C,SACA,EACA,QACA,EAAM,YAClC,IAEI,cAAgB,CAChB,SAAU,KACV,UAAW,QACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,KAAK,EACL,UAAU,EACV,gBAAiB,MAEjB,aAAe,CACf,UAAW,IACX,SAAU,IACV,WAAY,IACZ,UAAW,IACX,qBAAqB,EACrB,OAAQ,OACR,kBAAmB,GACnB,eAAgB,GAChB,kBAAc,EACd,QAAS,IACT,SAAU,GAEV,uBAAyB,MAAM,MAAK,SAAU,GAC9C,IAAI,EAAK,EAAG,OAAQ,OAAgB,IAAP,EAAgB,CAAC,EAAI,EAAI,EAAK,EAAG,aAAc,OAAsB,IAAP,EAAgB,GAAK,EAAI,EAAK,EAAG,MAAO,OAAe,IAAP,EAAgB,UAAY,EAAI,EAAK,EAAG,aAAc,OAAsB,IAAP,EAAgB,WAAc,EAAI,EAC9O,EAAK,MAAM,SAAS,SAAS,CAAC,EAAG,eAAgB,EAAQ,EAAG,GAAI,EAAW,EAAG,GAC9E,EAAK,MAAM,SAAS,IAAK,EAAW,EAAG,GAAI,EAAc,EAAG,GAC5D,EAAK,MAAM,UAAS,GAAQ,EAAY,EAAG,GAAI,EAAe,EAAG,GACjE,EAAK,MAAM,UAAS,GAAQ,EAAgB,EAAG,GAAI,EAAmB,EAAG,GACzE,EAAK,MAAM,SAAS,SAAU,EAAS,EAAG,GAAI,EAAY,EAAG,GAC7D,EAAK,MAAM,SAAS,eAAgB,EAAgB,EAAG,GAAI,EAAmB,EAAG,GACjF,EAAc,MAAM,OAAO,MAC3B,EAAW,MAAM,OAAO,IACxB,EAAW,MAAM,OAAO,IACxB,EAAiB,KAAK,MAAM,SAAS,IACrC,EAAY,MAAM,OAAO,YAuF7B,SAAS,EAAS,GACd,IAAI,EACJ,EAAM,iBACmF,QAAxF,EAAK,aAAiD,EAAS,EAAY,eAA4B,IAAP,GAAyB,EAAG,OACjI,CACA,SAAS,EAAiB,GACtB,IAAI,EACA,EAAgC,QAAvB,EAAK,EAAM,cAA2B,IAAP,OAAgB,EAAS,EAAG,MACxE,GAAI,EAAO,CACP,IAAI,EAAO,EAAM,GAGjB,GAFA,EAAU,QAAU,EAAK,KAAK,MAAM,KAAK,GACzC,EAAS,QAAU,EAAK,MACnB,EAAS,QAAQ,SAAS,SAC3B,OAEJ,GADA,EAAS,QAAU,QAAQ,OAAO,EAAK,KAAM,YACzC,EAAM,CACN,EAAS,SAAS,SAAS,CAAC,EAAG,GAAQ,CAAE,OAAQ,EAAS,QAAQ,MAAM,UAAU,MAClF,IAAI,EAAS,IAAI,WACjB,EAAO,OAAS,EAAmB,KAAK,MACxC,EAAO,mBAAmB,EAC9B,CACJ,CACJ,CACA,SAAS,EAAmB,GACxB,OAAO,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAc,EAAkB,EAAU,EAAa,EAAQ,EACnE,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EAMD,OALA,EAAe,EAAU,OAAO,OAChC,EAAmB,KAAK,GACxB,EAAW,SAAS,CAAC,EAAG,GACxB,EAAc,EAAS,QAAU,EACjC,EAAS,eAAiB,EAAS,QAAU,EACxC,EAAc,iBACnB,EAAW,SAAS,SAAS,CAAC,EAAG,GAAW,CAAE,QAAS,KAAK,IAAI,EAAc,iBAAmB,GAAI,KAAM,qBAAqB,EAAM,OAAQ,SACvI,CAAC,EAAa,wBAAwB,EAAS,gBAAgB,EAAO,EAAU,CAAE,iBAAiB,MAF/D,CAAC,EAAa,GAG7D,KAAK,EAKD,OAJA,EAAS,EAAG,OACZ,EAAS,EAAO,OAChB,EAAY,EAAO,UACnB,GAAa,GACN,CAAC,EAAa,GACzB,KAAK,GACD,EAAQ,SAAS,cAAc,QACzB,IAAM,EACZ,EAAM,OAAS,WACX,EAAS,kBAAoB,GAC7B,EAAS,UAAY,EAAM,OAC3B,EAAS,SAAW,EAAM,MAC1B,EAAS,OAAS,EAAS,QAAQ,MAAM,UAAU,GACnD,EAAS,kBAAkB,KAAK,CAC5B,UAAW,EACX,MAAO,EAAM,MACb,OAAQ,EAAM,OACd,QAAS,EAAS,QAClB,OAAQ,EAAS,QAAQ,MAAM,UAAU,GACzC,eAAgB,EAAS,iBAE7B,EAAS,GACT,EAAY,GACZ,GAAa,EACjB,EACA,EAAG,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,CA1JA,MAAM,QAAO,GACb,MAAM,WAAU,WAkDhB,IACQ,GAuBR,WACI,IAAI,EAAO,SAAS,KAEpB,GADgB,EAAK,cAAc,8BAE/B,OACJ,IAAI,EAAO,SAAS,cAAc,QAClC,EAAK,KAAO,0DACZ,EAAK,IAAM,aACX,EAAK,GAAK,4BACV,EAAK,YAAY,EACrB,CAnFI,GAkDI,EAAW,SAAS,SAAS,CAAC,EAAG,GAAgB,GACrD,EAAiB,GACM,MAAnB,EAAO,WACgB,MAAnB,EAAO,UACP,EAAU,SAAS,CAAC,EAAG,UAEJ,MAAnB,EAAO,UACP,EAAU,SAAS,CAAC,EAAG,UAEJ,MAAnB,EAAO,UACP,EAAU,SAAS,CAAC,EAAG,UAEJ,MAAnB,EAAO,UACP,EAAU,SAAS,CAAC,EAAG,UAEJ,MAAnB,EAAO,UACP,EAAU,SAAS,CAAC,EAAG,UAEJ,MAAnB,EAAO,UACP,EAAU,SAAS,CAAC,EAAG,UAnEnC,GAAG,CAAC,IACJ,MAAM,WAAU,YAGhB,WACW,UAAU,UAAM,OAAQ,GAAQ,WACnC,IAAI,EAAkB,EACtB,OAAO,YAAY,MAAM,SAAU,GAC/B,OAAQ,EAAG,OACP,KAAK,EACD,OAAK,EACE,CAAC,EAAa,EAAc,IADT,CAAC,EAAa,GAE5C,KAAK,EAkBD,OAjBA,EAAS,EAAG,QACZ,EAAW,EAAO,OACT,eAAiB,EAC1B,EAAS,kBAAoB,CACzB,CACI,UAAW,EAAO,SAClB,MAAO,EAAS,SAChB,OAAQ,EAAS,UACjB,QAAS,EAAS,QAClB,OAAQ,EAAS,OACjB,eAAgB,IAIxB,EAAY,EAAO,UACnB,EAAS,GACT,GAAa,GACN,CAAC,EAAa,GACzB,KAAK,GACD,EAAW,SAAS,CAAC,EAAG,IACf,eAAiB,KAC1B,EAAS,kBAAoB,GAC7B,GAAa,GACb,EAAY,MACZ,EAAS,GACT,EAAG,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,CAzCI,EACJ,GAAG,CAAC,IAyCJ,MAAM,WAAU,WACZ,EAAa,EACjB,GAAG,CAAC,IAyGJ,IAAI,EAAY,MAAM,SAAQ,WAC1B,OAAI,GAAY,EAAS,OACd,KAAK,KAAO,EAAI,EAAK,EAAS,OAAU,MAGxC,EAEf,GAAG,CAAC,IACJ,SAAS,EAAc,GACnB,IAAI,EAAW,SAAS,CAAC,EAAG,GACxB,EAAQ,EAAS,MAAM,KACvB,EAAO,EAAM,EAAM,OAAS,GAQhC,KAPI,GAAiB,OAAR,GAAyB,QAAR,GAA0B,QAAR,KAI5C,EAAO,QAEX,EAAS,OAAS,EACY,MAA1B,EAAO,gBAAyB,CAChC,IAAI,EAAU,EACV,EAAO,iBAAmB,GAAK,EAAO,iBAAmB,MACzD,EAAU,EAAO,iBAErB,EAAS,QAAU,CACvB,CACA,OAAO,IAAI,SAAQ,SAAU,EAAS,GAClC,IAAI,EAAM,IAAI,MACd,EAAI,YAAc,YAClB,EAAS,UAAY,EAAI,OACzB,EAAS,SAAW,EAAI,MACxB,EAAI,OAAS,WACT,IAAI,EAAS,SAAS,cAAc,UAChC,EAAM,EAAO,WAAW,MAE5B,EAAO,MADK,EACG,EAAI,MACnB,EAAO,OAFK,EAEI,EAAI,OACpB,EAAI,UAAU,EAAK,EAAG,EAAG,EAAO,MAAO,EAAO,QAC9C,QAAQ,IAAI,EAAS,SACrB,IAAI,EAAU,EAAO,UAAU,SAAS,OAAO,GAAO,EAAS,QAAU,KACzE,OAAO,EAAQ,CACX,QAAS,EACT,MAAO,EAAO,MACd,OAAQ,EAAO,QAEvB,EACA,EAAI,QAAU,SAAU,GACpB,OAAO,EAAO,EAAE,SAAW,2BAA2B,OAAO,GACjE,EACA,EAAI,IAAM,CACd,IAAG,MAAK,SAAU,GAEd,OADA,EAAW,SAAS,SAAS,CAAC,EAAG,GAAW,CAAE,UAAW,EAAK,OAAQ,SAAU,EAAK,QAC9E,CAAE,SAAU,EAAK,QAAS,MAAO,EAC5C,GACJ,CAIA,SAAS,EAAiB,GACtB,GAAiB,GACb,IACA,EAAS,EAAK,OACd,EAAY,EAAK,UAEzB,CAmBA,OAXA,MAAM,WAAU,WACZ,IAAI,EAAgB,SAAU,GACR,WAAd,EAAM,KACN,EAAiB,KAEzB,EAEA,OADA,SAAS,iBAAiB,UAAW,GAC9B,WACH,SAAS,oBAAoB,UAAW,EAC5C,CACJ,GAAG,IACK,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,0BAA0B,OAAO,EAAO,SAAW,OAAS,MAC3H,GAAc,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,eACvE,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,eAAgB,MAAO,CAC3E,MAAO,EAAc,MACrB,OAAQ,EAAc,OACtB,aAAc,EAAc,aAC5B,YAAa,EAAc,YAAc,KAE7C,eAAwB,QAAE,cAAc,SAAU,CAAE,MAAO,EAAO,kBAAmB,UAAW,4BAA6B,QAAS,GAClI,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,gBACrF,eAAwB,QAAE,cAAc,QAAS,CAAE,IAAK,EAAa,KAAM,OAAQ,MAAO,CAAE,QAAS,QAAU,GAAI,cAAgB,EAAgB,SAAU,MACrK,GAAc,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,eACtE,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,sBAAuB,MAAO,CAClF,MAAO,EAAc,MACrB,OAAQ,EAAc,OACtB,aAAc,EAAc,aAC5B,YAAa,EAAc,YAAc,KAE7C,eAAwB,QAAE,cAAc,MAAO,CAAE,IAAK,EAAU,IAAK,eAAgB,MAAO,CACpF,aAAc,EAAc,aAC5B,UAAW,EAAc,aAEjC,eAAwB,QAAE,cAAc,MAAO,CAAE,UAAW,UAAW,QAAS,GAC5E,eAAwB,QAAE,cAAc,SAAU,CAAE,MAAO,EAAO,mBAC9D,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,iBACzF,eAAwB,QAAE,cAAc,QAAS,CAAE,IAAK,EAAa,KAAM,OAAQ,MAAO,CAAE,QAAS,QAAU,GAAI,cAAgB,EAAgB,SAAU,KACjK,GAAc,eAAwB,QAAE,cAAc,IAAK,CAAE,UAAW,wBAAyB,MAAO,CAChG,MAAO,EAAY,IAAM,UAAY,QACrC,WAAY,EAAY,IAAM,MAAQ,UAE1C,SACA,EACA,QACA,EAAM,QACV,eAAwB,QAAE,cAAc,MAAO,CAAE,MAAO,CAChD,cAAe,MACf,UAAW,aACX,QAAS,OACT,aAAc,aACd,WAAY,cACb,UAAW,oBACb,EAAc,YAAe,eAAwB,QAAE,cAAc,SAAU,CAAE,UAAW,WAAY,GAAI,aAAc,MAAO,EAAO,kBAAmB,QAAS,GACjK,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,iBACpF,EAAc,aAAgB,eAAwB,QAAE,cAAc,SAAU,CAAE,UAAW,WAAY,GAAI,WAAY,MAAO,EAAO,yBAA0B,QAvE9K,WACI,GAAiB,EACrB,GAsEgB,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,UACpF,EAAc,iBAAoB,eAAwB,QAAE,cAAc,IAAK,CAAE,GAAI,eAAgB,MAAO,EAAO,sBAAuB,KAAM,EAAU,SAAU,EAAU,SAC3K,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,oBACpF,EAAc,eAAkB,eAAwB,QAAE,cAAc,SAAU,CAAE,UAAW,WAAY,GAAI,aAAc,MAAO,EAAe,OAAG,QAAS,WAAc,OAjE1L,WACI,EAAY,MACZ,GAAa,GACb,IAAI,EAAW,SAAS,SAAS,CAAC,EAAG,GAAQ,cAC7C,EAAS,GACT,GAAiB,EACrB,CA2DiM,EAAY,GAC7L,eAAwB,QAAE,cAAc,OAAQ,CAAE,UAAW,kBAAoB,aAC7F,GAAkB,eAAwB,QAAE,cAAc,UAAW,CAAE,YAAa,EAAkB,OAAQ,EAAQ,MAAO,EAAO,MAAO,EAAU,aAAc,EAAO,IAAK,EAAO,MAAO,EAAO,KAAM,EAAO,WAAY,IACrO,IAEA,OAAO,QAAU","file":"/npm/react-image-picker-editor@1.3.6/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-image-picker-editor@1.3.6/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nvar React = require('react');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  };\n  return __assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nfunction __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nvar Remove$5 = \"Quitar\";\nvar Quality$5 = \"Calidad\";\nvar Format$5 = \"Formato\";\nvar Crop$5 = \"Recortar\";\nvar Save$5 = \"Guardar\";\nvar Contrast$5 = \"Contraste\";\nvar Blur$5 = \"Blur\";\nvar Brightness$5 = \"Brillo\";\nvar Grayscale$5 = \"Scala de gris\";\nvar Saturate$4 = \"Saturación\";\nvar Sepia$5 = \"Sepia\";\nvar Rotate$3 = \"Rotar\";\nvar Undo$5 = \"Deshacer\";\nvar Basic$5 = \"Básico\";\nvar Filters$5 = \"Filtros\";\nvar labelEs = {\n\t\"Upload a image\": \"Suba una imagen\",\n\t\"You must edit the image in order to resize it\": \"Debe editar la imagen para disminuir su tamaño\",\n\t\"too large\": \"muy grande\",\n\t\"Open the editor panel\": \"Abra el panel de edición\",\n\t\"Download the image\": \"Descarge la imagen\",\n\t\"Control Panel\": \"Panel de control\",\n\tRemove: Remove$5,\n\tQuality: Quality$5,\n\t\"Max dimensions\": \"Dimensiones\",\n\t\"aspect-ratio\": \"relación-aspecto\",\n\t\"max-width(px)\": \"max. ancho\",\n\t\"max-height(px)\": \"max. alto\",\n\tFormat: Format$5,\n\tCrop: Crop$5,\n\t\"Confirm Crop\": \"Confirmar corte\",\n\t\"width(px)\": \"ancho(px)\",\n\t\"height(px)\": \"altura(px)\",\n\tSave: Save$5,\n\tContrast: Contrast$5,\n\tBlur: Blur$5,\n\tBrightness: Brightness$5,\n\tGrayscale: Grayscale$5,\n\tSaturate: Saturate$4,\n\tSepia: Sepia$5,\n\tRotate: Rotate$3,\n\tUndo: Undo$5,\n\tBasic: Basic$5,\n\tFilters: Filters$5\n};\n\nvar Quality$4 = \"Qualidade\";\nvar Format$4 = \"Formato\";\nvar Crop$4 = \"Cortar\";\nvar Remove$4 = \"Remover\";\nvar Save$4 = \"Salvar\";\nvar Contrast$4 = \"Contraste\";\nvar Blur$4 = \"Blur\";\nvar Brightness$4 = \"Brilho\";\nvar Grayscale$4 = \"Grayscale\";\nvar Saturate$3 = \"Saturação\";\nvar Sepia$4 = \"Sepia\";\nvar Rotate$2 = \"Rotar\";\nvar Undo$4 = \"Desfazer\";\nvar Basic$4 = \"Básico\";\nvar Filters$4 = \"Filtros\";\nvar labelPT = {\n\t\"Upload a image\": \"Carregar uma imagem\",\n\t\"You must edit the image in order to resize it\": \"Você deve editar a imagem para redimensioná-la\",\n\t\"too large\": \"muito grande\",\n\t\"Open the editor panel\": \"Abra o painel do editor\",\n\t\"Download the image\": \"Baixe a imagem\",\n\t\"Control Panel\": \"Painel de controle\",\n\tQuality: Quality$4,\n\t\"Max dimensions\": \"Dimensões máximas\",\n\t\"aspect-ratio\": \"proporção da tela\",\n\t\"max-width(px)\": \"max-width(px)\",\n\t\"max-height(px)\": \"max-height(px)\",\n\tFormat: Format$4,\n\tCrop: Crop$4,\n\t\"Confirm Crop\": \"Confirmar corte\",\n\t\"width(px)\": \"width(px)\",\n\t\"height(px)\": \"height(px)\",\n\tRemove: Remove$4,\n\tSave: Save$4,\n\tContrast: Contrast$4,\n\tBlur: Blur$4,\n\tBrightness: Brightness$4,\n\tGrayscale: Grayscale$4,\n\tSaturate: Saturate$3,\n\tSepia: Sepia$4,\n\tRotate: Rotate$2,\n\tUndo: Undo$4,\n\tBasic: Basic$4,\n\tFilters: Filters$4\n};\n\nvar Quality$3 = \"Quality\";\nvar Format$3 = \"Format\";\nvar Crop$3 = \"Crop\";\nvar Remove$3 = \"Remove\";\nvar Save$3 = \"Save\";\nvar Contrast$3 = \"Contrast\";\nvar Blur$3 = \"Blur\";\nvar Brightness$3 = \"Brightness\";\nvar Grayscale$3 = \"Grayscale\";\nvar Saturate$2 = \"Saturate\";\nvar Sepia$3 = \"Sepia\";\nvar Rotate$1 = \"Rotate\";\nvar Undo$3 = \"Undo\";\nvar Basic$3 = \"Basic\";\nvar Filters$3 = \"Filters\";\nvar labelEn = {\n\t\"Upload a image\": \"Upload a image\",\n\t\"You must edit the image in order to resize it\": \"You must edit the image in order to resize it\",\n\t\"too large\": \"too large\",\n\t\"Open the editor panel\": \"Open the editor panel\",\n\t\"Download the image\": \"Download the image\",\n\t\"Control Panel\": \"Control Panel\",\n\tQuality: Quality$3,\n\t\"Max dimensions\": \"Max dimensions\",\n\t\"aspect-ratio\": \"aspect-ratio\",\n\t\"max-width(px)\": \"max-width(px)\",\n\t\"max-height(px)\": \"max-height(px)\",\n\tFormat: Format$3,\n\tCrop: Crop$3,\n\t\"Confirm Crop\": \"Confirm Crop\",\n\t\"width(px)\": \"width(px)\",\n\t\"height(px)\": \"height(px)\",\n\tRemove: Remove$3,\n\tSave: Save$3,\n\tContrast: Contrast$3,\n\tBlur: Blur$3,\n\tBrightness: Brightness$3,\n\tGrayscale: Grayscale$3,\n\tSaturate: Saturate$2,\n\tSepia: Sepia$3,\n\tRotate: Rotate$1,\n\tUndo: Undo$3,\n\tBasic: Basic$3,\n\tFilters: Filters$3\n};\n\nvar Remove$2 = \"Supprimer\";\nvar Quality$2 = \"Qualité\";\nvar Format$2 = \"Format\";\nvar Crop$2 = \"Recadrer\";\nvar Save$2 = \"Sauvez\";\nvar Contrast$2 = \"Contraste\";\nvar Blur$2 = \"Blur\";\nvar Brightness$2 = \"Luminosité\";\nvar Grayscale$2 = \"Grayscale\";\nvar Saturate$1 = \"Saturer\";\nvar Sepia$2 = \"Seiche\";\nvar Undo$2 = \"Annuler\";\nvar Basic$2 = \"Basique\";\nvar Filters$2 = \"Filtres\";\nvar labelFr = {\n\t\"Upload a image\": \"Charger une image\",\n\t\"You must edit the image in order to resize it\": \"Vous devez éditer l'image pour changer sa taille\",\n\t\"too large\": \"Trop grande\",\n\t\"Open the editor panel\": \"Ouvrir le panneau d'édition\",\n\t\"Download the image\": \"Télécharger l'image\",\n\t\"Control Panel\": \"Panneau de commande\",\n\tRemove: Remove$2,\n\tQuality: Quality$2,\n\t\"Max dimensions\": \"Dimensions maximales\",\n\t\"aspect-ratio\": \"rapport de forme\",\n\t\"max-width(px)\": \"largeur max.\",\n\t\"max-height(px)\": \"hauteur max\",\n\tFormat: Format$2,\n\tCrop: Crop$2,\n\t\"Confirm Crop\": \"Confirmer le recadrage\",\n\t\"width(px)\": \"largeur(px)\",\n\t\"height(px)\": \"hauteur(px)\",\n\tSave: Save$2,\n\tContrast: Contrast$2,\n\tBlur: Blur$2,\n\tBrightness: Brightness$2,\n\tGrayscale: Grayscale$2,\n\tSaturate: Saturate$1,\n\tSepia: Sepia$2,\n\tUndo: Undo$2,\n\tBasic: Basic$2,\n\tFilters: Filters$2\n};\n\nvar Quality$1 = \"Qualität\";\nvar Format$1 = \"Format\";\nvar Crop$1 = \"Zuschneiden\";\nvar Remove$1 = \"Entfernen\";\nvar Save$1 = \"Speichern\";\nvar Contrast$1 = \"Kontrast\";\nvar Blur$1 = \"Blur\";\nvar Brightness$1 = \"Helligkeit\";\nvar Grayscale$1 = \"Graustufen\";\nvar Saturer = \"Sättigen\";\nvar Sepia$1 = \"Tintenfisch\";\nvar Undo$1 = \"Undo\";\nvar Basic$1 = \"Einfach\";\nvar Filters$1 = \"Filter\";\nvar labelDe = {\n\t\"Upload a image\": \"Bild hochladen\",\n\t\"You must edit the image in order to resize it\": \"Sie müssen das Bild bearbeiten, um seine Größe zu ändern\",\n\t\"too large\": \"zu groß\",\n\t\"Open the editor panel\": \"Editor-Fenster öffnen\",\n\t\"Download the image\": \"Bild herunterladen\",\n\t\"Control Panel\": \"Bedienfeld\",\n\tQuality: Quality$1,\n\t\"Max dimensions\": \"Maximale Größe\",\n\t\"aspect-ratio\": \"Seitenverhältnis\",\n\t\"max-width(px)\": \"Max. Breite(px)\",\n\t\"max-height(px)\": \"Max. Höhe(px)\",\n\tFormat: Format$1,\n\tCrop: Crop$1,\n\t\"Confirm Crop\": \"Schnitt bestätigen\",\n\t\"width(px)\": \"Breite(px)\",\n\t\"height(px)\": \"Höhe(px)\",\n\tRemove: Remove$1,\n\tSave: Save$1,\n\tContrast: Contrast$1,\n\tBlur: Blur$1,\n\tBrightness: Brightness$1,\n\tGrayscale: Grayscale$1,\n\tSaturer: Saturer,\n\tSepia: Sepia$1,\n\tUndo: Undo$1,\n\tBasic: Basic$1,\n\tFilters: Filters$1\n};\n\nvar Quality = \"کیفیت\";\nvar Format = \"فرمت\";\nvar Crop = \"برش\";\nvar Remove = \"حذف\";\nvar Save = \"ذخیره\";\nvar Contrast = \"کنتراست\";\nvar Blur = \"محو\";\nvar Brightness = \"روشنایی\";\nvar Grayscale = \"خاکستری\";\nvar Saturate = \"اشباع\";\nvar Sepia = \"Sepia\";\nvar Rotate = \"چرخش\";\nvar Undo = \"برگشت\";\nvar Basic = \"پایه\";\nvar Filters = \"فیلتر ها\";\nvar labelFa = {\n\t\"Upload a image\": \"آپلود تصویر\",\n\t\"You must edit the image in order to resize it\": \"برای تغییر اندازه تصویر باید آن را ویرایش کنید\",\n\t\"too large\": \"بسیار بزرگ\",\n\t\"Open the editor panel\": \"پنل ویرایش\",\n\t\"Download the image\": \"دانلود تصویر\",\n\t\"Control Panel\": \"پنل کنترل\",\n\tQuality: Quality,\n\t\"Max dimensions\": \"حداکثر ابعاد\",\n\t\"aspect-ratio\": \"نسبت اندازه\",\n\t\"max-width(px)\": \"حداکثر طول (px)\",\n\t\"max-height(px)\": \"حداکثر ارتفاع (px)\",\n\tFormat: Format,\n\tCrop: Crop,\n\t\"Confirm Crop\": \"تایید برش\",\n\t\"width(px)\": \"طول (px)\",\n\t\"height(px)\": \"ارتفاع (px)\",\n\tRemove: Remove,\n\tSave: Save,\n\tContrast: Contrast,\n\tBlur: Blur,\n\tBrightness: Brightness,\n\tGrayscale: Grayscale,\n\tSaturate: Saturate,\n\tSepia: Sepia,\n\tRotate: Rotate,\n\tUndo: Undo,\n\tBasic: Basic,\n\tFilters: Filters\n};\n\nvar MAX_BUFFER_UNDO_MEMORY = 25;\nvar convertImageUsingCanvas = function (dataSrc, changeHeight, state, options) {\n    if (changeHeight === void 0) { changeHeight = false; }\n    return new Promise(function (resolve, _) { return __awaiter(void 0, void 0, void 0, function () {\n        var img, quality, maintainRatio;\n        return __generator(this, function (_a) {\n            img = document.createElement('img');\n            img.src = dataSrc + '';\n            img.crossOrigin = 'Anonymous';\n            quality = state.quality / 100;\n            maintainRatio = state.maintainAspectRatio;\n            img.onload = function () {\n                var canvas = document.createElement('canvas');\n                var ctx = canvas.getContext('2d');\n                var ratio = img.width / img.height;\n                var width = state.maxWidth;\n                var height = state.maxHeight;\n                if (options === null || options === void 0 ? void 0 : options.getDimFromImage) {\n                    width = img.width;\n                    height = img.height;\n                }\n                if (maintainRatio) {\n                    canvas.width = width;\n                    canvas.height = width / ratio;\n                    if (changeHeight) {\n                        canvas.width = height * ratio;\n                        canvas.height = height;\n                    }\n                }\n                else {\n                    canvas.width = width;\n                    canvas.height = height;\n                }\n                // Apply rotation\n                if (state.rotation) {\n                    ctx.save();\n                    ctx.translate(canvas.width / 2, canvas.height / 2);\n                    ctx.rotate((state.rotation * Math.PI) / 180);\n                    ctx.translate(-canvas.width / 2, -canvas.height / 2);\n                }\n                if (state.basicFilters) {\n                    ctx.filter = processFilter(state.basicFilters);\n                }\n                ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n                var type = state.format;\n                var dataURI = canvas.toDataURL(\"image/\".concat(type), quality);\n                // console.log(\"🚀 ~ file: image-processing.ts ~ line 48 ~ returnnewPromise ~ quality\", quality)\n                resolve({\n                    dataUri: dataURI,\n                    width: canvas.width,\n                    height: canvas.height\n                });\n            };\n            return [2 /*return*/];\n        });\n    }); }).then(function (data) {\n        state.maxHeight = data.height;\n        state.maxWidth = data.width;\n        return { imageUri: data.dataUri, state: saveState(state, data.dataUri) };\n    });\n    function processFilter(data) {\n        return Object.keys(data)\n            .map(function (key) {\n            if (['blur'].includes(key)) {\n                return \"\".concat(key, \"(\").concat(data[key], \"px)\");\n            }\n            else {\n                return \"\".concat(key, \"(\").concat(data[key], \")\");\n            }\n        })\n            .join('');\n    }\n};\nvar saveState = function (state, lastImage) {\n    if (state.arrayCopiedImages.length <= MAX_BUFFER_UNDO_MEMORY) {\n        state.arrayCopiedImages.push({\n            lastImage: lastImage,\n            width: state.maxWidth,\n            height: state.maxHeight,\n            quality: state.quality,\n            format: state.format,\n            originImageSrc: state.originImageSrc,\n            basicFilters: state.basicFilters\n        });\n    }\n    else {\n        state.arrayCopiedImages[state.arrayCopiedImages.length - 1] = {\n            lastImage: lastImage,\n            width: state.maxWidth,\n            height: state.maxHeight,\n            quality: state.quality,\n            format: state.format,\n            originImageSrc: state.originImageSrc,\n            basicFilters: state.basicFilters\n        };\n    }\n    return JSON.parse(JSON.stringify(state));\n};\n\n/* eslint-disable react-hooks/exhaustive-deps */\nvar TabContainer = React.memo(function (_a) {\n    var _b = _a.activeIndex, activeIndex = _b === void 0 ? 0 : _b, children = _a.children, _c = _a.backgroundColor, backgroundColor = _c === void 0 ? 'inherit' : _c, _d = _a.color, color = _d === void 0 ? '#428CFF' : _d, _e = _a.indicatorStyle, indicatorStyle = _e === void 0 ? 'bottomLine' : _e, _f = _a.onTabChange, onTabChange = _f === void 0 ? function (index) { } : _f, _g = _a.transitionMs, transitionMs = _g === void 0 ? 375 : _g, _h = _a.borderLine, borderLine = _h === void 0 ? false : _h, _j = _a.fontColor, fontColor = _j === void 0 ? 'inherit' : _j, _k = _a.lazy, lazy = _k === void 0 ? false : _k;\n    var _l = React.useState([]), header = _l[0], setHeader = _l[1];\n    var _m = React.useState(activeIndex), activeTab = _m[0], setActiveTab = _m[1];\n    var tabContainerRef = React.useRef(null);\n    React.useEffect(function () {\n        var tabsItems = children instanceof Array ? children : [children];\n        checkChildrens(tabsItems);\n        var tabs = tabsItems.map(function (el) { return ({ label: el.props.name, icon: el.props.icon, disabled: el.props.disabled }); });\n        if (activeIndex > tabs.length - 1 || activeIndex < 0)\n            throw new Error(\"Invalid range for activeIndex \".concat(activeIndex));\n        setHeader(tabs);\n    }, [children]);\n    React.useEffect(function () {\n        var _a, _b;\n        var tabsItems = children instanceof Array ? children : [children];\n        if (activeIndex > tabsItems.length - 1 || activeIndex < 0)\n            throw new Error(\"Invalid range for activeIndex \".concat(activeIndex));\n        setActiveTab(((_b = (_a = tabsItems[activeIndex]) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.disabled) ? 0 : activeIndex);\n    }, [activeIndex]);\n    React.useEffect(function () {\n        if (header && header.length) {\n            onTabChange(activeTab);\n        }\n    }, [activeTab]);\n    function checkChildrens(data) {\n        try {\n            data.map(function (el) {\n                if (!el.props.name)\n                    throw new Error('Inside of TabContainer component only can be rendered TabItem component, and its need a name prop');\n                return true;\n            });\n        }\n        catch (e) {\n            throw new Error(\"The TabContainer Component must has a TabItem as child component\");\n        }\n    }\n    var tabsItems = children instanceof Array ? children : [children];\n    return React__default[\"default\"].createElement(\"div\", { ref: tabContainerRef, className: \"tab-pp\" },\n        React__default[\"default\"].createElement(\"div\", { className: \"header\", style: { backgroundColor: backgroundColor, borderBottom: borderLine ? '1px solid #323232' : 'undet' } }, header.map(function (el, index) { return (React__default[\"default\"].createElement(\"button\", { onClick: function () {\n                if (el.disabled)\n                    return;\n                setActiveTab(index);\n            }, key: el.label, style: {\n                color: index == activeTab && (indicatorStyle === 'simple' || indicatorStyle === 'bottomLine') ? color : fontColor,\n                backgroundColor: index == activeTab && (indicatorStyle === 'button') ? color : 'inherit'\n            }, className: index == activeTab ? \"itemlabel \".concat(indicatorStyle, \" active\") : 'itemlabel', disabled: el.disabled },\n            el.icon,\n            \" \",\n            el.label,\n            indicatorStyle === 'bottomLine' && (React__default[\"default\"].createElement(\"div\", { style: { backgroundColor: color } })))); })),\n        React__default[\"default\"].createElement(\"div\", { className: \"body\" }, tabsItems.map(function (tabEl, index) {\n            if (index < activeTab) {\n                return (React__default[\"default\"].createElement(\"div\", { style: {\n                        transform: 'translate3d(-100%, 0px, 0px)',\n                        height: '0px',\n                        overflow: 'hidden',\n                        transition: \"transform \".concat(transitionMs / 1000, \"s ease\")\n                    }, key: index, className: 'body-content' }, !lazy && tabEl));\n            }\n            if (index > activeTab) {\n                return (React__default[\"default\"].createElement(\"div\", { style: {\n                        transform: 'translate3d(100%, 0px, 0px)',\n                        height: '0px',\n                        overflow: 'hidden',\n                        transition: \"transform \".concat(transitionMs / 1000, \"s ease\")\n                    }, key: index, className: 'body-content' }, !lazy && tabEl));\n            }\n            else {\n                return (React__default[\"default\"].createElement(\"div\", { style: {\n                        visibility: 'inherit',\n                        overflow: 'auto',\n                        height: 'auto',\n                        position: 'relative',\n                        transition: \"transform \".concat(transitionMs / 1000, \"s ease\")\n                    }, key: index, className: 'body-content' }, tabEl));\n            }\n        })));\n});\nvar TabItem = React.memo(function (_a) {\n    _a.name; var children = _a.children; _a.icon; _a.type; _a.disabled;\n    return React__default[\"default\"].createElement(\"div\", { style: { padding: '1rem 0.5rem' } }, children);\n});\n\nvar Input = React.memo(function (props) {\n    var _a = props, onInputChangedEnd = _a.onInputChangedEnd, onChangedDelayed = _a.onChangedDelayed, onChangedValue = _a.onChangedValue, delayMs = _a.delayMs, testID = _a.testID, restProps = __rest(_a, [\"onInputChangedEnd\", \"onChangedDelayed\", \"onChangedValue\", \"delayMs\", \"testID\"]);\n    var _b = React.useState(props.value), state = _b[0], setState = _b[1];\n    var timerRef = React.useRef();\n    var mountRef = React.useRef(true);\n    React.useRef(false);\n    // useEffect(() => {\n    //   if (['checkbox', 'radio'].includes(props.type as string)) {\n    //     setState(props.checked);\n    //   } else {\n    //     setState(props.value);\n    //     console.log(\"Here in the prop\")\n    //   }\n    // }, [props.value])\n    React.useEffect(function () {\n        if (!onChangedDelayed)\n            return;\n        if (mountRef.current) {\n            mountRef.current = false;\n            return;\n        }\n        clearTimeout(timerRef.current);\n        timerRef.current = setTimeout(function () {\n            clearTimeout(timerRef.current);\n            onChangedDelayed(state);\n        }, delayMs || 100);\n        return function () {\n            clearTimeout(timerRef.current);\n        };\n    }, [state]);\n    function changeValue(e) {\n        if (['checkbox', 'radio'].includes(props.type)) {\n            setState(e.target.checked);\n            onChangedValue && onChangedValue(e.target.checked);\n        }\n        else {\n            setState(e.target.value);\n            onChangedValue && onChangedValue(e.target.value);\n        }\n    }\n    return (React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\n        onInputChangedEnd && (React__default[\"default\"].createElement(\"input\", __assign({ \"data-testid\": testID }, restProps, { className: restProps === null || restProps === void 0 ? void 0 : restProps.className, style: restProps.style, value: props.value, onChange: changeValue, onBlur: function (e) {\n                onInputChangedEnd(e.target.value);\n            }, onKeyDown: function (e) {\n                if (e.key == 'Enter')\n                    onInputChangedEnd(state);\n            } }))),\n        !onInputChangedEnd && (React__default[\"default\"].createElement(\"input\", __assign({ \"data-testid\": testID }, restProps, { className: restProps === null || restProps === void 0 ? void 0 : restProps.className, style: restProps.style, value: props.value, onChange: changeValue })))));\n});\n\nvar _initialState$1 = {\n    contrast: 1,\n    blur: 0,\n    brightness: 1,\n    grayscale: 0,\n    invert: 0,\n    saturate: 1,\n    sepia: 0\n};\nvar BasicFilter = React.memo(function (_a) {\n    var labels = _a.labels, color = _a.color, _b = _a.initialState, initialState = _b === void 0 ? _initialState$1 : _b, _c = _a.changeFilter, changeFilter = _c === void 0 ? function () { } : _c;\n    var _d = React.useState(initialState), state = _d[0], setState = _d[1];\n    React.useEffect(function () {\n        if (initialState) {\n            setState(JSON.parse(JSON.stringify(__assign(__assign({}, state), initialState))));\n        }\n        else {\n            setState(_initialState$1);\n        }\n    }, [initialState]);\n    function onUpdateContrast(contrast) {\n        changeFilter(__assign(__assign({}, state), { contrast: contrast }));\n    }\n    function onUpdateBrightness(brightness) {\n        changeFilter(__assign(__assign({}, state), { brightness: brightness }));\n    }\n    function onUpdateGrayscale(grayscale) {\n        changeFilter(__assign(__assign({}, state), { grayscale: grayscale }));\n    }\n    function onUpdateSaturate(saturate) {\n        changeFilter(__assign(__assign({}, state), { saturate: saturate }));\n    }\n    function onUpdateSepia(sepia) {\n        changeFilter(__assign(__assign({}, state), { sepia: sepia }));\n    }\n    function onUpdateBlur(blur) {\n        changeFilter(__assign(__assign({}, state), { blur: blur }));\n    }\n    return (React__default[\"default\"].createElement(\"div\", null,\n        React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel', \"data-testid\": 'contrast-label' }, labels['Contrast']),\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel', \"data-testid\": 'contrast-value' }, (+state.contrast).toFixed(2))),\n        React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n            React__default[\"default\"].createElement(Input, { testID: 'contrast', id: 'contrast', name: 'contrast', className: 'input-range', onChangedDelayed: onUpdateContrast, delayMs: 100, onChangedValue: function (value) {\n                    setState(__assign(__assign({}, state), { contrast: value }));\n                }, style: {\n                    maxWidth: '100%',\n                    width: '100%',\n                    color: color\n                }, type: 'range', min: '0', max: '5', step: '0.01', value: state.contrast })),\n        React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel', \"data-testid\": 'brightness-label' }, labels['Brightness']),\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel', \"data-testid\": 'brightness-value' }, (+state.brightness).toFixed(2))),\n        React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n            React__default[\"default\"].createElement(Input, { testID: 'brightness', id: 'brightness', name: 'brightness', className: 'input-range', onChangedDelayed: onUpdateBrightness, onChangedValue: function (value) {\n                    setState(__assign(__assign({}, state), { brightness: value }));\n                }, style: {\n                    maxWidth: '100%',\n                    width: '100%',\n                    color: color\n                }, type: 'range', min: '0', max: '5', step: '0.01', value: state.brightness })),\n        React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, labels['Grayscale']),\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, (+state.grayscale).toFixed(2))),\n        React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n            React__default[\"default\"].createElement(Input, { testID: 'grayscale', id: 'grayscale', name: 'grayscale', className: 'input-range', onChangedDelayed: onUpdateGrayscale, delayMs: 100, onChangedValue: function (value) {\n                    setState(__assign(__assign({}, state), { grayscale: value }));\n                }, style: {\n                    maxWidth: '100%',\n                    width: '100%',\n                    color: color\n                }, type: 'range', min: '0', max: '5', step: '0.01', value: state.grayscale })),\n        React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, labels['Saturate']),\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel', \"data-testid\": 'grayscale-value' }, (+state.saturate).toFixed(2))),\n        React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n            React__default[\"default\"].createElement(Input, { className: 'input-range', onChangedDelayed: onUpdateSaturate, onChangedValue: function (value) {\n                    setState(__assign(__assign({}, state), { saturate: value }));\n                }, style: {\n                    maxWidth: '100%',\n                    width: '100%',\n                    color: color\n                }, type: 'range', min: '0', max: '5', step: '0.01', value: state.saturate })),\n        React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, labels['Sepia']),\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, (+state.sepia).toFixed(2))),\n        React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n            React__default[\"default\"].createElement(Input, { className: 'input-range', onChangedDelayed: onUpdateSepia, onChangedValue: function (value) {\n                    setState(__assign(__assign({}, state), { sepia: value }));\n                }, style: {\n                    maxWidth: '100%',\n                    width: '100%',\n                    color: color\n                }, type: 'range', min: '0', max: '5', step: '0.01', value: state.sepia })),\n        React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, labels['Blur']),\n            React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, (+state.blur).toFixed(2))),\n        React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n            React__default[\"default\"].createElement(Input, { className: 'input-range', onChangedDelayed: onUpdateBlur, onChangedValue: function (value) {\n                    setState(__assign(__assign({}, state), { blur: value }));\n                }, style: {\n                    maxWidth: '100%',\n                    width: '100%',\n                    color: color\n                }, type: 'range', min: '0', max: '5', step: '0.01', value: state.blur }))));\n});\n\n/**\n * POLYFILLS\n */\n// Request Animation Frame polyfill\n(function () {\n    var lastTime = 0;\n    var vendors = [\"ms\", \"moz\", \"webkit\", \"o\"];\n    for (var x = 0; x < vendors.length && !window.requestAnimationFrame; x++) {\n        window.requestAnimationFrame = window[(vendors[x] + \"RequestAnimationFrame\")];\n        window.cancelAnimationFrame = (window[(vendors[x] + \"CancelAnimationFrame\")] || window[(vendors[x] + \"CancelRequestAnimationFrame\")]);\n    }\n    if (!window.requestAnimationFrame)\n        window.requestAnimationFrame = function (callback, element) {\n            var currTime = new Date().getTime();\n            var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n            var id = window.setTimeout(function () {\n                callback(currTime + timeToCall);\n            }, timeToCall);\n            lastTime = currTime + timeToCall;\n            return id;\n        };\n    if (!window.cancelAnimationFrame)\n        window.cancelAnimationFrame = function (id) {\n            clearTimeout(id);\n        };\n})();\n// CustomEvents polyfill\n(function () {\n    if (typeof window.CustomEvent === \"function\")\n        return false;\n    function CustomEvent(event, params) {\n        params = params || { bubbles: false, cancelable: false, detail: undefined };\n        var evt = document.createEvent(\"CustomEvent\");\n        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n        return evt;\n    }\n    CustomEvent.prototype = window.Event.prototype;\n    window.CustomEvent = CustomEvent;\n})();\n// MouseEvents polyfill\n(function (window) {\n    try {\n        new CustomEvent(\"test\");\n        return false; // No need to polyfill\n    }\n    catch (e) {\n        // Need to polyfill - fall through\n    }\n    // Polyfills DOM4 CustomEvent\n    function MouseEvent(eventType, params) {\n        params = params || { bubbles: false, cancelable: false };\n        var mouseEvent = document.createEvent(\"MouseEvent\");\n        mouseEvent.initMouseEvent(eventType, params.bubbles, params.cancelable, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n        return mouseEvent;\n    }\n    MouseEvent.prototype = Event.prototype;\n    window.MouseEvent = MouseEvent;\n})(window);\n\n/**\n * Handle component\n */\nvar Handle = /** @class */ (function () {\n    function Handle(position, constraints, cursor, eventBus) {\n        var self = this;\n        this.position = position;\n        this.constraints = constraints;\n        this.cursor = cursor;\n        this.eventBus = eventBus;\n        // Create DOM element\n        this.el = document.createElement(\"div\");\n        this.el.className = \"croppr-handle\";\n        this.el.style.cursor = cursor;\n        // Attach initial listener\n        this.el.addEventListener(\"mousedown\", onMouseDown);\n        function onMouseDown(e) {\n            e.stopPropagation();\n            document.addEventListener(\"mouseup\", onMouseUp);\n            document.addEventListener(\"mousemove\", onMouseMove);\n            // Notify parent\n            self.eventBus.dispatchEvent(new CustomEvent(\"handlestart\", {\n                detail: { handle: self }\n            }));\n        }\n        function onMouseUp(e) {\n            e.stopPropagation();\n            document.removeEventListener(\"mouseup\", onMouseUp);\n            document.removeEventListener(\"mousemove\", onMouseMove);\n            // Notify parent\n            self.eventBus.dispatchEvent(new CustomEvent(\"handleend\", {\n                detail: { handle: self }\n            }));\n        }\n        function onMouseMove(e) {\n            e.stopPropagation();\n            // Notify parent\n            self.eventBus.dispatchEvent(new CustomEvent(\"handlemove\", {\n                detail: { mouseX: e.clientX, mouseY: e.clientY }\n            }));\n        }\n    }\n    return Handle;\n}());\n\n/**\n * Box component\n */\nvar Box = /** @class */ (function () {\n    function Box(x1, y1, x2, y2) {\n        this.x1 = x1;\n        this.y1 = y1;\n        this.x2 = x2;\n        this.y2 = y2;\n    }\n    /**\n     * Sets the new dimensions of the box.\n     * @param {Number} x1\n     * @param {Number} y1\n     * @param {Number} x2\n     * @param {Number} y2\n     */\n    Box.prototype.set = function (x1, y1, x2, y2) {\n        if (x1 === void 0) { x1 = null; }\n        if (y1 === void 0) { y1 = null; }\n        if (x2 === void 0) { x2 = null; }\n        if (y2 === void 0) { y2 = null; }\n        this.x1 = x1 == null ? this.x1 : x1;\n        this.y1 = y1 == null ? this.y1 : y1;\n        this.x2 = x2 == null ? this.x2 : x2;\n        this.y2 = y2 == null ? this.y2 : y2;\n        return this;\n    };\n    /**\n     * Calculates the width of the box.\n     * @returns {Number}\n     */\n    Box.prototype.width = function () {\n        return Math.abs(this.x2 - this.x1);\n    };\n    /**\n     * Calculates the height of the box.\n     * @returns {Number}\n     */\n    Box.prototype.height = function () {\n        return Math.abs(this.y2 - this.y1);\n    };\n    /**\n     * Resizes the box to a new size.\n     * @param {Number} newWidth\n     * @param {Number} newHeight\n     * @param {Array} [origin] The origin point to resize from.\n     *      Defaults to [0, 0] (top left).\n     */\n    Box.prototype.resize = function (newWidth, newHeight, origin) {\n        if (origin === void 0) { origin = [0, 0]; }\n        var fromX = this.x1 + this.width() * origin[0];\n        var fromY = this.y1 + this.height() * origin[1];\n        this.x1 = fromX - newWidth * origin[0];\n        this.y1 = fromY - newHeight * origin[1];\n        this.x2 = this.x1 + newWidth;\n        this.y2 = this.y1 + newHeight;\n        return this;\n    };\n    /**\n     * Scale the box by a factor.\n     * @param {Number} factor\n     * @param {Array} [origin] The origin point to resize from.\n     *      Defaults to [0, 0] (top left).\n     */\n    Box.prototype.scale = function (factor, origin) {\n        if (origin === void 0) { origin = [0, 0]; }\n        var newWidth = this.width() * factor;\n        var newHeight = this.height() * factor;\n        this.resize(newWidth, newHeight, origin);\n        return this;\n    };\n    /**\n     * Move the box to the specified coordinates.\n     */\n    Box.prototype.move = function (x, y) {\n        if (x === void 0) { x = null; }\n        if (y === void 0) { y = null; }\n        var width = this.width();\n        var height = this.height();\n        x = x === null ? this.x1 : x;\n        y = y === null ? this.y1 : y;\n        this.x1 = x;\n        this.y1 = y;\n        this.x2 = x + width;\n        this.y2 = y + height;\n        return this;\n    };\n    /**\n     * Get relative x and y coordinates of a given point within the box.\n     * @param {Array} point The x and y ratio position within the box.\n     * @returns {Array} The x and y coordinates [x, y].\n     */\n    Box.prototype.getRelativePoint = function (point) {\n        if (point === void 0) { point = [0, 0]; }\n        var x = this.width() * point[0];\n        var y = this.height() * point[1];\n        return [x, y];\n    };\n    /**\n     * Get absolute x and y coordinates of a given point within the box.\n     * @param {Array} point The x and y ratio position within the box.\n     * @returns {Array} The x and y coordinates [x, y].\n     */\n    Box.prototype.getAbsolutePoint = function (point) {\n        if (point === void 0) { point = [0, 0]; }\n        var x = this.x1 + this.width() * point[0];\n        var y = this.y1 + this.height() * point[1];\n        return [x, y];\n    };\n    /**\n     * Constrain the box to a fixed ratio.\n     * @param {Number} ratio\n     * @param {Array} [origin] The origin point to resize from.\n     *     Defaults to [0, 0] (top left).\n     * @param {String} [grow] The axis to grow to maintain the ratio.\n     *     Defaults to 'height'.\n     */\n    Box.prototype.constrainToRatio = function (ratio, origin, grow) {\n        if (origin === void 0) { origin = [0, 0]; }\n        if (grow === void 0) { grow = \"height\"; }\n        if (ratio === null) {\n            return;\n        }\n        this.width();\n        this.height();\n        switch (grow) {\n            case \"height\": // Grow height only\n                this.resize(this.width(), this.width() * ratio, origin);\n                break;\n            case \"width\": // Grow width only\n                this.resize((this.height() * 1) / ratio, this.height(), origin);\n                break;\n            default: // Default: Grow height only\n                this.resize(this.width(), this.width() * ratio, origin);\n        }\n        return this;\n    };\n    /**\n     * Constrain the box within a boundary.\n     * @param {Number} boundaryWidth\n     * @param {Number} boundaryHeight\n     * @param {Array} [origin] The origin point to resize from.\n     *     Defaults to [0, 0] (top left).\n     */\n    Box.prototype.constrainToBoundary = function (boundaryWidth, boundaryHeight, origin) {\n        if (origin === void 0) { origin = [0, 0]; }\n        // Calculate the maximum sizes for each direction of growth\n        var _a = this.getAbsolutePoint(origin), originX = _a[0], originY = _a[1];\n        var maxIfLeft = originX;\n        var maxIfTop = originY;\n        var maxIfRight = boundaryWidth - originX;\n        var maxIfBottom = boundaryHeight - originY;\n        // Express the direction of growth in terms of left, both,\n        // and right as -1, 0, and 1 respectively. Ditto for top/both/down.\n        var directionX = -2 * origin[0] + 1;\n        var directionY = -2 * origin[1] + 1;\n        // Determine the max size to use according to the direction of growth.\n        var _b = [null, null], maxWidth = _b[0], maxHeight = _b[1];\n        switch (directionX) {\n            case -1:\n                maxWidth = maxIfLeft;\n                break;\n            case 0:\n                maxWidth = (Math.min(maxIfLeft, maxIfRight) * 2);\n                break;\n            case +1:\n                maxWidth = maxIfRight;\n                break;\n        }\n        switch (directionY) {\n            case -1:\n                maxHeight = maxIfTop;\n                break;\n            case 0:\n                maxHeight = (Math.min(maxIfTop, maxIfBottom) * 2);\n                break;\n            case +1:\n                maxHeight = maxIfBottom;\n                break;\n        }\n        // Resize if the box exceeds the calculated max width/height.\n        if (this.width() > maxWidth) {\n            var factor = maxWidth / this.width();\n            this.scale(factor, origin);\n        }\n        if (this.height() > maxHeight) {\n            var factor = maxHeight / this.height();\n            this.scale(factor, origin);\n        }\n        return this;\n    };\n    /**\n     * Constrain the box to a maximum/minimum size.\n     * @param {Number} [maxWidth]\n     * @param {Number} [maxHeight]\n     * @param {Number} [minWidth]\n     * @param {Number} [minHeight]\n     * @param {Array} [origin] The origin point to resize from.\n     *     Defaults to [0, 0] (top left).\n     * @param {Number} [ratio] Ratio to maintain.\n     */\n    Box.prototype.constrainToSize = function (maxWidth, maxHeight, minWidth, minHeight, origin, ratio) {\n        if (maxWidth === void 0) { maxWidth = null; }\n        if (maxHeight === void 0) { maxHeight = null; }\n        if (minWidth === void 0) { minWidth = null; }\n        if (minHeight === void 0) { minHeight = null; }\n        if (origin === void 0) { origin = [0, 0]; }\n        if (ratio === void 0) { ratio = null; }\n        // Calculate new max/min widths & heights that constrains to the ratio\n        if (ratio) {\n            if (ratio > 1) {\n                maxWidth = (maxHeight * 1) / ratio;\n                minHeight = minHeight * ratio;\n            }\n            else if (ratio < 1) {\n                maxHeight = maxWidth * ratio;\n                minWidth = (minHeight * 1) / ratio;\n            }\n        }\n        if (maxWidth && this.width() > maxWidth) {\n            var newWidth = maxWidth, newHeight = ratio === null ? this.height() : maxHeight;\n            this.resize(newWidth, newHeight, origin);\n        }\n        if (maxHeight && this.height() > maxHeight) {\n            var newWidth = ratio === null ? this.width() : maxWidth, newHeight = maxHeight;\n            this.resize(newWidth, newHeight, origin);\n        }\n        if (minWidth && this.width() < minWidth) {\n            var newWidth = minWidth, newHeight = ratio === null ? this.height() : minHeight;\n            this.resize(newWidth, newHeight, origin);\n        }\n        if (minHeight && this.height() < minHeight) {\n            var newWidth = ratio === null ? this.width() : minWidth, newHeight = minHeight;\n            this.resize(newWidth, newHeight, origin);\n        }\n        return this;\n    };\n    return Box;\n}());\n\n/**\n * Croppr Touch\n * Enables support for touch devices by translating touch events to\n * mouse events.\n */\n/**\n * Binds an element's touch events to be simulated as mouse events.\n * @param {Element} element\n */\nfunction enableTouch(element) {\n    element.addEventListener('touchstart', simulateMouseEvent);\n    element.addEventListener('touchend', simulateMouseEvent);\n    element.addEventListener('touchmove', simulateMouseEvent);\n}\n/**\n * Translates a touch event to a mouse event.\n * @param {Event} e\n */\nfunction simulateMouseEvent(e) {\n    e.preventDefault();\n    var touch = e.changedTouches[0];\n    var eventMap = {\n        touchstart: 'mousedown',\n        touchmove: 'mousemove',\n        touchend: 'mouseup'\n    };\n    touch.target.dispatchEvent(new MouseEvent(eventMap[e.type], {\n        bubbles: true,\n        cancelable: true,\n        view: window,\n        clientX: touch.clientX,\n        clientY: touch.clientY,\n        screenX: touch.screenX,\n        screenY: touch.screenY\n    }));\n}\n\n/**\n * CropprCore\n * Here lies the main logic.\n */\n/**\n * Define a list of handles to create.\n *\n * @property {Array} position - The x and y ratio position of the handle within\n *      the crop region. Accepts a value between 0 to 1 in the order of [X, Y].\n * @property {Array} constraints - Define the side of the crop region that is to\n *      be affected by this handle. Accepts a value of 0 or 1 in the order of\n *      [TOP, RIGHT, BOTTOM, LEFT].\n * @property {String} cursor - The CSS cursor of this handle.\n */\nvar HANDLES = [\n    { position: [0.0, 0.0], constraints: [1, 0, 0, 1], cursor: \"nw-resize\" },\n    { position: [0.5, 0.0], constraints: [1, 0, 0, 0], cursor: \"n-resize\" },\n    { position: [1.0, 0.0], constraints: [1, 1, 0, 0], cursor: \"ne-resize\" },\n    { position: [1.0, 0.5], constraints: [0, 1, 0, 0], cursor: \"e-resize\" },\n    { position: [1.0, 1.0], constraints: [0, 1, 1, 0], cursor: \"se-resize\" },\n    { position: [0.5, 1.0], constraints: [0, 0, 1, 0], cursor: \"s-resize\" },\n    { position: [0.0, 1.0], constraints: [0, 0, 1, 1], cursor: \"sw-resize\" },\n    { position: [0.0, 0.5], constraints: [0, 0, 0, 1], cursor: \"w-resize\" },\n];\n/**\n * Core class for Croppr containing most of its functional logic.\n */\nvar CropprCore = /** @class */ (function () {\n    function CropprCore(element, options, deferred) {\n        if (deferred === void 0) { deferred = false; }\n        var _this = this;\n        // console.log(\"🚀 ~ file: core.ts ~ line 51 ~ CropprCore ~ constructor ~ element\", element)\n        // Parse options\n        this.options = CropprCore.parseOptions(options || {});\n        // Get target img element\n        if (!element.nodeName) {\n            element = document.querySelector(element);\n            // console.log(\"🚀 ~ file: core.ts ~ line 58 ~ CropprCore ~ constructor ~ element\", element)\n            if (element == null) {\n                throw \"Unable to find element.\";\n            }\n        }\n        if (!element.getAttribute(\"src\")) {\n            throw \"Image src not provided.\";\n        }\n        // Define internal props\n        this._initialized = false;\n        this._restore = {\n            parent: element.parentNode,\n            element: element\n        };\n        // Wait until image is loaded before proceeding\n        if (!deferred) {\n            if (element.width === 0 || element.height === 0) {\n                element.onload = function () {\n                    _this.initialize(element);\n                };\n            }\n            else {\n                this.initialize(element);\n            }\n        }\n    }\n    /**\n     * Initialize the Croppr instance\n     */\n    CropprCore.prototype.initialize = function (element) {\n        // Create DOM elements\n        this.createDOM(element);\n        // Process option values\n        this.options.convertToPixels(this.cropperEl);\n        // Listen for events from children\n        this.attachHandlerEvents();\n        this.attachRegionEvents();\n        this.attachOverlayEvents();\n        // Bootstrap this cropper instance\n        this.box = this.initializeBox(this.options);\n        this.redraw();\n        // Set the initalized flag to true and call the callback\n        this._initialized = true;\n        if (this.options.onInitialize !== null) {\n            this.options.onInitialize(this);\n        }\n    };\n    /**\n     * Create Croppr's DOM elements\n     */\n    CropprCore.prototype.createDOM = function (targetEl) {\n        // Create main container and use it as the main event listeners\n        this.containerEl = document.createElement(\"div\");\n        this.containerEl.className = \"croppr-container\";\n        this.eventBus = this.containerEl;\n        enableTouch(this.containerEl);\n        // Create cropper element\n        this.cropperEl = document.createElement(\"div\");\n        this.cropperEl.className = \"croppr\";\n        // Create image element\n        this.imageEl = document.createElement(\"img\");\n        this.imageEl.setAttribute(\"src\", targetEl.getAttribute(\"src\"));\n        this.imageEl.setAttribute(\"alt\", targetEl.getAttribute(\"alt\"));\n        this.imageEl.className = \"croppr-image\";\n        // Create clipped image element\n        this.imageClippedEl = this.imageEl.cloneNode();\n        this.imageClippedEl.className = \"croppr-imageClipped\";\n        // Create region box element\n        this.regionEl = document.createElement(\"div\");\n        this.regionEl.innerHTML = new Array(9)\n            .fill(1)\n            .map(function () { return \"<div style=\\\"border: 1px dashed #fafafa\\\"></div>\"; })\n            .join(\"\");\n        this.regionEl.className = \"croppr-region\";\n        // Create overlay element\n        this.overlayEl = document.createElement(\"div\");\n        this.overlayEl.className = \"croppr-overlay\";\n        // Create handles element\n        var handleContainerEl = document.createElement(\"div\");\n        handleContainerEl.className = \"croppr-handleContainer\";\n        this.handles = [];\n        for (var i = 0; i < HANDLES.length; i++) {\n            var handle = new Handle(HANDLES[i].position, HANDLES[i].constraints, HANDLES[i].cursor, this.eventBus);\n            this.handles.push(handle);\n            handleContainerEl.appendChild(handle.el);\n        }\n        // And then we piece it all together!\n        this.cropperEl.appendChild(this.imageEl);\n        this.cropperEl.appendChild(this.imageClippedEl);\n        this.cropperEl.appendChild(this.regionEl);\n        this.cropperEl.appendChild(this.overlayEl);\n        this.cropperEl.appendChild(handleContainerEl);\n        this.containerEl.appendChild(this.cropperEl);\n        // And then finally insert it into the document\n        targetEl.parentElement.replaceChild(this.containerEl, targetEl);\n    };\n    /**\n     * Changes the image src.\n     * @param {String} src\n     */\n    CropprCore.prototype.setImage = function (src) {\n        var _this = this;\n        // Add onload listener to reinitialize box\n        this.imageEl.onload = function () {\n            _this.box = _this.initializeBox(_this.options);\n            _this.redraw();\n        };\n        // Change image source\n        this.imageEl.src = src;\n        this.imageClippedEl.src = src;\n        return this;\n    };\n    /**\n     * Destroy the Croppr instance and replace with the original element.\n     */\n    CropprCore.prototype.destroy = function () {\n        this._restore.parent.replaceChild(this._restore.element, this.containerEl);\n    };\n    /**\n     * Create a new box region with a set of options.\n     * @param {Object} opts The options.\n     * @returns {Box}\n     */\n    CropprCore.prototype.initializeBox = function (opts) {\n        // Create initial box\n        var width = opts.startSize.width;\n        var height = opts.startSize.height;\n        var box = new Box(0, 0, width, height);\n        // console.log(\"🚀 ~ file: core.ts ~ line 202 ~ CropprCore ~ initializeBox ~ box\", box)\n        // Maintain ratio\n        box.constrainToRatio(opts.aspectRatio, [0.5, 0.5]);\n        // Maintain minimum/maximum size\n        var min = opts.minSize;\n        var max = opts.maxSize;\n        box.constrainToSize(max.width, max.height, min.width, min.height, [0.5, 0.5], opts.aspectRatio);\n        // Constrain to boundary\n        var parentWidth = this.cropperEl.offsetWidth;\n        var parentHeight = this.cropperEl.offsetHeight;\n        box.constrainToBoundary(parentWidth, parentHeight, [0.5, 0.5]);\n        // // Move to center\n        var x = this.cropperEl.offsetWidth / 2 - box.width() / 2;\n        var y = this.cropperEl.offsetHeight / 2 - box.height() / 2;\n        // console.log(\"🚀 ~ file: core.ts ~ line 219 ~ CropprCore ~ initializeBox ~ this.cropperEl\", this.cropperEl.offsetWidth)\n        // console.log(\"🚀 ~ file: core.ts ~ line 223 ~ CropprCore ~ initializeBox ~ x, y\", x, y)\n        box.move(x, y);\n        return box;\n    };\n    /**\n     * Draw visuals (border, handles, etc) for the current box.\n     */\n    CropprCore.prototype.redraw = function () {\n        var _this = this;\n        // Round positional values to prevent subpixel coordinates, which can\n        // result in element that is rendered blurly\n        var width = Math.round(this.box.width()), height = Math.round(this.box.height()), x1 = Math.round(this.box.x1), y1 = Math.round(this.box.y1), x2 = Math.round(this.box.x2), y2 = Math.round(this.box.y2);\n        window.requestAnimationFrame(function () {\n            // Update region element\n            _this.regionEl.style.transform = \"translate(\".concat(x1, \"px, \").concat(y1, \"px)\");\n            _this.regionEl.style.width = width + \"px\";\n            _this.regionEl.style.height = height + \"px\";\n            // Update clipped image element\n            _this.imageClippedEl.style.clip = \"rect(\".concat(y1, \"px, \").concat(x2, \"px, \").concat(y2, \"px, \").concat(x1, \"px)\");\n            // Determine which handle to bring forward. The following code\n            // calculates the quadrant the box is in using bitwise operators.\n            // Reference: https://stackoverflow.com/questions/9718059\n            var center = _this.box.getAbsolutePoint([0.5, 0.5]);\n            var xSign = (center[0] - _this.cropperEl.offsetWidth / 2) >> 31;\n            var ySign = (center[1] - _this.cropperEl.offsetHeight / 2) >> 31;\n            var quadrant = (xSign ^ ySign) + ySign + ySign + 4;\n            // The following equation calculates which handle index to bring\n            // forward. The equation is derived using algebra (if youre curious)\n            var foregroundHandleIndex = -2 * quadrant + 8;\n            // Update handle positions\n            for (var i = 0; i < _this.handles.length; i++) {\n                var handle = _this.handles[i];\n                // Calculate handle position\n                var handleWidth = handle.el.offsetWidth;\n                var handleHeight = handle.el.offsetHeight;\n                var left = x1 + width * handle.position[0] - handleWidth / 2;\n                var top_1 = y1 + height * handle.position[1] - handleHeight / 2;\n                // Apply new position. The positional values are rounded to\n                // prevent subpixel positions which can result in a blurry element\n                handle.el.style.transform = \"translate(\".concat(Math.round(left), \"px, \").concat(Math.round(top_1), \"px)\");\n                handle.el.style.zIndex = foregroundHandleIndex == i ? 5 : 4;\n            }\n        });\n    };\n    /**\n     * Attach listeners for events emitted by the handles.\n     * Enables resizing of the region element.\n     */\n    CropprCore.prototype.attachHandlerEvents = function () {\n        var eventBus = this.eventBus;\n        eventBus.addEventListener(\"handlestart\", this.onHandleMoveStart.bind(this));\n        eventBus.addEventListener(\"handlemove\", this.onHandleMoveMoving.bind(this));\n        eventBus.addEventListener(\"handleend\", this.onHandleMoveEnd.bind(this));\n    };\n    /**\n     * Attach event listeners for the crop region element.\n     * Enables dragging/moving of the region element.\n     */\n    CropprCore.prototype.attachRegionEvents = function () {\n        var eventBus = this.eventBus;\n        this.regionEl.addEventListener(\"mousedown\", onMouseDown);\n        eventBus.addEventListener(\"regionstart\", this.onRegionMoveStart.bind(this));\n        eventBus.addEventListener(\"regionmove\", this.onRegionMoveMoving.bind(this));\n        eventBus.addEventListener(\"regionend\", this.onRegionMoveEnd.bind(this));\n        function onMouseDown(e) {\n            e.stopPropagation();\n            document.addEventListener(\"mouseup\", onMouseUp);\n            document.addEventListener(\"mousemove\", onMouseMove);\n            // Notify parent\n            eventBus.dispatchEvent(new CustomEvent(\"regionstart\", {\n                detail: { mouseX: e.clientX, mouseY: e.clientY }\n            }));\n        }\n        function onMouseMove(e) {\n            e.stopPropagation();\n            // Notify parent\n            eventBus.dispatchEvent(new CustomEvent(\"regionmove\", {\n                detail: { mouseX: e.clientX, mouseY: e.clientY }\n            }));\n        }\n        function onMouseUp(e) {\n            e.stopPropagation();\n            document.removeEventListener(\"mouseup\", onMouseUp);\n            document.removeEventListener(\"mousemove\", onMouseMove);\n            // Notify parent\n            eventBus.dispatchEvent(new CustomEvent(\"regionend\", {\n                detail: { mouseX: e.clientX, mouseY: e.clientY }\n            }));\n        }\n    };\n    /**\n     * Attach event listeners for the overlay element.\n     * Enables the creation of a new selection by dragging an empty area.\n     */\n    CropprCore.prototype.attachOverlayEvents = function () {\n        var SOUTHEAST_HANDLE_IDX = 4;\n        var self = this;\n        var tmpBox = null;\n        this.overlayEl.addEventListener(\"mousedown\", onMouseDown);\n        function onMouseDown(e) {\n            e.stopPropagation();\n            document.addEventListener(\"mouseup\", onMouseUp);\n            document.addEventListener(\"mousemove\", onMouseMove);\n            // Calculate mouse's position in relative to the container\n            var container = self.cropperEl.getBoundingClientRect();\n            var mouseX = e.clientX - container.left;\n            var mouseY = e.clientY - container.top;\n            // Create new box at mouse position\n            tmpBox = self.box;\n            self.box = new Box(mouseX, mouseY, mouseX + 1, mouseY + 1);\n            // Activate the bottom right handle\n            self.eventBus.dispatchEvent(new CustomEvent(\"handlestart\", {\n                detail: { handle: self.handles[SOUTHEAST_HANDLE_IDX] }\n            }));\n        }\n        function onMouseMove(e) {\n            e.stopPropagation();\n            self.eventBus.dispatchEvent(new CustomEvent(\"handlemove\", {\n                detail: { mouseX: e.clientX, mouseY: e.clientY }\n            }));\n        }\n        function onMouseUp(e) {\n            e.stopPropagation();\n            document.removeEventListener(\"mouseup\", onMouseUp);\n            document.removeEventListener(\"mousemove\", onMouseMove);\n            // If the new box has no width and height, it suggests that\n            // the user had just clicked on an empty area and did not drag\n            // a new box (ie. an accidental click). In this scenario, we\n            // simply replace it with the previous box.\n            if (self.box.width() === 1 && self.box.height() === 1) {\n                self.box = tmpBox;\n                return;\n            }\n            self.eventBus.dispatchEvent(new CustomEvent(\"handleend\", {\n                detail: { mouseX: e.clientX, mouseY: e.clientY }\n            }));\n        }\n    };\n    /**\n     * EVENT HANDLER\n     * Executes when user begins dragging a handle.\n     */\n    CropprCore.prototype.onHandleMoveStart = function (e) {\n        var handle = e.detail.handle;\n        // The origin point is the point where the box is scaled from.\n        // This is usually the opposite side/corner of the active handle.\n        var originPoint = [1 - handle.position[0], 1 - handle.position[1]];\n        var _a = this.box.getAbsolutePoint(originPoint), originX = _a[0], originY = _a[1];\n        this.activeHandle = { handle: handle, originPoint: originPoint, originX: originX, originY: originY };\n        // Trigger callback\n        if (this.options.onCropStart !== null) {\n            this.options.onCropStart(this.getValue());\n        }\n    };\n    /**\n     * EVENT HANDLER\n     * Executes on handle move. Main logic to manage the movement of handles.\n     */\n    CropprCore.prototype.onHandleMoveMoving = function (e) {\n        var _a = e.detail, mouseX = _a.mouseX, mouseY = _a.mouseY;\n        // Calculate mouse's position in relative to the container\n        var container = this.cropperEl.getBoundingClientRect();\n        mouseX = mouseX - container.left;\n        mouseY = mouseY - container.top;\n        // Ensure mouse is within the boundaries\n        if (mouseX < 0) {\n            mouseX = 0;\n        }\n        else if (mouseX > container.width) {\n            mouseX = container.width;\n        }\n        if (mouseY < 0) {\n            mouseY = 0;\n        }\n        else if (mouseY > container.height) {\n            mouseY = container.height;\n        }\n        // Bootstrap helper variables\n        var origin = this.activeHandle.originPoint.slice();\n        var originX = this.activeHandle.originX;\n        var originY = this.activeHandle.originY;\n        var handle = this.activeHandle.handle;\n        var TOP_MOVABLE = handle.constraints[0] === 1;\n        var RIGHT_MOVABLE = handle.constraints[1] === 1;\n        var BOTTOM_MOVABLE = handle.constraints[2] === 1;\n        var LEFT_MOVABLE = handle.constraints[3] === 1;\n        var MULTI_AXIS = (LEFT_MOVABLE || RIGHT_MOVABLE) && (TOP_MOVABLE || BOTTOM_MOVABLE);\n        // Apply movement to respective sides according to the handle's\n        // constraint values.\n        var x1 = LEFT_MOVABLE || RIGHT_MOVABLE ? originX : this.box.x1;\n        var x2 = LEFT_MOVABLE || RIGHT_MOVABLE ? originX : this.box.x2;\n        var y1 = TOP_MOVABLE || BOTTOM_MOVABLE ? originY : this.box.y1;\n        var y2 = TOP_MOVABLE || BOTTOM_MOVABLE ? originY : this.box.y2;\n        x1 = LEFT_MOVABLE ? mouseX : x1;\n        x2 = RIGHT_MOVABLE ? mouseX : x2;\n        y1 = TOP_MOVABLE ? mouseY : y1;\n        y2 = BOTTOM_MOVABLE ? mouseY : y2;\n        // Check if the user dragged past the origin point. If it did,\n        // we set the flipped flag to true.\n        var _b = [false, false], isFlippedX = _b[0], isFlippedY = _b[1];\n        if (LEFT_MOVABLE || RIGHT_MOVABLE) {\n            isFlippedX = LEFT_MOVABLE ? mouseX > originX : mouseX < originX;\n        }\n        if (TOP_MOVABLE || BOTTOM_MOVABLE) {\n            isFlippedY = TOP_MOVABLE ? mouseY > originY : mouseY < originY;\n        }\n        // If it is flipped, we swap the coordinates and flip the origin point.\n        if (isFlippedX) {\n            var tmp = x1;\n            x1 = x2;\n            x2 = tmp; // Swap x1 and x2\n            origin[0] = 1 - origin[0]; // Flip origin x point\n        }\n        if (isFlippedY) {\n            var tmp = y1;\n            y1 = y2;\n            y2 = tmp; // Swap y1 and y2\n            origin[1] = 1 - origin[1]; // Flip origin y point\n        }\n        // Create new box object\n        var box = new Box(x1, y1, x2, y2);\n        // Maintain aspect ratio\n        if (this.options.aspectRatio) {\n            var ratio = this.options.aspectRatio;\n            var isVerticalMovement = false;\n            if (MULTI_AXIS) {\n                isVerticalMovement =\n                    mouseY > box.y1 + ratio * box.width() ||\n                        mouseY < box.y2 - ratio * box.width();\n            }\n            else if (TOP_MOVABLE || BOTTOM_MOVABLE) {\n                isVerticalMovement = true;\n            }\n            var ratioMode = isVerticalMovement ? \"width\" : \"height\";\n            box.constrainToRatio(ratio, origin, ratioMode);\n        }\n        // Maintain minimum/maximum size\n        var min = this.options.minSize;\n        var max = this.options.maxSize;\n        box.constrainToSize(max.width, max.height, min.width, min.height, origin, this.options.aspectRatio);\n        // Constrain to boundary\n        var parentWidth = this.cropperEl.offsetWidth;\n        var parentHeight = this.cropperEl.offsetHeight;\n        box.constrainToBoundary(parentWidth, parentHeight, origin);\n        // Finally, update the visuals (border, handles, clipped image, etc)\n        this.box = box;\n        this.redraw();\n        // Trigger callback\n        if (this.options.onCropMove !== null) {\n            this.options.onCropMove(this.getValue());\n        }\n    };\n    /**\n     * EVENT HANDLER\n     * Executes on handle move end.\n     */\n    CropprCore.prototype.onHandleMoveEnd = function (e) {\n        // Trigger callback\n        if (this.options.onCropEnd !== null) {\n            this.options.onCropEnd(this.getValue());\n        }\n    };\n    /**\n     * EVENT HANDLER\n     * Executes when user starts moving the crop region.\n     */\n    CropprCore.prototype.onRegionMoveStart = function (e) {\n        var _a = e.detail, mouseX = _a.mouseX, mouseY = _a.mouseY;\n        // Calculate mouse's position in relative to the container\n        var container = this.cropperEl.getBoundingClientRect();\n        mouseX = mouseX - container.left;\n        mouseY = mouseY - container.top;\n        this.currentMove = {\n            offsetX: mouseX - this.box.x1,\n            offsetY: mouseY - this.box.y1\n        };\n        // Trigger callback\n        if (this.options.onCropStart !== null) {\n            this.options.onCropStart(this.getValue());\n        }\n    };\n    /**\n     * EVENT HANDLER\n     * Executes when user moves the crop region.\n     */\n    CropprCore.prototype.onRegionMoveMoving = function (e) {\n        var _a = e.detail, mouseX = _a.mouseX, mouseY = _a.mouseY;\n        var _b = this.currentMove, offsetX = _b.offsetX, offsetY = _b.offsetY;\n        // Calculate mouse's position in relative to the container\n        var container = this.cropperEl.getBoundingClientRect();\n        mouseX = mouseX - container.left;\n        mouseY = mouseY - container.top;\n        this.box.move(mouseX - offsetX, mouseY - offsetY);\n        // Ensure box is within the boundaries\n        if (this.box.x1 < 0) {\n            this.box.move(0, null);\n        }\n        if (this.box.x2 > container.width) {\n            this.box.move(container.width - this.box.width(), null);\n        }\n        if (this.box.y1 < 0) {\n            this.box.move(null, 0);\n        }\n        if (this.box.y2 > container.height) {\n            this.box.move(null, container.height - this.box.height());\n        }\n        // Update visuals\n        this.redraw();\n        // Trigger callback\n        if (this.options.onCropMove !== null) {\n            this.options.onCropMove(this.getValue());\n        }\n    };\n    /**\n     * EVENT HANDLER\n     * Executes when user stops moving the crop region (mouse up).\n     */\n    CropprCore.prototype.onRegionMoveEnd = function (e) {\n        // Trigger callback\n        if (this.options.onCropEnd !== null) {\n            this.options.onCropEnd(this.getValue());\n        }\n    };\n    /**\n     * Calculate the value of the crop region.\n     */\n    CropprCore.prototype.getValue = function (mode) {\n        if (mode === void 0) { mode = null; }\n        if (mode === null) {\n            mode = this.options.returnMode;\n        }\n        if (mode == \"real\") {\n            var actualWidth = this.imageEl.naturalWidth;\n            var actualHeight = this.imageEl.naturalHeight;\n            var _a = this.imageEl.getBoundingClientRect(), elementWidth = _a.width, elementHeight = _a.height;\n            var factorX = actualWidth / elementWidth;\n            var factorY = actualHeight / elementHeight;\n            return {\n                x: Math.round(this.box.x1 * factorX),\n                y: Math.round(this.box.y1 * factorY),\n                width: Math.round(this.box.width() * factorX),\n                height: Math.round(this.box.height() * factorY)\n            };\n        }\n        else if (mode == \"ratio\") {\n            var _b = this.imageEl.getBoundingClientRect(), elementWidth = _b.width, elementHeight = _b.height;\n            return {\n                x: round(this.box.x1 / elementWidth, 3),\n                y: round(this.box.y1 / elementHeight, 3),\n                width: round(this.box.width() / elementWidth, 3),\n                height: round(this.box.height() / elementHeight, 3)\n            };\n        }\n        else if (mode == \"raw\") {\n            return {\n                x: Math.round(this.box.x1),\n                y: Math.round(this.box.y1),\n                width: Math.round(this.box.width()),\n                height: Math.round(this.box.height())\n            };\n        }\n    };\n    /**\n     * Parse user options and set default values.\n     */\n    CropprCore.parseOptions = function (opts) {\n        var defaults = {\n            aspectRatio: null,\n            maxSize: { width: null, height: null },\n            minSize: { width: null, height: null },\n            startSize: { width: 100, height: 100, unit: \"%\" },\n            returnMode: \"real\",\n            onInitialize: null,\n            onCropStart: null,\n            onCropMove: null,\n            onCropEnd: null\n        };\n        // Parse aspect ratio\n        var aspectRatio = null;\n        if (opts.aspectRatio !== undefined) {\n            if (typeof opts.aspectRatio === \"number\") {\n                aspectRatio = opts.aspectRatio;\n            }\n            else if (opts.aspectRatio instanceof Array) {\n                aspectRatio = opts.aspectRatio[1] / opts.aspectRatio[0];\n            }\n        }\n        // Parse max width/height\n        var maxSize = null;\n        if (opts.maxSize !== undefined && opts.maxSize !== null) {\n            maxSize = {\n                width: opts.maxSize[0] || null,\n                height: opts.maxSize[1] || null,\n                unit: opts.maxSize[2] || \"px\"\n            };\n        }\n        // Parse min width/height\n        var minSize = null;\n        if (opts.minSize !== undefined && opts.minSize !== null) {\n            minSize = {\n                width: opts.minSize[0] || null,\n                height: opts.minSize[1] || null,\n                unit: opts.minSize[2] || \"px\"\n            };\n        }\n        // Parse start size\n        var startSize = null;\n        if (opts.startSize !== undefined && opts.startSize !== null) {\n            startSize = {\n                width: opts.startSize[0] || null,\n                height: opts.startSize[1] || null,\n                unit: opts.startSize[2] || \"%\"\n            };\n        }\n        // Parse callbacks\n        var onInitialize = null;\n        if (typeof opts.onInitialize === \"function\") {\n            onInitialize = opts.onInitialize;\n        }\n        var onCropStart = null;\n        if (typeof opts.onCropStart === \"function\") {\n            onCropStart = opts.onCropStart;\n        }\n        var onCropEnd = null;\n        if (typeof opts.onCropEnd === \"function\") {\n            onCropEnd = opts.onCropEnd;\n        }\n        var onCropMove = null;\n        if (typeof opts.onUpdate === \"function\") {\n            // DEPRECATED: onUpdate is deprecated to create a more uniform\n            // callback API, such as: onCropStart, onCropMove, onCropEnd\n            console.warn(\"Croppr.js: `onUpdate` is deprecated and will be removed in the next major release. Please use `onCropMove` or `onCropEnd` instead.\");\n            onCropMove = opts.onUpdate;\n        }\n        if (typeof opts.onCropMove === \"function\") {\n            onCropMove = opts.onCropMove;\n        }\n        // Parse returnMode value\n        var returnMode = null;\n        if (opts.returnMode !== undefined) {\n            var s = opts.returnMode.toLowerCase();\n            if ([\"real\", \"ratio\", \"raw\"].indexOf(s) === -1) {\n                throw \"Invalid return mode.\";\n            }\n            returnMode = s;\n        }\n        // Create function to convert % values to pixels\n        var convertToPixels = function (container) {\n            var width = container.offsetWidth;\n            var height = container.offsetHeight;\n            // Convert sizes\n            var sizeKeys = [\"maxSize\", \"minSize\", \"startSize\"];\n            for (var i = 0; i < sizeKeys.length; i++) {\n                var key = sizeKeys[i];\n                if (this[key] !== null) {\n                    if (this[key].unit == \"%\") {\n                        if (this[key].width !== null) {\n                            this[key].width = (this[key].width / 100) * width;\n                        }\n                        if (this[key].height !== null) {\n                            this[key].height = (this[key].height / 100) * height;\n                        }\n                    }\n                    delete this[key].unit;\n                }\n            }\n        };\n        var defaultValue = function (v, d) { return (v !== null ? v : d); };\n        return {\n            aspectRatio: defaultValue(aspectRatio, defaults.aspectRatio),\n            maxSize: defaultValue(maxSize, defaults.maxSize),\n            minSize: defaultValue(minSize, defaults.minSize),\n            startSize: defaultValue(startSize, defaults.startSize),\n            returnMode: defaultValue(returnMode, defaults.returnMode),\n            onInitialize: defaultValue(onInitialize, defaults.onInitialize),\n            onCropStart: defaultValue(onCropStart, defaults.onCropStart),\n            onCropMove: defaultValue(onCropMove, defaults.onCropMove),\n            onCropEnd: defaultValue(onCropEnd, defaults.onCropEnd),\n            convertToPixels: convertToPixels\n        };\n    };\n    return CropprCore;\n}());\n/**\n * HELPER FUNCTIONS\n */\nfunction round(value, decimals) {\n    return Number(Math.round((value + \"e\" + decimals)) + \"e-\" + decimals);\n}\n\n/**\n * Croppr.js\n * https://github.com/jamesssooi/Croppr.js\n *\n * A JavaScript image cropper that's lightweight, awesome, and has\n * zero dependencies.\n *\n * (C) 2017 James Ooi. Released under the MIT License.\n */\n/**\n * This class is a wrapper for CropprCore that merely implements the main\n * interfaces for the Croppr instance. Look into CropprCore for all the\n * main logic.\n */\nvar Croppr = /** @class */ (function (_super) {\n    __extends(Croppr, _super);\n    /**\n     * @constructor\n     * Calls the CropprCore's constructor.\n     */\n    function Croppr(element, options, _deferred) {\n        if (_deferred === void 0) { _deferred = false; }\n        return _super.call(this, element, options, _deferred) || this;\n    }\n    /**\n     * Gets the value of the crop region.\n     * @param {String} [mode] Which mode of calculation to use: 'real', 'ratio' or\n     *      'raw'.\n     */\n    Croppr.prototype.getValue = function (mode) {\n        return _super.prototype.getValue.call(this, mode);\n    };\n    /**\n     * Changes the image src.\n     * @param {String} src\n     */\n    Croppr.prototype.setImage = function (src) {\n        return _super.prototype.setImage.call(this, src);\n    };\n    /**\n     * Destroys the Croppr instance\n     */\n    Croppr.prototype.destroy = function () {\n        return _super.prototype.destroy.call(this);\n    };\n    /**\n     * Moves the crop region to a specified coordinate.\n     * @param {Number} x\n     * @param {Number} y\n     */\n    Croppr.prototype.moveTo = function (x, y) {\n        this.box.move(x, y);\n        this.redraw();\n        // Call the callback\n        if (this.options.onCropEnd !== null) {\n            this.options.onCropEnd(this.getValue());\n        }\n        return this;\n    };\n    /**\n     * Resizes the crop region to a specified width and height.\n     * @param {Number} width\n     * @param {Number} height\n     * @param {Array} origin The origin point to resize from.\n     *      Defaults to [0.5, 0.5] (center).\n     */\n    Croppr.prototype.resizeTo = function (width, height, origin) {\n        if (origin === void 0) { origin = [0.5, 0.5]; }\n        this.box.resize(width, height, origin);\n        //////////////////////////////////////////////////////////////////\n        var parentWidth = this.cropperEl.offsetWidth;\n        var parentHeight = this.cropperEl.offsetHeight;\n        this.box.constrainToBoundary(parentWidth, parentHeight, [0.5, 0.5]);\n        ///////////////////////////////////////////////////////////////////\n        this.redraw();\n        // Call the callback\n        if (this.options.onCropEnd !== null) {\n            this.options.onCropEnd(this.getValue());\n        }\n        return this;\n    };\n    /**\n     * Scale the crop region by a factor.\n     * @param {Number} factor\n     * @param {Array} origin The origin point to resize from.\n     *      Defaults to [0.5, 0.5] (center).\n     */\n    Croppr.prototype.scaleBy = function (factor, origin) {\n        if (origin === void 0) { origin = [0.5, 0.5]; }\n        this.box.scale(factor, origin);\n        this.redraw();\n        // Call the callback\n        if (this.options.onCropEnd !== null) {\n            this.options.onCropEnd(this.getValue());\n        }\n        return this;\n    };\n    /**\n     * Resets the crop region to the initial settings.\n     */\n    Croppr.prototype.reset = function (newOptions) {\n        if (newOptions) {\n            this.options = __assign(__assign({}, this.options), { newOptions: newOptions });\n        }\n        this.box = this.initializeBox(this.options);\n        // console.log('🚀 ~ file: croppr.ts ~ line 110 ~ Croppr ~ reset ~ this.box', this.box);\n        this.redraw();\n        // Call the callback\n        if (this.options.onCropEnd !== null) {\n            this.options.onCropEnd(this.getValue());\n        }\n        return this;\n    };\n    Croppr.prototype.enableVisibility = function (state) {\n        var croppContainer = document.querySelector(\".croppr-container\");\n        if (!croppContainer)\n            throw new Error(\"THere is not any croppr\");\n        if (state) {\n            croppContainer.style.display = \"block\";\n        }\n        else {\n            croppContainer.style.display = \"none\";\n        }\n    };\n    return Croppr;\n}(CropprCore));\n\nvar CropprWrapper = React.memo(function (_a) {\n    var src = _a.src, size = _a.size, croppUpdate = _a.croppUpdate;\n    var _b = React.useState(), imageSrc = _b[0], setImageSrc = _b[1];\n    var _c = React.useState({ width: 150, height: 150 }), croppSize = _c[0], setCroppSize = _c[1];\n    var croppr = React.useRef(null);\n    var mount = React.useRef();\n    React.useEffect(function () {\n        if (size) {\n            setCroppSize(__assign({}, size));\n            if (croppr.current)\n                croppr.current.resizeTo(size.width, size.height);\n        }\n    }, [size]);\n    React.useEffect(function () {\n        if (src) {\n            setImageSrc(src);\n        }\n    }, [src]);\n    React.useEffect(function () {\n        if (mount.current && imageSrc) {\n            croppr.current = new Croppr('#croppr', {\n                minSize: [32, 32, 'px'],\n                startSize: [croppSize.width, croppSize.height, 'px'],\n                onInitialize: function (data) {\n                    croppUpdate(data === null || data === void 0 ? void 0 : data.getValue());\n                },\n                onCropEnd: function (data) {\n                    croppUpdate(data);\n                }\n            });\n        }\n        return function () { var _a; return ((_a = croppr === null || croppr === void 0 ? void 0 : croppr.current) === null || _a === void 0 ? void 0 : _a.destroy()); };\n    }, [mount.current, imageSrc]);\n    return React__default[\"default\"].createElement(\"div\", { className: 'CropprWrapper' },\n        React__default[\"default\"].createElement(\"img\", { ref: mount, src: imageSrc, id: \"croppr\" }));\n});\n\nvar _initialState = {\n    quality: 92,\n    maxHeight: 1000,\n    maxWidth: 1000,\n    cropHeight: 150,\n    cropWidth: 150,\n    maintainAspectRatio: true,\n    format: 'jpeg',\n    arrayCopiedImages: [],\n    originImageSrc: '',\n    rotation: 0\n};\nvar EditImage = React.memo(function (_a) {\n    var _b;\n    var _c = _a.labels, labels = _c === void 0 ? {} : _c, _d = _a.image, image = _d === void 0 ? '' : _d, _e = _a.color, color = _e === void 0 ? '#1e88e5' : _e, _f = _a.initialState, initialState = _f === void 0 ? _initialState : _f, rtl = _a.rtl, dark = _a.dark, _g = _a.saveUpdates, saveUpdates = _g === void 0 ? function () { } : _g;\n    var _h = React.useState(initialState), state = _h[0], setState = _h[1];\n    var _j = React.useState(''), imageSrc = _j[0], setImageSrc = _j[1];\n    var _k = React.useState(false), showCrop = _k[0], setShowCrop = _k[1];\n    var _l = React.useState({\n        width: 150,\n        height: 150\n    }), croppSize = _l[0], setCroppSize = _l[1];\n    var _m = React.useState(), croppState = _m[0], setCroppState = _m[1];\n    var _o = React.useState(0), rotation = _o[0], setRotation = _o[1];\n    var isMobile = React.useRef(false);\n    var allFormats = ['webp', 'jpeg', 'png'];\n    React.useEffect(function () {\n        isMobile.current = window.innerWidth < 800;\n        setState(JSON.parse(JSON.stringify(__assign(__assign({}, state), initialState))));\n    }, [initialState]);\n    React.useEffect(function () {\n        setImageSrc(image);\n    }, [image]);\n    React.useEffect(function () {\n        if (!showCrop) {\n            setCroppSize({ width: 150, height: 150 });\n        }\n    }, [showCrop]);\n    function applyChanges(stateIntance, changeHeight) {\n        if (changeHeight === void 0) { changeHeight = false; }\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, newState, imageUri, error_1;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, convertImageUsingCanvas(state.originImageSrc, changeHeight, stateIntance)];\n                    case 1:\n                        _a = _b.sent(), newState = _a.state, imageUri = _a.imageUri;\n                        setImageSrc(imageUri);\n                        setState(newState);\n                        return [3 /*break*/, 3];\n                    case 2:\n                        error_1 = _b.sent();\n                        console.log('🚀 ~ file: EditImage.tsx ~ line 73 ~ applyChanges ~ error', error_1);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    function onUpdateQuality(quality) {\n        return __awaiter(this, void 0, void 0, function () {\n            var newState, error_2;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        quality = Math.max(Math.min(quality, 100), 1);\n                        newState = __assign(__assign({}, state), { quality: quality });\n                        setState(newState);\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, applyChanges(newState, false)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        error_2 = _a.sent();\n                        console.log('onUpdateQuality ~ error', error_2);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    function onChangeSize(value, changeHeight) {\n        if (changeHeight === void 0) { changeHeight = false; }\n        return __awaiter(this, void 0, void 0, function () {\n            var m, newState, error_3;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        m = Math.max(Math.min(value, 4000), 32);\n                        newState = __assign({}, state);\n                        if (changeHeight) {\n                            if (newState.maxHeight === m)\n                                return [2 /*return*/];\n                            newState.maxHeight = m;\n                        }\n                        else {\n                            if (newState.maxWidth === m)\n                                return [2 /*return*/];\n                            newState.maxWidth = m;\n                        }\n                        setState(newState);\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, applyChanges(newState, changeHeight)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        error_3 = _a.sent();\n                        console.log('onChangeSize ~ error', error_3);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    function onChangeFormat(e) {\n        return __awaiter(this, void 0, void 0, function () {\n            var newState, error_4;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        newState = __assign(__assign({}, state), { format: e.target.value });\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        setState(newState);\n                        return [4 /*yield*/, applyChanges(newState, false)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        error_4 = _a.sent();\n                        console.log('onChangeFormat ~ error', error_4);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    function onChangeCrop(width, height) {\n        if (width) {\n            setState(__assign(__assign({}, state), { cropWidth: width }));\n            setCroppSize(__assign(__assign({}, croppSize), { width: width }));\n        }\n        if (height) {\n            setState(__assign(__assign({}, state), { cropHeight: height }));\n            setCroppSize(__assign(__assign({}, croppSize), { height: height }));\n        }\n    }\n    function onCrop() {\n        var newState = _cloneObject(state);\n        var canvas = document.createElement('canvas');\n        return new Promise(function (resolve, reject) {\n            var ctx = canvas.getContext('2d');\n            var image = new Image();\n            image.src = imageSrc;\n            image.onload = function () {\n                var newWidth = croppState === null || croppState === void 0 ? void 0 : croppState.width;\n                var newHeight = croppState === null || croppState === void 0 ? void 0 : croppState.height;\n                canvas.height = newHeight;\n                canvas.width = newWidth;\n                ctx.drawImage(image, Math.abs(croppState === null || croppState === void 0 ? void 0 : croppState.x), Math.abs(croppState === null || croppState === void 0 ? void 0 : croppState.y), croppState === null || croppState === void 0 ? void 0 : croppState.width, croppState === null || croppState === void 0 ? void 0 : croppState.height, 0, 0, croppState === null || croppState === void 0 ? void 0 : croppState.width, croppState === null || croppState === void 0 ? void 0 : croppState.height);\n                return resolve(canvas.toDataURL(\"image/\".concat(newState.format), newState.quality));\n            };\n            image.onerror = function (e) {\n                reject(e);\n            };\n        })\n            .then(function (dataUri) {\n            newState.maxWidth = canvas.width;\n            newState.maxHeight = canvas.height;\n            newState.originImageSrc = dataUri;\n            newState = saveState(newState, dataUri);\n            setState(newState);\n            setImageSrc(dataUri);\n            setShowCrop(false);\n        })[\"catch\"](function (e) {\n            console.log(e);\n        });\n    }\n    function onCroppUpdate(data) {\n        setCroppState(data);\n        setState(__assign(__assign({}, state), { cropHeight: data.height, cropWidth: data.width }));\n    }\n    function onCloseEditPanel(saveChanges) {\n        if (saveChanges === void 0) { saveChanges = false; }\n        setShowCrop(false);\n        if (saveChanges)\n            saveUpdates({ state: state, imageSrc: imageSrc });\n        else\n            saveUpdates(null);\n    }\n    function onRestore() {\n        return __awaiter(this, void 0, void 0, function () {\n            var newState, newValue;\n            return __generator(this, function (_a) {\n                try {\n                    newState = _cloneObject(state);\n                    if (newState.arrayCopiedImages.length > 1) {\n                        newState.arrayCopiedImages.pop();\n                        newValue = newState.arrayCopiedImages[newState.arrayCopiedImages.length - 1];\n                        newState = __assign(__assign({}, state), { arrayCopiedImages: newState.arrayCopiedImages, maxHeight: newValue.height, maxWidth: newValue.width, quality: newValue.quality, format: newValue.format, originImageSrc: newValue.originImageSrc, basicFilters: newValue.basicFilters });\n                        setState(newState);\n                        setImageSrc(newValue.lastImage);\n                    }\n                }\n                catch (e) {\n                    console.log('🚀 ~ file: edit-image.component.ts ~ line 126 ~ EditImageComponent ~ onRestore ~ e', e);\n                }\n                return [2 /*return*/];\n            });\n        });\n    }\n    function onChangeFilters(data) {\n        return __awaiter(this, void 0, void 0, function () {\n            var newState, e_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        newState = _cloneObject(state);\n                        if (!newState.basicFilters) {\n                            newState.basicFilters = data;\n                        }\n                        else {\n                            newState.basicFilters = __assign(__assign({}, newState.basicFilters), data);\n                        }\n                        return [4 /*yield*/, applyChanges(newState, false)];\n                    case 1:\n                        _a.sent();\n                        return [3 /*break*/, 3];\n                    case 2:\n                        e_1 = _a.sent();\n                        console.log('🚀 ~ file: EditImage.tsx ~ line 259 ~ onChangeFilters ~ e', e_1);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    var sizeImage = React.useMemo(function () {\n        if (imageSrc && imageSrc.length) {\n            return Math.ceil(((3 / 4) * imageSrc.length) / 1024);\n        }\n        else {\n            return '';\n        }\n    }, [imageSrc]);\n    function _cloneObject(obj) {\n        return JSON.parse(JSON.stringify(obj));\n    }\n    function onRotate(angle) {\n        var newRotation = (rotation + angle + 360) % 360;\n        setRotation(newRotation);\n        applyChanges(__assign(__assign({}, state), { rotation: newRotation }), false);\n    }\n    return (React__default[\"default\"].createElement(\"div\", { className: \"EditImage \".concat(dark ? 'dark' : '') },\n        React__default[\"default\"].createElement(\"div\", { id: 'popup', className: 'popup' },\n            React__default[\"default\"].createElement(\"div\", { style: {\n                    flexDirection: 'row',\n                    boxSizing: 'border-box',\n                    display: 'flex',\n                    placeContent: 'center flex-end',\n                    alignItems: 'center',\n                    padding: '0px 16px'\n                } },\n                React__default[\"default\"].createElement(\"button\", { className: 'icon-btn', onClick: function () {\n                        onCloseEditPanel(false);\n                    } },\n                    React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"clear\"))),\n            React__default[\"default\"].createElement(\"div\", { className: 'image-container' },\n                React__default[\"default\"].createElement(\"div\", { className: 'image-holder-full' },\n                    !showCrop && React__default[\"default\"].createElement(\"img\", { id: 'image-full', src: imageSrc }),\n                    showCrop && (React__default[\"default\"].createElement(CropprWrapper, { src: imageSrc, size: croppSize, croppUpdate: onCroppUpdate }))),\n                React__default[\"default\"].createElement(\"div\", { className: 'control-panel' },\n                    React__default[\"default\"].createElement(TabContainer, { lazy: true, borderLine: true },\n                        React__default[\"default\"].createElement(TabItem, { name: labels['Basic'] },\n                            (!isMobile.current || (isMobile.current && !showCrop)) && (React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\n                                React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n                                    React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, labels['Quality']),\n                                    React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, state.quality + '%')),\n                                React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start' },\n                                    React__default[\"default\"].createElement(Input, { readOnly: showCrop, disabled: showCrop, className: 'input-range', onChangedDelayed: onUpdateQuality, onChangedValue: function (value) {\n                                            setState(__assign(__assign({}, state), { quality: value }));\n                                        }, style: {\n                                            maxWidth: '100%',\n                                            width: '100%',\n                                            color: color\n                                        }, type: 'range', min: 1, max: 100, value: state.quality })),\n                                React__default[\"default\"].createElement(\"div\", { className: 'item-panel', style: { display: 'flex', width: '100%', justifyContent: 'space-between' } },\n                                    labels['Max dimensions'],\n                                    React__default[\"default\"].createElement(\"div\", { style: { display: 'flex', alignItems: 'center', gap: '.5rem' } },\n                                        React__default[\"default\"].createElement(\"input\", { disabled: showCrop, readOnly: showCrop, type: 'checkbox', checked: state.maintainAspectRatio, onChange: function (e) {\n                                                return setState(__assign(__assign({}, state), { maintainAspectRatio: e.target.checked }));\n                                            }, style: { color: color } }),\n                                        React__default[\"default\"].createElement(\"span\", { className: 'caption' }, labels['aspect-ratio']))),\n                                React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start', style: { marginTop: '10px', justifyContent: 'space-between' } },\n                                    React__default[\"default\"].createElement(\"div\", { className: 'form-field', style: { maxWidth: '48%', width: '48%' } },\n                                        React__default[\"default\"].createElement(\"label\", null, labels['max-width(px)']),\n                                        React__default[\"default\"].createElement(Input, { readOnly: showCrop, disabled: showCrop, placeholder: labels['max-width(px)'], value: state.maxWidth, onChangedValue: function (value) {\n                                                return setState(__assign(__assign({}, state), { maxWidth: value }));\n                                            }, type: 'number', min: 0, max: 2000, onInputChangedEnd: function (value) {\n                                                onChangeSize(value, false);\n                                            } })),\n                                    React__default[\"default\"].createElement(\"div\", { className: 'form-field', style: { maxWidth: '48%', width: '48%' } },\n                                        React__default[\"default\"].createElement(\"label\", null, labels['max-height(px)']),\n                                        React__default[\"default\"].createElement(Input, { readOnly: showCrop, disabled: showCrop, placeholder: labels['max-height(px)'], value: state.maxHeight, onChangedValue: function (value) {\n                                                return setState(__assign(__assign({}, state), { maxHeight: value }));\n                                            }, type: 'number', min: 0, max: 2000, onInputChangedEnd: function (value) {\n                                                onChangeSize(value, true);\n                                            } }))),\n                                React__default[\"default\"].createElement(\"p\", { className: 'item-panel' }, labels['Format']),\n                                React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start', style: { marginTop: '10px', justifyContent: 'space-between' } },\n                                    React__default[\"default\"].createElement(\"div\", { className: 'form-field', style: { width: '100%' } },\n                                        React__default[\"default\"].createElement(\"select\", { disabled: showCrop, value: state.format, onChange: onChangeFormat }, allFormats.map(function (formatItem, index) { return (React__default[\"default\"].createElement(\"option\", { key: index, value: formatItem }, formatItem)); })))))),\n                            React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start', style: { marginTop: '5px', justifyContent: 'space-between' } },\n                                React__default[\"default\"].createElement(\"span\", { style: { display: 'flex', alignItems: 'center', gap: '.5rem' } },\n                                    React__default[\"default\"].createElement(\"button\", { disabled: showCrop, onClick: function () { return onRotate(-90); }, className: 'icon-btn' },\n                                        React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"rotate_left\")),\n                                    React__default[\"default\"].createElement(\"button\", { disabled: showCrop, onClick: function () { return onRotate(90); }, className: 'icon-btn' },\n                                        React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"rotate_right\"))),\n                                React__default[\"default\"].createElement(\"span\", { style: { display: 'flex', alignItems: 'center', gap: '.5rem' } },\n                                    React__default[\"default\"].createElement(\"input\", { \"data-testid\": \"set-crop-checkbox\", name: \"set-crop\", type: 'checkbox', onChange: function (e) {\n                                            setShowCrop(e.target.checked);\n                                        }, checked: showCrop, style: { color: color, marginBottom: '3px' } }),\n                                    React__default[\"default\"].createElement(\"span\", { className: 'item-panel', style: { marginLeft: '4px' } }, labels['Crop']))),\n                            showCrop && (React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null,\n                                React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start', style: { marginTop: '10px', justifyContent: 'space-between' } },\n                                    React__default[\"default\"].createElement(\"div\", { className: 'form-field', style: { maxWidth: '48%', width: '48%' } },\n                                        React__default[\"default\"].createElement(\"label\", null, labels['width(px)']),\n                                        React__default[\"default\"].createElement(Input, { type: 'number', min: 0, value: state.cropWidth, onChangedValue: function (value) {\n                                                return setState(__assign(__assign({}, state), { cropWidth: value }));\n                                            }, onInputChangedEnd: function (value) {\n                                                onChangeCrop(+value, null);\n                                            }, placeholder: labels['width(px)'] })),\n                                    React__default[\"default\"].createElement(\"div\", { className: 'form-field', style: { maxWidth: '48%', width: '48%' } },\n                                        React__default[\"default\"].createElement(\"label\", null, labels['height(px)']),\n                                        React__default[\"default\"].createElement(Input, { type: 'number', min: 0, value: state.cropHeight, onInputChangedEnd: function (value) {\n                                                onChangeCrop(null, +value);\n                                            }, onChangedValue: function (value) {\n                                                return setState(__assign(__assign({}, state), { cropHeight: value }));\n                                            }, placeholder: labels['height(px)'] }))),\n                                React__default[\"default\"].createElement(\"p\", { style: { marginBottom: '4px !important' } },\n                                    React__default[\"default\"].createElement(\"button\", { title: labels['Confirm Crop'], className: 'icon-btn', onClick: onCrop },\n                                        React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \" crop \"),\n                                        React__default[\"default\"].createElement(\"span\", { style: { color: '#fff', marginLeft: 8 } }, labels['Confirm Crop'])))))),\n                        React__default[\"default\"].createElement(TabItem, { disabled: showCrop, name: labels['Filters'] },\n                            React__default[\"default\"].createElement(BasicFilter, { color: color, labels: labels, initialState: state.basicFilters, changeFilter: onChangeFilters }))),\n                    React__default[\"default\"].createElement(\"button\", { title: labels['Undo'], disabled: state.arrayCopiedImages.length <= 1, style: (_b = { position: 'absolute' }, _b[rtl ? 'left' : 'right'] = '10px', _b.top = '30px', _b), className: 'icon-btn', onClick: onRestore },\n                        React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \" refresh \")),\n                    React__default[\"default\"].createElement(\"div\", { className: 'flex-row-start', style: { marginTop: '10px', justifyContent: 'space-between', alignItems: 'center' } },\n                        React__default[\"default\"].createElement(\"button\", { className: 'save-btn', disabled: showCrop, onClick: function () {\n                                onCloseEditPanel(true);\n                            } }, labels['Save']),\n                        sizeImage && (React__default[\"default\"].createElement(\"p\", { className: 'caption image-caption', style: {\n                                color: sizeImage > 120 ? '#f44336' : 'unset',\n                                fontWeight: sizeImage > 120 ? '500' : 'unset'\n                            } },\n                            \"size: \",\n                            sizeImage,\n                            \"Kb \\u00A0 \",\n                            state.format))))))));\n});\n\nvar initialConfig = {\n    language: 'en',\n    objectFit: 'cover',\n    hideDeleteBtn: false,\n    hideDownloadBtn: false,\n    hideEditBtn: false,\n    hideAddBtn: false,\n    rtl: false,\n    darkMode: false,\n    compressInitial: null\n};\nvar initialState = {\n    maxHeight: 3000,\n    maxWidth: 3000,\n    cropHeight: 150,\n    cropWidth: 150,\n    maintainAspectRatio: true,\n    format: 'jpeg',\n    arrayCopiedImages: [],\n    originImageSrc: '',\n    basicFilters: undefined,\n    quality: 100,\n    rotation: 0\n};\nvar ReactImagePickerEditor = React.memo(function (_a) {\n    var _b = _a.config, config = _b === void 0 ? {} : _b, _c = _a.imageSrcProp, imageSrcProp = _c === void 0 ? '' : _c, _d = _a.color, color = _d === void 0 ? '#1e88e5' : _d, _e = _a.imageChanged, imageChanged = _e === void 0 ? function () { } : _e;\n    var _f = React.useState(__assign({}, initialState)), state = _f[0], setState = _f[1];\n    var _g = React.useState(''), imageSrc = _g[0], setImageSrc = _g[1];\n    var _h = React.useState(false), loadImage = _h[0], setLoadImage = _h[1];\n    var _j = React.useState(false), showEditPanel = _j[0], setShowEditPanel = _j[1];\n    var _k = React.useState(labelEn), labels = _k[0], setLabels = _k[1];\n    var _l = React.useState(initialConfig), configuration = _l[0], setConfiguration = _l[1];\n    var imagePicker = React.useRef(null);\n    var fileType = React.useRef('');\n    var urlImage = React.useRef('');\n    var uuidFilePicker = Date.now().toString(20);\n    var imageName = React.useRef('download');\n    React.useRef(false);\n    React.useEffect(function () {\n        appendLinkIconsToHead();\n        processConfig();\n    }, [config]);\n    React.useEffect(function () {\n        loadImageFromProps();\n    }, [imageSrcProp]);\n    function loadImageFromProps() {\n        return __awaiter(this, void 0, void 0, function () {\n            var result, newState, newState;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!imageSrcProp) return [3 /*break*/, 2];\n                        return [4 /*yield*/, parseToBase64(imageSrcProp)];\n                    case 1:\n                        result = _a.sent();\n                        newState = result.state;\n                        newState.originImageSrc = imageSrcProp;\n                        newState.arrayCopiedImages = [\n                            {\n                                lastImage: result.imageUri,\n                                width: newState.maxWidth,\n                                height: newState.maxHeight,\n                                quality: newState.quality,\n                                format: newState.format,\n                                originImageSrc: imageSrcProp\n                            },\n                        ];\n                        // console.log(\"NEW STATE\", newState)\n                        setImageSrc(result.imageUri);\n                        setState(newState);\n                        setLoadImage(true);\n                        return [3 /*break*/, 3];\n                    case 2:\n                        newState = __assign({}, state);\n                        newState.originImageSrc = null;\n                        newState.arrayCopiedImages = [];\n                        setLoadImage(false);\n                        setImageSrc(null);\n                        setState(newState);\n                        _a.label = 3;\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    React.useEffect(function () {\n        imageChanged(imageSrc);\n    }, [imageSrc]);\n    function processConfig() {\n        var dataConf = __assign(__assign({}, configuration), config);\n        setConfiguration(dataConf);\n        if (config.language != undefined) {\n            if (config.language == 'en') {\n                setLabels(__assign({}, labelEn));\n            }\n            if (config.language == 'pt') {\n                setLabels(__assign({}, labelPT));\n            }\n            if (config.language == 'es') {\n                setLabels(__assign({}, labelEs));\n            }\n            if (config.language == 'fr') {\n                setLabels(__assign({}, labelFr));\n            }\n            if (config.language == 'de') {\n                setLabels(__assign({}, labelDe));\n            }\n            if (config.language == 'fa') {\n                setLabels(__assign({}, labelFa));\n            }\n        }\n    }\n    function appendLinkIconsToHead() {\n        var head = document.head;\n        var linkIcons = head.querySelector('#ngp-image-picker-icons-id');\n        if (linkIcons)\n            return;\n        var link = document.createElement('link');\n        link.href = 'https://fonts.googleapis.com/icon?family=Material+Icons';\n        link.rel = 'stylesheet';\n        link.id = 'ngp-image-picker-icons-id';\n        head.appendChild(link);\n    }\n    function onUpload(event) {\n        var _a;\n        event.preventDefault();\n        (_a = imagePicker === null || imagePicker === void 0 ? void 0 : imagePicker.current) === null || _a === void 0 ? void 0 : _a.click();\n    }\n    function handleFileSelect(event) {\n        var _a;\n        var files = (_a = event.target) === null || _a === void 0 ? void 0 : _a.files;\n        if (files) {\n            var file = files[0];\n            imageName.current = file.name.split('.')[0];\n            fileType.current = file.type;\n            if (!fileType.current.includes('image'))\n                return;\n            urlImage.current = \"data:\".concat(file.type, \";base64,\");\n            if (file) {\n                setState(__assign(__assign({}, state), { format: fileType.current.split('image/')[1] }));\n                var reader = new FileReader();\n                reader.onload = handleReaderLoaded.bind(this);\n                reader.readAsBinaryString(file);\n            }\n        }\n    }\n    function handleReaderLoaded(readerEvt) {\n        return __awaiter(this, void 0, void 0, function () {\n            var binaryString, base64textString, newState, newImageSrc, result, img_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        binaryString = readerEvt.target.result;\n                        base64textString = btoa(binaryString);\n                        newState = __assign({}, state);\n                        newImageSrc = urlImage.current + base64textString;\n                        newState.originImageSrc = urlImage.current + base64textString;\n                        if (!configuration.compressInitial) return [3 /*break*/, 2];\n                        newState = __assign(__assign({}, newState), { quality: Math.min(configuration.compressInitial || 92, 100), maintainAspectRatio: true, format: 'jpeg' });\n                        return [4 /*yield*/, convertImageUsingCanvas(newState.originImageSrc, false, newState, { getDimFromImage: true })];\n                    case 1:\n                        result = _a.sent();\n                        setState(result.state);\n                        setImageSrc(result.imageUri);\n                        setLoadImage(true);\n                        return [3 /*break*/, 3];\n                    case 2:\n                        img_1 = document.createElement('img');\n                        img_1.src = newImageSrc;\n                        img_1.onload = function () {\n                            newState.arrayCopiedImages = [];\n                            newState.maxHeight = img_1.height;\n                            newState.maxWidth = img_1.width;\n                            newState.format = fileType.current.split('image/')[1];\n                            newState.arrayCopiedImages.push({\n                                lastImage: newImageSrc,\n                                width: img_1.width,\n                                height: img_1.height,\n                                quality: newState.quality,\n                                format: fileType.current.split('image/')[1],\n                                originImageSrc: newState.originImageSrc\n                            });\n                            setState(newState);\n                            setImageSrc(newImageSrc);\n                            setLoadImage(true);\n                        };\n                        _a.label = 3;\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    }\n    var sizeImage = React.useMemo(function () {\n        if (imageSrc && imageSrc.length) {\n            return Math.ceil(((3 / 4) * imageSrc.length) / 1024);\n        }\n        else {\n            return '';\n        }\n    }, [imageSrc]);\n    function parseToBase64(imageUrl) {\n        var newState = __assign({}, state);\n        var types = imageUrl.split('.');\n        var type = types[types.length - 1];\n        if (type && (type == 'png' || type == 'jpeg' || type == 'webp')) {\n            type = type;\n        }\n        else {\n            type = 'jpeg';\n        }\n        newState.format = type;\n        if (config.compressInitial != null) {\n            var quality = 1;\n            if (config.compressInitial >= 0 && config.compressInitial <= 100) {\n                quality = config.compressInitial;\n            }\n            newState.quality = quality;\n        }\n        return new Promise(function (resolve, reject) {\n            var img = new Image();\n            img.crossOrigin = 'Anonymous';\n            newState.maxHeight = img.height;\n            newState.maxWidth = img.width;\n            img.onload = function () {\n                var canvas = document.createElement('canvas');\n                var ctx = canvas.getContext('2d');\n                var ratio = 1.0;\n                canvas.width = img.width * ratio;\n                canvas.height = img.height * ratio;\n                ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n                console.log(newState.quality);\n                var dataURI = canvas.toDataURL(\"image/\".concat(type), newState.quality / 100);\n                return resolve({\n                    dataUri: dataURI,\n                    width: canvas.width,\n                    height: canvas.height\n                });\n            };\n            img.onerror = function (e) {\n                return reject(e.message || \"Error loading the src = \".concat(imageUrl));\n            };\n            img.src = imageUrl;\n        }).then(function (data) {\n            newState = __assign(__assign({}, newState), { maxHeight: data.height, maxWidth: data.width });\n            return { imageUri: data.dataUri, state: newState };\n        });\n    }\n    function onOpenEditPanel() {\n        setShowEditPanel(true);\n    }\n    function onCloseEditPanel(data) {\n        setShowEditPanel(false);\n        if (data) {\n            setState(data.state);\n            setImageSrc(data.imageSrc);\n        }\n    }\n    function onRemove() {\n        setImageSrc(null);\n        setLoadImage(false);\n        var newState = __assign(__assign({}, state), initialState);\n        setState(newState);\n        setShowEditPanel(false);\n    }\n    React.useEffect(function () {\n        var handleKeyDown = function (event) {\n            if (event.key === 'Escape') {\n                onCloseEditPanel(null);\n            }\n        };\n        document.addEventListener('keydown', handleKeyDown);\n        return function () {\n            document.removeEventListener('keydown', handleKeyDown);\n        };\n    }, []);\n    return (React__default[\"default\"].createElement(\"div\", { className: \"ReactImagePickerEditor \".concat(config.darkMode ? \"dark\" : \"\") },\n        !loadImage && (React__default[\"default\"].createElement(\"div\", { className: 'place-image' },\n            React__default[\"default\"].createElement(\"div\", { className: 'image-holder', style: {\n                    width: configuration.width,\n                    height: configuration.height,\n                    borderRadius: configuration.borderRadius,\n                    aspectRatio: configuration.aspectRatio + ''\n                } },\n                React__default[\"default\"].createElement(\"button\", { title: labels['Upload a image'], className: 'icon-btn image-upload-btn', onClick: onUpload },\n                    React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"add_a_photo\")),\n                React__default[\"default\"].createElement(\"input\", { ref: imagePicker, type: 'file', style: { display: 'none' }, id: 'filePicker-' + uuidFilePicker, onChange: handleFileSelect })))),\n        loadImage && (React__default[\"default\"].createElement(\"div\", { className: 'place-image' },\n            React__default[\"default\"].createElement(\"div\", { className: 'image-holder-loaded', style: {\n                    width: configuration.width,\n                    height: configuration.height,\n                    borderRadius: configuration.borderRadius,\n                    aspectRatio: configuration.aspectRatio + ''\n                } },\n                React__default[\"default\"].createElement(\"img\", { src: imageSrc, alt: 'image-loaded', style: {\n                        borderRadius: configuration.borderRadius,\n                        objectFit: configuration.objectFit\n                    } }),\n                React__default[\"default\"].createElement(\"div\", { className: 'curtain', onClick: onUpload },\n                    React__default[\"default\"].createElement(\"button\", { title: labels['Upload a image'] },\n                        React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"add_a_photo\"))),\n                React__default[\"default\"].createElement(\"input\", { ref: imagePicker, type: 'file', style: { display: 'none' }, id: 'filePicker-' + uuidFilePicker, onChange: handleFileSelect })),\n            sizeImage && (React__default[\"default\"].createElement(\"p\", { className: 'caption image-caption', style: {\n                    color: sizeImage > 120 ? '#f44336' : 'unset',\n                    fontWeight: sizeImage > 120 ? '500' : 'unset'\n                } },\n                \"size: \",\n                sizeImage,\n                \"Kb \\u00A0 \",\n                state.format)),\n            React__default[\"default\"].createElement(\"div\", { style: {\n                    flexDirection: 'row',\n                    boxSizing: 'border-box',\n                    display: 'flex',\n                    placeContent: 'flex-start',\n                    alignItems: 'flex-start'\n                }, className: 'editing-bar-btn' },\n                !configuration.hideAddBtn && (React__default[\"default\"].createElement(\"button\", { className: 'icon-btn', id: 'upload-img', title: labels['Upload a image'], onClick: onUpload },\n                    React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"add_a_photo\"))),\n                !configuration.hideEditBtn && (React__default[\"default\"].createElement(\"button\", { className: 'icon-btn', id: 'edit-img', title: labels['Open the editor panel'], onClick: onOpenEditPanel },\n                    React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"edit\"))),\n                !configuration.hideDownloadBtn && (React__default[\"default\"].createElement(\"a\", { id: 'download-img', title: labels['Download the image'], href: imageSrc, download: imageName.current },\n                    React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"cloud_download\"))),\n                !configuration.hideDeleteBtn && (React__default[\"default\"].createElement(\"button\", { className: 'icon-btn', id: 'delete-img', title: labels['Remove'], onClick: function () { return onRemove(); } },\n                    React__default[\"default\"].createElement(\"span\", { className: 'material-icons' }, \"delete\")))))),\n        showEditPanel && (React__default[\"default\"].createElement(EditImage, { saveUpdates: onCloseEditPanel, labels: labels, color: color, image: imageSrc, initialState: state, rtl: config.rtl || false, dark: config.darkMode || false }))));\n});\n\nmodule.exports = ReactImagePickerEditor;\n\n"]}