{"version":3,"file":"5718.e5240527996520e9c59f.js","mappings":"oGAUA,IAGIA,EAAiB,4BAGjBC,EAAuB,EACvBC,EAAyB,EAGzBC,EAAmB,iBAGnBC,EAAU,qBACVC,EAAW,iBACXC,EAAW,yBACXC,EAAU,mBACVC,EAAU,gBACVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBACZC,EAAU,gBACVC,EAAY,kBACZC,EAAa,mBACbC,EAAW,iBACXC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBAEZC,EAAe,qBACfC,EAAa,mBAEbC,EAAiB,uBACjBC,EAAc,oBAkBdC,EAAe,8BAGfC,EAAW,mBAGXC,EAAiB,CAAC,EACtBA,EAxBiB,yBAwBYA,EAvBZ,yBAwBjBA,EAvBc,sBAuBYA,EAtBX,uBAuBfA,EAtBe,uBAsBYA,EArBZ,uBAsBfA,EArBsB,8BAqBYA,EApBlB,wBAqBhBA,EApBgB,yBAoBY,EAC5BA,EAAevB,GAAWuB,EAAetB,GACzCsB,EAAeJ,GAAkBI,EAAepB,GAChDoB,EAAeH,GAAeG,EAAenB,GAC7CmB,EAAelB,GAAYkB,EAAejB,GAC1CiB,EAAef,GAAUe,EAAed,GACxCc,EAAeZ,GAAaY,EAAeT,GAC3CS,EAAeR,GAAUQ,EAAeP,GACxCO,EAAeL,IAAc,EAG7B,IAAIM,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOC,SAAWA,QAAU,EAAAD,EAGhFE,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKF,SAAWA,QAAUE,KAGxEC,EAAOL,GAAcG,GAAYG,SAAS,cAATA,GAGjCC,EAA4CC,IAAYA,EAAQC,UAAYD,EAG5EE,EAAaH,GAA4CI,IAAWA,EAAOF,UAAYE,EAGvFC,EAAgBF,GAAcA,EAAWF,UAAYD,EAGrDM,EAAcD,GAAiBZ,EAAWc,QAG1CC,EAAY,WACd,IACE,OAAOF,GAAeA,EAAYG,SAAWH,EAAYG,QAAQ,OACnE,CAAE,MAAOC,GAAI,CACf,CAJe,GAOXC,EAAmBH,GAAYA,EAASI,aAuD5C,SAASC,EAAUC,EAAOC,GAIxB,IAHA,IAAIC,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,SAE9BD,EAAQC,GACf,GAAIF,EAAUD,EAAME,GAAQA,EAAOF,GACjC,OAAO,EAGX,OAAO,CACT,CAiEA,SAASI,EAAWC,GAClB,IAAIH,GAAS,EACTI,EAASC,MAAMF,EAAIG,MAKvB,OAHAH,EAAII,SAAQ,SAASC,EAAOC,GAC1BL,IAASJ,GAAS,CAACS,EAAKD,EAC1B,IACOJ,CACT,CAuBA,SAASM,EAAWC,GAClB,IAAIX,GAAS,EACTI,EAASC,MAAMM,EAAIL,MAKvB,OAHAK,EAAIJ,SAAQ,SAASC,GACnBJ,IAASJ,GAASQ,CACpB,IACOJ,CACT,CAGA,IAeMQ,EAvCWC,EAAMC,EAwBnBC,EAAaV,MAAMW,UACnBC,EAAYlC,SAASiC,UACrBE,EAAcvC,OAAOqC,UAGrBG,EAAarC,EAAK,sBAGlBsC,EAAeH,EAAUI,SAGzBC,EAAiBJ,EAAYI,eAG7BC,GACEX,EAAM,SAASY,KAAKL,GAAcA,EAAWM,MAAQN,EAAWM,KAAKC,UAAY,KACvE,iBAAmBd,EAAO,GAQtCe,EAAuBT,EAAYG,SAGnCO,GAAaC,OAAO,IACtBT,EAAaU,KAAKR,GAAgBS,QA7PjB,sBA6PuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EC,GAAS3C,EAAgBP,EAAKkD,YAASC,EACvCC,GAASpD,EAAKoD,OACdC,GAAarD,EAAKqD,WAClBC,GAAuBlB,EAAYkB,qBACnCC,GAAStB,EAAWsB,OACpBC,GAAiBJ,GAASA,GAAOK,iBAAcN,EAG/CO,GAAmB7D,OAAO8D,sBAC1BC,GAAiBV,GAASA,GAAOW,cAAWV,EAC5CW,IAnEa/B,EAmEQlC,OAAO8C,KAnETX,EAmEenC,OAlE7B,SAASkE,GACd,OAAOhC,EAAKC,EAAU+B,GACxB,GAmEEC,GAAWC,GAAUjE,EAAM,YAC3BkE,GAAMD,GAAUjE,EAAM,OACtBmE,GAAUF,GAAUjE,EAAM,WAC1BoE,GAAMH,GAAUjE,EAAM,OACtBqE,GAAUJ,GAAUjE,EAAM,WAC1BsE,GAAeL,GAAUpE,OAAQ,UAGjC0E,GAAqBC,GAASR,IAC9BS,GAAgBD,GAASN,IACzBQ,GAAoBF,GAASL,IAC7BQ,GAAgBH,GAASJ,IACzBQ,GAAoBJ,GAASH,IAG7BQ,GAAczB,GAASA,GAAOlB,eAAYiB,EAC1C2B,GAAgBD,GAAcA,GAAYE,aAAU5B,EASxD,SAAS6B,GAAKC,GACZ,IAAI/D,GAAS,EACTC,EAAoB,MAAX8D,EAAkB,EAAIA,EAAQ9D,OAG3C,IADA+D,KAAKC,UACIjE,EAAQC,GAAQ,CACvB,IAAIiE,EAAQH,EAAQ/D,GACpBgE,KAAKrD,IAAIuD,EAAM,GAAIA,EAAM,GAC3B,CACF,CA6FA,SAASC,GAAUJ,GACjB,IAAI/D,GAAS,EACTC,EAAoB,MAAX8D,EAAkB,EAAIA,EAAQ9D,OAG3C,IADA+D,KAAKC,UACIjE,EAAQC,GAAQ,CACvB,IAAIiE,EAAQH,EAAQ/D,GACpBgE,KAAKrD,IAAIuD,EAAM,GAAIA,EAAM,GAC3B,CACF,CA0GA,SAASE,GAASL,GAChB,IAAI/D,GAAS,EACTC,EAAoB,MAAX8D,EAAkB,EAAIA,EAAQ9D,OAG3C,IADA+D,KAAKC,UACIjE,EAAQC,GAAQ,CACvB,IAAIiE,EAAQH,EAAQ/D,GACpBgE,KAAKrD,IAAIuD,EAAM,GAAIA,EAAM,GAC3B,CACF,CA6FA,SAASG,GAASC,GAChB,IAAItE,GAAS,EACTC,EAAmB,MAAVqE,EAAiB,EAAIA,EAAOrE,OAGzC,IADA+D,KAAKO,SAAW,IAAIH,KACXpE,EAAQC,GACf+D,KAAKQ,IAAIF,EAAOtE,GAEpB,CAyCA,SAASyE,GAAMV,GACb,IAAIW,EAAOV,KAAKO,SAAW,IAAIJ,GAAUJ,GACzCC,KAAK1D,KAAOoE,EAAKpE,IACnB,CAqIA,SAASqE,GAAa7E,EAAOW,GAE3B,IADA,IAAIR,EAASH,EAAMG,OACZA,KACL,GAAI2E,GAAG9E,EAAMG,GAAQ,GAAIQ,GACvB,OAAOR,EAGX,OAAQ,CACV,CAyBA,SAAS4E,GAAWrE,GAClB,OAAa,MAATA,OACeyB,IAAVzB,EAAsBtC,EAAeP,EAEtC2E,IAAkBA,MAAkB3D,OAAO6B,GA0arD,SAAmBA,GACjB,IAAIsE,EAAQxD,EAAeQ,KAAKtB,EAAO8B,IACnCyC,EAAMvE,EAAM8B,IAEhB,IACE9B,EAAM8B,SAAkBL,EACxB,IAAI+C,GAAW,CACjB,CAAE,MAAOtF,GAAI,CAEb,IAAIU,EAASuB,EAAqBG,KAAKtB,GAQvC,OAPIwE,IACEF,EACFtE,EAAM8B,IAAkByC,SAEjBvE,EAAM8B,KAGVlC,CACT,CA3bM6E,CAAUzE,GA4iBhB,SAAwBA,GACtB,OAAOmB,EAAqBG,KAAKtB,EACnC,CA7iBM0E,CAAe1E,EACrB,CASA,SAAS2E,GAAgB3E,GACvB,OAAO4E,GAAa5E,IAAUqE,GAAWrE,IAAUvD,CACrD,CAgBA,SAASoI,GAAY7E,EAAO8E,EAAOC,EAASC,EAAYC,GACtD,OAAIjF,IAAU8E,IAGD,MAAT9E,GAA0B,MAAT8E,IAAmBF,GAAa5E,KAAW4E,GAAaE,GACpE9E,GAAUA,GAAS8E,GAAUA,EAmBxC,SAAyBI,EAAQJ,EAAOC,EAASC,EAAYG,EAAWF,GACtE,IAAIG,EAAWC,GAAQH,GACnBI,EAAWD,GAAQP,GACnBS,EAASH,EAAW1I,EAAW8I,GAAON,GACtCO,EAASH,EAAW5I,EAAW8I,GAAOV,GAKtCY,GAHJH,EAASA,GAAU9I,EAAUW,EAAYmI,IAGhBnI,EACrBuI,GAHJF,EAASA,GAAUhJ,EAAUW,EAAYqI,IAGhBrI,EACrBwI,EAAYL,GAAUE,EAE1B,GAAIG,GAAazD,GAAS+C,GAAS,CACjC,IAAK/C,GAAS2C,GACZ,OAAO,EAETM,GAAW,EACXM,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAT,IAAUA,EAAQ,IAAIhB,IACdmB,GAAYhG,GAAa8F,GAC7BW,GAAYX,EAAQJ,EAAOC,EAASC,EAAYG,EAAWF,GAiKnE,SAAoBC,EAAQJ,EAAOP,EAAKQ,EAASC,EAAYG,EAAWF,GACtE,OAAQV,GACN,KAAK1G,EACH,GAAKqH,EAAOY,YAAchB,EAAMgB,YAC3BZ,EAAOa,YAAcjB,EAAMiB,WAC9B,OAAO,EAETb,EAASA,EAAOc,OAChBlB,EAAQA,EAAMkB,OAEhB,KAAKpI,EACH,QAAKsH,EAAOY,YAAchB,EAAMgB,aAC3BX,EAAU,IAAIxD,GAAWuD,GAAS,IAAIvD,GAAWmD,KAKxD,KAAKlI,EACL,KAAKC,EACL,KAAKK,EAGH,OAAOkH,IAAIc,GAASJ,GAEtB,KAAKhI,EACH,OAAOoI,EAAOe,MAAQnB,EAAMmB,MAAQf,EAAOgB,SAAWpB,EAAMoB,QAE9D,KAAK3I,EACL,KAAKE,EAIH,OAAOyH,GAAWJ,EAAQ,GAE5B,KAAK7H,EACH,IAAIkJ,EAAUzG,EAEhB,KAAKlC,EACH,IAAI4I,EAAYrB,EAAUzI,EAG1B,GAFA6J,IAAYA,EAAUjG,GAElBgF,EAAOpF,MAAQgF,EAAMhF,OAASsG,EAChC,OAAO,EAGT,IAAIC,EAAUpB,EAAMqB,IAAIpB,GACxB,GAAImB,EACF,OAAOA,GAAWvB,EAEpBC,GAAWxI,EAGX0I,EAAM9E,IAAI+E,EAAQJ,GAClB,IAAIlF,EAASiG,GAAYM,EAAQjB,GAASiB,EAAQrB,GAAQC,EAASC,EAAYG,EAAWF,GAE1F,OADAA,EAAc,OAAEC,GACTtF,EAET,IAhoCY,kBAioCV,GAAIwD,GACF,OAAOA,GAAc9B,KAAK4D,IAAW9B,GAAc9B,KAAKwD,GAG9D,OAAO,CACT,CA/NQyB,CAAWrB,EAAQJ,EAAOS,EAAQR,EAASC,EAAYG,EAAWF,GAExE,KAAMF,EAAUzI,GAAuB,CACrC,IAAIkK,EAAed,GAAY5E,EAAeQ,KAAK4D,EAAQ,eACvDuB,EAAed,GAAY7E,EAAeQ,KAAKwD,EAAO,eAE1D,GAAI0B,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAetB,EAAOlF,QAAUkF,EAC/CyB,EAAeF,EAAe3B,EAAM9E,QAAU8E,EAGlD,OADAG,IAAUA,EAAQ,IAAIhB,IACfkB,EAAUuB,EAAcC,EAAc5B,EAASC,EAAYC,EACpE,CACF,CACA,QAAKW,IAGLX,IAAUA,EAAQ,IAAIhB,IA6NxB,SAAsBiB,EAAQJ,EAAOC,EAASC,EAAYG,EAAWF,GACnE,IAAImB,EAAYrB,EAAUzI,EACtBsK,EAAWC,GAAW3B,GACtB4B,EAAYF,EAASnH,OAIzB,GAAIqH,GAHWD,GAAW/B,GACDrF,SAEM2G,EAC7B,OAAO,EAGT,IADA,IAAI5G,EAAQsH,EACLtH,KAAS,CACd,IAAIS,EAAM2G,EAASpH,GACnB,KAAM4G,EAAYnG,KAAO6E,EAAQhE,EAAeQ,KAAKwD,EAAO7E,IAC1D,OAAO,CAEX,CAEA,IAAIoG,EAAUpB,EAAMqB,IAAIpB,GACxB,GAAImB,GAAWpB,EAAMqB,IAAIxB,GACvB,OAAOuB,GAAWvB,EAEpB,IAAIlF,GAAS,EACbqF,EAAM9E,IAAI+E,EAAQJ,GAClBG,EAAM9E,IAAI2E,EAAOI,GAGjB,IADA,IAAI6B,EAAWX,IACN5G,EAAQsH,GAAW,CAE1B,IAAIE,EAAW9B,EADfjF,EAAM2G,EAASpH,IAEXyH,EAAWnC,EAAM7E,GAErB,GAAI+E,EACF,IAAIkC,EAAWd,EACXpB,EAAWiC,EAAUD,EAAU/G,EAAK6E,EAAOI,EAAQD,GACnDD,EAAWgC,EAAUC,EAAUhH,EAAKiF,EAAQJ,EAAOG,GAGzD,UAAmBxD,IAAbyF,EACGF,IAAaC,GAAY9B,EAAU6B,EAAUC,EAAUlC,EAASC,EAAYC,GAC7EiC,GACD,CACLtH,GAAS,EACT,KACF,CACAmH,IAAaA,EAAkB,eAAP9G,EAC1B,CACA,GAAIL,IAAWmH,EAAU,CACvB,IAAII,EAAUjC,EAAOkC,YACjBC,EAAUvC,EAAMsC,YAGhBD,GAAWE,KACV,gBAAiBnC,MAAU,gBAAiBJ,IACzB,mBAAXqC,GAAyBA,aAAmBA,GACjC,mBAAXE,GAAyBA,aAAmBA,IACvDzH,GAAS,EAEb,CAGA,OAFAqF,EAAc,OAAEC,GAChBD,EAAc,OAAEH,GACTlF,CACT,CA1RS0H,CAAapC,EAAQJ,EAAOC,EAASC,EAAYG,EAAWF,GACrE,CA5DSsC,CAAgBvH,EAAO8E,EAAOC,EAASC,EAAYH,GAAaI,GACzE,CA0HA,SAASY,GAAYvG,EAAOwF,EAAOC,EAASC,EAAYG,EAAWF,GACjE,IAAImB,EAAYrB,EAAUzI,EACtBkL,EAAYlI,EAAMG,OAClBgI,EAAY3C,EAAMrF,OAEtB,GAAI+H,GAAaC,KAAerB,GAAaqB,EAAYD,GACvD,OAAO,EAGT,IAAInB,EAAUpB,EAAMqB,IAAIhH,GACxB,GAAI+G,GAAWpB,EAAMqB,IAAIxB,GACvB,OAAOuB,GAAWvB,EAEpB,IAAItF,GAAS,EACTI,GAAS,EACT8H,EAAQ3C,EAAUxI,EAA0B,IAAIsH,QAAWpC,EAM/D,IAJAwD,EAAM9E,IAAIb,EAAOwF,GACjBG,EAAM9E,IAAI2E,EAAOxF,KAGRE,EAAQgI,GAAW,CAC1B,IAAIG,EAAWrI,EAAME,GACjByH,EAAWnC,EAAMtF,GAErB,GAAIwF,EACF,IAAIkC,EAAWd,EACXpB,EAAWiC,EAAUU,EAAUnI,EAAOsF,EAAOxF,EAAO2F,GACpDD,EAAW2C,EAAUV,EAAUzH,EAAOF,EAAOwF,EAAOG,GAE1D,QAAiBxD,IAAbyF,EAAwB,CAC1B,GAAIA,EACF,SAEFtH,GAAS,EACT,KACF,CAEA,GAAI8H,GACF,IAAKrI,EAAUyF,GAAO,SAASmC,EAAUW,GACnC,GA72Ba3H,EA62BO2H,GAANF,EA52BXG,IAAI5H,KA62BF0H,IAAaV,GAAY9B,EAAUwC,EAAUV,EAAUlC,EAASC,EAAYC,IAC/E,OAAOyC,EAAKI,KAAKF,GA/2B/B,IAAyB3H,CAi3Bf,IAAI,CACNL,GAAS,EACT,KACF,OACK,GACD+H,IAAaV,IACX9B,EAAUwC,EAAUV,EAAUlC,EAASC,EAAYC,GACpD,CACLrF,GAAS,EACT,KACF,CACF,CAGA,OAFAqF,EAAc,OAAE3F,GAChB2F,EAAc,OAAEH,GACTlF,CACT,CAwKA,SAASiH,GAAW3B,GAClB,OApZF,SAAwBA,EAAQ6C,EAAUC,GACxC,IAAIpI,EAASmI,EAAS7C,GACtB,OAAOG,GAAQH,GAAUtF,EAhuB3B,SAAmBN,EAAOwE,GAKxB,IAJA,IAAItE,GAAS,EACTC,EAASqE,EAAOrE,OAChBwI,EAAS3I,EAAMG,SAEVD,EAAQC,GACfH,EAAM2I,EAASzI,GAASsE,EAAOtE,GAEjC,OAAOF,CACT,CAutBoC4I,CAAUtI,EAAQoI,EAAY9C,GAClE,CAiZSiD,CAAejD,EAAQjE,GAAMmH,GACtC,CAUA,SAASC,GAAW1I,EAAKM,GACvB,IAsHiBD,EACbsI,EAvHApE,EAAOvE,EAAIoE,SACf,OAuHgB,WADZuE,SADatI,EArHAC,KAuHmB,UAARqI,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVtI,EACU,OAAVA,GAxHDkE,EAAmB,iBAAPjE,EAAkB,SAAW,QACzCiE,EAAKvE,GACX,CAUA,SAAS4C,GAAU2C,EAAQjF,GACzB,IAAID,EAxjCN,SAAkBkF,EAAQjF,GACxB,OAAiB,MAAViF,OAAiBzD,EAAYyD,EAAOjF,EAC7C,CAsjCcsI,CAASrD,EAAQjF,GAC7B,OArTF,SAAsBD,GACpB,SAAKwI,GAASxI,IAwahB,SAAkBK,GAChB,QAASU,GAAeA,KAAcV,CACxC,CA1a0BoI,CAASzI,MAGnB0I,GAAW1I,GAASoB,GAAatD,GAChC6K,KAAK7F,GAAS9C,GAC/B,CA+SS4I,CAAa5I,GAASA,OAAQyB,CACvC,CAr2BA6B,GAAK9C,UAAUiD,MAvEf,WACED,KAAKO,SAAWnB,GAAeA,GAAa,MAAQ,CAAC,EACrDY,KAAK1D,KAAO,CACd,EAqEAwD,GAAK9C,UAAkB,OAzDvB,SAAoBP,GAClB,IAAIL,EAAS4D,KAAKqE,IAAI5H,WAAeuD,KAAKO,SAAS9D,GAEnD,OADAuD,KAAK1D,MAAQF,EAAS,EAAI,EACnBA,CACT,EAsDA0D,GAAK9C,UAAU8F,IA3Cf,SAAiBrG,GACf,IAAIiE,EAAOV,KAAKO,SAChB,GAAInB,GAAc,CAChB,IAAIhD,EAASsE,EAAKjE,GAClB,OAAOL,IAAWvD,OAAiBoF,EAAY7B,CACjD,CACA,OAAOkB,EAAeQ,KAAK4C,EAAMjE,GAAOiE,EAAKjE,QAAOwB,CACtD,EAqCA6B,GAAK9C,UAAUqH,IA1Bf,SAAiB5H,GACf,IAAIiE,EAAOV,KAAKO,SAChB,OAAOnB,QAA8BnB,IAAdyC,EAAKjE,GAAsBa,EAAeQ,KAAK4C,EAAMjE,EAC9E,EAwBAqD,GAAK9C,UAAUL,IAZf,SAAiBF,EAAKD,GACpB,IAAIkE,EAAOV,KAAKO,SAGhB,OAFAP,KAAK1D,MAAQ0D,KAAKqE,IAAI5H,GAAO,EAAI,EACjCiE,EAAKjE,GAAQ2C,SAA0BnB,IAAVzB,EAAuB3D,EAAiB2D,EAC9DwD,IACT,EAsHAG,GAAUnD,UAAUiD,MApFpB,WACED,KAAKO,SAAW,GAChBP,KAAK1D,KAAO,CACd,EAkFA6D,GAAUnD,UAAkB,OAvE5B,SAAyBP,GACvB,IAAIiE,EAAOV,KAAKO,SACZvE,EAAQ2E,GAAaD,EAAMjE,GAE/B,QAAIT,EAAQ,IAIRA,GADY0E,EAAKzE,OAAS,EAE5ByE,EAAK2E,MAELhH,GAAOP,KAAK4C,EAAM1E,EAAO,KAEzBgE,KAAK1D,KACA,GACT,EAyDA6D,GAAUnD,UAAU8F,IA9CpB,SAAsBrG,GACpB,IAAIiE,EAAOV,KAAKO,SACZvE,EAAQ2E,GAAaD,EAAMjE,GAE/B,OAAOT,EAAQ,OAAIiC,EAAYyC,EAAK1E,GAAO,EAC7C,EA0CAmE,GAAUnD,UAAUqH,IA/BpB,SAAsB5H,GACpB,OAAOkE,GAAaX,KAAKO,SAAU9D,IAAQ,CAC7C,EA8BA0D,GAAUnD,UAAUL,IAlBpB,SAAsBF,EAAKD,GACzB,IAAIkE,EAAOV,KAAKO,SACZvE,EAAQ2E,GAAaD,EAAMjE,GAQ/B,OANIT,EAAQ,KACRgE,KAAK1D,KACPoE,EAAK4D,KAAK,CAAC7H,EAAKD,KAEhBkE,EAAK1E,GAAO,GAAKQ,EAEZwD,IACT,EAwGAI,GAASpD,UAAUiD,MAtEnB,WACED,KAAK1D,KAAO,EACZ0D,KAAKO,SAAW,CACd,KAAQ,IAAIT,GACZ,IAAO,IAAKd,IAAOmB,IACnB,OAAU,IAAIL,GAElB,EAgEAM,GAASpD,UAAkB,OArD3B,SAAwBP,GACtB,IAAIL,EAASyI,GAAW7E,KAAMvD,GAAa,OAAEA,GAE7C,OADAuD,KAAK1D,MAAQF,EAAS,EAAI,EACnBA,CACT,EAkDAgE,GAASpD,UAAU8F,IAvCnB,SAAqBrG,GACnB,OAAOoI,GAAW7E,KAAMvD,GAAKqG,IAAIrG,EACnC,EAsCA2D,GAASpD,UAAUqH,IA3BnB,SAAqB5H,GACnB,OAAOoI,GAAW7E,KAAMvD,GAAK4H,IAAI5H,EACnC,EA0BA2D,GAASpD,UAAUL,IAdnB,SAAqBF,EAAKD,GACxB,IAAIkE,EAAOmE,GAAW7E,KAAMvD,GACxBH,EAAOoE,EAAKpE,KAIhB,OAFAoE,EAAK/D,IAAIF,EAAKD,GACdwD,KAAK1D,MAAQoE,EAAKpE,MAAQA,EAAO,EAAI,EAC9B0D,IACT,EAwDAK,GAASrD,UAAUwD,IAAMH,GAASrD,UAAUsH,KAnB5C,SAAqB9H,GAEnB,OADAwD,KAAKO,SAAS5D,IAAIH,EAAO3D,GAClBmH,IACT,EAiBAK,GAASrD,UAAUqH,IANnB,SAAqB7H,GACnB,OAAOwD,KAAKO,SAAS8D,IAAI7H,EAC3B,EAoGAiE,GAAMzD,UAAUiD,MA3EhB,WACED,KAAKO,SAAW,IAAIJ,GACpBH,KAAK1D,KAAO,CACd,EAyEAmE,GAAMzD,UAAkB,OA9DxB,SAAqBP,GACnB,IAAIiE,EAAOV,KAAKO,SACZnE,EAASsE,EAAa,OAAEjE,GAG5B,OADAuD,KAAK1D,KAAOoE,EAAKpE,KACVF,CACT,EAyDAqE,GAAMzD,UAAU8F,IA9ChB,SAAkBrG,GAChB,OAAOuD,KAAKO,SAASuC,IAAIrG,EAC3B,EA6CAgE,GAAMzD,UAAUqH,IAlChB,SAAkB5H,GAChB,OAAOuD,KAAKO,SAAS8D,IAAI5H,EAC3B,EAiCAgE,GAAMzD,UAAUL,IArBhB,SAAkBF,EAAKD,GACrB,IAAIkE,EAAOV,KAAKO,SAChB,GAAIG,aAAgBP,GAAW,CAC7B,IAAImF,EAAQ5E,EAAKH,SACjB,IAAKvB,IAAQsG,EAAMrJ,OAASsJ,IAG1B,OAFAD,EAAMhB,KAAK,CAAC7H,EAAKD,IACjBwD,KAAK1D,OAASoE,EAAKpE,KACZ0D,KAETU,EAAOV,KAAKO,SAAW,IAAIH,GAASkF,EACtC,CAGA,OAFA5E,EAAK/D,IAAIF,EAAKD,GACdwD,KAAK1D,KAAOoE,EAAKpE,KACV0D,IACT,EA8hBA,IAAI4E,GAAcpG,GAA+B,SAASkD,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS/G,OAAO+G,GA9sClB,SAAqB5F,EAAOC,GAM1B,IALA,IAAIC,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACnCuJ,EAAW,EACXpJ,EAAS,KAEJJ,EAAQC,GAAQ,CACvB,IAAIO,EAAQV,EAAME,GAwsCkCyJ,EAvsCtCjJ,EAwsCP4B,GAAqBN,KAAK4D,EAAQ+D,KAvsCvCrJ,EAAOoJ,KAAchJ,EAEzB,CAosC6C,IAASiJ,EAnsCtD,OAAOrJ,CACT,CAksCSsJ,CAAYlH,GAAiBkD,IAGtC,EAodA,WACE,MAAO,EACT,EA7cIM,GAASnB,GAkCb,SAAS8E,GAAQnJ,EAAOP,GAEtB,SADAA,EAAmB,MAAVA,EAAiBjD,EAAmBiD,KAE1B,iBAATO,GAAqBjC,EAAS4K,KAAK3I,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQP,CAC7C,CA2DA,SAASqD,GAASzC,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOO,EAAaU,KAAKjB,EAC3B,CAAE,MAAOnB,GAAI,CACb,IACE,OAAQmB,EAAO,EACjB,CAAE,MAAOnB,GAAI,CACf,CACA,MAAO,EACT,CAkCA,SAASkF,GAAGpE,EAAO8E,GACjB,OAAO9E,IAAU8E,GAAU9E,GAAUA,GAAS8E,GAAUA,CAC1D,EA7IKxC,IAAYkD,GAAO,IAAIlD,GAAS,IAAI8G,YAAY,MAAQvL,GACxD2E,IAAOgD,GAAO,IAAIhD,KAAQvF,GAC1BwF,IAAW+C,GAAO/C,GAAQ4G,YAAchM,GACxCqF,IAAO8C,GAAO,IAAI9C,KAAQlF,GAC1BmF,IAAW6C,GAAO,IAAI7C,KAAYhF,KACrC6H,GAAS,SAASxF,GAChB,IAAIJ,EAASyE,GAAWrE,GACpBsJ,EAAO1J,GAAUxC,EAAY4C,EAAMoH,iBAAc3F,EACjD8H,EAAaD,EAAOxG,GAASwG,GAAQ,GAEzC,GAAIC,EACF,OAAQA,GACN,KAAK1G,GAAoB,OAAOhF,EAChC,KAAKkF,GAAe,OAAO9F,EAC3B,KAAK+F,GAAmB,OAAO3F,EAC/B,KAAK4F,GAAe,OAAOzF,EAC3B,KAAK0F,GAAmB,OAAOvF,EAGnC,OAAOiC,CACT,GA6IF,IAAI4J,GAAc7E,GAAgB,WAAa,OAAO8E,SAAW,CAA/B,IAAsC9E,GAAkB,SAAS3E,GACjG,OAAO4E,GAAa5E,IAAUc,EAAeQ,KAAKtB,EAAO,YACtD4B,GAAqBN,KAAKtB,EAAO,SACtC,EAyBIqF,GAAUxF,MAAMwF,QAgDhBlD,GAAWD,IA4Of,WACE,OAAO,CACT,EA3LA,SAASwG,GAAW1I,GAClB,IAAKwI,GAASxI,GACZ,OAAO,EAIT,IAAIuE,EAAMF,GAAWrE,GACrB,OAAOuE,GAAOxH,GAAWwH,GAAOvH,GAAUuH,GAAO5H,GAAY4H,GAAOjH,CACtE,CA4BA,SAASoM,GAAS1J,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASxD,CAC7C,CA2BA,SAASgM,GAASxI,GAChB,IAAIsI,SAActI,EAClB,OAAgB,MAATA,IAA0B,UAARsI,GAA4B,YAARA,EAC/C,CA0BA,SAAS1D,GAAa5E,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAmBA,IAAIZ,GAAeD,EAhiDnB,SAAmBkB,GACjB,OAAO,SAASL,GACd,OAAOK,EAAKL,EACd,CACF,CA4hDsC2J,CAAUxK,GAnvBhD,SAA0Ba,GACxB,OAAO4E,GAAa5E,IAClB0J,GAAS1J,EAAMP,WAAazB,EAAeqG,GAAWrE,GAC1D,EA8wBA,SAASiB,GAAKiE,GACZ,OA1NgB,OADGlF,EA2NAkF,IA1NKwE,GAAS1J,EAAMP,UAAYiJ,GAAW1I,GA1vBhE,SAAuBA,EAAO4J,GAC5B,IAAIC,EAAQxE,GAAQrF,GAChB8J,GAASD,GAASL,GAAYxJ,GAC9B+J,GAAUF,IAAUC,GAAS3H,GAASnC,GACtCgK,GAAUH,IAAUC,IAAUC,GAAU3K,GAAaY,GACrDiK,EAAcJ,GAASC,GAASC,GAAUC,EAC1CpK,EAASqK,EAloBf,SAAmBC,EAAGC,GAIpB,IAHA,IAAI3K,GAAS,EACTI,EAASC,MAAMqK,KAEV1K,EAAQ0K,GACftK,EAAOJ,GAAS2K,EAAS3K,GAE3B,OAAOI,CACT,CA0nB6BwK,CAAUpK,EAAMP,OAAQ4K,QAAU,GACzD5K,EAASG,EAAOH,OAEpB,IAAK,IAAIQ,KAAOD,GACT4J,IAAa9I,EAAeQ,KAAKtB,EAAOC,IACvCgK,IAEQ,UAAPhK,GAEC8J,IAAkB,UAAP9J,GAA0B,UAAPA,IAE9B+J,IAAkB,UAAP/J,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDkJ,GAAQlJ,EAAKR,KAElBG,EAAOkI,KAAK7H,GAGhB,OAAOL,CACT,CA27B+B0K,CAAcpF,GAtwB7C,SAAkBA,GAChB,GAyZIoE,GADetJ,EAxZFkF,IAyZGlF,EAAMoH,YAGnBpH,KAFqB,mBAARsJ,GAAsBA,EAAK9I,WAAcE,GAzZ3D,OAAO0B,GAAW8C,GAuZtB,IAAqBlF,EACfsJ,EAtZA1J,EAAS,GACb,IAAK,IAAIK,KAAO9B,OAAO+G,GACjBpE,EAAeQ,KAAK4D,EAAQjF,IAAe,eAAPA,GACtCL,EAAOkI,KAAK7H,GAGhB,OAAOL,CACT,CA2vBuD2K,CAASrF,GA3NhE,IAAqBlF,CA4NrB,CAyCApB,EAAOH,QAlNP,SAAiBuB,EAAO8E,GACtB,OAAOD,GAAY7E,EAAO8E,EAC5B,C,eCvmDA,QAiBI0F,EAAS,WAWX,IAAIA,EAAS,SAASC,EAAYC,GAEhC,IAGIC,EAAcF,EACdG,EAAwBC,EAAuBH,GAC/CI,EAAW,KACXC,EAAe,EACfC,EAAa,KACbC,EAAY,GAEZC,EAAQ,CAAC,EAETC,EAAW,SAASxC,EAAMyC,GAG5BN,EAAW,SAASO,GAElB,IADA,IAAIC,EAAU,IAAIzL,MAAMwL,GACfE,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EAAG,CAC7CD,EAAQC,GAAO,IAAI1L,MAAMwL,GACzB,IAAK,IAAIG,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAC1CF,EAAQC,GAAKC,GAAO,IAExB,CACA,OAAOF,CACT,CATW,CADXP,EAA6B,EAAdJ,EAAkB,IAYjCc,EAA0B,EAAG,GAC7BA,EAA0BV,EAAe,EAAG,GAC5CU,EAA0B,EAAGV,EAAe,GAC5CW,IACAC,IACAC,EAAcjD,EAAMyC,GAEhBT,GAAe,GACjBkB,EAAgBlD,GAGA,MAAdqC,IACFA,EAAac,EAAWnB,EAAaC,EAAuBK,IAG9Dc,EAAQf,EAAYI,EACtB,EAEIK,EAA4B,SAASF,EAAKC,GAE5C,IAAK,IAAIQ,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAE5B,KAAIT,EAAMS,IAAM,GAAKjB,GAAgBQ,EAAMS,GAE3C,IAAK,IAAIC,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAExBT,EAAMS,IAAM,GAAKlB,GAAgBS,EAAMS,IAKzCnB,EAASS,EAAMS,GAAGR,EAAMS,GAHpB,GAAKD,GAAKA,GAAK,IAAW,GAALC,GAAe,GAALA,IAC7B,GAAKA,GAAKA,GAAK,IAAW,GAALD,GAAe,GAALA,IAC/B,GAAKA,GAAKA,GAAK,GAAK,GAAKC,GAAKA,GAAK,EAOjD,EAsBIN,EAAqB,WAEvB,IAAK,IAAIK,EAAI,EAAGA,EAAIjB,EAAe,EAAGiB,GAAK,EACnB,MAAlBlB,EAASkB,GAAG,KAGhBlB,EAASkB,GAAG,GAAMA,EAAI,GAAK,GAG7B,IAAK,IAAIC,EAAI,EAAGA,EAAIlB,EAAe,EAAGkB,GAAK,EACnB,MAAlBnB,EAAS,GAAGmB,KAGhBnB,EAAS,GAAGmB,GAAMA,EAAI,GAAK,EAE/B,EAEIP,EAA6B,WAI/B,IAFA,IAAIQ,EAAMC,EAAOC,mBAAmBzB,GAE3B0B,EAAI,EAAGA,EAAIH,EAAIzM,OAAQ4M,GAAK,EAEnC,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAIzM,OAAQ6M,GAAK,EAAG,CAEtC,IAAIf,EAAMW,EAAIG,GACVb,EAAMU,EAAII,GAEd,GAA0B,MAAtBxB,EAASS,GAAKC,GAIlB,IAAK,IAAIQ,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAE5B,IAAK,IAAIC,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAI1BnB,EAASS,EAAMS,GAAGR,EAAMS,IAFhB,GAAND,GAAgB,GAALA,IAAgB,GAANC,GAAgB,GAALA,GACvB,GAALD,GAAe,GAALC,CAOxB,CAEJ,EAEIJ,EAAkB,SAASlD,GAI7B,IAFA,IAAI4D,EAAOJ,EAAOK,iBAAiB7B,GAE1B0B,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,IAAII,GAAQ9D,GAA8B,IAAnB4D,GAAQF,EAAK,GACpCvB,EAAS4B,KAAKC,MAAMN,EAAI,IAAIA,EAAI,EAAItB,EAAe,EAAI,GAAK0B,CAC9D,CAEA,IAASJ,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBI,GAAQ9D,GAA8B,IAAnB4D,GAAQF,EAAK,GACpCvB,EAASuB,EAAI,EAAItB,EAAe,EAAI,GAAG2B,KAAKC,MAAMN,EAAI,IAAMI,CAEhE,EAEIb,EAAgB,SAASjD,EAAMyC,GAMjC,IAJA,IAAIlH,EAAQ0G,GAAyB,EAAKQ,EACtCmB,EAAOJ,EAAOS,eAAe1I,GAGxBmI,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAE9B,IAAII,GAAQ9D,GAA8B,IAAnB4D,GAAQF,EAAK,GAEhCA,EAAI,EACNvB,EAASuB,GAAG,GAAKI,EACRJ,EAAI,EACbvB,EAASuB,EAAI,GAAG,GAAKI,EAErB3B,EAASC,EAAe,GAAKsB,GAAG,GAAKI,CAEzC,CAGA,IAASJ,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAEvBI,GAAQ9D,GAA8B,IAAnB4D,GAAQF,EAAK,GAEhCA,EAAI,EACNvB,EAAS,GAAGC,EAAesB,EAAI,GAAKI,EAC3BJ,EAAI,EACbvB,EAAS,GAAG,GAAKuB,EAAI,EAAI,GAAKI,EAE9B3B,EAAS,GAAG,GAAKuB,EAAI,GAAKI,EAK9B3B,EAASC,EAAe,GAAG,IAAOpC,CACpC,EAEIoD,EAAU,SAAS7H,EAAMkH,GAQ3B,IANA,IAAIyB,GAAO,EACPtB,EAAMR,EAAe,EACrB+B,EAAW,EACXC,EAAY,EACZC,EAAWb,EAAOc,gBAAgB7B,GAE7BI,EAAMT,EAAe,EAAGS,EAAM,EAAGA,GAAO,EAI/C,IAFW,GAAPA,IAAUA,GAAO,KAER,CAEX,IAAK,IAAIS,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAE1B,GAA8B,MAA1BnB,EAASS,GAAKC,EAAMS,GAAY,CAElC,IAAIiB,GAAO,EAEPH,EAAY7I,EAAKzE,SACnByN,EAAkD,IAAtChJ,EAAK6I,KAAeD,EAAY,IAGnCE,EAASzB,EAAKC,EAAMS,KAG7BiB,GAAQA,GAGVpC,EAASS,GAAKC,EAAMS,GAAKiB,GAGR,IAFjBJ,GAAY,KAGVC,GAAa,EACbD,EAAW,EAEf,CAKF,IAFAvB,GAAOsB,GAEG,GAAK9B,GAAgBQ,EAAK,CAClCA,GAAOsB,EACPA,GAAOA,EACP,KACF,CACF,CAEJ,EAmEIf,EAAa,SAASrB,EAAYC,EAAsByC,GAM1D,IAJA,IAAIC,EAAWC,EAAUC,YAAY7C,EAAYC,GAE7C1E,EAASuH,IAEJlB,EAAI,EAAGA,EAAIc,EAAS1N,OAAQ4M,GAAK,EAAG,CAC3C,IAAInI,EAAOiJ,EAASd,GACpBrG,EAAOwH,IAAItJ,EAAKuJ,UAAW,GAC3BzH,EAAOwH,IAAItJ,EAAKwJ,YAAavB,EAAOwB,gBAAgBzJ,EAAKuJ,UAAWhD,IACpEvG,EAAK0J,MAAM5H,EACb,CAGA,IAAI6H,EAAiB,EACrB,IAASxB,EAAI,EAAGA,EAAIe,EAAS3N,OAAQ4M,GAAK,EACxCwB,GAAkBT,EAASf,GAAGyB,UAGhC,GAAI9H,EAAO2H,kBAAqC,EAAjBE,EAC7B,KAAM,0BACF7H,EAAO2H,kBACP,IACiB,EAAjBE,EACA,IASN,IALI7H,EAAO2H,kBAAoB,GAAsB,EAAjBE,GAClC7H,EAAOwH,IAAI,EAAG,GAITxH,EAAO2H,kBAAoB,GAAK,GACrC3H,EAAO+H,QAAO,GAIhB,OAEM/H,EAAO2H,mBAAsC,EAAjBE,IAGhC7H,EAAOwH,IAxVA,IAwVU,GAEbxH,EAAO2H,mBAAsC,EAAjBE,KAGhC7H,EAAOwH,IA5VA,GA4VU,GAGnB,OApHgB,SAASxH,EAAQoH,GAUjC,IARA,IAAInF,EAAS,EAET+F,EAAa,EACbC,EAAa,EAEbC,EAAS,IAAIrO,MAAMuN,EAAS3N,QAC5B0O,EAAS,IAAItO,MAAMuN,EAAS3N,QAEvBuM,EAAI,EAAGA,EAAIoB,EAAS3N,OAAQuM,GAAK,EAAG,CAE3C,IAAIoC,EAAUhB,EAASpB,GAAG8B,UACtBO,EAAUjB,EAASpB,GAAGsC,WAAaF,EAEvCJ,EAAatB,KAAK6B,IAAIP,EAAYI,GAClCH,EAAavB,KAAK6B,IAAIN,EAAYI,GAElCH,EAAOlC,GAAK,IAAInM,MAAMuO,GAEtB,IAAK,IAAI/B,EAAI,EAAGA,EAAI6B,EAAOlC,GAAGvM,OAAQ4M,GAAK,EACzC6B,EAAOlC,GAAGK,GAAK,IAAOrG,EAAOwI,YAAYnC,EAAIpE,GAE/CA,GAAUmG,EAEV,IAAIK,EAAStC,EAAOuC,0BAA0BL,GAG1CM,EAFUC,EAAaV,EAAOlC,GAAIyC,EAAOf,YAAc,GAErCjB,IAAIgC,GAE1B,IADAN,EAAOnC,GAAK,IAAInM,MAAM4O,EAAOf,YAAc,GAClCrB,EAAI,EAAGA,EAAI8B,EAAOnC,GAAGvM,OAAQ4M,GAAK,EAAG,CAC5C,IAAIwC,EAAWxC,EAAIsC,EAAQjB,YAAcS,EAAOnC,GAAGvM,OACnD0O,EAAOnC,GAAGK,GAAMwC,GAAY,EAAIF,EAAQG,MAAMD,GAAY,CAC5D,CACF,CAEA,IAAIE,EAAiB,EACrB,IAAS1C,EAAI,EAAGA,EAAIe,EAAS3N,OAAQ4M,GAAK,EACxC0C,GAAkB3B,EAASf,GAAGiC,WAGhC,IAAIpK,EAAO,IAAIrE,MAAMkP,GACjBvP,EAAQ,EAEZ,IAAS6M,EAAI,EAAGA,EAAI2B,EAAY3B,GAAK,EACnC,IAASL,EAAI,EAAGA,EAAIoB,EAAS3N,OAAQuM,GAAK,EACpCK,EAAI6B,EAAOlC,GAAGvM,SAChByE,EAAK1E,GAAS0O,EAAOlC,GAAGK,GACxB7M,GAAS,GAKf,IAAS6M,EAAI,EAAGA,EAAI4B,EAAY5B,GAAK,EACnC,IAASL,EAAI,EAAGA,EAAIoB,EAAS3N,OAAQuM,GAAK,EACpCK,EAAI8B,EAAOnC,GAAGvM,SAChByE,EAAK1E,GAAS2O,EAAOnC,GAAGK,GACxB7M,GAAS,GAKf,OAAO0E,CACT,CAqDS8K,CAAYhJ,EAAQoH,EAC7B,EAEAlC,EAAM+D,QAAU,SAAS/K,EAAMgL,GAI7B,IAAIC,EAAU,KAEd,OAJAD,EAAOA,GAAQ,QAKf,IAAK,UACHC,EAAUC,EAASlL,GACnB,MACF,IAAK,eACHiL,EAAUE,EAAWnL,GACrB,MACF,IAAK,OACHiL,EAAUG,EAAWpL,GACrB,MACF,IAAK,QACHiL,EAAUI,EAAQrL,GAClB,MACF,QACE,KAAM,QAAUgL,EAGlBjE,EAAUnD,KAAKqH,GACfnE,EAAa,IACf,EAEAE,EAAMsE,OAAS,SAASjE,EAAKC,GAC3B,GAAID,EAAM,GAAKR,GAAgBQ,GAAOC,EAAM,GAAKT,GAAgBS,EAC/D,MAAMD,EAAM,IAAMC,EAEpB,OAAOV,EAASS,GAAKC,EACvB,EAEAN,EAAMuE,eAAiB,WACrB,OAAO1E,CACT,EAEAG,EAAMwE,KAAO,WACX,GAAI/E,EAAc,EAAG,CAGnB,IAFA,IAAIF,EAAa,EAEVA,EAAa,GAAIA,IAAc,CAIpC,IAHA,IAAI2C,EAAWC,EAAUC,YAAY7C,EAAYG,GAC7C5E,EAASuH,IAEJlB,EAAI,EAAGA,EAAIpB,EAAUxL,OAAQ4M,IAAK,CACzC,IAAInI,EAAO+G,EAAUoB,GACrBrG,EAAOwH,IAAItJ,EAAKuJ,UAAW,GAC3BzH,EAAOwH,IAAItJ,EAAKwJ,YAAavB,EAAOwB,gBAAgBzJ,EAAKuJ,UAAWhD,IACpEvG,EAAK0J,MAAM5H,EACb,CAEA,IAAI6H,EAAiB,EACrB,IAASxB,EAAI,EAAGA,EAAIe,EAAS3N,OAAQ4M,IACnCwB,GAAkBT,EAASf,GAAGyB,UAGhC,GAAI9H,EAAO2H,mBAAsC,EAAjBE,EAC9B,KAEJ,CAEAlD,EAAcF,CAChB,CAEAU,GAAS,EApWc,WAKvB,IAHA,IAAIwE,EAAe,EACfC,EAAU,EAELvD,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAE7BlB,GAAS,EAAMkB,GAEf,IAAIwD,EAAY1D,EAAO2D,aAAa5E,IAE3B,GAALmB,GAAUsD,EAAeE,KAC3BF,EAAeE,EACfD,EAAUvD,EAEd,CAEA,OAAOuD,CACT,CAkVkBG,GAClB,EAEA7E,EAAM8E,eAAiB,SAASC,EAAUC,GAExCD,EAAWA,GAAY,EAGvB,IAAIE,EAAS,GAEbA,GAAU,iBACVA,GAAU,0CACVA,GAAU,8BACVA,GAAU,2BAPVD,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,GAOT,MAC/CC,GAAU,KACVA,GAAU,UAEV,IAAK,IAAInE,EAAI,EAAGA,EAAId,EAAMuE,iBAAkBzD,GAAK,EAAG,CAElDmE,GAAU,OAEV,IAAK,IAAIlE,EAAI,EAAGA,EAAIf,EAAMuE,iBAAkBxD,GAAK,EAC/CkE,GAAU,cACVA,GAAU,0CACVA,GAAU,8BACVA,GAAU,8BACVA,GAAU,WAAaF,EAAW,MAClCE,GAAU,YAAcF,EAAW,MACnCE,GAAU,sBACVA,GAAUjF,EAAMsE,OAAOxD,EAAGC,GAAI,UAAY,UAC1CkE,GAAU,IACVA,GAAU,MAGZA,GAAU,OACZ,CAKA,OAHAA,GAAU,YACA,UAGZ,EAEAjF,EAAMkF,aAAe,SAASH,EAAUC,EAAQG,EAAKC,GAEnD,IAAIC,EAAO,CAAC,EACe,iBAAhB9G,UAAU,KAInBwG,GAFAM,EAAO9G,UAAU,IAEDwG,SAChBC,EAASK,EAAKL,OACdG,EAAME,EAAKF,IACXC,EAAQC,EAAKD,OAGfL,EAAWA,GAAY,EACvBC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,GAGxDG,EAAsB,iBAARA,EAAoB,CAACG,KAAMH,GAAOA,GAAO,CAAC,GACpDG,KAAOH,EAAIG,MAAQ,KACvBH,EAAII,GAAMJ,EAAQ,KAAIA,EAAII,IAAM,qBAAuB,MAGvDH,EAA0B,iBAAVA,EAAsB,CAACE,KAAMF,GAASA,GAAS,CAAC,GAC1DE,KAAOF,EAAME,MAAQ,KAC3BF,EAAMG,GAAMH,EAAU,KAAIA,EAAMG,IAAM,eAAiB,KAEvD,IACIxE,EAAOD,EAAG0E,EAAcC,EADxB7Q,EAAOoL,EAAMuE,iBAAmBQ,EAAoB,EAATC,EAC7BU,EAAM,GAmBxB,IAjBAD,EAAO,IAAMV,EAAW,QAAUA,EAChC,KAAOA,EAAW,SAAWA,EAAW,KAE1CW,GAAS,wDACTA,GAAUL,EAAKM,SAA+D,GAApD,WAAa/Q,EAAO,eAAiBA,EAAO,MACtE8Q,GAAS,iBAAmB9Q,EAAO,IAAMA,EAAO,KAChD8Q,GAAS,uCACTA,GAAUN,EAAME,MAAQH,EAAIG,KAAQ,gCAChCM,EAAU,CAACR,EAAMG,GAAIJ,EAAII,IAAIM,KAAK,KAAKC,QAAW,IAAM,GAC5DJ,GAAS,IACTA,GAAUN,EAAU,KAAI,cAAgBQ,EAAUR,EAAMG,IAAM,KAC1DK,EAAUR,EAAME,MAAQ,WAAa,GACzCI,GAAUP,EAAQ,KAAI,oBAAsBS,EAAUT,EAAII,IAAM,KAC5DK,EAAUT,EAAIG,MAAQ,iBAAmB,GAC7CI,GAAS,gEACTA,GAAS,YAEJ5E,EAAI,EAAGA,EAAId,EAAMuE,iBAAkBzD,GAAK,EAE3C,IADA0E,EAAK1E,EAAIiE,EAAWC,EACfjE,EAAI,EAAGA,EAAIf,EAAMuE,iBAAkBxD,GAAK,EACvCf,EAAMsE,OAAOxD,EAAGC,KAElB2E,GAAS,KADJ3E,EAAEgE,EAASC,GACI,IAAMQ,EAAKC,GAQrC,OAHAC,GAAS,yCACA,QAGX,EAEA1F,EAAM+F,cAAgB,SAAShB,EAAUC,GAEvCD,EAAWA,GAAY,EACvBC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,EAExD,IAAIpQ,EAAOoL,EAAMuE,iBAAmBQ,EAAoB,EAATC,EAC3CgB,EAAMhB,EACN3B,EAAMzO,EAAOoQ,EAEjB,OAAOe,EAAcnR,EAAMA,GAAM,SAASqR,EAAGC,GAC3C,GAAIF,GAAOC,GAAKA,EAAI5C,GAAO2C,GAAOE,GAAKA,EAAI7C,EAAK,CAC9C,IAAItC,EAAIS,KAAKC,OAAQwE,EAAID,GAAOjB,GAC5BjE,EAAIU,KAAKC,OAAQyE,EAAIF,GAAOjB,GAChC,OAAO/E,EAAMsE,OAAOxD,EAAGC,GAAI,EAAI,CACjC,CACE,OAAO,CAEX,GACF,EAEAf,EAAMmG,aAAe,SAASpB,EAAUC,EAAQG,GAE9CJ,EAAWA,GAAY,EACvBC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,EAExD,IAAIpQ,EAAOoL,EAAMuE,iBAAmBQ,EAAoB,EAATC,EAE3CoB,EAAM,GAkBV,OAjBAA,GAAO,OACPA,GAAO,SACPA,GAAOpG,EAAM+F,cAAchB,EAAUC,GACrCoB,GAAO,IACPA,GAAO,WACPA,GAAOxR,EACPwR,GAAO,IACPA,GAAO,YACPA,GAAOxR,EACPwR,GAAO,IACHjB,IACFiB,GAAO,SACPA,GAAOR,EAAUT,GACjBiB,GAAO,KAETA,EAAO,IAGT,EAEA,IAAIR,EAAY,SAASS,GAEvB,IADA,IAAIC,EAAU,GACLnF,EAAI,EAAGA,EAAIkF,EAAE9R,OAAQ4M,GAAK,EAAG,CACpC,IAAIJ,EAAIsF,EAAEE,OAAOpF,GACjB,OAAOJ,GACP,IAAK,IAAKuF,GAAW,OAAQ,MAC7B,IAAK,IAAKA,GAAW,OAAQ,MAC7B,IAAK,IAAKA,GAAW,QAAS,MAC9B,IAAK,IAAKA,GAAW,SAAU,MAC/B,QAAUA,GAAWvF,EAEvB,CACA,OAAOuF,CACT,EAgHA,OAtDAtG,EAAMwG,YAAc,SAASzB,EAAUC,GAGrC,IAFAD,EAAWA,GAAY,GAER,EACb,OA5DmB,SAASC,GAE9BA,OAA2B,IAAVA,EAAwBD,EAAeC,EAExD,IAIIkB,EAAGD,EAAGQ,EAAIC,EAAIC,EAJd/R,EAHW,EAGJoL,EAAMuE,iBAAuC,EAATS,EAC3CgB,EAAMhB,EACN3B,EAAMzO,EAAOoQ,EAIb4B,EAAS,CACX,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAGJC,EAAyB,CAC3B,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAGJC,EAAQ,GACZ,IAAKZ,EAAI,EAAGA,EAAItR,EAAMsR,GAAK,EAAG,CAG5B,IAFAO,EAAKjF,KAAKC,OAAOyE,EAAIF,GAzBR,GA0BbU,EAAKlF,KAAKC,OAAOyE,EAAI,EAAIF,GA1BZ,GA2BRC,EAAI,EAAGA,EAAIrR,EAAMqR,GAAK,EACzBU,EAAI,IAEAX,GAAOC,GAAKA,EAAI5C,GAAO2C,GAAOE,GAAKA,EAAI7C,GAAOrD,EAAMsE,OAAOmC,EAAIjF,KAAKC,OAAOwE,EAAID,GA9BxE,MA+BTW,EAAI,KAGFX,GAAOC,GAAKA,EAAI5C,GAAO2C,GAAOE,EAAE,GAAKA,EAAE,EAAI7C,GAAOrD,EAAMsE,OAAOoC,EAAIlF,KAAKC,OAAOwE,EAAID,GAlC5E,IAmCTW,GAAK,IAGLA,GAAK,IAIPG,GAAU9B,EAAS,GAAKkB,EAAE,GAAK7C,EAAOwD,EAAuBF,GAAKC,EAAOD,GAG3EG,GAAS,IACX,CAEA,OAAIlS,EAAO,GAAKoQ,EAAS,EAChB8B,EAAMC,UAAU,EAAGD,EAAMvS,OAASK,EAAO,GAAKD,MAAMC,EAAK,GAAGiR,KAAK,KAGnEiB,EAAMC,UAAU,EAAGD,EAAMvS,OAAO,EACzC,CAMWyS,CAAiBhC,GAG1BD,GAAY,EACZC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,EAExD,IAIIkB,EAAGD,EAAGnF,EAAG6F,EAJT/R,EAAOoL,EAAMuE,iBAAmBQ,EAAoB,EAATC,EAC3CgB,EAAMhB,EACN3B,EAAMzO,EAAOoQ,EAIbiC,EAAQtS,MAAMoQ,EAAS,GAAGc,KAAK,MAC/BqB,EAAQvS,MAAMoQ,EAAS,GAAGc,KAAK,MAE/BiB,EAAQ,GACRK,EAAO,GACX,IAAKjB,EAAI,EAAGA,EAAItR,EAAMsR,GAAK,EAAG,CAG5B,IAFApF,EAAIU,KAAKC,OAAQyE,EAAIF,GAAOjB,GAC5BoC,EAAO,GACFlB,EAAI,EAAGA,EAAIrR,EAAMqR,GAAK,EACzBU,EAAI,EAEAX,GAAOC,GAAKA,EAAI5C,GAAO2C,GAAOE,GAAKA,EAAI7C,GAAOrD,EAAMsE,OAAOxD,EAAGU,KAAKC,OAAOwE,EAAID,GAAOjB,MACvF4B,EAAI,GAINQ,GAAQR,EAAIM,EAAQC,EAGtB,IAAKpG,EAAI,EAAGA,EAAIiE,EAAUjE,GAAK,EAC7BgG,GAASK,EAAO,IAEpB,CAEA,OAAOL,EAAMC,UAAU,EAAGD,EAAMvS,OAAO,EACzC,EAEAyL,EAAMoH,kBAAoB,SAASC,EAAStC,GAC1CA,EAAWA,GAAY,EAEvB,IADA,IAAIxQ,EAASyL,EAAMuE,iBACVlE,EAAM,EAAGA,EAAM9L,EAAQ8L,IAC9B,IAAK,IAAIC,EAAM,EAAGA,EAAM/L,EAAQ+L,IAC9B+G,EAAQC,UAAYtH,EAAMsE,OAAOjE,EAAKC,GAAO,QAAU,QACvD+G,EAAQE,SAASlH,EAAM0E,EAAUzE,EAAMyE,EAAUA,EAAUA,EAGjE,EAEO/E,CACT,EAiBAV,EAAOkI,eAXPlI,EAAOmI,mBAAqB,CAC1B,QAAY,SAASpB,GAEnB,IADA,IAAIqB,EAAQ,GACHvG,EAAI,EAAGA,EAAIkF,EAAE9R,OAAQ4M,GAAK,EAAG,CACpC,IAAIJ,EAAIsF,EAAEsB,WAAWxG,GACrBuG,EAAM9K,KAAS,IAAJmE,EACb,CACA,OAAO2G,CACT,IAGwD,QAW1DpI,EAAOsI,oBAAsB,SAASC,EAAaC,GAIjD,IAAIC,EAAa,WAWf,IATA,IAAIC,EAAMC,EAAwBJ,GAC9BK,EAAO,WACT,IAAIC,EAAIH,EAAIE,OACZ,IAAU,GAANC,EAAS,KAAM,MACnB,OAAOA,CACT,EAEIC,EAAQ,EACRL,EAAa,CAAC,IACL,CACX,IAAIM,EAAKL,EAAIE,OACb,IAAW,GAAPG,EAAU,MACd,IAAIC,EAAKJ,IAILK,EAHKL,KAGM,EAFNA,IAGTH,EAFQ5I,OAAOqJ,aAAeH,GAAM,EAAKC,IAEzBC,EAChBH,GAAS,CACX,CACA,GAAIA,GAASN,EACX,MAAMM,EAAQ,OAASN,EAGzB,OAAOC,CACT,CA3BiB,GA6BbU,EAAc,IAAId,WAAW,GAEjC,OAAO,SAAStB,GAEd,IADA,IAAIqB,EAAQ,GACHvG,EAAI,EAAGA,EAAIkF,EAAE9R,OAAQ4M,GAAK,EAAG,CACpC,IAAIJ,EAAIsF,EAAEsB,WAAWxG,GACrB,GAAIJ,EAAI,IACN2G,EAAM9K,KAAKmE,OACN,CACL,IAAIoH,EAAIJ,EAAW1B,EAAEE,OAAOpF,IACZ,iBAALgH,GACC,IAAJA,IAAaA,EAEjBT,EAAM9K,KAAKuL,IAGXT,EAAM9K,KAAKuL,IAAM,GACjBT,EAAM9K,KAAS,IAAJuL,IAGbT,EAAM9K,KAAK6L,EAEf,CACF,CACA,OAAOf,CACT,CACF,EAMA,IAuCMgB,EA0CAC,EACAC,EAGA5I,EAEA6I,EA5EFlJ,EAAyB,CAC3BmJ,EAAI,EACJC,EAAI,EACJC,EAAI,EACJC,EAAI,GAsBFhI,GAEEyH,EAAyB,CAC3B,GACA,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,KACpB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAExBC,EAAM,KACNC,EAAM,KAKNC,EAAc,SAAS7P,GAEzB,IADA,IAAIkQ,EAAQ,EACG,GAARlQ,GACLkQ,GAAS,EACTlQ,KAAU,EAEZ,OAAOkQ,CACT,GATIlJ,EAAQ,CAAC,GAWP0B,eAAiB,SAAS1I,GAE9B,IADA,IAAImQ,EAAInQ,GAAQ,GACT6P,EAAYM,GAAKN,EAAYF,IAAQ,GAC1CQ,GAAMR,GAAQE,EAAYM,GAAKN,EAAYF,GAE7C,OAlBa,OAkBH3P,GAAQ,GAAMmQ,EAC1B,EAEAnJ,EAAMsB,iBAAmB,SAAStI,GAEhC,IADA,IAAImQ,EAAInQ,GAAQ,GACT6P,EAAYM,GAAKN,EAAYD,IAAQ,GAC1CO,GAAMP,GAAQC,EAAYM,GAAKN,EAAYD,GAE7C,OAAQ5P,GAAQ,GAAMmQ,CACxB,EAEAnJ,EAAMkB,mBAAqB,SAAS3B,GAClC,OAAOmJ,EAAuBnJ,EAAa,EAC7C,EAEAS,EAAM+B,gBAAkB,SAAS7B,GAE/B,OAAQA,GAER,KAjGW,EAkGT,OAAO,SAASiB,EAAGC,GAAK,OAAQD,EAAIC,GAAK,GAAK,CAAG,EACnD,KAlGW,EAmGT,OAAO,SAASD,EAAGC,GAAK,OAAOD,EAAI,GAAK,CAAG,EAC7C,KAnGW,EAoGT,OAAO,SAASA,EAAGC,GAAK,OAAOA,EAAI,GAAK,CAAG,EAC7C,KApGW,EAqGT,OAAO,SAASD,EAAGC,GAAK,OAAQD,EAAIC,GAAK,GAAK,CAAG,EACnD,KArGW,EAsGT,OAAO,SAASD,EAAGC,GAAK,OAAQI,KAAKC,MAAMN,EAAI,GAAKK,KAAKC,MAAML,EAAI,IAAO,GAAK,CAAG,EACpF,KAtGW,EAuGT,OAAO,SAASD,EAAGC,GAAK,OAAQD,EAAIC,EAAK,EAAKD,EAAIC,EAAK,GAAK,CAAG,EACjE,KAvGW,EAwGT,OAAO,SAASD,EAAGC,GAAK,OAAUD,EAAIC,EAAK,EAAKD,EAAIC,EAAK,GAAK,GAAK,CAAG,EACxE,KAxGW,EAyGT,OAAO,SAASD,EAAGC,GAAK,OAAUD,EAAIC,EAAK,GAAKD,EAAIC,GAAK,GAAK,GAAK,CAAG,EAExE,QACE,KAAM,mBAAqBlB,EAE/B,EAEAF,EAAMwD,0BAA4B,SAAS4F,GAEzC,IADA,IAAIC,EAAI3F,EAAa,CAAC,GAAI,GACjBvC,EAAI,EAAGA,EAAIiI,EAAoBjI,GAAK,EAC3CkI,EAAIA,EAAEC,SAAS5F,EAAa,CAAC,EAAG6F,EAAOC,KAAKrI,IAAK,IAEnD,OAAOkI,CACT,EAEArJ,EAAMyC,gBAAkB,SAASuB,EAAM5G,GAErC,GAAI,GAAKA,GAAQA,EAAO,GAItB,OAAO4G,GACP,KA5Ja,EA4JgB,OAAO,GACpC,KA5Ja,EA4JgB,OAAO,EACpC,KA5Ja,EA6Jb,KA5Ja,EA4JgB,OAAO,EACpC,QACE,KAAM,QAAUA,OAGb,GAAI5G,EAAO,GAIhB,OAAO4G,GACP,KAzKa,EAyKgB,OAAO,GACpC,KAzKa,EAyKgB,OAAO,GACpC,KAzKa,EAyKgB,OAAO,GACpC,KAzKa,EAyKgB,OAAO,GACpC,QACE,KAAM,QAAUA,MAGb,MAAI5G,EAAO,IAchB,KAAM,QAAUA,EAVhB,OAAO4G,GACP,KAtLa,EAsLgB,OAAO,GACpC,KAtLa,EAsLgB,OAAO,GACpC,KAtLa,EAsLgB,OAAO,GACpC,KAtLa,EAsLgB,OAAO,GACpC,QACE,KAAM,QAAUA,EAKpB,CACF,EAEAhE,EAAM4E,aAAe,SAAStF,GAQ5B,IANA,IAAIa,EAAcb,EAAOiF,iBAErBI,EAAY,EAIPtE,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EAC1C,IAAK,IAAIC,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAAG,CAK7C,IAHA,IAAImJ,EAAY,EACZzH,EAAO1C,EAAOgF,OAAOjE,EAAKC,GAErBQ,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAE5B,KAAIT,EAAMS,EAAI,GAAKX,GAAeE,EAAMS,GAIxC,IAAK,IAAIC,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAExBT,EAAMS,EAAI,GAAKZ,GAAeG,EAAMS,GAI/B,GAALD,GAAe,GAALC,GAIViB,GAAQ1C,EAAOgF,OAAOjE,EAAMS,EAAGR,EAAMS,KACvC0I,GAAa,GAKfA,EAAY,IACd9E,GAAc,EAAI8E,EAAY,EAElC,CAKF,IAASpJ,EAAM,EAAGA,EAAMF,EAAc,EAAGE,GAAO,EAC9C,IAASC,EAAM,EAAGA,EAAMH,EAAc,EAAGG,GAAO,EAAG,CACjD,IAAI8H,EAAQ,EACR9I,EAAOgF,OAAOjE,EAAKC,KAAO8H,GAAS,GACnC9I,EAAOgF,OAAOjE,EAAM,EAAGC,KAAO8H,GAAS,GACvC9I,EAAOgF,OAAOjE,EAAKC,EAAM,KAAK8H,GAAS,GACvC9I,EAAOgF,OAAOjE,EAAM,EAAGC,EAAM,KAAK8H,GAAS,GAClC,GAATA,GAAuB,GAATA,IAChBzD,GAAa,EAEjB,CAKF,IAAStE,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EAC1C,IAASC,EAAM,EAAGA,EAAMH,EAAc,EAAGG,GAAO,EAC1ChB,EAAOgF,OAAOjE,EAAKC,KACfhB,EAAOgF,OAAOjE,EAAKC,EAAM,IACzBhB,EAAOgF,OAAOjE,EAAKC,EAAM,IACzBhB,EAAOgF,OAAOjE,EAAKC,EAAM,IACzBhB,EAAOgF,OAAOjE,EAAKC,EAAM,KACzBhB,EAAOgF,OAAOjE,EAAKC,EAAM,IACzBhB,EAAOgF,OAAOjE,EAAKC,EAAM,KAC/BqE,GAAa,IAKnB,IAASrE,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAC1C,IAASD,EAAM,EAAGA,EAAMF,EAAc,EAAGE,GAAO,EAC1Cf,EAAOgF,OAAOjE,EAAKC,KACfhB,EAAOgF,OAAOjE,EAAM,EAAGC,IACvBhB,EAAOgF,OAAOjE,EAAM,EAAGC,IACvBhB,EAAOgF,OAAOjE,EAAM,EAAGC,IACvBhB,EAAOgF,OAAOjE,EAAM,EAAGC,KACvBhB,EAAOgF,OAAOjE,EAAM,EAAGC,IACvBhB,EAAOgF,OAAOjE,EAAM,EAAGC,KAC7BqE,GAAa,IAOnB,IAAI+E,EAAY,EAEhB,IAASpJ,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAC1C,IAASD,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EACtCf,EAAOgF,OAAOjE,EAAKC,KACrBoJ,GAAa,GAQnB,OAFA/E,EADYnD,KAAKmI,IAAI,IAAMD,EAAYvJ,EAAcA,EAAc,IAAM,EACpD,EAGvB,EAEOH,GAOLuJ,EAAS,WAMX,IAJA,IAAIK,EAAY,IAAIjV,MAAM,KACtBkV,EAAY,IAAIlV,MAAM,KAGjBwM,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1ByI,EAAUzI,GAAK,GAAKA,EAEtB,IAASA,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAC5ByI,EAAUzI,GAAKyI,EAAUzI,EAAI,GACzByI,EAAUzI,EAAI,GACdyI,EAAUzI,EAAI,GACdyI,EAAUzI,EAAI,GAEpB,IAASA,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAC5B0I,EAAUD,EAAUzI,IAAOA,EA2B7B,MAxBY,CAEZnB,KAAa,SAAShB,GAEpB,GAAIA,EAAI,EACN,KAAM,QAAUA,EAAI,IAGtB,OAAO6K,EAAU7K,EACnB,EAEAgB,KAAa,SAAShB,GAEpB,KAAOA,EAAI,GACTA,GAAK,IAGP,KAAOA,GAAK,KACVA,GAAK,IAGP,OAAO4K,EAAU5K,EACnB,EAGF,CA5Ca,GAkDb,SAAS0E,EAAaoG,EAAKC,GAEzB,QAAyB,IAAdD,EAAIvV,OACb,MAAMuV,EAAIvV,OAAS,IAAMwV,EAG3B,IAAIC,EAAO,WAET,IADA,IAAIjN,EAAS,EACNA,EAAS+M,EAAIvV,QAAyB,GAAfuV,EAAI/M,IAChCA,GAAU,EAGZ,IADA,IAAIiN,EAAO,IAAIrV,MAAMmV,EAAIvV,OAASwI,EAASgN,GAClC5I,EAAI,EAAGA,EAAI2I,EAAIvV,OAASwI,EAAQoE,GAAK,EAC5C6I,EAAK7I,GAAK2I,EAAI3I,EAAIpE,GAEpB,OAAOiN,CACT,CAVW,GAYPhK,EAAQ,CAEZA,MAAc,SAAS1L,GACrB,OAAO0V,EAAK1V,EACd,EAEA0L,UAAkB,WAChB,OAAOgK,EAAKzV,MACd,EAEAyL,SAAiB,SAAShM,GAIxB,IAFA,IAAI8V,EAAM,IAAInV,MAAMqL,EAAMwC,YAAcxO,EAAEwO,YAAc,GAE/CrB,EAAI,EAAGA,EAAInB,EAAMwC,YAAarB,GAAK,EAC1C,IAAK,IAAIC,EAAI,EAAGA,EAAIpN,EAAEwO,YAAapB,GAAK,EACtC0I,EAAI3I,EAAIC,IAAMmI,EAAOC,KAAKD,EAAOU,KAAKjK,EAAM4D,MAAMzC,IAAOoI,EAAOU,KAAKjW,EAAE4P,MAAMxC,KAIjF,OAAOsC,EAAaoG,EAAK,EAC3B,EAEA9J,IAAY,SAAShM,GAEnB,GAAIgM,EAAMwC,YAAcxO,EAAEwO,YAAc,EACtC,OAAOxC,EAMT,IAHA,IAAIkK,EAAQX,EAAOU,KAAKjK,EAAM4D,MAAM,IAAO2F,EAAOU,KAAKjW,EAAE4P,MAAM,IAE3DkG,EAAM,IAAInV,MAAMqL,EAAMwC,aACjBrB,EAAI,EAAGA,EAAInB,EAAMwC,YAAarB,GAAK,EAC1C2I,EAAI3I,GAAKnB,EAAM4D,MAAMzC,GAGvB,IAASA,EAAI,EAAGA,EAAInN,EAAEwO,YAAarB,GAAK,EACtC2I,EAAI3I,IAAMoI,EAAOC,KAAKD,EAAOU,KAAKjW,EAAE4P,MAAMzC,IAAO+I,GAInD,OAAOxG,EAAaoG,EAAK,GAAGvI,IAAIvN,EAClC,GAEA,OAAOgM,CACT,CAMA,IAAImC,EAAY,WAEd,IAAIgI,EAAiB,CAQnB,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAGR,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,IAGT,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,KACV,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,KAGnBC,EAAY,SAAShH,EAAYR,GACnC,IAAI5C,EAAQ,CAAC,EAGb,OAFAA,EAAMoD,WAAaA,EACnBpD,EAAM4C,UAAYA,EACX5C,CACT,EAEIA,EAAQ,CAkBZA,YAAoB,SAAST,EAAYC,GAEvC,IAAI6K,EAlBgB,SAAS9K,EAAYC,GAEzC,OAAOA,GACP,KAAKG,EAAuBmJ,EAC1B,OAAOqB,EAAkC,GAAlB5K,EAAa,GAAS,GAC/C,KAAKI,EAAuBoJ,EAC1B,OAAOoB,EAAkC,GAAlB5K,EAAa,GAAS,GAC/C,KAAKI,EAAuBqJ,EAC1B,OAAOmB,EAAkC,GAAlB5K,EAAa,GAAS,GAC/C,KAAKI,EAAuBsJ,EAC1B,OAAOkB,EAAkC,GAAlB5K,EAAa,GAAS,GAC/C,QACE,OAEJ,CAIgB+K,CAAgB/K,EAAYC,GAE1C,QAAsB,IAAX6K,EACT,KAAM,6BAA+B9K,EACjC,yBAA2BC,EAOjC,IAJA,IAAIjL,EAAS8V,EAAQ9V,OAAS,EAE1BgW,EAAO,GAEFpJ,EAAI,EAAGA,EAAI5M,EAAQ4M,GAAK,EAM/B,IAJA,IAAIiH,EAAQiC,EAAY,EAAJlJ,EAAQ,GACxBiC,EAAaiH,EAAY,EAAJlJ,EAAQ,GAC7ByB,EAAYyH,EAAY,EAAJlJ,EAAQ,GAEvBC,EAAI,EAAGA,EAAIgH,EAAOhH,GAAK,EAC9BmJ,EAAK3N,KAAKwN,EAAUhH,EAAYR,IAIpC,OAAO2H,CACT,GAEA,OAAOvK,CACT,CA/SgB,GAqTZqC,EAAc,WAEhB,IAAImI,EAAU,GACVC,EAAU,EAEVzK,EAAQ,CAEZA,UAAkB,WAChB,OAAOwK,CACT,EAEAxK,MAAc,SAAS1L,GACrB,IAAIoW,EAAWlJ,KAAKC,MAAMnN,EAAQ,GAClC,OAA0D,IAAhDkW,EAAQE,KAAe,EAAIpW,EAAQ,EAAO,EACtD,EAEA0L,IAAY,SAAS8J,EAAKvV,GACxB,IAAK,IAAI4M,EAAI,EAAGA,EAAI5M,EAAQ4M,GAAK,EAC/BnB,EAAM6C,OAA8C,IAAnCiH,IAASvV,EAAS4M,EAAI,EAAO,GAElD,EAEAnB,gBAAwB,WACtB,OAAOyK,CACT,EAEAzK,OAAe,SAAS2K,GAEtB,IAAID,EAAWlJ,KAAKC,MAAMgJ,EAAU,GAChCD,EAAQjW,QAAUmW,GACpBF,EAAQ5N,KAAK,GAGX+N,IACFH,EAAQE,IAAc,MAAUD,EAAU,GAG5CA,GAAW,CACb,GAEA,OAAOzK,CACT,EAMIkE,EAAW,SAASlL,GAEtB,IACI4R,EAAQ5R,EAERgH,EAAQ,CAEZA,QAAgB,WACd,OAtxBe,CAuxBjB,EAEAA,UAAkB,SAASlF,GACzB,OAAO8P,EAAMrW,MACf,EAEAyL,MAAc,SAASlF,GAMrB,IAJA,IAAI9B,EAAO4R,EAEPzJ,EAAI,EAEDA,EAAI,EAAInI,EAAKzE,QAClBuG,EAAOwH,IAAIuI,EAAS7R,EAAK+N,UAAU5F,EAAGA,EAAI,IAAM,IAChDA,GAAK,EAGHA,EAAInI,EAAKzE,SACPyE,EAAKzE,OAAS4M,GAAK,EACrBrG,EAAOwH,IAAIuI,EAAS7R,EAAK+N,UAAU5F,EAAGA,EAAI,IAAM,GACvCnI,EAAKzE,OAAS4M,GAAK,GAC5BrG,EAAOwH,IAAIuI,EAAS7R,EAAK+N,UAAU5F,EAAGA,EAAI,IAAM,GAGtD,GAEI0J,EAAW,SAASxE,GAEtB,IADA,IAAIyD,EAAM,EACD3I,EAAI,EAAGA,EAAIkF,EAAE9R,OAAQ4M,GAAK,EACjC2I,EAAY,GAANA,EAAWgB,EAAUzE,EAAEE,OAAOpF,IAEtC,OAAO2I,CACT,EAEIgB,EAAY,SAAS/J,GACvB,GAAI,KAAOA,GAAKA,GAAK,IACnB,OAAOA,EAAE4G,WAAW,GAAK,IAAIA,WAAW,GAE1C,KAAM,iBAAmB5G,CAC3B,EAEA,OAAOf,CACT,EAMImE,EAAa,SAASnL,GAExB,IACI4R,EAAQ5R,EAERgH,EAAQ,CAEZA,QAAgB,WACd,OA90Be,CA+0BjB,EAEAA,UAAkB,SAASlF,GACzB,OAAO8P,EAAMrW,MACf,EAEAyL,MAAc,SAASlF,GAMrB,IAJA,IAAIuL,EAAIuE,EAEJzJ,EAAI,EAEDA,EAAI,EAAIkF,EAAE9R,QACfuG,EAAOwH,IACmB,GAAxByI,EAAQ1E,EAAEE,OAAOpF,IACjB4J,EAAQ1E,EAAEE,OAAOpF,EAAI,IAAM,IAC7BA,GAAK,EAGHA,EAAIkF,EAAE9R,QACRuG,EAAOwH,IAAIyI,EAAQ1E,EAAEE,OAAOpF,IAAM,EAEtC,GAEI4J,EAAU,SAAShK,GAErB,GAAI,KAAOA,GAAKA,GAAK,IACnB,OAAOA,EAAE4G,WAAW,GAAK,IAAIA,WAAW,GACnC,GAAI,KAAO5G,GAAKA,GAAK,IAC1B,OAAOA,EAAE4G,WAAW,GAAK,IAAIA,WAAW,GAAK,GAE7C,OAAQ5G,GACR,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,IAAK,IAAM,OAAO,GAClB,QACE,KAAM,iBAAmBA,EAG/B,EAEA,OAAOf,CACT,EAMIoE,EAAa,SAASpL,GAExB,IAEIgS,EAAS1L,EAAOkI,cAAcxO,GAkBlC,MAhBY,CAEZgH,QAAgB,WACd,OA74Be,CA84BjB,EAEAA,UAAkB,SAASlF,GACzB,OAAOkQ,EAAOzW,MAChB,EAEAyL,MAAc,SAASlF,GACrB,IAAK,IAAIqG,EAAI,EAAGA,EAAI6J,EAAOzW,OAAQ4M,GAAK,EACtCrG,EAAOwH,IAAI0I,EAAO7J,GAAI,EAE1B,EAGF,EAMIkD,EAAU,SAASrL,GAErB,IAGIwO,EAAgBlI,EAAOmI,mBAAyB,KACpD,IAAKD,EACH,KAAM,uBAEP,SAASzG,EAAGkK,GAEX,IAAIxN,EAAO+J,EAIX,KAHA,GAAmB,GAAf/J,EAAKlJ,QAGC,QAHiBkJ,EAAK,IAAM,EAAKA,EAAK,IAC9C,KAAM,qBAEV,CANC,GAQD,IAAIuN,EAASxD,EAAcxO,GAEvBgH,EAAQ,CAEZA,QAAgB,WACd,OAt7Be,CAu7BjB,EAEAA,UAAkB,SAASlF,GACzB,SAAUkQ,EAAOzW,OAAS,EAC5B,EAEAyL,MAAc,SAASlF,GAMrB,IAJA,IAAI9B,EAAOgS,EAEP7J,EAAI,EAEDA,EAAI,EAAInI,EAAKzE,QAAQ,CAE1B,IAAIwM,GAAO,IAAO/H,EAAKmI,KAAO,EAAM,IAAOnI,EAAKmI,EAAI,GAEpD,GAAI,OAAUJ,GAAKA,GAAK,MACtBA,GAAK,UACA,MAAI,OAAUA,GAAKA,GAAK,OAG7B,KAAM,oBAAsBI,EAAI,GAAK,IAAMJ,EAF3CA,GAAK,KAGP,CAEAA,EAA0B,KAAnBA,IAAM,EAAK,MAAoB,IAAJA,GAElCjG,EAAOwH,IAAIvB,EAAG,IAEdI,GAAK,CACP,CAEA,GAAIA,EAAInI,EAAKzE,OACX,KAAM,oBAAsB4M,EAAI,EAEpC,GAEA,OAAOnB,CACT,EAUIkL,EAAwB,WAE1B,IAAIF,EAAS,GAEThL,EAAQ,CAEZA,UAAkB,SAASmI,GACzB6C,EAAOpO,KAAS,IAAJuL,EACd,EAEAnI,WAAmB,SAASmB,GAC1BnB,EAAMmL,UAAUhK,GAChBnB,EAAMmL,UAAUhK,IAAM,EACxB,EAEAnB,WAAmB,SAASmI,EAAGiD,EAAKC,GAClCD,EAAMA,GAAO,EACbC,EAAMA,GAAOlD,EAAE5T,OACf,IAAK,IAAI4M,EAAI,EAAGA,EAAIkK,EAAKlK,GAAK,EAC5BnB,EAAMmL,UAAUhD,EAAEhH,EAAIiK,GAE1B,EAEApL,YAAoB,SAASqG,GAC3B,IAAK,IAAIlF,EAAI,EAAGA,EAAIkF,EAAE9R,OAAQ4M,GAAK,EACjCnB,EAAMmL,UAAU9E,EAAEsB,WAAWxG,GAEjC,EAEAnB,YAAoB,WAClB,OAAOgL,CACT,EAEAhL,SAAiB,WACf,IAAIqG,EAAI,GACRA,GAAK,IACL,IAAK,IAAIlF,EAAI,EAAGA,EAAI6J,EAAOzW,OAAQ4M,GAAK,EAClCA,EAAI,IACNkF,GAAK,KAEPA,GAAK2E,EAAO7J,GAGd,OADAkF,EAAK,GAEP,GAEA,OAAOrG,CACT,EA4EIiI,EAA0B,SAASqD,GAErC,IAAIC,EAAOD,EACPE,EAAO,EACPhB,EAAU,EACViB,EAAU,EAEVzL,EAAQ,CAEZA,KAAa,WAEX,KAAOyL,EAAU,GAAG,CAElB,GAAID,GAAQD,EAAKhX,OAAQ,CACvB,GAAe,GAAXkX,EACF,OAAQ,EAEV,KAAM,2BAA6BA,CACrC,CAEA,IAAI1K,EAAIwK,EAAKhF,OAAOiF,GAGpB,GAFAA,GAAQ,EAEC,KAALzK,EAEF,OADA0K,EAAU,GACF,EACC1K,EAAE2K,MAAM,UAKnBlB,EAAWA,GAAW,EAAKmB,EAAO5K,EAAE4G,WAAW,IAC/C8D,GAAW,EACb,CAEA,IAAIzM,EAAKwL,IAAaiB,EAAU,EAAO,IAEvC,OADAA,GAAW,EACJzM,CACT,GAEI2M,EAAS,SAAS5K,GACpB,GAAI,IAAQA,GAAKA,GAAK,GACpB,OAAOA,EAAI,GACN,GAAI,IAAQA,GAAKA,GAAK,IAC3B,OAAOA,EAAI,GAAO,GACb,GAAI,IAAQA,GAAKA,GAAK,GAC3B,OAAOA,EAAI,GAAO,GACb,GAAS,IAALA,EACT,OAAO,GACF,GAAS,IAALA,EACT,OAAO,GAEP,KAAM,KAAOA,CAEjB,EAEA,OAAOf,CACT,EAwNI+F,EAAgB,SAAS6F,EAAOC,EAAQC,GAE1C,IADA,IAAIC,EAnNS,SAASH,EAAOC,GAE7B,IAAIG,EAASJ,EACTK,EAAUJ,EACVjB,EAAQ,IAAIjW,MAAMiX,EAAQC,GAE1B7L,EAAQ,CAEZA,SAAiB,SAASiG,EAAGC,EAAGgG,GAC9BtB,EAAM1E,EAAI8F,EAAS/F,GAAKiG,CAC1B,EAEAlM,MAAc,SAASmM,GAKrBA,EAAIC,YAAY,UAKhBD,EAAIE,WAAWL,GACfG,EAAIE,WAAWJ,GAEfE,EAAIhB,UAAU,KACdgB,EAAIhB,UAAU,GACdgB,EAAIhB,UAAU,GAMdgB,EAAIhB,UAAU,GACdgB,EAAIhB,UAAU,GACdgB,EAAIhB,UAAU,GAGdgB,EAAIhB,UAAU,KACdgB,EAAIhB,UAAU,KACdgB,EAAIhB,UAAU,KAKdgB,EAAIC,YAAY,KAChBD,EAAIE,WAAW,GACfF,EAAIE,WAAW,GACfF,EAAIE,WAAWL,GACfG,EAAIE,WAAWJ,GACfE,EAAIhB,UAAU,GAQd,IACImB,EAASC,EADQ,GAGrBJ,EAAIhB,UAHiB,GAOrB,IAFA,IAAIpO,EAAS,EAENuP,EAAO/X,OAASwI,EAAS,KAC9BoP,EAAIhB,UAAU,KACdgB,EAAIK,WAAWF,EAAQvP,EAAQ,KAC/BA,GAAU,IAGZoP,EAAIhB,UAAUmB,EAAO/X,OAASwI,GAC9BoP,EAAIK,WAAWF,EAAQvP,EAAQuP,EAAO/X,OAASwI,GAC/CoP,EAAIhB,UAAU,GAIdgB,EAAIC,YAAY,IAClB,GAqCIG,EAAe,SAASE,GAS1B,IAPA,IAAIC,EAAY,GAAKD,EACjBE,EAAkC,GAAvB,GAAKF,GAChBG,EAAYH,EAAiB,EAG7BI,EAAQC,IAEH3L,EAAI,EAAGA,EAAIuL,EAAWvL,GAAK,EAClC0L,EAAM/T,IAAIqG,OAAOqJ,aAAarH,IAEhC0L,EAAM/T,IAAIqG,OAAOqJ,aAAakE,IAC9BG,EAAM/T,IAAIqG,OAAOqJ,aAAamE,IAE9B,IAhDII,EACAC,EACAC,EA8CAC,EAAUhC,IACViC,GAjDAJ,EAiDyBG,EAhDzBF,EAAa,EACbC,EAAa,EAEL,CAEZjN,MAAc,SAAShH,EAAMzE,GAE3B,GAAMyE,IAASzE,GAAW,EACxB,KAAM,cAGR,KAAOyY,EAAazY,GAAU,GAC5BwY,EAAK5B,UAAU,KAAUnS,GAAQgU,EAAcC,IAC/C1Y,GAAW,EAAIyY,EACfhU,KAAW,EAAIgU,EACfC,EAAa,EACbD,EAAa,EAGfC,GAAcjU,GAAQgU,EACtBA,GAA0BzY,CAC5B,EAEAyL,MAAc,WACRgN,EAAa,GACfD,EAAK5B,UAAU8B,EAEnB,IAwBAE,EAAOzK,MAAMgK,EAAWE,GAExB,IAAIQ,EAAY,EAEZ/G,EAAIlH,OAAOqJ,aAAaoC,EAAMwC,IAGlC,IAFAA,GAAa,EAENA,EAAYxC,EAAMrW,QAAQ,CAE/B,IAAIwM,EAAI5B,OAAOqJ,aAAaoC,EAAMwC,IAClCA,GAAa,EAETP,EAAMQ,SAAShH,EAAItF,GAErBsF,GAAQtF,GAIRoM,EAAOzK,MAAMmK,EAAMS,QAAQjH,GAAIuG,GAE3BC,EAAMjY,OAAS,OAEbiY,EAAMjY,QAAW,GAAKgY,IACxBA,GAAa,GAGfC,EAAM/T,IAAIuN,EAAItF,IAGhBsF,EAAItF,EAER,CASA,OAPAoM,EAAOzK,MAAMmK,EAAMS,QAAQjH,GAAIuG,GAG/BO,EAAOzK,MAAMiK,EAASC,GAEtBO,EAAOI,QAEAL,EAAQM,aACjB,EAEIV,EAAW,WAEb,IAAIW,EAAO,CAAC,EACRC,EAAQ,EAER1N,EAAQ,CAEZA,IAAY,SAASjL,GACnB,GAAIiL,EAAMqN,SAAStY,GACjB,KAAM,WAAaA,EAErB0Y,EAAK1Y,GAAO2Y,EACZA,GAAS,CACX,EAEA1N,KAAa,WACX,OAAO0N,CACT,EAEA1N,QAAgB,SAASjL,GACvB,OAAO0Y,EAAK1Y,EACd,EAEAiL,SAAiB,SAASjL,GACxB,YAA2B,IAAb0Y,EAAK1Y,EACrB,GAEA,OAAOiL,CACT,EAEA,OAAOA,CACT,CAGY2N,CAAS/B,EAAOC,GACjB3F,EAAI,EAAGA,EAAI2F,EAAQ3F,GAAK,EAC/B,IAAK,IAAID,EAAI,EAAGA,EAAI2F,EAAO3F,GAAK,EAC9B8F,EAAI6B,SAAS3H,EAAGC,EAAG4F,EAAS7F,EAAGC,IAInC,IAAIiC,EAAI+C,IACRa,EAAIrJ,MAAMyF,GAIV,IAFA,IAAI0F,EAlWyB,WAE7B,IAAIrD,EAAU,EACViB,EAAU,EACVhB,EAAU,EACVqD,EAAU,GAEV9N,EAAQ,CAAC,EAET+N,EAAe,SAAS5F,GAC1B2F,GAAW3O,OAAOqJ,aAAawF,EAAW,GAAJ7F,GACxC,EAEI6F,EAAS,SAAShP,GACpB,GAAIA,EAAI,OAED,IAAIA,EAAI,GACb,OAAO,GAAOA,EACT,GAAIA,EAAI,GACb,OAAeA,EAAI,GAAZ,GACF,GAAIA,EAAI,GACb,OAAeA,EAAI,GAAZ,GACF,GAAS,IAALA,EACT,OAAO,GACF,GAAS,IAALA,EACT,OAAO,EACT,CACA,KAAM,KAAOA,CACf,EAmCA,OAjCAgB,EAAMmL,UAAY,SAASnM,GAMzB,IAJAwL,EAAWA,GAAW,EAAU,IAAJxL,EAC5ByM,GAAW,EACXhB,GAAW,EAEJgB,GAAW,GAChBsC,EAAavD,IAAaiB,EAAU,GACpCA,GAAW,CAEf,EAEAzL,EAAMuN,MAAQ,WAQZ,GANI9B,EAAU,IACZsC,EAAavD,GAAY,EAAIiB,GAC7BjB,EAAU,EACViB,EAAU,GAGRhB,EAAU,GAAK,EAGjB,IADA,IAAIwD,EAAS,EAAIxD,EAAU,EAClBtJ,EAAI,EAAGA,EAAI8M,EAAQ9M,GAAK,EAC/B2M,GAAW,GAGjB,EAEA9N,EAAMrK,SAAW,WACf,OAAOmY,CACT,EAEO9N,CACT,CAkSekO,GACTxG,EAAQS,EAAEqF,cACLrM,EAAI,EAAGA,EAAIuG,EAAMnT,OAAQ4M,GAAK,EACrC0M,EAAO1C,UAAUzD,EAAMvG,IAIzB,OAFA0M,EAAON,QAEA,yBAA2BM,CACpC,EAKA,OAAOvO,CACT,CArrEa,GA0rEXA,EAAOmI,mBAAmB,SAAW,SAASpB,GAgC5C,OA9BA,SAAqBiF,GAEnB,IADA,IAAI6C,EAAO,GACFhN,EAAE,EAAGA,EAAImK,EAAI/W,OAAQ4M,IAAK,CACjC,IAAIiN,EAAW9C,EAAI3D,WAAWxG,GAC1BiN,EAAW,IAAMD,EAAKvR,KAAKwR,GACtBA,EAAW,KAClBD,EAAKvR,KAAK,IAAQwR,GAAY,EAC1B,IAAmB,GAAXA,GAELA,EAAW,OAAUA,GAAY,MACxCD,EAAKvR,KAAK,IAAQwR,GAAY,GAC1B,IAASA,GAAU,EAAK,GACxB,IAAmB,GAAXA,IAIZjN,IAIAiN,EAAW,QAAwB,KAAXA,IAAmB,GAClB,KAApB9C,EAAI3D,WAAWxG,IACpBgN,EAAKvR,KAAK,IAAQwR,GAAW,GACzB,IAASA,GAAU,GAAM,GACzB,IAASA,GAAU,EAAK,GACxB,IAAmB,GAAXA,GAEhB,CACA,OAAOD,CACT,CACOE,CAAYhI,EACrB,OAMsB,0BAAP,EAIf,WACE,OAAO/G,CACX,GANwB,UAAX,IAAW,iB,oCCjvExB,IACQgP,EADJC,EAAajW,MAAQA,KAAKiW,YACtBD,EAAgB,SAAUnF,EAAGhB,GAI7B,OAHAmG,EAAgBrb,OAAOub,gBAClB,CAAEC,UAAW,cAAgB9Z,OAAS,SAAUwU,EAAGhB,GAAKgB,EAAEsF,UAAYtG,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAIxB,KAAKwB,EAAOA,EAAEvS,eAAe+Q,KAAIwC,EAAExC,GAAKwB,EAAExB,GAAI,EACtE2H,EAAcnF,EAAGhB,EAC5B,EACO,SAAUgB,EAAGhB,GAEhB,SAASuG,IAAOpW,KAAK4D,YAAciN,CAAG,CADtCmF,EAAcnF,EAAGhB,GAEjBgB,EAAE7T,UAAkB,OAAN6S,EAAalV,OAAO0b,OAAOxG,IAAMuG,EAAGpZ,UAAY6S,EAAE7S,UAAW,IAAIoZ,EACnF,GAEJzb,OAAO2b,eAAerb,EAAS,aAAc,CAAEuB,OAAO,IACtDvB,EAAQsb,YAAS,EACjB,IAAIC,EAAU,EAAQ,MAClBC,EAAc,EAAQ,MACtBC,EAAQ,EAAQ,MAChBC,EAAW,EAAQ,MACnBJ,EAAwB,SAAUK,GAElC,SAASL,EAAOM,GACZ,IAAInP,EAAQkP,EAAO9Y,KAAKkC,KAAM6W,IAAU7W,KAExC,OADA0H,EAAMoP,OAASJ,EAAMK,YACdrP,CACX,CAqRA,OA1RAuO,EAAUM,EAAQK,GAMlBL,EAAOS,SAAW,SAAUhE,GACxB,IAAcnK,EAAGJ,EAAboL,EAAM,GACNd,EAAMC,EAAI/W,OACd,IAAK4M,EAAI,EAAGA,EAAIkK,EAAKlK,KACjBJ,EAAIuK,EAAI3D,WAAWxG,KACT,GAAYJ,GAAK,IACvBoL,GAAOb,EAAI/E,OAAOpF,GAEbJ,EAAI,MACToL,GAAOhN,OAAOqJ,aAAa,IAASzH,GAAK,GAAM,IAC/CoL,GAAOhN,OAAOqJ,aAAa,IAASzH,GAAK,EAAK,IAC9CoL,GAAOhN,OAAOqJ,aAAa,IAASzH,GAAK,EAAK,MAG9CoL,GAAOhN,OAAOqJ,aAAa,IAASzH,GAAK,EAAK,IAC9CoL,GAAOhN,OAAOqJ,aAAa,IAASzH,GAAK,EAAK,KAGtD,OAAOoL,CACX,EAIA0C,EAAOvZ,UAAUia,kBAAoB,SAAUC,EAAWvJ,EAAGC,EAAGtR,EAAM6a,EAAOC,EAAOC,EAAMC,GACtFA,EAAIJ,UAAYA,EAChBI,EAAItI,UAAYmI,EAChBG,EAAIC,YAAcJ,EAElBvJ,GAAKsJ,EAAY,EACjBvJ,GAAKuJ,EAAY,EACjB5a,GAAQ4a,EACH7a,MAAMwF,QAAQuV,KACfA,EAAQ,CAACA,EAAOA,EAAOA,EAAOA,IAOlC,IAAII,GAJJJ,EAAQA,EAAMjb,KAAI,SAAUqM,GAExB,OADAA,EAAIU,KAAKwE,IAAIlF,EAAGlM,EAAO,IACX,EAAK,EAAIkM,CACzB,KACqB,IAAM,EACvBiP,EAAYL,EAAM,IAAM,EACxBM,EAAeN,EAAM,IAAM,EAC3BO,EAAcP,EAAM,IAAM,EAC9BE,EAAIM,YACJN,EAAIO,OAAOlK,EAAI6J,EAAU5J,GACzB0J,EAAIQ,OAAOnK,EAAIrR,EAAOmb,EAAW7J,GAC7B6J,GACAH,EAAIS,iBAAiBpK,EAAIrR,EAAMsR,EAAGD,EAAIrR,EAAMsR,EAAI6J,GACpDH,EAAIQ,OAAOnK,EAAIrR,EAAMsR,EAAItR,EAAOob,GAC5BA,GACAJ,EAAIS,iBAAiBpK,EAAIrR,EAAMsR,EAAItR,EAAMqR,EAAIrR,EAAOob,EAAc9J,EAAItR,GAC1Egb,EAAIQ,OAAOnK,EAAIgK,EAAa/J,EAAItR,GAC5Bqb,GACAL,EAAIS,iBAAiBpK,EAAGC,EAAItR,EAAMqR,EAAGC,EAAItR,EAAOqb,GACpDL,EAAIQ,OAAOnK,EAAGC,EAAI4J,GACdA,GACAF,EAAIS,iBAAiBpK,EAAGC,EAAGD,EAAI6J,EAAU5J,GAC7C0J,EAAIU,YACJV,EAAIW,SACAZ,GACAC,EAAID,MAEZ,EAIAd,EAAOvZ,UAAUkb,uBAAyB,SAAUZ,EAAK7K,EAAUhI,EAAQsD,EAAKC,EAAKmP,EAAOC,QAC1E,IAAVA,IAAoBA,EAAQ,CAAC,EAAG,EAAG,EAAG,IAC1C,IACIe,EACAC,EASAC,EACAC,EAZApB,EAAYhO,KAAKqP,KAAK9L,GAGL,iBAAV2K,GAAuB/a,MAAMwF,QAAQuV,GAM5CgB,EADAD,EAAaf,GAJbe,EAAaf,EAAMoB,OAAS,EAC5BJ,EAAahB,EAAMqB,OAAS,GAQX,iBAAVtB,GACPkB,EAAalB,EAAMqB,MACnBF,EAAanB,EAAMsB,QAGnBJ,EAAalB,EACbmB,EAAanB,GAEjB,IAAIvJ,EAAK7F,EAAM0E,EAAYhI,EACvBkJ,EAAK3F,EAAMyE,EAAYhI,EACvBnI,EAAkB,EAAXmQ,EAEXzM,KAAKiX,kBAAkBC,EAAWvJ,EAAGC,EAAGtR,EAAM+b,EAAYF,GAAY,EAAOb,GAE7Ehb,EAAkB,EAAXmQ,EACPmB,GAAgB,EAAXnB,EACLkB,GAAgB,EAAXlB,EACLzM,KAAKiX,kBAAkBC,EAAWvJ,EAAGC,EAAGtR,EAAMgc,EAAYF,GAAY,EAAMd,EAChF,EAKAf,EAAOvZ,UAAU0b,mBAAqB,SAAU1Q,EAAKD,EAAK4Q,GACtD,OAAOA,EAAMC,MAAK,SAAUC,GAAQ,OAAQ9Q,GAAO8Q,EAAK9Q,KAAOA,GAAO8Q,EAAK9Q,IAAM,GAC7EC,GAAO6Q,EAAK7Q,KAAOA,GAAO6Q,EAAK7Q,IAAM,CAAI,GACjD,EACAuO,EAAOvZ,UAAU8b,sCAAwC,SAAUC,EAAatM,GAC5E,OAAOsM,EAActM,CACzB,EACA8J,EAAOvZ,UAAUgc,oBAAsB,SAAUhR,EAAKD,EAAKkR,EAAYC,EAAaC,EAAQC,EAAQ3M,EAAU4M,GAC1G,GAAIA,EAAW,CACX,IACIC,EAAiBtZ,KAAK8Y,sCAAsCK,EAAQ1M,GACpE8M,EAAoBvZ,KAAK8Y,sCAAsCM,EAAQ3M,GACvE+M,EAAmBxZ,KAAK8Y,sCAAsCG,EAAYxM,GAAY,EACtFgN,EAAoBzZ,KAAK8Y,sCAAsCI,EAAazM,GAAY,EAC5F,OAAO1E,GAAOuR,EALY,GAK4BvR,GAAOuR,EAAiBE,EALpD,GAMnBxR,GAAOuR,EANY,GAM+BvR,GAAOuR,EAAoBE,EAN1D,CAO9B,CAEI,OAAO,CAEf,EACAlD,EAAOvZ,UAAU0c,sBAAwB,SAAUC,GAC/C,OAAQnD,EAAQxW,KAAK6W,MAAO8C,EAChC,EACApD,EAAOvZ,UAAU4c,kBAAoB,WACjC5Z,KAAK6Z,QACT,EACAtD,EAAOvZ,UAAU8c,mBAAqB,WAClC9Z,KAAK6Z,QACT,EACAtD,EAAOvZ,UAAU6c,OAAS,WACtB,IAAIE,EAAK/Z,KAAK6W,MAAOra,EAAQud,EAAGvd,MAAOwd,EAAUD,EAAGC,QAASC,EAAaF,EAAGE,WAAYC,EAAUH,EAAGG,QAASC,EAAUJ,EAAGI,QAASd,EAAYU,EAAGV,UAAWe,EAAcL,EAAGK,YAAaC,EAAaN,EAAGM,WAAYC,EAAyBP,EAAGO,uBAAwBC,EAAUR,EAAGQ,QAASC,EAAYT,EAAGS,UAAWC,EAAWV,EAAGU,SAAUC,EAAmBX,EAAGW,iBAEvWpe,GAAQ0D,KAAK6W,MAAMva,KACnBqe,GAAa3a,KAAK6W,MAAM8D,UACxBC,EAAY5a,KAAK6W,MAAM+D,WAAa5a,KAAK6W,MAAM+D,UAAY,EAC3DC,EAAa7a,KAAK6W,MAAMgE,YAAc7a,KAAK6W,MAAMgE,WAAa,EAC9DC,EAAc9a,KAAK6W,MAAMiE,aAAe9a,KAAK6W,MAAMiE,YAAc,EACjEC,EAAStE,EAAY,EAAGuD,GAC5Be,EAAOtP,QAAQ8K,EAAOS,SAASxa,IAC/Bue,EAAO7O,OACP,IAAI4K,EAASH,EAASqE,YAAYhb,KAAK8W,OAAOmE,SAC1C3D,EAAMR,EAAOoE,WAAW,MACxBC,EAAa7e,EAAQ,EAAIqe,EACzB1e,EAAS8e,EAAO9O,iBAChBQ,EAAWnQ,EAAOL,EAClBmf,EAASC,OAAOC,kBAAoB,EACxCxE,EAAOvD,OAASuD,EAAOxD,MAAQ6H,EAAaC,EAC5C9D,EAAI8D,MAAMA,EAAOA,GACjB9D,EAAItI,UAAYkL,EAChB5C,EAAIrI,SAAS,EAAG,EAAGkM,EAAYA,GAC/B,IAAI1W,EAASkW,EACTY,EAAmB,CACnB,CAAExT,IAAK,EAAGC,IAAK,GACf,CAAED,IAAK,EAAGC,IAAK/L,EAAS,GACxB,CAAE8L,IAAK9L,EAAS,EAAG+L,IAAK,IAG5B,GADAsP,EAAIC,YAAc4C,EACF,SAAZI,EAAoB,CACpBjD,EAAItI,UAAYmL,EAEhB,IADA,IAAIqB,EAAS/O,EAAW,EACf1E,EAAM,EAAGA,EAAM9L,EAAQ8L,IAC5B,IAAK,IAAIC,EAAM,EAAGA,EAAM/L,EAAQ+L,IACxB+S,EAAO/O,OAAOjE,EAAKC,KAAShI,KAAK0Y,mBAAmB3Q,EAAKC,EAAKuT,KAC9DjE,EAAIM,YACJN,EAAImE,IAAIvS,KAAKwS,MAAM1T,EAAMyE,GAAY+O,EAAS/W,EAAQyE,KAAKwS,MAAM3T,EAAM0E,GAAY+O,EAAS/W,EAAS+W,EAAS,IAAO,GAAI,EAAG,EAAItS,KAAKyS,IAAI,GACzIrE,EAAIU,YACJV,EAAID,OAIpB,MAEI,IAAStP,EAAM,EAAGA,EAAM9L,EAAQ8L,IAC5B,IAASC,EAAM,EAAGA,EAAM/L,EAAQ+L,IAC5B,GAAI+S,EAAO/O,OAAOjE,EAAKC,KAAShI,KAAK0Y,mBAAmB3Q,EAAKC,EAAKuT,GAAmB,CACjFjE,EAAItI,UAAYmL,EAChB,IAAIyB,EAAK1S,KAAKqP,MAAMvQ,EAAM,GAAKyE,GAAYvD,KAAKC,MAAMnB,EAAMyE,GACxDoP,EAAK3S,KAAKqP,MAAMxQ,EAAM,GAAK0E,GAAYvD,KAAKC,MAAMpB,EAAM0E,GAC5D6K,EAAIrI,SAAS/F,KAAKwS,MAAM1T,EAAMyE,GAAYhI,EAAQyE,KAAKwS,MAAM3T,EAAM0E,GAAYhI,EAAQmX,EAAGC,EAC9F,CAKZ,IAAK,IAAIhT,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAEIsO,EAFA2E,EAAKP,EAAiB1S,GACtBuO,GAD0BrP,EAAM+T,EAAG/T,IAAKC,EAAM8T,EAAG9T,IACzCwS,GAERne,MAAMwF,QAAQuV,KACdA,EAAQA,EAAMvO,IAEE,iBAATuO,IACPA,EAAQ,CAACA,EAAOA,EAAOA,EAAOA,IAO1BD,EALHsD,EAIGpe,MAAMwF,QAAQ4Y,GACNA,EAAS5R,GAGT4R,EAPJN,EAUZna,KAAKkY,uBAAuBZ,EAAK7K,EAAUhI,EAAQsD,EAAKC,EAAKmP,EAAOC,EACxE,CACA,GAAIiC,EAAW,CACX,IAAI0C,EAAU,IAAIC,MACd/B,IACA8B,EAAQE,YAAc,aAE1BF,EAAQG,OAAS,WACb5E,EAAI6E,OACJ,IAAIlD,EAAa2B,GAAoB,GAAPte,EAC1B4c,EAAc2B,GAAc5B,EAC5BE,GAAW7c,EAAO2c,GAAc,EAChCG,GAAW9c,EAAO4c,GAAe,EACrC,GAAIoB,GAA0BQ,EAAa,CACvCxD,EAAIM,YACJN,EAAIC,YAAc2C,EAClB5C,EAAItI,UAAYkL,EAChB,IAAIkC,EAAoBnD,EAAc,EAAI6B,EACtCuB,EAAqBnD,EAAe,EAAI4B,EACxCwB,EAAgBnD,EAAS1U,EAASqW,EAClCyB,EAAgBnD,EAAS3U,EAASqW,EACtC,GAAyB,WAArBJ,EAA+B,CAC/B,IAAI8B,EAAsBF,EAAiBF,EAAoB,EAC3DK,EAAsBF,EAAiBF,EAAqB,EAChE/E,EAAIoF,QAAQF,EAAqBC,EAAqBL,EAAoB,EAAGC,EAAqB,EAAG,EAAG,EAAG,EAAInT,KAAKyS,IACpHrE,EAAIW,SACJX,EAAID,MACR,MAEIC,EAAIrI,SAASqN,EAAeC,EAAeH,EAAmBC,EAEtE,CACA/E,EAAIqF,YAAcvC,EAClB9C,EAAIsF,UAAUb,EAAS5C,EAAS1U,EAAQ2U,EAAS3U,EAAQwU,EAAYC,GACrE5B,EAAIuF,UACAxC,GACAA,GAER,EACA0B,EAAQe,IAAMzD,CAClB,CACJ,EACA9C,EAAOvZ,UAAU+f,OAAS,WACtB,IAAIhD,EACAiD,GAAUhd,KAAK6W,MAAMva,KAAQ,GAAK0D,KAAK6W,MAAM8D,UACjD,OAAOjE,EAAMuG,cAAc,SAAU,CACjChQ,GAA6B,QAAxB8M,EAAK/Z,KAAK6W,MAAM5J,UAAuB,IAAP8M,EAAgBA,EAAK,oBAC1DxG,OAAQyJ,EACR1J,MAAO0J,EACPE,MAAO,CAAE3J,OAAQyJ,EAAS,KAAM1J,MAAO0J,EAAS,MAChDG,IAAKnd,KAAK8W,QAElB,EACAP,EAAO6G,aAAe,CAClB5gB,MAAO,uBACPwd,QAAS,IACTC,YAAY,EACZ3d,KAAM,IACNqe,UAAW,GACXT,QAAS,UACTC,QAAS,UACTC,YAAa,EACbG,QAAS,UACTC,UAAW,CAAC,EAAG,EAAG,GAClBE,iBAAkB,UAEfnE,CACX,CA5R2B,CA4RzBG,EAAM2G,WACRpiB,EAAQsb,OAASA,C","sources":["webpack://container/./node_modules/lodash.isequal/index.js","webpack://container/./node_modules/qrcode-generator/qrcode.js","webpack://container/./node_modules/react-qrcode-logo/dist/index.js"],"sourcesContent":["/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '';\n qrHtml += '';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += ' | ';\n }\n\n qrHtml += '
';\n }\n\n qrHtml += '';\n qrHtml += '
';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '
';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCode = void 0;\nvar isEqual = require(\"lodash.isequal\");\nvar qrGenerator = require(\"qrcode-generator\");\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar QRCode = /** @class */ (function (_super) {\n __extends(QRCode, _super);\n function QRCode(props) {\n var _this = _super.call(this, props) || this;\n _this.canvas = React.createRef();\n return _this;\n }\n QRCode.utf16to8 = function (str) {\n var out = '', i, c;\n var len = str.length;\n for (i = 0; i < len; i++) {\n c = str.charCodeAt(i);\n if ((c >= 0x0001) && (c <= 0x007F)) {\n out += str.charAt(i);\n }\n else if (c > 0x07FF) {\n out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));\n out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\n }\n else {\n out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\n }\n }\n return out;\n };\n /**\n * Draw a rounded square in the canvas\n */\n QRCode.prototype.drawRoundedSquare = function (lineWidth, x, y, size, color, radii, fill, ctx) {\n ctx.lineWidth = lineWidth;\n ctx.fillStyle = color;\n ctx.strokeStyle = color;\n // Adjust coordinates so that the outside of the stroke is aligned to the edges\n y += lineWidth / 2;\n x += lineWidth / 2;\n size -= lineWidth;\n if (!Array.isArray(radii)) {\n radii = [radii, radii, radii, radii];\n }\n // Radius should not be greater than half the size or less than zero\n radii = radii.map(function (r) {\n r = Math.min(r, size / 2);\n return (r < 0) ? 0 : r;\n });\n var rTopLeft = radii[0] || 0;\n var rTopRight = radii[1] || 0;\n var rBottomRight = radii[2] || 0;\n var rBottomLeft = radii[3] || 0;\n ctx.beginPath();\n ctx.moveTo(x + rTopLeft, y);\n ctx.lineTo(x + size - rTopRight, y);\n if (rTopRight)\n ctx.quadraticCurveTo(x + size, y, x + size, y + rTopRight);\n ctx.lineTo(x + size, y + size - rBottomRight);\n if (rBottomRight)\n ctx.quadraticCurveTo(x + size, y + size, x + size - rBottomRight, y + size);\n ctx.lineTo(x + rBottomLeft, y + size);\n if (rBottomLeft)\n ctx.quadraticCurveTo(x, y + size, x, y + size - rBottomLeft);\n ctx.lineTo(x, y + rTopLeft);\n if (rTopLeft)\n ctx.quadraticCurveTo(x, y, x + rTopLeft, y);\n ctx.closePath();\n ctx.stroke();\n if (fill) {\n ctx.fill();\n }\n };\n /**\n * Draw a single positional pattern eye.\n */\n QRCode.prototype.drawPositioningPattern = function (ctx, cellSize, offset, row, col, color, radii) {\n if (radii === void 0) { radii = [0, 0, 0, 0]; }\n var lineWidth = Math.ceil(cellSize);\n var radiiOuter;\n var radiiInner;\n if (typeof radii !== 'number' && !Array.isArray(radii)) {\n radiiOuter = radii.outer || 0;\n radiiInner = radii.inner || 0;\n }\n else {\n radiiOuter = radii;\n radiiInner = radiiOuter;\n }\n var colorOuter;\n var colorInner;\n if (typeof color !== 'string') {\n colorOuter = color.outer;\n colorInner = color.inner;\n }\n else {\n colorOuter = color;\n colorInner = color;\n }\n var y = (row * cellSize) + offset;\n var x = (col * cellSize) + offset;\n var size = cellSize * 7;\n // Outer box\n this.drawRoundedSquare(lineWidth, x, y, size, colorOuter, radiiOuter, false, ctx);\n // Inner box\n size = cellSize * 3;\n y += cellSize * 2;\n x += cellSize * 2;\n this.drawRoundedSquare(lineWidth, x, y, size, colorInner, radiiInner, true, ctx);\n };\n ;\n /**\n * Is this dot inside a positional pattern zone.\n */\n QRCode.prototype.isInPositioninZone = function (col, row, zones) {\n return zones.some(function (zone) { return (row >= zone.row && row <= zone.row + 7 &&\n col >= zone.col && col <= zone.col + 7); });\n };\n QRCode.prototype.transformPixelLengthIntoNumberOfCells = function (pixelLength, cellSize) {\n return pixelLength / cellSize;\n };\n QRCode.prototype.isCoordinateInImage = function (col, row, dWidthLogo, dHeightLogo, dxLogo, dyLogo, cellSize, logoImage) {\n if (logoImage) {\n var numberOfCellsMargin = 2;\n var firstRowOfLogo = this.transformPixelLengthIntoNumberOfCells(dxLogo, cellSize);\n var firstColumnOfLogo = this.transformPixelLengthIntoNumberOfCells(dyLogo, cellSize);\n var logoWidthInCells = this.transformPixelLengthIntoNumberOfCells(dWidthLogo, cellSize) - 1;\n var logoHeightInCells = this.transformPixelLengthIntoNumberOfCells(dHeightLogo, cellSize) - 1;\n return row >= firstRowOfLogo - numberOfCellsMargin && row <= firstRowOfLogo + logoWidthInCells + numberOfCellsMargin // check rows\n && col >= firstColumnOfLogo - numberOfCellsMargin && col <= firstColumnOfLogo + logoHeightInCells + numberOfCellsMargin; // check cols\n }\n else {\n return false;\n }\n };\n QRCode.prototype.shouldComponentUpdate = function (nextProps) {\n return !isEqual(this.props, nextProps);\n };\n QRCode.prototype.componentDidMount = function () {\n this.update();\n };\n QRCode.prototype.componentDidUpdate = function () {\n this.update();\n };\n QRCode.prototype.update = function () {\n var _a = this.props, value = _a.value, ecLevel = _a.ecLevel, enableCORS = _a.enableCORS, bgColor = _a.bgColor, fgColor = _a.fgColor, logoImage = _a.logoImage, logoOpacity = _a.logoOpacity, logoOnLoad = _a.logoOnLoad, removeQrCodeBehindLogo = _a.removeQrCodeBehindLogo, qrStyle = _a.qrStyle, eyeRadius = _a.eyeRadius, eyeColor = _a.eyeColor, logoPaddingStyle = _a.logoPaddingStyle;\n // just make sure that these params are passed as numbers\n var size = +this.props.size;\n var quietZone = +this.props.quietZone;\n var logoWidth = this.props.logoWidth ? +this.props.logoWidth : 0;\n var logoHeight = this.props.logoHeight ? +this.props.logoHeight : 0;\n var logoPadding = this.props.logoPadding ? +this.props.logoPadding : 0;\n var qrCode = qrGenerator(0, ecLevel);\n qrCode.addData(QRCode.utf16to8(value));\n qrCode.make();\n var canvas = ReactDOM.findDOMNode(this.canvas.current);\n var ctx = canvas.getContext('2d');\n var canvasSize = size + (2 * quietZone);\n var length = qrCode.getModuleCount();\n var cellSize = size / length;\n var scale = (window.devicePixelRatio || 1);\n canvas.height = canvas.width = canvasSize * scale;\n ctx.scale(scale, scale);\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, canvasSize, canvasSize);\n var offset = quietZone;\n var positioningZones = [\n { row: 0, col: 0 },\n { row: 0, col: length - 7 },\n { row: length - 7, col: 0 },\n ];\n ctx.strokeStyle = fgColor;\n if (qrStyle === 'dots') {\n ctx.fillStyle = fgColor;\n var radius = cellSize / 2;\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n if (qrCode.isDark(row, col) && !this.isInPositioninZone(row, col, positioningZones)) {\n ctx.beginPath();\n ctx.arc(Math.round(col * cellSize) + radius + offset, Math.round(row * cellSize) + radius + offset, (radius / 100) * 75, 0, 2 * Math.PI, false);\n ctx.closePath();\n ctx.fill();\n }\n }\n }\n }\n else {\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n if (qrCode.isDark(row, col) && !this.isInPositioninZone(row, col, positioningZones)) {\n ctx.fillStyle = fgColor;\n var w = (Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize));\n var h = (Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize));\n ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset, w, h);\n }\n }\n }\n }\n // Draw positioning patterns\n for (var i = 0; i < 3; i++) {\n var _b = positioningZones[i], row = _b.row, col = _b.col;\n var radii = eyeRadius;\n var color = void 0;\n if (Array.isArray(radii)) {\n radii = radii[i];\n }\n if (typeof radii == 'number') {\n radii = [radii, radii, radii, radii];\n }\n if (!eyeColor) { // if not specified, eye color is the same as foreground, \n color = fgColor;\n }\n else {\n if (Array.isArray(eyeColor)) { // if array, we pass the single color\n color = eyeColor[i];\n }\n else {\n color = eyeColor;\n }\n }\n this.drawPositioningPattern(ctx, cellSize, offset, row, col, color, radii);\n }\n if (logoImage) {\n var image_1 = new Image();\n if (enableCORS) {\n image_1.crossOrigin = 'Anonymous';\n }\n image_1.onload = function () {\n ctx.save();\n var dWidthLogo = logoWidth || size * 0.2;\n var dHeightLogo = logoHeight || dWidthLogo;\n var dxLogo = ((size - dWidthLogo) / 2);\n var dyLogo = ((size - dHeightLogo) / 2);\n if (removeQrCodeBehindLogo || logoPadding) {\n ctx.beginPath();\n ctx.strokeStyle = bgColor;\n ctx.fillStyle = bgColor;\n var dWidthLogoPadding = dWidthLogo + (2 * logoPadding);\n var dHeightLogoPadding = dHeightLogo + (2 * logoPadding);\n var dxLogoPadding = dxLogo + offset - logoPadding;\n var dyLogoPadding = dyLogo + offset - logoPadding;\n if (logoPaddingStyle === 'circle') {\n var dxCenterLogoPadding = dxLogoPadding + (dWidthLogoPadding / 2);\n var dyCenterLogoPadding = dyLogoPadding + (dHeightLogoPadding / 2);\n ctx.ellipse(dxCenterLogoPadding, dyCenterLogoPadding, dWidthLogoPadding / 2, dHeightLogoPadding / 2, 0, 0, 2 * Math.PI);\n ctx.stroke();\n ctx.fill();\n }\n else {\n ctx.fillRect(dxLogoPadding, dyLogoPadding, dWidthLogoPadding, dHeightLogoPadding);\n }\n }\n ctx.globalAlpha = logoOpacity;\n ctx.drawImage(image_1, dxLogo + offset, dyLogo + offset, dWidthLogo, dHeightLogo);\n ctx.restore();\n if (logoOnLoad) {\n logoOnLoad();\n }\n };\n image_1.src = logoImage;\n }\n };\n QRCode.prototype.render = function () {\n var _a;\n var qrSize = +this.props.size + (2 * +this.props.quietZone);\n return React.createElement('canvas', {\n id: (_a = this.props.id) !== null && _a !== void 0 ? _a : 'react-qrcode-logo',\n height: qrSize,\n width: qrSize,\n style: { height: qrSize + 'px', width: qrSize + 'px' },\n ref: this.canvas\n });\n };\n QRCode.defaultProps = {\n value: 'https://reactjs.org/',\n ecLevel: 'M',\n enableCORS: false,\n size: 150,\n quietZone: 10,\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n logoOpacity: 1,\n qrStyle: 'squares',\n eyeRadius: [0, 0, 0],\n logoPaddingStyle: 'square'\n };\n return QRCode;\n}(React.Component));\nexports.QRCode = QRCode;\n"],"names":["HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","g","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","index","length","mapToArray","map","result","Array","size","forEach","value","key","setToArray","set","uid","func","transform","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","reIsNative","RegExp","call","replace","Buffer","undefined","Symbol","Uint8Array","propertyIsEnumerable","splice","symToStringTag","toStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","this","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","data","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","object","equalFunc","objIsArr","isArray","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","name","message","convert","isPartial","stacked","get","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","equalObjects","baseIsEqualDeep","arrLength","othLength","seen","arrValue","othIndex","has","push","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","isObject","isMasked","isFunction","test","baseIsNative","pop","pairs","LARGE_ARRAY_SIZE","resIndex","symbol","arrayFilter","isIndex","ArrayBuffer","resolve","Ctor","ctorString","isArguments","arguments","isLength","baseUnary","inherited","isArr","isArg","isBuff","isType","skipIndexes","n","iteratee","baseTimes","String","arrayLikeKeys","baseKeys","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","pos","QRUtil","getPatternPosition","i","j","bits","getBCHTypeNumber","mod","Math","floor","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","createBytes","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","text","id","mr","rect","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","num","shift","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","code","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","base64EncodeOutputStream","utf8","charcode","toUTF8Array","extendStatics","__extends","setPrototypeOf","__proto__","__","create","defineProperty","QRCode","isEqual","qrGenerator","React","ReactDOM","_super","props","canvas","createRef","utf16to8","drawRoundedSquare","lineWidth","color","radii","fill","ctx","strokeStyle","rTopLeft","rTopRight","rBottomRight","rBottomLeft","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","stroke","drawPositioningPattern","radiiOuter","radiiInner","colorOuter","colorInner","ceil","outer","inner","isInPositioninZone","zones","some","zone","transformPixelLengthIntoNumberOfCells","pixelLength","isCoordinateInImage","dWidthLogo","dHeightLogo","dxLogo","dyLogo","logoImage","firstRowOfLogo","firstColumnOfLogo","logoWidthInCells","logoHeightInCells","shouldComponentUpdate","nextProps","componentDidMount","update","componentDidUpdate","_a","ecLevel","enableCORS","bgColor","fgColor","logoOpacity","logoOnLoad","removeQrCodeBehindLogo","qrStyle","eyeRadius","eyeColor","logoPaddingStyle","quietZone","logoWidth","logoHeight","logoPadding","qrCode","findDOMNode","current","getContext","canvasSize","scale","window","devicePixelRatio","positioningZones","radius","arc","round","PI","w","h","_b","image_1","Image","crossOrigin","onload","save","dWidthLogoPadding","dHeightLogoPadding","dxLogoPadding","dyLogoPadding","dxCenterLogoPadding","dyCenterLogoPadding","ellipse","globalAlpha","drawImage","restore","src","render","qrSize","createElement","style","ref","defaultProps","Component"],"sourceRoot":""}