PHP 8.2.30
Preview: browser-module.mjs.map Size: 704.82 KB
/home/byroehnu/easepay.easetack.com/node_modules/fontkit/dist/browser-module.mjs.map

{"mappings":"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,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAChD,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAChD,QAAQ;QAAY,QAAQ;QAAY,QAAQ;IAClD;CACD;;;ADvND,IAAI,mCAAa,IAAI,cAAS;IAC5B,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,QAAY;IACZ,QAAY;IACZ,QAAY,IAAI,eAAU,eACxB,IAAI,cAAS,UAAU,CAAA,IAAK,CAAA,GAAA,yCAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,IAChF;QAAE,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,MAAM,CAAC,YAAY;QAAE,WAAW;IAAM;AAEnF;AAEA,IAAI,sCAAgB,IAAI,cAAS;IAC/B,QAAS;IACT,KAAS,IAAI,eAAU,eAAU,IAAI,cAAS,UAAU,YAAY;QAAC,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,YAAY;IAAA;AAC1H;AAEA,IAAI,kCAAY,IAAI,uBAAkB,eAAU;IAC9C,GAAG;QACD,OAAgB;QAChB,cAAgB;QAChB,SAAgB,IAAI,aAAQ,kCAAY;IAC1C;IACA,GAAG;QACD,OAAgB;QAChB,cAAgB;QAChB,SAAgB,IAAI,aAAQ,kCAAY;QACxC,cAAgB;QAChB,UAAgB,IAAI,aAAQ,qCAAe;IAC7C;AACF;IAEA,2CAAe;AAEf,MAAM,8BAAQ;IACZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,gCAAU,OAAO,GAAG,SAAS,MAAM;IACjC,IAAI,UAAU,CAAC;IACf,KAAK,IAAI,UAAU,IAAI,CAAC,OAAO,CAAE;QAC/B,qCAAqC;QACrC,IAAI,WAAW,CAAA,GAAA,wCAAQ,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC;QAE9D,IAAI,YAAY,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,OAAO,UAAU,IAAI,QACpE,WAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU,GAAG,OAAO,CAAC,GAAG;QAG1D,IAAI,YAAY,MACd,WAAW,OAAO,UAAU,GAAG,MAAM,OAAO,UAAU;QAGxD,6DAA6D;QAC7D,IAAI,MAAM,OAAO,MAAM,IAAI,MAAM,iBAAkB,2BAAK,CAAC,OAAO,MAAM,CAAC,IAAI,OAAO,MAAM;QACxF,IAAI,OAAO,CAAC,IAAI,IAAI,MAClB,OAAO,CAAC,IAAI,GAAG,CAAC;QAGlB,IAAI,MAAM,OAAO,CAAC,IAAI;QACtB,IAAI,OAAO,MAAM,IAAI,KACnB,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,IAAK,CAAA,GAAG,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QAGrD,IAAI,OAAO,OAAO,MAAM,KAAK,YAAY,OAAO,GAAG,CAAC,SAAS,KAAK,UAChE,GAAG,CAAC,SAAS,GAAG,OAAO,MAAM;IAEjC;IAEA,IAAI,CAAC,OAAO,GAAG;AACjB;AAEA,gCAAU,SAAS,GAAG;IACpB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG;IACjC,IAAI,CAAC,OAAO,GAAG;IAEf,IAAI,UAAU,EAAE;IAChB,IAAK,IAAI,OAAO,IAAI,CAAC,OAAO,CAAE;QAC5B,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI;QAC3B,IAAI,QAAQ,gBAAgB;QAE5B,QAAQ,IAAI,CAAC;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,QAAQ,4BAAM,OAAO,CAAC;YACtB,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG;YACxB,QAAQ,IAAI,EAAE;QAChB;QAEA,IAAI,QAAQ,kBACV,QAAQ,IAAI,CAAC;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,QAAQ,4BAAM,OAAO,CAAC;YACtB,QAAQ,IAAI,EAAE,CAAC,MAAM;YACrB,QAAQ,IAAI,EAAE;QAChB;IAEJ;IAEA,IAAI,CAAC,OAAO,GAAG;IACf,IAAI,CAAC,KAAK,GAAG,QAAQ,MAAM;IAC3B,IAAI,CAAC,YAAY,GAAG,gCAAU,IAAI,CAAC,IAAI,EAAE,MAAM;AACjD;;;;AE/HA,IAAI,4BAAM,IAAI,uBAAkB,eAAU;IACxC,QAAQ;QACN,eAAwB;QACxB,eAAwB;QACxB,cAAwB;QACxB,QAAwB,IAAI,gBAAW,eAAU;YAC/C;YAAM;YAAe;YAAY;YAAY;YAC7C;YAAM;YAAM;YAAM;YAAgB;SACnC;QACD,iBAAwB;QACxB,iBAAwB;QACxB,mBAAwB;QACxB,mBAAwB;QACxB,mBAAwB;QACxB,mBAAwB;QACxB,qBAAwB;QACxB,qBAAwB;QACxB,gBAAwB;QACxB,oBAAwB;QACxB,cAAwB;QACxB,QAAwB,IAAI,aAAQ,cAAS;QAC7C,aAAwB,IAAI,aAAQ,eAAU;QAC9C,UAAwB,IAAI,cAAS;QACrC,aAAwB,IAAI,gBAAW,eAAU;YAC/C;YAAU;YAAc;YAAY;YAAY;YAChD;YAAQ;YAAW;YAAkB;YAAO;SAC7C;QACD,kBAAwB;QACxB,iBAAwB,cAAW,yCAAyC;IAC9E;IAEA,mFAAmF;IACnF,GAAG,CAAC;IAEJ,GAAG;QACD,cAAoB;QACpB,eAAoB;QACpB,aAAoB;QACpB,WAAoB;QACpB,YAAoB;QACpB,eAAoB,IAAI,aAAQ,eAAU;IAC5C;IAEA,GAAG;QACD,gDAAgD;QAChD,cAAoB;QACpB,eAAoB;QACpB,aAAoB;QACpB,WAAoB;QACpB,YAAoB;QACpB,eAAoB,IAAI,aAAQ,eAAU;QAE1C,SAAoB;QACpB,WAAoB;QACpB,aAAoB;QACpB,WAAoB;QACpB,YAAoB;IACtB;IAEA,GAAG;QACD,cAAoB;QACpB,eAAoB;QACpB,aAAoB;QACpB,WAAoB;QACpB,YAAoB;QACpB,eAAoB,IAAI,aAAQ,eAAU;QAE1C,SAAoB;QACpB,WAAoB;QACpB,aAAoB;QACpB,WAAoB;QACpB,YAAoB;QAEpB,yBAAyB;QACzB,yBAAyB;IAC3B;AACF;AAEA,IAAI,iCAAW,0BAAI,QAAQ;AAC3B,8BAAQ,CAAC,EAAE,GAAG,8BAAQ,CAAC,EAAE,GAAG,8BAAQ,CAAC,EAAE;IAEvC,2CAAe;;;;ICjFf,yBAAyB;AACzB,2CAAe,IAAI,uBAAkB,gBAAW;IAC9C,QAAQ;QACN,aAAoB;QACpB,mBAAoB;QACpB,oBAAoB;QACpB,cAAoB;QACpB,cAAoB;QACpB,cAAoB;QACpB,aAAoB;QACpB,aAAoB,cAAW,2EAA2E;IAC5G;IAEA,GAAG,CAAC;IAEJ,GAAG;QACD,gBAAgB;QAChB,gBAAgB,IAAI,aAAQ,eAAU;QACtC,OAAgB,IAAI,aAAQ,IAAI,cAAS;IAC3C;IAEA,KAAK;QACH,gBAAgB;QAChB,SAAgB,IAAI,aAAQ,cAAS;IACvC;IAEA,GAAG,CAAC;IAEJ,GAAG;QACD,KAAK,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;IACzD;AACF;;;;IC/BA,2DAA2D;AAC3D,2CAAe,IAAI,cAAS;IAC1B,eAAe,IAAI,aAAQ;AAC7B;;;;ICHA,2EAA2E;AAC3E,+EAA+E;AAC/E,qFAAqF;AACrF,2CAAe,IAAI,cAAS;IAC1B,cAAc,IAAI,aAAQ;AAC5B;;;;ACLA,IAAI,6BAAO,IAAI,uBAAkB,yBAAyB;IACxD,GAAG;QACD,SAAS,IAAI,aAAQ;IACvB;IACA,GAAG;QACD,SAAS,IAAI,aAAQ;IACvB;AACF;AAEA,2BAAK,OAAO,GAAG;IACb,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;QAC1C,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IACvC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK;QAEtB,IAAI,CAAC,UAAU,GAAG;IACpB;AACF;AAEA,2BAAK,SAAS,GAAG;IACf,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,UAAU,KAAK,OAAO;QACnD,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IACvC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM;QAEvB,IAAI,CAAC,UAAU,GAAG;IACpB;AACF;IAEA,2CAAe;;;;IC3Bf,qFAAqF;AACrF,2CAAe,IAAI,cAAS;IAC1B,qBAAqB,IAAI,aAAQ;AACnC;;;;ICHA,yBAAyB;AACzB,2CAAe,IAAI,aAAQ,IAAI;;;;;AEDhB,MAAM;IAKnB,cAAc,GAAG,EAAE;QACjB,MAAO,OAAO,CAAC,IAAI,OAAO,CACxB,MAAM,IAAI,MAAM;QAGlB,OAAO,MAAM,IAAI,OAAO,GAAG;IAC7B;IAEA,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,IAAI,UAAU,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,QAAQ,WAAW,IACnB,OAAO,YAAY,KACnB,OAAO,YAAY;QAEvB,IAAI,UAAU,GACZ,OAAO,EAAE;QAGX,IAAI,UAAU,OAAO,SAAS;QAC9B,IAAI;QACJ,IAAI,YAAY,GACd,aAAa;aACR,IAAI,YAAY,GACrB,aAAa;aACR,IAAI,YAAY,GACrB,aAAa;aACR,IAAI,YAAY,GACrB,aAAa;aAEb,MAAM,IAAI,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;QAGzE,IAAI,MAAM,EAAE;QACZ,IAAI,WAAW,OAAO,GAAG,GAAI,AAAC,CAAA,QAAQ,CAAA,IAAK,UAAW;QAEtD,IAAI,QAAQ,WAAW,MAAM,CAAC;QAC9B,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IAAK;YAC9B,IAAI,MAAM,WAAW,MAAM,CAAC;YAE5B,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM;gBACrB,IAAI,MAAM,OAAO,GAAG;gBACpB,OAAO,GAAG,GAAG,WAAW;gBAExB,OAAO,MAAM,GAAG,MAAM;gBACtB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAClC,OAAO,GAAG,GAAG;YACf,OACE,IAAI,IAAI,CAAC;gBACP,QAAQ,WAAW;gBACnB,QAAQ,MAAM;YAChB;YAGF,QAAQ;QACV;QAEA,OAAO,GAAG,GAAG,WAAW;QACxB,OAAO;IACT;IAEA,KAAK,GAAG,EAAE,MAAM,EAAE;QAChB,IAAI,OAAO;QACX,IAAI,IAAI,MAAM,KAAK,GACjB,OAAO;QAGT,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI;QAE5B,+CAA+C;QAC/C,IAAI,SAAS;QACb,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,MAAM,EAAE,IAAK;YACnC,IAAI,OAAO,GAAG,CAAC,EAAE;YACjB,UAAU,KAAK,IAAI,CAAC,MAAM;QAC5B;QAEA,IAAI;QACJ,IAAI,UAAU,MACZ,aAAa;aACR,IAAI,UAAU,QACnB,aAAa;aACR,IAAI,UAAU,UACnB,aAAa;aACR,IAAI,UAAU,YACnB,aAAa;aAEb,MAAM,IAAI,MAAM;QAGlB,QAAQ,IAAI,WAAW,IAAI,KAAM,CAAA,IAAI,MAAM,GAAG,CAAA;QAC9C,QAAQ,SAAS;QAEjB,OAAO;IACT;IAEA,OAAO,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;QAC1B,OAAO,aAAa,CAAC,IAAI,MAAM;QAC/B,IAAI,IAAI,MAAM,KAAK,GACjB;QAGF,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI;QAE5B,+CAA+C;QAC/C,IAAI,QAAQ,EAAE;QACd,IAAI,SAAS;QACb,KAAK,IAAI,QAAQ,IAAK;YACpB,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM;YACxB,MAAM,IAAI,CAAC;YACX,UAAU;QACZ;QAEA,IAAI;QACJ,IAAI,UAAU,MACZ,aAAa;aACR,IAAI,UAAU,QACnB,aAAa;aACR,IAAI,UAAU,UACnB,aAAa;aACR,IAAI,UAAU,YACnB,aAAa;aAEb,MAAM,IAAI,MAAM;QAGlB,oBAAoB;QACpB,OAAO,UAAU,CAAC,WAAW,IAAI;QAEjC,iBAAiB;QACjB,SAAS;QACT,WAAW,MAAM,CAAC,QAAQ;QAE1B,KAAK,IAAI,QAAQ,MAAO;YACtB,UAAU;YACV,WAAW,MAAM,CAAC,QAAQ;QAC5B;QAEA,KAAK,IAAI,QAAQ,IACf,KAAK,MAAM,CAAC,QAAQ,MAAM;QAG5B;IACF;IAjJA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG;IACd;AAgJF;;;;;;AGrJA,MAAM,kCAAY;AAClB,MAAM,qCAAe;IACnB;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IACnC;IAAK;IAAK;IAAK;IAAK;IAAM;IAAM;CACjC;AAED,MAAM,4CAAsB;IAC1B,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;AACP;AAEe,MAAM;IACnB,OAAO,OAAO,MAAM,EAAE,KAAK,EAAE;QAC3B,IAAI,MAAM,SAAS,SAAS,KAC1B,OAAO,QAAQ;QAGjB,IAAI,OAAO,SAAS,SAAS,KAC3B,OAAO,AAAC,CAAA,QAAQ,GAAE,IAAK,MAAM,OAAO,SAAS,KAAK;QAGpD,IAAI,OAAO,SAAS,SAAS,KAC3B,OAAO,CAAE,CAAA,QAAQ,GAAE,IAAK,MAAM,OAAO,SAAS,KAAK;QAGrD,IAAI,UAAU,IACZ,OAAO,OAAO,WAAW;QAG3B,IAAI,UAAU,IACZ,OAAO,OAAO,WAAW;QAG3B,IAAI,UAAU,IAAI;YAChB,IAAI,MAAM;YACV,MAAO,KAAM;gBACX,IAAI,IAAI,OAAO,SAAS;gBAExB,IAAI,KAAK,KAAK;gBACd,IAAI,OAAO,iCAAa;gBACxB,OAAO,kCAAY,CAAC,GAAG;gBAEvB,IAAI,KAAK,IAAI;gBACb,IAAI,OAAO,iCAAa;gBACxB,OAAO,kCAAY,CAAC,GAAG;YACzB;YAEA,OAAO,WAAW;QACpB;QAEA,OAAO;IACT;IAEA,OAAO,KAAK,KAAK,EAAE;QACjB,+DAA+D;QAC/D,0CAA0C;QAC1C,IAAI,MAAM,UAAU,EAClB,QAAQ;QAGV,IAAI,AAAC,CAAA,QAAQ,CAAA,MAAO,OAAO;YACzB,IAAI,MAAM,KAAK;YACf,OAAO,IAAI,KAAK,IAAI,CAAC,AAAC,CAAA,IAAI,MAAM,GAAG,CAAA,IAAK;QAE1C,OAAO,IAAI,QAAQ,SAAS,SAAS,KACnC,OAAO;aAEF,IAAI,OAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,SAAS,MACrE,OAAO;aAEF,IAAI,UAAU,SAAS,SAAS,OACrC,OAAO;aAGP,OAAO;IAEX;IAEA,OAAO,OAAO,MAAM,EAAE,KAAK,EAAE;QAC3B,+DAA+D;QAC/D,iEAAiE;QACjE,IAAI,MAAM,OAAO;QAEjB,IAAI,MAAM,UAAU,EAAE;YACpB,OAAO,UAAU,CAAC;YAClB,OAAO,OAAO,YAAY,CAAC;QAE7B,OAAO,IAAI,AAAC,CAAA,MAAM,CAAA,MAAO,KAAK;YAC5B,OAAO,UAAU,CAAC;YAElB,IAAI,MAAM,KAAK;YACf,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,MAAM,EAAE,KAAK,EAAG;gBACtC,IAAI,KAAK,GAAG,CAAC,EAAE;gBACf,IAAI,KAAK,yCAAmB,CAAC,GAAG,IAAI,CAAC;gBAErC,IAAI,MAAM,IAAI,MAAM,GAAG,GACrB,IAAI,KAAK;qBACJ;oBACL,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;oBACnB,IAAI,KAAK,yCAAmB,CAAC,GAAG,IAAI,CAAC;gBACvC;gBAEA,OAAO,UAAU,CAAC,AAAC,MAAM,IAAM,KAAK;YACtC;YAEA,IAAI,OAAO,iCACT,OAAO,OAAO,UAAU,CAAE,mCAAa;QAG3C,OAAO,IAAI,QAAQ,OAAO,OAAO,KAC/B,OAAO,OAAO,UAAU,CAAC,MAAM;aAE1B,IAAI,OAAO,OAAO,OAAO,MAAM;YACpC,OAAO;YACP,OAAO,UAAU,CAAC,AAAC,CAAA,OAAO,CAAA,IAAK;YAC/B,OAAO,OAAO,UAAU,CAAC,MAAM;QAEjC,OAAO,IAAI,SAAS,OAAO,OAAO,MAAM;YACtC,MAAM,CAAC,MAAM;YACb,OAAO,UAAU,CAAC,AAAC,CAAA,OAAO,CAAA,IAAK;YAC/B,OAAO,OAAO,UAAU,CAAC,MAAM;QAEjC,OAAO,IAAI,UAAU,OAAO,OAAO,OAAO;YACxC,OAAO,UAAU,CAAC;YAClB,OAAO,OAAO,YAAY,CAAC;QAE7B,OAAO;YACL,OAAO,UAAU,CAAC;YAClB,OAAO,OAAO,YAAY,CAAC;QAC7B;IACF;AACF;;;ADhIe,MAAM;IAUnB,eAAe,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;QAC1C,IAAI,MAAM,OAAO,CAAC,OAChB,OAAO,SAAS,GAAG,CAAC,CAAC,IAAI,IAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,KAAK;gBAAC;aAAG;aACxE,IAAI,KAAK,MAAM,IAAI,MACxB,OAAO,KAAK,MAAM,CAAC,QAAQ,KAAK;aAEhC,OAAQ;YACN,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO,QAAQ,CAAC,EAAE;YACpB,KAAK;gBACH,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE;YACtB;gBACE,OAAO;QACX;IAEJ;IAEA,eAAe,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;QAC1C,IAAI,MAAM,OAAO,CAAC,OAChB,OAAO,SAAS,GAAG,CAAC,CAAC,IAAI,IAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE;aAC1E,IAAI,KAAK,MAAM,IAAI,MACxB,OAAO,KAAK,MAAM,CAAC,QAAQ,UAAU;aAChC,IAAI,OAAO,aAAa,UAC7B,OAAO;YAAC;SAAS;aACZ,IAAI,OAAO,aAAa,WAC7B,OAAO;YAAC,CAAC;SAAS;aACb,IAAI,MAAM,OAAO,CAAC,WACvB,OAAO;aAEP,OAAO;YAAC;SAAS;IAErB;IAEA,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,IAAI,MAAM,OAAO,GAAG,GAAG,OAAO,MAAM;QACpC,IAAI,MAAM,CAAC;QACX,IAAI,WAAW,EAAE;QAEjB,2BAA2B;QAC3B,OAAO,gBAAgB,CAAC,KAAK;YAC3B,QAAgB;gBAAE,OAAO;YAAO;YAChC,cAAgB;gBAAE,OAAO,OAAO,GAAG;YAAC;QACtC;QAEA,mBAAmB;QACnB,IAAK,IAAI,OAAO,IAAI,CAAC,MAAM,CAAE;YAC3B,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;YAC5B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE;QAC1B;QAEA,MAAO,OAAO,GAAG,GAAG,IAAK;YACvB,IAAI,IAAI,OAAO,SAAS;YACxB,IAAI,IAAI,IAAI;gBACV,IAAI,MAAM,IACR,IAAI,AAAC,KAAK,IAAK,OAAO,SAAS;gBAGjC,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC1B,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAGzC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,KAAK;gBACrD,IAAI,OAAO;oBACT,IAAI,eAAe,CAAA,GAAA,yBAAiB,GAClC,OAAO,cAAc,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE;yBAErC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;;gBAIpB,WAAW,EAAE;YACf,OACE,SAAS,IAAI,CAAC,CAAA,GAAA,wCAAS,EAAE,MAAM,CAAC,QAAQ;QAE5C;QAEA,OAAO;IACT;IAEA,KAAK,IAAI,EAAE,MAAM,EAAE,kBAAkB,IAAI,EAAE;QACzC,IAAI,MAAM;oBACR;YACA,KAAK;YACL,aAAa;YACb,aAAa,OAAO,WAAW,IAAI;QACrC;QAEA,IAAI,MAAM;QAEV,IAAK,IAAI,KAAK,IAAI,CAAC,MAAM,CAAE;YACzB,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,OAAO,QAAQ,CAAA,GAAA,oBAAM,EAAE,KAAK,KAAK,CAAC,EAAE,GACtC;YAGF,IAAI,WAAW,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK;YACxD,KAAK,IAAI,MAAM,SACb,OAAO,CAAA,GAAA,wCAAS,EAAE,IAAI,CAAC;YAGzB,IAAI,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG;gBAAC,KAAK,CAAC,EAAE;aAAC;YACzD,OAAO,IAAI,MAAM;QACnB;QAEA,IAAI,iBACF,OAAO,IAAI,WAAW;QAGxB,OAAO;IACT;IAEA,OAAO,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAC3B,IAAI,MAAM;YACR,UAAU,EAAE;YACZ,aAAa,OAAO,GAAG;oBACvB;YACA,KAAK;YACL,aAAa;QACf;QAEA,IAAI,aAAa,GAAG,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK;QAEtD,KAAK,IAAI,SAAS,IAAI,CAAC,GAAG,CAAE;YAC1B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,OAAO,QAAQ,CAAA,GAAA,oBAAM,EAAE,KAAK,KAAK,CAAC,EAAE,GACtC;YAGF,IAAI,WAAW,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,KAAK;YAC1D,KAAK,IAAI,MAAM,SACb,CAAA,GAAA,wCAAS,EAAE,MAAM,CAAC,QAAQ;YAG5B,IAAI,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG;gBAAC,KAAK,CAAC,EAAE;aAAC;YACzD,KAAK,IAAI,MAAM,IACb,OAAO,UAAU,CAAC;QAEtB;QAEA,IAAI,IAAI;QACR,MAAO,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAE;YAC9B,IAAI,MAAM,IAAI,QAAQ,CAAC,IAAI;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,IAAI,MAAM;QAC7C;QAEA;IACF;IA/JA,YAAY,MAAM,EAAE,CAAE;QACpB,IAAI,CAAC,GAAG,GAAG;QACX,IAAI,CAAC,MAAM,GAAG,CAAC;QACf,KAAK,IAAI,SAAS,IAAK;YACrB,IAAI,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;YAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG;QACrB;IACF;AAyJF;;;;;AEpKe,MAAM,iDAAmB;IAStC,OAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC,UAAU,GAAG;YAChB,QAAQ,IAAM,QAAQ,CAAC,EAAE;QAC3B;QAEA,OAAO,KAAK,CAAC,OAAO,QAAQ,QAAQ;IACtC;IAEA,OAAO,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;QACzB,IAAI,CAAC,QAAQ;YACX,mDAAmD;YACnD,IAAI,CAAC,UAAU,GAAG;gBAChB,MAAM,IAAM;YACd;YAEA,IAAI,CAAC,IAAI,CAAC,OAAO;YACjB,OAAO;gBAAC,IAAI,0BAAI;aAAG;QACrB;QAEA,IAAI,MAAM;QACV,IAAI,CAAC,UAAU,GAAG;YAChB,QAAQ,CAAC,QAAQ,MAAQ,MAAM;QACjC;QAEA,KAAK,CAAC,OAAO,QAAQ,OAAO;QAC5B,OAAO;YAAC,IAAI,0BAAI;SAAK;IACvB;IAlCA,YAAY,IAAI,EAAE,UAAU,CAAC,CAAC,CAAE;QAC9B,IAAI,QAAQ,IAAI,IAAI,MAClB,QAAQ,IAAI,GAAG;QAGjB,KAAK,CAAC,MAAM,MAAM;IACpB;AA6BF;AAEA,MAAM;IAMJ,UAAU;QACR,OAAO,IAAI,CAAC,GAAG;IACjB;IAPA,YAAY,GAAG,CAAE;QACf,IAAI,CAAC,GAAG,GAAG;QACX,IAAI,CAAC,UAAU,GAAG;IACpB;AAKF;;;;;;AC7CA,MAAM;IACJ,OAAO,OAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QACtC,IAAI,YAAY,SAAS,GAAG;QAE5B,wDAAwD;QACxD,+CAA+C;QAC/C,MAAO,SAAS,MAAM,GAAG,UACvB,SAAS,GAAG;IAEhB;AACF;IAEA,2CAAe,IAAI,CAAA,GAAA,wCAAM,EAAE;IACzB,0FAA0F;IAC1F;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAA+C;KAAS;IAC5F;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAE;IACrF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAE;IACrF;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAK;IACxF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAK;IACxF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAM;IACzF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAE;IACrF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAK;IACxF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAA+C;KAAE;IACrF;QAAC;QAAW;QAAwB;QAA+C;KAAE;IACrF;QAAC;QAAW;QAAwB;QAA+C;KAAE;IACrF;QAAC;QAAW;QAAwB;QAA+C;KAAE;IACrF;QAAC;QAAW;QAAwB;QAA+C;KAAK;IACxF;QAAC;QAAW;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE,IAAI,CAAA,GAAA,wCAAO,GAAG;YAAC,MAAM;QAAO;QAAI;KAAK;CACzF;;;ACtCD,uEAAuE;AACvE,kCAAkC;IAClC,2CAAe;IACb;IAAW;IAAS;IAAU;IAAY;IAAc;IACxD;IAAW;IAAa;IAAc;IAAa;IACnD;IAAY;IAAQ;IAAS;IAAU;IAAU;IAAS;IAAQ;IAClE;IAAO;IAAS;IAAQ;IAAQ;IAAO;IAAS;IAAS;IAAQ;IACjE;IAAa;IAAQ;IAAS;IAAW;IAAY;IAAM;IAAK;IAAK;IACrE;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IACtE;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAe;IACvD;IAAgB;IAAe;IAAc;IAAa;IAAK;IAAK;IACpE;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IACtE;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAa;IAAO;IAC5D;IAAc;IAAc;IAAQ;IAAY;IAAY;IAC5D;IAAU;IAAW;IAAY;IAAe;IAChD;IAAiB;IAAiB;IAAkB;IAAM;IAAM;IAChE;IAAU;IAAa;IAAkB;IAAa;IACtD;IAAkB;IAAgB;IAAiB;IACnD;IAAY;IAAe;IAAgB;IAAS;IAAS;IAC7D;IAAS;IAAU;IAAS;IAAa;IAAY;IAAQ;IAC7D;IAAgB;IAAU;IAAS;IAAU;IAAM;IAAe;IAClE;IAAU;IAAM;IAAgB;IAAM;IAAY;IAAU;IAAU;IACtE;IAAc;IAAe;IAAc;IAAM;IAAa;IAC9D;IAAW;IAAa;IAAS;IAAc;IAAU;IACzD;IAAU;IAAS;IAAiB;IAAe;IAAc;IACjE;IAAO;IAAY;IAAiB;IAAa;IAAU;IAC3D;IAAa;IAAU;IAAS;IAAU;IAAY;IACtD;IAAe;IAAa;IAAU;IAAU;IAAe;IAC/D;IAAU;IAAU;IAAU;IAAe;IAAa;IAC1D;IAAU;IAAU;IAAU;IAAe;IAAa;IAC1D;IAAU;IAAa;IAAU;IAAU;IAAe;IAC1D;IAAU;IAAS;IAAU;IAAY;IAAU;IACnD;IAAa;IAAU;IAAU;IAAe;IAAa;IAC7D;IAAU;IAAU;IAAe;IAAa;IAAU;IAC1D;IAAU;IAAU;IAAe;IAAa;IAAU;IAC1D;IAAa;IAAU;IAAe;IACtC;IAAkB;IAAkB;IAAkB;IACtD;IAAqB;IAAsB;IAC3C;IAAkB;IAAgB;IAAe;IACjD;IAAiB;IAAgB;IAAgB;IACjD;IAAiB;IAAiB;IAAgB;IAClD;IAAuB;IAAkB;IAAiB;IAC1D;IAAa;IAAgB;IAAa;IAAa;IACvD;IAAa;IAAa;IAAa;IAAa;IACpD;IAAa;IAAa;IAAM;IAAO;IAAO;IAC9C;IAAsB;IAAmB;IAAkB;IAC3D;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAC5D;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAC5D;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAC5D;IAAU;IAAU;IAAU;IAAU;IAAU;IAClD;IAAa;IAAU;IAAc;IAAmB;IACxD;IAAe;IAAe;IAAe;IAAiB;IAC9D;IAAc;IAAkB;IAAe;IAC/C;IAAkB;IAAe;IAAa;IAC9C;IAAqB;IAAa;IAAgB;IAClD;IAAgB;IAAY;IAAa;IAAgB;IACzD;IAAgB;IAAe;IAAiB;IAChD;IAAgB;IAAgB;IAAe;IAC/C;IAAiB;IAAgB;IAAgB;IACjD;IAAiB;IAAiB;IAAgB;IAClD;IAAkB;IAAkB;IAAiB;IACrD;IAAe;IAAoB;IAAe;IAClD;IAAc;IAAW;IAAiB;IAAe;IACzD;IAAoB;IAAkB;IAAe;IACrD;IAAoB;IAAkB;IAAY;IAClD;IAAe;IAAe;IAAoB;IAClD;IAAkB;IAAW;IAAe;IAAe;IAC3D;IAAoB;IAAkB;IAAe;IACrD;IAAkB;IAAW;IAAW;IAAW;IAAW;IAC9D;IAAQ;IAAQ;IAAS;IAAU;IAAW;IAAS;CACxD;;;ACtEM,IAAI,4CAAmB;IAC5B;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAC5G;IAAI;IAAI;IAAI;IAAI;IAAS;IAAU;IAAY;IAAc;IAAU;IAAW;IAAa;IAC/F;IAAa;IAAc;IAAY;IAAQ;IAAS;IAAU;IAAU;IAAS;IAAQ;IAAO;IACpG;IAAS;IAAQ;IAAQ;IAAO;IAAS;IAAS;IAAQ;IAAS;IAAa;IAAQ;IAAS;IACjG;IAAY;IAAM;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC5G;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAe;IAAa;IAAgB;IAAe;IAC9F;IAAa;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC5G;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAa;IAAO;IAAc;IAAc;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAC1G;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IACpG;IAAc;IAAQ;IAAY;IAAY;IAAO;IAAU;IAAW;IAAY;IACtF;IAAgB;IAAiB;IAAiB;IAAkB;IAAM;IAAM;IAAI;IAAU;IAC9F;IAAa;IAAkB;IAAI;IAAa;IAAU;IAAkB;IAAgB;IAC5F;IAAkB;IAAY;IAAe;IAAI;IAAgB;IAAI;IAAS;IAAS;IAAc;IACrG;IAAU;IAAS;IAAa;IAAY;IAAI;IAAQ;IAAW;IAAI;IAAgB;IAAU;IACjG;IAAU;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAM;IAAI;IAAe;IAAI;IAAI;IAC3G;IAAI;IAAU;IAAU;IAAM;IAAgB;IAAI;IAAI;IAAI;IAAI;IAAI;IAAM;IAAI;IAAI;IAAI;IAAY;IAAI;IACpG;IAAU;IAAU;IAAM;CAC3B;AAEM,IAAI,4CAAiB;IAC1B;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAC5G;IAAI;IAAI;IAAI;IAAI;IAAS;IAAe;IAAqB;IAAI;IAAkB;IACnF;IAAkB;IAAc;IAAqB;IAAsB;IAAkB;IAC7F;IAAS;IAAU;IAAU;IAAY;IAAgB;IAAe;IAAe;IACvF;IAAgB;IAAgB;IAAe;IAAiB;IAAiB;IAAgB;IACjG;IAAa;IAAiB;IAAuB;IAAkB;IAAiB;IAAI;IAC5F;IAAa;IAAgB;IAAa;IAAa;IAAI;IAAI;IAAa;IAAI;IAAI;IAAa;IACjG;IAAa;IAAa;IAAI;IAAI;IAAa;IAAa;IAAa;IAAI;IAAM;IAAM;IAAM;IAAO;IACtG;IAAqB;IAAI;IAAsB;IAAmB;IAAkB;IAAc;IAClG;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IACpG;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IACpG;IAAU;IAAU;IAAU;IAAiB;IAAa;IAAU;IAAc;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAC5G;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IACxG;IAAmB;IAAgB;IAAe;IAAI;IAAI;IAAe;IAAe;IACxF;IAAc;IAAc;IAAI;IAAkB;IAAI;IAAI;IAAe;IAAI;IAAI;IAAc;IAC/F;IAAI;IAAI;IAAe;IAAa;IAAgB;IAAI;IAAI;IAAI;IAAc;IAAW;IACzF;IAAqB;IAAa;IAAgB;IAAe;IAAgB;IAAY;IAAa;IAC1G;IAAI;IAAgB;IAAe;IAAe;IAAiB;IAAgB;IACnF;IAAe;IAAiB;IAAiB;IAAgB;IAAgB;IAAe;IAChG;IAAiB;IAAgB;IAAgB;IAAe;IAAiB;IACjF;IAAgB;IAAgB;IAAkB;IAAkB;IAAiB;IACrF;IAAe;IAAoB;IAAe;IAAkB;IAAc;IAAW;IAC7F;IAAe;IAAe;IAAoB;IAAkB;IAAe;IACnF;IAAoB;IAAkB;IAAY;IAAe;IAAe;IAChF;IAAoB;IAAe;IAAkB;IAAW;IAAe;IAAe;IAC9F;IAAoB;IAAkB;IAAe;IAAc;CACpE;;;AC/CM,IAAI,4CAAkB;IAC3B;IAAW;IAAS;IAAU;IAAY;IAAc;IACxD;IAAW;IAAa;IAAc;IAAa;IACnD;IAAY;IAAQ;IAAS;IAAU;IAAU;IAAS;IAC1D;IAAO;IAAO;IAAS;IAAQ;IAAQ;IAAO;IAAS;IACvD;IAAQ;IAAS;IAAa;IAAQ;IAAS;IAAW;IAC1D;IAAM;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAClE;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC5D;IAAe;IAAa;IAAgB;IAAe;IAC3D;IAAa;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IACpE;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IACjE;IAAa;IAAO;IAAc;IAAc;IAAc;IAC9D;IAAY;IAAY;IAAO;IAAU;IAAW;IACpD;IAAe;IAAgB;IAAiB;IAChD;IAAkB;IAAM;IAAM;IAAU;IAAU;IAClD;IAAkB;IAAa;IAAU;IACzC;IAAgB;IAAiB;IAAkB;IACnD;IAAe;IAAgB;IAAS;IAAS;IAAc;IAC/D;IAAU;IAAS;IAAa;IAAY;IAAQ;IACpD;IAAgB;IAAU;IAAS;IAAU;IAAM;IACnD;IAAU;IAAU;IAAM;IAAgB;IAAM;IAAY;IAC5D;IAAU;IAAM;IAAc;IAAe;IAAc;IAC3D;IAAa;IAAO;IAAW;IAAa;IAAS;IACrD;IAAU;IAAa;IAAU;IAAS;IAAiB;IAC3D;IAAc;IAAS;IAAO;IAAY;IAAiB;IAC3D;IAAU;IAAe;IAAa;IAAU;IAAS;IACzD;IAAY;IAAU;IAAe;IAAa;IAAU;IAC5D;IAAe;IAAa;IAAU;IAAU;IAAU;IAC1D;IAAa;IAAU;IAAU;IAAU;IAAU;IACrD;IAAa;IAAU;IAAU;IAAa;IAAU;IACxD;IAAe;IAAa;IAAU;IAAS;IAAU;IACzD;IAAU;IAAe;IAAa;IAAU;IAAU;IAC1D;IAAa;IAAU;IAAU;IAAU;IAAe;IAC1D;IAAU;IAAU;IAAU;IAAU;IAAe;IACvD;IAAU;IAAU;IAAa;CAClC;AAEM,IAAI,4CAAgB;IACzB;IAAW;IAAS;IAAe;IAAqB;IACxD;IAAkB;IAAkB;IAAc;IAClD;IAAsB;IAAkB;IAAkB;IAC1D;IAAU;IAAU;IAAY;IAAgB;IAChD;IAAe;IAAiB;IAAgB;IAChD;IAAe;IAAiB;IAAiB;IACjD;IAAS;IAAa;IAAiB;IACvC;IAAkB;IAAiB;IAAa;IAChD;IAAgB;IAAa;IAAa;IAAa;IACvD;IAAa;IAAa;IAAa;IAAa;IACpD;IAAa;IAAM;IAAM;IAAM;IAAO;IAAO;IAC7C;IAAsB;IAAmB;IAAkB;IAC3D;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAC5D;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAC5D;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAC5D;IAAU;IAAU;IAAU;IAAU;IAAU;IAClD;IAAa;IAAU;IAAc;IAAmB;IACxD;IAAe;IAAe;IAAe;IAC7C;IAAc;IAAc;IAAkB;IAC9C;IAAc;IAAkB;IAAe;IAC/C;IAAgB;IAAc;IAAW;IACzC;IAAqB;IAAa;IAAgB;IAClD;IAAgB;IAAY;IAAa;IAAgB;IACzD;IAAe;IAAiB;IAAgB;IAChD;IAAe;IAAiB;IAAiB;IACjD;IAAgB;IAAe;IAAe;IAC9C;IAAgB;IAAgB;IAAe;IAC/C;IAAiB;IAAgB;IAAgB;IACjD;IAAkB;IAAiB;IAAe;IAClD;IAAoB;IAAe;IAAkB;IACrD;IAAW;IAAiB;IAAe;IAC3C;IAAoB;IAAkB;IAAe;IACrD;IAAoB;IAAkB;IAAY;IAClD;IAAe;IAAe;IAAoB;IAClD;IAAkB;IAAW;IAAe;IAAe;IAC3D;IAAoB;IAAkB;IAAe;IACrD;CACD;AAEM,IAAI,4CAAsB;IAC/B;IAAW;IAAS;IAAkB;IACtC;IAAqB;IAAsB;IAC3C;IAAkB;IAAS;IAAU;IAAU;IAC/C;IAAgB;IAAe;IAAe;IAC9C;IAAgB;IAAgB;IAAe;IAC/C;IAAiB;IAAgB;IAAS;IAAa;IACvD;IAAuB;IAAkB;IAAa;IACtD;IAAgB;IAAa;IAAa;IAAa;IACvD;IAAa;IAAa;IAAa;IAAa;IACpD;IAAa;IAAM;IAAM;IAAM;IAAO;IAAO;IAC7C;IAAsB;IAAkB;IAAiB;IACzD;IAAU;IAAgB;IAAc;IAAkB;IAC1D;IAAW;IAAiB;IAAa;IAAgB;IACzD;IAAgB;IAAY;IAAa;IAAgB;IACzD;IAAe;IAAiB;IAAgB;IAChD;IAAe;IAAiB;IAAiB;IACjD;IAAgB;IAAe;IAAe;IAC9C;IAAgB;IAAgB;IAAe;IAC/C;IAAiB;IAAgB;IAAgB;IACjD;IAAkB;CACnB;;;;AEhGD,0BAA0B;AAC1B,0BAA0B;AAC1B,0BAA0B;AAE1B,IAAI,qCAAe,IAAI,cAAS;IAC9B,UAAkB,IAAI,gBAAW;IACjC,iBAAkB;IAClB,cAAkB;IAClB,gBAAkB,IAAI,aAAQ,eAAU;AAC1C;AAEA,IAAI,sCAAgB,IAAI,cAAS;IAC/B,KAAU,IAAI,cAAS;IACvB,SAAU,IAAI,eAAU,eAAU,oCAAc;QAAE,MAAM;IAAS;AACnE;AAEA,IAAI,+BAAS,IAAI,cAAS;IACxB,gBAAgB,IAAI,eAAU,eAAU;IACxC,OAAgB;IAChB,gBAAgB,IAAI,aAAQ,qCAAe;AAC7C;AAEA,IAAI,qCAAe,IAAI,cAAS;IAC9B,KAAQ,IAAI,cAAS;IACrB,QAAQ,IAAI,eAAU,eAAU,8BAAQ;QAAE,MAAM;IAAS;AAC3D;AAEO,IAAI,4CAAa,IAAI,aAAQ,oCAAc;AAElD,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AAEzB,IAAI,sCAAgB,IAAI,cAAS;IAC/B,SAAY;IACZ,QAAY;AACd;AAEO,IAAI,2CAAU,IAAI,cAAS;IAChC,eAAoB,IAAI,eAAU,eAAU;IAC5C,aAAoB;IACpB,mBAAoB,IAAI,aAAQ,eAAU;AAC5C;AAEA,IAAI,sCAAgB,IAAI,cAAS;IAC/B,KAAU,IAAI,cAAS;IACvB,SAAU,IAAI,eAAU,eAAU,0CAAS;QAAE,MAAM;IAAS;AAC9D;AAEO,IAAI,4CAAc,IAAI,aAAQ,qCAAe;AAEpD,IAAI,oCAAc,IAAI,cAAS;IAC7B,oBAAoB;IACpB,OAAO,IAAI,gBAAW,cAAS;QAC7B;QAAe;QAAoB;QACnC;QAAe;KAChB;AACH;AAEO,SAAS,0CAAW,QAAQ;IACjC,IAAI,SAAS,IAAI,cAAS;QACxB,YAAoB;QACpB,OAAoB;QACpB,eAAoB;QACpB,WAAoB,IAAI,aAAQ,IAAI,eAAU,eAAU,WAAW;QACnE,kBAAoB,IAAI,gBAAW,eAAU,CAAA,IAAK,EAAE,KAAK,CAAC,KAAK,CAAC,mBAAmB;IACrF;IAEA,OAAO,IAAI,iBAAY,IAAI,eAAU,eAAU,SAAS;AAC1D;AAEA,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AAEnB,IAAI,oCAAc,IAAI,cAAS;IAC7B,OAAoB;IACpB,KAAoB;IACpB,oBAAoB;AACtB;AAEO,IAAI,2CAAW,IAAI,uBAAkB,eAAU;IACpD,GAAG;QACD,YAAc;QACd,QAAc,IAAI,aAAQ,eAAU;IACtC;IACA,GAAG;QACD,YAAc;QACd,cAAc,IAAI,aAAQ,mCAAa;IACzC;AACF;AAEA,2BAA2B;AAC3B,2BAA2B;AAC3B,2BAA2B;AAE3B,IAAI,yCAAmB,IAAI,cAAS;IAClC,OAAQ;IACR,KAAQ;IACR,OAAQ;AACV;AAEO,IAAI,4CAAW,IAAI,uBAAkB,eAAU;IACpD,GAAG;QACD,YAAkB;QAClB,YAAkB;QAClB,iBAAkB,IAAI,aAAQ,eAAU;IAC1C;IACA,GAAG;QACD,iBAAkB;QAClB,kBAAkB,IAAI,aAAQ,wCAAkB;IAClD;AACF;AAMO,IAAI,4CAAS,IAAI,cAAS;IAC/B,GAAG;IACH,GAAG;IACH,aAAa;AACf;AAEA,+CAA+C;AAC/C,+CAA+C;AAC/C,+CAA+C;AAE/C,IAAI,qCAAe,IAAI,cAAS;IAC9B,eAAoB;IACpB,iBAAoB;AACtB;AAEA,IAAI,6BAAO,IAAI,cAAS;IACtB,YAAgB;IAChB,aAAgB;IAChB,OAAgB,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,UAAU,GAAG;IAC1D,eAAgB,IAAI,aAAQ,oCAAc;AAC5C;AAEA,IAAI,gCAAU,IAAI,aAAQ,IAAI,eAAU,eAAU,6BAAO;AAEzD,IAAI,kCAAY,IAAI,cAAS;IAC3B,YAAgB;IAChB,aAAgB;IAChB,SAAgB,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,UAAU,GAAG;IAC1D,eAAgB,IAAI,aAAQ,oCAAc;AAC5C;AAEA,IAAI,iCAAW,IAAI,aAAQ,IAAI,eAAU,eAAU,kCAAY;AAExD,IAAI,4CAAU,IAAI,uBAAkB,eAAU;IACnD,GAAG;QACD,UAAe,IAAI,eAAU,eAAU;QACvC,cAAe;QACf,UAAe,IAAI,aAAQ,IAAI,eAAU,eAAU,gCAAU;IAC/D;IACA,GAAG;QACD,UAAe,IAAI,eAAU,eAAU;QACvC,UAAe,IAAI,eAAU,eAAU;QACvC,aAAe;QACf,UAAe,IAAI,aAAQ,IAAI,eAAU,eAAU,iCAAW;IAChE;IACA,GAAG;QACD,YAAe;QACf,aAAe;QACf,WAAe,IAAI,aAAQ,IAAI,eAAU,eAAU,2CAAW;QAC9D,eAAe,IAAI,aAAQ,oCAAc;IAC3C;AACF;AAEA,wDAAwD;AACxD,wDAAwD;AACxD,wDAAwD;AAExD,IAAI,kCAAY,IAAI,cAAS;IAC3B,qBAAsB;IACtB,WAAsB,IAAI,aAAQ,eAAU;IAC5C,iBAAsB;IACtB,OAAsB,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,eAAe,GAAG;IACrE,qBAAsB;IACtB,WAAsB,IAAI,aAAQ,eAAU;IAC5C,aAAsB;IACtB,eAAsB,IAAI,aAAQ,oCAAc;AAClD;AAEA,IAAI,qCAAe,IAAI,aAAQ,IAAI,eAAU,eAAU,kCAAY;AAE5D,IAAI,4CAAkB,IAAI,uBAAkB,eAAU;IAC3D,GAAG;QACD,UAAoB,IAAI,eAAU,eAAU;QAC5C,YAAoB;QACpB,eAAoB,IAAI,aAAQ,IAAI,eAAU,eAAU,qCAAe;IACzE;IAEA,GAAG;QACD,UAAoB,IAAI,eAAU,eAAU;QAC5C,mBAAoB,IAAI,eAAU,eAAU;QAC5C,eAAoB,IAAI,eAAU,eAAU;QAC5C,mBAAoB,IAAI,eAAU,eAAU;QAC5C,YAAoB;QACpB,eAAoB,IAAI,aAAQ,IAAI,eAAU,eAAU,qCAAe;IACzE;IAEA,GAAG;QACD,qBAAwB;QACxB,mBAAwB,IAAI,aAAQ,IAAI,eAAU,eAAU,2CAAW;QACvE,iBAAwB;QACxB,eAAwB,IAAI,aAAQ,IAAI,eAAU,eAAU,2CAAW;QACvE,qBAAwB;QACxB,mBAAwB,IAAI,aAAQ,IAAI,eAAU,eAAU,2CAAW;QACvE,aAAwB;QACxB,eAAwB,IAAI,aAAQ,oCAAc;IACpD;AACF;;;;ADrNA;;mBAEmB,GAEnB,IAAI,gCAAU,IAAI,aAAQ,IAAI,MAAM;AACpC,IAAI,8CAAwB,IAAI,cAAS;IACvC,YAAY;IACZ,WAAW;IACX,UAAU;AACZ;AAEA,IAAI,4CAAsB,IAAI,cAAS;IACrC,WAAW;IACX,aAAa;IACb,kBAAkB,IAAI,aAAQ,IAAI,aAAQ,6CAAuB,cAAc;AACjF;AAEA,IAAI,iCAAW,IAAI,cAAS;IAC1B,aAAa,IAAI,aAAQ,cAAS,CAAA,IAAK,EAAE,MAAM,CAAC,eAAe;IAC/D,cAAc,IAAI,aAAQ,aAAQ,CAAA,IAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,EAAE,MAAM,CAAC,eAAe;IAC3F,QAAQ,CAAA,IAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,YAAY;AAClD;AAEA,IAAI,0CAAoB,IAAI,cAAS;IACnC,WAAW;IACX,iBAAiB;IACjB,kBAAkB;IAClB,eAAe,IAAI,aAAQ,eAAU;IACrC,WAAW,IAAI,aAAQ,gCAAU;AACnC;AAEO,IAAI,4CAAqB,IAAI,cAAS;IAC3C,QAAQ;IACR,qBAAqB,IAAI,eAAU,eAAU;IAC7C,oBAAoB;IACpB,mBAAmB,IAAI,aAAQ,IAAI,eAAU,eAAU,0CAAoB;AAC7E;AAEA;;sBAEsB,GAEtB,IAAI,uCAAiB,IAAI,uBAAkB,eAAU;IACnD,GAAG;QACD,WAAW;QACX,WAAW;QACX,qBAAqB;QACrB,qBAAqB;IACvB;AACF;AAEA,IAAI,qCAAe,IAAI,cAAS;IAC9B,gBAAgB;IAChB,gBAAgB,IAAI,aAAQ,IAAI,eAAU,eAAU,uCAAiB;AACvE;AAEA,IAAI,uDAAiC,IAAI,cAAS;IAChD,cAAc;IACd,uBAAuB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAM,GAAG;QAAC,MAAM;IAAQ;AACzE;AAEA,IAAI,iDAA2B,IAAI,cAAS;IAC1C,SAAS;IACT,mBAAmB;IACnB,eAAe,IAAI,aAAQ,sDAAgC;AAC7D;AAEA,IAAI,+CAAyB,IAAI,cAAS;IACxC,cAAc,IAAI,eAAU,eAAU,oCAAc;QAAC,MAAM;IAAQ;IACnE,0BAA0B,IAAI,eAAU,eAAU,gDAA0B;QAAC,MAAM;IAAQ;AAC7F;AAEO,IAAI,4CAAoB,IAAI,cAAS;IAC1C,cAAc;IACd,cAAc;IACd,6BAA6B;IAC7B,yBAAyB,IAAI,aAAQ,8CAAwB;AAC/D;;;ARrEA,0DAA0D;AAC1D,4CAA4C;AAC5C,MAAM;IAMJ,OAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,EACjC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAGxC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,QAAQ;IAC1C;IAEA,KAAK,KAAK,EAAE,GAAG,EAAE;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;IAC/B;IAEA,OAAO,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;QACzB,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QACvC,IAAI,UAAU,IACZ,OAAO;QAGT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,OAAO;IACzC;IAxBA,YAAY,aAAa,EAAE,IAAI,CAAE;QAC/B,IAAI,CAAC,aAAa,GAAG;QACrB,IAAI,CAAC,IAAI,GAAG;IACd;AAsBF;AAEA,MAAM,iDAA2B;IAK/B,OAAO,MAAM,EAAE;QACb,OAAO,aAAQ,MAAM,CAAC,UAAU;IAClC;IANA,aAAc;QACZ,KAAK,CAAC;IACR;AAKF;AAEA,IAAI,+BAAS,IAAI,cAAS;IACxB,OAAO;IACP,OAAO;AACT;AAEA,IAAI,+BAAS,IAAI,cAAS;IACxB,OAAO;IACP,OAAO;AACT;AAEA,IAAI,0CAAoB,IAAI,uBAAkB,IAAI,4CAAsB;IACtE,GAAG;QACD,QAAQ;QACR,OAAO,IAAI,aAAQ,cAAS;IAC9B;IAEA,GAAG;QACD,SAAS;QACT,QAAQ,IAAI,aAAQ,8BAAQ;IAC9B;AAGF;AAEA,IAAI,oCAAc,IAAI,mCAAa;IAAE,CAAA,GAAA,yCAAe;IAAG,CAAA,GAAA,yCAAa;CAAG,EAAE,IAAI,CAAA,GAAA,wCAAS,EAAE,yCAAmB;IAAE,MAAM;AAAK;AAExH,6CAA6C;AAC7C,0CAA0C;AAC1C,MAAM,yCAAmB;IACvB,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,IAAI,SAAS,CAAA,GAAA,oBAAY,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ;QAChD,IAAI,QAAQ;QACZ,IAAI,MAAM,EAAE;QACZ,MAAO,QAAQ,OAAQ;YACrB,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YACrC,MAAM,MAAM,GAAG;YACf,SAAS,MAAM,KAAK,GAAG;YACvB,IAAI,IAAI,CAAC;QACX;QAEA,OAAO;IACT;AACF;AAEA,IAAI,yCAAmB,IAAI,uBAAkB,cAAS;IACpD,GAAG;QACD,QAAQ,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG;IACnE;IAEA,GAAG;QACD,QAAQ,IAAI,iCAAW,8BAAQ,CAAA,IAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG;IACpE;IAEA,GAAG;QACD,QAAQ,IAAI,iCAAW,8BAAQ,CAAA,IAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG;IACpE;AACF;AAEA,IAAI,mCAAa,IAAI,mCAAa;IAAE,CAAA,GAAA,yCAAc;IAAG,CAAA,GAAA,yCAAY;IAAG,CAAA,GAAA,yCAAkB;CAAG,EAAE,IAAI,CAAA,GAAA,wCAAS,EAAE,wCAAkB;IAAC,MAAM;AAAI;AAEvI,IAAI,iCAAW,IAAI,cAAS;IAC1B,OAAO;IACP,IAAI;AACN;AAEA,IAAI,iCAAW,IAAI,cAAS;IAC1B,OAAO;IACP,IAAI;AACN;AAEA,IAAI,iCAAW,IAAI,uBAAkB,cAAS;IAC5C,GAAG;QACD,KAAK,IAAI,aAAQ,cAAS,CAAA,IAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;IAC5D;IAEA,GAAG;QACD,SAAS;QACT,QAAQ,IAAI,aAAQ,gCAAU;QAC9B,UAAU;IACZ;IAEA,GAAG;QACD,SAAS;QACT,QAAQ,IAAI,aAAQ,gCAAU;QAC9B,UAAU;IACZ;AACF;AAEA,IAAI,4BAAM,IAAI,CAAA,GAAA,wCAAS,EAAE,CAAA,GAAA,wCAAa;AACtC,MAAM;IACJ,OAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/B,OAAO,MAAM,GAAG,QAAQ,CAAC,EAAE;QAC3B,OAAO,0BAAI,MAAM,CAAC,QAAQ,QAAQ;YAAC,QAAQ,CAAC,EAAE;SAAC;IACjD;IAEA,KAAK,IAAI,EAAE,GAAG,EAAE;QACd,OAAO;YAAC,CAAA,GAAA,wCAAa,EAAE,IAAI,CAAC,MAAM,KAAK;YAAQ,0BAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SAAC;IACxE;IAEA,OAAO,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;QACxB,OAAO;YAAC,CAAA,GAAA,wCAAa,EAAE,IAAI,CAAC,MAAM,KAAK;YAAQ,0BAAI,MAAM,CAAC,QAAQ,MAAM,IAAI,CAAC,EAAE;SAAC;IAClF;AACF;AAEA,IAAI,iCAAW,IAAI,CAAA,GAAA,wCAAM,EAAE;IACzB,mFAAmF;IACnF;QAAC;QAAW;QAAwB,IAAI;QAAoC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;YAAC;YAAO;YAAG;YAAG;YAAO;YAAG;SAAE;KAAC;IACvG;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAE;CAC/E;AAED,IAAI,mCAAa,IAAI,CAAA,GAAA,wCAAM,EAAE;IAC3B,mFAAmF;IACnF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;YAAC;YAAO;YAAO;SAAS;QAAgB;KAAK;IAEjF;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAM;IAClF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAE;IAC9E;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAG;IAC/E;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAE;IAC9E;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAE;IAC9E;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;YAAC;YAAO;YAAG;YAAG;YAAO;YAAG;SAAE;KAAC;IACvG;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC;YAAC;YAAG;YAAG;YAAG;SAAE;KAAC;IACzF;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;KAAE;IAC9E;QAAC;QAAW;QAAwB;QAAwC;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC,CAAA,GAAA,yCAAc;KAAE;IAC5F;QAAC;QAAW;QAAwB;QAAwC,CAAA,GAAA,yCAAe;KAAE;IAC7F;QAAC;QAAW;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE,IAAI,CAAA,GAAA,wCAAO;QAAc;KAAK;IACjF;QAAC;QAAW;QAAwB,IAAI;QAAoC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IAEjF,oBAAoB;IACpB;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAE;IAC9E;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAE;IAC9E;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAE;IAC9E;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE;QAAyB;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE,IAAI,CAAA,GAAA,wCAAO,EAAE;QAAY;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB;QAAwC;KAAK;CAClF;AAED,IAAI,uCAAiB,IAAI,cAAS;IAChC,QAAQ;IACR,oBAAoB,CAAA,GAAA,yCAAiB;AACvC;AAEA,IAAI,oCAAc,IAAI,CAAA,GAAA,wCAAM,EAAE;IAC5B;QAAC;YAAC;YAAI;SAAE;QAAI;QAAwB;QAAwC;YAAC;YAAO;YAAG;YAAG;YAAO;YAAG;SAAE;KAAC;IACvG;QAAC;QAAW;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE,IAAI,CAAA,GAAA,wCAAO;QAAc;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE;QAAyB;KAAK;IACjF;QAAC;YAAC;YAAI;SAAG;QAAG;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE,IAAI,CAAA,GAAA,wCAAO,EAAE;QAAY;KAAK;IACjF;QAAC;QAAW;QAAwB,IAAI,CAAA,GAAA,wCAAS,EAAE;QAAyB;KAAK;IACjF;QAAC;QAAW;QAAwB;QAAwC;KAAI;CACjF;AAED,IAAI,+BAAS,IAAI,uBAAkB,gBAAW;IAC5C,GAAG;QACD,SAAoB;QACpB,SAAoB;QACpB,WAAoB,IAAI,CAAA,GAAA,wCAAO,EAAE,IAAI,cAAS;QAC9C,cAAoB,IAAI,CAAA,GAAA,wCAAO,EAAE;QACjC,aAAoB,IAAI,CAAA,GAAA,wCAAO,EAAE,IAAI,cAAS;QAC9C,iBAAoB,IAAI,CAAA,GAAA,wCAAO;IACjC;IAEA,GAAG;QACD,SAAoB;QACpB,QAAoB;QACpB,SAAoB;QACpB,iBAAoB,IAAI,CAAA,GAAA,wCAAO;IACjC;AACF;IAEA,2CAAe;;;;;AFtOf,MAAM;IAMJ,OAAO,OAAO,MAAM,EAAE;QACpB,OAAO,IAAI,8BAAQ;IACrB;IAEA,SAAS;QACP,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG;QAC3B,IAAI,MAAM,CAAA,GAAA,wCAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QACnC,IAAK,IAAI,OAAO,IAAK;YACnB,IAAI,MAAM,GAAG,CAAC,IAAI;YAClB,IAAI,CAAC,IAAI,GAAG;QACd;QAEA,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG;YACpB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,GAC/B,MAAM,IAAI,MAAM;YAGlB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE;QACrC;QAEA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;QACrC,OAAO,IAAI;IACb;IAEA,OAAO,GAAG,EAAE;QACV,IAAI,IAAI,CAAC,OAAO,IAAI,GAClB,OAAO;QAGT,IAAI,MAAM,CAAA,GAAA,wCAAc,EAAE,MAAM,EAC9B,OAAO,CAAA,GAAA,wCAAc,CAAC,CAAC,IAAI;QAG7B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA,GAAA,wCAAc,EAAE,MAAM,CAAC;IACvD;IAEA,IAAI,iBAAiB;QACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GACjB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;QAG1B,OAAO;IACT;IAEA,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;IAC1C;IAEA,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;IAC5C;IAEA,cAAc,KAAK,EAAE;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;IACtE;IAEA,aAAa,GAAG,EAAE;QAChB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,OAAO,IAAI,GAClB,OAAO;QAGT,yCAAyC;QACzC,IAAI,IAAI,CAAC,SAAS,EAChB,OAAO;QAGT,IAAI,WAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO;QAC9B,IAAI,MAAM,OAAO,CAAC,UAChB,OAAO,OAAO,CAAC,IAAI;QAGrB,IAAI,QAAQ,GACV,OAAO;QAGT,OAAO;QAEP,OAAQ,QAAQ,OAAO;YACrB,KAAK;gBACH,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAM,CAAC,IAAI;YAExC,KAAK;YACL,KAAK;gBACH,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,IAAK;oBAC9C,IAAI,QAAQ,QAAQ,MAAM,CAAC,EAAE;oBAC7B,IAAI,MAAM,MAAM,IAAI,OAAO,OAAO,MAAM,MAAM,GAAG,MAAM,KAAK,EAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,GAAI,CAAA,MAAM,MAAM,MAAM,AAAD;gBAEvD;gBACA;QACJ;QAEA,OAAO;IACT;IAEA,WAAW,GAAG,EAAE;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxB,OAAO;QAGT,OAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;YACnC,KAAK;gBACH,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI;YAEvC,KAAK;YACL,KAAK;gBACH,IAAI,UAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;gBACtC,IAAI,MAAM;gBACV,IAAI,OAAO,OAAO,MAAM,GAAG;gBAE3B,MAAO,OAAO,KAAM;oBAClB,IAAI,MAAM,AAAC,MAAM,QAAS;oBAE1B,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EACzB,OAAO,MAAM;yBACR,IAAI,MAAM,QAAQ,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EACnD,MAAM,MAAM;yBAEZ,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE;gBAEzB;YACF;gBACE,MAAM,IAAI,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChF;IACF;IAEA,oBAAoB,GAAG,EAAE;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;YACzB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;YAGzC,OAAO;QACT;QAEA,IAAI,IAAI,CAAC,OAAO,GAAG,GACjB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;QAG7B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;IACxC;IApJA,YAAY,MAAM,CAAE;QAClB,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,MAAM;IACb;AAkJF;IAEA,2CAAe;;;;AY5Jf,IAAI,uCAAiB,IAAI,cAAS;IAChC,YAAc;IACd,aAAc;AAChB;IAEA,2CAAe,IAAI,cAAS;IAC1B,cAAwB;IACxB,cAAwB;IACxB,oBAAwB;IACxB,uBAAwB;IACxB,SAAwB,IAAI,aAAQ,sCAAgB;AACtD;;;;;AEXO,IAAI,4CAAa,IAAI,cAAS;IACnC,QAAQ;IACR,OAAO;IACP,cAAc;IACd,cAAc;IACd,aAAa;IACb,cAAc;IACd,cAAc;IACd,aAAa;AACf;AAEO,IAAI,4CAAe,IAAI,cAAS;IACrC,QAAQ;IACR,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;AACX;AAEA,IAAI,sCAAgB,IAAI,cAAS;IAC/B,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEA,MAAM;AAAa;AAEnB,MAAM;AAAY;AAEX,IAAI,0CAAQ,IAAI,uBAAkB,WAAW;IAClD,GAAG;QACD,SAAS;QACT,MAAM;IACR;IAEA,GAAG;QACD,SAAS;QACT,MAAM;IACR;IAEA,yBAAyB;IACzB,yCAAyC;IAEzC,GAAG;QACD,MAAM;IACR;IAEA,GAAG;QACD,SAAS;QACT,MAAM;IACR;IAEA,GAAG;QACD,SAAS;QACT,MAAM;IACR;IAEA,GAAG;QACD,SAAS;QACT,KAAK,IAAI,gBAAW;QACpB,eAAe;QACf,YAAY,IAAI,aAAQ,qCAAe;IACzC;IAEA,GAAG;QACD,SAAS;QACT,KAAK,IAAI,gBAAW;QACpB,eAAe;QACf,YAAY,IAAI,aAAQ,qCAAe;IACzC;IAEA,IAAI;QACF,SAAS;QACT,SAAS;QACT,MAAM,IAAI,cAAS;IACrB;IAEA,IAAI;QACF,SAAS;QACT,SAAS;QACT,MAAM,IAAI,cAAS;IACrB;IAEA,IAAI;QACF,SAAS;QACT,MAAM,IAAI,cAAS;IACrB;AACF;;;ADtFA,IAAI,wCAAkB,IAAI,cAAS;IACjC,UAAU;IACV,WAAW;IACX,UAAU;IACV,qBAAqB;IACrB,uBAAuB;IACvB,aAAa;IACb,aAAa;IACb,cAAc;IACd,aAAa;IACb,YAAY;IACZ,KAAK,IAAI,gBAAW,aAAQ;AAC9B;AAEA,IAAI,uCAAiB,IAAI,cAAS;IAChC,WAAW;IACX,QAAQ;AACV;AAEA,IAAI,sCAAgB,IAAI,uBAAkB,eAAU;IAClD,QAAQ;QACN,aAAa;QACb,iBAAiB;IACnB;IAEA,GAAG;QACD,aAAa,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,MAAM,CAAC,cAAc,GAAG,EAAE,MAAM,CAAC,eAAe,GAAG;IAC/F;IAEA,GAAG;QACD,WAAW;QACX,YAAY,CAAA,GAAA,yCAAS;IACvB;IAEA,GAAG;QACD,aAAa,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,MAAM,CAAC,cAAc,GAAG,EAAE,MAAM,CAAC,eAAe,GAAG;IAC/F;IAEA,GAAG;QACD,WAAW;QACX,YAAY,IAAI,aAAQ,sCAAgB,CAAA,IAAK,EAAE,SAAS,GAAG;IAC7D;IAEA,GAAG;QACD,WAAW;QACX,YAAY,CAAA,GAAA,yCAAS;QACrB,WAAW;QACX,gBAAgB,IAAI,aAAQ,eAAU;IACxC;AACF;AAEA,IAAI,2CAAqB,IAAI,cAAS;IACpC,iBAAiB;IACjB,gBAAgB;IAChB,UAAU,IAAI,eAAU,eAAU;AACpC;AAEA,IAAI,wCAAkB,IAAI,cAAS;IACjC,oBAAoB,IAAI,eAAU,eAAU,IAAI,aAAQ,0CAAoB,IAAI;QAAE,MAAM;IAAS;IACjG,iBAAiB;IACjB,wBAAwB;IACxB,UAAU;IACV,MAAM;IACN,MAAM;IACN,iBAAiB;IACjB,eAAe;IACf,OAAO;IACP,OAAO;IACP,UAAU;IACV,OAAO,IAAI,gBAAW,cAAS;QAAC;QAAc;KAAW;AAC3D;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAU;IACV,UAAU;IACV,OAAU,IAAI,aAAQ,uCAAiB;AACzC;;;;AE7EA,IAAI,mCAAa,IAAI,cAAS;IAC5B,MAAM;IACN,YAAY;IACZ,cAAc,IAAI,aAAQ,IAAI,eAAU,eAAU,SAAS,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG;AACnG;IAEA,sEAAsE;AACtE,qEAAqE;AACrE,8BAA8B;AAC9B,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,OAAO,IAAI,gBAAW,eAAU;QAAC;KAAiB;IAClD,cAAc;IACd,aAAa,IAAI,aAAQ,IAAI,eAAU,eAAU,mCAAa;AAChE;;;;ACdA,IAAI,oCAAc,IAAI,cAAS;IAC7B,KAAK;IACL,cAAc,cAAU,iEAAiE;AAC3F,IAA0B,+DAA+D;AAC/D,+DAA+D;AAC/D,8DAA8D;AAC9D,4CAA4C;AAEtE,IAAI,wCAAkB,IAAI,cAAS;IACjC,KAAK;IACsB,iCAAiC;IAC5D,iBAAiB;IACU,mEAAmE;IAC9F,WAAW;AACb;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,qBAAqB;IACrB,iBAAiB,IAAI,eAAU,eAAU,IAAI,aAAQ,uCAAiB;IACtE,cAAc,IAAI,eAAU,eAAU,IAAI,aAAQ,mCAAa,oBAAoB;QAAE,MAAM;IAAK;IAChG,iBAAiB;AACnB;;;;ACtBA,IAAI,oCAAc,IAAI,cAAS;IAC7B,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;AACT;IAEA,2CAAe,IAAI,uBAAkB,eAAU;IAC7C,QAAQ;QACN,mBAAmB;QACnB,aAAa;QACb,iBAAiB;QACjB,cAAc,IAAI,eAAU,eAAU,IAAI,aAAQ,mCAAa;QAC/D,oBAAoB,IAAI,aAAQ,eAAU;IAC5C;IACA,GAAG,CAAC;IACJ,GAAG;QACD,wBAAwB,IAAI,eAAU,eAAU,IAAI,aAAQ,eAAU;QACtE,yBAAyB,IAAI,eAAU,eAAU,IAAI,aAAQ,eAAU;QACvE,8BAA8B,IAAI,eAAU,eAAU,IAAI,aAAQ,eAAU;IAC9E;AACF;;;;;;ACnBA,IAAI,kCAAY,IAAI,uBAAkB,eAAU;IAC9C,GAAG;QACD,YAAc,aAAQ,gCAAgC;IACxD;IAEA,GAAG;QACD,YAAgB;QAChB,gBAAgB;QAChB,gBAAgB,cAAW,+CAA+C;IAC5E;IAEA,GAAG;QACD,YAAc;QACd,aAAc,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK,GAAI,gCAAgC;IACjF;AACF;AAEA,IAAI,mCAAa,IAAI,cAAS;IAC5B,cAAgB;IAChB,gBAAgB;IAChB,YAAgB,IAAI,aAAQ,IAAI,eAAU,eAAU,kCAAY;AAClE;AAEA,IAAI,yCAAmB,IAAI,cAAS;IAClC,KAAY,IAAI,cAAS;IACzB,UAAY,IAAI,eAAU,eAAU,iCAAW;QAAC,MAAM;IAAQ;IAC9D,UAAY,IAAI,eAAU,eAAU,iCAAW;QAAC,MAAM;IAAQ,GAAI,cAAc;AAClF;AAEA,IAAI,+BAAS,IAAI,cAAS;IACxB,UAAoB,IAAI,eAAU,eAAU;IAC5C,UAAoB,IAAI,eAAU,eAAU;IAC5C,iBAAoB;IACpB,mBAAoB,IAAI,aAAQ,wCAAkB,mBAAmB,wBAAwB;AAC/F;AAEA,IAAI,0CAAoB,IAAI,cAAS;IACnC,KAAQ,IAAI,cAAS;IACrB,QAAQ,IAAI,eAAU,eAAU,8BAAQ;QAAC,MAAM;IAAQ;AACzD;AAEA,IAAI,mCAAa,IAAI,cAAS;IAC5B,YAAoB,IAAI,eAAU,eAAU;IAC5C,eAAoB,IAAI,eAAU,eAAU;IAC5C,kBAAoB;IACpB,oBAAoB,IAAI,aAAQ,yCAAmB,oBAAoB,0CAA0C;AACnH;AAEA,IAAI,yCAAmB,IAAI,cAAS;IAClC,KAAU,IAAI,cAAS;IACvB,QAAU,IAAI,eAAU,eAAU,kCAAY;QAAC,MAAM;IAAQ;AAC/D;AAEA,IAAI,uCAAiB,IAAI,aAAQ,wCAAkB;AAEnD,6EAA6E;AAC7E,IAAI,oCAAc,IAAI,aAAQ,IAAI,cAAS,IAAI;AAE/C,IAAI,6BAAO,IAAI,cAAS;IACtB,aAAgB,IAAI,eAAU,eAAU;IACxC,gBAAgB,IAAI,eAAU,eAAU;AAC1C;IAEA,2CAAe,IAAI,uBAAkB,eAAU;IAC7C,QAAQ;QACN,WAAc,IAAI,eAAU,eAAU;QACtC,UAAc,IAAI,eAAU,eAAU,4BAAS,cAAc;IAC/D;IAEA,YAAY,CAAC;IACb,YAAY;QACV,oBAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAiB;IAC/D;AACF;;;;;;ACzEA,IAAI,oCAAc,IAAI,aAAQ,eAAU;AACxC,IAAI,mCAAa,IAAI,cAAS;IAC5B,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;IAC/C,YAAgB;IAChB,cAAgB,IAAI,aAAQ,IAAI,eAAU,eAAU,oCAAc;AACpE;AAEA,IAAI,mCAAa,IAAI,uBAAkB,eAAU;IAC/C,GAAG;QACD,YAAY;IACd;IAEA,GAAG;QACD,iBAAiB;IACnB;IAEA,GAAG;QACD,YAAgB;QAChB,aAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK;IAC/C;AACF;AAEA,IAAI,iCAAW,IAAI,aAAQ,IAAI,eAAU,eAAU,mCAAa;AAEhE,IAAI,qCAAe,IAAI,cAAS;IAC9B,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;IAC/C,eAAgB;IAChB,WAAgB,IAAI,aAAQ,IAAI,eAAU,eAAU,iCAAW;AACjE;AAEA,IAAI,yCAAmB,IAAI,cAAS;IAClC,oBAAoB;IACpB,cAAoB;IACpB,UAAoB,IAAI,aAAQ,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO,IAAI;AACrE;IAEA,2CAAe,IAAI,uBAAkB,eAAU;IAC7C,QAAQ;QACN,eAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAO;QACnD,YAAoB,IAAI,eAAU,eAAU;QAC5C,cAAoB,IAAI,eAAU,eAAU;QAC5C,oBAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAO;IACrD;IAEA,YAAY,CAAC;IACb,YAAY;QACV,kBAAoB,IAAI,eAAU,eAAU;IAC9C;IACA,YAAY;QACV,kBAAoB,IAAI,eAAU,eAAU;QAC5C,oBAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAiB;IAC/D;AACF;;;;;;ACpDA,IAAI,oCAAc,IAAI,gBAAW,eAAU;IACzC;IAAc;IACd;IAAY;IACZ;IAAc;IACd;IAAc;CACf;AAED,IAAI,8BAAQ;IACV,YAAY;IACZ,YAAY;IACZ,UAAY;IACZ,UAAY;IACZ,YAAY,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK,GAAG;QAAE,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,GAAG;IAAC;IACzF,YAAY,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK,GAAG;QAAE,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,GAAG;IAAC;IACzF,YAAY,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK,GAAG;QAAE,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,GAAG;IAAC;IACzF,YAAY,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK,GAAG;QAAE,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,GAAG;IAAC;AAC3F;AAEA,MAAM;IAKJ,YAAY,MAAM,EAAE;QAClB,IAAI,SAAS;QACb,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CACvC,SAAS,OAAO,MAAM;QAGxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAEvB,IAAI,SAAS,CAAC;QACd,OAAO,GAAG,GAAG,IAAM,OAAO,YAAY;QAEtC,IAAI,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7B,IAAK,IAAI,OAAO,OACd,IAAI,MAAM,CAAC,IAAI,EACb,MAAM,CAAC,IAAI,GAAG,2BAAK,CAAC,IAAI;QAI5B,OAAO,IAAI,cAAS;IACtB;IAEA,KAAK,GAAG,EAAE,GAAG,EAAE;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,KAAK;IACzC;IAEA,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAC,QAAQ;QAClD,OAAO,IAAI,GAAG;QACd,OAAO;IACT;IAjCA,YAAY,MAAM,aAAa,CAAE;QAC/B,IAAI,CAAC,GAAG,GAAG;IACb;AAgCF;AAEA,IAAI,wCAAkB,IAAI,cAAS;IACjC,aAAgB;IAChB,QAAgB,IAAI,kCAAY;IAChC,QAAgB,IAAI,kCAAY;AAClC;AAEA,IAAI,gCAAU,IAAI,aAAQ,uCAAiB;AAE3C,IAAI,qCAAe,IAAI,cAAS;IAC9B,QAAQ,IAAI,kCAAY;IACxB,QAAQ,IAAI,kCAAY;AAC1B;AAEA,IAAI,+BAAS,IAAI,uBAAkB,eAAU;IAC3C,GAAG;QACD,aAAgB;QAChB,aAAgB;IAClB;IAEA,GAAG;QACD,aAAgB;QAChB,aAAgB;QAChB,aAAgB;IAClB;IAEA,GAAG;QACD,aAAgB;QAChB,aAAgB;QAChB,cAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK;QAC7C,cAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAK;IAC/C;AACF;AAEA,IAAI,wCAAkB,IAAI,cAAS;IACjC,aAAgB,IAAI,eAAU,eAAU,8BAAQ;QAAC,MAAM;IAAQ;IAC/D,YAAgB,IAAI,eAAU,eAAU,8BAAQ;QAAC,MAAM;IAAQ;AACjE;AAEA,IAAI,mCAAa,IAAI,cAAS;IAC5B,OAAY;IACZ,YAAY,IAAI,eAAU,eAAU,8BAAQ;QAAC,MAAM;IAAQ;AAC7D;AAEA,IAAI,kCAAY,IAAI,aAAQ,kCAAY;AAExC,IAAI,mCAAc,IAAI,aAAQ,IAAI,eAAU,eAAU,+BAAS,CAAA,IAAK,EAAE,MAAM,CAAC,UAAU;AACvF,IAAI,kCAAc,IAAI,aAAQ,kCAAY;AAE1C,IAAI,wCAAkB,IAAI,aAAQ,IAAI,eAAU,eAAU,+BAAS,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;AAClG,IAAI,uCAAkB,IAAI,aAAQ,uCAAiB;AACnD,IAAI,sCAAkB,IAAI,aAAQ,IAAI,eAAU,eAAU,uCAAiB;AAE3E,IAAI,4CAAa,IAAI,uBAAkB,cAAc;IACnD,GAAG,IAAI,uBAAkB,eAAU;QACjC,GAAG;YACD,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;YAC/C,aAAgB;YAChB,OAAgB,IAAI;QACtB;QACA,GAAG;YACD,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;YAC/C,aAAgB;YAChB,YAAgB;YAChB,QAAgB,IAAI,iBAAY,IAAI,qCAAe;QACrD;IACF;IAEA,GAAG,IAAI,uBAAkB,eAAU;QACjC,GAAG;YACD,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;YAC/C,cAAgB;YAChB,cAAgB;YAChB,cAAgB;YAChB,UAAgB,IAAI,iBAAY,IAAI,eAAU,eAAU,gCAAU;QACpE;QAEA,GAAG;YACD,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;YAC/C,cAAgB;YAChB,cAAgB;YAChB,WAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAO;YAC/C,WAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAO;YAC/C,aAAgB;YAChB,aAAgB;YAChB,cAAgB,IAAI,iBAAY,IAAI,iBAAY,oCAAc,gBAAgB;QAChF;IACF;IAEA,GAAG;QACD,QAAoB;QACpB,UAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,gBAAoB;QACpB,kBAAoB,IAAI,aAAQ,uCAAiB;IACnD;IAEA,GAAG;QACD,QAAoB;QACpB,cAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,cAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,YAAoB;QACpB,WAAoB,IAAI,eAAU,eAAU;QAC5C,WAAoB,IAAI,eAAU,eAAU;IAC9C;IAEA,GAAG;QACD,QAAoB;QACpB,cAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,kBAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,YAAoB;QACpB,WAAoB,IAAI,eAAU,eAAU;QAC5C,eAAoB,IAAI,eAAU,eAAU;IAC9C;IAEA,GAAG;QACD,QAAoB;QACpB,eAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,eAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACnD,YAAoB;QACpB,YAAoB,IAAI,eAAU,eAAU;QAC5C,YAAoB,IAAI,eAAU,eAAU;IAC9C;IAEA,GAAG,CAAA,GAAA,yCAAM;IACT,GAAG,CAAA,GAAA,yCAAc;IAEjB,GAAG;QACD,WAAa;QACb,YAAa;QACb,WAAa,IAAI,eAAU,eAAU;IACvC;AACF;AAEA,yBAAyB;AACzB,0CAAW,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;IAExC,2CAAe,IAAI,uBAAkB,eAAU;IAC7C,QAAQ;QACN,YAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAS;QACjD,aAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAU;QAClD,YAAgB,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAS,EAAE;IACzD;IAEA,YAAY,CAAC;IACb,YAAY;QACV,mBAAmB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAgB;IAC7D;AACF;;;;;;ACzMA,IAAI,iCAAW,IAAI,aAAQ,eAAU;AACrC,IAAI,qCAAe;AAEnB,IAAI,iCAAW,IAAI,cAAS;IAC1B,OAAY;IACZ,WAAY;IACZ,YAAY,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,SAAS,GAAG;AACvD;AAEA,IAAI,oCAAc,IAAI,aAAQ,IAAI,eAAU,eAAU,iCAAW;AAEjE,IAAI,mCAAa,IAAI,uBAAkB,cAAc;IACnD,GAAG,IAAI,uBAAkB,eAAU;QACjC,GAAG;YACD,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;YAC/C,cAAgB;QAClB;QACA,GAAG;YACD,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;YAC/C,YAAgB;YAChB,YAAgB,IAAI,iBAAY,eAAU;QAC5C;IACF;IAEA,GAAG;QACD,aAAgB;QAChB,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QAC/C,OAAgB;QAChB,WAAgB,IAAI,iBAAY,IAAI,eAAU,eAAU,iCAAW;IACrE;IAEA,GAAG;QACD,aAAgB;QAChB,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QAC/C,OAAgB;QAChB,cAAgB,IAAI,iBAAY,IAAI,eAAU,eAAU,qCAAe;IACzE;IAEA,GAAG;QACD,aAAgB;QAChB,UAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QAC/C,OAAgB;QAChB,cAAgB,IAAI,iBAAY,IAAI,eAAU,eAAU,oCAAc;IACxE;IAEA,GAAG,CAAA,GAAA,yCAAM;IACT,GAAG,CAAA,GAAA,yCAAc;IAEjB,GAAG;QACD,aAAe;QACf,YAAe;QACf,WAAe,IAAI,eAAU,eAAU;IACzC;IAEA,GAAG;QACD,aAAwB;QACxB,UAAwB,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO;QACvD,mBAAwB,IAAI,aAAQ,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO,IAAI;QACvE,qBAAwB;QACxB,mBAAwB,IAAI,aAAQ,IAAI,eAAU,eAAU,CAAA,GAAA,wCAAO,IAAI;QACvE,YAAwB;QACxB,aAAwB,IAAI,aAAQ,eAAU;IAChD;AACF;AAEA,yBAAyB;AACzB,iCAAW,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;IAExC,2CAAe,IAAI,uBAAkB,eAAU;IAC7C,QAAQ;QACN,YAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAS;QACjD,aAAgB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAU;QAClD,YAAgB,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAS,EAAE;IACzD;IAEA,YAAY,CAAC;IACb,YAAY;QACV,mBAAmB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAgB;IAC7D;AACF;;;;;;AC/EA,IAAI,wCAAkB,IAAI,aAAQ,eAAU;AAE5C,IAAI,qCAAe,IAAI,cAAS;IAC9B,qBAAwB,IAAI,eAAU,eAAU;IAChD,sBAAwB,IAAI,eAAU,eAAU;IAChD,qBAAwB,IAAI,eAAU,eAAU;IAChD,sBAAwB,IAAI,eAAU,eAAU;IAChD,kBAAwB,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,yCAAS;IACxE,qBAAwB,IAAI,eAAU,eAAU;IAChD,sBAAwB,IAAI,eAAU,eAAU;IAChD,qBAAwB,IAAI,eAAU,eAAU;IAChD,sBAAwB,IAAI,eAAU,eAAU;IAChD,kBAAwB,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,yCAAS;AAC1E;AAEA,IAAI,oCAAc,IAAI,aAAQ,IAAI,eAAU,eAAU,qCAAe;AAErE,IAAI,0CAAoB,IAAI,cAAS;IACnC,KAAa,IAAI,cAAS;IAC1B,aAAa,IAAI,eAAU,eAAU;AACvC;AAEA,IAAI,mCAAa,IAAI,cAAS;IAC5B,gBAAgB,IAAI,eAAU,eAAU,IAAI,aAAQ,eAAU;IAC9D,gBAAgB,IAAI,eAAU,eAAU;IACxC,cAAgB;IAChB,gBAAgB,IAAI,aAAQ,yCAAmB;AACjD;AAEA,IAAI,yCAAmB,IAAI,cAAS;IAClC,KAAQ,IAAI,cAAS;IACrB,QAAQ,IAAI,eAAU,eAAU,kCAAY;QAAC,MAAM;IAAQ;AAC7D;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAa;IACb,aAAa;IACb,YAAa,IAAI,aAAQ,wCAAkB;AAC7C;;;;;ACtCA,gCAAgC;AAChC,MAAM;IAKJ,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,OAAQ,IAAI,CAAC,IAAI,CAAC,GAAG;YACnB,KAAK;gBAAG,OAAO,OAAO,SAAS;YAC/B,KAAK;gBAAG,OAAO,OAAO,YAAY;YAClC,KAAK;gBAAG,OAAO,OAAO,YAAY;YAClC,KAAK;gBAAG,OAAO,OAAO,YAAY;QACpC;IACF;IAEA,KAAK,GAAG,EAAE,MAAM,EAAE;QAChB,OAAO,CAAA,GAAA,oBAAY,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM;IACzC;IAfA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,KAAK,GAAG;IACf;AAcF;AAEA,IAAI,qCAAe,IAAI,cAAS;IAC9B,OAAO,IAAI,yCAAmB,CAAA,IAAK,AAAC,CAAA,AAAC,CAAA,EAAE,MAAM,CAAC,WAAW,GAAG,MAAK,KAAM,CAAA,IAAK;IAC5E,YAAY,CAAA,IAAK,EAAE,KAAK,IAAK,AAAC,CAAA,EAAE,MAAM,CAAC,WAAW,GAAG,MAAK,IAAK;IAC/D,YAAY,CAAA,IAAK,EAAE,KAAK,GAAI,AAAC,CAAA,KAAM,AAAC,CAAA,EAAE,MAAM,CAAC,WAAW,GAAG,MAAK,IAAK,CAAC,IAAK;AAC7E;AAEA,IAAI,yCAAmB,IAAI,cAAS;IAClC,aAAa;IACb,UAAU;IACV,SAAS,IAAI,aAAQ,oCAAc;AACrC;IAEA,2CAAe,IAAI,cAAS;IAC1B,cAAc;IACd,cAAc;IACd,oBAAoB,IAAI,eAAU,eAAU,CAAA,GAAA,yCAAiB;IAC7D,qBAAqB,IAAI,eAAU,eAAU;IAC7C,YAAY,IAAI,eAAU,eAAU;IACpC,YAAY,IAAI,eAAU,eAAU;AACtC;;;;ACzCA,IAAI,kCAAY,IAAI,cAAS;IAC3B,QAAQ;IACR,QAAQ;IACR,QAAQ;AACV;AAEA,IAAI,uCAAiB,IAAI,cAAS;IAChC,UAAgB,IAAI,gBAAW,eAAU;IACzC,aAAgB;IAChB,WAAgB,IAAI,cAAS;AAC/B;IAEA,2CAAe,IAAI,cAAS;IAC1B,WAAiB;IACjB,WAAiB;IACjB,QAAiB;IACjB,YAAiB,IAAI,aAAQ,iCAAW;IACxC,iBAAiB,IAAI,aAAQ,sCAAgB;AAC/C;;;;AClBA,IAAI,kCAAY,IAAI,cAAS;IAC3B,cAAoB;IACpB,mBAAoB,IAAI,gBAAW,eAAU;QAC3C;QAAa;QACb;QAAsB,mBAAuB,mCAAmC;KACjF;AACH;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAY;IACZ,WAAY;IACZ,YAAY,IAAI,aAAQ,iCAAW,aAAa,iBAAiB;AACnE;;;;ACZA,IAAI,qCAAe,IAAI,cAAS;IAC9B,WAAgB;IAChB,cAAgB;IAChB,QAAgB,IAAI,aAAQ,cAAS,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;AAC1E;IAEA,qGAAqG;AACrG,2CAAe,IAAI,cAAS;IAC1B,SAAoB;IACpB,YAAoB;IACpB,kBAAoB;IACpB,SAAoB,IAAI,aAAQ,oCAAc;AAChD;;;;ACZA,IAAI,iCAAW,IAAI,cAAS;IAC1B,MAAQ;IACR,OAAQ;IACR,OAAQ;AACV;AAEA,IAAI,mCAAa,IAAI,cAAS;IAC5B,YAAY;IACZ,SAAS;IACT,SAAS,IAAI,aAAQ,eAAU;IAC/B,KAAK,CAAA,IAAK,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO;AAC9D;AAEA,IAAI,mCAAa,IAAI,cAAS;IAC5B,KAAK,CAAA,IAAK,EAAE,YAAY,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY;IACvD,KAAK,CAAA,IAAK,AAAC,CAAA,AAAE,CAAA,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,GAAG,AAAD,IAAK,EAAE,MAAM,CAAC,QAAQ,GAAI,CAAA,IAAM,CAAA,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAA;IAC9F,QAAQ,IAAI,iBAAY,cAAS;AACnC;AAEA,IAAI,qCAAe,IAAI,uBAAkB,UAAU;IACjD,GAAG;QACD,QAAgB;QAChB,aAAgB;QAChB,eAAgB;QAChB,YAAgB;QAChB,OAAgB,IAAI,aAAQ,gCAAU;IACxC;IAEA,GAAG;QACD,UAAY;QACZ,WAAY,IAAI,eAAU,eAAU,kCAAY;YAAC,MAAM;QAAQ;QAC/D,YAAY,IAAI,eAAU,eAAU,kCAAY;YAAC,MAAM;QAAQ;QAC/D,OAAY,IAAI,eAAU,eAAU,kCAAY;YAAC,MAAM;QAAQ;IACjE;IAEA,GAAG;QACD,YAAkB;QAClB,gBAAkB;QAClB,gBAAkB;QAClB,iBAAkB;QAClB,OAAkB;QAClB,WAAkB,IAAI,aAAQ,cAAS;QACvC,WAAkB,IAAI,aAAQ,cAAS;QACvC,YAAkB,IAAI,aAAQ,cAAS;QACvC,WAAkB,IAAI,aAAQ,cAAS,CAAA,IAAK,EAAE,cAAc,GAAG,EAAE,eAAe;IAClF;AACF;AAEA,IAAI,kCAAY,IAAI,uBAAkB,WAAW;IAC/C,GAAG;QACD,YAAY;QACZ,QAAY;QACZ,QAAY;QACZ,UAAY,IAAI,gBAAW,cAAS;YAClC;YACA;YACA;YACA,WAAgB,qEAAqE;SACtF;QACD,UAAY;QACZ,SAAS,IAAI,gBAAW,cAAS,CAAA,IAAK,EAAE,MAAM,GAAG,EAAE,cAAc;IACnE;IACA,GAAG;QACD,QAAY;QACZ,UAAY,IAAI,gBAAW,cAAS;YAClC;YAAM;YAAM;YAAM;YAAM;YACxB;YACA;YACA,WAAgB,2CAA2C;SAC5D;QACD,QAAY;QACZ,YAAY;QACZ,UAAY;QACZ,SAAS,IAAI,gBAAW,cAAS,CAAA,IAAK,EAAE,MAAM,GAAG,EAAE,cAAc;IACnE;AACF;IAEA,2CAAe,IAAI,uBAAkB,eAAU;IAC7C,GAAG;QACD,SAAY;QACZ,QAAY,IAAI,aAAQ,iCAAW;IACrC;IAEA,GAAG;QACD,UAAY,IAAI,gBAAW;QAC3B,SAAY;QACZ,QAAY,IAAI,aAAQ,iCAAW;IACrC;AACF;;;;ICxFA,yBAAyB;AACzB,6EAA6E;AAC7E,mDAAmD;AACnD,2CAAe,IAAI,cAAS;IAC1B,SAAY;IACZ,WAAY;IACZ,OAAY,IAAI,aAAQ,cAAS;AACnC;;;;ICPA,cAAc;AACd,yFAAyF;AACzF,2CAAe,IAAI,cAAS;IAC1B,SAAsB;IACtB,YAAsB;IACtB,OAAsB;IACtB,SAAsB;IACtB,OAAsB;IACtB,YAAsB;IACtB,WAAsB;IACtB,WAAsB;IACtB,UAAsB,IAAI,cAAS;IACnC,qBAAsB,IAAI,cAAS;IACnC,UAAsB,IAAI,cAAS;IACnC,cAAsB,IAAI,cAAS;IACnC,WAAsB,IAAI,cAAS;IACnC,YAAsB;IACtB,UAAsB,IAAI,gBAAW;AACvC;;;;AClBA,+EAA+E;AAC/E,mEAAmE;AAEnE,IAAI,8BAAQ,IAAI,cAAS;IACvB,UAAgB;IAChB,QAAgB;IAChB,aAAgB;IAChB,WAAgB,aAAqC,uBAAuB;AAC9E;AAEA,IAAI,+BAAS,IAAI,cAAS;IACxB,YAAgB;IAChB,MAAgB;IAChB,MAAgB,aAAqC,8CAA8C;AACrG;AAEA,IAAI,kCAAY,IAAI,cAAS;IAC3B,MAAgB;IAChB,SAAgB;IAChB,OAAgB;IAChB,SAAgB,IAAI,aAAQ,8BAAQ,QAAiB,mBAAmB;AAC1E;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAgB;IAChB,SAAgB;IAChB,WAAgB;IAChB,aAAgB,IAAI,aAAQ,6BAAO;IACnC,SAAgB,IAAI,aAAQ,eAAU;IACtC,QAAgB,IAAI,aAAQ,iCAAW,WAAc,4BAA4B;AACnF;;;;IC9BA,wBAAwB;AACxB,2CAAe,IAAI,cAAS;IAC1B,SAAwB;IACxB,QAAwB;IACxB,SAAwB;IACxB,SAAwB;IACxB,kBAAwB;IACxB,mBAAwB;IACxB,sBAAwB;IACxB,YAAwB;IACxB,gBAAwB;IACxB,eAAwB;IACxB,aAAwB;IACxB,UAAwB,IAAI,gBAAW,cAAS;IAChD,kBAAwB;IACxB,iBAAwB,cAAW,0DAA0D;AAC/F;;;;AChBA,IAAI,kCAAY,IAAI,cAAS;IAC3B,SAAS;IACT,SAAS,aAAW,mCAAmC;AACzD;IAEA,yBAAyB;AACzB,2CAAe,IAAI,cAAS;IAC1B,SAAU,IAAI,iBAAY,iCAAW,CAAA,IAAK,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe;IACvE,UAAU,IAAI,iBAAY,cAAS,CAAA,IAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe;AACjG;;;;ACTA,IAAI,kCAAY,IAAI,aAAQ,IAAI,MAAM;AAEtC,IAAI,uCAAiB,IAAI,cAAS;IAChC,WAAW;IACX,SAAS;AACX;AAEA,IAAI,gCAAU,IAAI,cAAS;IACzB,WAAW;IACX,gBAAgB,IAAI,aAAQ,sCAAgB;AAC9C;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,WAAW;IACX,SAAS,IAAI,aAAQ,+BAAS;AAChC;;;;;AEhBA,MAAM;IASJ,QAAQ,KAAK,EAAE;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM;YAC9B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI;YAClE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;YAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;QACpB;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;IAC3B;IAEA,UAAU;QACR,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD;IArBA,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,CAAE;QAChC,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE;IAClB;AAgBF;AAEO,MAAM,kDAAuB;IAKlC,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,OAAO,IAAI,6CAAuB,IAAI,CAAC,IAAI,EAAE,QAAQ;IACvD;IANA,YAAY,IAAI,CAAE;QAChB,KAAK,CAAC,MAAM;IACd;AAKF;AAEO,IAAI,4CAAc,SAAS,YAAY,aAAQ;IACpD,oEAAoE;IACpE,MAAM;QAKJ,OAAO,MAAM,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,MAAM,CAAC,MAAM;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClC;QAEA,KAAK,GAAG,EAAE,GAAG,EAAE;YACb,MAAM,IAAI,MAAM,CAAC,MAAM;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;QAC7B;QAEA,OAAO,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;YACvB,MAAM,IAAI,MAAM,CAAC,MAAM;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK;QACvC;QAjBA,YAAY,IAAI,CAAE;YAChB,IAAI,CAAC,IAAI,GAAG;QACd;IAgBF;IAEA,YAAY,IAAI,OAAO;IAEvB,IAAI,qBAAqB,IAAI,cAAS;QACpC,UAAU;QACV,QAAQ;QACR,aAAa;QACb,eAAe;QACf,YAAY;IACd;IAEA,IAAI,sBAAsB,IAAI,cAAS;QACrC,WAAW;QACX,YAAY;QACZ,OAAO;IACT;IAEA,IAAI,qBAAqB,IAAI,cAAS;QACpC,WAAW;QACX,YAAY;QACZ,QAAQ,IAAI,eAAU,eAAU,IAAI,aAAQ,WAAW,CAAA,IAAK,EAAE,SAAS,GAAG,EAAE,UAAU,GAAG,IAAI;YAAC,MAAM;QAAQ;IAC9G;IAEA,IAAI,eAAe,IAAI,cAAS;QAC9B,OAAO;QACP,OAAO;IACT;IAEA,OAAO,IAAI,uBAAkB,eAAU;QACrC,GAAG;YACD,QAAQ,IAAI,0CAAe,WAAW,oCAAoC;QAC5E;QACA,GAAG;YACD,oBAAoB;YACpB,UAAU,IAAI,aAAQ,qBAAqB,CAAA,IAAK,EAAE,kBAAkB,CAAC,MAAM;QAC7E;QACA,GAAG;YACD,oBAAoB;YACpB,UAAU,IAAI,aAAQ,oBAAoB,CAAA,IAAK,EAAE,kBAAkB,CAAC,MAAM;QAC5E;QACA,GAAG;YACD,oBAAoB;YACpB,UAAU,IAAI,aAAQ,cAAc,CAAA,IAAK,EAAE,kBAAkB,CAAC,MAAM;QACtE;QACA,GAAG;YACD,YAAY;YACZ,OAAO;YACP,QAAQ,IAAI,aAAQ,WAAW;QACjC;IACF;AACF;AAEO,SAAS,0CAAW,YAAY,CAAC,CAAC,EAAE,aAAa,aAAQ;IAC9D,IAAI,QAAQ,OAAO,MAAM,CAAC;QACxB,UAAU;QACV,OAAO;IACT,GAAG;IAEH,IAAI,QAAQ,IAAI,cAAS;IACzB,IAAI,aAAa,IAAI,0CAAe,IAAI,aAAQ,eAAU,CAAA,IAAK,EAAE,QAAQ;IAEzE,IAAI,cAAc,IAAI,cAAS;QAC7B,UAAU;QACV,YAAY,IAAI,eAAU,eAAU,IAAI,0CAAY;QACpD,YAAY,IAAI,eAAU,eAAU;QACpC,YAAY,IAAI,eAAU,eAAU,IAAI,0CAAe;IACzD;IAEA,OAAO;AACT;AAGO,SAAS,0CAAY,YAAY,CAAC,CAAC,EAAE,aAAa,aAAQ;IAC/D,IAAI,mBAAmB,IAAI,cAAS;QAClC;YAAY,OAAO;QAAG;QACtB,YAAY;QACZ,QAAQ,IAAI,aAAQ,cAAS;IAC/B;IAEA,IAAI,QAAQ,OAAO,MAAM,CAAC;QACxB,gBAAgB;QAChB,qCAAqC;QACrC,UAAU,CAAA,IAAK,AAAC,CAAA,EAAE,cAAc,GAAI,CAAA,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,YAAY,AAAD,CAAC,IAAK,EAAE,MAAM,CAAC,QAAQ;QAC1G,OAAO;IACT,GAAG;IAEH,IAAI,QAAQ,IAAI,cAAS;IACzB,IAAI,aAAa,IAAI,0CAAe,IAAI,aAAQ,cAAS,CAAA,IAAK,EAAE,QAAQ;IAExE,IAAI,eAAe,IAAI,cAAS;QAC9B,UAAU;QACV,YAAY,IAAI,eAAU,eAAU;QACpC,YAAY,IAAI,eAAU,eAAU;QACpC,YAAY,IAAI,eAAU,eAAU,IAAI,0CAAe;IACzD;IAEA,OAAO;AACT;;;ADzJA,IAAI,qCAAe,IAAI,uBAAkB,UAAU;IACjD,GAAG;QACD,QAAQ,IAAI,aAAQ,cAAS;IAC/B;IAEA,GAAG;QACD,QAAQ,IAAI,aAAQ,cAAS;QAC7B,aAAa,IAAI,CAAA,GAAA,yCAAU,EAAE;IAC/B;IAEA,GAAG;QACD,eAAe;QACf,eAAe,IAAI,aAAQ,eAAU;IACvC;IAEA,GAAG;QACD,eAAe;QACf,eAAe,IAAI,aAAQ,eAAU;QACrC,aAAa,IAAI,CAAA,GAAA,yCAAU,EAAE;IAC/B;AACF;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,QAAQ;IACR,iBAAiB;IACjB,UAAU;AACZ;;;;AE5BA,IAAI,gCAAU,IAAI,cAAS;IACzB,SAAS;IACT,WAAW;IACX,MAAM,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;AAC1E;AAEA,IAAI,oCAAc,IAAI,cAAS;IAC7B,SAAS;IACT,WAAW;IACX,cAAc,IAAI,eAAU,eAAU,IAAI,aAAQ,+BAAS,cAAc;QAAE,MAAM;IAAS;IAC1F,cAAc,IAAI,gBAAW,cAAS;QACpC;QAAM;QAAM;QAAM;QAAM;QAAM;QAC9B;QAAc;KACf;IACD,gBAAgB;IAChB,WAAW;IACX,MAAM,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;AACnE;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,kBAAkB;IAClB,WAAW,IAAI,gBAAW;IAC1B,WAAW,IAAI,gBAAW;IAC1B,cAAc,IAAI,aAAQ,mCAAa;AACzC;;;;ACzBA,IAAI,6BAAO,IAAI,cAAS;IACtB,SAAS,IAAI,cAAS;IACtB,UAAU;IACV,cAAc;IACd,UAAU;IACV,OAAO;IACP,QAAQ;IACR,MAAM,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;AAChE;AAEA,IAAI,iCAAW,IAAI,cAAS;IAC1B,QAAQ;IACR,MAAM,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC9D,OAAO;IACP,OAAO,IAAI,aAAQ,gBAAW,CAAA,IAAK,EAAE,MAAM,CAAC,SAAS;IACrD,kBAAkB,IAAI,gBAAW,eAAU,CAAA,IAAK,EAAE,MAAM,CAAC,YAAY,GAAG,EAAE,cAAc,GAAG;AAC7F;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,UAAU;IACV,eAAe;IACf,cAAc;IACd,MAAM,IAAI,aAAQ,4BAAM;IACxB,UAAU,IAAI,aAAQ,gCAAU;AAClC;;;;AC5BA,IAAI,kCAAY,IAAI,aAAQ,IAAI,MAAM;AACtC,MAAM;IACJ,OAAO,OAAO,MAAM,EAAE,MAAM,EAAE;QAC5B,gDAAgD;QAChD,sDAAsD;QACtD,uCAAuC;QACvC,OAAO,OAAO,KAAK,GACf,OAAO,YAAY,KACnB,OAAO,YAAY,KAAK;IAC9B;AACF;AAEA,IAAI,6BAAO,IAAI,cAAS;IACtB,SAAS;IACT,UAAU,IAAI,gBAAW;IACzB,WAAW;IACX,kBAAkB;IAClB,cAAc,IAAI,eAAU,eAAU,IAAI,aAAQ,IAAI,aAAQ,iCAAW,cAAc;IACvF,YAAY;IACZ,OAAO;IACP,cAAc;IACd,SAAS,IAAI,aAAQ,IAAI,eAAU,8BAAQ,QAAQ;QAAE,YAAY,CAAA,MAAO,IAAI,YAAY;QAAE,WAAW;IAAM,IAAI,CAAA,IAAK,EAAE,UAAU,GAAG;AACrI;IAEA,2CAAe;;;;;ACvBf,IAAI,mCAAa,IAAI,cAAS;IAC5B,QAAQ;IACR,UAAU;IACV,iBAAiB;IACjB,YAAY,IAAI,CAAA,GAAA,yCAAU;AAC5B;AAEA,IAAI,yCAAmB,IAAI,cAAS;IAClC,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,WAAW;IACX,aAAa;AACf;AAEA,IAAI,0CAAoB,IAAI,aAAQ,wCAAkB;AAEtD,IAAI,mCAAa,IAAI,uBAAkB,cAAc;IACnD,GAAG;QACD,YAAY;QACZ,YAAY;QACZ,OAAO;QACP,QAAQ,IAAI,aAAQ,eAAU;IAChC;IAEA,GAAG;QACD,UAAU;IACZ;IAEA,GAAG;QACD,gBAAgB;QAChB,UAAU;QACV,YAAY;IACd;IAEA,GAAG,CAAC;IAEJ,GAAG;QACD,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,cAAc;IAChB;IAEA,GAAG;QACD,OAAO;QACP,OAAO;IACT;AACF;AAEA,IAAI,+BAAS,IAAI,cAAS;IACxB,aAAa;IACb,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,SAAS,IAAI,gBAAW,cAAS,CAAA,IAAK,EAAE,YAAY,GAAG,EAAE,cAAc;AACzE;AAEA,IAAI,+CAAyB,IAAI,aAAQ,8BAAQ;AACjD,IAAI,8CAAwB,IAAI,cAAS;IACvC,aAAa,IAAI,CAAA,GAAA,yCAAU,EAAE,IAAI,eAAU,eAAU;AACvD;AAEA,IAAI,2CAAqB,IAAI,cAAS;IACpC,YAAY,IAAI,eAAU,eAAU,kCAAY;QAAE,MAAM;IAAS;IACjE,WAAW;IACX,uBAAuB,IAAI,eAAU,eAAU,6CAAuB;QAAE,MAAM;IAAS;IACvF,oBAAoB,IAAI,CAAA,GAAA,yCAAU,EAAE,IAAI,eAAU,eAAU,yCAAmB;QAAE,MAAM;QAAU,YAAY,CAAA,MAAO,IAAI,SAAS;IAAC;AACpI;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,QAAQ;IACR,YAAY,IAAI,eAAU,eAAU;IACpC,UAAU,IAAI,eAAU,eAAU;AACpC;;;;;AC7EA,IAAI,qCAAe;IACjB,QAAQ;AACV;AAEA,IAAI,uCAAiB;IACnB,WAAW;IACX,cAAc;AAChB;AAEA,IAAI,sCAAgB;IAClB,oBAAoB;IACpB,mBAAmB;AACrB;AAEA,IAAI,0CAAoB,IAAI,cAAS;IACnC,OAAO,IAAI,CAAA,GAAA,yCAAa,EAAE,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAU;AAClE;AAEA,IAAI,qCAAe,IAAI,uBAAkB,QAAQ;IAC/C,GAAG;QACD,YAAY,IAAI,CAAA,GAAA,yCAAS;IAC3B;IAEA,GAAG;QACD,YAAY,IAAI,CAAA,GAAA,yCAAS,EAAE;QAC3B,mBAAmB,IAAI,eAAU,eAAU;IAC7C;IAEA,GAAG;QACD,YAAY,IAAI,CAAA,GAAA,yCAAS,EAAE;QAC3B,iBAAiB,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAa,EAAE;QAC5D,YAAY,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAa,EAAE;QACvD,cAAc,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAa,EAAE;IAC3D;IAEA,GAAG;QACD,aAAa,IAAI,CAAA,GAAA,yCAAU;IAC7B;IAEA,GAAG;QACD,YAAY,IAAI,CAAA,GAAA,yCAAS,EAAE;QAC3B,kBAAkB,IAAI,eAAU,eAAU,IAAI,CAAA,GAAA,yCAAa,EAAE;IAC/D;AACF;AAEA,IAAI,iCAAW,IAAI,cAAS;IAC1B,QAAQ;IACR,UAAU;IACV,MAAM;IACN,iBAAiB;IACjB,OAAO;IACP,SAAS,IAAI,gBAAW,cAAS,CAAA,IAAK,EAAE,MAAM,GAAG,EAAE,cAAc;AACnE;AAEA,IAAI,qCAAe,IAAI,cAAS;IAC9B,aAAgB;IAChB,gBAAgB;IAChB,aAAgB;IAChB,cAAgB;AAClB;AAEA,IAAI,kCAAY,IAAI,cAAS;IAC3B,cAAkB;IAClB,aAAkB;IAClB,iBAAkB;IAClB,YAAkB;IAClB,UAAkB,IAAI,aAAQ,oCAAc;IAC5C,WAAkB,IAAI,aAAQ,gCAAU;AAC1C;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAU;IACV,QAAU,IAAI,gBAAW;IACzB,SAAU;IACV,QAAU,IAAI,aAAQ,iCAAW;AACnC;;;;;AC3EA,IAAI,sCAAgB,IAAI,cAAS;IAC/B,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;AACV;IAEA,2CAAe,IAAI,cAAS;IAC1B,SAAS;IACT,QAAQ;IACR,aAAa,IAAI,CAAA,GAAA,yCAAU,EAAE;AAC/B;;;AxDdA,IAAI,+BAAS,CAAC;IACd,2CAAe;AAYf,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,4BAAM,CAAC,OAAO,GAAG,CAAA,GAAA,wCAAE;AACnB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AAUjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,4BAAM,CAAC,OAAO,GAAG,CAAA,GAAA,wCAAE;AACnB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AAOjB,4BAAM,CAAC,OAAO,GAAG,CAAA,GAAA,wCAAM;AACvB,4BAAM,CAAC,OAAO,GAAG,CAAA,GAAA,wCAAM;AACvB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AASjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,6BAAO,IAAI;AACzB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AAUjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AAKjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AAajB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AAajB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;AACjB,6BAAO,IAAI,GAAG,CAAA,GAAA,wCAAG;;;ADjHjB,IAAI,mCAAa,IAAI,cAAS;IAC5B,KAAY,IAAI,cAAS;IACzB,UAAY;IACZ,QAAY,IAAI,eAAU,eAAU,QAAQ;QAAE,MAAM;IAAS;IAC7D,QAAY;AACd;AAEA,IAAI,kCAAY,IAAI,cAAS;IAC3B,KAAgB,IAAI,cAAS;IAC7B,WAAgB;IAChB,aAAgB;IAChB,eAAgB;IAChB,YAAgB;IAChB,QAAgB,IAAI,aAAQ,kCAAY;AAC1C;AAEA,gCAAU,OAAO,GAAG;IAClB,IAAI,SAAS,CAAC;IACd,KAAK,IAAI,SAAS,IAAI,CAAC,MAAM,CAC3B,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;IAGtB,IAAI,CAAC,MAAM,GAAG;AAChB;AAEA,gCAAU,SAAS,GAAG;IACpB,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG;QAC/B,IAAI,SAAS,EAAE;QACf,IAAK,IAAI,OAAO,IAAI,CAAC,MAAM,CAAE;YAC3B,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;YAC5B,IAAI,OACF,OAAO,IAAI,CAAC;gBACV,KAAK;gBACL,UAAU;gBACV,QAAQ,IAAI,mBAAc,CAAA,GAAA,wCAAK,CAAC,CAAC,IAAI,EAAE;gBACvC,QAAQ,CAAA,GAAA,wCAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B;QAEJ;QAEA,IAAI,CAAC,MAAM,GAAG;IAChB;IAEA,IAAI,CAAC,GAAG,GAAG;IACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;IAEnC,IAAI,kBAAkB,KAAK,KAAK,CAAE,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG;IACrE,IAAI,cAAc,KAAK,GAAG,CAAC,GAAG;IAE9B,IAAI,CAAC,WAAW,GAAI,cAAc;IAClC,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,eAAe,KAAK,GAAG;IACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,CAAC,WAAW;AAC1D;IAEA,2CAAe;;;;;A2DzDR,SAAS,0CAAa,GAAG,EAAE,GAAG;IACnC,IAAI,MAAM;IACV,IAAI,MAAM,IAAI,MAAM,GAAG;IACvB,MAAO,OAAO,IAAK;QACjB,IAAI,MAAM,AAAC,MAAM,OAAQ;QACzB,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI;QAEtB,IAAI,MAAM,GACR,MAAM,MAAM;aACP,IAAI,MAAM,GACf,MAAM,MAAM;aAEZ,OAAO;IAEX;IAEA,OAAO;AACT;AAEO,SAAS,0CAAM,KAAK,EAAE,GAAG;IAC9B,IAAI,QAAQ,EAAE;IACd,MAAO,QAAQ,IACb,MAAM,IAAI,CAAC;IAEb,OAAO;AACT;AAEO,MAAM,4CAAe,IAAI,YAAY;AAE5C,wEAAwE;AACxE,MAAM,8BAAQ;AACd,MAAM,+BAAS,IAAI,WAAW;AAC9B,IAAK,IAAI,IAAI,GAAG,IAAI,4BAAM,MAAM,EAAE,IAChC,4BAAM,CAAC,4BAAM,UAAU,CAAC,GAAG,GAAG;AAGzB,SAAS,0CAAa,MAAM;IACjC,IAAI,eAAe,OAAO,MAAM,GAAG;IAEnC,IAAI,MAAM,CAAC,OAAO,MAAM,GAAG,EAAE,KAAK,KAAK;QACrC;QACA,IAAI,MAAM,CAAC,OAAO,MAAM,GAAG,EAAE,KAAK,KAChC;IAEJ;IAEA,IAAI,QAAQ,IAAI,WAAW;IAC3B,IAAI,IAAI;IAER,IAAK,IAAI,IAAI,GAAG,MAAM,OAAO,MAAM,EAAE,IAAI,KAAK,KAAK,EAAG;QACpD,IAAI,WAAW,4BAAM,CAAC,OAAO,UAAU,CAAC,GAAG;QAC3C,IAAI,WAAW,4BAAM,CAAC,OAAO,UAAU,CAAC,IAAI,GAAG;QAC/C,IAAI,WAAW,4BAAM,CAAC,OAAO,UAAU,CAAC,IAAI,GAAG;QAC/C,IAAI,WAAW,4BAAM,CAAC,OAAO,UAAU,CAAC,IAAI,GAAG;QAE/C,KAAK,CAAC,IAAI,GAAG,AAAC,YAAY,IAAM,YAAY;QAC5C,KAAK,CAAC,IAAI,GAAG,AAAE,CAAA,WAAW,EAAC,KAAM,IAAM,YAAY;QACnD,KAAK,CAAC,IAAI,GAAG,AAAE,CAAA,WAAW,CAAA,KAAM,IAAM,WAAW;IACnD;IAEA,OAAO;AACT;;;;;ADxDe,MAAM;IAwCnB,aAAa,SAAS,EAAE,KAAK,EAAE;QAC7B,KAAK,IAAI,CAAC,YAAY,WAAW,IAAI,MACnC,KAAK,IAAI,QAAQ,UAAU,MAAM,CAAE;YACjC,IAAI,KAAK,UAAU,KAAK,cAAc,KAAK,UAAU,KAAK,YACxD,OAAO,KAAK,KAAK;QAErB;QAGF,OAAO;IACT;IAEA,OAAO,SAAS,EAAE,iBAAiB,EAAE;QACnC,iEAAiE;QACjE,wDAAwD;QACxD,IAAI,IAAI,CAAC,QAAQ,EACf,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc;aAGvC,IAAI,mBAAmB;YAC5B,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW;YAC/C,IAAI,KACF,OAAO;QAEX;QAEA,IAAI,OAAO,IAAI,CAAC,IAAI;QACpB,OAAQ,KAAK,OAAO;YAClB,KAAK;gBACH,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,cAAc;YAExC,KAAK;gBAAG;oBACN,IAAI,MAAM;oBACV,IAAI,MAAM,KAAK,QAAQ,GAAG;oBAC1B,MAAO,OAAO,IAAK;wBACjB,IAAI,MAAM,AAAC,MAAM,OAAQ;wBAEzB,IAAI,YAAY,KAAK,SAAS,CAAC,GAAG,CAAC,MACjC,MAAM,MAAM;6BACP,IAAI,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,MACtC,MAAM,MAAM;6BACP;4BACL,IAAI,cAAc,KAAK,aAAa,CAAC,GAAG,CAAC;4BACzC,IAAI;4BAEJ,IAAI,gBAAgB,GAClB,MAAM,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC;iCAC9B;gCACL,IAAI,QAAQ,cAAc,IAAK,CAAA,YAAY,KAAK,SAAS,CAAC,GAAG,CAAC,IAAG,IAAM,CAAA,KAAK,QAAQ,GAAG,GAAE;gCACzF,MAAM,KAAK,eAAe,CAAC,GAAG,CAAC,UAAU;gCACzC,IAAI,QAAQ,GACV,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC;4BAE5B;4BAEA,OAAO,MAAM;wBACf;oBACF;oBAEA,OAAO;gBACT;YAEA,KAAK;gBACH,MAAM,IAAI,MAAM;YAElB,KAAK;YACL,KAAK;gBACH,OAAO,KAAK,YAAY,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,KAAK;YAE9D,KAAK;YACL,KAAK;gBAAI;oBACP,IAAI,MAAM;oBACV,IAAI,MAAM,KAAK,OAAO,GAAG;oBACzB,MAAO,OAAO,IAAK;wBACjB,IAAI,MAAM,AAAC,MAAM,OAAQ;wBACzB,IAAI,QAAQ,KAAK,MAAM,CAAC,GAAG,CAAC;wBAE5B,IAAI,YAAY,MAAM,aAAa,EACjC,MAAM,MAAM;6BACP,IAAI,YAAY,MAAM,WAAW,EACtC,MAAM,MAAM;6BACP;4BACL,IAAI,KAAK,OAAO,KAAK,IACnB,OAAO,MAAM,OAAO,GAAI,CAAA,YAAY,MAAM,aAAa,AAAD;iCAEtD,OAAO,MAAM,OAAO;wBAExB;oBACF;oBAEA,OAAO;gBACT;YAEA,KAAK;gBACH,MAAM,IAAI,MAAM;YAElB;gBACE,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,KAAK,OAAO,CAAC,CAAC;QACzD;IACF;IAEA,qBAAqB,SAAS,EAAE,iBAAiB,EAAE;QACjD,IAAI,CAAC,IAAI,CAAC,GAAG,EACX,OAAO;QAGT,IAAI,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO;QAC7C,IAAI,IAAI,CAAA,GAAA,yCAAW,EAAE,WAAW,CAAA,IAAK,oBAAoB,EAAE,WAAW;QACtE,IAAI,MAAM,SAAS,CAAC,EAAE;QAEtB,IAAI,MAAM,MAAM,IAAI,UAAU,EAC5B,IAAI,CAAA,GAAA,yCAAW,EAAE,IAAI,UAAU,EAAE,CAAA,IAC/B,YAAY,EAAE,iBAAiB,GAAG,KAAK,YAAY,EAAE,iBAAiB,GAAG,EAAE,eAAe,GAAG,IAAK;QAItG,IAAI,MAAM,MAAM,IAAI,aAAa,EAAE;YACjC,IAAI,CAAA,GAAA,yCAAW,EAAE,IAAI,aAAa,EAAE,CAAA,IAAK,YAAY,EAAE,YAAY;YACnE,IAAI,MAAM,IACR,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO;QAEvC;QAEA,OAAO;IACT;IAGA,kBAAkB;QAChB,IAAI,OAAO,IAAI,CAAC,IAAI;QACpB,OAAQ,KAAK,OAAO;YAClB,KAAK;gBACH,OAAO,CAAA,GAAA,yCAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM;YAErC,KAAK;gBAAG;oBACN,IAAI,MAAM,EAAE;oBACZ,IAAI,WAAW,KAAK,OAAO,CAAC,OAAO;oBACnC,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;wBACxC,IAAI,OAAO,QAAQ,CAAC,EAAE,GAAG;wBACzB,IAAI,QAAQ,KAAK,SAAS,CAAC,GAAG,CAAC;wBAC/B,IAAI,IAAI,IAAI,CAAA,GAAA,yCAAI,EAAE,OAAO;oBAC3B;oBAEA,OAAO;gBACT;YAEA,KAAK;gBACH,MAAM,IAAI,MAAM;YAElB,KAAK;YACL,KAAK;gBACH,OAAO,CAAA,GAAA,yCAAI,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,GAAG,KAAK,YAAY,CAAC,MAAM;YAExE,KAAK;YACL,KAAK;gBAAI;oBACP,IAAI,MAAM,EAAE;oBACZ,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO,GACnC,IAAI,IAAI,IAAI,CAAA,GAAA,yCAAI,EAAE,MAAM,aAAa,EAAE,MAAM,WAAW,GAAG;oBAG7D,OAAO;gBACT;YAEA,KAAK;gBACH,MAAM,IAAI,MAAM;YAElB;gBACE,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,KAAK,OAAO,CAAC,CAAC;QACzD;IACF;IAGA,mBAAmB,GAAG,EAAE;QACtB,IAAI,OAAO,IAAI,CAAC,IAAI;QACpB,OAAQ,KAAK,OAAO;YAClB,KAAK;gBAAG;oBACN,IAAI,MAAM,EAAE;oBACZ,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,IACvB,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,KAC1B,IAAI,IAAI,CAAC;oBAIb,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,MAAM,EAAE;oBACZ,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,IAAK;wBACtC,IAAI,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;wBAC3B,IAAI,QAAQ,KAAK,SAAS,CAAC,GAAG,CAAC;wBAC/B,IAAI,cAAc,KAAK,aAAa,CAAC,GAAG,CAAC;wBACzC,IAAI,QAAQ,KAAK,OAAO,CAAC,GAAG,CAAC;wBAE7B,IAAK,IAAI,IAAI,OAAO,KAAK,KAAK,IAAK;4BACjC,IAAI,IAAI;4BACR,IAAI,gBAAgB,GAClB,IAAI,IAAI;iCACH;gCACL,IAAI,QAAQ,cAAc,IAAK,CAAA,IAAI,KAAI,IAAM,CAAA,KAAK,QAAQ,GAAG,CAAA;gCAC7D,IAAI,KAAK,eAAe,CAAC,GAAG,CAAC,UAAU;gCACvC,IAAI,MAAM,GACR,KAAK;4BAET;4BAEA,IAAI,MAAM,KACR,IAAI,IAAI,CAAC;wBAEb;oBACF;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAI;oBACP,IAAI,MAAM,EAAE;oBACZ,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO,GACnC,IAAI,OAAO,MAAM,OAAO,IAAI,OAAO,MAAM,OAAO,GAAI,CAAA,MAAM,WAAW,GAAG,MAAM,aAAa,AAAD,GACxF,IAAI,IAAI,CAAC,MAAM,aAAa,GAAI,CAAA,MAAM,MAAM,OAAO,AAAD;oBAItD,OAAO;gBACT;YAEA,KAAK;gBAAI;oBACP,IAAI,MAAM,EAAE;oBACZ,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO,GACnC,IAAI,QAAQ,MAAM,OAAO,EACvB,IAAI,IAAI,IAAI,CAAA,GAAA,yCAAI,EAAE,MAAM,aAAa,EAAE,MAAM,WAAW,GAAG;oBAI/D,OAAO;gBACT;YAEA;gBACE,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,KAAK,OAAO,CAAC,CAAC;QACzD;IACF;IAtRA,YAAY,SAAS,CAAE;QACrB,uCAAuC;QACvC,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW;YACvC,mBAAmB;YACnB;gBAAC;gBAAG;aAAG;YACP;gBAAC;gBAAG;aAAE;YACN;gBAAC;gBAAG;aAAE;YAEN,mBAAmB;YACnB;gBAAC;gBAAG;aAAE;YACN;gBAAC;gBAAG;aAAE;YACN;gBAAC;gBAAG;aAAE;YACN;gBAAC;gBAAG;aAAE;YACN;gBAAC;gBAAG;aAAE;SACP;QAED,iFAAiF;QACjF,IAAI,CAAC,IAAI,CAAC,IAAI,EACZ,KAAK,IAAI,QAAQ,UAAU,MAAM,CAAE;YACjC,IAAI,WAAW,CAAA,GAAA,yCAAU,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,QAAQ,GAAG;YACnF,IAAI,UAAU,CAAA,GAAA,yCAAiB,EAAE;YACjC,IAAI,SAAS;gBACX,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK;gBACtB,IAAI,CAAC,QAAQ,GAAG;YAClB;QACF;QAGF,IAAI,CAAC,IAAI,CAAC,IAAI,EACZ,MAAM,IAAI,MAAM;QAGlB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW;YAAC;gBAAC;gBAAG;aAAE;SAAC;QAChD,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,IACnC,IAAI,CAAC,GAAG,GAAG;IAEf;AAkPF;;;;;;;;;;AG3Re,MAAM;IAKnB,QAAQ,MAAM,EAAE,SAAS,EAAE;QACzB,IAAK,IAAI,aAAa,GAAG,aAAa,OAAO,MAAM,GAAG,GAAG,aAAc;YACrE,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE;YAChC,IAAI,QAAQ,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE;YACrC,SAAS,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;QAC1D;IACF;IAEA,WAAW,IAAI,EAAE,KAAK,EAAE;QACtB,IAAI,MAAM;QAEV,KAAK,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE;YAClC,IAAI,MAAM,QAAQ,CAAC,WAAW,EAC5B;YAGF,OAAQ,MAAM,OAAO;gBACnB,KAAK;oBACH,IAAI,CAAC,MAAM,QAAQ,CAAC,UAAU,EAC5B;oBAGF;gBACF,KAAK;oBACH,IAAI,MAAM,QAAQ,CAAC,QAAQ,IAAI,MAAM,QAAQ,CAAC,SAAS,EACrD;oBAGF;gBACF;oBACE,MAAM,IAAI,MAAM,CAAC,kCAAkC,EAAE,MAAM,OAAO,CAAC,CAAC;YACxE;YAEA,IAAI,MAAM;YACV,IAAI,IAAI,MAAM,QAAQ;YACtB,OAAQ,MAAM,MAAM;gBAClB,KAAK;oBACH,IAAI,UAAU,CAAA,GAAA,yCAAW,EAAE,EAAE,KAAK,EAAE,SAAU,IAAI;wBAChD,OAAO,AAAC,OAAO,KAAK,IAAI,IAAM,QAAQ,KAAK,KAAK;oBAClD;oBAEA,IAAI,WAAW,GACb,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;oBAG9B;gBAEF,KAAK;oBACH,IAAI,aAAa,GAAG,cAAc;oBAClC,IAAI,QAAQ,EAAE,SAAS,CAAC,UAAU,IAAI,OAAO,EAAE,SAAS,CAAC,UAAU,GAAG,EAAE,SAAS,CAAC,OAAO,EACvF,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;yBAE/D,aAAa,EAAE,KAAK,CAAC,GAAG;oBAG1B,IAAI,SAAS,EAAE,UAAU,CAAC,UAAU,IAAI,QAAQ,EAAE,UAAU,CAAC,UAAU,GAAG,EAAE,UAAU,CAAC,OAAO,EAC5F,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;oBAGrE,IAAI,QAAQ,AAAC,CAAA,aAAa,cAAc,EAAE,KAAK,CAAC,GAAG,AAAD,IAAK;oBACvD,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;oBACzB;gBAEF,KAAK;oBACH,IAAI,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,EAC/C,OAAO;oBAGT,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,EAAE,eAAe,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC3F;gBAEF;oBACE,MAAM,IAAI,MAAM,CAAC,qCAAqC,EAAE,MAAM,MAAM,CAAC,CAAC;YAC1E;YAEA,gEAAgE;YAChE,mEAAmE;YACnE,IAAI,MAAM,QAAQ,CAAC,QAAQ,EACzB,MAAM;iBAEN,OAAO;QAEX;QAEA,OAAO;IACT;IAzFA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI;IACvB;AAwFF;;;;ACnFe,MAAM;IAKnB,eAAe,MAAM,EAAE,SAAS,EAAE;QAChC,6EAA6E;QAC7E,IAAI,eAAe;QACnB,IAAI,aAAa;QACjB,IAAK,IAAI,QAAQ,GAAG,QAAQ,OAAO,MAAM,EAAE,QAAS;YAClD,IAAI,QAAQ,MAAM,CAAC,MAAM;YACzB,IAAI,MAAM,MAAM,EACd,aAAa;iBACR;gBACL,IAAI,iBAAiB,YACnB,IAAI,CAAC,eAAe,CAAC,QAAQ,WAAW,cAAc;gBAGxD,eAAe,aAAa;YAC9B;QACF;QAEA,IAAI,iBAAiB,YACnB,IAAI,CAAC,eAAe,CAAC,QAAQ,WAAW,cAAc;QAGxD,OAAO;IACT;IAEA,gBAAgB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE;QAC3D,IAAI,OAAO,MAAM,CAAC,aAAa;QAC/B,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI;QAE5B,0CAA0C;QAC1C,IAAI,KAAK,UAAU,CAAC,MAAM,GAAG,GAC3B,0BAA0B;QAC1B,QAAQ,IAAI,IAAI,AAAE,CAAA,KAAK,UAAU,CAAC,MAAM,GAAG,CAAA,IAAK,QAAQ,KAAK,GAAI,KAAK,UAAU,CAAC,MAAM;QAGzF,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ;QAC/C,IAAI,UAAU;QACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG;QAElC,8DAA8D;QAC9D,IAAK,IAAI,QAAQ,eAAe,GAAG,SAAS,YAAY,QAAS;YAC/D,IAAI,OAAO,MAAM,CAAC,MAAM;YACxB,IAAI,UAAU,KAAK,IAAI;YACvB,IAAI,WAAW,SAAS,CAAC,MAAM;YAE/B,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,KAAK,UAAU,CAAC,EAAE;YAE9D,IAAI,mBAAmB,iBAAiB;gBACtC,SAAS,OAAO,GAAG,SAAS,OAAO,GAAG;gBAEtC,gBAAgB;gBAChB,OAAQ;oBACN,KAAK;oBACL,KAAK;wBACH,0BAA0B;wBAC1B,SAAS,OAAO,IAAI,QAAQ,IAAI,GAAG,QAAQ,KAAK,GAAG,IAAI,QAAQ,IAAI;wBACnE;oBAEF,KAAK;oBACL,KAAK;oBACL,KAAK;wBACH,aAAa;wBACb,SAAS,OAAO,IAAI,QAAQ,IAAI,GAAG,QAAQ,IAAI;wBAC/C;oBAEF,KAAK;oBACL,KAAK;oBACL,KAAK;wBACH,cAAc;wBACd,SAAS,OAAO,IAAI,QAAQ,IAAI,GAAG,QAAQ,KAAK,GAAG,QAAQ,IAAI;wBAC/D;oBAEF;wBACE,eAAe;wBACf,SAAS,OAAO,IAAI,QAAQ,IAAI,GAAG,AAAC,CAAA,QAAQ,KAAK,GAAG,QAAQ,KAAK,AAAD,IAAK,IAAI,QAAQ,IAAI;gBACzF;gBAEA,gBAAgB;gBAChB,OAAQ;oBACN,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,KAAK;wBACH,8DAA8D;wBAC9D,IAAI,mBAAmB,yBAAyB,mBAAmB,kBACjE,QAAQ,IAAI,IAAI;wBAGlB,SAAS,OAAO,GAAG,CAAC,QAAQ,IAAI,GAAG,QAAQ,IAAI;wBAC/C,QAAQ,IAAI,IAAI,QAAQ,MAAM;wBAC9B;oBAEF,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,KAAK;wBACH,8DAA8D;wBAC9D,IAAI,mBAAmB,oBAAoB,mBAAmB,wBAC5D,QAAQ,IAAI,IAAI;wBAGlB,SAAS,OAAO,GAAG,QAAQ,IAAI,GAAG,QAAQ,IAAI;wBAC9C,QAAQ,IAAI,IAAI,QAAQ,MAAM;wBAC9B;gBACJ;gBAEA,SAAS,QAAQ,GAAG,SAAS,QAAQ,GAAG;gBACxC,SAAS,OAAO,IAAI;gBACpB,SAAS,OAAO,IAAI;YAEtB,OAAO;gBACL,WAAW,SAAS,QAAQ;gBAC5B,WAAW,SAAS,QAAQ;YAC9B;QACF;QAEA;IACF;IAEA,kBAAkB,SAAS,EAAE;QAC3B,IAAI,iBAAiB,CAAA,GAAA,wBAAgB,EAAE;QAEvC,0CAA0C;QAC1C,IAAI,AAAC,CAAA,YAAY,IAAI,MAAO,QAAQ;YAClC,IAAI,mBAAmB,iBACrB,OAAQ;gBACN,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;oBACH,OAAO;gBAET,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;oBACH,OAAO;gBAET,KAAK;oBACH,OAAO;YACX;iBACK,IAAI,cAAc,QACvB,OAAO;QAEX;QAEA,OAAQ;YACN,SAAS;YAET,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO;YAET,KAAK;gBACH,OAAO;YAET,KAAK;gBACH,OAAO;YAET,KAAK;YACL,KAAK;gBACH,OAAO;YAET,KAAK;gBACH,OAAO;YAET,KAAK;gBACH;YAEF,oBAAoB;YAEpB,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO;YAET,KAAK;YACL,KAAK;gBACH,OAAO;YAET,OAAO;YAEP,KAAK;gBACH,OAAO;YAET,KAAK;gBACH,OAAO;YAET,MAAM;YAEN,KAAK;gBACH,OAAO;YAET,KAAK;gBACH,OAAO;YAET,UAAU;YAEV,KAAK;YACL,KAAK;gBACH,OAAO;YAET,KAAK;gBACH,OAAO;QACX;QAEA,OAAO;IACT;IA7OA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG;IACd;AA4OF;;;AEzPA;;CAEC,GACc,MAAM;IA2BnB;;;GAGC,GACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAC9B;IAEA;;;GAGC,GACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAC9B;IAEA,SAAS,CAAC,EAAE,CAAC,EAAE;QACb,IAAI,KAAK,GAAG,CAAC,OAAO,UAAU;YAC5B,IAAI,IAAI,IAAI,CAAC,IAAI,EACf,IAAI,CAAC,IAAI,GAAG;YAGd,IAAI,IAAI,IAAI,CAAC,IAAI,EACf,IAAI,CAAC,IAAI,GAAG;QAEhB;QAEA,IAAI,KAAK,GAAG,CAAC,OAAO,UAAU;YAC5B,IAAI,IAAI,IAAI,CAAC,IAAI,EACf,IAAI,CAAC,IAAI,GAAG;YAGd,IAAI,IAAI,IAAI,CAAC,IAAI,EACf,IAAI,CAAC,IAAI,GAAG;QAEhB;IACF;IAEA,OAAO;QACL,OAAO,IAAI,yCAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;IAC5D;IAlEA,YAAY,OAAO,QAAQ,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAE;QAChF;;;KAGC,GACD,IAAI,CAAC,IAAI,GAAG;QAEZ;;;KAGC,GACD,IAAI,CAAC,IAAI,GAAG;QAEZ;;;KAGC,GACD,IAAI,CAAC,IAAI,GAAG;QAEZ;;;KAGC,GACD,IAAI,CAAC,IAAI,GAAG;IACd;AA2CF;;;;ACrEA,kEAAkE;AAClE,sEAAsE;AACtE,sEAAsE;AACtE,MAAM,wCAAkB;IACtB,oBAAoB;IACpB,QAAQ;IACR,kBAAkB;IAClB,UAAU;IACV,SAAS;IACT,UAAU;IACV,OAAO;IACP,WAAW;IACX,OAAO;IACP,SAAS;QAAC;QAAQ;KAAO;IACzB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,QAAQ;IACR,qBAAqB;IACrB,QAAQ;IACR,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,UAAU;IACV,YAAY;QAAC;QAAQ;KAAO;IAC5B,SAAS;IACT,UAAU;IACV,sBAAsB;IACtB,SAAS;IACT,UAAU;IACV,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,OAAO;IACP,UAAU;QAAC;QAAQ;KAAO;IAC1B,UAAU;QAAC;QAAQ;KAAO;IAC1B,QAAQ;IACR,KAAK;IACL,SAAS;IACT,QAAQ;IACR,UAAU;IACV,cAAc;IACd,sBAAsB;IACtB,YAAY;IACZ,UAAU;IACV,UAAU;IACV,UAAU;IACV,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,SAAS;QAAC;QAAQ;KAAO;IACzB,QAAQ;IACR,UAAU;IACV,KAAK;IACL,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;IACV,UAAU;IACV,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,SAAS;IACT,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,sBAAsB;IACtB,WAAW;QAAC;QAAQ;KAAO;IAC3B,MAAM;IACN,WAAW;IACX,KAAK;IACL,cAAc;IACd,SAAS;QAAC;QAAQ;KAAO;IACzB,mBAAmB;IACnB,WAAW;IACX,KAAK;IACL,OAAO;IACP,UAAU;IACV,YAAY;IACZ,OAAO;QAAC;QAAQ;KAAO;IACvB,SAAS;IACT,WAAW;IACX,aAAa;IACb,YAAY;IACZ,UAAU;IACV,uBAAuB;IACvB,iBAAiB;IACjB,YAAY;IACZ,MAAM;IACN,wBAAwB;IACxB,QAAQ;IACR,OAAO;IACP,WAAW;IACX,mBAAmB;IACnB,YAAY;IACZ,SAAS;IACT,SAAS;IACT,SAAS;IACT,WAAW;IACX,SAAS;IACT,cAAc;IACd,WAAW;IACX,cAAc;IACd,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;IACR,aAAa;IACb,OAAO;QAAC;QAAQ;KAAO;IACvB,UAAU;IACV,QAAQ;QAAC;QAAQ;KAAO;IACxB,UAAU;IACV,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,UAAU;IACV,KAAK;IACL,aAAa;IACb,aAAa;IACb,WAAW;IACX,IAAI;IACJ,WAAW;IACX,QAAQ;IACR,SAAS;AACX;AAEA,MAAM,yCAAmB,CAAC;AAC1B,IAAK,IAAI,UAAU,sCAAiB;IAClC,IAAI,MAAM,qCAAe,CAAC,OAAO;IACjC,IAAI,MAAM,OAAO,CAAC,MAChB,KAAK,IAAI,KAAK,IACZ,sCAAgB,CAAC,EAAE,GAAG;SAGxB,sCAAgB,CAAC,IAAI,GAAG;AAE5B;AAEO,SAAS,0CAAY,MAAM;IAChC,OAAO,qCAAe,CAAC,OAAO;AAChC;AAEO,SAAS,0CAAa,GAAG;IAC9B,OAAO,sCAAgB,CAAC,IAAI;AAC9B;AAEO,SAAS,0CAAU,MAAM;IAC9B,IAAI,MAAM,OAAO,MAAM;IACvB,IAAI,MAAM;IACV,MAAO,MAAM,IAAK;QAChB,IAAI,OAAO,OAAO,UAAU,CAAC;QAE7B,oCAAoC;QACpC,IAAI,UAAU,QAAQ,QAAQ,UAAU,MAAM,KAAK;YACjD,IAAI,OAAO,OAAO,UAAU,CAAC;YAE7B,mCAAmC;YACnC,IAAI,UAAU,QAAQ,QAAQ,QAAQ;gBACpC;gBACA,OAAO,AAAC,CAAA,AAAC,CAAA,OAAO,KAAI,KAAM,EAAC,IAAM,CAAA,OAAO,KAAI,IAAK;YACnD;QACF;QAEA,IAAI,SAAS,CAAA,GAAA,gBAAQ,EAAE;QACvB,IAAI,WAAW,YAAY,WAAW,eAAe,WAAW,WAC9D,OAAO,qCAAe,CAAC,OAAO;IAElC;IAEA,OAAO,sCAAgB,OAAO;AAChC;AAEO,SAAS,0CAAc,UAAU;IACtC,IAAK,IAAI,IAAI,GAAG,IAAI,WAAW,MAAM,EAAE,IAAK;QAC1C,IAAI,YAAY,UAAU,CAAC,EAAE;QAC7B,IAAI,SAAS,CAAA,GAAA,gBAAQ,EAAE;QACvB,IAAI,WAAW,YAAY,WAAW,eAAe,WAAW,WAC9D,OAAO,qCAAe,CAAC,OAAO;IAElC;IAEA,OAAO,sCAAgB,OAAO;AAChC;AAEA,yDAAyD;AACzD,MAAM,4BAAM;IACV,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IAEN,wFAAwF;IACxF,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM,KAAQ,kBAAkB;AAClC;AAEO,SAAS,0CAAU,MAAM;IAC9B,IAAI,yBAAG,CAAC,OAAO,EACb,OAAO;IAGT,OAAO;AACT;;;AF/Ne,MAAM;IAmDnB;;;GAGC,GACD,IAAI,eAAe;QACjB,IAAI,QAAQ;QACZ,KAAK,IAAI,YAAY,IAAI,CAAC,SAAS,CACjC,SAAS,SAAS,QAAQ;QAG5B,OAAO;IACT;IAED;;;EAGC,GACA,IAAI,gBAAgB;QAClB,IAAI,SAAS;QACb,KAAK,IAAI,YAAY,IAAI,CAAC,SAAS,CACjC,UAAU,SAAS,QAAQ;QAG7B,OAAO;IACT;IAED;;;EAGC,GACA,IAAI,OAAO;QACT,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG;QAElB,IAAI,IAAI;QACR,IAAI,IAAI;QACR,IAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAS;YACvD,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM;YAC9B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,IAAI,IAAI,MAAM,IAAI;YAElB,KAAK,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO;YAC5D,KAAK,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO;YAE5D,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,QAAQ;QACjB;QAEA,OAAO;IACT;IAlGA,YAAY,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAE;QACzD;;;KAGC,GACD,IAAI,CAAC,MAAM,GAAG;QAEd;;;KAGC,GACD,IAAI,CAAC,SAAS,GAAG;QAEjB;;;KAGC,GACD,IAAI,CAAC,MAAM,GAAG;QAEd;;;;KAIC,GACD,IAAI,CAAC,QAAQ,GAAG,YAAY;QAE5B;;;;KAIC,GACD,IAAI,CAAC,SAAS,GAAG,aAAa,0CAAiB;QAE/C;;;;KAIC,GACD,IAAI,CAAC,QAAQ,GAAG,CAAC;QAEjB,gCAAgC;QAChC,IAAI,MAAM,OAAO,CAAC,WAChB,KAAK,IAAI,OAAO,SACd,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG;aAElB,IAAI,OAAO,aAAa,UAC7B,IAAI,CAAC,QAAQ,GAAG;IAEpB;AAmDF;;;AG3GA;;CAEC,GACc,MAAM;IACnB,YAAY,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAE;QAChE;;;KAGC,GACD,IAAI,CAAC,QAAQ,GAAG;QAEhB;;;KAGC,GACD,IAAI,CAAC,QAAQ,GAAG;QAEhB;;;KAGC,GACD,IAAI,CAAC,OAAO,GAAG;QAEf;;;KAGC,GACD,IAAI,CAAC,OAAO,GAAG;IACjB;AACF;;;;AE7BA,sFAAsF;AACtF,kGAAkG;AAClG,MAAM,iCAAW;IACf,wBAAwB;QACtB,MAAM;QACN,WAAW;QACX,iBAAiB;IACnB;IACA,WAAW;QACT,MAAM;QACN,WAAW;QACX,mBAAmB;QACnB,iBAAiB;QACjB,eAAe;QACf,WAAW;QACX,eAAe;QACf,oBAAoB;QACpB,kBAAkB;QAClB,wBAAwB;QACxB,iBAAiB;QACjB,qBAAqB;QACrB,qBAAqB;IACvB;IACA,mBAAmB;QACjB,MAAM;QACN,WAAW;QACX,aAAa;QACb,oBAAoB;QACpB,SAAS;IACX;IACA,YAAY;QACV,MAAM;QACN,WAAW;IACb;IACE,6CAA6C;IAC7C,6CAA6C;IAC7C,6CAA6C;IAC7C,6CAA6C;IAC7C,6CAA6C;IAC7C,6CAA6C;IAC/C,sBAAsB;QACpB,MAAM;QACN,WAAW;QACX,yBAAyB;IAC3B;IACA,yBAAyB;QACvB,MAAM;QACN,WAAW;QACX,yBAAyB;IAC3B;IACA,eAAe;QACb,MAAM;QACN,WAAW;QACX,mBAAmB;QACnB,qBAAqB;QACrB,mBAAmB;QACnB,qBAAqB;IACvB;IACA,YAAY;QACV,MAAM;QACN,WAAW;QACX,oBAAoB;QACpB,kBAAkB;QAClB,wBAAwB;QACxB,sBAAsB;QACtB,iBAAiB;IACnB;IACA,YAAY;QACV,MAAM;QACN,WAAW;QACX,gBAAgB;QAChB,gBAAgB;QAChB,qBAAqB;IACvB;IACA,kBAAkB;QAChB,MAAM;QACN,WAAW;QACX,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,UAAU;QACV,qBAAqB;IACvB;IACA,WAAW;QACT,MAAM;QACN,WAAW;QACX,aAAa;QACb,mBAAmB;QACnB,mBAAmB;IACrB;IACA,uBAAuB;QACrB,MAAM;QACN,WAAW;QACX,gBAAgB;IAClB;IACA,mBAAmB;QACjB,MAAM;QACN,WAAW;QACX,qBAAqB;QACrB,oBAAoB;QACpB,aAAa;IACf;IACE,qBAAqB;IACrB,iBAAiB;IACjB,wBAAwB;IAC1B,oBAAoB;QAClB,MAAM;QACN,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,mBAAmB;QACnB,yBAAyB;QACzB,eAAe;QACf,mBAAmB;IACrB;IACA,cAAc;QACZ,MAAM;QACN,WAAW;QACX,aAAa;QACb,UAAU;QACV,cAAc;QACd,UAAU;QACV,mBAAmB;QACnB,sBAAsB;QACtB,aAAa;IACf;IACA,uBAAuB;QACrB,MAAM;QACN,WAAW;QACX,cAAc;IAChB;IACE,uBAAuB;IACzB,kBAAkB;QAChB,MAAM;QACN,WAAW;QACX,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;IAChB;IACA,cAAc;QACZ,MAAM;QACN,WAAW;QACX,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,iBAAiB;QACjB,aAAa;QACb,UAAU;IACZ;IACA,gBAAgB;QACd,MAAM;QACN,WAAW;QACX,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,qBAAqB;QACrB,oBAAoB;QACpB,oBAAoB;QACpB,kBAAkB;QAClB,mBAAmB;QACnB,gBAAgB;QAChB,eAAe;QACf,4BAA4B;IAC9B;IACA,YAAY;QACV,MAAM;QACN,WAAW;QACX,kBAAkB;QAClB,kBAAkB;IACpB;IACA,aAAa;QACX,MAAM;QACN,WAAW;QACX,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,kBAAkB;QAClB,qBAAqB;QACrB,kBAAkB;IACpB;IACA,iBAAiB;QACf,MAAM;QACN,WAAW;QACX,mBAAmB;IACrB;IACE,mBAAmB;IACnB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;IACzB,yBAAyB;IACzB,2BAA2B;IAC7B,YAAY;QACV,MAAM;QACN,WAAW;QACX,cAAc;QACd,eAAe;QACf,sBAAsB;QACtB,kBAAkB;QAClB,0BAA0B;QAC1B,uBAAuB;QACvB,kBAAkB;QAClB,wBAAwB;QACxB,mBAAmB;QACnB,uBAAuB;QACvB,8BAA8B;IAChC;IACA,aAAa;QACX,MAAM;QACN,WAAW;QACX,eAAe;QACf,kBAAkB;IACpB;IACA,oBAAoB;QAClB,MAAM;QACN,WAAW;QACX,qBAAqB;QACrB,wBAAwB;QACxB,qBAAqB;IACvB;IACA,sBAAsB;QACpB,MAAM;QACN,WAAW;QACX,sBAAsB;QACtB,0BAA0B;QAC1B,wBAAwB;IAC1B;IACA,UAAU;QACR,MAAM;QACN,WAAW;QACX,2DAA2D;QAC3D,wDAAwD;QACxD,UAAU;IACZ;IACA,uBAAuB;QACrB,MAAM;QACN,WAAW;QACX,yBAAyB;QACzB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;IACpB;IACA,yBAAyB;QACvB,MAAM;QACN,WAAW;QACX,2BAA2B;QAC3B,mBAAmB;QACnB,mBAAmB;QACnB,qBAAqB;QACrB,oBAAoB;QACpB,oBAAoB;IACtB;IACA,2BAA2B;QACzB,MAAM;QACN,WAAW;QACX,0BAA0B;QAC1B,2BAA2B;IAC7B;IACA,gBAAgB;QACd,MAAM;QACN,WAAW;QACX,uEAAuE;QACvE,oEAAoE;QACpE,gBAAgB;IAClB;IACA,qBAAqB;QACnB,MAAM;QACN,WAAW;QACX,qBAAqB;QACrB,sBAAsB;IACxB;IACA,eAAe;QACb,MAAM;QACN,WAAW;QACX,oBAAoB;QACpB,mBAAmB;IACrB;IACA,uBAAuB;QACrB,MAAM;QACN,WAAW;QACX,uBAAuB;QACvB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,uBAAuB;QACvB,sBAAsB;QACtB,sBAAsB;QACtB,oBAAoB;IACtB;IACA,sBAAsB;QACpB,MAAM;QACN,WAAW;QACX,sBAAsB;QACtB,iBAAiB;QACjB,2BAA2B;IAC7B;IACA,WAAW;QACT,MAAM;QACN,WAAW;QACX,kBAAkB;QAClB,oBAAoB;QACpB,qBAAqB;IACvB;IACA,WAAW;QACT,MAAM;QACN,WAAW;QACX,kBAAkB;QAClB,oBAAoB;QACpB,qBAAqB;IACvB;IACA,aAAa;QACX,MAAM;QACN,WAAW;IACb;IACA,iBAAiB;QACf,MAAM;QACN,WAAW;QACX,mBAAmB;QACnB,sBAAsB;QACtB,iBAAiB;QACjB,mBAAmB;IACrB;AACF;AAEA,MAAM,gCAAU,CAAC,MAAM,WAAa;QAAC,8BAAQ,CAAC,KAAK,CAAC,IAAI;QAAE,8BAAQ,CAAC,KAAK,CAAC,SAAS;KAAC;AAEnF,MAAM,kCAAY;IAChB,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAE3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAE3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAC3B,OAAO;IACP,4FAA4F;IAC5F,4FAA4F;IAC5F,qCAAqC;IACrC,sBAAsB;IACtB,2BAA2B;IAC3B,oCAAoC;IACpC,4BAA4B;IAC5B,mCAAmC;IAEnC,MAAM,8BAAQ,uBAAuB;IACrC,MAAM,8BAAQ,wBAAwB;IACtC,MAAM,8BAAQ,6BAA6B;IAC3C,MAAM,8BAAQ,6BAA6B;IAC3C,MAAM,8BAAQ,wBAAwB;IACtC,MAAM,8BAAQ,wBAAwB;IACtC,MAAM,8BAAQ,qBAAqB;IACnC,MAAM,8BAAQ,aAAa;IAC3B,MAAM,8BAAQ,aAAa;IAE3B,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,cAAc;IAE5B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAE7B,MAAM,8BAAQ,iBAAiB;IAC/B,MAAM,8BAAQ,iBAAiB;IAC/B,wEAAwE;IAExE,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,cAAc;IAC5B,MAAM,8BAAQ,sBAAsB;IAEpC,kDAAkD;IAClD,qCAAqC;IAErC,MAAM,8BAAQ,wBAAwB;IACtC,MAAM,8BAAQ,wBAAwB;IACtC,MAAM,8BAAQ,wBAAwB;IACtC,MAAM,8BAAQ,iBAAiB;IAC/B,MAAM,8BAAQ,iBAAiB;IAC/B,MAAM,8BAAQ,oBAAoB;IAClC,MAAM,8BAAQ,oBAAoB;IAClC,MAAM,8BAAQ,oBAAoB;IAClC,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,eAAe;IAC7B,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,kBAAkB;IAChC,MAAM,8BAAQ,YAAY;IAC1B,MAAM,8BAAQ,gBAAgB;IAC9B,MAAM,8BAAQ,qBAAqB;IAEnC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;IACvC,MAAM,8BAAQ,yBAAyB;AACzC;AAEE,sFAAsF;AAExF,yBAAyB;AACzB,IAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IACvB,+BAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG;IAAC,+BAAS,qBAAqB,CAAC,IAAI;IAAE;CAAE;AAGjF,yBAAyB;AACzB,IAAI,mCAAa,CAAC;AAClB,IAAK,IAAI,MAAM,gCAAW;IACxB,IAAI,MAAM,+BAAS,CAAC,GAAG;IACvB,IAAI,gCAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MACxB,gCAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;IAGxB,gCAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAC/B;AAIO,SAAS,0CAAW,QAAQ;IACjC,IAAI,MAAM,CAAC;IACX,IAAK,IAAI,KAAK,SAAU;QACtB,IAAI;QACJ,IAAI,IAAI,+BAAS,CAAC,EAAE,EAAE;YACpB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YAGf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE;QAC/B;IACF;IAEA,OAAO;AACT;AAEA,kDAAkD;AAClD,mCAAmC;AACnC,SAAS,wCAAkB,CAAC;IAC1B,IAAI,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,MAAM,OACR,IAAI,WAAW,8BAAQ,CAAC,KAAK,IAAI,8BAAQ,CAAC,KAAK,CAAC,IAAI;SAEpD,IAAI,WAAW;IAGjB,IAAI,MAAM,UACR,IAAI,cAAc,8BAAQ,CAAC,KAAK,IAAI,8BAAQ,CAAC,KAAK,CAAC,QAAQ;SAE3D,IAAI,cAAc;IAGpB,OAAO;QAAC;QAAU;KAAY;AAChC;AAMO,SAAS,0CAAW,QAAQ;IACjC,IAAI,MAAM,CAAC;IACX,IAAI,MAAM,OAAO,CAAC,WAChB,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;QACxC,IAAI;QACJ,IAAI,IAAI,wCAAkB,QAAQ,CAAC,EAAE;QACrC,IAAI,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAChD,GAAG,CAAC,EAAE,GAAG;IAEb;SAEK,IAAI,OAAO,aAAa,UAC7B,IAAK,IAAI,QAAQ,SAAU;QACzB,IAAI,UAAU,QAAQ,CAAC,KAAK;QAC5B,IAAK,IAAI,WAAW,QAAS;YAC3B,IAAI;YACJ,IAAI,IAAI,wCAAkB;gBAAC;gBAAM;aAAQ;YACzC,IAAI,OAAO,CAAC,QAAQ,IAAK,CAAA,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,gCAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,AAAD,GACpE,GAAG,CAAC,EAAE,GAAG;QAEb;IACF;IAGF,OAAO,OAAO,IAAI,CAAC;AACrB;;;;;;;;AG3hBe,MAAM;IAKnB,OAAO,KAAK,EAAE;QACZ,OAAQ,IAAI,CAAC,KAAK,CAAC,OAAO;YACxB,KAAK;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAEnC,KAAK;YACL,KAAK;gBAAG;oBACN,IAAI,MAAM;oBACV,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG;oBAEjD,MAAO,OAAO,IAAK;wBACjB,IAAI,MAAM,AAAC,MAAM,OAAQ;wBACzB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;wBAElC,8BAA8B;wBAC9B,IAAI,IAAI,UAAU,KAAK,QACrB,OAAO;wBAGT,IAAI,QAAQ,IAAI,UAAU,EACxB,MAAM,MAAM;6BACP,IAAI,QAAQ,IAAI,SAAS,EAC9B,MAAM,MAAM;6BACP;4BACL,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,GACzB,OAAO,IAAI,KAAK;iCAEhB,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC;wBAE7C;oBACF;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,MAAM;oBACV,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG;oBAEjD,MAAO,OAAO,IAAK;wBACjB,IAAI,MAAM,AAAC,MAAM,OAAQ;wBACzB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;wBAElC,8BAA8B;wBAC9B,IAAI,IAAI,KAAK,KAAK,QAChB,OAAO;wBAGT,IAAI,QAAQ,IAAI,KAAK,EACnB,MAAM,MAAM;6BACP,IAAI,QAAQ,IAAI,KAAK,EAC1B,MAAM,MAAM;6BAEZ,OAAO,IAAI,KAAK;oBAEpB;oBAEA,OAAO;gBACT;YAEA,KAAK;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAEzD;gBACE,MAAM,IAAI,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxE;IACF;IAGA,eAAe,UAAU,EAAE;QACzB,IAAI,MAAM,EAAE;QAEZ,OAAQ,IAAI,CAAC,KAAK,CAAC,OAAO;YACxB,KAAK;YACL,KAAK;gBACH,KAAK,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CACrC,IAAK,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,YACjD,IAAI,IAAI,IAAI,CAAA,GAAA,yCAAI,EAAE,QAAQ,UAAU,EAAE,QAAQ,SAAS,GAAG;qBACrD;oBACL,IAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,MAAM,CAAC,MAAM,EAAE,QACjD,IAAI,QAAQ,MAAM,CAAC,MAAM,KAAK,YAC5B,IAAI,IAAI,CAAC,QAAQ,UAAU,GAAG;gBAGpC;gBAGF;YAGF,KAAK;gBACH,KAAK,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CACrC,IAAI,QAAQ,KAAK,KAAK,YACpB,IAAI,IAAI,CAAC,QAAQ,KAAK;gBAI1B;YAGF,KAAK;gBACH,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,YAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG;gBAIrC;YAGF;gBACE,MAAM,IAAI,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxE;QAEA,OAAO;IACT;IAvHA,YAAY,KAAK,CAAE;QACjB,IAAI,CAAC,KAAK,GAAG;IACf;AAsHF;;;;;;AD1HA,MAAM,4CAAsB;AAC5B,MAAM,4CAAsB;AAE5B,MAAM,0CAAoB;AAC1B,MAAM,4CAAsB;AAC5B,MAAM,4CAAsB;AAC5B,MAAM,0CAAoB;AAE1B,MAAM,qCAAe;AAEN,MAAM;IAMnB,QAAQ,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;QACrC,IAAI,eAAe,2CAAqB,8EAA8E;QACtH,IAAI,QAAQ,UAAU,OAAO,MAAM,GAAG,IAAI;QAC1C,IAAI,MAAM,UAAU,KAAK;QAEzB,MAAO,AAAC,QAAQ,KAAK,SAAS,OAAO,MAAM,IAAM,QAAQ,MAAM,SAAS,GAAK;YAC3E,IAAI,QAAQ;YACZ,IAAI,YAAY;YAChB,IAAI,gBAAgB;YAEpB,IAAI,UAAU,OAAO,MAAM,IAAI,UAAU,IACvC,YAAY;iBACP;gBACL,QAAQ,MAAM,CAAC,MAAM;gBACrB,IAAI,MAAM,EAAE,KAAK,QACf,YAAY;qBACP;oBACL,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC5C,IAAI,aAAa,MACf,YAAY;gBAEhB;YACF;YAEA,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7C,IAAI,aAAa,GAAG,CAAC,UAAU;YAC/B,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;YAE/C,IAAI,cAAc,2CAAqB,cAAe,2CAAqB;gBACzE,aAAa,OAAO,OAAO;gBAC3B,gBAAgB,CAAE,CAAA,MAAM,KAAK,GAAG,kCAAW;YAC7C;YAEA,eAAe,MAAM,QAAQ;YAC7B,IAAI,eACF,SAAS;QAEb;QAEA,OAAO;IACT;IAEA;;;GAGC,GACD,SAAS,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,IAAI,GAAG,EAAE;QAC3C,IAAI,QAAQ,GAAG,CAAC,QACd;QAGF,QAAQ,GAAG,CAAC;QAEZ,IAAI,YAAC,QAAQ,cAAE,UAAU,cAAE,UAAU,EAAC,GAAG,IAAI,CAAC,UAAU;QACxD,IAAI,MAAM,WAAW,OAAO,CAAC;QAE7B,0BAA0B;QAC1B,IAAK,IAAI,YAAY,GAAG,YAAY,UAAU,YAAa;YACzD,IAAI,aAAa,GAAG,CAAC,UAAU;YAC/B,IAAI,QAAQ,WAAW,OAAO,CAAC;YAE/B,8BAA8B;YAC9B,KAAK,IAAI,SAAS,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAY;gBAC5D,IAAI,KAAK,KAAK,EACZ,KAAK,KAAK,CAAC,OAAO;gBAGpB,IAAI,MAAM,QAAQ,KAAK,GACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,MAAM,QAAQ,EAAE;gBAGtC,IAAI,KAAK,IAAI,EACX,KAAK,IAAI,CAAC,OAAO;YAErB;QACF;IACF;IAjFA,YAAY,UAAU,CAAE;QACtB,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA,GAAA,wCAAa,EAAE,WAAW,UAAU;IAC7D;AA+EF;;;;;AD3FA,0BAA0B;AAC1B,MAAM,mCAAa;AACnB,MAAM,kCAAa;AACnB,MAAM,6BAAa;AAEnB,mDAAmD;AACnD,MAAM,iCAAW;AAEjB,uBAAuB;AACvB,MAAM,sCAAiB;AACvB,MAAM,uCAAiB;AAEvB,wBAAwB;AACxB,MAAM,kCAAc;AACpB,MAAM,mCAAc;AACpB,MAAM,oCAAc;AAEpB,MAAM,sCAA0B;AAChC,MAAM,0CAA0B;AAChC,MAAM,gDAA0B;AAEhC,wBAAwB;AACxB,MAAM,gDAA0B;AAChC,MAAM,+CAA0B;AAChC,MAAM,8CAA0B;AAChC,MAAM,6CAA0B;AAChC,MAAM,6CAA0B;AAChC,MAAM,4CAA0B;AAEjB,MAAM;IAYnB,kEAAkE;IAClE,2EAA2E;IAC3E,QAAQ,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE;QAC7B,KAAK,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE;YAClC,IAAI,QAAQ,MAAM,YAAY;YAE9B,wCAAwC;YACxC,KAAK,IAAI,WAAW,MAAM,QAAQ,CAAE;gBAClC,IAAI;gBACJ,IAAI,IAAI,QAAQ,CAAC,QAAQ,WAAW,CAAC,EAAE;oBACrC,IAAI,CAAC,CAAC,QAAQ,cAAc,CAAC,EAAE;wBAC7B,SAAS,QAAQ,YAAY;wBAC7B,SAAS,QAAQ,WAAW;oBAC9B,OAAO,IAAI,CAAC,CAAC,QAAQ,cAAc,CAAC,KAAK,OAAO;wBAC9C,SAAS,CAAC,QAAQ,YAAY;wBAC9B,SAAS,CAAC,QAAQ,WAAW;oBAC/B;gBACF;YACF;YAEA,KAAK,IAAI,YAAY,MAAM,SAAS,CAClC,IAAI,SAAS,eAAe,GAAG,OAC7B,IAAI,CAAC,eAAe,CAAC,UAAU;QAGrC;QAEA,wBAAwB;QACxB,IAAI,QAAQ,OAAO,MAAM,GAAG;QAC5B,MAAO,SAAS,EAAG;YACjB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,QACvB,OAAO,MAAM,CAAC,OAAO;YAGvB;QACF;QAEA,OAAO;IACT;IAEA,gBAAgB,QAAQ,EAAE,MAAM,EAAE;QAChC,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG;YAC5B,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM;YACjE;QACF;QAEA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,SAAS,GAAG;QACjB,IAAI,CAAC,WAAW,GAAG;QAEnB,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,UAAU,IAAI,CAAC,YAAY;QAE/B,IAAI,UAAU,CAAC,CAAE,CAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,uCAAgB;QAC1D,OAAO,aAAa,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS;IACpD;IAGA,gBAAgB,QAAQ,EAAE;QACxB,OAAO,IAAI,CAAA,GAAA,wCAAc,EAAE,SAAS,KAAK,CAAC,UAAU;IACtD;IAEA,eAAe;QACb,OAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,KAAK;gBACH,OAAO,IAAI,CAAC,wBAAwB;YACtC,KAAK;gBACH,OAAO,IAAI,CAAC,6BAA6B;YAC3C,KAAK;gBACH,OAAO,IAAI,CAAC,eAAe;YAC7B,KAAK;gBACH,OAAO,IAAI,CAAC,iCAAiC;YAC/C,KAAK;gBACH,OAAO,IAAI,CAAC,qBAAqB;YACnC;gBACE,MAAM,IAAI,MAAM,CAAC,4BAA4B,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvE;IACF;IAEA,yBAAyB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QAC5C,IAAI,MAAM,KAAK,GAAG,kCAChB,IAAI,CAAC,UAAU,GAAG;QAGpB,IAAI,MAAM,KAAK,GAAG,iCAChB,IAAI,CAAC,SAAS,GAAG;QAGnB,oCAAc,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,4BAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS;IAChF;IAEA,8BAA8B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QACjD,IAAI,eAAe,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK;QAC9D,IAAI,MAAM,SAAS,KAAK,QAAQ;YAC9B,IAAI,SAAS,aAAa,OAAO,CAAC,MAAM,SAAS;YACjD,IAAI,cAAc,IAAI,CAAA,GAAA,wCAAa,EAAE;YACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,IAAI,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE;YACrC,IAAI,KACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,UAAU;QAE5E;QAEA,IAAI,MAAM,YAAY,KAAK,QAAQ;YACjC,IAAI,SAAS,aAAa,OAAO,CAAC,MAAM,YAAY;YACpD,IAAI,cAAc,IAAI,CAAA,GAAA,wCAAa,EAAE;YACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,IAAI,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE;YACrC,IAAI,KACF,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,UAAU;QAEjE;QAEA,IAAI,MAAM,KAAK,GAAG,gCAChB,IAAI,CAAC,WAAW,GAAG;IAEvB;IAEA,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QACnC,IAAI,MAAM,KAAK,GAAG,qCAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAG1B,IAAI,MAAM,KAAK,GAAG,sCAAgB;YAChC,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe;YACjD,IAAI,aAAa,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;YAC/C,IAAI,eAAe,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY;YAEnD,IAAI,cAAc,MAAM,MAAM;YAC9B,IAAI,OAAO;YACX,IAAI,gBAAgB;YACpB,IAAI,aAAa,EAAE;YACnB,IAAI,iBAAiB,EAAE;YAEvB,MAAO,CAAC,KAAM;gBACZ,IAAI,iBAAiB,IAAI,CAAC,aAAa,CAAC,GAAG;gBAC3C,WAAW,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU;gBAE5D,IAAI,SAAS,QAAQ,OAAO,CAAC;gBAC7B,OAAO,CAAC,CAAE,CAAA,SAAS,+BAAQ;gBAC3B,IAAI,QAAQ,CAAC,CAAE,CAAA,SAAS,gCAAS;gBACjC,IAAI,SAAS,AAAC,CAAA,SAAS,iCAAU,KAAM,KAAK,GAAG,4BAA4B;gBAC3E,UAAU,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;gBAExC,IAAI,YAAY,WAAW,OAAO,CAAC;gBACnC,iBAAiB;gBAEjB,IAAI,QAAQ,OAAO;oBACjB,IAAI,gBAAgB,aAAa,OAAO,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;oBAChE,eAAe,IAAI,CAAC;oBACpB,gBAAgB;oBAChB,aAAa,EAAE;gBACjB,OACE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAErD;YAEA,+CAA+C;YAC/C,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI;QAC7B;IACF;IAEA,kCAAkC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QACzD,IAAI,cAAc,IAAI,CAAA,GAAA,wCAAa,EAAE,SAAS,KAAK,CAAC,WAAW;QAE/D,IAAK,QAAQ,GAAG,QAAQ,OAAO,MAAM,EAAE,QAAS;YAC9C,IAAI,QAAQ,MAAM,CAAC,MAAM;YACzB,IAAI,MAAM,EAAE,KAAK,QAAQ;gBACvB,IAAI,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE;gBACrC,IAAI,KACF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,UAAU;YAE5D;QACF;IACF;IAEA,cAAc,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/D,IAAI,aAAa,EAAE;QACnB,MAAO,QAAS;YACd,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACvD,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC;QAEA,IAAI,CAAC,UACH;QAGF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,MAAM;IACvC;IAEA,sBAAsB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QACzC,IAAI,MAAM,KAAK,GAAG,gCAChB,IAAI,CAAC,WAAW,GAAG;QAGrB,IAAI,MAAM,iBAAiB,KAAK,QAAQ;YACtC,IAAI,QAAQ,AAAC,CAAA,MAAM,KAAK,GAAG,yCAAkB,MAAO;YACpD,IAAI,WAAW,CAAC,CAAE,CAAA,MAAM,KAAK,GAAG,0CAAmB;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,iBAAiB,EAAE,OAAO;QACvE;QAEA,IAAI,MAAM,kBAAkB,KAAK,QAAQ;YACvC,IAAI,QAAQ,AAAC,CAAA,MAAM,KAAK,GAAG,0CAAmB,MAAO;YACrD,IAAI,WAAW,CAAC,CAAE,CAAA,MAAM,KAAK,GAAG,2CAAoB;YACpD,IAAI,CAAC,aAAa,CAAC,OAAO,MAAM,kBAAkB,EAAE,OAAO;QAC7D;IACF;IAEA,uBAAuB;QACrB,IAAI,WAAW,EAAE;QACjB,KAAK,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAChC,KAAK,IAAI,WAAW,MAAM,QAAQ,CAChC,SAAS,IAAI,CAAC;YAAC,QAAQ,WAAW;YAAE,QAAQ,cAAc;SAAC;QAI/D,OAAO;IACT;IAEA,eAAe,GAAG,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAClB,IAAI,CAAC,kBAAkB;QAGzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;IACnC;IAEA,qBAAqB;QACnB,IAAI,CAAC,UAAU,GAAG,CAAC;QAEnB,KAAK,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE;YAClC,IAAI,QAAQ,MAAM,YAAY;YAE9B,KAAK,IAAI,YAAY,MAAM,SAAS,CAClC,IAAI,SAAS,eAAe,GAAG,OAC7B,IAAI,CAAC,yBAAyB,CAAC;QAGrC;IACF;IAEA,0BAA0B,QAAQ,EAAE;QAClC,iDAAiD;QACjD,IAAI,SAAS,IAAI,KAAK,GACpB;QAGF,IAAI,UAAU,CAAC,CAAE,CAAA,SAAS,QAAQ,GAAG,uCAAgB;QACrD,IAAI,SACF,MAAM,IAAI,MAAM;QAGlB,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,aAAa,GAAG,EAAE;QAEvB,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,UAAU,IAAI,CAAC,YAAY;QAE/B,IAAI,QAAQ,EAAE;QACd,IAAI,QAAQ,EAAE;QACd,IAAI,CAAC,MAAM,GAAG,EAAE;QAEhB,aAAa,QAAQ,CAAC;YACpB,OAAO,CAAC,OAAO;gBACb,IAAI,SAAS,IAAI,CAAC,MAAM;gBACxB,MAAM,IAAI,CAAC;oBACT,QAAQ,OAAO,KAAK;oBACpB,eAAe,IAAI,CAAC,aAAa,CAAC,KAAK;gBACzC;gBAEA,4CAA4C;gBAC5C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC3B,MAAM,IAAI,CAAC;gBACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,MAAM,GAAG,EAAE;gBAEnC,gCAAgC;gBAChC,QAAQ,MAAM,CAAC,OAAO,MAAM,GAAG,EAAE,EAAE,OAAO,OAAO,MAAM,GAAG;gBAE1D,wEAAwE;gBACxE,IAAI,QAAQ;gBACZ,IAAI,QAAQ;gBACZ,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,IAAI,SAAS,GAAG,IAC/C,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ;oBAC3B;oBACA,QAAQ,MAAM,CAAC,EAAE,CAAC,EAAE;gBACtB;gBAGF,IAAI,UAAU,GAAG;oBACf,IAAI,SAAS,MAAM,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE;oBAChC,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM;oBAClC,IAAI,OACF,MAAM,IAAI,CAAC;yBAEX,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;wBAAC;qBAAO;gBAErC;YACF;YAEA,MAAM;gBACH,CAAA,EAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,aAAa,EAAC,GAAG,MAAM,GAAG,EAAC;gBACtE,MAAM,GAAG;YACX;QACF;IACF;IAhUA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI;QACvE,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI;QACjF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI;QACrD,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI;QACzF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI;QACjE,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI;QACrB,IAAI,CAAC,UAAU,GAAG;IACpB;AAwTF;;;;AAEA,kDAAkD;AAClD,sDAAsD;AACtD,wCAAwC;AACxC,SAAS,2BAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,EAAE,WAAW,KAAK;IACtE,IAAI,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAI,CAAA,MAAM,CAAC,EAAE,GAAG,CAAA,GAAI,MAAM,CAAC,EAAE;IAC9D,IAAI,UACF,IAAI,OAAO;IAGb,IAAI,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK;IACnD,IAAI,UACF,MAAM,OAAO;IAGf,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAI,CAAA,MAAM,CAAC,EAAE,GAAG,CAAA,GAAI,MAAM;IACjD,OAAO;AACT;AAEA,SAAS,oCAAc,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS;IACxD,IAAI,SAAS,YAAY,aAAa;IACtC,OAAQ;QACN,KAAK;YACH,OAAO;QAET,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,MAAM;QAE7D,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,OAAO;QAE9D,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,OAAO;QAE9D,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,MAAM;QAE7D,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE;QAErD,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,MAAM;QAE7D,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,OAAO;QAE9D,KAAK;YACH,OAAO,2BAAK,QAAQ;gBAAC;gBAAY;aAAE,EAAE;gBAAC;gBAAW;aAAE,EAAE,MAAM;QAE7D;YACE,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;IAC3C;AACF;;;AFzae,MAAM;IAOnB,WAAW,QAAQ,EAAE;QACnB,yEAAyE;QACzE,wDAAwD;QACxD,IAAI,SAAS,SAAS,KAAK,OACzB,SAAS,MAAM,CAAC,OAAO;QAGzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE,0CAAyB,SAAS,QAAQ;IACxF;IAEA,qBAAqB,MAAM,EAAE,QAAQ,EAAE;QACrC,OAAO,0CAAyB,IAAI,CAAC,aAAa,CAAC,oBAAoB;IACzE;IAEA,gBAAgB,GAAG,EAAE;QACnB,IAAI,eAAe,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;QACrD,IAAI,SAAS,IAAI;QAEjB,KAAK,IAAI,UAAU,aACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,QAAQ;QAGtC,OAAO;IACT;IAEA,YAAY,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;QAC1C,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM;QAE1E,KAAK,IAAI,aAAa,WAAY;YAChC,IAAI,IAAI,SAAS,OAAO,aAAa,CAAC;YACtC,IAAI,QAAQ,OAAO,MAAM,GAAG,GAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,QAAQ,GAAG,SAAS;iBAE7C,QAAQ,GAAG,CAAC;QAEhB;IACF;IA1CA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA,GAAA,wCAAe,EAAE;QAC1C,IAAI,CAAC,gBAAgB,GAAG;IAC1B;AAuCF;;;;AMrCe,MAAM;IAUnB;;;GAGC,GACD,aAAa,QAAQ,EAAE,MAAM,EAAE;QAC7B,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;QACtC,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW;QACnC,KAAK,IAAI,WAAW,SAClB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,MAAM;YACrC,MAAM,IAAI,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG;YAE5B,IAAI,QACF,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG;QAEnC;IAEJ;IAEA;;GAEC,GACD,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,GACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAGrB,IAAI,OAAO,QAAQ,UACjB,MAAM;YAAC;SAAI;QAGb,IAAI,MAAM,OAAO,CAAC,MAChB,IAAI,CAAC,YAAY,CAAC,KAAK;aAClB,IAAI,OAAO,QAAQ,UAAU;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,MAAM,IAAI,EAAE,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE;QACrC,OACE,MAAM,IAAI,MAAM;IAEpB;IAEA;;GAEC,GACD,SAAS,GAAG,EAAE,MAAM,EAAE;QACpB,IAAI,OAAO,QAAQ,YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;aACnB;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,KAAK;QAChB;IACF;IAEA,oBAAoB,QAAQ,EAAE;QAC5B,IAAI,MAAM,OAAO,CAAC,WAChB,IAAI,CAAC,GAAG,CAAC;aACJ,IAAI,OAAO,aAAa,UAC7B,IAAK,IAAI,OAAO,SAAU;YACxB,IAAI,QAAQ,CAAC,IAAI,EACf,IAAI,CAAC,GAAG,CAAC;iBACJ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM;gBACxC,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC9C,MAAM,MAAM,CAAC,MAAM,OAAO,CAAC,MAAM;gBACjC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI;gBAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI;YACjC;QACF;IAEJ;IAEA;;GAEC,GACD,qBAAqB,MAAM,EAAE;QAC3B,KAAK,IAAI,SAAS,OAChB,IAAK,IAAI,WAAW,IAAI,CAAC,cAAc,CACrC,MAAM,QAAQ,CAAC,QAAQ,GAAG;IAGhC;IAEA;;GAEC,GACD,QAAQ,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;QACpC,KAAK,IAAI,SAAS,IAAI,CAAC,MAAM,CAAE;YAC7B,IAAI,OAAO,UAAU,YACnB;gBAAA,IAAI,CAAC,WACH,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI;YAC/B,OAEK,IAAI,MAAM,MAAM,GAAG,GACxB,UAAU,aAAa,CAAC,OAAO,QAAQ;QAE3C;IACF;IAxGA,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,CAAE;QACnC,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,SAAS,GAAG;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE;QAChB,IAAI,CAAC,cAAc,GAAG,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,CAAC;IACtB;AAkGF;;;;;AEnHA,MAAM,2CAAqB;IAAC;CAAO;AACnC,MAAM,wCAAkB;IAAC;IAAQ;IAAQ;IAAQ;IAAQ;CAAO;AAChE,MAAM,4CAAsB;IAAC;IAAQ;IAAQ;CAAO;AACpD,MAAM,4CAAsB;IAAC;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;CAAO;AAC5E,MAAM,0CAAoB;IAAC;CAAO;AAClC,MAAM,6CAAuB;IAC3B,KAAK;QAAC;QAAQ;KAAO;IACrB,KAAK;QAAC;QAAQ;KAAO;AACvB;AAEe,MAAM;IAEnB,OAAO,KAAK,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;QAClC,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC;QAClB,IAAI,CAAC,kBAAkB,CAAC,MAAM;QAE9B,+CAA+C;QAC/C,KAAK,oBAAoB,CAAC;QAE1B,kCAAkC;QAClC,IAAI,CAAC,cAAc,CAAC,MAAM;IAC5B;IAEA,OAAO,kBAAkB,IAAI,EAAE;QAC7B,KAAK,GAAG,CAAC;YACP,QAAQ;mBAAI;mBAAuB,0CAAoB,CAAC,KAAK,SAAS,CAAC;aAAC;YACxE,OAAO;QACT;IACF;IAEA,OAAO,aAAa,IAAI,EAAE;IACxB,uDAAuD;IACzD;IAEA,OAAO,mBAAmB,IAAI,EAAE,YAAY,EAAE;QAC5C,KAAK,GAAG,CAAC;eAAI;eAAoB;SAAoB;QACrD,KAAK,mBAAmB,CAAC;IAC3B;IAEA,OAAO,eAAe,IAAI,EAAE,MAAM,EAAE;QAClC,8BAA8B;QAC9B,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IAAK;YACtC,IAAI,QAAQ,MAAM,CAAC,EAAE;YACrB,IAAI,MAAM,UAAU,CAAC,EAAE,KAAK,QAAQ;gBAClC,IAAI,QAAQ;gBACZ,IAAI,MAAM,IAAI;gBAEd,kBAAkB;gBAClB,MAAO,QAAQ,KAAK,CAAA,GAAA,cAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAG;oBAC5D,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;oBAClC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;oBAClC;gBACF;gBAEA,oBAAoB;gBACpB,MAAO,MAAM,OAAO,MAAM,IAAI,CAAA,GAAA,cAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAG;oBAChE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG;oBAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG;oBAC5B;gBACF;gBAEA,uBAAuB;gBACvB,MAAM,QAAQ,CAAC,IAAI,GAAG;gBACtB,IAAI,MAAM;YACZ;QACF;IACF;AACF;AA1DE,cADmB,0CACZ,kBAAiB;;;;;;;ACR1B,MAAM,6BAAO,IAAI,CAAA,GAAA,kBAAU,EAAE,CAAA,GAAA,yCAAW;AACxC,MAAM,iCAAW;IAAC;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;CAAO;AAEzE,MAAM,uCAAiB;IACrB,aAAa;IACb,cAAc;IACd,eAAe;IACf,cAAc;IACd,cAAc;IACd,OAAO;IACP,eAAe;IACf,aAAa;AACf;AAEA,MAAM,6BAAO;AACb,MAAM,6BAAO;AACb,MAAM,6BAAO;AACb,MAAM,6BAAO;AACb,MAAM,6BAAO;AACb,MAAM,6BAAO;AACb,MAAM,6BAAO;AACb,MAAM,6BAAO;AAEb,mDAAmD;AACnD,MAAM,oCAAc;IAClB,qHAAqH;IACrH,6CAA6C;IAC7C;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;IAEzH,2DAA2D;IAC3D;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;IAEzH,wDAAwD;IACxD;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;IAEzH,sDAAsD;IACtD;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;IAEzH,sDAAsD;IACtD;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;IAEzH,2DAA2D;IAC3D;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;IAEzH,uDAAuD;IACvD;QAAE;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;QAAG;YAAE;YAAM;YAAM;SAAG;KAAE;CAC1H;AAUc,MAAM,iDAAqB,CAAA,GAAA,wCAAY;IACpD,OAAO,aAAa,IAAI,EAAE;QACxB,KAAK,GAAG,CAAC;YAAC;YAAQ;SAAO;QACzB,IAAK,IAAI,IAAI,GAAG,IAAI,+BAAS,MAAM,EAAE,IAAK;YACxC,IAAI,UAAU,8BAAQ,CAAC,EAAE;YACzB,KAAK,QAAQ,CAAC,SAAS;QACzB;QAEA,KAAK,QAAQ,CAAC;IAChB;IAEA,OAAO,eAAe,IAAI,EAAE,MAAM,EAAE;QAClC,KAAK,CAAC,eAAe,MAAM;QAE3B,IAAI,OAAO;QACX,IAAI,QAAQ;QACZ,IAAI,UAAU,EAAE;QAEhB,oDAAoD;QACpD,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IAAK;YACtC,IAAI,WAAW;YACf,IAAI,QAAQ,MAAM,CAAC,EAAE;YACrB,IAAI,OAAO,sCAAgB,MAAM,UAAU,CAAC,EAAE;YAC9C,IAAI,SAAS,qCAAe,WAAW,EAAE;gBACvC,OAAO,CAAC,EAAE,GAAG;gBACb;YACF;YAEA,CAAC,YAAY,WAAW,MAAM,GAAG,iCAAW,CAAC,MAAM,CAAC,KAAK;YAEzD,IAAI,eAAe,8BAAQ,SAAS,IAClC,OAAO,CAAC,KAAK,GAAG;YAGlB,OAAO,CAAC,EAAE,GAAG;YACb,OAAO;QACT;QAEA,uDAAuD;QACvD,IAAK,IAAI,QAAQ,GAAG,QAAQ,OAAO,MAAM,EAAE,QAAS;YAClD,IAAI;YACJ,IAAI,QAAQ,MAAM,CAAC,MAAM;YACzB,IAAI,UAAU,OAAO,CAAC,MAAM,EAC1B,MAAM,QAAQ,CAAC,QAAQ,GAAG;QAE9B;IACF;AACF;AAEA,SAAS,sCAAgB,SAAS;IAChC,IAAI,MAAM,2BAAK,GAAG,CAAC;IACnB,IAAI,KACF,OAAO,MAAM;IAGf,IAAI,WAAW,CAAA,GAAA,kBAAU,EAAE;IAC3B,IAAI,aAAa,QAAQ,aAAa,QAAQ,aAAa,MACzD,OAAO,qCAAe,WAAW;IAGnC,OAAO,qCAAe,WAAW;AACnC;;;;;;AI1He,MAAM;IAMnB,MAAM,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;QAC7B,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,QAAQ,kBAAkB,IAAI;QACxD,IAAI,CAAC,KAAK,GAAG;IACf;IAEA,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;IACpC;IAEA,aAAa,KAAK,EAAE;QAClB,OAAO,AAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,MAAM,IACtC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,MAAM,IAC3C,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,MAAM,UAAU,IAC9C,IAAI,CAAC,kBAAkB,IAAI,MAAM,MAAM,IAAI,MAAM,kBAAkB,KAAK,IAAI,CAAC,kBAAkB;IACzG;IAEA,KAAK,GAAG,EAAE;QACR,IAAI,CAAC,KAAK,IAAI;QACd,MAAO,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EACpG,IAAI,CAAC,KAAK,IAAI;QAGhB,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EACpD,OAAO;QAGT,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEA,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB;IAEA,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB;IAEA,KAAK,QAAQ,CAAC,EAAE;QACd,IAAI,MAAM,IAAI,CAAC,KAAK;QACpB,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG;QACb,OAAO;IACT;IAEA,UAAU,QAAQ,CAAC,EAAE;QACnB,IAAI,MAAM,IAAI,CAAC,KAAK;QACpB,IAAI,CAAC,SAAS,CAAC;QACf,IAAI,MAAM,IAAI,CAAC,KAAK;QACpB,IAAI,CAAC,KAAK,GAAG;QACb,OAAO;IACT;IAEA,UAAU,QAAQ,CAAC,EAAE;QACnB,IAAI,MAAM,QAAQ,IAAI,KAAK;QAC3B,QAAQ,KAAK,GAAG,CAAC;QACjB,MAAO,QACL,IAAI,CAAC,IAAI,CAAC;QAGZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAnEA,YAAY,MAAM,EAAE,OAAO,CAAE;QAC3B,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,KAAK,CAAC;IACb;AAiEF;;;;ADlEA,MAAM,wCAAkB;IAAC;IAAQ;IAAQ;CAAO;AAEjC,MAAM;IA6BnB,WAAW,MAAM,EAAE;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAC3B,OAAO;QAGT,IAAI,CAAC,MAAM,OAAO,CAAC,SACjB,SAAS;YAAC;SAAO;QAGnB,KAAK,IAAI,KAAK,OACZ,KAAK,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAE;YACvC,IAAI,MAAM,GAAG,KAAK,GAChB,OAAO;QAEX;QAGF,OAAO;IACT;IAEA,aAAa,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;QACxC,IAAI,UAAU;QACd,IAAI;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE;YAC7C,QAAQ,IAAI,CAAC,UAAU,CAAC;YACxB,IAAI,CAAC,OACH,QAAQ,IAAI,CAAC,UAAU,CAAC;YAG1B,IAAI,CAAC,OACH,OAAO,IAAI,CAAC,SAAS;YAGvB,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG;YAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,MAAM;YAC1B,IAAI,CAAC,QAAQ,GAAG;YAChB,IAAI,CAAC,WAAW,GAAG;YACnB,UAAU;QACZ;QAEA,IAAI,CAAC,aAAa,cAAc,IAAI,CAAC,SAAS,EAC5C,IAAI,CAAC,SAAS,GAAG,aAAa,0CAAiB;QAGjD,IAAI,YAAY,SAAS,MAAM,GAAG,GAChC,YAAY,IAAI,MAAM,CAAC,IAAI,SAAS,MAAM;QAG5C,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,WAAW,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG;YAEhB,KAAK,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CACzC,IAAI,KAAK,GAAG,KAAK,UAAU;gBACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,OAAO;gBAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG;gBAC3B;YACF;YAGF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC1C,IAAI,CAAC,WAAW,GAAG;YACrB;YAEA,UAAU;QACZ;QAEA,+BAA+B;QAC/B,IAAI,SAAS;YACX,IAAI,CAAC,QAAQ,GAAG,CAAC;YACjB,IAAI,IAAI,CAAC,QAAQ,EACf,KAAK,IAAI,gBAAgB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAE;gBACrD,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa;gBACjD,IAAI,oBAAoB,IAAI,CAAC,8BAA8B,CAAC;gBAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,qBAAqB,OAAO,OAAO;YACjE;QAEJ;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,mBAAmB,eAAe,EAAE,EAAE,OAAO,EAAE;QAC7C,IAAI,UAAU,EAAE;QAChB,KAAK,IAAI,OAAO,aAAc;YAC5B,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI;YAChC,IAAI,CAAC,SACH;YAGF,KAAK,IAAI,eAAe,QAAQ,iBAAiB,CAAE;gBACjD,IAAI,WAAW,QAAQ,OAAO,CAAC,iBAAiB,IAC9C;gBAGF,QAAQ,IAAI,CAAC;oBACX,SAAS;oBACT,OAAO;oBACP,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBACpC;YACF;QACF;QAEA,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAM,EAAE,KAAK,GAAG,EAAE,KAAK;QACxC,OAAO;IACT;IAEA,+BAA+B,YAAY,EAAE;QAC3C,IAAI,IAAI,CAAC,eAAe,KAAK,IAC3B,OAAO;QAGT,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC;QACvF,IAAI,gBAAgB,OAAO,wBAAwB,CAAC,aAAa;QACjE,KAAK,IAAI,gBAAgB,cAAe;YACtC,IAAI,aAAa,YAAY,KAAK,cAChC,OAAO,aAAa,qBAAqB;QAE7C;QAEA,OAAO;IACT;IAEA,oBAAoB,MAAM,EAAE;QAC1B,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,iBAAiB;QAC7C,IAAI,CAAC,YACH,OAAO;QAGT,IAAI,UAAU,WAAW,uBAAuB;QAChD,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAAK;YACvC,IAAI,aAAa,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc;YACvD,IAAI,IAAI,CAAC,wBAAwB,CAAC,YAAY,SAC5C,OAAO;QAEX;QAEA,OAAO;IACT;IAEA,yBAAyB,UAAU,EAAE,MAAM,EAAE;QAC3C,OAAO,WAAW,KAAK,CAAC,CAAA;YACtB,IAAI,QAAQ,UAAU,SAAS,GAAG,OAAO,MAAM,GAAG,MAAM,CAAC,UAAU,SAAS,CAAC,GAAG;YAChF,OAAO,UAAU,mBAAmB,IAAI,SAAS,SAAS,UAAU,mBAAmB;QACzF;IACF;IAEA,cAAc,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC5C,IAAI,UAAU,IAAI,CAAC,kBAAkB,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;IACrC;IAEA,aAAa,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;QACvC,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,SAAS,GAAG;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA,GAAA,wCAAY,EAAE;QAEvC,KAAK,IAAI,WAAE,OAAO,UAAE,MAAM,EAAE,IAAI,QAAS;YACvC,IAAI,CAAC,cAAc,GAAG;YACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,KAAK;YAErC,MAAO,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,OAAO,MAAM,CAAE;gBAC/C,IAAI,CAAE,CAAA,WAAW,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,AAAD,GAAI;oBACjD,IAAI,CAAC,aAAa,CAAC,IAAI;oBACvB;gBACF;gBAEA,KAAK,IAAI,SAAS,OAAO,SAAS,CAAE;oBAClC,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,EAAE;oBAC9C,IAAI,KACF;gBAEJ;gBAEA,IAAI,CAAC,aAAa,CAAC,IAAI;YACzB;QACF;IACF;IAEA,YAAY,MAAM,EAAE,KAAK,EAAE;QACzB,MAAM,IAAI,MAAM;IAClB;IAEA,gBAAgB,aAAa,EAAE;QAC7B,IAAI,UAAU,IAAI,CAAC,aAAa,CAAC,OAAO;QACxC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,KAAK;QAEzC,KAAK,IAAI,gBAAgB,cAAe;YACtC,0DAA0D;YAC1D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS;YAClC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,aAAa;YAEvD,+CAA+C;YAC/C,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,eAAe;YACnE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;YAE/D,2CAA2C;YAC3C,KAAK,IAAI,SAAS,OAAO,SAAS,CAAE;gBAClC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,EAAE,QACtC;YAEJ;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS;QAClC,OAAO;IACT;IAEA,cAAc,QAAQ,EAAE,KAAK,EAAE;QAC7B,IAAI,SAAS,MACX,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;QAGnC,OAAQ,SAAS,OAAO;YACtB,KAAK;gBACH,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC;YAEjC,KAAK;gBACH,KAAK,IAAI,SAAS,SAAS,YAAY,CAAE;oBACvC,IAAI,MAAM,KAAK,IAAI,SAAS,SAAS,MAAM,GAAG,EAC5C,OAAO,MAAM,kBAAkB,GAAG,QAAQ,MAAM,KAAK;gBAEzD;gBAEA;QACJ;QAEA,OAAO;IACT;IAEA,MAAM,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE;QAC1C,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK;QAClC,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QACzC,IAAI,MAAM;QAEV,MAAO,MAAM,SAAS,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAQ;YACjE,IAAI,SACF,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK;YAGvC;YACA,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI;QACjC;QAEA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG;QAC3B,IAAI,MAAM,SAAS,MAAM,EACvB,OAAO;QAGT,OAAO,WAAW;IACpB;IAEA,gBAAgB,aAAa,EAAE,QAAQ,EAAE;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,CAAC,WAAW,QAAU,cAAc,MAAM,EAAE;IACzF;IAEA,qBAAqB,aAAa,EAAE,QAAQ,EAAE;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,CAAC,WAAW;YACrD,sDAAsD;YACtD,IAAI,CAAE,CAAA,IAAI,CAAC,cAAc,IAAI,MAAM,QAAQ,AAAD,GACxC,OAAO;YAGT,OAAO,cAAc,MAAM,EAAE;QAC/B,GAAG,EAAE;IACP;IAEA,wBAAwB,aAAa,EAAE,QAAQ,EAAE;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,CAAC,UAAU,QACpD,IAAI,CAAC,aAAa,CAAC,UAAU,MAAM,EAAE,KAAK;IAE9C;IAEA,WAAW,KAAK,EAAE,QAAQ,EAAE;QAC1B,OAAQ,SAAS,OAAO;YACtB,KAAK;gBACH,IAAI,IAAI,QAAQ,SAAS,UAAU;gBACnC,IAAI,KAAK,KAAK,IAAI,SAAS,eAAe,CAAC,MAAM,EAC/C,OAAO,SAAS,eAAe,CAAC,EAAE;gBAGpC;YAEF,KAAK;gBACH,KAAK,IAAI,SAAS,SAAS,gBAAgB,CAAE;oBAC3C,IAAI,MAAM,KAAK,IAAI,SAAS,SAAS,MAAM,GAAG,EAC5C,OAAO,MAAM,KAAK;gBAEtB;gBAEA;QACJ;QAEA,OAAO;IACT;IAEA,qBAAqB,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,CAAC,SAAS,QACnD,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;IAE1C;IAEA,aAAa,KAAK,EAAE;QAClB,IAAI,OAAO;QACX,OAAQ,MAAM,OAAO;YACnB,KAAK;gBACH,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;gBACzC,IAAI,UAAU,IACZ,OAAO;gBAGT,MAAM,MAAM,QAAQ,CAAC,MAAM;gBAC3B,KAAK,IAAI,QAAQ,IAAK;oBACpB,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,GACpC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,aAAa;gBAElD;gBAEA;YAEF,KAAK;gBACH,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ,MAAM,IACzC,OAAO;gBAGT,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,QAAQ;gBACjE,IAAI,UAAU,IACZ,OAAO;gBAGT,MAAM,MAAM,QAAQ,CAAC,MAAM;gBAC3B,KAAK,IAAI,QAAQ,IAAK;oBACpB,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,KAAK,OAAO,EAAE,MAAM,QAAQ,GAC3D,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,aAAa;gBAElD;gBAEA;YAEF,KAAK;gBACH,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,MAAM,SAAS,GACjD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,aAAa;gBAGjD;QACJ;QAEA,OAAO;IACT;IAEA,qBAAqB,KAAK,EAAE;QAC1B,IAAI;QACJ,OAAQ,MAAM,OAAO;YACnB,KAAK;gBACH,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;gBACzC,IAAI,UAAU,IACZ,OAAO;gBAGT,IAAI,MAAM,MAAM,aAAa,CAAC,MAAM;gBACpC,KAAK,IAAI,QAAQ,IAAK;oBACpB,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE,KAAK,SAAS,KAC1D,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,KAClC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,KAAK,SAAS,GAC7D,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,aAAa;gBAElD;gBAEA;YAEF,KAAK;gBACH,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ,MAAM,IACzC,OAAO;gBAGT,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,aAAa;gBACtE,IAAI,QAAQ,MAAM,aAAa,CAAC,MAAM;gBACtC,IAAI,CAAC,OACH,OAAO;gBAGT,KAAK,IAAI,QAAQ,MAAO;oBACtB,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,KAC3F,IAAI,CAAC,oBAAoB,CAAC,GAAG,KAAK,KAAK,EAAE,MAAM,aAAa,KAC5D,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,GACxF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,aAAa;gBAElD;gBAEA;YAEF,KAAK;gBACH,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,mBAAmB,EAAE,MAAM,iBAAiB,KAClF,IAAI,CAAC,uBAAuB,CAAC,GAAG,MAAM,aAAa,KACnD,IAAI,CAAC,uBAAuB,CAAC,MAAM,eAAe,EAAE,MAAM,iBAAiB,GAC3E,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,aAAa;gBAGjD;QACJ;QAEA,OAAO;IACT;IA9aA,YAAY,IAAI,EAAE,KAAK,CAAE;QACvB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,KAAK,GAAG;QAEb,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,SAAS,GAAG;QAEjB,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,WAAW,GAAG;QAEnB,IAAI,CAAC,QAAQ,GAAG,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,CAAC;QAEhB,gCAAgC;QAChC,IAAI,CAAC,eAAe,GAAG,KAAK,mBAAmB,GAC3C,IAAI,CAAC,mBAAmB,CAAC,KAAK,mBAAmB,CAAC,gBAAgB,IAClE;QAEJ,0CAA0C;QAC1C,IAAI,CAAC,YAAY;QAEjB,yCAAyC;QACzC,IAAI,CAAC,MAAM,GAAG,EAAE;QAChB,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,oBAAoB;QACzC,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,cAAc,GAAG;IACxB;AAqZF;;;ADlbe,MAAM;IA0BnB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,GAAG,EAAE,EAAE;QACT,IAAI,CAAC,GAAG,GAAG;QACX,IAAI,CAAC,WAAW,GAAG;QAEnB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;QAC1B,IAAI,QAAQ,KAAK,aAAa,EAAE;YAC9B,sBAAsB;YACtB,IAAI,UAAU,CAAA,GAAA,wCAAU,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa;YACrE,IAAI,CAAC,MAAM,GAAG,YAAY;YAC1B,IAAI,CAAC,UAAU,GAAG,YAAY;YAC9B,IAAI,CAAC,MAAM,GAAG,YAAY;YAC1B,IAAI,CAAC,kBAAkB,GAAG,KAAK,kBAAkB,GAAG,CAAA,GAAA,wCAAU,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,kBAAkB,IAAI;QACtH,OAAO;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,GAAA,aAAK;YACvE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;YAC3C,IAAI,CAAC,kBAAkB,GAAG;QAC5B;IACF;IAEA,OAAO;QACL,OAAO,IAAI,yCAAU,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ;IAC1E;IAnDA,YAAY,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,QAAQ,CAAE;QAC/C,IAAI,CAAC,KAAK,GAAG;QACb,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,EAAE,GAAG;QAEV,IAAI,CAAC,QAAQ,GAAG,CAAC;QACjB,IAAI,MAAM,OAAO,CAAC,WAChB,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;YACxC,IAAI,UAAU,QAAQ,CAAC,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;QAC3B;aACK,IAAI,OAAO,aAAa,UAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;QAG/B,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,iBAAiB,GAAG;QACzB,IAAI,CAAC,SAAS,GAAG;QACjB,IAAI,CAAC,iBAAiB,GAAG;QACzB,IAAI,CAAC,cAAc,GAAG;QACtB,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,YAAY,GAAG;IACtB;AA6BF;;;AD/Be,MAAM,iDAAqB,CAAA,GAAA,wCAAY;IAEpD,OAAO,aAAa,IAAI,EAAE;QACxB,KAAK,GAAG,CAAC;YAAC;YAAQ;YAAQ;SAAO,EAAE;IACrC;IAEA,OAAO,eAAe,IAAI,EAAE,MAAM,EAAE;QAClC,IAAI,QAAQ;QACZ,IAAI,IAAI;QACR,MAAO,IAAI,OAAO,MAAM,CAAE;YACxB,IAAI;YACJ,IAAI,QAAQ,MAAM,CAAC,EAAE;YACrB,IAAI,OAAO,MAAM,UAAU,CAAC,EAAE;YAC9B,IAAI,OAAO,8BAAQ;YAEnB,CAAE,QAAQ,MAAO,GAAG,iCAAW,CAAC,MAAM,CAAC,KAAK;YAE5C,OAAQ;gBACN,KAAK;oBACH,sEAAsE;oBACtE,IAAI,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,OAClC,IAAI,gCAAU,QAAQ,GAAG,KAAK,IAAI;oBAEpC;gBAEF,KAAK;oBACH,wEAAwE;oBACxE,IAAI,8BAAQ,QAAQ,GAAG,KAAK,IAAI;oBAChC;gBAEF,KAAK;oBACH,sGAAsG;oBACtG,sCAAgB,QAAQ,GAAG,KAAK,IAAI;oBACpC;gBAEF,KAAK;oBACH,0EAA0E;oBAC1E,IAAI,yCAAmB,QAAQ,GAAG,KAAK,IAAI;oBAC3C;YACJ;YAEA;QACF;IACF;AACF;AA3CE,cADmB,0CACZ,kBAAiB;AA6C1B,MAAM,oCAAe;AACrB,MAAM,mCAAe;AACrB,MAAM,qCAAe,mCAAa,oCAAc;AAChD,MAAM,+BAAU,QAAQ,OAAO;AAC/B,MAAM,+BAAU,QAAQ,QAAQ;AAChC,MAAM,+BAAU,QAAQ,QAAQ;AAChC,MAAM,gCAAU;AAChB,MAAM,gCAAU;AAChB,MAAM,gCAAU;AAChB,MAAM,8BAAU,+BAAS,gCAAU;AACnC,MAAM,8BAAU,+BAAS,gCAAU;AACnC,MAAM,8BAAU,+BAAS,gCAAU;AACnC,MAAM,sCAAgB;AAEtB,MAAM,4BAAS,CAAA,OAAQ,UAAU,QAAQ,QAAQ,UAAU,UAAU,QAAQ,QAAQ;AACrF,MAAM,4BAAS,CAAA,OAAQ,UAAU,QAAQ,QAAQ,UAAU,UAAU,QAAQ,QAAQ;AACrF,MAAM,4BAAS,CAAA,OAAQ,UAAU,QAAQ,QAAQ,UAAU,UAAU,QAAQ,QAAQ;AACrF,MAAM,+BAAS,CAAA,OAAQ,UAAU,QAAQ,QAAQ;AACjD,MAAM,8BAAS,CAAA,OAAQ,qCAAe,QAAQ,QAAQ;AACtD,MAAM,6BAAS,CAAA,OAAQ,AAAC,OAAO,oCAAe,sCAAgB,AAAC,CAAA,OAAO,iCAAU,IAAK,kCAAY;AACjG,MAAM,qCAAe,CAAA,OAAQ,gCAAU,QAAQ,QAAQ;AACvD,MAAM,qCAAe,CAAA,OAAQ,gCAAU,QAAQ,QAAQ;AACvD,MAAM,qCAAe,CAAA,OAAQ,+BAAS,KAAK,KAAK,QAAQ,QAAQ;AAEhE,uBAAuB;AACvB,MAAM,0BAAM,GAAG,kBAAkB;AACjC,MAAM,0BAAM,GAAG,oBAAoB;AACnC,MAAM,0BAAM,GAAG,eAAe;AAC9B,MAAM,0BAAM,GAAG,qBAAqB;AACpC,MAAM,2BAAM,GAAG,yBAAyB;AACxC,MAAM,4BAAM,GAAG,0BAA0B;AACzC,MAAM,0BAAM,GAAG,YAAY;AAE3B,mEAAmE;AACnE,SAAS,8BAAQ,IAAI;IACnB,IAAI,0BAAI,OAAY,OAAO;IAC3B,IAAI,0BAAI,OAAY,OAAO;IAC3B,IAAI,0BAAI,OAAY,OAAO;IAC3B,IAAI,2BAAK,OAAW,OAAO;IAC3B,IAAI,4BAAM,OAAU,OAAO;IAC3B,IAAI,6BAAO,OAAS,OAAO;IAC3B,OAAO;AACT;AAEA,wBAAwB;AACxB,MAAM,kCAAY;AAClB,MAAM,kCAAY;AAClB,MAAM,gCAAY;AAClB,MAAM,kCAAY;AAClB,MAAM,gCAAY;AAElB,yFAAyF;AACzF,uEAAuE;AACvE,MAAM,oCAAc;IAClB,sHAAsH;IACtH,uBAAuB;IACvB;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAG;YAAS;SAAI;KAAE;IAEhI,eAAe;IACf;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAG;YAAS;SAAI;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAG;YAAS;SAAI;KAAE;IAEhI,yBAAyB;IACzB;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAG;YAAS;SAAI;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;KAAE;IAEhI,4BAA4B;IAC5B;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;QAAE;YAAE;YAAW;SAAG;KAAE;CACjI;AAED,SAAS,+BAAS,IAAI,EAAE,IAAI,EAAE,QAAQ;IACpC,OAAO,IAAI,CAAA,GAAA,wCAAQ,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE,EAAE;QAAC;KAAK,EAAE;AACtE;AAEA,SAAS,gCAAU,MAAM,EAAE,CAAC,EAAE,IAAI;IAChC,IAAI,QAAQ,MAAM,CAAC,EAAE;IACrB,IAAI,OAAO,MAAM,UAAU,CAAC,EAAE;IAE9B,IAAI,IAAI,OAAO;IACf,IAAI,IAAI,+BAAS,IAAI;IACrB,IAAI,IAAI,gCAAU;IAClB,IAAI,IAAI,+BAAS,IAAI,gCAAU;IAC/B,IAAI,IAAI,+BAAS,IAAI;IAErB,6DAA6D;IAC7D,IAAI,CAAC,KAAK,oBAAoB,CAAC,MAC3B,CAAC,KAAK,oBAAoB,CAAC,MAC1B,MAAM,gCAAU,CAAC,KAAK,oBAAoB,CAAC,IAC9C,OAAO;IAGT,gEAAgE;IAChE,4DAA4D;IAC5D,IAAI,OAAO,+BAAS,MAAM,GAAG,MAAM,QAAQ;IAC3C,KAAK,QAAQ,CAAC,IAAI,GAAG;IAErB,IAAI,OAAO,+BAAS,MAAM,GAAG,MAAM,QAAQ;IAC3C,KAAK,QAAQ,CAAC,IAAI,GAAG;IAErB,IAAI,SAAS;QAAE;QAAM;KAAM;IAE3B,IAAI,IAAI,8BAAQ;QACd,IAAI,OAAO,+BAAS,MAAM,GAAG,MAAM,QAAQ;QAC3C,KAAK,QAAQ,CAAC,IAAI,GAAG;QACrB,OAAO,IAAI,CAAC;IACd;IAEA,OAAO,MAAM,CAAC,GAAG,MAAM;IACvB,OAAO,IAAI,OAAO,MAAM,GAAG;AAC7B;AAEA,SAAS,8BAAQ,MAAM,EAAE,CAAC,EAAE,IAAI;IAC9B,IAAI,QAAQ,MAAM,CAAC,EAAE;IACrB,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;IAClC,IAAI,OAAO,8BAAQ;IAEnB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;IACtC,IAAI,WAAW,8BAAQ;IAEvB,sDAAsD;IACtD,IAAI,IAAI,MAAM,MAAM;IACpB,IAAI,aAAa,4BAAM,SAAS,yBAAG;QACjC,SAAS;QACT,KAAK;QACL,OAAO;IACT,OAAO;QACL,IAAI,SAAS,yBAAG;YACd,QAAQ;YACR,OAAO,MAAM,CAAC,IAAI,EAAE;YACpB,OAAO;QACT,OAAO;YACL,UAAU;YACV,OAAO,MAAM,CAAC,IAAI,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,EAAE;YACpB,OAAO;QACT;QAEA,IAAI,IAAI,KAAK,UAAU,CAAC,EAAE;QAC1B,IAAI,IAAI,KAAK,UAAU,CAAC,EAAE;QAE1B,6CAA6C;QAC7C,IAAI,mCAAa,MAAM,mCAAa,IAClC,KAAK,oCAAc,AAAC,CAAA,AAAC,CAAA,IAAI,4BAAK,IAAK,gCAAW,CAAA,IAAI,4BAAK,CAAC,IAAK;IAEjE;IAEA,IAAI,IAAI,AAAC,QAAQ,KAAK,UAAU,CAAC,EAAE,IAAK;IACxC,IAAI,AAAC,MAAM,QAAU,CAAA,MAAM,gCAAU,mCAAa,EAAC,GAAI;QACrD,IAAI,IAAI,KAAM,CAAA,IAAI,4BAAK;QAEvB,0DAA0D;QAC1D,kEAAkE;QAClE,IAAI,KAAK,oBAAoB,CAAC,IAAI;YAChC,IAAI,MAAM,aAAa,0BAAI,IAAI;YAC/B,OAAO,MAAM,CAAC,IAAI,MAAM,GAAG,KAAK,+BAAS,MAAM,GAAG,MAAM,QAAQ;YAChE,OAAO,IAAI,MAAM;QACnB;IACF;IAEA,4EAA4E;IAC5E,IAAI,MAAQ,KAAK,QAAQ,CAAC,IAAI,GAAG;IACjC,IAAI,MAAQ,KAAK,QAAQ,CAAC,IAAI,GAAG;IACjC,IAAI,MAAQ,KAAK,QAAQ,CAAC,IAAI,GAAG;IAEjC,IAAI,aAAa,0BAAI;QACnB,6DAA6D;QAC7D,qEAAqE;QACrE,mDAAmD;QACnD,gCAAU,QAAQ,IAAI,GAAG;QACzB,OAAO,IAAI;IACb;IAEA,OAAO;AACT;AAEA,SAAS,gCAAU,IAAI;IACrB,OAAQ,8BAAQ;QACd,KAAK;QACL,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;IACX;AACF;AAEA,SAAS,sCAAgB,MAAM,EAAE,CAAC,EAAE,IAAI;IACtC,IAAI,QAAQ,MAAM,CAAC,EAAE;IACrB,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;IAElC,oFAAoF;IACpF,IAAI,KAAK,iBAAiB,CAAC,MAAM,YAAY,KAAK,GAAK;IAEvD,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;IACtC,IAAI,MAAM,gCAAU;IAEpB,OAAO,MAAM,CAAC,GAAG;IACjB,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG;AACnC;AAEA,SAAS,yCAAmB,MAAM,EAAE,CAAC,EAAE,IAAI;IACzC,IAAI,QAAQ,MAAM,CAAC,EAAE;IACrB,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;IAElC,IAAI,KAAK,oBAAoB,CAAC,sCAAgB;QAC5C,IAAI,eAAe,+BAAS,MAAM,qCAAe,MAAM,QAAQ;QAE/D,mFAAmF;QACnF,IAAI,MAAM,KAAK,iBAAiB,CAAC,MAAM,YAAY,KAAK,IAAI,IAAI,IAAI;QACpE,OAAO,MAAM,CAAC,KAAK,GAAG;QACtB;IACF;IAEA,OAAO;AACT;;;;;;;;;;;AK5RA,4BAAiB,KAAK,KAAK,CAAC;;;;ACA5B,4BAAiB,KAAK,KAAK,CAAC;;;ACA5B,uCAAuC;AACvC,qEAAqE;AAC9D,MAAM,4CAAa;IACxB,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,MAAM;IACN,KAAK;IACL,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,aAAa;IACb,eAAe;IACf,IAAI;IACJ,OAAO;IACP,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,QAAQ,OAAQ,2CAA2C;AAC7D;AAGO,MAAM,4CAAY;IACvB,OAAO;IAEP,mBAAmB;IACnB,OAAO;IACP,OAAO;IAEP,QAAQ;IACR,YAAY;IAEZ,SAAS;IAET,YAAY;IACZ,SAAS;IACT,WAAW;IAEX,aAAa;IACb,QAAQ;IACR,YAAY;IAEZ,SAAS;IACT,MAAM;IAEN,KAAK;AACP;AAEO,MAAM,2CAAkB,0CAAW,CAAC,GAAG,0CAAW,EAAE,GAAG,0CAAW,EAAE,GAAG,0CAAW,CAAC,GAAG,0CAAW,WAAW,GAAG,0CAAW,aAAa;AACvI,MAAM,4CAAe,0CAAW,GAAG,GAAG,0CAAW,IAAI;AACrD,MAAM,2CAAwB,0CAAW,CAAC,GAAG,0CAAW,KAAK;AAE7D,MAAM,4CAAgB;IAC3B,SAAS;QACP,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,WAAW;QAC9B,UAAU;QACV,UAAU;IACZ;IAEA,YAAY;QACV,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,WAAW;QAC9B,UAAU;QACV,UAAU;IACZ;IAEA,SAAS;QACP,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,SAAS;QAC5B,UAAU;QACV,UAAU;IACZ;IAEA,UAAU;QACR,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,UAAU;QAC7B,UAAU;QACV,UAAU;IACZ;IAEA,UAAU;QACR,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,WAAW;QAC9B,UAAU;QACV,UAAU;IACZ;IAEA,OAAO;QACL,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,UAAU;QAC7B,UAAU;QACV,UAAU;IACZ;IAEA,OAAO;QACL,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,UAAU;QAC7B,UAAU;QACV,UAAU;IACZ;IAEA,QAAQ;QACN,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,UAAU;QAC7B,UAAU;QACV,UAAU;IACZ;IAEA,SAAS;QACP,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,UAAU;QAC7B,UAAU;QACV,UAAU;IACZ;IAEA,WAAW;QACT,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,UAAU;QAC7B,UAAU;QACV,UAAU;IACZ;IAEA,6BAA6B;IAC7B,aAAa;IACb,uBAAuB;IACvB,oBAAoB;IACpB,6BAA6B;IAC7B,mCAAmC;IACnC,0BAA0B;IAC1B,6BAA6B;IAC7B,KAAK;IAEL,OAAO;QACL,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS,0CAAU,iBAAiB;QACpC,UAAU;QACV,UAAU;IACZ;AACF;AAGO,MAAM,4CAAuB;IAClC,QAAQ;IACR,QAAQ;QAAC;QAAQ;KAAO;IACxB,QAAQ;QAAC;QAAQ;KAAO;IACxB,QAAQ;QAAC;QAAQ;KAAO;IACxB,QAAQ;QAAC;QAAQ;KAAO;IACxB,QAAQ;QAAC;QAAQ;KAAO;AAC1B;;;;AH5JA,MAAM,kBAAC,oCAAc,EAAC,GAAG,CAAA,GAAA,gEAAM;AAC/B,MAAM,6BAAO,IAAI,CAAA,GAAA,kBAAU,EAAE,CAAA,GAAA,yCAAW;AACxC,MAAM,qCAAe,IAAI,CAAA,GAAA,UAAW,EAAE,CAAA,GAAA,gEAAW;AAMlC,MAAM,iDAAoB,CAAA,GAAA,wCAAY;IAEnD,OAAO,aAAa,IAAI,EAAE;QACxB,KAAK,QAAQ,CAAC;QAEd,KAAK,QAAQ,CAAC;YAAC;YAAQ;SAAO;QAE9B,KAAK,QAAQ,CAAC;QAEd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC,QAAQ;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC,QAAQ;QACtB,KAAK,QAAQ,CAAC,QAAQ;QACtB,KAAK,QAAQ,CAAC,QAAQ;QACtB,KAAK,QAAQ,CAAC,QAAQ;QACtB,KAAK,QAAQ,CAAC,QAAQ;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC,QAAQ;QAEtB,KAAK,QAAQ,CAAC;QAEd,KAAK,QAAQ,CAAC;YACZ,OAAO;gBAAC;aAAO;YACf,QAAQ;gBAAC;gBAAQ;gBAAQ;gBAAQ;gBAAQ;gBAAQ;gBAAQ;gBAAQ;gBAAQ;gBAAQ;aAAO;QAC1F;QAEA,iDAAiD;QACjD,KAAK,aAAa,GAAG,0CAAoB,KAAK,MAAM;QACpD,KAAK,WAAW,GAAG,CAAA,GAAA,yCAAY,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,CAAA,GAAA,yCAAY,EAAE,OAAO;QAC7E,KAAK,SAAS,GAAG,KAAK,WAAW,CAAC,UAAU,IAAI,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,EAAE,KAAK;IAExF,iDAAiD;IACnD;IAEA,OAAO,eAAe,IAAI,EAAE,MAAM,EAAE;QAClC,yBAAyB;QACzB,qDAAqD;QACrD,IAAK,IAAI,IAAI,OAAO,MAAM,GAAG,GAAG,KAAK,GAAG,IAAK;YAC3C,IAAI,YAAY,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;YACvC,IAAI,IAAI,CAAA,GAAA,yCAAmB,CAAC,CAAC,UAAU,IAAI,oCAAc,CAAC,UAAU;YACpE,IAAI,GAAG;gBACL,IAAI,aAAa,EAAE,GAAG,CAAC,CAAA;oBACrB,IAAI,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC;oBACpC,OAAO,IAAI,CAAA,GAAA,wCAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;wBAAC;qBAAE,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ;gBAC/D;gBAEA,OAAO,MAAM,CAAC,GAAG,MAAM;YACzB;QACF;IACF;AACF;AApDE,cADmB,0CACZ,kBAAiB;AAsD1B,SAAS,oCAAc,KAAK;IAC1B,OAAO,2BAAK,GAAG,CAAC,MAAM,UAAU,CAAC,EAAE,KAAK;AAC1C;AAEA,SAAS,oCAAc,KAAK;IAC1B,OAAO,KAAM,CAAA,2BAAK,GAAG,CAAC,MAAM,UAAU,CAAC,EAAE,IAAI,IAAG;AAClD;AAEA,MAAM;IACJ,YAAY,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAE;QACtD,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,QAAQ,GAAG;IAClB;AACF;AAEA,SAAS,qCAAe,IAAI,EAAE,MAAM;IAClC,IAAI,WAAW;IACf,IAAI,OAAO;IACX,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,mCAAa,KAAK,CAAC,OAAO,GAAG,CAAC,sCAAiB;QAC5E,IAAI,QAAQ,MAAM;YAChB,EAAE;YACF,IAAK,IAAI,IAAI,MAAM,IAAI,OAAO,IAC5B,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,gCAAU,CAAA,GAAA,yCAAS,EAAE,CAAC,EAAE,CAAA,GAAA,yCAAQ,EAAE,GAAG,EAAE,qBAAqB;QAE3F;QAEA,EAAE;QAEF,qBAAqB;QACrB,IAAK,IAAI,IAAI,OAAO,KAAK,KAAK,IAC5B,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,gCACzB,KAAK,oCAAc,MAAM,CAAC,EAAE,GAC5B,oCAAc,MAAM,CAAC,EAAE,GACvB,IAAI,CAAC,EAAE,EACP;QAIJ,OAAO,MAAM;IACf;IAEA,IAAI,OAAO,OAAO,MAAM,EAAE;QACxB,EAAE;QACF,IAAK,IAAI,IAAI,MAAM,IAAI,OAAO,MAAM,EAAE,IACpC,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,gCAAU,CAAA,GAAA,yCAAS,EAAE,CAAC,EAAE,CAAA,GAAA,yCAAQ,EAAE,GAAG,EAAE,qBAAqB;IAE3F;AACF;AAEA,SAAS,kCAAY,KAAK;IACxB,OAAO,MAAM,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,wCAAc;AACnD;AAEA,SAAS,+BAAS,KAAK;IACrB,OAAO,MAAM,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAW;AAChD;AAEA,SAAS,sCAAgB,KAAK;IAC5B,OAAO,MAAM,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,wCAAoB;AACzD;AAEA,SAAS,sCAAgB,MAAM,EAAE,OAAO;IACtC,KAAK,IAAI,SAAS,OAChB,MAAM,QAAQ,GAAG;QAAC,CAAC,QAAQ,EAAE;IAAI;IAGnC,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa;IAC7D,KAAK,aAAa,CAAC;QAAC;KAAQ,EAAE;IAE9B,OAAO,OAAO,MAAM,KAAK;AAC3B;AAEA,SAAS,wCAAkB,IAAI,EAAE,SAAS,EAAE,MAAM;IAChD,IAAI,SAAS;QAAC;QAAQ;QAAW;KAAO;IACxC,IAAI,sCAAgB,OAAO,KAAK,CAAC,GAAG,IAAI,WAAW,sCAAgB,OAAO,KAAK,CAAC,GAAG,IAAI,SACrF,OAAO,CAAA,GAAA,yCAAQ,EAAE,OAAO;SACnB,IAAI,sCAAgB,OAAO,KAAK,CAAC,GAAG,IAAI,WAAW,sCAAgB,OAAO,KAAK,CAAC,GAAG,IAAI,SAC5F,OAAO,CAAA,GAAA,yCAAQ,EAAE,MAAM;SAClB,IAAI,sCAAgB,OAAO,KAAK,CAAC,GAAG,IAAI,WAAW,sCAAgB,OAAO,KAAK,CAAC,GAAG,IAAI,SAC5F,OAAO,CAAA,GAAA,yCAAQ,EAAE,MAAM;IAGzB,OAAO,CAAA,GAAA,yCAAQ,EAAE,MAAM;AACzB;AAEA,SAAS,wCAAkB,IAAI,EAAE,MAAM,EAAE,IAAI;IAC3C,IAAI,cAAc,KAAK,WAAW;IAClC,IAAI,WAAW,KAAK,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ;IAE/D,IAAI,eAAe,KAAK,iBAAiB,CAAC,QAAQ,EAAE;IACpD,IAAI,SAAS,KAAK,iBAAiB,CAAC,YAAY,MAAM,EAAE,EAAE;IAC1D,IAAI,QAAQ;QACV,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAQ,EAAE,MAAM,QAAQ;YAAC,YAAY,MAAM;SAAC;QAC3D,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IACjC,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,MAAM,EACpD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,wCAAkB,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI;IAGhF;IAEA,IAAK,IAAI,QAAQ,GAAG,MAAM,mCAAa,QAAQ,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,KAAK,MAAM,mCAAa,QAAQ,OAAQ;QACxH,IAAI,YAAC,QAAQ,gBAAE,YAAY,EAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU;QAEvD,IAAI,iBAAiB,oBAAoB,iBAAiB,qBACxD;QAGF,IAAI,iBAAiB,oBAAoB,cAAc;YACrD,IAAI,IAAI,IAAI,CAAA,GAAA,wCAAQ,EAAE,MAAM,cAAc;gBAAC;aAAO;YAClD,EAAE,UAAU,GAAG,IAAI,gCACjB,KAAK,oCAAc,IACnB,oCAAc,IACd,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EACrC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ;YAGnC,+BAA+B;YAC/B,IAAI,IAAI;YACR,MAAO,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,KAAK,CAClE;YAGF,OAAO,MAAM,CAAC,KAAK,GAAG;YACtB;QACF;QAEA,0BAA0B;QAC1B,EAAE;QACF,yEAAyE;QACzE,6EAA6E;QAC7E,0EAA0E;QAC1E,2EAA2E;QAC3E,0EAA0E;QAC1E,+BAA+B;QAE/B,IAAI,OAAO;QACX,IAAI,QAAQ;QACZ,IAAI,UAAU;QAEd,sEAAsE;QACtE,sEAAsE;QACtE,mBAAmB;QACnB,IAAI,YAAY,OAAO,KAAK,CAAA,GAAA,yCAAQ,EAAE,iBAAiB,IACrD,SAAS,IAAI,IACb,QAAQ,KAAK,OACX,CAAA,AAAC,YAAY,QAAQ,KAAK,cAAc,CAAC,+BAAS,MAAM,CAAC,QAAQ,EAAE,KAClE,YAAY,QAAQ,KAAK,cAAc,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,GAAG,GAElG;YACA,wCAAwC;YACxC,IAAI,IAAI;gBAAC,MAAM,CAAC,MAAM,CAAC,IAAI;gBAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI;gBAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI;aAAG;YAClF,IAAI,sCAAgB,EAAE,KAAK,CAAC,GAAG,IAAI,WAAY,YAAY,QAAQ,KAAK,cAAc,sCAAgB,GAAG,SAAU;gBACjH,SAAS;gBACT,MAAO,QAAQ,OAAO,+BAAS,MAAM,CAAC,MAAM,EAC1C;gBAEF,OAAO;gBACP,UAAU;YACZ;QACF,OAAO,IAAI,YAAY,QAAQ,KAAK,eAAe,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,KAAK,EAAE;YACzG;YACA,MAAO,QAAQ,OAAO,+BAAS,MAAM,CAAC,MAAM,EAC1C;YAEF,OAAO;YACP,UAAU;QACZ;QAEA,OAAQ,YAAY,OAAO;YACzB,KAAK;gBAAQ;oBACX,wDAAwD;oBACxD,IAAI,IAAI;oBACR,IAAI,YAAY;oBAEhB,GAAG;wBACD,IAAI,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC,UAAU;wBAEjC,6BAA6B;wBAC7B,IAAI,kCAAY,MAAM,CAAC,EAAE,GAAG;4BAC1B,oDAAoD;4BACpD,qDAAqD;4BACrD,IAAI,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,OAAO,IAAK,CAAA,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,MAAM,IAAI,SAAQ,GAAI;gCAC5F,OAAO;gCACP;4BACF;4BAEA,2CAA2C;4BAC3C,EAAE;4BACF,wBAAwB;4BACxB,EAAE;4BACF,yEAAyE;4BACzE,8BAA8B;4BAC9B,EAAE;4BAEF,kEAAkE;4BAClE,eAAe;4BACf,IAAI,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,OAAO,EACrC,YAAY;4BAGd,OAAO;wBACT,OAAO,IAAI,QAAQ,KAAK,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EAM5G;oBAEJ,QAAS,IAAI,OAAO;oBACpB;gBACF;YAEA,KAAK;gBACH,0CAA0C;gBAC1C,OAAO;gBAEP,2CAA2C;gBAC3C,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAC9B,IAAI,kCAAY,MAAM,CAAC,EAAE,GACvB,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,OAAO;QAIzD;QAEA,sEAAsE;QACtE,sEAAsE;QACtE,mBAAmB;QACnB,EAAE;QACF,0DAA0D;QAC1D,IAAI,WAAW,SAAS,SAAS,QAAQ,QAAQ,GAC/C,UAAU;QAGZ,mCAAmC;QACnC,EAAE;QACF,4EAA4E;QAC5E,wEAAwE;QACxE,6EAA6E;QAC7E,2EAA2E;QAC3E,0EAA0E;QAC1E,uBAAuB;QACvB,EAAE;QACF,6CAA6C;QAC7C,iCAAiC;QACjC,gCAAgC;QAChC,6CAA6C;QAC7C,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,4EAA4E;QAC5E,4BAA4B;QAE5B,wCAAwC;QACxC,EAAE;QACF,4EAA4E;QAC5E,4CAA4C;QAC5C,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,6EAA6E;QAE7E,qBAAqB;QAErB,IAAK,IAAI,IAAI,OAAO,IAAI,MAAM,IAAK;YACjC,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU;YAC/B,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAA,GAAA,yCAAQ,EAAE,KAAK,EAAE,KAAK,QAAQ;QACzD;QAEA,IAAI,OAAO,KACT,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,MAAM;QAGrD,4EAA4E;QAC5E,iBAAiB;QACjB,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAC9B,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EAAE;YAClD,IAAK,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,IAC3B,IAAI,kCAAY,MAAM,CAAC,EAAE,GAAG;gBAC1B,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,OAAO;gBACjD;YACF;YAEF;QACF;QAGF,sBAAsB;QACtB,IAAI,SACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,iBAAiB;QAGjE,yEAAyE;QACzE,kBAAkB;QAClB,EAAE;QACF,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,0EAA0E;QAC1E,EAAE;QACF,qBAAqB;QACrB,8BAA8B;QAC9B,uCAAuC;QACvC,qDAAqD;QACrD,EAAE;QACF,uBAAuB;QACvB,4CAA4C;QAC5C,8CAA8C;QAC9C,IAAI,KAAK,SAAS,EAAE;YAClB,IAAI,wBAAwB,KAAK,aAAa,KAAK;YACnD,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAC9B,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EAAE;gBAClD,IAAI;gBACJ,IAAK,IAAI,MAAM,GAAG,IAAI,GAAG,IAAK;oBAC5B,IAAI,kCAAY,MAAM,CAAC,EAAE,KAAM,yBAAyB,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EACpG;gBAEJ;gBAEA,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,IAAI,IAAI,GAAG;oBAC3D,uCAAuC;oBACvC,IAAI,IAAI,MAAM,CAAC,EAAE;oBACjB,OAAO,MAAM,CAAC,GAAG,MAAM,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI;oBAChD,MAAM,CAAC,EAAE,GAAG;gBACd;gBAEA;YACF;QAEJ;QAEA,wDAAwD;QACxD,IAAI,UAAU,CAAA,GAAA,yCAAQ,EAAE,KAAK;QAC7B,IAAK,IAAI,IAAI,OAAO,IAAI,KAAK,IAAK;YAChC,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU;YAC/B,IAAI,KAAK,QAAQ,GAAI,CAAA,CAAA,GAAA,yCAAW,IAAI,CAAA,GAAA,yCAAS,EAAE,CAAC,GAAG,CAAA,GAAA,yCAAS,EAAE,EAAE,GAAG,CAAA,GAAA,yCAAS,EAAE,EAAE,GAAG,CAAA,GAAA,wCAAoB,IAAI,KAAK,QAAQ,AAAD,GAAI;gBACzH,KAAK,QAAQ,GAAG;gBAChB,IAAI,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,IAAI,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,KAAK,EAAE;oBACvE,qDAAqD;oBACrD,8BAA8B;oBAC9B,gDAAgD;oBAChD,0DAA0D;oBAC1D,yDAAyD;oBACzD,wDAAwD;oBACxD,sBAAsB;oBACtB,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,KAAK,EAAE;wBACzD,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ;wBACjD;oBACF;gBAEJ;YACF,OAAO,IAAI,KAAK,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,IAAI,EACzC,UAAU,KAAK,QAAQ;QAE3B;QAEA,6DAA6D;QAC7D,qCAAqC;QACrC,IAAI,OAAO;QACX,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAAK;YACnC,IAAI,kCAAY,MAAM,CAAC,EAAE,GAAG;gBAC1B,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,GAAG,IAC5B,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,IAAI,EAChD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ;gBAGjE,OAAO;YACT,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EACvD,OAAO;QAEX;QAEA,IAAI,MAAM,OAAO,KAAK,CAAC,OAAO;QAC9B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAM,EAAE,UAAU,CAAC,QAAQ,GAAG,EAAE,UAAU,CAAC,QAAQ;QAChE,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,KAAK;QAEpC,kBAAkB;QAClB,IAAK,IAAI,IAAI,OAAO,IAAI,KAAK,IAC3B,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,MAAM,EAAE;YACtD,OAAO;YACP;QACF;QAGF,qBAAqB;QAErB,OAAO;QACP,IAAK,IAAI,IAAI,OAAO,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,iBAAiB,EAAE,IAC5F,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;QAG5B,WAAW;QACX,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,YAAY,QAAQ,KAAK;QACvD,IAAK,IAAI,IAAI,OAAO,IAAI,MAAM,IAAK;YACjC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;YAC1B,IAAI,MACF,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;QAE9B;QAEA,YAAY;QACZ,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAAK;YACnC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;YAC1B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;YAC1B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;QAC5B;QAEA,IAAI,KAAK,SAAS,IAAI,KAAK,aAAa,KAAK,cAAc;YACzD,yDAAyD;YACzD,QAAQ;YACR,EAAE;YACF,0DAA0D;YAC1D,4DAA4D;YAC5D,4DAA4D;YAC5D,2DAA2D;YAC3D,gEAAgE;YAChE,EAAE;YACF,gDAAgD;YAChD,2BAA2B;YAC3B,EAAE;YACF,yDAAyD;YACzD,yDAAyD;YACzD,oBAAoB;YACpB,EAAE;YACF,uDAAuD;YACvD,IAAK,IAAI,IAAI,OAAO,IAAI,IAAI,MAAM,IAChC,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,EAAE,IACjD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,IACjD,CAAA,IAAI,MAAM,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,GAAG,AAAD,GACtE;gBACA,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;gBAC1B,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;YAChC;QAEJ;QAEA,IAAI,UAAU;QACd,IAAI,SAAS,IAAI,IAAI,OAAO,UAAU,KACpC,4EAA4E;QAC5E,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,UAAU,IAAI,KAAK,IAAK;YACjD,IAAI,IAAI;gBAAC,MAAM,CAAC,EAAE,CAAC,IAAI;gBAAI,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI;aAAG;YAChD,IAAI,sCAAgB,GAAG,SAAS;gBAC9B,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,IAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG;gBAG9B,yDAAyD;gBACzD,yBAAyB;gBACzB,sEAAsE;gBACtE,qCAAqC;gBACrC,qCAAqC;gBACrC,IAAI,SAAS,IAAI,EACf,MAAO,IAAI,KAAK,IACd,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;gBAI9B;YACF;QACF;QAGF,yBAAyB;QACzB,IAAK,IAAI,IAAI,QAAQ,GAAG,IAAI,KAAK,IAC/B,IAAI,+BAAS,MAAM,CAAC,EAAE,GAAG;YACvB,IAAI,YAAY,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,IAAI;YACjE,IAAI,IAAI;YAER,GAAG;gBACD;gBAEA,wDAAwD;gBACxD,qDAAqD;gBACrD,6BAA6B;gBAE7B,wBAAwB;gBACxB,IAAI,WACF,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;YAElC,QAAS,IAAI,SAAS,CAAC,kCAAY,MAAM,CAAC,EAAE,GAAG;QACjD;IAEJ;AACF;AAEA,SAAS,sCAAgB,IAAI,EAAE,MAAM,EAAE,IAAI;IACzC,IAAI,cAAc,KAAK,WAAW;IAClC,IAAI,WAAW,KAAK,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ;IAE/D,IAAK,IAAI,QAAQ,GAAG,MAAM,mCAAa,QAAQ,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,KAAK,MAAM,mCAAa,QAAQ,OAAQ;QACxH,uBAAuB;QACvB,EAAE;QACF,4EAA4E;QAC5E,oEAAoE;QACpE,2EAA2E;QAC3E,WAAW;QAEX,IAAI,UAAU,CAAC,CAAC,SAAS,IAAI;QAE7B,kBAAkB;QAClB,IAAI,OAAO;QACX,MAAO,OAAO,KAAK,OACjB,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAA,GAAA,yCAAQ,EAAE,MAAM,EAAE;YACxD,IAAI,WAAW,OAAO,IAAI,KAAK;gBAC7B,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAC9B,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC3B,IAAI,CAAE,CAAA,MAAM,CAAC,EAAE,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,AAAD,GAAI;wBAC9E,uDAAuD;wBACvD,yBAAyB;wBACzB,OAAO;wBACP,MAAO,OAAO,OAAO,sCAAgB,MAAM,CAAC,KAAK,EAC/C;wBAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,MAAM;wBACnD,UAAU;oBACZ;oBACA;gBACF;YAEJ;YAEA,kEAAkE;YAClE,IAAI,KAAK,aAAa,KAAK,aACzB,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAAK;gBACnC,MAAO,IAAI,OAAO,+BAAS,MAAM,CAAC,EAAE,EAClC;gBAGF,IAAI,MAAM,OAAO,CAAC,sCAAgB,MAAM,CAAC,EAAE,GACzC;gBAGF,KAAK,eAAe;gBACpB,MAAO,IAAI,OAAO,+BAAS,MAAM,CAAC,EAAE,EAClC;gBAGF,IAAI,IAAI,OAAO,kCAAY,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,OAAO,EAAE;oBAC5F,OAAO;oBACP,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,MAAM;gBACrD;YACF;YAGF,IAAI,QAAQ,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAA,GAAA,yCAAQ,EAAE,MAAM,EACrE;YAEF;QACF;QAGF,IAAI,SAAS,OAAO,QAAQ,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,GAAG,EACzF;QAGF,IAAI,OAAO,KACT,MAAO,QAAQ,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAI,CAAA,CAAA,GAAA,yCAAS,EAAE,CAAC,GAAG,CAAA,GAAA,wCAAoB,CAAA,EAC5F;QAIJ,oBAAoB;QACpB,EAAE;QACF,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,sCAAsC;QACtC,EAAE;QAEF,IAAI,QAAQ,IAAI,OAAO,QAAQ,MAAM;YACnC,+DAA+D;YAC/D,IAAI,SAAS,SAAS,MAAM,OAAO,IAAI,OAAO;YAE9C,uEAAuE;YACvE,uEAAuE;YACvE,wCAAwC;YACxC,IAAI,KAAK,aAAa,KAAK,eAAe,KAAK,aAAa,KAAK,SAAS;gBACxE,MAAO,SAAS,SAAS,CAAE,CAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAI,CAAA,CAAA,GAAA,yCAAS,EAAE,CAAC,GAAG,CAAA,GAAA,wCAAoB,CAAA,CAAC,EACnG;gBAGF,qCAAqC;gBACrC,4CAA4C;gBAC5C,kCAAkC;gBAClC,IAAI,sCAAgB,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,KAAK,EAC3F,iEAAiE;gBACjE;oBAAA,IAAI,SAAS,IAAI,OAAO,+BAAS,MAAM,CAAC,SAAS,EAAE,GACjD;gBACF,OAEA,SAAS,OAAO,WAAW;YAE/B;YAEA,IAAI,QAAQ,UAAU,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,KAAK,EAAE;gBAC5E,+CAA+C;gBAC/C,IAAK,IAAI,IAAI,QAAQ,IAAI,OAAO,IAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,KAAK,EAAE;oBACzD,IAAI,SAAS,IAAI;oBACjB,IAAI,SAAS,QAAQ,QAAQ,QAC3B;oBAGF,IAAI,MAAM,MAAM,CAAC,OAAO;oBACxB,OAAO,MAAM,CAAC,QAAQ,MAAM,OAAO,MAAM,CAAC,SAAS,GAAG,SAAS;oBAC/D,MAAM,CAAC,OAAO,GAAG;oBAEjB;gBACF;YAEJ;QACF;QAEA,kBAAkB;QAClB,EAAE;QACF,uEAAuE;QACvE,yEAAyE;QACzE,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QAEzE,aAAa;QACb,EAAE;QACF,6EAA6E;QAC7E,sEAAsE;QACtE,EAAE;QACF,+EAA+E;QAC/E,gFAAgF;QAChF,4CAA4C;QAC5C,IAAI,QAAQ,IAAI,OACd,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,iBAAiB,IACjE,AAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,KAAK,KAAO,CAAA,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,AAAD,GACnH;YACA,IAAI;YACJ,IAAI,UAAU,YAAY,OAAO;YACjC,IAAI,QAAQ;YAEZ,mEAAmE;YACnE,wBAAwB;YACxB,IAAI,YAAY,CAAA,GAAA,yCAAQ,EAAE,UAAU,EAAE;gBACpC,qEAAqE;gBACrE,oEAAoE;gBACpE,wEAAwE;gBACxE,qEAAqE;gBACrE,iEAAiE;gBACjE,gCAAgC;gBAChC,EAAE;gBACF,oEAAoE;gBACpE,qEAAqE;gBACrE,kCAAkC;gBAClC,aAAa,QAAQ;gBACrB,MAAO,aAAa,QAAQ,CAAC,sCAAgB,MAAM,CAAC,WAAW,EAC7D;gBAGF,IAAI,aAAa,QAAQ,sCAAgB,MAAM,CAAC,WAAW,GAAG;oBAC5D,0EAA0E;oBAC1E,IAAI,aAAa,IAAI,QAAQ,+BAAS,MAAM,CAAC,aAAa,EAAE,GAC1D;oBAGF,QAAQ;gBACV;gBAEA,uEAAuE;gBACvE,8DAA8D;gBAC9D,+DAA+D;gBAC/D,IAAI,CAAC,SAAS,YAAY,CAAA,GAAA,yCAAQ,EAAE,UAAU,EAAE;oBAC9C,aAAa;oBACb,MAAO,aAAa,IAAI,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAA,GAAA,yCAAQ,EAAE,UAAU,CAC/F;oBAGF,QAAQ,aAAa;gBACvB;gBAEA,mEAAmE;gBACnE,uEAAuE;gBACvE,kEAAkE;gBAClE,wDAAwD;gBACxD,EAAE;gBACF,yEAAyE;gBACzE,IAAI,CAAC,SAAS,YAAY,CAAA,GAAA,yCAAQ,EAAE,SAAS,EAAE;oBAC7C,aAAa;oBACb,MAAO,aAAa,IAAI,OAAO,CAAE,CAAA,MAAM,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAI,CAAA,CAAA,GAAA,yCAAQ,EAAE,MAAM,GAAG,CAAA,GAAA,yCAAQ,EAAE,UAAU,GAAG,CAAA,GAAA,yCAAQ,EAAE,IAAI,AAAD,CAAC,EACrI;oBAGF,QAAQ,aAAa;gBACvB;YACF;YAEA,wEAAwE;YACxE,sEAAsE;YACtE,wEAAwE;YACxE,sEAAsE;YACtE,oEAAoE;YACpE,0BAA0B;YAC1B,IAAI,CAAC,OAAO;gBACV,sBAAsB;gBACtB,aAAa,QAAQ;gBACrB,MAAO,aAAa,QAAQ,CAAC,sCAAgB,MAAM,CAAC,WAAW,EAC7D;gBAGF,IAAI,aAAa,QAAQ,sCAAgB,MAAM,CAAC,WAAW,GAAG;oBAC5D,0EAA0E;oBAC1E,IAAI,aAAa,IAAI,QAAQ,+BAAS,MAAM,CAAC,aAAa,EAAE,GAC1D;oBAGF,QAAQ;gBACV;YACF;YAEA,yDAAyD;YACzD,IAAI,CAAC,OAAO;gBACV,aAAa,MAAM;gBACnB,MAAO,aAAa,SAAS,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,IAAI,CACpF;gBAGF,gEAAgE;gBAChE,oEAAoE;gBACpE,kEAAkE;gBAClE,6BAA6B;gBAC7B,2CAA2C;gBAC3C,IAAI,sCAAgB,MAAM,CAAC,WAAW,GAAG;oBACvC,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,YAAY,IACrC,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EAChD;gBAGN;YACF;YAEA,IAAI,OAAO,MAAM,CAAC,MAAM;YACxB,OAAO,MAAM,CAAC,OAAO,MAAM,OAAO,MAAM,CAAC,QAAQ,GAAG,aAAa;YACjE,MAAM,CAAC,WAAW,GAAG;YAErB,IAAI,QAAQ,QAAQ,QAAQ,YAC1B;QAEJ;QAEA,4CAA4C;QAC5C,EAAE;QACF,uEAAuE;QACvE,uBAAuB;QACvB,IAAI,WAAW,OAAO,IAAI,KAAK;YAC7B,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,IAC9B,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC1B,sEAAsE;gBACtE,4EAA4E;gBAC5E,8DAA8D;gBAE/D,2EAA2E;gBAC3E,wCAAwC;gBACxC,EAAE;gBACF,mCAAmC;gBACnC,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE;oBAClD,uEAAuE;oBACvE,uDAAuD;oBACvD,EAAE;oBACF,+DAA+D;oBAC/D,gBAAgB;oBAChB,IAAI,SAAS;oBAEb,uEAAuE;oBACvE,uEAAuE;oBACvE,wCAAwC;oBACxC,IAAI,KAAK,aAAa,KAAK,eAAe,KAAK,aAAa,KAAK,SAAS;wBACxE,MAAO,SAAS,SAAS,CAAE,CAAA,MAAM,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAI,CAAA,CAAA,GAAA,yCAAS,EAAE,CAAC,GAAG,CAAA,GAAA,wCAAoB,CAAA,CAAC,EACvG;wBAGF,0EAA0E;wBAC1E,+EAA+E;wBAC/E,IAAI,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EAAE;4BAC7E,IAAI,SAAS;4BACb,IAAK,IAAI,IAAI,OAAO,GAAG,IAAI,QAAQ,IACjC,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAS,EAAE,CAAC,EAAE;gCAClD;gCACA;4BACF;wBAEJ;oBACF;oBAEA,IAAI,SAAS,SAAS,sCAAgB,MAAM,CAAC,SAAS,EAAE,GACtD,oEAAoE;oBACpE;wBAAA,IAAI,SAAS,OAAO,+BAAS,MAAM,CAAC,OAAO,GACzC;oBACF;oBAGF,IAAI,SAAS;oBACb,IAAI,MAAM,MAAM,CAAC,OAAO;oBACxB,OAAO,MAAM,CAAC,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC,QAAQ,SAAS;oBAC/D,MAAM,CAAC,OAAO,GAAG;oBAEjB,IAAI,UAAU,QAAQ,OAAO,QAC3B;gBAEJ;gBAEA;YACF;QAEJ;QAEA,uDAAuD;QACvD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA,GAAA,yCAAQ,EAAE,KAAK,IAAK,CAAA,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAA,GAAA,kBAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAC,GAChI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG;IAElC;AACF;AAEA,SAAS,mCAAa,MAAM,EAAE,KAAK;IACjC,IAAI,SAAS,OAAO,MAAM,EAAE,OAAO;IACnC,IAAI,WAAW,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ;IAChD,MAAO,EAAE,QAAQ,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK;IACxE,OAAO;AACT;;;;;;;;;;AIv4BA,MAAM,cAAC,gCAAU,kBAAE,oCAAc,EAAC,GAAG,CAAA,GAAA,gEAAM;AAC3C,MAAM,6BAAO,IAAI,CAAA,GAAA,kBAAU,EAAE,CAAA,GAAA,yCAAW;AACxC,MAAM,qCAAe,IAAI,CAAA,GAAA,UAAW,EAAE,CAAA,GAAA,gEAAM;AAO7B,MAAM,iDAAwB,CAAA,GAAA,wCAAY;IAEvD,OAAO,aAAa,IAAI,EAAE;QACxB,KAAK,QAAQ,CAAC;QAEd,qCAAqC;QACrC,KAAK,QAAQ,CAAC;YAAC;YAAQ;YAAQ;YAAQ;SAAO;QAE9C,mBAAmB;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;YAAC;SAAO,EAAE;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;YAAC;SAAO;QACtB,KAAK,QAAQ,CAAC;QAEd,kCAAkC;QAClC,KAAK,QAAQ,CAAC;YAAC;YAAQ;YAAQ;YAAQ;YAAQ;YAAQ;YAAQ;SAAO;QACtE,KAAK,QAAQ,CAAC;QAEd,yBAAyB;QACzB,yFAAyF;QACzF,kFAAkF;QAElF,uEAAuE;QACvE,KAAK,QAAQ,CAAC;YAAC;YAAQ;YAAQ;YAAQ;YAAQ;YAAQ;YAAQ;SAAO;IACxE;IAEA,OAAO,eAAe,IAAI,EAAE,MAAM,EAAE;QAClC,yBAAyB;QACzB,qDAAqD;QACrD,IAAK,IAAI,IAAI,OAAO,MAAM,GAAG,GAAG,KAAK,GAAG,IAAK;YAC3C,IAAI,YAAY,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;YACvC,IAAI,oCAAc,CAAC,UAAU,EAAE;gBAC7B,IAAI,aAAa,oCAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAC7C,IAAI,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC;oBACpC,OAAO,IAAI,CAAA,GAAA,wCAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;wBAAC;qBAAE,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ;gBAC/D;gBAEA,OAAO,MAAM,CAAC,GAAG,MAAM;YACzB;QACF;IACF;AACF;AA1CE,cADmB,0CACZ,kBAAiB;AA4C1B,SAAS,kCAAY,KAAK;IACxB,OAAO,2BAAK,GAAG,CAAC,MAAM,UAAU,CAAC,EAAE;AACrC;AAEA,MAAM;IACJ,YAAY,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAE;QAC5C,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,QAAQ,GAAG;IAClB;AACF;AAEA,SAAS,qCAAe,IAAI,EAAE,MAAM;IAClC,IAAI,WAAW;IACf,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,mCAAa,KAAK,CAAC,OAAO,GAAG,CAAC,oCAAe;QAC1E,EAAE;QAEF,qBAAqB;QACrB,IAAK,IAAI,IAAI,OAAO,KAAK,KAAK,IAC5B,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,8BAAQ,gCAAU,CAAC,kCAAY,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;QAGlF,sBAAsB;QACtB,IAAI,QAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,MAAM;QAC9E,IAAK,IAAI,IAAI,OAAO,IAAI,QAAQ,OAAO,IACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG;IAE9B;AACF;AAEA,SAAS,6CAAuB,IAAI,EAAE,MAAM;IAC1C,KAAK,IAAI,SAAS,OAChB,MAAM,WAAW,GAAG;AAExB;AAEA,SAAS,iCAAW,IAAI,EAAE,MAAM;IAC9B,KAAK,IAAI,SAAS,OAChB,IAAI,MAAM,WAAW,IAAI,MAAM,QAAQ,CAAC,IAAI,EAC1C,4BAA4B;IAC5B,MAAM,UAAU,CAAC,QAAQ,GAAG;AAGlC;AAEA,SAAS,iCAAW,IAAI,EAAE,MAAM;IAC9B,KAAK,IAAI,SAAS,OAChB,IAAI,MAAM,WAAW,EACnB,gEAAgE;IAChE,MAAM,UAAU,CAAC,QAAQ,GAAG;AAGlC;AAEA,SAAS,8BAAQ,IAAI,EAAE,MAAM;IAC3B,IAAI,eAAe,KAAK,iBAAiB,CAAC,QAAQ,EAAE;IAEpD,IAAK,IAAI,QAAQ,GAAG,MAAM,mCAAa,QAAQ,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,KAAK,MAAM,mCAAa,QAAQ,OAAQ;QACxH,IAAI,GAAG;QACP,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU;QACnC,IAAI,OAAO,KAAK,YAAY;QAE5B,6CAA6C;QAC7C,IAAI,SAAS,+BAA+B,SAAS,sBAAsB,SAAS,kBAClF;QAGF,mDAAmD;QACnD,IAAI,SAAS,oBAAoB,cAAc;YAC7C,IAAI,IAAI,IAAI,CAAA,GAAA,wCAAQ,EAAE,MAAM,cAAc;gBAAC;aAAO;YAClD,EAAE,UAAU,GAAG;YAEf,+BAA+B;YAC/B,IAAK,IAAI,OAAO,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK;YAClE,OAAO,MAAM,CAAC,EAAE,GAAG,GAAG;YACtB;QACF;QAEA,uBAAuB;QACvB,IAAI,KAAK,QAAQ,KAAK,OAAO,MAAM,QAAQ,GACzC,oEAAoE;QACpE,IAAK,IAAI,QAAQ,GAAG,IAAI,KAAK,IAAK;YAChC,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU;YAC3B,IAAI,6BAAO,SAAS,+BAAS,MAAM,CAAC,EAAE,GAAG;gBACvC,0EAA0E;gBAC1E,+CAA+C;gBAC/C,IAAI,+BAAS,MAAM,CAAC,EAAE,GACpB;gBAGF,OAAO,MAAM,CAAC,OAAO,MAAM,OAAO,MAAM,CAAC,QAAQ,GAAG,IAAI,QAAQ,MAAM,CAAC,EAAE;gBACzE;YACF;QACF;QAGF,oBAAoB;QACpB,IAAK,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAK;YACrC,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU;YAC3B,IAAI,6BAAO,SAAS,+BAAS,MAAM,CAAC,EAAE,GACpC,yEAAyE;YACzE,+CAA+C;YAC/C,IAAI,+BAAS,MAAM,CAAC,EAAE,IAAI,IAAI,IAAI;iBAC7B,IAAI,AAAC,CAAA,KAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAM,KAAM,IAAI,GACxE,OAAO,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,GAAG,IAAI;QAE3D;IACF;AACF;AAEA,SAAS,mCAAa,MAAM,EAAE,KAAK;IACjC,IAAI,SAAS,OAAO,MAAM,EAAE,OAAO;IACnC,IAAI,WAAW,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ;IAChD,MAAO,EAAE,QAAQ,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK;IACxE,OAAO;AACT;AAEA,SAAS,+BAAS,KAAK;IACrB,OAAO,MAAM,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,SAAS;AAC9D;AAEA,SAAS,6BAAO,IAAI;IAClB,OAAO,KAAK,QAAQ,KAAK,OAAO,KAAK,QAAQ,KAAK;AACpD;;;AXlLA,MAAM,gCAAU;IACd,MAAM,CAAA,GAAA,wCAAW;IACjB,MAAM,CAAA,GAAA,wCAAW;IACjB,MAAM,CAAA,GAAA,wCAAW;IACjB,QAAQ,CAAA,GAAA,wCAAW;IACnB,MAAM,CAAA,GAAA,wCAAW;IACjB,MAAM,CAAA,GAAA,wCAAW;IACjB,MAAM,CAAA,GAAA,wCAAW;IACjB,MAAM,CAAA,GAAA,wCAAW;IAEjB,MAAM,CAAA,GAAA,wCAAW;IAEjB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAU;IAEhB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,oCAAoC;IACpC,uCAAuC;IACvC,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,sCAAsC;IACtC,mCAAmC;IACnC,MAAM,CAAA,GAAA,wCAAc;IACpB,qCAAqC;IACrC,4CAA4C;IAC5C,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAU;IAChB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IACpB,MAAM,CAAA,GAAA,wCAAc;IAEpB,MAAM,CAAA,GAAA,wCAAY;IAClB,MAAM,CAAA,GAAA,yCAAiB,UAAU;IAAf;AACpB;AAEO,SAAS,0CAAO,MAAM;IAC3B,IAAI,CAAC,MAAM,OAAO,CAAC,SACjB,SAAS;QAAC;KAAO;IAGnB,KAAK,IAAI,KAAK,OAAQ;QACpB,IAAI,SAAS,6BAAO,CAAC,EAAE;QACvB,IAAI,QACF,OAAO;IAEX;IAEA,OAAO,GAAA;AACT;;;;;;AYlGe,MAAM,iDAAsB,CAAA,GAAA,wCAAU;IACnD,YAAY,UAAU,EAAE,KAAK,EAAE;QAC7B,OAAQ;YACN,KAAK;gBAAG;oBACN,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;oBAC7C,IAAI,UAAU,IACZ,OAAO;oBAGT,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG;oBAClC,OAAQ,MAAM,OAAO;wBACnB,KAAK;4BACH,MAAM,EAAE,GAAG,AAAC,MAAM,EAAE,GAAG,MAAM,YAAY,GAAI;4BAC7C;wBAEF,KAAK;4BACH,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC;4BAChC;oBACJ;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;oBAC7C,IAAI,UAAU,IAAI;wBAChB,IAAI,WAAW,MAAM,SAAS,CAAC,GAAG,CAAC;wBAEnC,IAAI,SAAS,MAAM,KAAK,GAAG;4BACzB,oDAAoD;4BACpD,oFAAoF;4BACpF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;4BAC7C,OAAO;wBACT;wBAEA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;wBACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,GAAG;wBAE3C,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ;wBAC9C,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,GAAG;wBACrC,IAAI,cAAc,SAAS,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK;4BAC5C,IAAI,QAAQ,IAAI,CAAA,GAAA,wCAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;4BACrD,MAAM,UAAU,GAAG,SAAS,UAAU;4BACtC,MAAM,SAAS,GAAG,SAAS,SAAS;4BACpC,MAAM,iBAAiB,GAAG,IAAI;4BAC9B,MAAM,WAAW,GAAG;4BACpB,MAAM,YAAY,GAAG;4BACrB,OAAO;wBACT;wBAEA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,MAAM;wBACvD,OAAO;oBACT;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;oBAC7C,IAAI,UAAU,IAAI;wBAChB,IAAI,aAAa,GAAG,OAAO;wBAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW;wBACrE,OAAO;oBACT;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;oBAC7C,IAAI,UAAU,IACZ,OAAO;oBAGT,KAAK,IAAI,YAAY,MAAM,YAAY,CAAC,GAAG,CAAC,OAAQ;wBAClD,IAAI,UAAU,IAAI,CAAC,oBAAoB,CAAC,GAAG,SAAS,UAAU;wBAC9D,IAAI,CAAC,SACH;wBAGF,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,GAAG;wBAErC,oEAAoE;wBACpE,IAAI,aAAa,SAAS,UAAU,CAAC,KAAK;wBAC1C,KAAK,IAAI,SAAS,QAChB,WAAW,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;wBAGlD,wCAAwC;wBACxC,IAAI,gBAAgB,IAAI,CAAA,GAAA,wCAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,YAAY,SAAS,QAAQ;wBAC1F,cAAc,UAAU,GAAG,SAAS,UAAU;wBAC9C,cAAc,SAAS,GAAG;wBAC1B,cAAc,WAAW,GAAG;wBAE5B,iBAAiB;wBACjB,+EAA+E;wBAC/E,+EAA+E;wBAC/E,gFAAgF;wBAChF,4EAA4E;wBAC5E,gFAAgF;wBAChF,6EAA6E;wBAC7E,yEAAyE;wBACzE,gFAAgF;wBAChF,EAAE;wBACF,gFAAgF;wBAChF,4EAA4E;wBAC5E,0EAA0E;wBAC1E,2EAA2E;wBAC3E,4EAA4E;wBAC5E,8BAA8B;wBAC9B,EAAE;wBACF,6EAA6E;wBAC7E,6EAA6E;wBAC7E,iFAAiF;wBACjF,8EAA8E;wBAC9E,kDAAkD;wBAClD,EAAE;wBACF,8FAA8F;wBAC9F,IAAI,iBAAiB,SAAS,MAAM;wBACpC,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,IAAI,gBAAgB,IACpD,iBAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM;wBAGjD,cAAc,UAAU,GAAG,iBAAiB,OAAO,IAAI,CAAC,UAAU;wBAElE,IAAI,YAAY,SAAS,UAAU;wBACnC,IAAI,eAAe,SAAS,UAAU,CAAC,MAAM;wBAC7C,IAAI,WAAW;wBACf,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG;wBAErC,4FAA4F;wBAC5F,uEAAuE;wBACvE,KAAK,IAAI,cAAc,QAAS;4BAC9B,sEAAsE;4BACtE,IAAI,gBACF,MAAM;iCAEN,MAAO,MAAM,WAAY;gCACvB,IAAI,oBAAoB,WAAW,eAAe,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG;gCACpG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,cAAc,UAAU;gCACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,GAAG;gCACrC;4BACF;4BAGF,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU;4BACvC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;4BACjD,YAAY;4BACZ,OAAO,kBAAkB;wBAC3B;wBAEA,qDAAqD;wBACrD,IAAI,aAAa,CAAC,gBAChB,IAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAK;4BAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,WAAW;gCAC3C,IAAI,oBAAoB,WAAW,eAAe,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,IAAI,GAAG;gCAClG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,GAAG;4BACrC,OACE;wBAEJ;wBAGF,mFAAmF;wBACnF,IAAK,IAAI,IAAI,QAAQ,MAAM,GAAG,GAAG,KAAK,GAAG,IACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;wBAGjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG;wBACxC,OAAO;oBACT;oBAEA,OAAO;gBACT;YAEA,KAAK;gBACH,OAAO,IAAI,CAAC,YAAY,CAAC;YAE3B,KAAK;gBACH,OAAO,IAAI,CAAC,oBAAoB,CAAC;YAEnC,KAAK;gBACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,UAAU,EAAE,MAAM,SAAS;YAE3D;gBACE,MAAM,IAAI,MAAM,CAAC,gBAAgB,EAAE,WAAW,iBAAiB,CAAC;QACpE;IACF;AACF;;;;AC7Le,MAAM,iDAAsB,CAAA,GAAA,wCAAU;IACnD,mBAAmB,aAAa,EAAE,KAAK,EAAE;QACvC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe;QAC1E,IAAI,MAAM,QAAQ,IAAI,MACpB,SAAS,QAAQ,IAAI,MAAM,QAAQ;QAGrC,IAAI,MAAM,QAAQ,IAAI,MACpB,SAAS,QAAQ,IAAI,MAAM,QAAQ;QAGrC,IAAI,MAAM,UAAU,IAAI,MACtB,SAAS,OAAO,IAAI,MAAM,UAAU;QAGtC,IAAI,MAAM,UAAU,IAAI,MACtB,SAAS,OAAO,IAAI,MAAM,UAAU;QAGtC,kCAAkC;QAClC,IAAI,qBAAqB,IAAI,CAAC,IAAI,CAAC,mBAAmB;QACtD,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;QACxE,IAAI,sBAAsB,gBAAgB;YACxC,IAAI,MAAM,UAAU,EAClB,SAAS,OAAO,IAAI,mBAAmB,QAAQ,CAAC,gBAAgB,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC;YAGxG,IAAI,MAAM,UAAU,EAClB,SAAS,OAAO,IAAI,mBAAmB,QAAQ,CAAC,gBAAgB,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC;YAGxG,IAAI,MAAM,UAAU,EAClB,SAAS,QAAQ,IAAI,mBAAmB,QAAQ,CAAC,gBAAgB,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC;YAGzG,IAAI,MAAM,UAAU,EAClB,SAAS,QAAQ,IAAI,mBAAmB,QAAQ,CAAC,gBAAgB,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,UAAU,CAAC,CAAC;QAE3G;IAEA,sBAAsB;IACxB;IAEA,YAAY,UAAU,EAAE,KAAK,EAAE;QAC7B,OAAQ;YACN,KAAK;gBAAG;oBACN,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;oBAC7C,IAAI,UAAU,IACZ,OAAO;oBAGT,OAAQ,MAAM,OAAO;wBACnB,KAAK;4BACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,MAAM,KAAK;4BACtC;wBAEF,KAAK;4BACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;4BAC5C;oBACJ;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI;oBACvC,IAAI,CAAC,WACH,OAAO;oBAGT,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ;oBAC7C,IAAI,UAAU,IACZ,OAAO;oBAGT,OAAQ,MAAM,OAAO;wBACnB,KAAK;4BACH,IAAI,MAAM,MAAM,QAAQ,CAAC,GAAG,CAAC;4BAE7B,KAAK,IAAI,QAAQ,IACf,IAAI,KAAK,WAAW,KAAK,UAAU,EAAE,EAAE;gCACrC,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,MAAM;gCACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,MAAM;gCACtC,OAAO;4BACT;4BAGF,OAAO;wBAET,KAAK;4BACH,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,SAAS;4BACvE,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,MAAM,SAAS;4BAC1D,IAAI,WAAW,MAAM,WAAW,IAC9B,OAAO;4BAGT,IAAI,OAAO,MAAM,YAAY,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC;4BAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,MAAM;4BACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,MAAM;4BACtC,OAAO;oBACX;gBACF;YAEA,KAAK;gBAAG;oBACN,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,SAAS;oBAC5C,IAAI,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU;oBACtC,IAAI,CAAC,WACH,OAAO;oBAGT,IAAI,YAAY,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ,EAAE;oBAC1E,IAAI,CAAC,aAAa,CAAC,UAAU,UAAU,EACrC,OAAO;oBAGT,IAAI,aAAa,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,QAAQ,EAAE,UAAU,EAAE,EAAE;oBACzF,IAAI,CAAC,cAAc,CAAC,WAAW,WAAW,EACxC,OAAO;oBAGT,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,WAAW;oBACjD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,UAAU;oBAE9C,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;oBAClD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU;oBACpC,IAAI;oBAEJ,OAAQ,IAAI,CAAC,SAAS;wBACpB,KAAK;4BACH,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO;4BAEnC,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO;4BAC1B,KAAK,QAAQ,IAAI;4BACjB,KAAK,OAAO,IAAI;4BAChB;wBAEF,KAAK;4BACH,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO;4BACxB,IAAI,QAAQ,IAAI;4BAChB,IAAI,OAAO,IAAI;4BACf,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,KAAK,OAAO;4BACtC;oBACJ;oBAEA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE;wBACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,GAAG;wBAC3C,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;oBAChC,OAAO;wBACL,UAAU,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;wBACtD,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;oBAChC;oBAEA,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,MAAM,YAAY;oBACrD,IAAI,cAAc,IAChB,OAAO;oBAGT,mCAAmC;oBACnC,IAAI,iBAAiB,IAAI,CAAC,aAAa,CAAC,KAAK;oBAC7C,MAAO,EAAE,kBAAkB,KAAM,CAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB,GAAG,CAAA;oBAEvH,IAAI,iBAAiB,GACnB,OAAO;oBAGT,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,MAAM,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;oBACrF,IAAI,cAAc,IAChB,OAAO;oBAGT,IAAI,aAAa,MAAM,SAAS,CAAC,UAAU;oBAC3C,IAAI,aAAa,MAAM,SAAS,CAAC,UAAU,CAAC,WAAW,KAAK,CAAC;oBAC7D,IAAI,CAAC,WAAW,CAAC,YAAY,YAAY;oBACzC,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,MAAM,YAAY;oBACrD,IAAI,cAAc,IAChB,OAAO;oBAGT,mCAAmC;oBACnC,IAAI,iBAAiB,IAAI,CAAC,aAAa,CAAC,KAAK;oBAC7C,MAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM;oBAElE,IAAI,iBAAiB,GACnB,OAAO;oBAGT,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,MAAM,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;oBACxF,IAAI,aAAa,IACf,OAAO;oBAGT,IAAI,YAAY,MAAM,aAAa,CAAC,SAAS;oBAC7C,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG;oBACtC,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,eAAe;oBAC1C,IAAI,YAAY,SAAS,UAAU,IAAI,SAAS,UAAU,KAAK,UAAU,UAAU,IAAK,UAAU,iBAAiB,GAAG,IAClH,KAAK,GAAG,CAAC,UAAU,iBAAiB,EAAE,SAAS,UAAU,CAAC,MAAM,IAAI,IACpE,SAAS,UAAU,CAAC,MAAM,GAAG;oBAEjC,IAAI,aAAa,MAAM,SAAS,CAAC,UAAU;oBAC3C,IAAI,aAAa,SAAS,CAAC,UAAU,CAAC,WAAW,KAAK,CAAC;oBACvD,IAAI,CAAC,WAAW,CAAC,YAAY,YAAY;oBACzC,OAAO;gBACT;YAEA,KAAK;gBAAG;oBACN,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,aAAa;oBACvD,IAAI,eAAe,IACjB,OAAO;oBAGT,qCAAqC;oBACrC,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;oBAC7C,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;oBACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,EACvB,OAAO;oBAGT,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;oBAEhC,iDAAiD;oBACjD,IAAI,OAAO;oBACX,IAAI,IAAI,UAAU,KAAK,KAAK,UAAU,EAAE;wBACtC,IAAI,CAAC,IAAI,UAAU,EACjB,OAAO;6BACF,IAAI,IAAI,iBAAiB,KAAK,KAAK,iBAAiB,EACzD,OAAO;oBAEX,OACE,wEAAwE;oBACxE,6CAA6C;oBAC7C,IAAI,AAAC,IAAI,UAAU,IAAI,CAAC,IAAI,iBAAiB,IAAM,KAAK,UAAU,IAAI,CAAC,KAAK,iBAAiB,EAC3F,OAAO;oBAIX,IAAI,CAAC,MACH,OAAO;oBAGT,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,aAAa,EAAE,KAAK,EAAE;oBAChE,IAAI,eAAe,IACjB,OAAO;oBAGT,IAAI,aAAa,MAAM,UAAU,CAAC,WAAW;oBAC7C,IAAI,aAAa,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,KAAK,CAAC;oBAC/D,IAAI,CAAC,WAAW,CAAC,YAAY,YAAY;oBACzC,OAAO;gBACT;YAEA,KAAK;gBACH,OAAO,IAAI,CAAC,YAAY,CAAC;YAE3B,KAAK;gBACH,OAAO,IAAI,CAAC,oBAAoB,CAAC;YAEnC,KAAK;gBACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,UAAU,EAAE,MAAM,SAAS;YAE3D;gBACE,MAAM,IAAI,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC;QAC3D;IACF;IAEA,YAAY,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE;QAClD,IAAI,aAAa,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,aAAa,IAAI,CAAC,SAAS,CAAC,WAAW,UAAU;QAErD,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,eAAe;QAC5C,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAEtD,QAAQ,OAAO,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC;QAC7C,QAAQ,OAAO,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,GAAG;IAC1C;IAEA,UAAU,MAAM,EAAE;QAChB,qCAAqC;QACrC,IAAI,IAAI,OAAO,WAAW;QAC1B,IAAI,IAAI,OAAO,WAAW;QAE1B,kCAAkC;QAClC,IAAI,qBAAqB,IAAI,CAAC,IAAI,CAAC,mBAAmB;QACtD,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;QACxE,IAAI,sBAAsB,gBAAgB;YACxC,IAAI,OAAO,YAAY,EACrB,KAAK,mBAAmB,QAAQ,CAAC,gBAAgB,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC;YAG/F,IAAI,OAAO,YAAY,EACrB,KAAK,mBAAmB,QAAQ,CAAC,gBAAgB,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC;QAEjG;QAEA,OAAO;eAAE;eAAG;QAAE;IAChB;IAEA,cAAc,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC5C,KAAK,CAAC,cAAc,cAAc,QAAQ;QAE1C,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IACtC,IAAI,CAAC,oBAAoB,CAAC;QAG5B,IAAI,CAAC,iBAAiB;IACxB;IAEA,qBAAqB,CAAC,EAAE;QACtB,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;QAC1B,IAAI,MAAM,iBAAiB,IAAI,MAAM;YACnC,IAAI,IAAI,MAAM,iBAAiB;YAE/B,MAAM,iBAAiB,GAAG;YAC1B,IAAI,CAAC,oBAAoB,CAAC;YAE1B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO;QACxD;IACF;IAEA,oBAAoB;QAClB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAK;YAC3C,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,MAAM,cAAc,IAAI,MAAM;gBAChC,IAAI,IAAI,MAAM,cAAc;gBAE5B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO;gBACtD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO;gBAEtD,IAAI,IAAI,CAAC,SAAS,KAAK,OACrB,IAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAK;oBAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ;oBACvD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ;gBACzD;qBAEA,IAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAK;oBAClC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ;oBACvD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ;gBACzD;YAEJ;QACF;IACF;AACF;;;Af1Ve,MAAM;IAkBnB,MAAM,QAAQ,EAAE;QACd,gEAAgE;QAChE,kEAAkE;QAClE,IAAI,CAAC,UAAU,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,CAAA,QAAS,IAAI,CAAA,GAAA,wCAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;mBAAI,MAAM,UAAU;aAAC;QAEvG,2DAA2D;QAC3D,IAAI,SAAS;QACb,IAAI,IAAI,CAAC,aAAa,EACpB,SAAS,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,MAAM,EAAE,SAAS,QAAQ,EAAE,SAAS,SAAS;QAGjG,IAAI,IAAI,CAAC,aAAa,EACpB,SAAS,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,MAAM,EAAE,SAAS,QAAQ,EAAE,SAAS,SAAS;QAGjG,iEAAiE;QACjE,2DAA2D;QAC3D,IAAI,CAAC,MAAM,GAAG,0CAAe;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA,GAAA,wCAAU,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,SAAS,SAAS;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,QAAQ;QAE9D,6CAA6C;QAC7C,IAAK,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CACnC,SAAS,QAAQ,CAAC,IAAI,GAAG;IAE7B;IAEA,WAAW,QAAQ,EAAE;QACnB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU;YAErD,+CAA+C;YAC/C,SAAS,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,YAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,UAAU,UAAU;QAC1G;IACF;IAEA,SAAS,QAAQ,EAAE;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,eACjC,IAAI,CAAC,gBAAgB,CAAC,SAAS,SAAS;QAG1C,IAAI,IAAI,CAAC,aAAa,EACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,SAAS;QAG3E,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,cACjC,IAAI,CAAC,gBAAgB,CAAC,SAAS,SAAS;QAG1C,kEAAkE;QAClE,IAAI,SAAS,SAAS,KAAK,OAAO;YAChC,SAAS,MAAM,CAAC,OAAO;YACvB,SAAS,SAAS,CAAC,OAAO;QAC5B;QAEA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ;IAC1D;IAEA,iBAAiB,SAAS,EAAE;QAC1B,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;YAC7B,SAAS,CAAC,EAAE,CAAC,QAAQ,GAAG;YACxB,SAAS,CAAC,EAAE,CAAC,QAAQ,GAAG;QAC1B;IAEJ;IAEA,UAAU;QACR,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,MAAM,GAAG;IAChB;IAEA,qBAAqB,MAAM,EAAE,QAAQ,EAAE;QACrC,IAAI,WAAW,EAAE;QAEjB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ;YACxC,SAAS,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ;QAC1D;QAEA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ;YACxC,SAAS,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ;QAC1D;QAEA,OAAO;IACT;IAxGA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,aAAa,GAAG;QACrB,IAAI,CAAC,aAAa,GAAG;QACrB,IAAI,CAAC,gBAAgB,GAAG;QAExB,IAAI,KAAK,IAAI,EACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA,GAAA,wCAAY,EAAE,MAAM,KAAK,IAAI;QAGxD,IAAI,KAAK,IAAI,EACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA,GAAA,wCAAY,EAAE,MAAM,KAAK,IAAI;IAE1D;AA0FF;;;AZxGe,MAAM;IAgBnB,OAAO,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;QACpD,uCAAuC;QACvC,IAAI,OAAO,aAAa,UAAU;YAChC,YAAY;YACZ,WAAW;YACX,SAAS;YACT,WAAW,EAAE;QACf;QAEA,iCAAiC;QACjC,IAAI,OAAO,WAAW,UAAU;YAC9B,gEAAgE;YAChE,IAAI,UAAU,MACZ,SAAS,0CAAiB;YAG5B,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACzC,OAAO;YACL,2EAA2E;YAC3E,IAAI,UAAU,MAAM;gBAClB,IAAI,aAAa,EAAE;gBACnB,KAAK,IAAI,SAAS,OAChB,WAAW,IAAI,IAAI,MAAM,UAAU;gBAGrC,SAAS,0CAAqB;YAChC;YAEA,IAAI,SAAS;QACf;QAEA,IAAI,WAAW,IAAI,CAAA,GAAA,wCAAO,EAAE,QAAQ,UAAU,QAAQ,UAAU;QAEhE,sCAAsC;QACtC,IAAI,OAAO,MAAM,KAAK,GAAG;YACvB,SAAS,SAAS,GAAG,EAAE;YACvB,OAAO;QACT;QAEA,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAGpB,qCAAqC;QACrC,IAAI,CAAC,UAAU,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC;QAEd,IAAI,CAAC,qBAAqB,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS;QAE9D,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EACpC,IAAI,CAAC,MAAM,CAAC,OAAO;QAGrB,OAAO;IACT;IAEA,WAAW,QAAQ,EAAE;QACnB,wDAAwD;QACxD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAE3B;IAEA,SAAS,QAAQ,EAAE;QACjB,8BAA8B;QAC9B,SAAS,SAAS,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,CAAA,QAAS,IAAI,CAAA,GAAA,wCAAY,EAAE,MAAM,YAAY;QACtF,IAAI,aAAa;QAEjB,iEAAiE;QACjE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EACrC,aAAa,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAGpC,uEAAuE;QACvE,IAAI,CAAC,cAAe,CAAA,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,AAAD,GAAI;YACjE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA,GAAA,wCAAkB,EAAE,IAAI,CAAC,IAAI;YAG9D,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS;QAC7E;QAEA,mFAAmF;QACnF,IAAI,AAAC,CAAA,CAAC,cAAc,CAAC,WAAW,IAAI,AAAD,KAAM,SAAS,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC3F,IAAI,CAAC,IAAI,CAAC,aAAa,EACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA,GAAA,wCAAY,EAAE,IAAI,CAAC,IAAI;YAGlD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS;YAC9D,SAAS,QAAQ,CAAC,IAAI,GAAG;QAC3B;IACF;IAEA,sBAAsB,MAAM,EAAE,SAAS,EAAE;QACvC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IACjC,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG;YACpD,MAAM,CAAC,EAAE,GAAG;YACZ,SAAS,CAAC,EAAE,CAAC,QAAQ,GAAG;YACxB,SAAS,CAAC,EAAE,CAAC,QAAQ,GAAG;QAC1B;IAEJ;IAEA,mBAAmB,EAAE,EAAE;QACrB,0DAA0D;QAC1D,yDAAyD;QACzD,6BAA6B;QAC7B,IAAI,QAAQ,MAAM;QAClB,IAAI,UAAU,GACZ,MAAM;QACN,OAAQ,MAAM;YACb,KAAK;gBAAM,OAAO,OAAO;YACzB,KAAK;gBAAM,OAAO,OAAO;YACzB,KAAK;gBAAM,OAAO,OAAO;YACzB,KAAK;gBAAM,OAAO,UAAU,MAAM,MAAM;YACxC,KAAK;gBAAM,OAAO,UAAU,MAAM,MAAM;YACxC,KAAK;gBAAM,OAAO,AAAC,UAAU,MAAM,MAAM,UAAY,UAAU,MAAM,MAAM,UAAY,UAAU,MAAM,MAAM;YAC7G,KAAK;gBAAM,OAAO,AAAC,UAAU,MAAM,MAAM,UAAW,OAAO;YAC3D,KAAK;gBAAM,OAAO,UAAU,MAAM,MAAM;YACxC;gBAAW,OAAO;QACnB;aAEA,eAAe;QACf,OAAQ;YACP,KAAK;gBAAM,OAAO,AAAC,WAAW,MAAM,MAAM,WAAa,WAAW,MAAM,MAAM;YAC9E,KAAK;gBAAM,OAAO,WAAW,MAAM,MAAM;YACzC;gBAAW,OAAO;QACnB;IAEJ;IAEA,qBAAqB,MAAM,EAAE,QAAQ,EAAE;QACrC,IAAI,WAAW,EAAE;QAEjB,IAAI,IAAI,CAAC,MAAM,EACb,SAAS,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ;QAG5D,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,OAAO,CAAC,YAAY,IACjD,SAAS,IAAI,CAAC;QAGhB,OAAO;IACT;IAEA,gBAAgB,GAAG,EAAE;QACnB,IAAI,SAAS,IAAI;QAEjB,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAC7D,KAAK,IAAI,aAAa,WACpB,OAAO,GAAG,CAAC,OAAO,aAAa,CAAC;QAGlC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAC5C,KAAK,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAC7C,OAAO,GAAG,CAAC;QAIf,OAAO,MAAM,IAAI,CAAC;IACpB;IAlLA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,mBAAmB,GAAG;QAC3B,IAAI,CAAC,aAAa,GAAG;QAErB,+EAA+E;QAC/E,oFAAoF;QACpF,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAc,EAAE,IAAI,CAAC,IAAI;aAEtC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAa,EAAE,IAAI,CAAC,IAAI;IAE9C;AAsKF;;;;;;;A8B1LA,MAAM,qCAAe;IACnB,QAAQ;IACR,QAAQ;IACR,kBAAkB;IAClB,eAAe;IACf,WAAW;AACb;AAQe,MAAM;IAOnB;;;;GAIC,GACD,aAAa;QACX,OAAO,CAAA;YACL,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACpB,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI;YACzC;QACF;IACF;IAEA;;;GAGC,GACD,QAAQ;QACN,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA,MAAO,KAAK,KAAK,CAAC,MAAM,OAAO;YACrD,OAAO,CAAC,EAAE,kCAAY,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC;QACtD;QAEA,OAAO,KAAK,IAAI,CAAC;IACnB;IAEA;;;;;;GAMC,GACD,IAAI,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG;YAClB,KAAK,IAAI,WAAW,IAAI,CAAC,QAAQ,CAC/B,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,EAC5C,KAAK,QAAQ,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE;YAItD,IAAI,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC;QAC7B;QAEA,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA;;;;GAIC,GACD,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,KAAK,EACZ,OAAO,IAAI,CAAC,KAAK;QAGnB,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG;QAClB,IAAI,KAAK,GAAG,KAAK;QAEjB,IAAI,IAAI,CAAA,IACN,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,GACtB,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,GAClC,IAAK,CAAA,IAAI,CAAA,IAAK,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,GACpC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QAG5B,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,CACzB,OAAQ,EAAE,OAAO;YACf,KAAK;YACL,KAAK;gBACH,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;gBACnB,KAAK,QAAQ,CAAC,GAAG;gBACjB,KAAK;gBACL,KAAK;gBACL;YAEF,KAAK;YACL,KAAK;gBACH,IAAI,EAAE,OAAO,KAAK,oBAAoB;oBACpC,mCAAmC;oBACnC,IAAI,CAAC,MAAM,MAAM,KAAK,IAAI,GAAG,EAAE,IAAI;oBACnC,IAAI,OAAO,KAAK,IAAI,IAAK,CAAA,OAAO,EAAC,GAAO,8BAA8B;oBACtE,IAAI,OAAO,KAAK,IAAI,IAAK,CAAA,OAAO,EAAC;oBACjC,IAAI,OAAO,MAAM,IAAI,IAAK,CAAA,OAAO,GAAE,GAAK,8BAA8B;oBACtE,IAAI,OAAO,MAAM,IAAI,IAAK,CAAA,OAAO,GAAE;gBACrC,OACE,IAAI,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,IAAI,GAAG,EAAE,IAAI;gBAGjD,oFAAoF;gBACpF,KAAK,QAAQ,CAAC,KAAK;gBAEnB,IAAI,KAAK;oBAAC;oBAAI;iBAAG;gBACjB,IAAI,KAAK;oBAAC;oBAAM;iBAAK;gBACrB,IAAI,KAAK;oBAAC;oBAAM;iBAAK;gBACrB,IAAI,KAAK;oBAAC;oBAAK;iBAAI;gBAEnB,IAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAK;oBAC3B,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE;oBAC1C,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE;oBACtD,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE;oBAEzB,IAAI,MAAM,GAAG;wBACX,IAAI,MAAM,GACR;wBAGF,IAAI,IAAI,CAAC,IAAI;wBACb,IAAI,IAAI,KAAK,IAAI,GAAG;4BAClB,IAAI,MAAM,GACR,KAAK,QAAQ,CAAC,EAAE,IAAI,KAAK,IAAI;iCACxB,IAAI,MAAM,GACf,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE;wBAE/B;wBAEA;oBACF;oBAEA,IAAI,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI;oBACpC,IAAI,OAAO,GACT;oBAGF,IAAI,KAAK,AAAC,CAAA,CAAC,IAAI,KAAK,IAAI,CAAC,KAAI,IAAM,CAAA,IAAI,CAAA;oBACvC,IAAI,IAAI,MAAM,KAAK,GAAG;wBACpB,IAAI,MAAM,GACR,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI;6BACzB,IAAI,MAAM,GACf,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE;oBAE/B;oBAEA,IAAI,KAAK,AAAC,CAAA,CAAC,IAAI,KAAK,IAAI,CAAC,KAAI,IAAM,CAAA,IAAI,CAAA;oBACvC,IAAI,IAAI,MAAM,KAAK,GAAG;wBACpB,IAAI,MAAM,GACR,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI;6BACzB,IAAI,MAAM,GACf,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE;oBAE/B;gBACF;gBAEA,KAAK;gBACL,KAAK;gBACL;QACJ;QAGF,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC;IACpC;IAEA;;;;GAIC,GACD,UAAU,EAAE,EAAE;QACZ,IAAI,OAAO,IAAI;QAEf,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAE;YAC3B,IAAI,OAAO,EAAE;YACb,IAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAG;gBACzC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;gBACxC,KAAK,IAAI,CAAC,GAAG;YACf;YAEA,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI;QACrB;QAEA,OAAO;IACT;IAEA;;GAEC,GACD,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG;YACxB,MAAM,KAAK,KAAK,IAAI,KAAK,IAAI;YAC7B,MAAM,KAAK,KAAK,IAAI,KAAK,IAAI;YAC7B,OAAO;gBAAC;gBAAI;aAAG;QACjB;IACF;IAEA;;GAEC,GACD,UAAU,CAAC,EAAE,CAAC,EAAE;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;IACvC;IAEA;;GAEC,GACD,OAAO,KAAK,EAAE;QACZ,IAAI,MAAM,KAAK,GAAG,CAAC;QACnB,IAAI,MAAM,KAAK,GAAG,CAAC;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,GAAG;IAChD;IAEA;;GAEC,GACD,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,QAAQ,GAAG;IACjD;IArNA,aAAc;QACZ,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC,KAAK,GAAG;QACb,IAAI,CAAC,KAAK,GAAG;IACf;AAkNF;AAEA,KAAK,IAAI,WAAW;IAAC;IAAU;IAAU;IAAoB;IAAiB;CAAY,CACxF,yCAAK,SAAS,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI;IACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;IAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;iBACjB;cACA;IACF;IAEA,OAAO,IAAI;AACb;;;;IClPF,2CAAe;IACb;IAAW;IAAS;IAAoB;IAAS;IAAU;IAAY;IAAc;IAAU;IAC/F;IAAa;IAAe;IAAa;IAAc;IAAY;IAAQ;IAAS;IAAU;IAAU;IACxG;IAAQ;IAAO;IAAO;IAAS;IAAQ;IAAQ;IAAO;IAAS;IAAS;IAAQ;IAAS;IAAa;IACtG;IAAS;IAAW;IAAY;IAAM;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC5G;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAe;IAAa;IACnF;IAAe;IAAc;IAAS;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC5G;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAa;IAAO;IAAc;IACzF;IAAa;IAAS;IAAY;IAAU;IAAU;IAAa;IAAa;IAAU;IAC1F;IAAe;IAAa;IAAU;IAAS;IAAY;IAAU;IAAU;IAAe;IAC9F;IAAU;IAAU;IAAe;IAAa;IAAU;IAAU;IAAU;IAAe;IAC7F;IAAU;IAAU;IAAU;IAAe;IAAa;IAAU;IAAU;IAAQ;IAAY;IAClG;IAAU;IAAa;IAAc;IAAc;IAAa;IAAa;IAAS;IAAY;IAClG;IAAM;IAAU;IAAY;IAAa;IAAa;IAAgB;IAAO;IAAM;IAAe;IAClG;IAAW;IAAM;IAAY;IAAe;IAAgB;IAAS;IAAM;IAAU;IACrF;IAAc;IAAc;IAAW;IAAU;IAAe;IAAS;IAAiB;IAC1F;IAAY;IAAoB;IAAU;IAAU;IAAU;IAAM;IAAM;IAAU;IAAU;IAC9F;IAAiB;IAAa;IAAc;IAAU;IAAW;IAAa;IAAa;IAC3F;IAAY;IAAiB;IAAkB;IAAM;IAAM;IAAa;IAAkB;IAC1F;IAAgB;IAAe;IAAe;IAAe;IAAU;IAAa;IAAU;IAC9F;IAAe;IAAa;IAAU;IAAU;IAAe;IAAS;IAAU;IAAU;IAC5F;IAAU;IAAY;IAAc;IAAS;IAAU;IAAS;IAAa;IAAQ;IAAW;IAChG;IAAU;IAAS;IAAU;IAAU;IAAU;IAAU;IAAU;IAAU;IAAa;IAAO;IACnG;IAAU;IAAU;IAAS;IAAS;IAAS;IAAY;IAAe;IAAe;IACzF;IAAW;IAAc;IAAiB;IAAS;IAAU;IAAU;IAAc;IAAY;IACjG;IAAU;IAAU;IAAU;IAAU;CACzC;;;AFbc,MAAM;IAsBnB,WAAW;QACT,OAAO,IAAI,CAAA,GAAA,wCAAG;IAChB;IAEA,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;IACvB;IAEA,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;IACvB;IAEA,iBAAiB,KAAK,EAAE;QACtB,IAAI,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAChC,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAGlC,IAAI,SAAS,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG;QACtD,IAAI,MAAM;YACR,SAAS,SAAS,OAAO,OAAO,GAAG;YACnC,SAAS,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,KAAK;QACjE;QAEA,OAAO;IACT;IAEA,YAAY,IAAI,EAAE;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAI,OAAO,IAAI,CAAC,QAAQ;QAEzC,IAAI,EAAC,SAAQ,YAAY,EAAE,SAAQ,WAAW,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QAEvF,6FAA6F;QAC7F,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EACjB,IAAI,EAAC,SAAQ,aAAa,EAAE,SAAQ,UAAU,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;aAElF;YACL,IAAI;YACJ,IAAI,OAAO,SAAS,eAAe,SAAS,MAAS,CAAA,QAAE,IAAI,EAAE,GAAG,IAAI,AAAD;YAEnE,IAAI,AAAC,CAAA,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,AAAD,KAAM,IAAI,OAAO,GAAG,GAAG;gBACjD,IAAI,gBAAgB,KAAK,GAAG,CAAC,IAAI,YAAY,GAAG,IAAI,aAAa;gBACjE,IAAI,aAAa,IAAI,YAAY,GAAG,KAAK,IAAI;YAE/C,OAAO;gBACL,IAAI,QAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK;gBACzB,IAAI,gBAAgB,KAAK,GAAG,CAAC,KAAK,MAAM,GAAG,KAAK,OAAO;gBACvD,IAAI,aAAa,KAAK,MAAM,GAAG,KAAK,IAAI;YAC1C;QACF;QAEA,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EACnD,gBAAgB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QAG9F,OAAO,IAAI,CAAC,QAAQ,GAAG;0BAAE;2BAAc;yBAAe;wBAAa;QAAW;IAChF;IAEA;;;;;;;;;;GAUC,GACD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA;;;;GAIC,GACD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA;;;GAGC,GACD,IACI,OAAO;QACT,2CAA2C;QAC3C,+CAA+C;QAC/C,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA;;;;GAIC,GACD,cAAc,IAAI,EAAE;QAClB,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;IAEA;;;GAGC,GACD,IACI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,GAAG,YAAY;IACxC;IAEA;;;GAGC,GACD,IACI,gBAAgB;QAClB,OAAO,IAAI,CAAC,WAAW,GAAG,aAAa;IACzC;IAEA,IAAI,yBAAyB,CAAC;IAE9B,WAAW;QACT,IAAI,QAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK;QACzB,IAAI,CAAC,MACH,OAAO;QAGT,OAAQ,KAAK,OAAO;YAClB,KAAK;gBACH,OAAO,CAAA,GAAA,wCAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAE/B,KAAK;gBACH,IAAI,KAAK,KAAK,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,IAAI,KAAK,CAAA,GAAA,wCAAY,EAAE,MAAM,EAC3B,OAAO,CAAA,GAAA,wCAAY,CAAC,CAAC,GAAG;gBAG1B,OAAO,KAAK,KAAK,CAAC,KAAK,CAAA,GAAA,wCAAY,EAAE,MAAM,CAAC;YAE9C,KAAK;gBACH,OAAO,CAAA,GAAA,wCAAY,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvD,KAAK;gBACH,OAAO,OAAO,YAAY,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD;IACF;IAEA;;;GAGC,GACD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA;;;;GAIC,GACD,OAAO,GAAG,EAAE,IAAI,EAAE;QAChB,IAAI,IAAI;QAER,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG;QAC7C,IAAI,KAAK,CAAC,OAAO;QAEjB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU;QAC7B,GAAG;QACH,IAAI,IAAI;QAER,IAAI,OAAO;IACb;IApMA,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAE;QAChC;;;KAGC,GACD,IAAI,CAAC,EAAE,GAAG;QAEV;;;;;KAKC,GACD,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,KAAK,GAAG;QAEb,6CAA6C;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,GAAA,aAAK;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;IAC7C;AAkLF;;;;;;;;;;;;;;;;;;;;;;;;AD9MA,kDAAkD;AAClD,IAAI,mCAAa,IAAI,cAAS;IAC5B,kBAAkB;IAClB,MAAkB;IAClB,MAAkB;IAClB,MAAkB;IAClB,MAAkB;AACpB;AAEA,0BAA0B;AAC1B,MAAM,iCAAkB;AACxB,MAAM,uCAAkB;AACxB,MAAM,uCAAkB;AACxB,MAAM,+BAAkB;AACxB,MAAM,+BAAkB;AACxB,MAAM,+BAAkB;AAExB,6BAA6B;AAC7B,MAAM,8CAA4B;AAClC,MAAM,2CAA4B;AAClC,MAAM,yCAA4B;AAClC,MAAM,wCAA4B;AAClC,MAAM,wCAA4B;AAClC,MAAM,iDAA4B;AAClC,MAAM,6CAA4B;AAClC,MAAM,6CAA4B;AAClC,MAAM,uCAA4B;AAClC,MAAM,yCAA4B;AAClC,MAAM,gDAA4B;AAClC,MAAM,kDAA4B;AAG3B,MAAM;IAQX,OAAO;QACL,OAAO,IAAI,0CAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChE;IATA,YAAY,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAE;QAC7C,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,UAAU,GAAG;QAClB,IAAI,CAAC,CAAC,GAAG;QACT,IAAI,CAAC,CAAC,GAAG;IACX;AAKF;AAEA,8CAA8C;AAC9C,MAAM;IACJ,YAAY,OAAO,EAAE,EAAE,EAAE,EAAE,CAAE;QAC3B,IAAI,CAAC,OAAO,GAAG;QACf,IAAI,CAAC,EAAE,GAAG;QACV,IAAI,CAAC,EAAE,GAAG;QACV,IAAI,CAAC,GAAG,GAAG;QACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;IAChC;AACF;AAKe,MAAM,iDAAiB,CAAA,GAAA,wCAAI;IAGxC,4DAA4D;IAC5D,SAAS,QAAQ,EAAE;QACjB,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,UACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;QAGvB,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACxC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,QAAQ,iCAAW,MAAM,CAAC;QAE9B,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG,EAAE,MAAM,IAAI,EAAE,MAAM,IAAI,EAAE,MAAM,IAAI,EAAE,MAAM,IAAI;QAClE,OAAO,OAAO,MAAM,CAAC;IACvB;IAEA,mCAAmC;IACnC,iBAAiB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1C,IAAI,OAAO;YACT,IAAI,MAAM,OAAO,SAAS;YAC1B,IAAI,CAAC,MACH,MAAM,CAAC;YAGT,OAAO;QACT,OACE,IAAI,MACF,IAAI,MAAM;aAEV,IAAI,MAAM,OAAO,OAAO,WAAW;QAIvC,OAAO;IACT;IAEA,wDAAwD;IACxD,qCAAqC;IACrC,UAAU;QACR,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;QAElD,mDAAmD;QACnD,IAAI,YAAY,SAAW,OAAO;QAElC,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACxC,OAAO,GAAG,IAAI;QACd,IAAI,WAAW,OAAO,GAAG;QAEzB,IAAI,QAAQ,iCAAW,MAAM,CAAC;QAE9B,IAAI,MAAM,gBAAgB,GAAG,GAC3B,IAAI,CAAC,aAAa,CAAC,OAAO;aAErB,IAAI,MAAM,gBAAgB,GAAG,GAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,QAAQ;QAGvC,OAAO;IACT;IAEA,cAAc,KAAK,EAAE,MAAM,EAAE;QAC3B,yBAAyB;QACzB,MAAM,MAAM,GAAG,EAAE;QAEjB,IAAI,mBAAmB,IAAI,aAAQ,eAAU,MAAM,gBAAgB,EAAE,MAAM,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,aAAQ,cAAS,eAAU,MAAM,CAAC;QAE3D,IAAI,QAAQ,EAAE;QACd,IAAI,YAAY,gBAAgB,CAAC,iBAAiB,MAAM,GAAG,EAAE,GAAG;QAEhE,MAAO,MAAM,MAAM,GAAG,UAAW;YAC/B,IAAI,OAAO,OAAO,SAAS;YAC3B,MAAM,IAAI,CAAC;YAEX,wBAAwB;YACxB,IAAI,OAAO,8BAAQ;gBACjB,IAAI,QAAQ,OAAO,SAAS;gBAC5B,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACzB,MAAM,IAAI,CAAC;YAEf;QACF;QAEA,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;YACrC,IAAI,OAAO,KAAK,CAAC,EAAE;YACnB,IAAI,QAAQ,IAAI,0CAAM,CAAC,CAAE,CAAA,OAAO,8BAAO,GAAI,iBAAiB,OAAO,CAAC,MAAM,GAAG,GAAG;YAChF,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB;QAEA,IAAI,KAAK;QACT,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;YACrC,IAAI,OAAO,KAAK,CAAC,EAAE;YACnB,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,OAAO,sCAAgB,OAAO;QAC3F;QAEA,IAAI,KAAK;QACT,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;YACrC,IAAI,OAAO,KAAK,CAAC,EAAE;YACnB,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,OAAO,sCAAgB,OAAO;QAC3F;QAEA,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAClC,IAAI,SAAS,MAAM,MAAM,CAAC,KAAK;YAC/B,OAAO,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC;YAEtC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE;YACxD,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC;QACrC;QAEA;IACF;IAEA,iBAAiB,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAC1C,4BAA4B;QAC5B,MAAM,UAAU,GAAG,EAAE;QACrB,IAAI,mBAAmB;QACvB,IAAI,QAAQ;QAEZ,MAAO,QAAQ,sCAAiB;YAC9B,QAAQ,OAAO,YAAY;YAC3B,IAAI,OAAO,OAAO,GAAG,GAAG;YACxB,IAAI,UAAU,OAAO,YAAY;YACjC,IAAI,CAAC,kBACH,mBAAmB,AAAC,CAAA,QAAQ,0CAAmB,MAAO;YAGxD,IAAI,QAAQ,6CAAuB;gBACjC,IAAI,KAAK,OAAO,WAAW;gBAC3B,IAAI,KAAK,OAAO,WAAW;YAC7B,OAAO;gBACL,IAAI,KAAK,OAAO,QAAQ;gBACxB,IAAI,KAAK,OAAO,QAAQ;YAC1B;YAEA,IAAI,YAAY,IAAI,gCAAU,SAAS,IAAI;YAC3C,UAAU,GAAG,GAAG;YAEhB,IAAI,QAAQ,uCACV,wCAAwC;YACxC,UAAU,MAAM,GAChB,UAAU,MAAM,GAAG,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;iBAE1E,IAAI,QAAQ,gDAA0B;gBAC3C,UAAU,MAAM,GAAG,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;gBAC/E,UAAU,MAAM,GAAG,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;YAEjF,OAAO,IAAI,QAAQ,4CAAsB;gBACvC,UAAU,MAAM,GAAI,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;gBAChF,UAAU,OAAO,GAAG,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;gBAChF,UAAU,OAAO,GAAG,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;gBAChF,UAAU,MAAM,GAAI,AAAC,CAAA,AAAC,OAAO,SAAS,MAAM,KAAO,OAAO,SAAS,MAAM,EAAE,IAAK;YAClF;YAEA,MAAM,UAAU,CAAC,IAAI,CAAC;QACxB;QAEA,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAClC,IAAI,SAAS,EAAE;YACf,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,IAAK;gBAChD,IAAI,YAAY,MAAM,UAAU,CAAC,EAAE;gBACnC,OAAO,IAAI,CAAC,IAAI,0CAAM,MAAM,MAAM,UAAU,EAAE,EAAE,UAAU,EAAE;YAC9D;YAEA,OAAO,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC;YAEtC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE;YACxD,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,IAAI;YAExC,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IAAK;gBACtC,IAAI,QAAQ,MAAM,CAAC,EAAE;gBACrB,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;gBAChC,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YAClC;QACF;QAEA,OAAO;IACT;IAEA,kBAAkB,KAAK,EAAE;QACvB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,MACnB,IAAI,CAAC,QAAQ,GAAG,CAAA,GAAA,wCAAI,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;QAGzD,IAAI,gBAAE,YAAY,iBAAE,aAAa,eAAE,WAAW,cAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ;QAE5E,OAAO;YACL,IAAI,0CAAM,OAAO,MAAM,MAAM,IAAI,GAAG,aAAa;YACjD,IAAI,0CAAM,OAAO,MAAM,MAAM,IAAI,GAAG,cAAc,cAAc;YAChE,IAAI,0CAAM,OAAO,MAAM,GAAG,MAAM,IAAI,GAAG;YACvC,IAAI,0CAAM,OAAO,MAAM,GAAG,MAAM,IAAI,GAAG,aAAa;SACrD;IACH;IAEA,iFAAiF;IACjF,eAAe;QACb,IAAI,QAAQ,IAAI,CAAC,OAAO;QACxB,IAAI,CAAC,OACH,OAAO,EAAE;QAGX,IAAI,SAAS,EAAE;QAEf,IAAI,MAAM,gBAAgB,GAAG,GAC3B,2BAA2B;QAC3B,KAAK,IAAI,aAAa,MAAM,UAAU,CAAE;YACtC,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,OAAO,EAAE,YAAY;YAClE,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;gBACxC,IAAI,UAAU,QAAQ,CAAC,EAAE;gBACzB,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAAK;oBACvC,IAAI,QAAQ,OAAO,CAAC,EAAE;oBACtB,IAAI,IAAI,MAAM,CAAC,GAAG,UAAU,MAAM,GAAG,MAAM,CAAC,GAAG,UAAU,OAAO,GAAG,UAAU,EAAE;oBAC/E,IAAI,IAAI,MAAM,CAAC,GAAG,UAAU,MAAM,GAAG,MAAM,CAAC,GAAG,UAAU,OAAO,GAAG,UAAU,EAAE;oBAC/E,OAAO,IAAI,CAAC,IAAI,0CAAM,MAAM,OAAO,EAAE,MAAM,UAAU,EAAE,GAAG;gBAC5D;YACF;QACF;aAEA,SAAS,MAAM,MAAM,IAAI,EAAE;QAG7B,iGAAiG;QACjG,IAAI,MAAM,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;YAC5D,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAI,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAK,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAM,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI;QACrE;QAEA,IAAI,WAAW,EAAE;QACjB,IAAI,MAAM,EAAE;QACZ,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IAAK;YACtC,IAAI,QAAQ,MAAM,CAAC,EAAE;YACrB,IAAI,IAAI,CAAC;YACT,IAAI,MAAM,UAAU,EAAE;gBACpB,SAAS,IAAI,CAAC;gBACd,MAAM,EAAE;YACV;QACF;QAEA,OAAO;IACT;IAEA,cAAc;QACZ,IAAI,IAAI,CAAC,QAAQ,EACf,OAAO,IAAI,CAAC,QAAQ;QAGtB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,KAAK,CAAC,YAAY;QAElB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EACpD,2EAA2E;QAC3E,IAAI,CAAC,IAAI;QAGX,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA,0DAA0D;IAC1D,WAAW;QACT,IAAI,WAAW,IAAI,CAAC,YAAY;QAChC,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG;QAElB,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;YACxC,IAAI,UAAU,QAAQ,CAAC,EAAE;YACzB,IAAI,UAAU,OAAO,CAAC,EAAE;YACxB,IAAI,SAAS,OAAO,CAAC,QAAQ,MAAM,GAAG,EAAE;YACxC,IAAI,QAAQ;YAEZ,IAAI,QAAQ,OAAO,EAAE;gBACnB,8EAA8E;gBAC9E,IAAI,UAAU;gBACd,QAAQ;YACV,OAAO;gBACL,IAAI,OAAO,OAAO,EAChB,yFAAyF;gBACzF,UAAU;qBAEV,sEAAsE;gBACtE,UAAU,IAAI,0CAAM,OAAO,OAAO,AAAC,CAAA,QAAQ,CAAC,GAAG,OAAO,CAAC,AAAD,IAAK,GAAG,AAAC,CAAA,QAAQ,CAAC,GAAG,OAAO,CAAC,AAAD,IAAK;gBAGzF,IAAI,UAAU;YAChB;YAEA,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;YAEhC,IAAK,IAAI,IAAI,OAAO,IAAI,QAAQ,MAAM,EAAE,IAAK;gBAC3C,IAAI,KAAK,OAAO,CAAC,EAAE;gBACnB,IAAI,SAAS,MAAM,IAAI,UAAU,OAAO,CAAC,IAAI,EAAE;gBAE/C,IAAI,OAAO,OAAO,IAAI,GAAG,OAAO,EAC9B,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;qBAEjB,IAAI,OAAO,OAAO,IAAI,CAAC,GAAG,OAAO,EACtC,IAAI,UAAU;qBAET,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,GAAG,OAAO,EAAE;oBACzC,IAAI,OAAO,AAAC,CAAA,OAAO,CAAC,GAAG,GAAG,CAAC,AAAD,IAAK;oBAC/B,IAAI,OAAO,AAAC,CAAA,OAAO,CAAC,GAAG,GAAG,CAAC,AAAD,IAAK;oBAC/B,KAAK,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM;oBAChD,IAAI,UAAU;gBAEhB,OAAO,IAAI,CAAC,OAAO,OAAO,IAAI,GAAG,OAAO,EAAE;oBACxC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;oBACtD,IAAI,UAAU;gBAEhB,OACE,MAAM,IAAI,MAAM;YAEpB;YAEA,oCAAoC;YACpC,IAAI,SACF,KAAK,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;YAGlE,KAAK,SAAS;QAChB;QAEA,OAAO;IACT;;;QArUA,oBAAA,QAAO;;AAsUT;;;;;;AIlYe,MAAM,iDAAiB,CAAA,GAAA,wCAAI;IAGxC,WAAW;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EACjB,OAAO,KAAK,CAAC;QAGf,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;IAChD;IAEA,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,GAAG,MACb,OAAO;aACF,IAAI,EAAE,MAAM,GAAG,OACpB,OAAO;aAEP,OAAO;IAEX;IAEA,WAAW;QACT,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;QAC/C,IAAI,UAAE,MAAM,EAAE,GAAG;QACjB,IAAI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,MAAM;QACjC,OAAO,GAAG,GAAG,IAAI,MAAM;QAEvB,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG;QAClB,IAAI,QAAQ,EAAE;QACd,IAAI,QAAQ,EAAE;QAEd,IAAI,QAAQ;QACZ,IAAI,SAAS;QACb,IAAI,IAAI,GAAG,IAAI;QACf,IAAI;QACJ,IAAI;QACJ,IAAI,OAAO;QAEX,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QAE/B,IAAI,SAAS,IAAI,eAAe,IAAI,EAAE;QACtC,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC;QAE3B,IAAI,cAAc,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACvD,IAAI,QAAQ,YAAY,KAAK,IAAI,EAAE;QACnC,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC;QAE1B,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,kBAAkB;QACxE,IAAI,UAAU,YAAY,OAAO;QACjC,IAAI,qBAAqB,IAAI,CAAC,KAAK,CAAC,mBAAmB;QAEvD,SAAS;YACP,IAAI,SAAS,MACX,QAAQ,MAAM,KAAK,KAAK,YAAY,aAAa;QAErD;QAEA,SAAS;YACP,IAAI,MAAM,MAAM,GAAG,MAAM,GACvB;YAGF,UAAU,MAAM,MAAM,IAAI;YAC1B,OAAO,MAAM,MAAM,GAAG;QACxB;QAEA,SAAS,OAAO,CAAC,EAAE,CAAC;YAClB,IAAI,MACF,KAAK,SAAS;YAGhB,KAAK,MAAM,CAAC,GAAG;YACf,OAAO;QACT;QAEA,IAAI,QAAQ;YACV,MAAO,OAAO,GAAG,GAAG,IAAK;gBACvB,IAAI,KAAK,OAAO,SAAS;gBACzB,IAAI,KAAK,IAAI;oBACX,IAAI,OAAO,MAAM;oBACjB,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK;oBAC7B,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK;oBAC7B,IAAI;oBAEJ,OAAQ;wBACN,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;4BACH;4BACA;wBAEF,KAAK;4BACH,IAAI,MAAM,MAAM,GAAG,GACjB;4BAGF,KAAK,MAAM,KAAK;4BAChB,OAAO,GAAG;4BACV;wBAEF,KAAK;4BACH,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,KAAK,MAAM,KAAK;gCAChB,KAAK,MAAM,KAAK;gCAChB,KAAK,MAAM,CAAC,GAAG;4BACjB;4BACA;wBAEF,KAAK;wBACL,KAAK;4BACH,QAAQ,OAAO;4BACf,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,IAAI,OACF,KAAK,MAAM,KAAK;qCAEhB,KAAK,MAAM,KAAK;gCAGlB,KAAK,MAAM,CAAC,GAAG;gCACf,QAAQ,CAAC;4BACX;4BACA;wBAEF,KAAK;4BACH,MAAO,MAAM,MAAM,GAAG,EAAG;gCACvB,MAAM,IAAI,MAAM,KAAK;gCACrB,MAAM,IAAI,MAAM,KAAK;gCACrB,MAAM,MAAM,MAAM,KAAK;gCACvB,MAAM,MAAM,MAAM,KAAK;gCACvB,IAAI,MAAM,MAAM,KAAK;gCACrB,IAAI,MAAM,MAAM,KAAK;gCACrB,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;4BAC5C;4BACA;wBAEF,KAAK;4BACH,QAAQ,MAAM,GAAG,KAAK;4BACtB,OAAO,KAAK,CAAC,MAAM;4BACnB,IAAI,MAAM;gCACR,SAAS,CAAC,MAAM,GAAG;gCACnB,IAAI,IAAI,OAAO,GAAG;gCAClB,IAAI,IAAI;gCACR,OAAO,GAAG,GAAG,KAAK,MAAM;gCACxB,MAAM,KAAK,MAAM,GAAG,KAAK,MAAM;gCAC/B;gCACA,OAAO,GAAG,GAAG;gCACb,MAAM;4BACR;4BACA;wBAEF,KAAK;4BACH,IAAI,IAAI,OAAO,IAAI,GACjB;4BAEF;wBAEF,KAAK;4BACH,IAAI,IAAI,OAAO,IAAI,GACjB;4BAGF,IAAI,MAAM,MAAM,GAAG,GACjB;4BAGF,IAAI,MAAM;gCACR,KAAK,SAAS;gCACd,OAAO;4BACT;4BACA;wBAEF,KAAK;4BACH,IAAI,IAAI,OAAO,GAAG,GAChB,MAAM,IAAI,MAAM;4BAGlB,UAAU,MAAM,GAAG;4BACnB;wBAGF,KAAK;4BAAI;gCACP,IAAI,IAAI,OAAO,GAAG,GAChB,MAAM,IAAI,MAAM;gCAGlB,IAAI,CAAC,oBACH,MAAM,IAAI,MAAM;gCAGlB,IAAI,cAAc,mBAAmB,cAAc,CAAC,QAAQ;gCAC5D,IAAI,YAAY,MAAM,GAAG;gCACzB,IAAI,cAAc,YAAY,YAAY,MAAM;gCAChD,IAAI,QAAQ,MAAM,MAAM,GAAG;gCAC3B,IAAI,OAAO,QAAQ;gCAEnB,IAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAAK;oCAClC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;oCACzB,IAAK,IAAI,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IACtC,OAAO,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ;oCAGxC,KAAK,CAAC,OAAO,EAAE,GAAG;gCACpB;gCAEA,MAAO,cACL,MAAM,GAAG;gCAGX;4BACF;wBAEA,KAAK;wBACL,KAAK;4BACH;4BACA,OAAO,GAAG,IAAI,AAAC,SAAS,KAAM;4BAC9B;wBAEF,KAAK;4BACH,IAAI,MAAM,MAAM,GAAG,GACjB;4BAGF,KAAK,MAAM,KAAK;4BAChB,KAAK,MAAM,KAAK;4BAChB,OAAO,GAAG;4BACV;wBAEF,KAAK;4BACH,IAAI,MAAM,MAAM,GAAG,GACjB;4BAGF,KAAK,MAAM,KAAK;4BAChB,OAAO,GAAG;4BACV;wBAEF,KAAK;4BACH,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,MAAM,IAAI,MAAM,KAAK;gCACrB,MAAM,IAAI,MAAM,KAAK;gCACrB,MAAM,MAAM,MAAM,KAAK;gCACvB,MAAM,MAAM,MAAM,KAAK;gCACvB,IAAI,MAAM,MAAM,KAAK;gCACrB,IAAI,MAAM,MAAM,KAAK;gCACrB,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;4BAC5C;4BAEA,KAAK,MAAM,KAAK;4BAChB,KAAK,MAAM,KAAK;4BAChB,KAAK,MAAM,CAAC,GAAG;4BACf;wBAEF,KAAK;4BACH,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,KAAK,MAAM,KAAK;gCAChB,KAAK,MAAM,KAAK;gCAChB,KAAK,MAAM,CAAC,GAAG;4BACjB;4BAEA,MAAM,IAAI,MAAM,KAAK;4BACrB,MAAM,IAAI,MAAM,KAAK;4BACrB,MAAM,MAAM,MAAM,KAAK;4BACvB,MAAM,MAAM,MAAM,KAAK;4BACvB,IAAI,MAAM,MAAM,KAAK;4BACrB,IAAI,MAAM,MAAM,KAAK;4BACrB,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;4BAC1C;wBAEF,KAAK;4BACH,IAAI,MAAM,MAAM,GAAG,GACjB,KAAK,MAAM,KAAK;4BAGlB,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,MAAM;gCACN,MAAM,IAAI,MAAM,KAAK;gCACrB,MAAM,MAAM,MAAM,KAAK;gCACvB,MAAM,MAAM,MAAM,KAAK;gCACvB,IAAI;gCACJ,IAAI,MAAM,MAAM,KAAK;gCACrB,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;4BAC5C;4BACA;wBAEF,KAAK;4BACH,IAAI,MAAM,MAAM,GAAG,GACjB,KAAK,MAAM,KAAK;4BAGlB,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,MAAM,IAAI,MAAM,KAAK;gCACrB,MAAM;gCACN,MAAM,MAAM,MAAM,KAAK;gCACvB,MAAM,MAAM,MAAM,KAAK;gCACvB,IAAI,MAAM,MAAM,KAAK;gCACrB,IAAI;gCACJ,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;4BAC5C;4BACA;wBAEF,KAAK;4BACH,MAAM,IAAI,CAAC,OAAO,WAAW;4BAC7B;wBAEF,KAAK;4BACH,QAAQ,MAAM,GAAG,KAAK;4BACtB,OAAO,MAAM,CAAC,MAAM;4BACpB,IAAI,MAAM;gCACR,UAAU,CAAC,MAAM,GAAG;gCACpB,IAAI,IAAI,OAAO,GAAG;gCAClB,IAAI,IAAI;gCACR,OAAO,GAAG,GAAG,KAAK,MAAM;gCACxB,MAAM,KAAK,MAAM,GAAG,KAAK,MAAM;gCAC/B;gCACA,OAAO,GAAG,GAAG;gCACb,MAAM;4BACR;4BACA;wBAEF,KAAK;wBACL,KAAK;4BACH,QAAQ,OAAO;4BACf,MAAO,MAAM,MAAM,IAAI,EAAG;gCACxB,IAAI,OAAO;oCACT,MAAM,IAAI,MAAM,KAAK;oCACrB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,IAAI,MAAM,MAAM,KAAK;oCACrB,IAAI,MAAO,CAAA,MAAM,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK,CAAA;gCAClD,OAAO;oCACL,MAAM;oCACN,MAAM,IAAI,MAAM,KAAK;oCACrB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,IAAI,MAAM,MAAM,KAAK;oCACrB,IAAI,MAAO,CAAA,MAAM,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK,CAAA;gCAClD;gCAEA,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;gCAC1C,QAAQ,CAAC;4BACX;4BACA;wBAEF,KAAK;4BACH,KAAK,OAAO,SAAS;4BACrB,OAAQ;gCACN,KAAK;oCACH,IAAI,IAAI,MAAM,GAAG;oCACjB,IAAI,IAAI,MAAM,GAAG;oCACjB,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI;oCACxB;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI;oCACxB;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,IAAI,IAAI;oCACnB;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;oCACpB;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,IAAI;oCACf;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,IAAI;oCACf;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,IAAI;oCACf;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,CAAC;oCACZ;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI;oCACzB;gCAEF,KAAK;oCACH,MAAM,GAAG;oCACT;gCAEF,KAAK;oCACH,IAAI,MAAM,MAAM,GAAG;oCACnB,IAAI,MAAM,MAAM,GAAG;oCACnB,KAAK,CAAC,IAAI,GAAG;oCACb;gCAEF,KAAK;oCACH,MAAM,MAAM,GAAG;oCACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;oCACzB;gCAEF,KAAK;oCACH,IAAI,KAAK,MAAM,GAAG;oCAClB,IAAI,KAAK,MAAM,GAAG;oCAClB,IAAI,KAAK,MAAM,GAAG;oCAClB,IAAI,KAAK,MAAM,GAAG;oCAClB,MAAM,IAAI,CAAC,MAAM,KAAK,KAAK;oCAC3B;gCAEF,KAAK;oCACH,MAAM,IAAI,CAAC,KAAK,MAAM;oCACtB;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,IAAI;oCACf;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC;oCACrB;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,GAAG;oCACd;gCAEF,KAAK;oCACH,IAAI,MAAM,GAAG;oCACb,IAAI,MAAM,GAAG;oCACb,MAAM,IAAI,CAAC,GAAG;oCACd;gCAEF,KAAK;oCACH,MAAM,MAAM,GAAG;oCACf,IAAI,MAAM,GACR,MAAM;yCACD,IAAI,MAAM,MAAM,MAAM,GAAG,GAC9B,MAAM,MAAM,MAAM,GAAG;oCAGvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI;oCACrB;gCAEF,KAAK;oCACH,IAAI,IAAI,MAAM,GAAG;oCACjB,IAAI,IAAI,MAAM,GAAG;oCAEjB,IAAI,KAAK,GACP,MAAO,IAAI,EAAG;wCACZ,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;wCACpB,IAAK,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAC1B,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE;wCAGzB,KAAK,CAAC,EAAE,GAAG;wCACX;oCACF;yCAEA,MAAO,IAAI,EAAG;wCACZ,IAAI,IAAI,KAAK,CAAC,EAAE;wCAChB,IAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IACtB,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;wCAGzB,KAAK,CAAC,IAAI,EAAE,GAAG;wCACf;oCACF;oCAEF;gCAEF,KAAK;oCACH,MAAM,IAAI,MAAM,KAAK;oCACrB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,IAAI;oCACJ,IAAI;oCAEJ,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK;oCAC5C,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK;oCAC5C;gCAEF,KAAK;oCACH,MAAM,EAAE;oCAER,IAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAK;wCAC3B,KAAK,MAAM,KAAK;wCAChB,KAAK,MAAM,KAAK;wCAChB,IAAI,IAAI,CAAC,GAAG;oCACd;oCAEA,KAAK,aAAa,IAAI,IAAI,KAAK,CAAC,GAAG;oCACnC,KAAK,aAAa,IAAI,IAAI,KAAK,CAAC;oCAChC,MAAM,KAAK,IAAI,KAAK;oCACpB;gCAEF,KAAK;oCACH,MAAM,IAAI,MAAM,KAAK;oCACrB,MAAM,IAAI,MAAM,KAAK;oCACrB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM,MAAM,MAAM,KAAK;oCACvB,MAAM;oCACN,IAAI;oCACJ,IAAI;oCAEJ,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK;oCAC5C,KAAK,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK;oCAC5C;gCAEF,KAAK;oCACH,IAAI,SAAS;oCACb,IAAI,SAAS;oCAEb,MAAM,EAAE;oCACR,IAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAK;wCAC3B,KAAK,MAAM,KAAK;wCAChB,KAAK,MAAM,KAAK;wCAChB,IAAI,IAAI,CAAC,GAAG;oCACd;oCAEA,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,KAAK,GAAG,CAAC,IAAI,SAAS;wCAC/C,KAAK,MAAM,KAAK;wCAChB,IAAI;oCACN,OAAO;wCACL,IAAI;wCACJ,KAAK,MAAM,KAAK;oCAClB;oCAEA,IAAI,IAAI,CAAC,GAAG;oCACZ,KAAK,aAAa,IAAI,IAAI,KAAK,CAAC,GAAG;oCACnC,KAAK,aAAa,IAAI,IAAI,KAAK,CAAC;oCAChC;gCAEF;oCACE,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC;4BAC1C;4BACA;wBAEF;4BACE,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;oBACvC;gBAEF,OAAO,IAAI,KAAK,KACd,MAAM,IAAI,CAAC,KAAK;qBACX,IAAI,KAAK,KAAK;oBACnB,IAAI,KAAK,OAAO,SAAS;oBACzB,MAAM,IAAI,CAAC,AAAC,CAAA,KAAK,GAAE,IAAK,MAAM,KAAK;gBACrC,OAAO,IAAI,KAAK,KAAK;oBACnB,IAAI,KAAK,OAAO,SAAS;oBACzB,MAAM,IAAI,CAAC,CAAE,CAAA,KAAK,GAAE,IAAK,MAAM,KAAK;gBACtC,OACE,MAAM,IAAI,CAAC,OAAO,WAAW,KAAK;YAEtC;QACF;QAEA;QAEA,IAAI,MACF,KAAK,SAAS;QAGhB,OAAO;IACT;;;QAnlBA,oBAAA,QAAO;;AAolBT;;;;;;ACxlBA,IAAI,kCAAY,IAAI,cAAS;IAC3B,SAAS;IACT,SAAS;IACT,MAAM,IAAI,cAAS;IACnB,MAAM,IAAI,cAAS,CAAA,IAAK,EAAE,MAAM,CAAC,MAAM,GAAG,EAAE,cAAc;AAC5D;AAKe,MAAM,iDAAkB,CAAA,GAAA,wCAAO;IAG5C;;;;;;;GAOC,GACD,gBAAgB,IAAI,EAAE;QACpB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAK;YAC3D,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC1C,IAAI,MAAM,IAAI,IAAI,MAAQ;QAC5B;QAEA,IAAI,UAAU,MAAM,YAAY;QAChC,IAAI,QAAQ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;QAE9B,IAAI,UAAU,KACZ,OAAO;QAGT,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG;QACxB,OAAO,gCAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAC,QAAQ,MAAM;QAAK;IACjE;IAEA,OAAO,GAAG,EAAE,IAAI,EAAE;QAChB,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC;QAC/B,IAAI,OAAO,MAAM;YACf,IAAI,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU;YACxC,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE;gBAAC,QAAQ;gBAAM,GAAG,IAAI,OAAO;gBAAE,GAAG,AAAC,CAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,AAAD,IAAK;YAAK;QAC9F;QAEA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EACtC,KAAK,CAAC,OAAO,KAAK;IAEtB;;;QAtCA,oBAAA,QAAO;;AAuCT;;;;;;AClDA,MAAM;IACJ,YAAY,KAAK,EAAE,KAAK,CAAE;QACxB,IAAI,CAAC,KAAK,GAAG;QACb,IAAI,CAAC,KAAK,GAAG;IACf;AACF;AAOe,MAAM,iDAAkB,CAAA,GAAA,wCAAI;IAGzC,WAAW;QACT,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAG;QAClB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAK;YAC3C,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,IAAI,MAAM,KAAK,CAAC,IAAI;YACxB,KAAK,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI;YAC5B,KAAK,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI;QAC9B;QAEA,OAAO;IACT;IAEA;;;;GAIC,GACD,IAAI,SAAS;QACX,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;QAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;QAC1B,IAAI,MAAM;QACV,IAAI,OAAO,KAAK,eAAe,CAAC,MAAM,GAAG;QAEzC,MAAO,OAAO,KAAM;YAClB,IAAI,MAAM,AAAC,MAAM,QAAS;YAC1B,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI;YAEnC,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,EACnB,OAAO,MAAM;iBACR,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,EAC1B,MAAM,MAAM;iBACP;gBACL,IAAI,YAAY;gBAChB;YACF;QACF;QAEA,yCAAyC;QACzC,2CAA2C;QAC3C,IAAI,aAAa,MAAM;YACrB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,QAAQ;gBACV,KAAK;gBACL,OAAO;gBACP,MAAM;gBACN,OAAO;YACT;YAEA,OAAO;gBAAC,IAAI,gCAAU,GAAG;aAAO;QAClC;QAEA,+CAA+C;QAC/C,IAAI,SAAS,EAAE;QACf,IAAK,IAAI,IAAI,UAAU,eAAe,EAAE,IAAI,UAAU,eAAe,GAAG,UAAU,SAAS,EAAE,IAAK;YAChG,IAAI,MAAM,KAAK,YAAY,CAAC,EAAE;YAC9B,IAAI,QAAQ,KAAK,YAAY,CAAC,IAAI,YAAY,CAAC;YAC/C,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG;YACxC,OAAO,IAAI,CAAC,IAAI,gCAAU,GAAG;QAC/B;QAEA,OAAO;IACT;IAEA,OAAO,GAAG,EAAE,IAAI,EAAE;QAChB,KAAK,IAAI,SAAC,KAAK,SAAE,KAAK,EAAC,IAAI,IAAI,CAAC,MAAM,CAAE;YACtC,IAAI,SAAS,CAAC;gBAAC,MAAM,GAAG;gBAAE,MAAM,KAAK;gBAAE,MAAM,IAAI;aAAC,EAAE,MAAM,KAAK,GAAG,MAAM;YACxE,MAAM,MAAM,CAAC,KAAK;QACpB;QAEA;IACF;;;QAxEA,oBAAA,QAAO;;AAyET;;;ACzFA,MAAM,mDAA6B;AACnC,MAAM,yCAA6B;AACnC,MAAM,6CAA6B;AACnC,MAAM,2CAA6B;AACnC,MAAM,8CAA6B;AACnC,MAAM,yCAA6B;AACnC,MAAM,yCAA6B;AACnC,MAAM,6CAA6B;AACnC,MAAM,wCAA6B;AACnC,MAAM,yCAA6B;AACnC,MAAM,6CAA6B;AAapB,MAAM;IAOnB,gBAAgB,MAAM,EAAE;QACtB,kEAAkE;QAClE,wEAAwE;QACxE,IAAI,aAAa,EAAE;QACnB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAK;YACnD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjC,IAAI,MAAM,CAAC,EAAE,GAAG,KAAK,YAAY,EAC/B,WAAW,IAAI,CAAC,AAAC,CAAA,MAAM,CAAC,EAAE,GAAG,KAAK,YAAY,GAAG,OAAO,OAAO,AAAD,IAAM,CAAA,KAAK,YAAY,GAAG,KAAK,QAAQ,GAAG,OAAO,OAAO,AAAD;iBAErH,WAAW,IAAI,CAAC,AAAC,CAAA,MAAM,CAAC,EAAE,GAAG,KAAK,YAAY,GAAG,OAAO,OAAO,AAAD,IAAM,CAAA,KAAK,QAAQ,GAAG,KAAK,YAAY,GAAG,OAAO,OAAO,AAAD;QAEzH;QAEA,gEAAgE;QAChE,0DAA0D;QAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAChB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAK;YACtD,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACvC,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,cAAc,CAAC,MAAM,EAAE,IAAK;gBACtD,IAAI,OAAO,QAAQ,cAAc,CAAC,EAAE;gBACpC,IAAI,KAAK,KAAK,UAAU,CAAC,EAAE,GAAG,KAAK,SAAS,EAAE;oBAC5C,IAAI,OAAO,QAAQ,cAAc,CAAC,IAAI,EAAE;oBACxC,UAAU,CAAC,EAAE,GAAG,AAAC,CAAA,AAAC,CAAA,UAAU,CAAC,EAAE,GAAG,KAAK,SAAS,AAAD,IAAM,CAAA,KAAK,OAAO,GAAG,KAAK,OAAO,AAAD,IAAK,OAAO,OAAO,AAAD,IAC9F,CAAA,KAAK,SAAS,GAAG,KAAK,SAAS,GAAG,OAAO,OAAO,AAAD,IAChD,KAAK,OAAO;oBAEd;gBACF;YACF;QACF;QAGF,OAAO;IACT;IAEA,gBAAgB,GAAG,EAAE,WAAW,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAI;QAE1C,IAAI,QAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;QACxB,IAAI,OAAO,KAAK,UAAU,EAAI;QAE9B,IAAI,SAAS,KAAK,OAAO,CAAC,IAAI;QAC9B,IAAI,WAAW,KAAK,OAAO,CAAC,MAAM,EAAE,EAAI;QAExC,oCAAoC;QACpC,IAAI,UAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI;QAC1B,OAAO,GAAG,GAAG;QACb,IAAI,OAAO,GAAG,IAAI,OAAO,MAAM,EAC7B;QAGF,IAAI,aAAa,OAAO,YAAY;QACpC,IAAI,eAAe,SAAS,OAAO,YAAY;QAE/C,IAAI,aAAa,kDAA4B;YAC3C,IAAI,OAAO,OAAO,GAAG;YACrB,OAAO,GAAG,GAAG;YACb,IAAI,eAAe,IAAI,CAAC,YAAY;YACpC,eAAe,OAAO,GAAG;YACzB,OAAO,GAAG,GAAG;QACf;QAEA,IAAI,aAAa,YAAY,GAAG,CAAC,CAAA,KAAM,GAAG,IAAI;QAE9C,cAAc;QACd,IAAK,IAAI,IAAI,GAAG,IAAI,YAAY,IAAK;YACnC,IAAI,gBAAgB,OAAO,YAAY;YACvC,IAAI,aAAa,OAAO,YAAY;YAEpC,IAAI,aAAa,4CAAsB;gBACrC,IAAI,cAAc,EAAE;gBACpB,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,EAAE,IAClC,YAAY,IAAI,CAAC,OAAO,WAAW,KAAK;YAG5C,OAAO;gBACL,IAAI,AAAC,CAAA,aAAa,sCAAe,KAAM,KAAK,gBAAgB,EAC1D,MAAM,IAAI,MAAM;gBAGlB,IAAI,cAAc,KAAK,YAAY,CAAC,aAAa,uCAAiB;YACpE;YAEA,IAAI,aAAa,0CAAoB;gBACnC,IAAI,cAAc,EAAE;gBACpB,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,EAAE,IAClC,YAAY,IAAI,CAAC,OAAO,WAAW,KAAK;gBAG1C,IAAI,YAAY,EAAE;gBAClB,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,EAAE,IAClC,UAAU,IAAI,CAAC,OAAO,WAAW,KAAK;YAE1C;YAEA,8CAA8C;YAC9C,IAAI,SAAS,IAAI,CAAC,WAAW,CAAC,YAAY,aAAa,aAAa;YACpE,IAAI,WAAW,GAAG;gBAChB,gBAAgB;gBAChB;YACF;YAEA,IAAI,OAAO,OAAO,GAAG;YACrB,OAAO,GAAG,GAAG;YAEb,IAAI,aAAa,6CACf,IAAI,SAAS,IAAI,CAAC,YAAY;iBAE9B,IAAI,SAAS;YAGf,0DAA0D;YAC1D,IAAI,UAAU,OAAO,MAAM,KAAK,IAAI,YAAY,MAAM,GAAG,OAAO,MAAM;YACtE,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC;YAChC,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC;YAEhC,IAAI,OAAO,MAAM,KAAK,GACpB,IAAK,IAAI,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IAAK;gBAC3C,IAAI,QAAQ,WAAW,CAAC,EAAE;gBAC1B,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;gBACnC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;YACrC;iBACK;gBACL,IAAI,YAAY,WAAW,GAAG,CAAC,CAAA,KAAM,GAAG,IAAI;gBAC5C,IAAI,WAAW,YAAY,GAAG,CAAC,IAAM;gBAErC,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IAAK;oBACtC,IAAI,MAAM,MAAM,CAAC,EAAE;oBACnB,IAAI,MAAM,YAAY,MAAM,EAAE;wBAC5B,IAAI,QAAQ,SAAS,CAAC,IAAI;wBAC1B,QAAQ,CAAC,IAAI,GAAG;wBAEhB,MAAM,CAAC,IAAI,OAAO,CAAC,EAAE,GAAG;wBACxB,MAAM,CAAC,IAAI,OAAO,CAAC,EAAE,GAAG;oBAC1B;gBACF;gBAEA,IAAI,CAAC,wBAAwB,CAAC,WAAW,YAAY;gBAErD,IAAK,IAAI,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IAAK;oBAC3C,IAAI,SAAS,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC7C,IAAI,SAAS,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;oBAE7C,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG;oBACjD,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG;gBACnD;YACF;YAEA,gBAAgB;YAChB,OAAO,GAAG,GAAG;QACf;IACF;IAEA,eAAe;QACb,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM;QAC7B,IAAI,QAAQ,OAAO,SAAS;QAE5B,IAAI,QAAQ,wCACV,QAAQ,AAAC,CAAA,QAAQ,0CAAmB,KAAM,IAAI,OAAO,SAAS;QAGhE,IAAI,SAAS,IAAI,YAAY;QAC7B,IAAI,IAAI;QACR,IAAI,QAAQ;QACZ,MAAO,IAAI,MAAO;YAChB,IAAI,MAAM,OAAO,SAAS;YAC1B,IAAI,WAAW,AAAC,CAAA,MAAM,0CAAmB,IAAK;YAC9C,IAAI,KAAK,MAAM,yCAAmB,OAAO,UAAU,GAAG,OAAO,SAAS;YAEtE,IAAK,IAAI,IAAI,GAAG,IAAI,YAAY,IAAI,OAAO,IAAK;gBAC9C,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM,CAAC,IAAI,GAAG;YAChB;QACF;QAEA,OAAO;IACT;IAEA,aAAa,KAAK,EAAE;QAClB,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM;QAC7B,IAAI,IAAI;QACR,IAAI,SAAS,IAAI,WAAW;QAE5B,MAAO,IAAI,MAAO;YAChB,IAAI,MAAM,OAAO,SAAS;YAC1B,IAAI,WAAW,AAAC,CAAA,MAAM,0CAAmB,IAAK;YAE9C,IAAI,MAAM,uCACR,KAAK;iBAEA;gBACL,IAAI,KAAK,MAAM,yCAAmB,OAAO,WAAW,GAAG,OAAO,QAAQ;gBACtE,IAAK,IAAI,IAAI,GAAG,IAAI,YAAY,IAAI,OAAO,IACzC,MAAM,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;YAE1B;QACF;QAEA,OAAO;IACT;IAEA,YAAY,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE;QAC3D,IAAI,aAAa,IAAI,CAAC,gBAAgB;QACtC,IAAI,QAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;QACxB,IAAI,SAAS;QAEb,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,EAAE,IAAK;YACvC,IAAI,WAAW,CAAC,EAAE,KAAK,GACrB;YAGF,IAAI,UAAU,CAAC,EAAE,KAAK,GACpB,OAAO;YAGT,IAAI,AAAC,CAAA,aAAa,wCAAiB,MAAO,GAAG;gBAC3C,IAAI,AAAC,UAAU,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,EAAE,KAC1C,UAAU,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,EAAE,GAC7C,OAAO;gBAGT,SAAS,AAAC,CAAA,SAAS,UAAU,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD,IAAM,CAAA,WAAW,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD;YACtF,OAAO;gBACL,IAAI,AAAC,UAAU,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,IAC9B,UAAU,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EAC/B,OAAO;qBAEF,IAAI,UAAU,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,EACvC,SAAS,SAAU,CAAA,UAAU,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD,IAAM,CAAA,WAAW,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD;qBAGtH,SAAS,SAAU,CAAA,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD,IAAM,CAAA,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD;YAEtH;QACF;QAEA,OAAO;IACT;IAEA,4CAA4C;IAC5C,yCAAyC;IACzC,2BAA2B;IAC3B,yBAAyB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACnD,IAAI,OAAO,MAAM,KAAK,GACpB;QAGF,IAAI,QAAQ;QACZ,MAAO,QAAQ,OAAO,MAAM,CAAE;YAC5B,IAAI,aAAa;YAEjB,oCAAoC;YACpC,IAAI,WAAW;YACf,IAAI,KAAK,MAAM,CAAC,SAAS;YACzB,MAAO,CAAC,GAAG,UAAU,CACnB,KAAK,MAAM,CAAC,EAAE,SAAS;YAGzB,wCAAwC;YACxC,MAAO,SAAS,YAAY,CAAC,QAAQ,CAAC,MAAM,CAC1C;YAGF,IAAI,QAAQ,UACV;YAGF,IAAI,aAAa;YACjB,IAAI,WAAW;YACf;YAEA,MAAO,SAAS,SAAU;gBACxB,wEAAwE;gBACxE,IAAI,QAAQ,CAAC,MAAM,EAAE;oBACnB,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,QAAQ,GAAG,UAAU,OAAO,UAAU;oBAC1E,WAAW;gBACb;gBAEA;YACF;YAEA,+CAA+C;YAC/C,IAAI,aAAa,YACf,IAAI,CAAC,UAAU,CAAC,YAAY,UAAU,UAAU,UAAU;iBACrD;gBACL,iFAAiF;gBACjF,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,UAAU,UAAU,YAAY,UAAU;gBAE9E,IAAI,aAAa,GACf,IAAI,CAAC,gBAAgB,CAAC,YAAY,aAAa,GAAG,UAAU,YAAY,UAAU;YAEtF;YAEA,QAAQ,WAAW;QACrB;IACF;IAEA,iBAAiB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE;QACxD,IAAI,KAAK,IACP;QAGF,IAAI,WAAW;YAAC;YAAK;SAAI;QACzB,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;YACxC,IAAI,IAAI,QAAQ,CAAC,EAAE;YACnB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzC,IAAI,IAAI;gBACR,OAAO;gBACP,OAAO;YACT;YAEA,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,EAAE;YAE7B,iEAAiE;YACjE,yDAAyD;YACzD,IAAI,QAAQ,OAAO,SAAS,MAAM;gBAChC,IAAI,QAAQ,QAAQ,MAAM,IAAI,AAAC,CAAA,OAAO,IAAG,IAAM,CAAA,MAAM,GAAE;gBAEvD,IAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAK;oBAC7B,IAAI,MAAM,QAAQ,CAAC,EAAE,CAAC,EAAE;oBAExB,IAAI,OAAO,KACT,OAAO,OAAO;yBACT,IAAI,OAAO,KAChB,OAAO,OAAO;yBAEd,MAAM,OAAO,AAAC,CAAA,MAAM,GAAE,IAAK;oBAG7B,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG;gBACpB;YACF;QACF;IACF;IAEA,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC3C,IAAI,SAAS,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,SAAS,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,WAAW,KAAK,WAAW,GAC7B;QAGF,IAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IACxB,IAAI,MAAM,KAAK;YACb,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI;YAClB,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI;QACpB;IAEJ;IAEA,qBAAqB,GAAG,EAAE,KAAK,EAAE;QAC/B,IAAI,YAAY;QAEhB,IAAI,MAAM,mBAAmB,EAAE;YAC7B,IAAI,MAAM;YACV,IAAI,OAAO,MAAM,mBAAmB,CAAC,QAAQ,EAC3C,MAAM,MAAM,mBAAmB,CAAC,QAAQ,GAAG;YAG7C,IAAI,cAAc,MAAM,mBAAmB,CAAC,WAAW;YACtD,CAAA,cAAC,UAAU,cAAE,UAAU,EAAC,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,AAAD;QACnE,OAAO;YACL,aAAa;YACb,aAAa;QACf;QAEA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,kBAAkB,EAAE,YAAY;IAC7D;IAEA,kDAAkD;IAClD,iCAAiC;IACjC,SAAS,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE;QAC1C,IAAI,cAAc,UAAU,iBAAiB,CAAC,MAAM,EAClD,OAAO;QAGT,IAAI,UAAU,UAAU,iBAAiB,CAAC,WAAW;QACrD,IAAI,cAAc,QAAQ,SAAS,CAAC,MAAM,EACxC,OAAO;QAGT,IAAI,WAAW,QAAQ,SAAS,CAAC,WAAW;QAC5C,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,WAAW;QACjD,IAAI,gBAAgB;QAEpB,IAAK,IAAI,SAAS,GAAG,SAAS,QAAQ,gBAAgB,EAAE,SACtD,iBAAiB,SAAS,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO;QAGhE,OAAO;IACT;IAEA,eAAe,SAAS,EAAE,UAAU,EAAE;QACpC,IAAI,UAAU,UAAU,iBAAiB,CAAC,WAAW;QACrD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QAG/B,IAAI,mBAAmB,IAAI,CAAC,gBAAgB;QAC5C,IAAI,cAAc,EAAE;QAEpB,wDAAwD;QACxD,IAAK,IAAI,SAAS,GAAG,SAAS,QAAQ,gBAAgB,EAAE,SAAU;YAChE,IAAI,SAAS;YACb,IAAI,cAAc,QAAQ,aAAa,CAAC,OAAO;YAC/C,IAAI,OAAO,UAAU,mBAAmB,CAAC,gBAAgB,CAAC,YAAY;YAEtE,+CAA+C;YAC/C,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,EAAE,IAAK;gBACpC,IAAI,OAAO,IAAI,CAAC,EAAE;gBAClB,IAAI;gBAEJ,+CAA+C;gBAC/C,wBAAwB;gBACxB,IAAI,KAAK,UAAU,GAAG,KAAK,SAAS,IAAI,KAAK,SAAS,GAAG,KAAK,QAAQ,EACpE,aAAa;qBAER,IAAI,KAAK,UAAU,GAAG,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK,SAAS,KAAK,GACxE,aAAa;qBAGR,IAAI,KAAK,SAAS,KAAK,GAC5B,aAAa;qBAGR,IAAI,gBAAgB,CAAC,EAAE,GAAG,KAAK,UAAU,IAAI,gBAAgB,CAAC,EAAE,GAAG,KAAK,QAAQ,EACrF,aAAa;qBAGR;oBACL,IAAI,gBAAgB,CAAC,EAAE,KAAK,KAAK,SAAS,EACxC,aAAa;yBACR,IAAI,gBAAgB,CAAC,EAAE,GAAG,KAAK,SAAS,EAC7C,aAAa,AAAC,CAAA,gBAAgB,CAAC,EAAE,GAAG,KAAK,UAAU,GAAG,OAAO,OAAO,AAAD,IAChE,CAAA,KAAK,SAAS,GAAG,KAAK,UAAU,GAAG,OAAO,OAAO,AAAD;yBAEnD,aAAa,AAAC,CAAA,KAAK,QAAQ,GAAG,gBAAgB,CAAC,EAAE,GAAG,OAAO,OAAO,AAAD,IAC9D,CAAA,KAAK,QAAQ,GAAG,KAAK,SAAS,GAAG,OAAO,OAAO,AAAD;gBAErD;gBAEA,uCAAuC;gBACvC,UAAU;YACZ;YAEA,WAAW,CAAC,OAAO,GAAG;QACxB;QAEA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS;QAC/B,OAAO;IACT;IA5cA,YAAY,IAAI,EAAE,MAAM,CAAE;QACxB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAycF;;;;;AEneA,MAAM,iCAAW,QAAQ,OAAO;AAEjB,MAAM;IAUnB,aAAa,KAAK,EAAE;QAClB,IAAI,OAAO,UAAU,UACnB,QAAQ,MAAM,EAAE;QAGlB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;QAC7C;QAEA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;IAC5B;IApBA,YAAY,IAAI,CAAE;QAChB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,MAAM,GAAG,EAAE;QAChB,IAAI,CAAC,OAAO,GAAG,CAAC;QAEhB,mCAAmC;QACnC,IAAI,CAAC,YAAY,CAAC;IACpB;AAcF;;;;;;ACxBA,0BAA0B;AAC1B,MAAM,iCAAkB;AACxB,MAAM,uCAAkB;AACxB,MAAM,uCAAkB;AACxB,MAAM,+BAAkB;AACxB,MAAM,+BAAkB;AACxB,MAAM,+BAAkB;AAExB,MAAM;IACJ,OAAO,KAAK,GAAG,EAAE;QACf,OAAO,OAAO,KAAK,OAAO,MAAM,IAAI;IACtC;IAEA,OAAO,OAAO,MAAM,EAAE,KAAK,EAAE;QAC3B,IAAI,SAAS,KAAK,SAAS,KACzB,OAAO,UAAU,CAAC;aAElB,OAAO,YAAY,CAAC;IAExB;AACF;AAEA,IAAI,6BAAO,IAAI,cAAS;IACtB,kBAAkB;IAClB,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,kBAAkB,IAAI,aAAQ,eAAU;IACxC,cAAc,IAAI,aAAQ,cAAS;IACnC,OAAO,IAAI,aAAQ,cAAS;IAC5B,SAAS,IAAI,aAAQ,6BAAO;IAC5B,SAAS,IAAI,aAAQ,6BAAO;AAC9B;AAKe,MAAM;IACnB,aAAa,IAAI,EAAE,eAAe,EAAE,EAAE;QACpC,IAAI,mBAAmB,EAAE;QACzB,IAAI,UAAU,EAAE;QAChB,IAAI,UAAU,EAAE;QAChB,IAAI,QAAQ,EAAE;QACd,IAAI,OAAO;QACX,IAAI,QAAQ,GAAG,QAAQ,GAAG,WAAW;QACrC,IAAI,aAAa;QAEjB,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,IAAK;YAC7C,IAAI,IAAI,KAAK,QAAQ,CAAC,EAAE;YAExB,IAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAG;gBACzC,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE;gBACjB,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACrB,IAAI,OAAO;gBAEX,2DAA2D;gBAC3D,8DAA8D;gBAC9D,iDAAiD;gBACjD,IAAI,EAAE,OAAO,KAAK,sBAAsB,MAAM,GAAG;oBAC/C,IAAI,OAAO,KAAK,QAAQ,CAAC,IAAI,EAAE;oBAC/B,IAAI,QAAQ,KAAK,OAAO,KAAK,oBAAoB;wBAC/C,IAAI,OAAO,AAAC,CAAA,QAAQ,KAAK,IAAI,CAAC,EAAE,AAAD,IAAK;wBACpC,IAAI,OAAO,AAAC,CAAA,QAAQ,KAAK,IAAI,CAAC,EAAE,AAAD,IAAK;wBAEpC,IAAI,MAAM,QAAQ,MAAM,MACtB;oBAEJ;gBACF;gBAEA,iDAAiD;gBACjD,IAAI,CAAE,CAAA,EAAE,OAAO,KAAK,sBAAsB,MAAM,CAAA,GAC9C,QAAQ;gBAGV,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,SAAS,MAAM,sCAAgB;gBAClE,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,SAAS,MAAM,sCAAgB;gBAElE,IAAI,SAAS,YAAY,OAAO,KAAK;oBACnC,KAAK,CAAC,MAAM,MAAM,GAAG,EAAE,IAAI;oBAC3B;gBACF,OAAO;oBACL,IAAI,OAAO,GAAG;wBACZ,MAAM,IAAI,CAAC;wBACX,OAAO;oBACT;oBAEA,MAAM,IAAI,CAAC;oBACX,WAAW;gBACb;gBAEA,QAAQ;gBACR,QAAQ;gBACR;YACF;YAEA,IAAI,EAAE,OAAO,KAAK,aAChB,iBAAiB,IAAI,CAAC,aAAa;QAEvC;QAEA,oDAAoD;QACpD,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,OAAO,KAAK,aAClF,iBAAiB,IAAI,CAAC,aAAa;QAGrC,IAAI,OAAO,KAAK,IAAI;QACpB,IAAI,OAAO;YACT,kBAAkB,iBAAiB,MAAM;YACzC,MAAM,KAAK,IAAI;YACf,MAAM,KAAK,IAAI;YACf,MAAM,KAAK,IAAI;YACf,MAAM,KAAK,IAAI;YACf,kBAAkB;YAClB,cAAc;YACd,OAAO;YACP,SAAS;YACT,SAAS;QACX;QAEA,IAAI,OAAO,2BAAK,IAAI,CAAC;QACrB,IAAI,OAAO,IAAK,OAAO;QAEvB,IAAI,SAAS,IAAI,oBAAe,OAAO;QACvC,2BAAK,MAAM,CAAC,QAAQ;QAEpB,yBAAyB;QACzB,IAAI,SAAS,GACX,OAAO,IAAI,CAAC,GAAG;QAGjB,OAAO,OAAO,MAAM;IACtB;IAEA,aAAa,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;QAC3D,IAAI,OAAO,QAAQ;QAEnB,IAAI,UAAU,MACZ,QAAQ;aACH;YACL,IAAI,QAAQ,QAAQ,QAAQ,KAAK;gBAC/B,QAAQ;gBACR,IAAI,OAAO,GACT,OAAO,CAAC;qBAER,QAAQ;YAEZ;YAEA,OAAO,IAAI,CAAC;QACd;QAEA,OAAO;IACT;AACF;;;AFvJe,MAAM,iDAAkB,CAAA,GAAA,wCAAK;IAM1C,UAAU,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,OAAO,MAAM,OAAO;QAExB,kDAAkD;QAClD,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;QAC3C,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAEhD,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACvC,OAAO,GAAG,IAAI;QAEd,IAAI,SAAS,OAAO,UAAU,CAAC,aAAa;QAE5C,oDAAoD;QACpD,IAAI,QAAQ,KAAK,gBAAgB,GAAG,GAAG;YACrC,SAAS,IAAI,WAAW;YACxB,IAAI,OAAO,IAAI,SAAS,OAAO,MAAM;YACrC,KAAK,IAAI,aAAa,KAAK,UAAU,CAAE;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,OAAO;gBACzC,KAAK,SAAS,CAAC,UAAU,GAAG,EAAE;YAChC;QACF,OAAO,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAC9C,4DAA4D;QAC5D,SAAS,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,KAAK,YAAY;QAGvE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,SAAS,MAAM,YAAY;YAC3B,SAAS,MAAM,WAAW,GAAG,WAAW;QAC1C;QAEA,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG;IAC5B;IAEA,SAAS;QACP,+BAA+B;QAC/B,yDAAyD;QACzD,EAAE;QACF,mDAAmD;QACnD,2BAA2B;QAE3B,IAAI,CAAC,IAAI,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,IAAI,GAAG;YACV,SAAS,EAAE;YACX,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;QACjC;QAEA,IAAI,CAAC,IAAI,GAAG;YACV,SAAS,EAAE;YACX,UAAU,EAAE;QACd;QAEA,yBAAyB;QACzB,8DAA8D;QAC9D,oEAAoE;QACpE,IAAI,IAAI;QACR,MAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;QAGjC,IAAI,OAAO,CAAA,GAAA,YAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACnC,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;QAEjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QAElC,IAAI,OAAO,CAAA,GAAA,YAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACnC,KAAK,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QAEzC,IAAI,OAAO,CAAA,GAAA,YAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACnC,KAAK,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;QAE/C,WAAW;QACX,yBAAyB;QACzB,4BAA4B;QAC5B,6BAA6B;QAC7B,WAAW;QACX,yBAAyB;QACzB,EAAE;QACF,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,mBAAmB;QACnB,EAAE;QACF,SAAS;QACT,iBAAiB;QACjB,sBAAsB;QACtB,gBAAgB;QAChB,wBAAwB;QACxB,wBAAwB;QACxB,2BAA2B;QAC3B,QAAQ;QAER,gCAAgC;QAChC,OAAO,CAAA,GAAA,wCAAQ,EAAE,QAAQ,CAAC;YACxB,QAAQ;sBACN;sBACA;gBACA,MAAM,IAAI,CAAC,IAAI;sBACf;gBACA,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;gBACzB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,MAAM,IAAI,CAAC,IAAI;gBACf,MAAM,IAAI,CAAC,IAAI;gBACf,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;YAMtB;QACF;IACF;IA1HA,YAAY,IAAI,CAAE;QAChB,KAAK,CAAC;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,GAAA,wCAAc;IACxC;AAwHF;;;;;;;AG7He,MAAM,iDAAkB,CAAA,GAAA,wCAAK;IAU1C,oBAAoB;QAClB,IAAI,CAAC,WAAW,GAAG,EAAE;QACrB,IAAI,SAAS,CAAC;QAEd,KAAK,IAAI,OAAO,IAAI,CAAC,MAAM,CAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YAE7C,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,OAAO,MAAM,IAAI,EAAE,qCAAqC;YAE5D,IAAK,IAAI,QAAQ,MAAM,WAAW,CAChC,MAAM,CAAC,KAAK,GAAG;QAEnB;QAEA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;IAC3D;IAEA,YAAY,KAAK,EAAE,IAAI,EAAE;QACvB,IAAI,MAAM,EAAE;QACZ,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;YACrC,IAAI,OAAO,KAAK,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,MAAM;gBACjC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,MAAM;YACjD,OACE,IAAI,IAAI,CAAC,IAAI,WAAW;gBAAC;aAAG,IAAI,SAAS;QAE7C;QAEA,OAAO;IACT;IAEA,eAAe,OAAO,EAAE;QACtB,QAAQ,OAAO,GAAG,EAAE;QACpB,QAAQ,QAAQ,GAAG;YACjB,SAAS;YACT,KAAK,EAAE;QACT;QAEA,IAAI,WAAW,CAAC;QAChB,IAAI,aAAa,EAAE;QACnB,IAAI,YAAY,CAAC;QACjB,KAAK,IAAI,OAAO,IAAI,CAAC,MAAM,CAAE;YAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAC7B,IAAI,MAAM,MACR;YAGF,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACjB,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;gBACnE,WAAW,IAAI,CAAC,CAAC;gBACjB,SAAS,CAAC,GAAG,GAAG,QAAQ,OAAO,CAAC,MAAM,GAAG;YAC3C;YAEA,QAAQ,CAAC,GAAG,GAAG;YACf,QAAQ,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;YAEvC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,OAAO,MAAM,IAAI,EAAE,qCAAqC;YAC5D,IAAK,IAAI,QAAQ,MAAM,UAAU,CAC/B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;QAEtC;QAEA,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,OAAO,CAAC,MAAM,EAAE,IAAK;YAC/C,IAAI,OAAO,QAAQ,OAAO,CAAC,EAAE;YAC7B,OAAO,KAAK,QAAQ;YACpB,IAAI,KAAK,OAAO,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;gBACtC,KAAK,OAAO,GAAG,OAAO,MAAM,CAAC,CAAC,GAAG,KAAK,OAAO;gBAC7C,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YACzE;QACF;QAEA;IACF;IAEA,kBAAkB,OAAO,EAAE;QACzB,IAAI,aAAa,CAAC;QAClB,KAAK,IAAI,OAAO,IAAI,CAAC,MAAM,CAAE;YAC3B,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,OAAO,MAAM,IAAI,EAAE,qCAAqC;YAE5D,IAAK,IAAI,QAAQ,MAAM,UAAU,CAC/B,UAAU,CAAC,KAAK,GAAG;QAEvB;QAEA,IAAI,cAAc,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;QAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAC5D,YAAY,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;QAGvE,QAAQ,OAAO,GAAG;YAAC;gBAAE,SAAS;YAAY;SAAE;QAC5C,OAAO,QAAQ,QAAQ,GAAG;YACxB,SAAS;YACT,SAAS;YACT,QAAQ;gBAAC;oBAAE,OAAO;oBAAG,IAAI;gBAAE;aAAE;YAC7B,UAAU,IAAI,CAAC,WAAW,CAAC,MAAM;QACnC;IACF;IAEA,UAAU,MAAM,EAAE;QAChB,IAAI,CAAC,QACH,OAAO;QAGT,IAAI,CAAC,IAAI,CAAC,OAAO,EACf,IAAI,CAAC,OAAO,GAAG,EAAE;QAGnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO,CAAA,GAAA,wCAAc,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG;IACxD;IAEA,SAAS;QACP,IAAI,CAAC,iBAAiB;QAEtB,IAAI,UAAU;YACZ,SAAS,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,IAAI;YAC7C,QAAQ;gBAAC;oBAAE,OAAO;oBAAG,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG;gBAAE;aAAE;QAC5D;QAEA,IAAI,UAAU,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO;QAChD,QAAQ,OAAO,GAAG;QAClB,QAAQ,OAAO,GAAG;QAClB,QAAQ,QAAQ,GAAG;QACnB,QAAQ,WAAW,GAAG,IAAI,CAAC,WAAW;QAEtC,KAAK,IAAI,OAAO;YAAC;YAAW;YAAU;YAAa;YAAY;YAAc;YAAU;YAAc;YAAgB;SAAW,CAC9H,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;QAG5D,QAAQ,GAAG,GAAG;YAAC,IAAI,CAAC,SAAS,CAAC;YAAU,IAAI,CAAC,SAAS,CAAC;YAAa;SAAE;QACtE,QAAQ,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;QAE1C,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EACpB,IAAI,CAAC,cAAc,CAAC;aAEpB,IAAI,CAAC,iBAAiB,CAAC;QAGzB,IAAI,MAAM;YACR,SAAS;YACT,SAAS,IAAI,CAAC,GAAG,CAAC,OAAO;YACzB,SAAS;YACT,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM;YACvB,WAAW;gBAAC,IAAI,CAAC,GAAG,CAAC,cAAc;aAAC;YACpC,cAAc;gBAAC;aAAQ;YACvB,aAAa,IAAI,CAAC,OAAO;YACzB,iBAAiB,IAAI,CAAC,MAAM;QAC9B;QAEA,OAAO,CAAA,GAAA,wCAAK,EAAE,QAAQ,CAAC;IACzB;IAnKA,YAAY,IAAI,CAAE;QAChB,KAAK,CAAC;QAEN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EACX,MAAM,IAAI,MAAM;IAEpB;AA6JF;;;;;ArGrJe,MAAM;IAGnB,OAAO,MAAM,MAAM,EAAE;QACnB,IAAI,SAAS,CAAA,GAAA,yCAAW,EAAE,MAAM,CAAC,OAAO,KAAK,CAAC,GAAG;QACjD,OAAO,WAAW,UAAU,WAAW,UAAU,WAAW,OAAO,YAAY,CAAC,GAAG,GAAG,GAAG;IAC3F;IAuBA,mBAAmB,OAAO,IAAI,EAAE;QAC9B,IAAI,CAAC,eAAe,GAAG;IACzB;IAEA,UAAU,KAAK,EAAE;QACf,IAAI,CAAE,CAAA,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,AAAD,GAC5B,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,EAAE,OAAO,GAAG;YACV,IAAI,2CAAmB;gBACrB,QAAQ,KAAK,CAAC,CAAC,qBAAqB,EAAE,MAAM,GAAG,CAAC,CAAC;gBACjD,QAAQ,KAAK,CAAC,EAAE,KAAK;YACvB;QACF;QAGF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IAChC;IAEA,gBAAgB,GAAG,EAAE;QACnB,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;QACtC,IAAI,OAAO;YACT,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,MAAM;YAC9B,OAAO,IAAI,CAAC,MAAM;QACpB;QAEA,OAAO;IACT;IAEA,mBAAmB;QACjB,OAAO,IAAI,CAAC,SAAS,GAAG,CAAA,GAAA,wCAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;YAAC,cAAc;QAAC;IACxE;IAEA,aAAa,KAAK,EAAE;QAClB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;QAEzB,IAAI,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG;QAC3C,IAAI,SAAS,CAAA,GAAA,wCAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,MAAM,MAAM;QAEhE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;QAClB,OAAO;IACT;IAEA;;;;GAIC,GACD,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,eAAe,IAAI,yCAAuB,EAAE;QACnE,IAAI,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;QAChD,IAAI,QACF,8EAA8E;QAC9E,OACI,MAAM,CAAC,KAAK,IACT,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAC5B,MAAM,CAAC,0CAAwB,IAC/B,MAAM,CAAC,KAAK,IACZ,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wCAAwC;YACvE;QAIT,OAAO;IACT;IAEA;;;GAGC,GACD,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA;;;GAGC,GACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA;;;GAGC,GACD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA;;;GAGC,GACD,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA;;;GAGC,GACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA;;;GAGC,GACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA;;;GAGC,GACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;IACzB;IAEA;;;GAGC,GACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;IAC1B;IAEA;;;GAGC,GACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;IAC1B;IAEA;;;GAGC,GACD,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB;IACpC;IAEA;;;GAGC,GACD,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB;IACrC;IAEA;;;GAGC,GACD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW;IAC9B;IAEA;;;;GAIC,GACD,IAAI,YAAY;QACd,IAAI,MAAM,IAAI,CAAC,OAAO;QACtB,OAAO,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM;IAC1C;IAEA;;;;GAIC,GACD,IAAI,UAAU;QACZ,IAAI,MAAM,IAAI,CAAC,OAAO;QACtB,OAAO,MAAM,IAAI,OAAO,GAAG;IAC7B;IAEA;;;GAGC,GACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;IAC5B;IAEA;;;GAGC,GACD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU;IAC7B;IAEA;;;GAGC,GACD,IACI,OAAO;QACT,OAAO,OAAO,MAAM,CAAC,IAAI,CAAA,GAAA,wCAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;IAC9F;IAEA,IACI,iBAAiB;QACnB,OAAO,IAAI,CAAA,GAAA,wCAAY,EAAE,IAAI,CAAC,IAAI;IACpC;IAEA;;;GAGC,GACD,IACI,eAAe;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe;IAC5C;IAEA;;;;;GAKC,GACD,qBAAqB,SAAS,EAAE;QAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACtC;IAEA;;;;;;GAMC,GACD,kBAAkB,SAAS,EAAE;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY;YAAC;SAAU;IACzE;IAEA;;;;;;;;GAQC,GACD,gBAAgB,MAAM,EAAE;QACtB,IAAI,SAAS,EAAE;QACf,IAAI,MAAM,OAAO,MAAM;QACvB,IAAI,MAAM;QACV,IAAI,OAAO;QACX,IAAI,QAAQ;QAEZ,MAAO,OAAO,IAAK;YACjB,IAAI,OAAO;YACX,IAAI,YAAY;YAEhB,IAAI,MAAM,KAAK;gBACb,wCAAwC;gBACxC,OAAO,OAAO,UAAU,CAAC;gBACzB,IAAI,UAAU,QAAQ,QAAQ,UAAU,MAAM,KAAK;oBACjD,IAAI,OAAO,OAAO,UAAU,CAAC;oBAC7B,IAAI,UAAU,QAAQ,QAAQ,QAAQ;wBACpC;wBACA,OAAO,AAAC,CAAA,AAAC,CAAA,OAAO,KAAI,KAAM,EAAC,IAAM,CAAA,OAAO,KAAI,IAAK;oBACnD;gBACF;gBAEA,wFAAwF;gBACxF,YAAY,AAAC,AAAC,UAAU,QAAQ,QAAQ,UAAY,WAAW,QAAQ,QAAQ,UAAY,IAAI;YACjG,OACE;YAGF,IAAI,UAAU,KAAK,cAAc,GAC/B,iDAAiD;YACjD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,OAAO;gBAAC;gBAAM;aAAK;iBACzE,IAAI,UAAU,KAAK,cAAc,GACtC,+CAA+C;YAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAGrC,OAAO;YACP,QAAQ;QACV;QAEA,OAAO;IACT;IAEA,IACI,gBAAgB;QAClB,OAAO,IAAI,CAAA,GAAA,wCAAW,EAAE,IAAI;IAC9B;IAEA;;;;;;;;;GASC,GACD,OAAO,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,cAAc,QAAQ,UAAU;IAC3E;IAEA;;;GAGC,GACD,gBAAgB,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;IAC5C;IAEA;;;;;;;GAOC,GACD,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB;IAChD;IAEA,qBAAqB,MAAM,EAAE,QAAQ,EAAE;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ;IACzD;IAEA,cAAc,KAAK,EAAE,aAAa,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAO,EAAE,OAAO,YAAY,IAAI;iBAErD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EACpE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAO,EAAE,OAAO,YAAY,IAAI;QAE9D;QAEA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI;IAChC;IAEA;;;;;;;;GAQC,GACD,SAAS,KAAK,EAAE,aAAa,EAAE,EAAE;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAQ,EAAE,OAAO,YAAY,IAAI;iBAEtD,IAAI,AAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EACpE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAQ,EAAE,OAAO,YAAY,IAAI;iBAG3D,IAAI,CAAC,aAAa,CAAC,OAAO;QAE9B;QAEA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI;IAChC;IAEA;;;GAGC,GACD,eAAe;QACb,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAC/B,OAAO,IAAI,CAAA,GAAA,wCAAQ,EAAE,IAAI;QAG3B,OAAO,IAAI,CAAA,GAAA,wCAAQ,EAAE,IAAI;IAC3B;IAEA;;;;;;GAMC,GACD,IACI,gBAAgB;QAClB,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,EACZ,OAAO;QAGT,KAAK,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAC7B,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,GAAG;YACzB,MAAM,KAAK,IAAI,CAAC,EAAE;YAClB,KAAK,KAAK,QAAQ;YAClB,SAAS,KAAK,YAAY;YAC1B,KAAK,KAAK,QAAQ;QACpB;QAGF,OAAO;IACT;IAEA;;;;;;GAMC,GACD,IACI,kBAAkB;QACpB,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,EACZ,OAAO;QAGT,KAAK,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAE;YACvC,IAAI,WAAW,CAAC;YAChB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAK;gBAC9C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5B,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,GAAG,SAAS,KAAK,CAAC,EAAE;YACnD;YAEA,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,GAAG;QAC1B;QAEA,OAAO;IACT;IAEA;;;;;;;GAOC,GACD,aAAa,QAAQ,EAAE;QACrB,IAAI,CAAE,CAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAK,CAAA,AAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,AAAD,CAAC,GAC3H,MAAM,IAAI,MAAM;QAGlB,IAAI,OAAO,aAAa,UACtB,WAAW,IAAI,CAAC,eAAe,CAAC,SAAS;QAG3C,IAAI,OAAO,aAAa,UACtB,MAAM,IAAI,MAAM;QAGlB,4BAA4B;QAC5B,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;YACrC,IAAI,UAAU,KAAK,OAAO,CAAC,IAAI;YAC/B,IAAI,WAAW,UACb,OAAO,KAAK,GAAG,CAAC,KAAK,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAExE,OAAO,KAAK,YAAY;QAE5B;QAEA,IAAI,SAAS,IAAI,oBAAe,IAAI,CAAC,MAAM,CAAC,MAAM;QAClD,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa;QAE/B,IAAI,OAAO,IAAI,yCAAQ,QAAQ;QAC/B,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO;QAE3B,OAAO;IACT;IAEA,IACI,sBAAsB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EACZ,OAAO;QAGT,IAAI,kBAAkB,IAAI,CAAC,eAAe;QAE1C,6CAA6C;QAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAChC,OAAO;QAGT,IAAI,CAAC,iBACH,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,OAAQ,KAAK,YAAY;QAGhE,OAAO,IAAI,CAAA,GAAA,wCAAsB,EAAE,IAAI,EAAE;IAC3C;IAEA,iCAAiC;IACjC,QAAQ,IAAI,EAAE;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B;IA3gBA,YAAY,MAAM,EAAE,kBAAkB,IAAI,CAAE;QAP5C,oBAAA,QAAO;QAQL,IAAI,CAAC,eAAe,GAAG;QACvB,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,eAAe,GAAG;QAEvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,CAAC;QAChB,IAAI,CAAC,gBAAgB;QAErB,mDAAmD;QACnD,IAAK,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAE;YACrC,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;YACtC,IAAI,CAAA,GAAA,wCAAK,CAAC,CAAC,IAAI,IAAI,MAAM,MAAM,GAAG,GAChC,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK;gBAC/B,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC;QAEJ;IACF;AAyfF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AuGtiBA,IAAI,2CAAqB,IAAI,cAAS;IACpC,KAAc,IAAI,cAAS;IAC3B,QAAc,IAAI,eAAU,eAAU,QAAQ;QAAC,MAAM;IAAQ;IAC7D,YAAc;IACd,QAAc;IACd,cAAc;AAChB;AAEA,IAAI,sCAAgB,IAAI,cAAS;IAC/B,KAAgB,IAAI,cAAS;IAC7B,QAAgB;IAChB,QAAgB;IAChB,WAAgB;IAChB,UAAgB,IAAI,gBAAW;IAC/B,eAAgB;IAChB,cAAgB;IAChB,cAAgB;IAChB,YAAgB;IAChB,YAAgB;IAChB,gBAAgB;IAChB,YAAgB;IAChB,YAAgB;IAChB,QAAgB,IAAI,aAAQ,0CAAoB;AAClD;AAEA,oCAAc,OAAO,GAAG;IACtB,IAAI,SAAS,CAAC;IACd,KAAK,IAAI,SAAS,IAAI,CAAC,MAAM,CAC3B,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;IAGtB,IAAI,CAAC,MAAM,GAAG;AAChB;IAEA,2CAAe;;;;;;;AD9BA,MAAM,iDAAiB,CAAA,GAAA,wCAAM;IAG1C,OAAO,MAAM,MAAM,EAAE;QACnB,OAAO,CAAA,GAAA,yCAAW,EAAE,MAAM,CAAC,OAAO,KAAK,CAAC,GAAG,QAAQ;IACrD;IAEA,mBAAmB;QACjB,IAAI,CAAC,SAAS,GAAG,CAAA,GAAA,wCAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,cAAc;QAAE;IACvE;IAEA,gBAAgB,GAAG,EAAE;QACnB,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;QACtC,IAAI,OAAO;YACT,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,MAAM;YAE9B,IAAI,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,sBAAsB;gBAC5C,IAAI,YAAY,IAAI,WAAW,MAAM,MAAM;gBAC3C,IAAI,MAAM,CAAA,GAAA,kBAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,UAAU,GAAG,IAAI;gBAChE,OAAO,IAAI,oBAAe;YAC5B,OACE,OAAO,IAAI,CAAC,MAAM;QAEtB;QAEA,OAAO;IACT;;;QA1BA,oBAAA,QAAO;;AA2BT;;;;;;;;;;AG9Be,MAAM,iDAAmB,CAAA,GAAA,wCAAO;IAG7C,UAAU;QACR,oFAAoF;QACpF,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C;IAEA,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;IACvB;;;QATA,oBAAA,QAAO;;AAUT;;;;ACdA,MAAM,gCAAU;IACd,QAAO,MAAM;QACX,IAAI,SAAS;QACb,IAAI,WAAW;YAAC;YAAG;YAAG;YAAG;YAAG;SAAE;QAC9B,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;YACxC,IAAI,IAAI,QAAQ,CAAC,EAAE;YACnB,IAAI,OAAO,OAAO,SAAS;YAE3B,qEAAqE;YACrE,IAAI,SAAS,YACX,MAAM,IAAI,MAAM;YAGlB,SAAS,AAAC,UAAU,IAAM,OAAO;YACjC,IAAI,AAAC,CAAA,OAAO,IAAG,MAAO,GACpB,OAAO;QAEX;QAEA,MAAM,IAAI,MAAM;IAClB;AACF;AAEA,IAAI,kCAAY;IACd;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAChE;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAChE;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAChE;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAChE;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAChE;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAChE;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;IAAQ;CACjE;AAED,IAAI,4CAAsB,IAAI,cAAS;IACrC,OAAO;IACP,WAAW,IAAI,gBAAW,IAAI,cAAS,IAAI,CAAA,IAAK,AAAC,CAAA,EAAE,KAAK,GAAG,IAAG,MAAO;IACrE,KAAK,CAAA,IAAK,EAAE,SAAS,IAAI,+BAAS,CAAC,EAAE,KAAK,GAAG,KAAK;IAClD,QAAQ;IACR,kBAAkB,CAAA,IAAK,AAAC,EAAE,KAAK,KAAK,IAAK;IACzC,aAAa,CAAA,IAAK,AAAC,EAAE,GAAG,KAAK,UAAU,EAAE,GAAG,KAAK,SAAU,EAAE,gBAAgB,KAAK,IAAI,EAAE,gBAAgB,KAAK;IAC7G,iBAAiB,IAAI,gBAAW,+BAAS,CAAA,IAAK,EAAE,WAAW;AAC7D;AAEA,IAAI,uCAAiB,IAAI,cAAS;IAChC,KAAK,IAAI,cAAS;IAClB,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,UAAU,IAAI,gBAAW;IACzB,eAAe;IACf,qBAAqB;IACrB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,QAAQ,IAAI,aAAQ,2CAAqB;AAC3C;AAEA,qCAAe,OAAO,GAAG;IACvB,IAAI,SAAS,CAAC;IACd,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAK;QAC3C,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;QAC1B,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;IACtB;IAEA,OAAO,IAAI,CAAC,MAAM,GAAG;AACvB;IAEA,2CAAe;;;;AF7DA,MAAM,iDAAkB,CAAA,GAAA,wCAAM;IAG3C,OAAO,MAAM,MAAM,EAAE;QACnB,OAAO,CAAA,GAAA,yCAAW,EAAE,MAAM,CAAC,OAAO,KAAK,CAAC,GAAG,QAAQ;IACrD;IAEA,mBAAmB;QACjB,IAAI,CAAC,SAAS,GAAG,CAAA,GAAA,wCAAa,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;IACjC;IAEA,cAAc;QACZ,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ;YAC/B,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB;YAEtE,IAAI,mBAAmB;YACvB,IAAK,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAE;gBACrC,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;gBACtC,MAAM,MAAM,GAAG;gBACf,oBAAoB,AAAC,MAAM,eAAe,IAAI,OAAQ,MAAM,eAAe,GAAG,MAAM,MAAM;YAC5F;YAEA,IAAI,eAAe,CAAA,GAAA,yBAAK,EAAE,QAAQ;YAClC,IAAI,CAAC,cACH,MAAM,IAAI,MAAM;YAGlB,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAe;YACjC,IAAI,CAAC,aAAa,GAAG;QACvB;IACF;IAEA,aAAa,KAAK,EAAE;QAClB,IAAI,CAAC,WAAW;QAChB,OAAO,KAAK,CAAC,aAAa;IAC5B;IAEA,qDAAqD;IACrD,4CAA4C;IAC5C,cAAc,KAAK,EAAE,aAAa,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;gBACxE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAI,IAAI,CAAC,mBAAmB;gBACxD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA,GAAA,wCAAS,EAAE,OAAO,YAAY,IAAI;YAErE,OACE,OAAO,KAAK,CAAC,cAAc,OAAO;QAEtC;IACF;IAEA,sBAAsB;QACpB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;QACnD,IAAI,QAAQ,gCAAU,MAAM,CAAC,IAAI,CAAC,MAAM;QACxC,IAAI,SAAS,EAAE;QAEf,IAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,SAAS,EAAE,QAAS;YACpD,IAAI,QAAQ,CAAC;YACb,IAAI,YAAY,MAAM,SAAS,CAAC,WAAW;YAC3C,MAAM,gBAAgB,GAAG;YAEzB,IAAI,YAAY,GAAG;gBACjB,IAAI,UAAU,EAAE;gBAChB,IAAI,cAAc;gBAElB,IAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAAK;oBAClC,IAAI,IAAI,oCAAc,MAAM,OAAO;oBACnC,eAAe;oBACf,QAAQ,IAAI,CAAC;gBACf;gBAEA,MAAM,MAAM,GAAG,oCAAc,MAAM,KAAK,EAAE,MAAM,MAAM,EAAE;gBACxD,IAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAC7B,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG;gBAG5C,IAAI,kBAAkB,oCAAc,MAAM,MAAM;YAElD,OAAO,IAAI,YAAY,GAAG;gBACxB,IAAI,mBAAmB,CAAA,GAAA,wCAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI;gBAAC,GAAG,OAAO,MAAM,UAAU;gBACxG,IAAI,kBACF,IAAI,kBAAkB,oCAAc,MAAM,MAAM;YAEpD;YAEA,OAAO,IAAI,CAAC;QACd;QAEA,IAAI,CAAC,kBAAkB,GAAG;IAC5B;;;QA5FA,oBAAA,QAAO;;AA6FT;AAEA,6EAA6E;AAC7E,MAAM;IAMJ,OAAO,MAAM,EAAE,MAAM,EAAE;QACrB,OAAO,IAAI,oBAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;IACrD;IAPA,YAAY,MAAM,CAAE;QAClB,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,cAAS;IAC3B;AAKF;AAEA,+CAA+C;AAC/C,IAAI,kCAAY,IAAI,cAAS;IAC3B,SAAS;IACT,WAAW;IACX,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,gBAAgB;IAChB,uBAAuB;IACvB,WAAW,IAAI,gCAAU;IACzB,SAAS,IAAI,gCAAU;IACvB,OAAO,IAAI,gCAAU;IACrB,QAAQ,IAAI,gCAAU;IACtB,YAAY,IAAI,gCAAU;IAC1B,QAAQ,IAAI,gCAAU;IACtB,cAAc,IAAI,gCAAU;AAC9B;AAEA,MAAM,kCAAY;AAClB,MAAM,4CAAsB;AAC5B,MAAM,4CAAsB;AAC5B,MAAM,sCAAgB;AAEtB,SAAS,oCAAc,MAAM;IAC3B,IAAI,OAAO,OAAO,SAAS;IAE3B,IAAI,SAAS,iCACX,OAAO,OAAO,YAAY;IAG5B,IAAI,SAAS,2CACX,OAAO,OAAO,SAAS,KAAK;IAG9B,IAAI,SAAS,2CACX,OAAO,OAAO,SAAS,KAAK,sCAAgB;IAG9C,OAAO;AACT;AAEA,SAAS,+BAAS,IAAI,EAAE,OAAO;IAC7B,OAAO,OAAO,IAAI,UAAU,CAAC;AAC/B;AAEA,SAAS,oCAAc,KAAK,EAAE,MAAM,EAAE,OAAO;IAC3C,IAAI;IACJ,IAAI,IAAI,IAAI;IACZ,IAAI,MAAM,EAAE;IAEZ,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,IAAK;QAChC,IAAI,KAAK,GAAG,KAAK;QACjB,IAAI,OAAO,MAAM,SAAS;QAC1B,IAAI,UAAU,CAAE,CAAA,QAAQ,CAAA;QACxB,QAAQ;QAER,IAAI,OAAO,IAAI;YACb,KAAK;YACL,KAAK,+BAAS,MAAM,AAAC,CAAA,AAAC,CAAA,OAAO,EAAC,KAAM,CAAA,IAAK,OAAO,SAAS;QAE3D,OAAO,IAAI,OAAO,IAAI;YACpB,KAAK,+BAAS,MAAM,AAAC,CAAA,AAAC,CAAA,AAAC,OAAO,KAAM,EAAC,KAAM,CAAA,IAAK,OAAO,SAAS;YAChE,KAAK;QAEP,OAAO,IAAI,OAAO,IAAI;YACpB,IAAI,KAAK,OAAO;YAChB,IAAI,KAAK,OAAO,SAAS;YACzB,KAAK,+BAAS,MAAM,IAAK,CAAA,KAAK,IAAG,IAAM,CAAA,MAAM,CAAA;YAC7C,KAAK,+BAAS,QAAQ,GAAG,IAAK,CAAA,AAAC,CAAA,KAAK,IAAG,KAAM,CAAA,IAAM,CAAA,KAAK,IAAG;QAE7D,OAAO,IAAI,OAAO,KAAK;YACrB,IAAI,KAAK,OAAO;YAChB,KAAK,+BAAS,MAAM,IAAK,CAAA,AAAC,KAAK,MAAO,CAAA,IAAK,OAAO,SAAS;YAC3D,KAAK,+BAAS,QAAQ,GAAG,IAAK,CAAA,AAAE,KAAK,MAAO,KAAM,CAAA,IAAK,OAAO,SAAS;QAEzE,OAAO,IAAI,OAAO,KAAK;YACrB,IAAI,KAAK,OAAO,SAAS;YACzB,IAAI,KAAK,OAAO,SAAS;YACzB,KAAK,+BAAS,MAAM,AAAC,CAAA,MAAM,CAAA,IAAM,CAAA,MAAM,CAAA;YACvC,KAAK,+BAAS,QAAQ,GAAG,AAAC,CAAA,AAAC,CAAA,KAAK,IAAG,KAAM,CAAA,IAAK,OAAO,SAAS;QAEhE,OAAO;YACL,KAAK,+BAAS,MAAM,OAAO,YAAY;YACvC,KAAK,+BAAS,QAAQ,GAAG,OAAO,YAAY;QAC9C;QAEA,KAAK;QACL,KAAK;QACL,IAAI,IAAI,CAAC,IAAI,CAAA,GAAA,yCAAI,EAAE,SAAS,OAAO,GAAG;IACxC;IAEA,OAAO;AACT;;;;;;;;;AGjNA,IAAI,kCAAY,IAAI,uBAAkB,eAAU;IAC9C,YAAY;QACV,UAAY;QACZ,SAAY,IAAI,aAAQ,eAAU;IACpC;IACA,YAAY;QACV,UAAY;QACZ,SAAY,IAAI,aAAQ,eAAU;QAClC,SAAY;QACZ,YAAY;QACZ,YAAY;IACd;AACF;AAEe,MAAM;IAGnB,OAAO,MAAM,MAAM,EAAE;QACnB,OAAO,CAAA,GAAA,yCAAW,EAAE,MAAM,CAAC,OAAO,KAAK,CAAC,GAAG,QAAQ;IACrD;IAWA,QAAQ,IAAI,EAAE;QACZ,KAAK,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE;YACtC,IAAI,SAAS,IAAI,oBAAe,IAAI,CAAC,MAAM,CAAC,MAAM;YAClD,OAAO,GAAG,GAAG;YACb,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAM,EAAE;YACvB,IACE,KAAK,cAAc,KAAK,QAEtB,KAAK,cAAc,YAAY,cAC/B,gBAAgB,cAChB,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,IAAM,IAAI,CAAC,EAAE,KAAK,IAGlD,OAAO;QAEX;QAEA,OAAO;IACT;IAEA,IAAI,QAAQ;QACV,IAAI,QAAQ,EAAE;QACd,KAAK,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE;YACtC,IAAI,SAAS,IAAI,oBAAe,IAAI,CAAC,MAAM,CAAC,MAAM;YAClD,OAAO,GAAG,GAAG;YACb,MAAM,IAAI,CAAC,IAAI,CAAA,GAAA,wCAAM,EAAE;QACzB;QAEA,OAAO;IACT;IAtCA,YAAY,MAAM,CAAE;QANpB,oBAAA,QAAO;QAOL,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,OAAO,UAAU,CAAC,OAAO,QAC3B,MAAM,IAAI,MAAM;QAGlB,IAAI,CAAC,MAAM,GAAG,gCAAU,MAAM,CAAC;IACjC;AAgCF;;;;;;AC/DA,IAAI,kCAAY,IAAI,cAAS;AAC7B,IAAI,kCAAY,IAAI,cAAS;IAC3B,KAAK;IACL,KAAK,IAAI,cAAS;AACpB;AAEA,IAAI,4BAAM,IAAI,cAAS;IACrB,IAAI;IACJ,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,QAAQ;AACV;AAEA,IAAI,6BAAO,IAAI,cAAS;IACtB,MAAM,IAAI,cAAS;IACnB,cAAc;IACd,SAAS,IAAI,eAAU,eAAU,IAAI,aAAQ,2BAAK,CAAA,IAAK,EAAE,YAAY,GAAG,IAAI;QAAE,MAAM;IAAS;AAC/F;AAEA,IAAI,iCAAW,IAAI,cAAS;IAC1B,QAAQ;IACR,OAAO,IAAI,aAAQ,4BAAM,CAAA,IAAK,EAAE,MAAM,GAAG;AAC3C;AAEA,IAAI,iCAAW,IAAI,cAAS;IAC1B,UAAU,IAAI,gBAAW,cAAS;IAClC,UAAU,IAAI,eAAU,eAAU;IAClC,gBAAgB,IAAI,eAAU,eAAU;AAC1C;AAEA,IAAI,oCAAc,IAAI,cAAS;IAC7B,YAAY;IACZ,KAAK,IAAI,eAAU,eAAU;IAC7B,YAAY;IACZ,WAAW;AACb;AAEe,MAAM;IAGnB,OAAO,MAAM,MAAM,EAAE;QACnB,IAAI,SAAS,IAAI,oBAAe;QAEhC,IAAI;YACF,IAAI,SAAS,kCAAY,MAAM,CAAC;QAClC,EAAE,OAAO,GAAG;YACV,OAAO;QACT;QAEA,KAAK,IAAI,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAE;YAC1C,IAAI,KAAK,IAAI,KAAK,QAChB,OAAO;QAEX;QAEA,OAAO;IACT;IAsBA,QAAQ,IAAI,EAAE;QACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EACZ,OAAO;QAGT,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAE;YACjC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,UAAU,GAAG;YACpD,IAAI,SAAS,IAAI,oBAAe,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YACzD,IAAI,OAAO,IAAI,CAAA,GAAA,wCAAM,EAAE;YACvB,IACE,KAAK,cAAc,KAAK,QAEtB,KAAK,cAAc,YAAY,cAC/B,gBAAgB,cAChB,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,IAAM,IAAI,CAAC,EAAE,KAAK,IAGlD,OAAO;QAEX;QAEA,OAAO;IACT;IAEA,IAAI,QAAQ;QACV,IAAI,QAAQ,EAAE;QACd,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAE;YACjC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,UAAU,GAAG;YACpD,IAAI,SAAS,IAAI,oBAAe,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YACzD,MAAM,IAAI,CAAC,IAAI,CAAA,GAAA,wCAAM,EAAE;QACzB;QAEA,OAAO;IACT;IArDA,YAAY,MAAM,CAAE;QApBpB,oBAAA,QAAO;QAqBL,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,MAAM,GAAG,kCAAY,MAAM,CAAC,IAAI,CAAC,MAAM;QAE5C,KAAK,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAE;YAC/C,KAAK,IAAI,OAAO,KAAK,OAAO,CAC1B,IAAI,IAAI,UAAU,IAAI,GAAG;gBACvB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc;gBACjE,IAAI,IAAI,GAAG,gCAAU,MAAM,CAAC,IAAI,CAAC,MAAM;YACzC,OACE,IAAI,IAAI,GAAG;YAIf,IAAI,KAAK,IAAI,KAAK,QAChB,IAAI,CAAC,IAAI,GAAG;QAEhB;IACF;AAoCF;;;A9G7GA,wBAAwB;AACxB,CAAA,GAAA,wCAAa,EAAE,CAAA,GAAA,wCAAM;AACrB,CAAA,GAAA,wCAAa,EAAE,CAAA,GAAA,wCAAO;AACtB,CAAA,GAAA,wCAAa,EAAE,CAAA,GAAA,wCAAQ;AACvB,CAAA,GAAA,wCAAa,EAAE,CAAA,GAAA,wCAAiB;AAChC,CAAA,GAAA,wCAAa,EAAE,CAAA,GAAA,wCAAI","sources":["src/index.js","src/base.js","src/TTFFont.js","src/decorators.js","src/tables/directory.js","src/tables/index.js","src/tables/cmap.js","src/tables/head.js","src/tables/hhea.js","src/tables/hmtx.js","src/tables/maxp.js","src/tables/name.js","src/encodings.js","src/tables/OS2.js","src/tables/post.js","src/tables/cvt.js","src/tables/fpgm.js","src/tables/loca.js","src/tables/prep.js","src/tables/glyf.js","src/cff/CFFFont.js","src/cff/CFFIndex.js","src/cff/CFFTop.js","src/cff/CFFDict.js","src/cff/CFFOperand.js","src/cff/CFFPointer.js","src/cff/CFFPrivateDict.js","src/cff/CFFStandardStrings.js","src/cff/CFFEncodings.js","src/cff/CFFCharsets.js","src/tables/variations.js","src/tables/opentype.js","src/tables/VORG.js","src/tables/EBLC.js","src/tables/EBDT.js","src/tables/sbix.js","src/tables/COLR.js","src/tables/CPAL.js","src/tables/BASE.js","src/tables/GDEF.js","src/tables/GPOS.js","src/tables/GSUB.js","src/tables/JSTF.js","src/tables/HVAR.js","src/tables/DSIG.js","src/tables/gasp.js","src/tables/hdmx.js","src/tables/kern.js","src/tables/LTSH.js","src/tables/PCLT.js","src/tables/VDMX.js","src/tables/vhea.js","src/tables/vmtx.js","src/tables/avar.js","src/tables/bsln.js","src/tables/aat.js","src/tables/feat.js","src/tables/fvar.js","src/tables/gvar.js","src/tables/just.js","src/tables/morx.js","src/tables/opbd.js","src/CmapProcessor.js","src/utils.js","src/layout/LayoutEngine.js","src/layout/KernProcessor.js","src/layout/UnicodeLayoutEngine.js","src/layout/GlyphRun.js","src/glyph/BBox.js","src/layout/Script.js","src/layout/GlyphPosition.js","src/aat/AATLayoutEngine.js","src/aat/AATFeatureMap.js","src/aat/AATMorxProcessor.js","src/aat/AATStateMachine.js","src/aat/AATLookupTable.js","src/opentype/OTLayoutEngine.js","src/opentype/ShapingPlan.js","src/opentype/shapers/index.js","src/opentype/shapers/DefaultShaper.js","src/opentype/shapers/ArabicShaper.js","src/opentype/shapers/HangulShaper.js","src/opentype/GlyphInfo.js","src/opentype/OTProcessor.js","src/opentype/GlyphIterator.js","src/opentype/shapers/IndicShaper.js","src/opentype/shapers/indic.json","src/opentype/shapers/use.json","src/opentype/shapers/indic-data.js","src/opentype/shapers/UniversalShaper.js","src/opentype/GSUBProcessor.js","src/opentype/GPOSProcessor.js","src/glyph/TTFGlyph.js","src/glyph/Glyph.js","src/glyph/Path.js","src/glyph/StandardNames.js","src/glyph/CFFGlyph.js","src/glyph/SBIXGlyph.js","src/glyph/COLRGlyph.js","src/glyph/GlyphVariationProcessor.js","src/subset/TTFSubset.js","src/subset/Subset.js","src/glyph/TTFGlyphEncoder.js","src/subset/CFFSubset.js","src/WOFFFont.js","src/tables/WOFFDirectory.js","src/WOFF2Font.js","src/glyph/WOFF2Glyph.js","src/tables/WOFF2Directory.js","src/TrueTypeCollection.js","src/DFont.js"],"sourcesContent":["import { registerFormat, create, defaultLanguage, setDefaultLanguage } from './base';\nimport TTFFont from './TTFFont';\nimport WOFFFont from './WOFFFont';\nimport WOFF2Font from './WOFF2Font';\nimport TrueTypeCollection from './TrueTypeCollection';\nimport DFont from './DFont';\n\n// Register font formats\nregisterFormat(TTFFont);\nregisterFormat(WOFFFont);\nregisterFormat(WOFF2Font);\nregisterFormat(TrueTypeCollection);\nregisterFormat(DFont);\n\nexport * from './base';\n","import {DecodeStream} from 'restructure';\n\nexport let logErrors = false;\n\nlet formats = [];\nexport function registerFormat(format) {\n  formats.push(format);\n};\n\nexport function create(buffer, postscriptName) {\n  for (let i = 0; i < formats.length; i++) {\n    let format = formats[i];\n    if (format.probe(buffer)) {\n      let font = new format(new DecodeStream(buffer));\n      if (postscriptName) {\n        return font.getFont(postscriptName);\n      }\n\n      return font;\n    }\n  }\n\n  throw new Error('Unknown font format');\n};\n\nexport let defaultLanguage = 'en';\nexport function setDefaultLanguage(lang = 'en') {\n  defaultLanguage = lang;\n};\n","import * as r from 'restructure';\nimport { cache } from './decorators';\nimport * as fontkit from './base';\nimport Directory from './tables/directory';\nimport tables from './tables';\nimport CmapProcessor from './CmapProcessor';\nimport LayoutEngine from './layout/LayoutEngine';\nimport TTFGlyph from './glyph/TTFGlyph';\nimport CFFGlyph from './glyph/CFFGlyph';\nimport SBIXGlyph from './glyph/SBIXGlyph';\nimport COLRGlyph from './glyph/COLRGlyph';\nimport GlyphVariationProcessor from './glyph/GlyphVariationProcessor';\nimport TTFSubset from './subset/TTFSubset';\nimport CFFSubset from './subset/CFFSubset';\nimport BBox from './glyph/BBox';\nimport { asciiDecoder } from './utils';\n\n/**\n * This is the base class for all SFNT-based font formats in fontkit.\n * It supports TrueType, and PostScript glyphs, and several color glyph formats.\n */\nexport default class TTFFont {\n  type = 'TTF';\n\n  static probe(buffer) {\n    let format = asciiDecoder.decode(buffer.slice(0, 4));\n    return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);\n  }\n\n  constructor(stream, variationCoords = null) {\n    this.defaultLanguage = null;\n    this.stream = stream;\n    this.variationCoords = variationCoords;\n\n    this._directoryPos = this.stream.pos;\n    this._tables = {};\n    this._glyphs = {};\n    this._decodeDirectory();\n\n    // define properties for each table to lazily parse\n    for (let tag in this.directory.tables) {\n      let table = this.directory.tables[tag];\n      if (tables[tag] && table.length > 0) {\n        Object.defineProperty(this, tag, {\n          get: this._getTable.bind(this, table)\n        });\n      }\n    }\n  }\n\n  setDefaultLanguage(lang = null) {\n    this.defaultLanguage = lang;\n  }\n\n  _getTable(table) {\n    if (!(table.tag in this._tables)) {\n      try {\n        this._tables[table.tag] = this._decodeTable(table);\n      } catch (e) {\n        if (fontkit.logErrors) {\n          console.error(`Error decoding table ${table.tag}`);\n          console.error(e.stack);\n        }\n      }\n    }\n\n    return this._tables[table.tag];\n  }\n\n  _getTableStream(tag) {\n    let table = this.directory.tables[tag];\n    if (table) {\n      this.stream.pos = table.offset;\n      return this.stream;\n    }\n\n    return null;\n  }\n\n  _decodeDirectory() {\n    return this.directory = Directory.decode(this.stream, {_startOffset: 0});\n  }\n\n  _decodeTable(table) {\n    let pos = this.stream.pos;\n\n    let stream = this._getTableStream(table.tag);\n    let result = tables[table.tag].decode(stream, this, table.length);\n\n    this.stream.pos = pos;\n    return result;\n  }\n\n  /**\n   * Gets a string from the font's `name` table\n   * `lang` is a BCP-47 language code.\n   * @return {string}\n   */\n  getName(key, lang = this.defaultLanguage || fontkit.defaultLanguage) {\n    let record = this.name && this.name.records[key];\n    if (record) {\n      // Attempt to retrieve the entry, depending on which translation is available:\n      return (\n          record[lang]\n          || record[this.defaultLanguage]\n          || record[fontkit.defaultLanguage]\n          || record['en']\n          || record[Object.keys(record)[0]] // Seriously, ANY language would be fine\n          || null\n      );\n    }\n\n    return null;\n  }\n\n  /**\n   * The unique PostScript name for this font, e.g. \"Helvetica-Bold\"\n   * @type {string}\n   */\n  get postscriptName() {\n    return this.getName('postscriptName');\n  }\n\n  /**\n   * The font's full name, e.g. \"Helvetica Bold\"\n   * @type {string}\n   */\n  get fullName() {\n    return this.getName('fullName');\n  }\n\n  /**\n   * The font's family name, e.g. \"Helvetica\"\n   * @type {string}\n   */\n  get familyName() {\n    return this.getName('fontFamily');\n  }\n\n  /**\n   * The font's sub-family, e.g. \"Bold\".\n   * @type {string}\n   */\n  get subfamilyName() {\n    return this.getName('fontSubfamily');\n  }\n\n  /**\n   * The font's copyright information\n   * @type {string}\n   */\n  get copyright() {\n    return this.getName('copyright');\n  }\n\n  /**\n   * The font's version number\n   * @type {string}\n   */\n  get version() {\n    return this.getName('version');\n  }\n\n  /**\n   * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))\n   * @type {number}\n   */\n  get ascent() {\n    return this.hhea.ascent;\n  }\n\n  /**\n   * The font’s [descender](https://en.wikipedia.org/wiki/Descender)\n   * @type {number}\n   */\n  get descent() {\n    return this.hhea.descent;\n  }\n\n  /**\n   * The amount of space that should be included between lines\n   * @type {number}\n   */\n  get lineGap() {\n    return this.hhea.lineGap;\n  }\n\n  /**\n   * The offset from the normal underline position that should be used\n   * @type {number}\n   */\n  get underlinePosition() {\n    return this.post.underlinePosition;\n  }\n\n  /**\n   * The weight of the underline that should be used\n   * @type {number}\n   */\n  get underlineThickness() {\n    return this.post.underlineThickness;\n  }\n\n  /**\n   * If this is an italic font, the angle the cursor should be drawn at to match the font design\n   * @type {number}\n   */\n  get italicAngle() {\n    return this.post.italicAngle;\n  }\n\n  /**\n   * The height of capital letters above the baseline.\n   * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.\n   * @type {number}\n   */\n  get capHeight() {\n    let os2 = this['OS/2'];\n    return os2 ? os2.capHeight : this.ascent;\n  }\n\n  /**\n   * The height of lower case letters in the font.\n   * See [here](https://en.wikipedia.org/wiki/X-height) for more details.\n   * @type {number}\n   */\n  get xHeight() {\n    let os2 = this['OS/2'];\n    return os2 ? os2.xHeight : 0;\n  }\n\n  /**\n   * The number of glyphs in the font.\n   * @type {number}\n   */\n  get numGlyphs() {\n    return this.maxp.numGlyphs;\n  }\n\n  /**\n   * The size of the font’s internal coordinate grid\n   * @type {number}\n   */\n  get unitsPerEm() {\n    return this.head.unitsPerEm;\n  }\n\n  /**\n   * The font’s bounding box, i.e. the box that encloses all glyphs in the font.\n   * @type {BBox}\n   */\n  @cache\n  get bbox() {\n    return Object.freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));\n  }\n\n  @cache\n  get _cmapProcessor() {\n    return new CmapProcessor(this.cmap);\n  }\n\n  /**\n   * An array of all of the unicode code points supported by the font.\n   * @type {number[]}\n   */\n  @cache\n  get characterSet() {\n    return this._cmapProcessor.getCharacterSet();\n  }\n\n  /**\n   * Returns whether there is glyph in the font for the given unicode code point.\n   *\n   * @param {number} codePoint\n   * @return {boolean}\n   */\n  hasGlyphForCodePoint(codePoint) {\n    return !!this._cmapProcessor.lookup(codePoint);\n  }\n\n  /**\n   * Maps a single unicode code point to a Glyph object.\n   * Does not perform any advanced substitutions (there is no context to do so).\n   *\n   * @param {number} codePoint\n   * @return {Glyph}\n   */\n  glyphForCodePoint(codePoint) {\n    return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);\n  }\n\n  /**\n   * Returns an array of Glyph objects for the given string.\n   * This is only a one-to-one mapping from characters to glyphs.\n   * For most uses, you should use font.layout (described below), which\n   * provides a much more advanced mapping supporting AAT and OpenType shaping.\n   *\n   * @param {string} string\n   * @return {Glyph[]}\n   */\n  glyphsForString(string) {\n    let glyphs = [];\n    let len = string.length;\n    let idx = 0;\n    let last = -1;\n    let state = -1;\n\n    while (idx <= len) {\n      let code = 0;\n      let nextState = 0;\n\n      if (idx < len) {\n        // Decode the next codepoint from UTF 16\n        code = string.charCodeAt(idx++);\n        if (0xd800 <= code && code <= 0xdbff && idx < len) {\n          let next = string.charCodeAt(idx);\n          if (0xdc00 <= next && next <= 0xdfff) {\n            idx++;\n            code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;\n          }\n        }\n\n        // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.\n        nextState = ((0xfe00 <= code && code <= 0xfe0f) || (0xe0100 <= code && code <= 0xe01ef)) ? 1 : 0;\n      } else {\n        idx++;\n      }\n\n      if (state === 0 && nextState === 1) {\n        // Variation selector following normal codepoint.\n        glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));\n      } else if (state === 0 && nextState === 0) {\n        // Normal codepoint following normal codepoint.\n        glyphs.push(this.glyphForCodePoint(last));\n      }\n\n      last = code;\n      state = nextState;\n    }\n\n    return glyphs;\n  }\n\n  @cache\n  get _layoutEngine() {\n    return new LayoutEngine(this);\n  }\n\n  /**\n   * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.\n   *\n   * @param {string} string\n   * @param {string[]} [userFeatures]\n   * @param {string} [script]\n   * @param {string} [language]\n   * @param {string} [direction]\n   * @return {GlyphRun}\n   */\n  layout(string, userFeatures, script, language, direction) {\n    return this._layoutEngine.layout(string, userFeatures, script, language, direction);\n  }\n\n  /**\n   * Returns an array of strings that map to the given glyph id.\n   * @param {number} gid - glyph id\n   */\n  stringsForGlyph(gid) {\n    return this._layoutEngine.stringsForGlyph(gid);\n  }\n\n  /**\n   * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)\n   * (or mapped AAT tags) supported by the font.\n   * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.\n   * If this is an AAT font, the OpenType feature tags are mapped to AAT features.\n   *\n   * @type {string[]}\n   */\n  get availableFeatures() {\n    return this._layoutEngine.getAvailableFeatures();\n  }\n\n  getAvailableFeatures(script, language) {\n    return this._layoutEngine.getAvailableFeatures(script, language);\n  }\n\n  _getBaseGlyph(glyph, characters = []) {\n    if (!this._glyphs[glyph]) {\n      if (this.directory.tables.glyf) {\n        this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);\n\n      } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {\n        this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);\n      }\n    }\n\n    return this._glyphs[glyph] || null;\n  }\n\n  /**\n   * Returns a glyph object for the given glyph id.\n   * You can pass the array of code points this glyph represents for\n   * your use later, and it will be stored in the glyph object.\n   *\n   * @param {number} glyph\n   * @param {number[]} characters\n   * @return {Glyph}\n   */\n  getGlyph(glyph, characters = []) {\n    if (!this._glyphs[glyph]) {\n      if (this.directory.tables.sbix) {\n        this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);\n\n      } else if ((this.directory.tables.COLR) && (this.directory.tables.CPAL)) {\n        this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);\n\n      } else {\n        this._getBaseGlyph(glyph, characters);\n      }\n    }\n\n    return this._glyphs[glyph] || null;\n  }\n\n  /**\n   * Returns a Subset for this font.\n   * @return {Subset}\n   */\n  createSubset() {\n    if (this.directory.tables['CFF ']) {\n      return new CFFSubset(this);\n    }\n\n    return new TTFSubset(this);\n  }\n\n  /**\n   * Returns an object describing the available variation axes\n   * that this font supports. Keys are setting tags, and values\n   * contain the axis name, range, and default value.\n   *\n   * @type {object}\n   */\n  @cache\n  get variationAxes() {\n    let res = {};\n    if (!this.fvar) {\n      return res;\n    }\n\n    for (let axis of this.fvar.axis) {\n      res[axis.axisTag.trim()] = {\n        name: axis.name.en,\n        min: axis.minValue,\n        default: axis.defaultValue,\n        max: axis.maxValue\n      };\n    }\n\n    return res;\n  }\n\n  /**\n   * Returns an object describing the named variation instances\n   * that the font designer has specified. Keys are variation names\n   * and values are the variation settings for this instance.\n   *\n   * @type {object}\n   */\n  @cache\n  get namedVariations() {\n    let res = {};\n    if (!this.fvar) {\n      return res;\n    }\n\n    for (let instance of this.fvar.instance) {\n      let settings = {};\n      for (let i = 0; i < this.fvar.axis.length; i++) {\n        let axis = this.fvar.axis[i];\n        settings[axis.axisTag.trim()] = instance.coord[i];\n      }\n\n      res[instance.name.en] = settings;\n    }\n\n    return res;\n  }\n\n  /**\n   * Returns a new font with the given variation settings applied.\n   * Settings can either be an instance name, or an object containing\n   * variation tags as specified by the `variationAxes` property.\n   *\n   * @param {object} settings\n   * @return {TTFFont}\n   */\n  getVariation(settings) {\n    if (!(this.directory.tables.fvar && ((this.directory.tables.gvar && this.directory.tables.glyf) || this.directory.tables.CFF2))) {\n      throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');\n    }\n\n    if (typeof settings === 'string') {\n      settings = this.namedVariations[settings];\n    }\n\n    if (typeof settings !== 'object') {\n      throw new Error('Variation settings must be either a variation name or settings object.');\n    }\n\n    // normalize the coordinates\n    let coords = this.fvar.axis.map((axis, i) => {\n      let axisTag = axis.axisTag.trim();\n      if (axisTag in settings) {\n        return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));\n      } else {\n        return axis.defaultValue;\n      }\n    });\n\n    let stream = new r.DecodeStream(this.stream.buffer);\n    stream.pos = this._directoryPos;\n\n    let font = new TTFFont(stream, coords);\n    font._tables = this._tables;\n\n    return font;\n  }\n\n  @cache\n  get _variationProcessor() {\n    if (!this.fvar) {\n      return null;\n    }\n\n    let variationCoords = this.variationCoords;\n\n    // Ignore if no variation coords and not CFF2\n    if (!variationCoords && !this.CFF2) {\n      return null;\n    }\n\n    if (!variationCoords) {\n      variationCoords = this.fvar.axis.map(axis => axis.defaultValue);\n    }\n\n    return new GlyphVariationProcessor(this, variationCoords);\n  }\n\n  // Standardized format plugin API\n  getFont(name) {\n    return this.getVariation(name);\n  }\n}\n","/**\n * This decorator caches the results of a getter or method such that\n * the results are lazily computed once, and then cached.\n * @private\n */\nexport function cache(target, key, descriptor) {\n  if (descriptor.get) {\n    let get = descriptor.get;\n    descriptor.get = function() {\n      let value = get.call(this);\n      Object.defineProperty(this, key, { value });\n      return value;\n    };\n  } else if (typeof descriptor.value === 'function') {\n    let fn = descriptor.value;\n\n    return {\n      get() {\n        let cache = new Map;\n        function memoized(...args) {\n          let key = args.length > 0 ? args[0] : 'value';\n          if (cache.has(key)) {\n            return cache.get(key);\n          }\n\n          let result = fn.apply(this, args);\n          cache.set(key, result);\n          return result;\n        };\n\n        Object.defineProperty(this, key, {value: memoized});\n        return memoized;\n      }\n    };\n  }\n}\n","import * as r from 'restructure';\nimport Tables from './';\n\nlet TableEntry = new r.Struct({\n  tag:        new r.String(4),\n  checkSum:   r.uint32,\n  offset:     new r.Pointer(r.uint32, 'void', { type: 'global' }),\n  length:     r.uint32\n});\n\nlet Directory = new r.Struct({\n  tag:            new r.String(4),\n  numTables:      r.uint16,\n  searchRange:    r.uint16,\n  entrySelector:  r.uint16,\n  rangeShift:     r.uint16,\n  tables:         new r.Array(TableEntry, 'numTables')\n});\n\nDirectory.process = function() {\n  let tables = {};\n  for (let table of this.tables) {\n    tables[table.tag] = table;\n  }\n\n  this.tables = tables;\n};\n\nDirectory.preEncode = function() {\n  if (!Array.isArray(this.tables)) {\n    let tables = [];\n    for (let tag in this.tables) {\n      let table = this.tables[tag];\n      if (table) {\n        tables.push({\n          tag: tag,\n          checkSum: 0,\n          offset: new r.VoidPointer(Tables[tag], table),\n          length: Tables[tag].size(table)\n        });\n      }\n    }\n    \n    this.tables = tables;\n  }\n\n  this.tag = 'true';\n  this.numTables = this.tables.length;\n\n  let maxExponentFor2 = Math.floor((Math.log(this.numTables) / Math.LN2));\n  let maxPowerOf2 = Math.pow(2, maxExponentFor2);\n\n  this.searchRange =  maxPowerOf2 * 16;\n  this.entrySelector = Math.log(maxPowerOf2) / Math.LN2;\n  this.rangeShift = this.numTables * 16 - this.searchRange;\n};\n\nexport default Directory;\n","let tables = {};\nexport default tables;\n\n// Required Tables\nimport cmap from './cmap';\nimport head from './head';\nimport hhea from './hhea';\nimport hmtx from './hmtx';\nimport maxp from './maxp';\nimport name from './name';\nimport OS2 from './OS2';\nimport post from './post';\n\ntables.cmap = cmap;\ntables.head = head;\ntables.hhea = hhea;\ntables.hmtx = hmtx;\ntables.maxp = maxp;\ntables.name = name;\ntables['OS/2'] = OS2;\ntables.post = post;\n\n\n// TrueType Outlines\nimport cvt from './cvt';\nimport fpgm from './fpgm';\nimport loca from './loca';\nimport prep from './prep';\nimport glyf from './glyf';\n\ntables.fpgm = fpgm;\ntables.loca = loca;\ntables.prep = prep;\ntables['cvt '] = cvt;\ntables.glyf = glyf;\n\n\n// PostScript Outlines\nimport CFFFont from '../cff/CFFFont';\nimport VORG from './VORG';\n\ntables['CFF '] = CFFFont;\ntables['CFF2'] = CFFFont;\ntables.VORG = VORG;\n\n\n// Bitmap Glyphs\nimport EBLC from './EBLC';\nimport sbix from './sbix';\nimport COLR from './COLR';\nimport CPAL from './CPAL';\n\ntables.EBLC = EBLC;\ntables.CBLC = tables.EBLC;\ntables.sbix = sbix;\ntables.COLR = COLR;\ntables.CPAL = CPAL;\n\n\n// Advanced OpenType Tables\nimport BASE from './BASE';\nimport GDEF from './GDEF';\nimport GPOS from './GPOS';\nimport GSUB from './GSUB';\nimport JSTF from './JSTF';\n\ntables.BASE = BASE;\ntables.GDEF = GDEF;\ntables.GPOS = GPOS;\ntables.GSUB = GSUB;\ntables.JSTF = JSTF;\n\n// OpenType variations tables\nimport HVAR from './HVAR';\n\ntables.HVAR = HVAR;\n\n// Other OpenType Tables\nimport DSIG from './DSIG';\nimport gasp from './gasp';\nimport hdmx from './hdmx';\nimport kern from './kern';\nimport LTSH from './LTSH';\nimport PCLT from './PCLT';\nimport VDMX from './VDMX';\nimport vhea from './vhea';\nimport vmtx from './vmtx';\n\ntables.DSIG = DSIG;\ntables.gasp = gasp;\ntables.hdmx = hdmx;\ntables.kern = kern;\ntables.LTSH = LTSH;\ntables.PCLT = PCLT;\ntables.VDMX = VDMX;\ntables.vhea = vhea;\ntables.vmtx = vmtx;\n\n\n// Apple Advanced Typography Tables\nimport avar from './avar';\nimport bsln from './bsln';\nimport feat from './feat';\nimport fvar from './fvar';\nimport gvar from './gvar';\nimport just from './just';\nimport morx from './morx';\nimport opbd from './opbd';\n\ntables.avar = avar;\ntables.bsln = bsln;\ntables.feat = feat;\ntables.fvar = fvar;\ntables.gvar = gvar;\ntables.just = just;\ntables.morx = morx;\ntables.opbd = opbd;\n","import * as r from 'restructure';\n\nlet SubHeader = new r.Struct({\n  firstCode:      r.uint16,\n  entryCount:     r.uint16,\n  idDelta:        r.int16,\n  idRangeOffset:  r.uint16\n});\n\nlet CmapGroup = new r.Struct({\n  startCharCode:  r.uint32,\n  endCharCode:    r.uint32,\n  glyphID:        r.uint32\n});\n\nlet UnicodeValueRange = new r.Struct({\n  startUnicodeValue:  r.uint24,\n  additionalCount:    r.uint8\n});\n\nlet UVSMapping = new r.Struct({\n  unicodeValue: r.uint24,\n  glyphID:      r.uint16\n});\n\nlet DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);\nlet NonDefaultUVS = new r.Array(UVSMapping, r.uint32);\n\nlet VarSelectorRecord = new r.Struct({\n  varSelector:    r.uint24,\n  defaultUVS:     new r.Pointer(r.uint32, DefaultUVS, {type: 'parent'}),\n  nonDefaultUVS:  new r.Pointer(r.uint32, NonDefaultUVS, {type: 'parent'})\n});\n\nlet CmapSubtable = new r.VersionedStruct(r.uint16, {\n  0: { // Byte encoding\n    length:     r.uint16,   // Total table length in bytes (set to 262 for format 0)\n    language:   r.uint16,   // Language code for this encoding subtable, or zero if language-independent\n    codeMap:    new r.LazyArray(r.uint8, 256)\n  },\n\n  2: { // High-byte mapping (CJK)\n    length:           r.uint16,\n    language:         r.uint16,\n    subHeaderKeys:    new r.Array(r.uint16, 256),\n    subHeaderCount:   t => Math.max.apply(Math, t.subHeaderKeys),\n    subHeaders:       new r.LazyArray(SubHeader, 'subHeaderCount'),\n    glyphIndexArray:  new r.LazyArray(r.uint16, 'subHeaderCount')\n  },\n\n  4: { // Segment mapping to delta values\n    length:           r.uint16,              // Total table length in bytes\n    language:         r.uint16,              // Language code\n    segCountX2:       r.uint16,\n    segCount:         t => t.segCountX2 >> 1,\n    searchRange:      r.uint16,\n    entrySelector:    r.uint16,\n    rangeShift:       r.uint16,\n    endCode:          new r.LazyArray(r.uint16, 'segCount'),\n    reservedPad:      new r.Reserved(r.uint16),       // This value should be zero\n    startCode:        new r.LazyArray(r.uint16, 'segCount'),\n    idDelta:          new r.LazyArray(r.int16, 'segCount'),\n    idRangeOffset:    new r.LazyArray(r.uint16, 'segCount'),\n    glyphIndexArray:  new r.LazyArray(r.uint16, t => (t.length - t._currentOffset) / 2)\n  },\n\n  6: { // Trimmed table\n    length:         r.uint16,\n    language:       r.uint16,\n    firstCode:      r.uint16,\n    entryCount:     r.uint16,\n    glyphIndices:   new r.LazyArray(r.uint16, 'entryCount')\n  },\n\n  8: { // mixed 16-bit and 32-bit coverage\n    reserved: new r.Reserved(r.uint16),\n    length:   r.uint32,\n    language: r.uint16,\n    is32:     new r.LazyArray(r.uint8, 8192),\n    nGroups:  r.uint32,\n    groups:   new r.LazyArray(CmapGroup, 'nGroups')\n  },\n\n  10: { // Trimmed Array\n    reserved:       new r.Reserved(r.uint16),\n    length:         r.uint32,\n    language:       r.uint32,\n    firstCode:      r.uint32,\n    entryCount:     r.uint32,\n    glyphIndices:   new r.LazyArray(r.uint16, 'numChars')\n  },\n\n  12: { // Segmented coverage\n    reserved: new r.Reserved(r.uint16),\n    length:   r.uint32,\n    language: r.uint32,\n    nGroups:  r.uint32,\n    groups:   new r.LazyArray(CmapGroup, 'nGroups')\n  },\n\n  13: { // Many-to-one range mappings (same as 12 except for group.startGlyphID)\n    reserved: new r.Reserved(r.uint16),\n    length:   r.uint32,\n    language: r.uint32,\n    nGroups:  r.uint32,\n    groups:   new r.LazyArray(CmapGroup, 'nGroups')\n  },\n\n  14: { // Unicode Variation Sequences\n    length:       r.uint32,\n    numRecords:   r.uint32,\n    varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')\n  }\n});\n\nlet CmapEntry = new r.Struct({\n  platformID:  r.uint16,  // Platform identifier\n  encodingID:  r.uint16,  // Platform-specific encoding identifier\n  table:       new r.Pointer(r.uint32, CmapSubtable, {type: 'parent', lazy: true})\n});\n\n// character to glyph mapping\nexport default new r.Struct({\n  version:      r.uint16,\n  numSubtables: r.uint16,\n  tables:       new r.Array(CmapEntry, 'numSubtables')\n});\n","import * as r from 'restructure';\n\n// font header\nexport default new r.Struct({\n  version:            r.int32,                   // 0x00010000 (version 1.0)\n  revision:           r.int32,                   // set by font manufacturer\n  checkSumAdjustment: r.uint32,\n  magicNumber:        r.uint32,                  // set to 0x5F0F3CF5\n  flags:              r.uint16,\n  unitsPerEm:         r.uint16,                  // range from 64 to 16384\n  created:            new r.Array(r.int32, 2),\n  modified:           new r.Array(r.int32, 2),\n  xMin:               r.int16,                   // for all glyph bounding boxes\n  yMin:               r.int16,                   // for all glyph bounding boxes\n  xMax:               r.int16,                   // for all glyph bounding boxes\n  yMax:               r.int16,                   // for all glyph bounding boxes\n  macStyle:           new r.Bitfield(r.uint16, [\n    'bold', 'italic', 'underline', 'outline',\n    'shadow', 'condensed', 'extended'\n  ]),\n  lowestRecPPEM:      r.uint16,                  // smallest readable size in pixels\n  fontDirectionHint:  r.int16,\n  indexToLocFormat:   r.int16,                   // 0 for short offsets, 1 for long\n  glyphDataFormat:    r.int16                    // 0 for current format\n});\n","import * as r from 'restructure';\n\n// horizontal header\nexport default new r.Struct({\n  version:              r.int32,\n  ascent:               r.int16,   // Distance from baseline of highest ascender\n  descent:              r.int16,   // Distance from baseline of lowest descender\n  lineGap:              r.int16,   // Typographic line gap\n  advanceWidthMax:      r.uint16,  // Maximum advance width value in 'hmtx' table\n  minLeftSideBearing:   r.int16,   // Maximum advance width value in 'hmtx' table\n  minRightSideBearing:  r.int16,   // Minimum right sidebearing value\n  xMaxExtent:           r.int16,\n  caretSlopeRise:       r.int16,   // Used to calculate the slope of the cursor (rise/run); 1 for vertical\n  caretSlopeRun:        r.int16,   // 0 for vertical\n  caretOffset:          r.int16,   // Set to 0 for non-slanted fonts\n  reserved:             new r.Reserved(r.int16, 4),\n  metricDataFormat:     r.int16,   // 0 for current format\n  numberOfMetrics:      r.uint16   // Number of advance widths in 'hmtx' table\n});\n","import * as r from 'restructure';\n\nlet HmtxEntry = new r.Struct({\n  advance: r.uint16,\n  bearing: r.int16\n});\n\nexport default new r.Struct({\n  metrics:    new r.LazyArray(HmtxEntry, t => t.parent.hhea.numberOfMetrics),\n  bearings:   new r.LazyArray(r.int16, t => t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics)\n});\n","import * as r from 'restructure';\n\n// maxiumum profile\nexport default new r.Struct({\n  version:                r.int32,\n  numGlyphs:              r.uint16,  // The number of glyphs in the font\n  maxPoints:              r.uint16,  // Maximum points in a non-composite glyph\n  maxContours:            r.uint16,  // Maximum contours in a non-composite glyph\n  maxComponentPoints:     r.uint16,  // Maximum points in a composite glyph\n  maxComponentContours:   r.uint16,  // Maximum contours in a composite glyph\n  maxZones:               r.uint16,  // 1 if instructions do not use the twilight zone, 2 otherwise\n  maxTwilightPoints:      r.uint16,  // Maximum points used in Z0\n  maxStorage:             r.uint16,  // Number of Storage Area locations\n  maxFunctionDefs:        r.uint16,  // Number of FDEFs\n  maxInstructionDefs:     r.uint16,  // Number of IDEFs\n  maxStackElements:       r.uint16,  // Maximum stack depth\n  maxSizeOfInstructions:  r.uint16,  // Maximum byte count for glyph instructions\n  maxComponentElements:   r.uint16,  // Maximum number of components referenced at “top level” for any composite glyph\n  maxComponentDepth:      r.uint16   // Maximum levels of recursion; 1 for simple components\n});\n","import * as r from 'restructure';\nimport {getEncoding, LANGUAGES} from '../encodings';\n\nlet NameRecord = new r.Struct({\n  platformID: r.uint16,\n  encodingID: r.uint16,\n  languageID: r.uint16,\n  nameID:     r.uint16,\n  length:     r.uint16,\n  string:     new r.Pointer(r.uint16,\n    new r.String('length', t => getEncoding(t.platformID, t.encodingID, t.languageID)),\n    { type: 'parent', relativeTo: ctx => ctx.parent.stringOffset, allowNull: false }\n  )\n});\n\nlet LangTagRecord = new r.Struct({\n  length:  r.uint16,\n  tag:     new r.Pointer(r.uint16, new r.String('length', 'utf16be'), {type: 'parent', relativeTo: ctx => ctx.stringOffset})\n});\n\nvar NameTable = new r.VersionedStruct(r.uint16, {\n  0: {\n    count:          r.uint16,\n    stringOffset:   r.uint16,\n    records:        new r.Array(NameRecord, 'count')\n  },\n  1: {\n    count:          r.uint16,\n    stringOffset:   r.uint16,\n    records:        new r.Array(NameRecord, 'count'),\n    langTagCount:   r.uint16,\n    langTags:       new r.Array(LangTagRecord, 'langTagCount')\n  }\n});\n\nexport default NameTable;\n\nconst NAMES = [\n  'copyright',\n  'fontFamily',\n  'fontSubfamily',\n  'uniqueSubfamily',\n  'fullName',\n  'version',\n  'postscriptName', // Note: A font may have only one PostScript name and that name must be ASCII.\n  'trademark',\n  'manufacturer',\n  'designer',\n  'description',\n  'vendorURL',\n  'designerURL',\n  'license',\n  'licenseURL',\n  null, // reserved\n  'preferredFamily',\n  'preferredSubfamily',\n  'compatibleFull',\n  'sampleText',\n  'postscriptCIDFontName',\n  'wwsFamilyName',\n  'wwsSubfamilyName'\n];\n\nNameTable.process = function(stream) {\n  var records = {};\n  for (let record of this.records) {\n    // find out what language this is for\n    let language = LANGUAGES[record.platformID][record.languageID];\n\n    if (language == null && this.langTags != null && record.languageID >= 0x8000) {\n      language = this.langTags[record.languageID - 0x8000].tag;\n    }\n\n    if (language == null) {\n      language = record.platformID + '-' + record.languageID;\n    }\n\n    // if the nameID is >= 256, it is a font feature record (AAT)\n    let key = record.nameID >= 256 ? 'fontFeatures' : (NAMES[record.nameID] || record.nameID);\n    if (records[key] == null) {\n      records[key] = {};\n    }\n\n    let obj = records[key];\n    if (record.nameID >= 256) {\n      obj = obj[record.nameID] || (obj[record.nameID] = {});\n    }\n\n    if (typeof record.string === 'string' || typeof obj[language] !== 'string') {\n      obj[language] = record.string;\n    }\n  }\n\n  this.records = records;\n};\n\nNameTable.preEncode = function() {\n  if (Array.isArray(this.records)) return;\n  this.version = 0;\n\n  let records = [];\n  for (let key in this.records) {\n    let val = this.records[key];\n    if (key === 'fontFeatures') continue;\n\n    records.push({\n      platformID: 3,\n      encodingID: 1,\n      languageID: 0x409,\n      nameID: NAMES.indexOf(key),\n      length: val.en.length * 2,\n      string: val.en\n    });\n\n    if (key === 'postscriptName') {\n      records.push({\n        platformID: 1,\n        encodingID: 0,\n        languageID: 0,\n        nameID: NAMES.indexOf(key),\n        length: val.en.length,\n        string: val.en\n      });\n    }\n  }\n\n  this.records = records;\n  this.count = records.length;\n  this.stringOffset = NameTable.size(this, null, false);\n};\n","/**\n * Gets an encoding name from platform, encoding, and language ids.\n * Returned encoding names can be used in iconv-lite to decode text.\n */\nexport function getEncoding(platformID, encodingID, languageID = 0) {\n  if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {\n    return MAC_LANGUAGE_ENCODINGS[languageID];\n  }\n  \n  return ENCODINGS[platformID][encodingID];\n}\n\nconst SINGLE_BYTE_ENCODINGS = new Set(['x-mac-roman', 'x-mac-cyrillic', 'iso-8859-6', 'iso-8859-8']);\nconst MAC_ENCODINGS = {\n  'x-mac-croatian': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ',\n  'x-mac-gaelic': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ',\n  'x-mac-greek': 'Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ\\u00AD',\n  'x-mac-icelandic': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n  'x-mac-inuit': 'ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł',\n  'x-mac-ce': 'ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ',\n  'x-mac-romanian': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n  'x-mac-turkish': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ'\n};\n\nconst encodingCache = new Map();\n\nexport function getEncodingMapping(encoding) {\n  let cached = encodingCache.get(encoding);\n  if (cached) {\n    return cached;\n  }\n\n  // These encodings aren't supported by TextDecoder.\n  let mapping = MAC_ENCODINGS[encoding];\n  if (mapping) {\n    let res = new Map();\n    for (let i = 0; i < mapping.length; i++) {\n      res.set(mapping.charCodeAt(i), 0x80 + i);\n    }\n\n    encodingCache.set(encoding, res);\n    return res;\n  }\n\n  // Only single byte encodings can be mapped 1:1.\n  if (SINGLE_BYTE_ENCODINGS.has(encoding)) {\n    // TextEncoder only supports utf8, whereas TextDecoder supports legacy encodings.\n    // Use this to create a mapping of code points.\n    let decoder = new TextDecoder(encoding);\n    let mapping = new Uint8Array(0x80);\n    for (let i = 0; i < 0x80; i++) {\n      mapping[i] = 0x80 + i;\n    }\n\n    let res = new Map();\n    let s = decoder.decode(mapping);\n    for (let i = 0; i < 0x80; i++) {\n      res.set(s.charCodeAt(i), 0x80 + i);\n    }\n\n    encodingCache.set(encoding, res);\n    return res;\n  }\n}\n\n// Map of platform ids to encoding ids.\nexport const ENCODINGS = [\n  // unicode\n  ['utf-16be', 'utf-16be', 'utf-16be', 'utf-16be', 'utf-16be', 'utf-16be', 'utf-16be'],\n  \n  // macintosh\n  // Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/\n  // 0\tRoman                 17\tMalayalam\n  // 1\tJapanese\t            18\tSinhalese\n  // 2\tTraditional Chinese\t  19\tBurmese\n  // 3\tKorean\t              20\tKhmer\n  // 4\tArabic\t              21\tThai\n  // 5\tHebrew\t              22\tLaotian\n  // 6\tGreek\t                23\tGeorgian\n  // 7\tRussian\t              24\tArmenian\n  // 8\tRSymbol\t              25\tSimplified Chinese\n  // 9\tDevanagari\t          26\tTibetan\n  // 10\tGurmukhi\t            27\tMongolian\n  // 11\tGujarati\t            28\tGeez\n  // 12\tOriya\t                29\tSlavic\n  // 13\tBengali\t              30\tVietnamese\n  // 14\tTamil\t                31\tSindhi\n  // 15\tTelugu\t              32\t(Uninterpreted)\n  // 16\tKannada\n  ['x-mac-roman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8',\n   'x-mac-greek', 'x-mac-cyrillic', 'x-mac-symbol', 'x-mac-devanagari', 'x-mac-gurmukhi', 'x-mac-gujarati',\n   'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese',\n   'Burmese', 'Khmer', 'iso-8859-11', 'Laotian', 'Georgian', 'Armenian', 'gbk', \n   'Tibetan', 'Mongolian', 'Geez', 'x-mac-ce', 'Vietnamese', 'Sindhi'],\n  \n  // ISO (deprecated)\n  ['ascii', null, 'iso-8859-1'],\n  \n  // windows\n  // Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx\n  ['symbol', 'utf-16be', 'shift-jis', 'gb18030', 'big5', 'euc-kr', 'johab', null, null, null, 'utf-16be']\n];\n\n// Overrides for Mac scripts by language id.\n// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt\nexport const MAC_LANGUAGE_ENCODINGS = {\n  15: 'x-mac-icelandic',\n  17: 'x-mac-turkish',\n  18: 'x-mac-croatian',\n  24: 'x-mac-ce',\n  25: 'x-mac-ce',\n  26: 'x-mac-ce',\n  27: 'x-mac-ce',\n  28: 'x-mac-ce',\n  30: 'x-mac-icelandic',\n  37: 'x-mac-romanian',\n  38: 'x-mac-ce',\n  39: 'x-mac-ce',\n  40: 'x-mac-ce',\n  143: 'x-mac-inuit',\n  146: 'x-mac-gaelic'\n};\n\n// Map of platform ids to BCP-47 language codes.\nexport const LANGUAGES = [\n  // unicode\n  [],\n  \n  { // macintosh\n    0: 'en',        30: 'fo',       60: 'ks',       90: 'rw',\n    1: 'fr',        31: 'fa',       61: 'ku',       91: 'rn',\n    2: 'de',        32: 'ru',       62: 'sd',       92: 'ny',\n    3: 'it',        33: 'zh',       63: 'bo',       93: 'mg',\n    4: 'nl',        34: 'nl-BE',    64: 'ne',       94: 'eo',\n    5: 'sv',        35: 'ga',       65: 'sa',       128: 'cy',\n    6: 'es',        36: 'sq',       66: 'mr',       129: 'eu',\n    7: 'da',        37: 'ro',       67: 'bn',       130: 'ca',\n    8: 'pt',        38: 'cz',       68: 'as',       131: 'la',\n    9: 'no',        39: 'sk',       69: 'gu',       132: 'qu',\n    10: 'he',       40: 'si',       70: 'pa',       133: 'gn',\n    11: 'ja',       41: 'yi',       71: 'or',       134: 'ay',\n    12: 'ar',       42: 'sr',       72: 'ml',       135: 'tt',\n    13: 'fi',       43: 'mk',       73: 'kn',       136: 'ug',\n    14: 'el',       44: 'bg',       74: 'ta',       137: 'dz',\n    15: 'is',       45: 'uk',       75: 'te',       138: 'jv',\n    16: 'mt',       46: 'be',       76: 'si',       139: 'su',\n    17: 'tr',       47: 'uz',       77: 'my',       140: 'gl',\n    18: 'hr',       48: 'kk',       78: 'km',       141: 'af',\n    19: 'zh-Hant',  49: 'az-Cyrl',  79: 'lo',       142: 'br',\n    20: 'ur',       50: 'az-Arab',  80: 'vi',       143: 'iu',\n    21: 'hi',       51: 'hy',       81: 'id',       144: 'gd',\n    22: 'th',       52: 'ka',       82: 'tl',       145: 'gv',\n    23: 'ko',       53: 'mo',       83: 'ms',       146: 'ga',\n    24: 'lt',       54: 'ky',       84: 'ms-Arab',  147: 'to',\n    25: 'pl',       55: 'tg',       85: 'am',       148: 'el-polyton',\n    26: 'hu',       56: 'tk',       86: 'ti',       149: 'kl',\n    27: 'es',       57: 'mn-CN',    87: 'om',       150: 'az',\n    28: 'lv',       58: 'mn',       88: 'so',       151: 'nn',\n    29: 'se',       59: 'ps',       89: 'sw',\n  },\n  \n  // ISO (deprecated)\n  [],\n  \n  { // windows                                        \n    0x0436: 'af',       0x4009: 'en-IN',    0x0487: 'rw',          0x0432: 'tn',       \n    0x041C: 'sq',       0x1809: 'en-IE',    0x0441: 'sw',          0x045B: 'si',          \n    0x0484: 'gsw',      0x2009: 'en-JM',    0x0457: 'kok',         0x041B: 'sk',          \n    0x045E: 'am',       0x4409: 'en-MY',    0x0412: 'ko',          0x0424: 'sl',          \n    0x1401: 'ar-DZ',    0x1409: 'en-NZ',    0x0440: 'ky',          0x2C0A: 'es-AR',       \n    0x3C01: 'ar-BH',    0x3409: 'en-PH',    0x0454: 'lo',          0x400A: 'es-BO',       \n    0x0C01: 'ar',       0x4809: 'en-SG',    0x0426: 'lv',          0x340A: 'es-CL',       \n    0x0801: 'ar-IQ',    0x1C09: 'en-ZA',    0x0427: 'lt',          0x240A: 'es-CO',       \n    0x2C01: 'ar-JO',    0x2C09: 'en-TT',    0x082E: 'dsb',         0x140A: 'es-CR',       \n    0x3401: 'ar-KW',    0x0809: 'en-GB',    0x046E: 'lb',          0x1C0A: 'es-DO',       \n    0x3001: 'ar-LB',    0x0409: 'en',       0x042F: 'mk',          0x300A: 'es-EC',       \n    0x1001: 'ar-LY',    0x3009: 'en-ZW',    0x083E: 'ms-BN',       0x440A: 'es-SV',       \n    0x1801: 'ary',      0x0425: 'et',       0x043E: 'ms',          0x100A: 'es-GT',       \n    0x2001: 'ar-OM',    0x0438: 'fo',       0x044C: 'ml',          0x480A: 'es-HN',       \n    0x4001: 'ar-QA',    0x0464: 'fil',      0x043A: 'mt',          0x080A: 'es-MX',       \n    0x0401: 'ar-SA',    0x040B: 'fi',       0x0481: 'mi',          0x4C0A: 'es-NI',       \n    0x2801: 'ar-SY',    0x080C: 'fr-BE',    0x047A: 'arn',         0x180A: 'es-PA',       \n    0x1C01: 'aeb',      0x0C0C: 'fr-CA',    0x044E: 'mr',          0x3C0A: 'es-PY',       \n    0x3801: 'ar-AE',    0x040C: 'fr',       0x047C: 'moh',         0x280A: 'es-PE',       \n    0x2401: 'ar-YE',    0x140C: 'fr-LU',    0x0450: 'mn',          0x500A: 'es-PR',       \n    0x042B: 'hy',       0x180C: 'fr-MC',    0x0850: 'mn-CN',       0x0C0A: 'es',          \n    0x044D: 'as',       0x100C: 'fr-CH',    0x0461: 'ne',          0x040A: 'es',          \n    0x082C: 'az-Cyrl',  0x0462: 'fy',       0x0414: 'nb',          0x540A: 'es-US',       \n    0x042C: 'az',       0x0456: 'gl',       0x0814: 'nn',          0x380A: 'es-UY',     \n    0x046D: 'ba',       0x0437: 'ka',       0x0482: 'oc',          0x200A: 'es-VE',       \n    0x042D: 'eu',       0x0C07: 'de-AT',    0x0448: 'or',          0x081D: 'sv-FI',       \n    0x0423: 'be',       0x0407: 'de',       0x0463: 'ps',          0x041D: 'sv',          \n    0x0845: 'bn',       0x1407: 'de-LI',    0x0415: 'pl',          0x045A: 'syr',         \n    0x0445: 'bn-IN',    0x1007: 'de-LU',    0x0416: 'pt',          0x0428: 'tg',          \n    0x201A: 'bs-Cyrl',  0x0807: 'de-CH',    0x0816: 'pt-PT',       0x085F: 'tzm',         \n    0x141A: 'bs',       0x0408: 'el',       0x0446: 'pa',          0x0449: 'ta',          \n    0x047E: 'br',       0x046F: 'kl',       0x046B: 'qu-BO',       0x0444: 'tt',          \n    0x0402: 'bg',       0x0447: 'gu',       0x086B: 'qu-EC',       0x044A: 'te',          \n    0x0403: 'ca',       0x0468: 'ha',       0x0C6B: 'qu',          0x041E: 'th',          \n    0x0C04: 'zh-HK',    0x040D: 'he',       0x0418: 'ro',          0x0451: 'bo',          \n    0x1404: 'zh-MO',    0x0439: 'hi',       0x0417: 'rm',          0x041F: 'tr',          \n    0x0804: 'zh',       0x040E: 'hu',       0x0419: 'ru',          0x0442: 'tk',          \n    0x1004: 'zh-SG',    0x040F: 'is',       0x243B: 'smn',         0x0480: 'ug',          \n    0x0404: 'zh-TW',    0x0470: 'ig',       0x103B: 'smj-NO',      0x0422: 'uk',          \n    0x0483: 'co',       0x0421: 'id',       0x143B: 'smj',         0x042E: 'hsb',         \n    0x041A: 'hr',       0x045D: 'iu',       0x0C3B: 'se-FI',       0x0420: 'ur',          \n    0x101A: 'hr-BA',    0x085D: 'iu-Latn',  0x043B: 'se',          0x0843: 'uz-Cyrl',     \n    0x0405: 'cs',       0x083C: 'ga',       0x083B: 'se-SE',       0x0443: 'uz',          \n    0x0406: 'da',       0x0434: 'xh',       0x203B: 'sms',         0x042A: 'vi',          \n    0x048C: 'prs',      0x0435: 'zu',       0x183B: 'sma-NO',      0x0452: 'cy',          \n    0x0465: 'dv',       0x0410: 'it',       0x1C3B: 'sms',         0x0488: 'wo',          \n    0x0813: 'nl-BE',    0x0810: 'it-CH',    0x044F: 'sa',          0x0485: 'sah',         \n    0x0413: 'nl',       0x0411: 'ja',       0x1C1A: 'sr-Cyrl-BA',  0x0478: 'ii',          \n    0x0C09: 'en-AU',    0x044B: 'kn',       0x0C1A: 'sr',          0x046A: 'yo',           \n    0x2809: 'en-BZ',    0x043F: 'kk',       0x181A: 'sr-Latn-BA',  \n    0x1009: 'en-CA',    0x0453: 'km',       0x081A: 'sr-Latn',     \n    0x2409: 'en-029',   0x0486: 'quc',      0x046C: 'nso',         \n  }\n];\n","import * as r from 'restructure';\n\nvar OS2 = new r.VersionedStruct(r.uint16, {\n  header: {\n    xAvgCharWidth:          r.int16,   // average weighted advance width of lower case letters and space\n    usWeightClass:          r.uint16,  // visual weight of stroke in glyphs\n    usWidthClass:           r.uint16,  // relative change from the normal aspect ratio (width to height ratio)\n    fsType:                 new r.Bitfield(r.uint16, [ // Indicates font embedding licensing rights\n      null, 'noEmbedding', 'viewOnly', 'editable', null,\n      null, null, null, 'noSubsetting', 'bitmapOnly'\n    ]),\n    ySubscriptXSize:        r.int16,   // recommended horizontal size in pixels for subscripts\n    ySubscriptYSize:        r.int16,   // recommended vertical size in pixels for subscripts\n    ySubscriptXOffset:      r.int16,   // recommended horizontal offset for subscripts\n    ySubscriptYOffset:      r.int16,   // recommended vertical offset form the baseline for subscripts\n    ySuperscriptXSize:      r.int16,   // recommended horizontal size in pixels for superscripts\n    ySuperscriptYSize:      r.int16,   // recommended vertical size in pixels for superscripts\n    ySuperscriptXOffset:    r.int16,   // recommended horizontal offset for superscripts\n    ySuperscriptYOffset:    r.int16,   // recommended vertical offset from the baseline for superscripts\n    yStrikeoutSize:         r.int16,   // width of the strikeout stroke\n    yStrikeoutPosition:     r.int16,   // position of the strikeout stroke relative to the baseline\n    sFamilyClass:           r.int16,   // classification of font-family design\n    panose:                 new r.Array(r.uint8, 10),   // describe the visual characteristics of a given typeface\n    ulCharRange:            new r.Array(r.uint32, 4),\n    vendorID:               new r.String(4),          // four character identifier for the font vendor\n    fsSelection:            new r.Bitfield(r.uint16, [  // bit field containing information about the font\n      'italic', 'underscore', 'negative', 'outlined', 'strikeout',\n      'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique'\n    ]),\n    usFirstCharIndex:       r.uint16,  // The minimum Unicode index in this font\n    usLastCharIndex:        r.uint16   // The maximum Unicode index in this font\n  },\n\n  // The Apple version of this table ends here, but the Microsoft one continues on...\n  0: {},\n\n  1: {\n    typoAscender:       r.int16,\n    typoDescender:      r.int16,\n    typoLineGap:        r.int16,\n    winAscent:          r.uint16,\n    winDescent:         r.uint16,\n    codePageRange:      new r.Array(r.uint32, 2)\n  },\n\n  2: {\n    // these should be common with version 1 somehow\n    typoAscender:       r.int16,\n    typoDescender:      r.int16,\n    typoLineGap:        r.int16,\n    winAscent:          r.uint16,\n    winDescent:         r.uint16,\n    codePageRange:      new r.Array(r.uint32, 2),\n\n    xHeight:            r.int16,\n    capHeight:          r.int16,\n    defaultChar:        r.uint16,\n    breakChar:          r.uint16,\n    maxContent:         r.uint16\n  },\n\n  5: {\n    typoAscender:       r.int16,\n    typoDescender:      r.int16,\n    typoLineGap:        r.int16,\n    winAscent:          r.uint16,\n    winDescent:         r.uint16,\n    codePageRange:      new r.Array(r.uint32, 2),\n\n    xHeight:            r.int16,\n    capHeight:          r.int16,\n    defaultChar:        r.uint16,\n    breakChar:          r.uint16,\n    maxContent:         r.uint16,\n\n    usLowerOpticalPointSize: r.uint16,\n    usUpperOpticalPointSize: r.uint16\n  }\n});\n\nlet versions = OS2.versions;\nversions[3] = versions[4] = versions[2];\n\nexport default OS2;\n","import * as r from 'restructure';\n\n// PostScript information\nexport default new r.VersionedStruct(r.fixed32, {\n  header: { // these fields exist at the top of all versions\n    italicAngle:        r.fixed32, // Italic angle in counter-clockwise degrees from the vertical.\n    underlinePosition:  r.int16,   // Suggested distance of the top of the underline from the baseline\n    underlineThickness: r.int16,   // Suggested values for the underline thickness\n    isFixedPitch:       r.uint32,  // Whether the font is monospaced\n    minMemType42:       r.uint32,  // Minimum memory usage when a TrueType font is downloaded as a Type 42 font\n    maxMemType42:       r.uint32,  // Maximum memory usage when a TrueType font is downloaded as a Type 42 font\n    minMemType1:        r.uint32,  // Minimum memory usage when a TrueType font is downloaded as a Type 1 font\n    maxMemType1:        r.uint32   // Maximum memory usage when a TrueType font is downloaded as a Type 1 font\n  },\n\n  1: {}, // version 1 has no additional fields\n\n  2: {\n    numberOfGlyphs: r.uint16,\n    glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),\n    names:          new r.Array(new r.String(r.uint8))\n  },\n\n  2.5: {\n    numberOfGlyphs: r.uint16,\n    offsets:        new r.Array(r.uint8, 'numberOfGlyphs')\n  },\n\n  3: {}, // version 3 has no additional fields\n\n  4: {\n    map: new r.Array(r.uint32, t => t.parent.maxp.numGlyphs)\n  }\n});\n","import * as r from 'restructure';\n\n// An array of predefined values accessible by instructions\nexport default new r.Struct({\n  controlValues: new r.Array(r.int16)\n});\n","import * as r from 'restructure';\n\n// A list of instructions that are executed once when a font is first used.\n// These instructions are known as the font program. The main use of this table\n// is for the definition of functions that are used in many different glyph programs.\nexport default new r.Struct({\n  instructions: new r.Array(r.uint8)\n});\n","import * as r from 'restructure';\n\nlet loca = new r.VersionedStruct('head.indexToLocFormat', {\n  0: {\n    offsets: new r.Array(r.uint16)\n  },\n  1: {\n    offsets: new r.Array(r.uint32)\n  }\n});\n\nloca.process = function() {\n  if (this.version === 0 && !this._processed) {\n    for (let i = 0; i < this.offsets.length; i++) {\n      this.offsets[i] <<= 1;\n    }\n    this._processed = true;\n  }\n};\n\nloca.preEncode = function() {\n  if (this.version === 0 && this._processed !== false) {\n    for (let i = 0; i < this.offsets.length; i++) {\n      this.offsets[i] >>>= 1;\n    }\n    this._processed = false;\n  }\n};\n\nexport default loca;\n","import * as r from 'restructure';\n\n// Set of instructions executed whenever the point size or font transformation change\nexport default new r.Struct({\n  controlValueProgram: new r.Array(r.uint8)\n});\n","import * as r from 'restructure';\n\n// only used for encoding\nexport default new r.Array(new r.Buffer);\n","import * as r from 'restructure';\nimport CFFIndex from './CFFIndex';\nimport CFFTop from './CFFTop';\nimport CFFPrivateDict from './CFFPrivateDict';\nimport standardStrings from './CFFStandardStrings';\n\nclass CFFFont {\n  constructor(stream) {\n    this.stream = stream;\n    this.decode();\n  }\n\n  static decode(stream) {\n    return new CFFFont(stream);\n  }\n\n  decode() {\n    let start = this.stream.pos;\n    let top = CFFTop.decode(this.stream);\n    for (let key in top) {\n      let val = top[key];\n      this[key] = val;\n    }\n\n    if (this.version < 2) {\n      if (this.topDictIndex.length !== 1) {\n        throw new Error(\"Only a single font is allowed in CFF\");\n      }\n\n      this.topDict = this.topDictIndex[0];\n    }\n\n    this.isCIDFont = this.topDict.ROS != null;\n    return this;\n  }\n\n  string(sid) {\n    if (this.version >= 2) {\n      return null;\n    }\n\n    if (sid < standardStrings.length) {\n      return standardStrings[sid];\n    }\n\n    return this.stringIndex[sid - standardStrings.length];\n  }\n\n  get postscriptName() {\n    if (this.version < 2) {\n      return this.nameIndex[0];\n    }\n\n    return null;\n  }\n\n  get fullName() {\n    return this.string(this.topDict.FullName);\n  }\n\n  get familyName() {\n    return this.string(this.topDict.FamilyName);\n  }\n\n  getCharString(glyph) {\n    this.stream.pos = this.topDict.CharStrings[glyph].offset;\n    return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);\n  }\n\n  getGlyphName(gid) {\n    // CFF2 glyph names are in the post table.\n    if (this.version >= 2) {\n      return null;\n    }\n\n    // CID-keyed fonts don't have glyph names\n    if (this.isCIDFont) {\n      return null;\n    }\n\n    let { charset } = this.topDict;\n    if (Array.isArray(charset)) {\n      return charset[gid];\n    }\n\n    if (gid === 0) {\n      return '.notdef';\n    }\n\n    gid -= 1;\n\n    switch (charset.version) {\n      case 0:\n        return this.string(charset.glyphs[gid]);\n\n      case 1:\n      case 2:\n        for (let i = 0; i < charset.ranges.length; i++) {\n          let range = charset.ranges[i];\n          if (range.offset <= gid && gid <= range.offset + range.nLeft) {\n            return this.string(range.first + (gid - range.offset));\n          }\n        }\n        break;\n    }\n\n    return null;\n  }\n\n  fdForGlyph(gid) {\n    if (!this.topDict.FDSelect) {\n      return null;\n    }\n\n    switch (this.topDict.FDSelect.version) {\n      case 0:\n        return this.topDict.FDSelect.fds[gid];\n\n      case 3:\n      case 4:\n        let { ranges } = this.topDict.FDSelect;\n        let low = 0;\n        let high = ranges.length - 1;\n\n        while (low <= high) {\n          let mid = (low + high) >> 1;\n\n          if (gid < ranges[mid].first) {\n            high = mid - 1;\n          } else if (mid < high && gid >= ranges[mid + 1].first) {\n            low = mid + 1;\n          } else {\n            return ranges[mid].fd;\n          }\n        }\n      default:\n        throw new Error(`Unknown FDSelect version: ${this.topDict.FDSelect.version}`);\n    }\n  }\n\n  privateDictForGlyph(gid) {\n    if (this.topDict.FDSelect) {\n      let fd = this.fdForGlyph(gid);\n      if (this.topDict.FDArray[fd]) {\n        return this.topDict.FDArray[fd].Private;\n      }\n\n      return null;\n    }\n\n    if (this.version < 2) {\n      return this.topDict.Private;\n    }\n\n    return this.topDict.FDArray[0].Private;\n  }\n}\n\nexport default CFFFont;\n","import * as r from 'restructure';\n\nexport default class CFFIndex {\n  constructor(type) {\n    this.type = type;\n  }\n\n  getCFFVersion(ctx) {\n    while (ctx && !ctx.hdrSize) {\n      ctx = ctx.parent;\n    }\n\n    return ctx ? ctx.version : -1;\n  }\n\n  decode(stream, parent) {\n    let version = this.getCFFVersion(parent);\n    let count = version >= 2\n      ? stream.readUInt32BE()\n      : stream.readUInt16BE();\n\n    if (count === 0) {\n      return [];\n    }\n\n    let offSize = stream.readUInt8();\n    let offsetType;\n    if (offSize === 1) {\n      offsetType = r.uint8;\n    } else if (offSize === 2) {\n      offsetType = r.uint16;\n    } else if (offSize === 3) {\n      offsetType = r.uint24;\n    } else if (offSize === 4) {\n      offsetType = r.uint32;\n    } else {\n      throw new Error(`Bad offset size in CFFIndex: ${offSize} ${stream.pos}`);\n    }\n\n    let ret = [];\n    let startPos = stream.pos + ((count + 1) * offSize) - 1;\n\n    let start = offsetType.decode(stream);\n    for (let i = 0; i < count; i++) {\n      let end = offsetType.decode(stream);\n\n      if (this.type != null) {\n        let pos = stream.pos;\n        stream.pos = startPos + start;\n\n        parent.length = end - start;\n        ret.push(this.type.decode(stream, parent));\n        stream.pos = pos;\n      } else {\n        ret.push({\n          offset: startPos + start,\n          length: end - start\n        });\n      }\n\n      start = end;\n    }\n\n    stream.pos = startPos + start;\n    return ret;\n  }\n\n  size(arr, parent) {\n    let size = 2;\n    if (arr.length === 0) {\n      return size;\n    }\n\n    let type = this.type || new r.Buffer;\n\n    // find maximum offset to detminine offset type\n    let offset = 1;\n    for (let i = 0; i < arr.length; i++) {\n      let item = arr[i];\n      offset += type.size(item, parent);\n    }\n\n    let offsetType;\n    if (offset <= 0xff) {\n      offsetType = r.uint8;\n    } else if (offset <= 0xffff) {\n      offsetType = r.uint16;\n    } else if (offset <= 0xffffff) {\n      offsetType = r.uint24;\n    } else if (offset <= 0xffffffff) {\n      offsetType = r.uint32;\n    } else {\n      throw new Error(\"Bad offset in CFFIndex\");\n    }\n\n    size += 1 + offsetType.size() * (arr.length + 1);\n    size += offset - 1;\n\n    return size;\n  }\n\n  encode(stream, arr, parent) {\n    stream.writeUInt16BE(arr.length);\n    if (arr.length === 0) {\n      return;\n    }\n\n    let type = this.type || new r.Buffer;\n\n    // find maximum offset to detminine offset type\n    let sizes = [];\n    let offset = 1;\n    for (let item of arr) {\n      let s = type.size(item, parent);\n      sizes.push(s);\n      offset += s;\n    }\n\n    let offsetType;\n    if (offset <= 0xff) {\n      offsetType = r.uint8;\n    } else if (offset <= 0xffff) {\n      offsetType = r.uint16;\n    } else if (offset <= 0xffffff) {\n      offsetType = r.uint24;\n    } else if (offset <= 0xffffffff) {\n      offsetType = r.uint32;\n    } else {\n      throw new Error(\"Bad offset in CFFIndex\");\n    }\n\n    // write offset size\n    stream.writeUInt8(offsetType.size());\n\n    // write elements\n    offset = 1;\n    offsetType.encode(stream, offset);\n\n    for (let size of sizes) {\n      offset += size;\n      offsetType.encode(stream, offset);\n    }\n\n    for (let item of arr) {\n      type.encode(stream, item, parent);\n    }\n\n    return;\n  }\n}\n","import * as r from 'restructure';\nimport { resolveLength } from 'restructure';\nimport CFFDict from './CFFDict';\nimport CFFIndex from './CFFIndex';\nimport CFFPointer from './CFFPointer';\nimport CFFPrivateDict from './CFFPrivateDict';\nimport StandardStrings from './CFFStandardStrings';\nimport { StandardEncoding, ExpertEncoding } from './CFFEncodings';\nimport { ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset } from './CFFCharsets';\nimport { ItemVariationStore } from '../tables/variations';\n\n// Checks if an operand is an index of a predefined value,\n// otherwise delegates to the provided type.\nclass PredefinedOp {\n  constructor(predefinedOps, type) {\n    this.predefinedOps = predefinedOps;\n    this.type = type;\n  }\n\n  decode(stream, parent, operands) {\n    if (this.predefinedOps[operands[0]]) {\n      return this.predefinedOps[operands[0]];\n    }\n\n    return this.type.decode(stream, parent, operands);\n  }\n\n  size(value, ctx) {\n    return this.type.size(value, ctx);\n  }\n\n  encode(stream, value, ctx) {\n    let index = this.predefinedOps.indexOf(value);\n    if (index !== -1) {\n      return index;\n    }\n\n    return this.type.encode(stream, value, ctx);\n  }\n}\n\nclass CFFEncodingVersion extends r.Number {\n  constructor() {\n    super('UInt8');\n  }\n\n  decode(stream) {\n    return r.uint8.decode(stream) & 0x7f;\n  }\n}\n\nlet Range1 = new r.Struct({\n  first: r.uint16,\n  nLeft: r.uint8\n});\n\nlet Range2 = new r.Struct({\n  first: r.uint16,\n  nLeft: r.uint16\n});\n\nlet CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {\n  0: {\n    nCodes: r.uint8,\n    codes: new r.Array(r.uint8, 'nCodes')\n  },\n\n  1: {\n    nRanges: r.uint8,\n    ranges: new r.Array(Range1, 'nRanges')\n  }\n\n  // TODO: supplement?\n});\n\nlet CFFEncoding = new PredefinedOp([ StandardEncoding, ExpertEncoding ], new CFFPointer(CFFCustomEncoding, { lazy: true }));\n\n// Decodes an array of ranges until the total\n// length is equal to the provided length.\nclass RangeArray extends r.Array {\n  decode(stream, parent) {\n    let length = resolveLength(this.length, stream, parent);\n    let count = 0;\n    let res = [];\n    while (count < length) {\n      let range = this.type.decode(stream, parent);\n      range.offset = count;\n      count += range.nLeft + 1;\n      res.push(range);\n    }\n\n    return res;\n  }\n}\n\nlet CFFCustomCharset = new r.VersionedStruct(r.uint8, {\n  0: {\n    glyphs: new r.Array(r.uint16, t => t.parent.CharStrings.length - 1)\n  },\n\n  1: {\n    ranges: new RangeArray(Range1, t => t.parent.CharStrings.length - 1)\n  },\n\n  2: {\n    ranges: new RangeArray(Range2, t => t.parent.CharStrings.length - 1)\n  }\n});\n\nlet CFFCharset = new PredefinedOp([ ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset ], new CFFPointer(CFFCustomCharset, {lazy: true}));\n\nlet FDRange3 = new r.Struct({\n  first: r.uint16,\n  fd: r.uint8\n});\n\nlet FDRange4 = new r.Struct({\n  first: r.uint32,\n  fd: r.uint16\n});\n\nlet FDSelect = new r.VersionedStruct(r.uint8, {\n  0: {\n    fds: new r.Array(r.uint8, t => t.parent.CharStrings.length)\n  },\n\n  3: {\n    nRanges: r.uint16,\n    ranges: new r.Array(FDRange3, 'nRanges'),\n    sentinel: r.uint16\n  },\n\n  4: {\n    nRanges: r.uint32,\n    ranges: new r.Array(FDRange4, 'nRanges'),\n    sentinel: r.uint32\n  }\n});\n\nlet ptr = new CFFPointer(CFFPrivateDict);\nclass CFFPrivateOp {\n  decode(stream, parent, operands) {\n    parent.length = operands[0];\n    return ptr.decode(stream, parent, [operands[1]]);\n  }\n\n  size(dict, ctx) {\n    return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];\n  }\n\n  encode(stream, dict, ctx) {\n    return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];\n  }\n}\n\nlet FontDict = new CFFDict([\n  // key       name                   type(s)                                 default\n  [18,        'Private',              new CFFPrivateOp,                       null],\n  [[12, 38],  'FontName',             'sid',                                  null],\n  [[12, 7],   'FontMatrix',           'array',                                [0.001, 0, 0, 0.001, 0, 0]],\n  [[12, 5],   'PaintType',            'number',                               0],\n]);\n\nlet CFFTopDict = new CFFDict([\n  // key       name                   type(s)                                 default\n  [[12, 30],  'ROS',                  ['sid', 'sid', 'number'],               null],\n\n  [0,         'version',              'sid',                                  null],\n  [1,         'Notice',               'sid',                                  null],\n  [[12, 0],   'Copyright',            'sid',                                  null],\n  [2,         'FullName',             'sid',                                  null],\n  [3,         'FamilyName',           'sid',                                  null],\n  [4,         'Weight',               'sid',                                  null],\n  [[12, 1],   'isFixedPitch',         'boolean',                              false],\n  [[12, 2],   'ItalicAngle',          'number',                               0],\n  [[12, 3],   'UnderlinePosition',    'number',                               -100],\n  [[12, 4],   'UnderlineThickness',   'number',                               50],\n  [[12, 5],   'PaintType',            'number',                               0],\n  [[12, 6],   'CharstringType',       'number',                               2],\n  [[12, 7],   'FontMatrix',           'array',                                [0.001, 0, 0, 0.001, 0, 0]],\n  [13,        'UniqueID',             'number',                               null],\n  [5,         'FontBBox',             'array',                                [0, 0, 0, 0]],\n  [[12, 8],   'StrokeWidth',          'number',                               0],\n  [14,        'XUID',                 'array',                                null],\n  [15,        'charset',              CFFCharset,                             ISOAdobeCharset],\n  [16,        'Encoding',             CFFEncoding,                            StandardEncoding],\n  [17,        'CharStrings',          new CFFPointer(new CFFIndex),           null],\n  [18,        'Private',              new CFFPrivateOp,                       null],\n  [[12, 20],  'SyntheticBase',        'number',                               null],\n  [[12, 21],  'PostScript',           'sid',                                  null],\n  [[12, 22],  'BaseFontName',         'sid',                                  null],\n  [[12, 23],  'BaseFontBlend',        'delta',                                null],\n\n  // CID font specific\n  [[12, 31],  'CIDFontVersion',       'number',                               0],\n  [[12, 32],  'CIDFontRevision',      'number',                               0],\n  [[12, 33],  'CIDFontType',          'number',                               0],\n  [[12, 34],  'CIDCount',             'number',                               8720],\n  [[12, 35],  'UIDBase',              'number',                               null],\n  [[12, 37],  'FDSelect',             new CFFPointer(FDSelect),               null],\n  [[12, 36],  'FDArray',              new CFFPointer(new CFFIndex(FontDict)), null],\n  [[12, 38],  'FontName',             'sid',                                  null]\n]);\n\nlet VariationStore = new r.Struct({\n  length: r.uint16,\n  itemVariationStore: ItemVariationStore\n})\n\nlet CFF2TopDict = new CFFDict([\n  [[12, 7],   'FontMatrix',           'array',                                [0.001, 0, 0, 0.001, 0, 0]],\n  [17,        'CharStrings',          new CFFPointer(new CFFIndex),           null],\n  [[12, 37],  'FDSelect',             new CFFPointer(FDSelect),               null],\n  [[12, 36],  'FDArray',              new CFFPointer(new CFFIndex(FontDict)), null],\n  [24,        'vstore',               new CFFPointer(VariationStore),         null],\n  [25,        'maxstack',             'number',                               193]\n]);\n\nlet CFFTop = new r.VersionedStruct(r.fixed16, {\n  1: {\n    hdrSize:            r.uint8,\n    offSize:            r.uint8,\n    nameIndex:          new CFFIndex(new r.String('length')),\n    topDictIndex:       new CFFIndex(CFFTopDict),\n    stringIndex:        new CFFIndex(new r.String('length')),\n    globalSubrIndex:    new CFFIndex\n  },\n\n  2: {\n    hdrSize:            r.uint8,\n    length:             r.uint16,\n    topDict:            CFF2TopDict,\n    globalSubrIndex:    new CFFIndex\n  }\n});\n\nexport default CFFTop;\n","import isEqual from 'fast-deep-equal';\nimport * as r from 'restructure';\nimport CFFOperand from './CFFOperand';\nimport { PropertyDescriptor } from 'restructure';\n\nexport default class CFFDict {\n  constructor(ops = []) {\n    this.ops = ops;\n    this.fields = {};\n    for (let field of ops) {\n      let key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];\n      this.fields[key] = field;\n    }\n  }\n\n  decodeOperands(type, stream, ret, operands) {\n    if (Array.isArray(type)) {\n      return operands.map((op, i) => this.decodeOperands(type[i], stream, ret, [op]));\n    } else if (type.decode != null) {\n      return type.decode(stream, ret, operands);\n    } else {\n      switch (type) {\n        case 'number':\n        case 'offset':\n        case 'sid':\n          return operands[0];\n        case 'boolean':\n          return !!operands[0];\n        default:\n          return operands;\n      }\n    }\n  }\n\n  encodeOperands(type, stream, ctx, operands) {\n    if (Array.isArray(type)) {\n      return operands.map((op, i) => this.encodeOperands(type[i], stream, ctx, op)[0]);\n    } else if (type.encode != null) {\n      return type.encode(stream, operands, ctx);\n    } else if (typeof operands === 'number') {\n      return [operands];\n    } else if (typeof operands === 'boolean') {\n      return [+operands];\n    } else if (Array.isArray(operands)) {\n      return operands;\n    } else {\n      return [operands];\n    }\n  }\n\n  decode(stream, parent) {\n    let end = stream.pos + parent.length;\n    let ret = {};\n    let operands = [];\n\n    // define hidden properties\n    Object.defineProperties(ret, {\n      parent:         { value: parent },\n      _startOffset:   { value: stream.pos }\n    });\n\n    // fill in defaults\n    for (let key in this.fields) {\n      let field = this.fields[key];\n      ret[field[1]] = field[3];\n    }\n\n    while (stream.pos < end) {\n      let b = stream.readUInt8();\n      if (b < 28) {\n        if (b === 12) {\n          b = (b << 8) | stream.readUInt8();\n        }\n\n        let field = this.fields[b];\n        if (!field) {\n          throw new Error(`Unknown operator ${b}`);\n        }\n\n        let val = this.decodeOperands(field[2], stream, ret, operands);\n        if (val != null) {\n          if (val instanceof PropertyDescriptor) {\n            Object.defineProperty(ret, field[1], val);\n          } else {\n            ret[field[1]] = val;\n          }\n        }\n\n        operands = [];\n      } else {\n        operands.push(CFFOperand.decode(stream, b));\n      }\n    }\n\n    return ret;\n  }\n\n  size(dict, parent, includePointers = true) {\n    let ctx = {\n      parent,\n      val: dict,\n      pointerSize: 0,\n      startOffset: parent.startOffset || 0\n    };\n\n    let len = 0;\n\n    for (let k in this.fields) {\n      let field = this.fields[k];\n      let val = dict[field[1]];\n      if (val == null || isEqual(val, field[3])) {\n        continue;\n      }\n\n      let operands = this.encodeOperands(field[2], null, ctx, val);\n      for (let op of operands) {\n        len += CFFOperand.size(op);\n      }\n\n      let key = Array.isArray(field[0]) ? field[0] : [field[0]];\n      len += key.length;\n    }\n\n    if (includePointers) {\n      len += ctx.pointerSize;\n    }\n\n    return len;\n  }\n\n  encode(stream, dict, parent) {\n    let ctx = {\n      pointers: [],\n      startOffset: stream.pos,\n      parent,\n      val: dict,\n      pointerSize: 0\n    };\n\n    ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);\n\n    for (let field of this.ops) {\n      let val = dict[field[1]];\n      if (val == null || isEqual(val, field[3])) {\n        continue;\n      }\n\n      let operands = this.encodeOperands(field[2], stream, ctx, val);\n      for (let op of operands) {\n        CFFOperand.encode(stream, op);\n      }\n\n      let key = Array.isArray(field[0]) ? field[0] : [field[0]];\n      for (let op of key) {\n        stream.writeUInt8(op);\n      }\n    }\n\n    let i = 0;\n    while (i < ctx.pointers.length) {\n      let ptr = ctx.pointers[i++];\n      ptr.type.encode(stream, ptr.val, ptr.parent);\n    }\n\n    return;\n  }\n}\n","const FLOAT_EOF = 0xf;\nconst FLOAT_LOOKUP = [\n  '0', '1', '2', '3', '4', '5', '6', '7',\n  '8', '9', '.', 'E', 'E-', null, '-'\n];\n\nconst FLOAT_ENCODE_LOOKUP = {\n  '.': 10,\n  'E': 11,\n  'E-': 12,\n  '-': 14\n};\n\nexport default class CFFOperand {\n  static decode(stream, value) {\n    if (32 <= value && value <= 246) {\n      return value - 139;\n    }\n\n    if (247 <= value && value <= 250) {\n      return (value - 247) * 256 + stream.readUInt8() + 108;\n    }\n\n    if (251 <= value && value <= 254) {\n      return -(value - 251) * 256 - stream.readUInt8() - 108;\n    }\n\n    if (value === 28) {\n      return stream.readInt16BE();\n    }\n\n    if (value === 29) {\n      return stream.readInt32BE();\n    }\n\n    if (value === 30) {\n      let str = '';\n      while (true) {\n        let b = stream.readUInt8();\n\n        let n1 = b >> 4;\n        if (n1 === FLOAT_EOF) { break; }\n        str += FLOAT_LOOKUP[n1];\n\n        let n2 = b & 15;\n        if (n2 === FLOAT_EOF) { break; }\n        str += FLOAT_LOOKUP[n2];\n      }\n\n      return parseFloat(str);\n    }\n\n    return null;\n  }\n\n  static size(value) {\n    // if the value needs to be forced to the largest size (32 bit)\n    // e.g. for unknown pointers, set to 32768\n    if (value.forceLarge) {\n      value = 32768;\n    }\n\n    if ((value | 0) !== value) { // floating point\n      let str = '' + value;\n      return 1 + Math.ceil((str.length + 1) / 2);\n\n    } else if (-107 <= value && value <= 107) {\n      return 1;\n\n    } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {\n      return 2;\n\n    } else if (-32768 <= value && value <= 32767) {\n      return 3;\n\n    } else {\n      return 5;\n    }\n  }\n\n  static encode(stream, value) {\n    // if the value needs to be forced to the largest size (32 bit)\n    // e.g. for unknown pointers, save the old value and set to 32768\n    let val = Number(value);\n\n    if (value.forceLarge) {\n      stream.writeUInt8(29);\n      return stream.writeInt32BE(val);\n\n    } else if ((val | 0) !== val) { // floating point\n      stream.writeUInt8(30);\n\n      let str = '' + val;\n      for (let i = 0; i < str.length; i += 2) {\n        let c1 = str[i];\n        let n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;\n\n        if (i === str.length - 1) {\n          var n2 = FLOAT_EOF;\n        } else {\n          let c2 = str[i + 1];\n          var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;\n        }\n\n        stream.writeUInt8((n1 << 4) | (n2 & 15));\n      }\n\n      if (n2 !== FLOAT_EOF) {\n        return stream.writeUInt8((FLOAT_EOF << 4));\n      }\n\n    } else if (-107 <= val && val <= 107) {\n      return stream.writeUInt8(val + 139);\n\n    } else if (108 <= val && val <= 1131) {\n      val -= 108;\n      stream.writeUInt8((val >> 8) + 247);\n      return stream.writeUInt8(val & 0xff);\n\n    } else if (-1131 <= val && val <= -108) {\n      val = -val - 108;\n      stream.writeUInt8((val >> 8) + 251);\n      return stream.writeUInt8(val & 0xff);\n\n    } else if (-32768 <= val && val <= 32767) {\n      stream.writeUInt8(28);\n      return stream.writeInt16BE(val);\n\n    } else {\n      stream.writeUInt8(29);\n      return stream.writeInt32BE(val);\n    }\n  }\n}\n","import * as r from 'restructure';\n\nexport default class CFFPointer extends r.Pointer {\n  constructor(type, options = {}) {\n    if (options.type == null) {\n      options.type = 'global';\n    }\n\n    super(null, type, options);\n  }\n\n  decode(stream, parent, operands) {\n    this.offsetType = {\n      decode: () => operands[0]\n    };\n\n    return super.decode(stream, parent, operands);\n  }\n\n  encode(stream, value, ctx) {\n    if (!stream) {\n      // compute the size (so ctx.pointerSize is correct)\n      this.offsetType = {\n        size: () => 0\n      };\n\n      this.size(value, ctx);\n      return [new Ptr(0)];\n    }\n\n    let ptr = null;\n    this.offsetType = {\n      encode: (stream, val) => ptr = val\n    };\n\n    super.encode(stream, value, ctx);\n    return [new Ptr(ptr)];\n  }\n}\n\nclass Ptr {\n  constructor(val) {\n    this.val = val;\n    this.forceLarge = true;\n  }\n\n  valueOf() {\n    return this.val;\n  }\n}\n","import CFFDict from './CFFDict';\nimport CFFIndex from './CFFIndex';\nimport CFFPointer from './CFFPointer';\n\nclass CFFBlendOp {\n  static decode(stream, parent, operands) {\n    let numBlends = operands.pop();\n\n    // TODO: actually blend. For now just consume the deltas\n    // since we don't use any of the values anyway.\n    while (operands.length > numBlends) {\n      operands.pop();\n    }\n  }\n}\n\nexport default new CFFDict([\n  // key       name                    type                                          default\n  [6,         'BlueValues',           'delta',                                       null],\n  [7,         'OtherBlues',           'delta',                                       null],\n  [8,         'FamilyBlues',          'delta',                                       null],\n  [9,         'FamilyOtherBlues',     'delta',                                       null],\n  [[12, 9],   'BlueScale',            'number',                                      0.039625],\n  [[12, 10],  'BlueShift',            'number',                                      7],\n  [[12, 11],  'BlueFuzz',             'number',                                      1],\n  [10,        'StdHW',                'number',                                      null],\n  [11,        'StdVW',                'number',                                      null],\n  [[12, 12],  'StemSnapH',            'delta',                                       null],\n  [[12, 13],  'StemSnapV',            'delta',                                       null],\n  [[12, 14],  'ForceBold',            'boolean',                                     false],\n  [[12, 17],  'LanguageGroup',        'number',                                      0],\n  [[12, 18],  'ExpansionFactor',      'number',                                      0.06],\n  [[12, 19],  'initialRandomSeed',    'number',                                      0],\n  [20,        'defaultWidthX',        'number',                                      0],\n  [21,        'nominalWidthX',        'number',                                      0],\n  [22,        'vsindex',              'number',                                      0],\n  [23,        'blend',                CFFBlendOp,                                    null],\n  [19,        'Subrs',                new CFFPointer(new CFFIndex, {type: 'local'}), null]\n]);\n","// Automatically generated from Appendix A of the CFF specification; do\n// not edit. Length should be 391.\nexport default [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\",\n  \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\",\n  \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\",\n  \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\",\n  \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\",\n  \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\",\n  \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\",\n  \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\",\n  \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\",\n  \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\",\n  \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\",\n  \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\",\n  \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\",\n  \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\",\n  \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\",\n  \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\",\n  \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\",\n  \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\",\n  \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\",\n  \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\",\n  \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\",\n  \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\",\n  \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\",\n  \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\",\n  \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\",\n  \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\",\n  \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\",\n  \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\",\n  \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\",\n  \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\",\n  \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n","export let StandardEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright',\n  'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two',\n  'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater',\n  'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',\n  'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n  'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\n  'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle',\n  'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger',\n  'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright',\n  'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde',\n  'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron',\n  'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '',\n  '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '',\n  'lslash', 'oslash', 'oe', 'germandbls'\n];\n\nexport let ExpertEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior',\n  'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader',\n  'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n  'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',\n  'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior',\n  'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',\n  'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl',\n  'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall',\n  'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall',\n  'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n  'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n  'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior',\n  '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',\n  'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '',\n  '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',\n  'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',\n  'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',\n  'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',\n  'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n  'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall',\n  'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n  'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'\n];\n","export let ISOAdobeCharset = [\n  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',\n  'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',\n  'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',\n  'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',\n  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',\n  'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n  'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n  'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',\n  'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n  'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',\n  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',\n  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',\n  'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',\n  'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',\n  'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',\n  'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',\n  'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',\n  'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',\n  'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',\n  'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',\n  'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',\n  'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',\n  'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',\n  'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',\n  'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',\n  'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',\n  'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',\n  'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',\n  'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',\n  'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',\n  'ugrave', 'yacute', 'ydieresis', 'zcaron'\n];\n\nexport let ExpertCharset = [\n  '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',\n  'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',\n  'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',\n  'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',\n  'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',\n  'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',\n  'colon', 'semicolon', 'commasuperior', 'threequartersemdash',\n  'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',\n  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n  'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',\n  'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',\n  'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',\n  'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',\n  'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',\n  'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',\n  'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n  'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',\n  'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',\n  'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',\n  'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',\n  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n  'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',\n  'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',\n  'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',\n  'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n  'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',\n  'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',\n  'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n  'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',\n  'Ydieresissmall'\n];\n\nexport let ExpertSubsetCharset = [\n  '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',\n  'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n  'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',\n  'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n  'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',\n  'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',\n  'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',\n  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n  'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',\n  'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',\n  'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',\n  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n  'periodinferior', 'commainferior'\n];\n","import {Feature} from './opentype';\nimport * as r from 'restructure';\n\n/*******************\n * Variation Store *\n *******************/\n\nlet F2DOT14 = new r.Fixed(16, 'BE', 14);\nlet RegionAxisCoordinates = new r.Struct({\n  startCoord: F2DOT14,\n  peakCoord: F2DOT14,\n  endCoord: F2DOT14\n});\n\nlet VariationRegionList = new r.Struct({\n  axisCount: r.uint16,\n  regionCount: r.uint16,\n  variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')\n});\n\nlet DeltaSet = new r.Struct({\n  shortDeltas: new r.Array(r.int16, t => t.parent.shortDeltaCount),\n  regionDeltas: new r.Array(r.int8, t => t.parent.regionIndexCount - t.parent.shortDeltaCount),\n  deltas: t => t.shortDeltas.concat(t.regionDeltas)\n});\n\nlet ItemVariationData = new r.Struct({\n  itemCount: r.uint16,\n  shortDeltaCount: r.uint16,\n  regionIndexCount: r.uint16,\n  regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),\n  deltaSets: new r.Array(DeltaSet, 'itemCount')\n});\n\nexport let ItemVariationStore = new r.Struct({\n  format: r.uint16,\n  variationRegionList: new r.Pointer(r.uint32, VariationRegionList),\n  variationDataCount: r.uint16,\n  itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')\n});\n\n/**********************\n * Feature Variations *\n **********************/\n\nlet ConditionTable = new r.VersionedStruct(r.uint16, {\n  1: {\n    axisIndex: r.uint16,\n    axisIndex: r.uint16,\n    filterRangeMinValue: F2DOT14,\n    filterRangeMaxValue: F2DOT14\n  }\n});\n\nlet ConditionSet = new r.Struct({\n  conditionCount: r.uint16,\n  conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')\n});\n\nlet FeatureTableSubstitutionRecord = new r.Struct({\n  featureIndex: r.uint16,\n  alternateFeatureTable: new r.Pointer(r.uint32, Feature, {type: 'parent'})\n});\n\nlet FeatureTableSubstitution = new r.Struct({\n  version: r.fixed32,\n  substitutionCount: r.uint16,\n  substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')\n});\n\nlet FeatureVariationRecord = new r.Struct({\n  conditionSet: new r.Pointer(r.uint32, ConditionSet, {type: 'parent'}),\n  featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, {type: 'parent'})\n});\n\nexport let FeatureVariations = new r.Struct({\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  featureVariationRecordCount: r.uint32,\n  featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')\n});\n","import * as r from 'restructure';\n\n//########################\n// Scripts and Languages #\n//########################\n\nlet LangSysTable = new r.Struct({\n  reserved:         new r.Reserved(r.uint16),\n  reqFeatureIndex:  r.uint16,\n  featureCount:     r.uint16,\n  featureIndexes:   new r.Array(r.uint16, 'featureCount')\n});\n\nlet LangSysRecord = new r.Struct({\n  tag:      new r.String(4),\n  langSys:  new r.Pointer(r.uint16, LangSysTable, { type: 'parent' })\n});\n\nlet Script = new r.Struct({\n  defaultLangSys: new r.Pointer(r.uint16, LangSysTable),\n  count:          r.uint16,\n  langSysRecords: new r.Array(LangSysRecord, 'count')\n});\n\nlet ScriptRecord = new r.Struct({\n  tag:    new r.String(4),\n  script: new r.Pointer(r.uint16, Script, { type: 'parent' })\n});\n\nexport let ScriptList = new r.Array(ScriptRecord, r.uint16);\n\n//#######################\n// Features and Lookups #\n//#######################\n\nlet FeatureParams = new r.Struct({\n  version:    r.uint16, // should be set to 0 according OT spec\n  nameID:     r.uint16, //OT spec: UI Name ID or uiLabelNameId\n});\n\nexport let Feature = new r.Struct({\n  featureParams:      new r.Pointer(r.uint16, FeatureParams),\n  lookupCount:        r.uint16,\n  lookupListIndexes:  new r.Array(r.uint16, 'lookupCount')\n});\n\nlet FeatureRecord = new r.Struct({\n  tag:      new r.String(4),\n  feature:  new r.Pointer(r.uint16, Feature, { type: 'parent' })\n});\n\nexport let FeatureList = new r.Array(FeatureRecord, r.uint16);\n\nlet LookupFlags = new r.Struct({\n  markAttachmentType: r.uint8,\n  flags: new r.Bitfield(r.uint8, [\n    'rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures',\n    'ignoreMarks', 'useMarkFilteringSet'\n  ])\n});\n\nexport function LookupList(SubTable) {\n  let Lookup = new r.Struct({\n    lookupType:         r.uint16,\n    flags:              LookupFlags,\n    subTableCount:      r.uint16,\n    subTables:          new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),\n    markFilteringSet:   new r.Optional(r.uint16, t => t.flags.flags.useMarkFilteringSet)\n  });\n\n  return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);\n}\n\n//#################\n// Coverage Table #\n//#################\n\nlet RangeRecord = new r.Struct({\n  start:              r.uint16,\n  end:                r.uint16,\n  startCoverageIndex: r.uint16\n});\n\nexport let Coverage = new r.VersionedStruct(r.uint16, {\n  1: {\n    glyphCount:   r.uint16,\n    glyphs:       new r.Array(r.uint16, 'glyphCount')\n  },\n  2: {\n    rangeCount:   r.uint16,\n    rangeRecords: new r.Array(RangeRecord, 'rangeCount')\n  }\n});\n\n//#########################\n// Class Definition Table #\n//#########################\n\nlet ClassRangeRecord = new r.Struct({\n  start:  r.uint16,\n  end:    r.uint16,\n  class:  r.uint16\n});\n\nexport let ClassDef = new r.VersionedStruct(r.uint16, {\n  1: { // Class array\n    startGlyph:       r.uint16,\n    glyphCount:       r.uint16,\n    classValueArray:  new r.Array(r.uint16, 'glyphCount')\n  },\n  2: { // Class ranges\n    classRangeCount:  r.uint16,\n    classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')\n  }\n});\n\n//###############\n// Device Table #\n//###############\n\nexport let Device = new r.Struct({\n  a: r.uint16, // startSize for hinting Device, outerIndex for VariationIndex\n  b: r.uint16, // endSize for Device, innerIndex for VariationIndex\n  deltaFormat: r.uint16\n});\n\n//#############################################\n// Contextual Substitution/Positioning Tables #\n//#############################################\n\nlet LookupRecord = new r.Struct({\n  sequenceIndex:      r.uint16,\n  lookupListIndex:    r.uint16\n});\n\nlet Rule = new r.Struct({\n  glyphCount:     r.uint16,\n  lookupCount:    r.uint16,\n  input:          new r.Array(r.uint16, t => t.glyphCount - 1),\n  lookupRecords:  new r.Array(LookupRecord, 'lookupCount')\n});\n\nlet RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);\n\nlet ClassRule = new r.Struct({\n  glyphCount:     r.uint16,\n  lookupCount:    r.uint16,\n  classes:        new r.Array(r.uint16, t => t.glyphCount - 1),\n  lookupRecords:  new r.Array(LookupRecord, 'lookupCount')\n});\n\nlet ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);\n\nexport let Context = new r.VersionedStruct(r.uint16, {\n  1: { // Simple context\n    coverage:      new r.Pointer(r.uint16, Coverage),\n    ruleSetCount:  r.uint16,\n    ruleSets:      new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')\n  },\n  2: { // Class-based context\n    coverage:      new r.Pointer(r.uint16, Coverage),\n    classDef:      new r.Pointer(r.uint16, ClassDef),\n    classSetCnt:   r.uint16,\n    classSet:      new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')\n  },\n  3: {\n    glyphCount:    r.uint16,\n    lookupCount:   r.uint16,\n    coverages:     new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),\n    lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n  }\n});\n\n//######################################################\n// Chaining Contextual Substitution/Positioning Tables #\n//######################################################\n\nlet ChainRule = new r.Struct({\n  backtrackGlyphCount:  r.uint16,\n  backtrack:            new r.Array(r.uint16, 'backtrackGlyphCount'),\n  inputGlyphCount:      r.uint16,\n  input:                new r.Array(r.uint16, t => t.inputGlyphCount - 1),\n  lookaheadGlyphCount:  r.uint16,\n  lookahead:            new r.Array(r.uint16, 'lookaheadGlyphCount'),\n  lookupCount:          r.uint16,\n  lookupRecords:        new r.Array(LookupRecord, 'lookupCount')\n});\n\nlet ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);\n\nexport let ChainingContext = new r.VersionedStruct(r.uint16, {\n  1: { // Simple context glyph substitution\n    coverage:           new r.Pointer(r.uint16, Coverage),\n    chainCount:         r.uint16,\n    chainRuleSets:      new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n  },\n\n  2: { // Class-based chaining context\n    coverage:           new r.Pointer(r.uint16, Coverage),\n    backtrackClassDef:  new r.Pointer(r.uint16, ClassDef),\n    inputClassDef:      new r.Pointer(r.uint16, ClassDef),\n    lookaheadClassDef:  new r.Pointer(r.uint16, ClassDef),\n    chainCount:         r.uint16,\n    chainClassSet:      new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n  },\n\n  3: { // Coverage-based chaining context\n    backtrackGlyphCount:    r.uint16,\n    backtrackCoverage:      new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n    inputGlyphCount:        r.uint16,\n    inputCoverage:          new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),\n    lookaheadGlyphCount:    r.uint16,\n    lookaheadCoverage:      new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n    lookupCount:            r.uint16,\n    lookupRecords:          new r.Array(LookupRecord, 'lookupCount')\n  }\n});\n","import * as r from 'restructure';\n\nlet VerticalOrigin = new r.Struct({\n  glyphIndex:   r.uint16,\n  vertOriginY:  r.int16\n});\n\nexport default new r.Struct({\n  majorVersion:           r.uint16,\n  minorVersion:           r.uint16,\n  defaultVertOriginY:     r.int16,\n  numVertOriginYMetrics:  r.uint16,\n  metrics:                new r.Array(VerticalOrigin, 'numVertOriginYMetrics')\n});\n","import * as r from 'restructure';\nimport {BigMetrics} from './EBDT';\n\nlet SBitLineMetrics = new r.Struct({\n  ascender: r.int8,\n  descender: r.int8,\n  widthMax: r.uint8,\n  caretSlopeNumerator: r.int8,\n  caretSlopeDenominator: r.int8,\n  caretOffset: r.int8,\n  minOriginSB: r.int8,\n  minAdvanceSB: r.int8,\n  maxBeforeBL: r.int8,\n  minAfterBL: r.int8,\n  pad: new r.Reserved(r.int8, 2)\n});\n\nlet CodeOffsetPair = new r.Struct({\n  glyphCode: r.uint16,\n  offset: r.uint16\n});\n\nlet IndexSubtable = new r.VersionedStruct(r.uint16, {\n  header: {\n    imageFormat: r.uint16,\n    imageDataOffset: r.uint32\n  },\n\n  1: {\n    offsetArray: new r.Array(r.uint32, t => t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)\n  },\n\n  2: {\n    imageSize: r.uint32,\n    bigMetrics: BigMetrics\n  },\n\n  3: {\n    offsetArray: new r.Array(r.uint16, t => t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)\n  },\n\n  4: {\n    numGlyphs: r.uint32,\n    glyphArray: new r.Array(CodeOffsetPair, t => t.numGlyphs + 1)\n  },\n\n  5: {\n    imageSize: r.uint32,\n    bigMetrics: BigMetrics,\n    numGlyphs: r.uint32,\n    glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')\n  }\n});\n\nlet IndexSubtableArray = new r.Struct({\n  firstGlyphIndex: r.uint16,\n  lastGlyphIndex: r.uint16,\n  subtable: new r.Pointer(r.uint32, IndexSubtable)\n});\n\nlet BitmapSizeTable = new r.Struct({\n  indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), { type: 'parent' }),\n  indexTablesSize: r.uint32,\n  numberOfIndexSubTables: r.uint32,\n  colorRef: r.uint32,\n  hori: SBitLineMetrics,\n  vert: SBitLineMetrics,\n  startGlyphIndex: r.uint16,\n  endGlyphIndex: r.uint16,\n  ppemX: r.uint8,\n  ppemY: r.uint8,\n  bitDepth: r.uint8,\n  flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])\n});\n\nexport default new r.Struct({\n  version:  r.uint32, // 0x00020000\n  numSizes: r.uint32,\n  sizes:    new r.Array(BitmapSizeTable, 'numSizes')\n});\n","import * as r from 'restructure';\n\nexport let BigMetrics = new r.Struct({\n  height: r.uint8,\n  width: r.uint8,\n  horiBearingX: r.int8,\n  horiBearingY: r.int8,\n  horiAdvance: r.uint8,\n  vertBearingX: r.int8,\n  vertBearingY: r.int8,\n  vertAdvance: r.uint8\n});\n\nexport let SmallMetrics = new r.Struct({\n  height: r.uint8,\n  width: r.uint8,\n  bearingX: r.int8,\n  bearingY: r.int8,\n  advance: r.uint8\n});\n\nlet EBDTComponent = new r.Struct({\n  glyph: r.uint16,\n  xOffset: r.int8,\n  yOffset: r.int8\n});\n\nclass ByteAligned {}\n\nclass BitAligned {}\n\nexport let glyph = new r.VersionedStruct('version', {\n  1: {\n    metrics: SmallMetrics,\n    data: ByteAligned\n  },\n\n  2: {\n    metrics: SmallMetrics,\n    data: BitAligned\n  },\n\n  // format 3 is deprecated\n  // format 4 is not supported by Microsoft\n\n  5: {\n    data: BitAligned\n  },\n\n  6: {\n    metrics: BigMetrics,\n    data: ByteAligned\n  },\n\n  7: {\n    metrics: BigMetrics,\n    data: BitAligned\n  },\n\n  8: {\n    metrics: SmallMetrics,\n    pad: new r.Reserved(r.uint8),\n    numComponents: r.uint16,\n    components: new r.Array(EBDTComponent, 'numComponents')\n  },\n\n  9: {\n    metrics: BigMetrics,\n    pad: new r.Reserved(r.uint8),\n    numComponents: r.uint16,\n    components: new r.Array(EBDTComponent, 'numComponents')\n  },\n\n  17: {\n    metrics: SmallMetrics,\n    dataLen: r.uint32,\n    data: new r.Buffer('dataLen')\n  },\n\n  18: {\n    metrics: BigMetrics,\n    dataLen: r.uint32,\n    data: new r.Buffer('dataLen')\n  },\n\n  19: {\n    dataLen: r.uint32,\n    data: new r.Buffer('dataLen')\n  }\n});\n\n","import * as r from 'restructure';\n\nlet ImageTable = new r.Struct({\n  ppem: r.uint16,\n  resolution: r.uint16,\n  imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), t => t.parent.parent.maxp.numGlyphs + 1)\n});\n\n// This is the Apple sbix table, used by the \"Apple Color Emoji\" font.\n// It includes several image tables with images for each bitmap glyph\n// of several different sizes.\nexport default new r.Struct({\n  version: r.uint16,\n  flags: new r.Bitfield(r.uint16, ['renderOutlines']),\n  numImgTables: r.uint32,\n  imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')\n});\n","import * as r from 'restructure';\n\nlet LayerRecord = new r.Struct({\n  gid: r.uint16,          // Glyph ID of layer glyph (must be in z-order from bottom to top).\n  paletteIndex: r.uint16  // Index value to use in the appropriate palette. This value must\n});                       // be less than numPaletteEntries in the CPAL table, except for\n                          // the special case noted below. Each palette entry is 16 bits.\n                          // A palette index of 0xFFFF is a special case indicating that\n                          // the text foreground color should be used.\n\nlet BaseGlyphRecord = new r.Struct({\n  gid: r.uint16,             // Glyph ID of reference glyph. This glyph is for reference only\n                             // and is not rendered for color.\n  firstLayerIndex: r.uint16, // Index (from beginning of the Layer Records) to the layer record.\n                             // There will be numLayers consecutive entries for this base glyph.\n  numLayers: r.uint16\n});\n\nexport default new r.Struct({\n  version: r.uint16,\n  numBaseGlyphRecords: r.uint16,\n  baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),\n  layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), { lazy: true }),\n  numLayerRecords: r.uint16\n});\n","import * as r from 'restructure';\n\nlet ColorRecord = new r.Struct({\n  blue: r.uint8,\n  green: r.uint8,\n  red: r.uint8,\n  alpha: r.uint8\n});\n\nexport default new r.VersionedStruct(r.uint16, {\n  header: {\n    numPaletteEntries: r.uint16,\n    numPalettes: r.uint16,\n    numColorRecords: r.uint16,\n    colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),\n    colorRecordIndices: new r.Array(r.uint16, 'numPalettes'),\n  },\n  0: {},\n  1: {\n    offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),\n    offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),\n    offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))\n  }\n});\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device} from './opentype';\nimport {ItemVariationStore} from './variations';\n\nlet BaseCoord = new r.VersionedStruct(r.uint16, {\n  1: { // Design units only\n    coordinate:   r.int16 // X or Y value, in design units\n  },\n\n  2: { // Design units plus contour point\n    coordinate:     r.int16,   // X or Y value, in design units\n    referenceGlyph: r.uint16,  // GlyphID of control glyph\n    baseCoordPoint: r.uint16   // Index of contour point on the referenceGlyph\n  },\n\n  3: { // Design units plus Device table\n    coordinate:   r.int16,                         // X or Y value, in design units\n    deviceTable:  new r.Pointer(r.uint16, Device)  // Device table for X or Y value\n  }\n});\n\nlet BaseValues = new r.Struct({\n  defaultIndex:   r.uint16,  // Index of default baseline for this script-same index in the BaseTagList\n  baseCoordCount: r.uint16,\n  baseCoords:     new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')\n});\n\nlet FeatMinMaxRecord = new r.Struct({\n  tag:        new r.String(4),  // 4-byte feature identification tag-must match FeatureTag in FeatureList\n  minCoord:   new r.Pointer(r.uint16, BaseCoord, {type: 'parent'}), // May be NULL\n  maxCoord:   new r.Pointer(r.uint16, BaseCoord, {type: 'parent'})  // May be NULL\n});\n\nlet MinMax = new r.Struct({\n  minCoord:           new r.Pointer(r.uint16, BaseCoord),  // May be NULL\n  maxCoord:           new r.Pointer(r.uint16, BaseCoord),  // May be NULL\n  featMinMaxCount:    r.uint16,                            // May be 0\n  featMinMaxRecords:  new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order\n});\n\nlet BaseLangSysRecord = new r.Struct({\n  tag:    new r.String(4),  // 4-byte language system identification tag\n  minMax: new r.Pointer(r.uint16, MinMax, {type: 'parent'})\n});\n\nlet BaseScript = new r.Struct({\n  baseValues:         new r.Pointer(r.uint16, BaseValues), // May be NULL\n  defaultMinMax:      new r.Pointer(r.uint16, MinMax),     // May be NULL\n  baseLangSysCount:   r.uint16,                            // May be 0\n  baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag\n});\n\nlet BaseScriptRecord = new r.Struct({\n  tag:      new r.String(4),  // 4-byte script identification tag\n  script:   new r.Pointer(r.uint16, BaseScript, {type: 'parent'})\n});\n\nlet BaseScriptList = new r.Array(BaseScriptRecord, r.uint16);\n\n// Array of 4-byte baseline identification tags-must be in alphabetical order\nlet BaseTagList = new r.Array(new r.String(4), r.uint16);\n\nlet Axis = new r.Struct({\n  baseTagList:    new r.Pointer(r.uint16, BaseTagList),  // May be NULL\n  baseScriptList: new r.Pointer(r.uint16, BaseScriptList)\n});\n\nexport default new r.VersionedStruct(r.uint32, {\n  header: {\n    horizAxis:    new r.Pointer(r.uint16, Axis),   // May be NULL\n    vertAxis:     new r.Pointer(r.uint16, Axis)    // May be NULL\n  },\n\n  0x00010000: {},\n  0x00010001: {\n    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n  }\n});\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device} from './opentype';\nimport {ItemVariationStore} from './variations';\n\nlet AttachPoint = new r.Array(r.uint16, r.uint16);\nlet AttachList = new r.Struct({\n  coverage:       new r.Pointer(r.uint16, Coverage),\n  glyphCount:     r.uint16,\n  attachPoints:   new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')\n});\n\nlet CaretValue = new r.VersionedStruct(r.uint16, {\n  1: { // Design units only\n    coordinate: r.int16\n  },\n\n  2: { // Contour point\n    caretValuePoint: r.uint16\n  },\n\n  3: { // Design units plus Device table\n    coordinate:     r.int16,\n    deviceTable:    new r.Pointer(r.uint16, Device)\n  }\n});\n\nlet LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);\n\nlet LigCaretList = new r.Struct({\n  coverage:       new r.Pointer(r.uint16, Coverage),\n  ligGlyphCount:  r.uint16,\n  ligGlyphs:      new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')\n});\n\nlet MarkGlyphSetsDef = new r.Struct({\n  markSetTableFormat: r.uint16,\n  markSetCount:       r.uint16,\n  coverage:           new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')\n});\n\nexport default new r.VersionedStruct(r.uint32, {\n  header: {\n    glyphClassDef:      new r.Pointer(r.uint16, ClassDef),\n    attachList:         new r.Pointer(r.uint16, AttachList),\n    ligCaretList:       new r.Pointer(r.uint16, LigCaretList),\n    markAttachClassDef: new r.Pointer(r.uint16, ClassDef)\n  },\n\n  0x00010000: {},\n  0x00010002: {\n    markGlyphSetsDef:   new r.Pointer(r.uint16, MarkGlyphSetsDef)\n  },\n  0x00010003: {\n    markGlyphSetsDef:   new r.Pointer(r.uint16, MarkGlyphSetsDef),\n    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n  }\n});\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device, Context, ChainingContext} from './opentype';\nimport {FeatureVariations} from './variations';\n\nlet ValueFormat = new r.Bitfield(r.uint16, [\n  'xPlacement', 'yPlacement',\n  'xAdvance', 'yAdvance',\n  'xPlaDevice', 'yPlaDevice',\n  'xAdvDevice', 'yAdvDevice'\n]);\n\nlet types = {\n  xPlacement: r.int16,\n  yPlacement: r.int16,\n  xAdvance:   r.int16,\n  yAdvance:   r.int16,\n  xPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel }),\n  yPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel }),\n  xAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel }),\n  yAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel })\n};\n\nclass ValueRecord {\n  constructor(key = 'valueFormat') {\n    this.key = key;\n  }\n\n  buildStruct(parent) {\n    let struct = parent;\n    while (!struct[this.key] && struct.parent) {\n      struct = struct.parent;\n    }\n\n    if (!struct[this.key]) return;\n\n    let fields = {};\n    fields.rel = () => struct._startOffset;\n\n    let format = struct[this.key];\n    for (let key in format) {\n      if (format[key]) {\n        fields[key] = types[key];\n      }\n    }\n\n    return new r.Struct(fields);\n  }\n\n  size(val, ctx) {\n    return this.buildStruct(ctx).size(val, ctx);\n  }\n\n  decode(stream, parent) {\n    let res = this.buildStruct(parent).decode(stream, parent);\n    delete res.rel;\n    return res;\n  }\n}\n\nlet PairValueRecord = new r.Struct({\n  secondGlyph:    r.uint16,\n  value1:         new ValueRecord('valueFormat1'),\n  value2:         new ValueRecord('valueFormat2')\n});\n\nlet PairSet = new r.Array(PairValueRecord, r.uint16);\n\nlet Class2Record = new r.Struct({\n  value1: new ValueRecord('valueFormat1'),\n  value2: new ValueRecord('valueFormat2')\n});\n\nlet Anchor = new r.VersionedStruct(r.uint16, {\n  1: { // Design units only\n    xCoordinate:    r.int16,\n    yCoordinate:    r.int16\n  },\n\n  2: { // Design units plus contour point\n    xCoordinate:    r.int16,\n    yCoordinate:    r.int16,\n    anchorPoint:    r.uint16\n  },\n\n  3: { // Design units plus Device tables\n    xCoordinate:    r.int16,\n    yCoordinate:    r.int16,\n    xDeviceTable:   new r.Pointer(r.uint16, Device),\n    yDeviceTable:   new r.Pointer(r.uint16, Device)\n  }\n});\n\nlet EntryExitRecord = new r.Struct({\n  entryAnchor:    new r.Pointer(r.uint16, Anchor, {type: 'parent'}),\n  exitAnchor:     new r.Pointer(r.uint16, Anchor, {type: 'parent'})\n});\n\nlet MarkRecord = new r.Struct({\n  class:      r.uint16,\n  markAnchor: new r.Pointer(r.uint16, Anchor, {type: 'parent'})\n});\n\nlet MarkArray = new r.Array(MarkRecord, r.uint16);\n\nlet BaseRecord  = new r.Array(new r.Pointer(r.uint16, Anchor), t => t.parent.classCount);\nlet BaseArray   = new r.Array(BaseRecord, r.uint16);\n\nlet ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), t => t.parent.parent.classCount);\nlet LigatureAttach  = new r.Array(ComponentRecord, r.uint16);\nlet LigatureArray   = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);\n\nlet GPOSLookup = new r.VersionedStruct('lookupType', {\n  1: new r.VersionedStruct(r.uint16, { // Single Adjustment\n    1: { // Single positioning value\n      coverage:       new r.Pointer(r.uint16, Coverage),\n      valueFormat:    ValueFormat,\n      value:          new ValueRecord()\n    },\n    2: {\n      coverage:       new r.Pointer(r.uint16, Coverage),\n      valueFormat:    ValueFormat,\n      valueCount:     r.uint16,\n      values:         new r.LazyArray(new ValueRecord(), 'valueCount')\n    }\n  }),\n\n  2: new r.VersionedStruct(r.uint16, { // Pair Adjustment Positioning\n    1: { // Adjustments for glyph pairs\n      coverage:       new r.Pointer(r.uint16, Coverage),\n      valueFormat1:   ValueFormat,\n      valueFormat2:   ValueFormat,\n      pairSetCount:   r.uint16,\n      pairSets:       new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')\n    },\n\n    2: { // Class pair adjustment\n      coverage:       new r.Pointer(r.uint16, Coverage),\n      valueFormat1:   ValueFormat,\n      valueFormat2:   ValueFormat,\n      classDef1:      new r.Pointer(r.uint16, ClassDef),\n      classDef2:      new r.Pointer(r.uint16, ClassDef),\n      class1Count:    r.uint16,\n      class2Count:    r.uint16,\n      classRecords:   new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')\n    }\n  }),\n\n  3: { // Cursive Attachment Positioning\n    format:             r.uint16,\n    coverage:           new r.Pointer(r.uint16, Coverage),\n    entryExitCount:     r.uint16,\n    entryExitRecords:   new r.Array(EntryExitRecord, 'entryExitCount')\n  },\n\n  4: { // MarkToBase Attachment Positioning\n    format:             r.uint16,\n    markCoverage:       new r.Pointer(r.uint16, Coverage),\n    baseCoverage:       new r.Pointer(r.uint16, Coverage),\n    classCount:         r.uint16,\n    markArray:          new r.Pointer(r.uint16, MarkArray),\n    baseArray:          new r.Pointer(r.uint16, BaseArray)\n  },\n\n  5: { // MarkToLigature Attachment Positioning\n    format:             r.uint16,\n    markCoverage:       new r.Pointer(r.uint16, Coverage),\n    ligatureCoverage:   new r.Pointer(r.uint16, Coverage),\n    classCount:         r.uint16,\n    markArray:          new r.Pointer(r.uint16, MarkArray),\n    ligatureArray:      new r.Pointer(r.uint16, LigatureArray)\n  },\n\n  6: { // MarkToMark Attachment Positioning\n    format:             r.uint16,\n    mark1Coverage:      new r.Pointer(r.uint16, Coverage),\n    mark2Coverage:      new r.Pointer(r.uint16, Coverage),\n    classCount:         r.uint16,\n    mark1Array:         new r.Pointer(r.uint16, MarkArray),\n    mark2Array:         new r.Pointer(r.uint16, BaseArray)\n  },\n\n  7: Context,          // Contextual positioning\n  8: ChainingContext,  // Chaining contextual positioning\n\n  9: { // Extension Positioning\n    posFormat:   r.uint16,\n    lookupType:  r.uint16,   // cannot also be 9\n    extension:   new r.Pointer(r.uint32, null)\n  }\n});\n\n// Fix circular reference\nGPOSLookup.versions[9].extension.type = GPOSLookup;\n\nexport default new r.VersionedStruct(r.uint32, {\n  header: {\n    scriptList:     new r.Pointer(r.uint16, ScriptList),\n    featureList:    new r.Pointer(r.uint16, FeatureList),\n    lookupList:     new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n  },\n\n  0x00010000: {},\n  0x00010001: {\n    featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n  }\n});\n\n// export GPOSLookup for JSTF table\nexport { GPOSLookup };\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device, Context, ChainingContext} from './opentype';\nimport {FeatureVariations} from './variations';\n\nlet Sequence = new r.Array(r.uint16, r.uint16);\nlet AlternateSet = Sequence;\n\nlet Ligature = new r.Struct({\n  glyph:      r.uint16,\n  compCount:  r.uint16,\n  components: new r.Array(r.uint16, t => t.compCount - 1)\n});\n\nlet LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);\n\nlet GSUBLookup = new r.VersionedStruct('lookupType', {\n  1: new r.VersionedStruct(r.uint16, {// Single Substitution\n    1: {\n      coverage:       new r.Pointer(r.uint16, Coverage),\n      deltaGlyphID:   r.int16\n    },\n    2: {\n      coverage:       new r.Pointer(r.uint16, Coverage),\n      glyphCount:     r.uint16,\n      substitute:     new r.LazyArray(r.uint16, 'glyphCount')\n    }\n  }),\n\n  2: { // Multiple Substitution\n    substFormat:    r.uint16,\n    coverage:       new r.Pointer(r.uint16, Coverage),\n    count:          r.uint16,\n    sequences:      new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')\n  },\n\n  3: { // Alternate Substitution\n    substFormat:    r.uint16,\n    coverage:       new r.Pointer(r.uint16, Coverage),\n    count:          r.uint16,\n    alternateSet:   new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')\n  },\n\n  4: { // Ligature Substitution\n    substFormat:    r.uint16,\n    coverage:       new r.Pointer(r.uint16, Coverage),\n    count:          r.uint16,\n    ligatureSets:   new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')\n  },\n\n  5: Context,         // Contextual Substitution\n  6: ChainingContext, // Chaining Contextual Substitution\n\n  7: { // Extension Substitution\n    substFormat:   r.uint16,\n    lookupType:    r.uint16,   // cannot also be 7\n    extension:     new r.Pointer(r.uint32, null)\n  },\n\n  8: { // Reverse Chaining Contextual Single Substitution\n    substFormat:            r.uint16,\n    coverage:               new r.Pointer(r.uint16, Coverage),\n    backtrackCoverage:      new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n    lookaheadGlyphCount:    r.uint16,\n    lookaheadCoverage:      new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n    glyphCount:             r.uint16,\n    substitutes:            new r.Array(r.uint16, 'glyphCount')\n  }\n});\n\n// Fix circular reference\nGSUBLookup.versions[7].extension.type = GSUBLookup;\n\nexport default new r.VersionedStruct(r.uint32, {\n  header: {\n    scriptList:     new r.Pointer(r.uint16, ScriptList),\n    featureList:    new r.Pointer(r.uint16, FeatureList),\n    lookupList:     new r.Pointer(r.uint16, new LookupList(GSUBLookup))\n  },\n\n  0x00010000: {},\n  0x00010001: {\n    featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n  }\n});\n","import * as r from 'restructure';\nimport { ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device } from './opentype';\nimport { GPOSLookup } from './GPOS';\n\nlet JstfGSUBModList = new r.Array(r.uint16, r.uint16);\n\nlet JstfPriority = new r.Struct({\n  shrinkageEnableGSUB:    new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageDisableGSUB:   new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageEnableGPOS:    new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageDisableGPOS:   new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageJstfMax:       new r.Pointer(r.uint16, new LookupList(GPOSLookup)),\n  extensionEnableGSUB:    new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionDisableGSUB:   new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionEnableGPOS:    new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionDisableGPOS:   new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionJstfMax:       new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n});\n\nlet JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);\n\nlet JstfLangSysRecord = new r.Struct({\n  tag:         new r.String(4),\n  jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)\n});\n\nlet JstfScript = new r.Struct({\n  extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)), // array of glyphs to extend line length\n  defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),\n  langSysCount:   r.uint16,\n  langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')\n});\n\nlet JstfScriptRecord = new r.Struct({\n  tag:    new r.String(4),\n  script: new r.Pointer(r.uint16, JstfScript, {type: 'parent'})\n});\n\nexport default new r.Struct({\n  version:     r.uint32,  // should be 0x00010000\n  scriptCount: r.uint16,\n  scriptList:  new r.Array(JstfScriptRecord, 'scriptCount')\n});\n","import * as r from 'restructure';\nimport { resolveLength } from 'restructure';\nimport { ItemVariationStore } from './variations';\n\n// TODO: add this to restructure\nclass VariableSizeNumber {\n  constructor(size) {\n    this._size = size;\n  }\n\n  decode(stream, parent) {\n    switch (this.size(0, parent)) {\n      case 1: return stream.readUInt8();\n      case 2: return stream.readUInt16BE();\n      case 3: return stream.readUInt24BE();\n      case 4: return stream.readUInt32BE();\n    }\n  }\n\n  size(val, parent) {\n    return resolveLength(this._size, null, parent);\n  }\n}\n\nlet MapDataEntry = new r.Struct({\n  entry: new VariableSizeNumber(t => ((t.parent.entryFormat & 0x0030) >> 4) + 1),\n  outerIndex: t => t.entry >> ((t.parent.entryFormat & 0x000F) + 1),\n  innerIndex: t => t.entry & ((1 << ((t.parent.entryFormat & 0x000F) + 1)) - 1)\n});\n\nlet DeltaSetIndexMap = new r.Struct({\n  entryFormat: r.uint16,\n  mapCount: r.uint16,\n  mapData: new r.Array(MapDataEntry, 'mapCount')\n});\n\nexport default new r.Struct({\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),\n  advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n  LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n  RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)\n});\n","import * as r from 'restructure';\n\nlet Signature = new r.Struct({\n  format: r.uint32,\n  length: r.uint32,\n  offset: r.uint32\n});\n\nlet SignatureBlock = new r.Struct({\n  reserved:       new r.Reserved(r.uint16, 2),\n  cbSignature:    r.uint32,  // Length (in bytes) of the PKCS#7 packet in pbSignature\n  signature:      new r.Buffer('cbSignature')\n});\n\nexport default new r.Struct({\n  ulVersion:       r.uint32,  // Version number of the DSIG table (0x00000001)\n  usNumSigs:       r.uint16,  // Number of signatures in the table\n  usFlag:          r.uint16,  // Permission flags\n  signatures:      new r.Array(Signature, 'usNumSigs'),\n  signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')\n});\n","import * as r from 'restructure';\n\nlet GaspRange = new r.Struct({\n  rangeMaxPPEM:       r.uint16,                  // Upper limit of range, in ppem\n  rangeGaspBehavior:  new r.Bitfield(r.uint16, [ // Flags describing desired rasterizer behavior\n    'grayscale', 'gridfit',\n    'symmetricSmoothing', 'symmetricGridfit'     // only in version 1, for ClearType\n  ])\n});\n\nexport default new r.Struct({\n  version:    r.uint16,  // set to 0\n  numRanges:  r.uint16,\n  gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem\n});\n","import * as r from 'restructure';\n\nlet DeviceRecord = new r.Struct({\n  pixelSize:      r.uint8,\n  maximumWidth:   r.uint8,\n  widths:         new r.Array(r.uint8, t => t.parent.parent.maxp.numGlyphs)\n});\n\n// The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes\nexport default new r.Struct({\n  version:            r.uint16,\n  numRecords:         r.int16,\n  sizeDeviceRecord:   r.int32,\n  records:            new r.Array(DeviceRecord, 'numRecords')\n});\n","import * as r from 'restructure';\n\nlet KernPair = new r.Struct({\n  left:   r.uint16,\n  right:  r.uint16,\n  value:  r.int16\n});\n\nlet ClassTable = new r.Struct({\n  firstGlyph: r.uint16,\n  nGlyphs: r.uint16,\n  offsets: new r.Array(r.uint16, 'nGlyphs'),\n  max: t => t.offsets.length && Math.max.apply(Math, t.offsets)\n});\n\nlet Kern2Array = new r.Struct({\n  off: t => t._startOffset - t.parent.parent._startOffset,\n  len: t => (((t.parent.leftTable.max - t.off) / t.parent.rowWidth) + 1) * (t.parent.rowWidth / 2),\n  values: new r.LazyArray(r.int16, 'len')\n});\n\nlet KernSubtable = new r.VersionedStruct('format', {\n  0: {\n    nPairs:         r.uint16,\n    searchRange:    r.uint16,\n    entrySelector:  r.uint16,\n    rangeShift:     r.uint16,\n    pairs:          new r.Array(KernPair, 'nPairs')\n  },\n\n  2: {\n    rowWidth:   r.uint16,\n    leftTable:  new r.Pointer(r.uint16, ClassTable, {type: 'parent'}),\n    rightTable: new r.Pointer(r.uint16, ClassTable, {type: 'parent'}),\n    array:      new r.Pointer(r.uint16, Kern2Array, {type: 'parent'})\n  },\n\n  3: {\n    glyphCount:       r.uint16,\n    kernValueCount:   r.uint8,\n    leftClassCount:   r.uint8,\n    rightClassCount:  r.uint8,\n    flags:            r.uint8,\n    kernValue:        new r.Array(r.int16, 'kernValueCount'),\n    leftClass:        new r.Array(r.uint8, 'glyphCount'),\n    rightClass:       new r.Array(r.uint8, 'glyphCount'),\n    kernIndex:        new r.Array(r.uint8, t => t.leftClassCount * t.rightClassCount)\n  }\n});\n\nlet KernTable = new r.VersionedStruct('version', {\n  0: { // Microsoft uses this format\n    subVersion: r.uint16,  // Microsoft has an extra sub-table version number\n    length:     r.uint16,  // Length of the subtable, in bytes\n    format:     r.uint8,   // Format of subtable\n    coverage:   new r.Bitfield(r.uint8, [\n      'horizontal',    // 1 if table has horizontal data, 0 if vertical\n      'minimum',       // If set to 1, the table has minimum values. If set to 0, the table has kerning values.\n      'crossStream',   // If set to 1, kerning is perpendicular to the flow of the text\n      'override'      // If set to 1 the value in this table replaces the accumulated value\n    ]),\n    subtable:   KernSubtable,\n    padding: new r.Reserved(r.uint8, t => t.length - t._currentOffset)\n  },\n  1: { // Apple uses this format\n    length:     r.uint32,\n    coverage:   new r.Bitfield(r.uint8, [\n      null, null, null, null, null,\n      'variation',     // Set if table has variation kerning values\n      'crossStream',   // Set if table has cross-stream kerning values\n      'vertical'      // Set if table has vertical kerning values\n    ]),\n    format:     r.uint8,\n    tupleIndex: r.uint16,\n    subtable:   KernSubtable,\n    padding: new r.Reserved(r.uint8, t => t.length - t._currentOffset)\n  }\n});\n\nexport default new r.VersionedStruct(r.uint16, {\n  0: { // Microsoft Version\n    nTables:    r.uint16,\n    tables:     new r.Array(KernTable, 'nTables')\n  },\n\n  1: { // Apple Version\n    reserved:   new r.Reserved(r.uint16), // the other half of the version number\n    nTables:    r.uint32,\n    tables:     new r.Array(KernTable, 'nTables')\n  }\n});\n","import * as r from 'restructure';\n\n// Linear Threshold table\n// Records the ppem for each glyph at which the scaling becomes linear again,\n// despite instructions effecting the advance width\nexport default new r.Struct({\n  version:    r.uint16,\n  numGlyphs:  r.uint16,\n  yPels:      new r.Array(r.uint8, 'numGlyphs')\n});\n","import * as r from 'restructure';\n\n// PCL 5 Table\n// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines\nexport default new r.Struct({\n  version:              r.uint16,\n  fontNumber:           r.uint32,\n  pitch:                r.uint16,\n  xHeight:              r.uint16,\n  style:                r.uint16,\n  typeFamily:           r.uint16,\n  capHeight:            r.uint16,\n  symbolSet:            r.uint16,\n  typeface:             new r.String(16),\n  characterComplement:  new r.String(8),\n  fileName:             new r.String(6),\n  strokeWeight:         new r.String(1),\n  widthType:            new r.String(1),\n  serifStyle:           r.uint8,\n  reserved:             new r.Reserved(r.uint8)\n});\n","import * as r from 'restructure';\n\n// VDMX tables contain ascender/descender overrides for certain (usually small)\n// sizes. This is needed in order to match font metrics on Windows.\n\nlet Ratio = new r.Struct({\n  bCharSet:       r.uint8,                             // Character set\n  xRatio:         r.uint8,                             // Value to use for x-Ratio\n  yStartRatio:    r.uint8,                             // Starting y-Ratio value\n  yEndRatio:      r.uint8                              // Ending y-Ratio value\n});\n\nlet vTable = new r.Struct({\n  yPelHeight:     r.uint16,                            // yPelHeight to which values apply\n  yMax:           r.int16,                             // Maximum value (in pels) for this yPelHeight\n  yMin:           r.int16                              // Minimum value (in pels) for this yPelHeight\n});\n\nlet VdmxGroup = new r.Struct({\n  recs:           r.uint16,                            // Number of height records in this group\n  startsz:        r.uint8,                             // Starting yPelHeight\n  endsz:          r.uint8,                             // Ending yPelHeight\n  entries:        new r.Array(vTable, 'recs')          // The VDMX records\n});\n\nexport default new r.Struct({\n  version:        r.uint16,                            // Version number (0 or 1)\n  numRecs:        r.uint16,                            // Number of VDMX groups present\n  numRatios:      r.uint16,                            // Number of aspect ratio groupings\n  ratioRanges:    new r.Array(Ratio, 'numRatios'),     // Ratio ranges\n  offsets:        new r.Array(r.uint16, 'numRatios'),  // Offset to the VDMX group for this ratio range\n  groups:         new r.Array(VdmxGroup, 'numRecs')    // The actual VDMX groupings\n});\n","import * as r from 'restructure';\n\n// Vertical Header Table\nexport default new r.Struct({\n  version:                r.uint16,  // Version number of the Vertical Header Table\n  ascent:                 r.int16,   // The vertical typographic ascender for this font\n  descent:                r.int16,   // The vertical typographic descender for this font\n  lineGap:                r.int16,   // The vertical typographic line gap for this font\n  advanceHeightMax:       r.int16,   // The maximum advance height measurement found in the font\n  minTopSideBearing:      r.int16,   // The minimum top side bearing measurement found in the font\n  minBottomSideBearing:   r.int16,   // The minimum bottom side bearing measurement found in the font\n  yMaxExtent:             r.int16,\n  caretSlopeRise:         r.int16,   // Caret slope (rise/run)\n  caretSlopeRun:          r.int16,\n  caretOffset:            r.int16,   // Set value equal to 0 for nonslanted fonts\n  reserved:               new r.Reserved(r.int16, 4),\n  metricDataFormat:       r.int16,   // Set to 0\n  numberOfMetrics:        r.uint16   // Number of advance heights in the Vertical Metrics table\n});\n","import * as r from 'restructure';\n\nlet VmtxEntry = new r.Struct({\n  advance: r.uint16,  // The advance height of the glyph\n  bearing: r.int16    // The top sidebearing of the glyph\n});\n\n// Vertical Metrics Table\nexport default new r.Struct({\n  metrics:  new r.LazyArray(VmtxEntry, t => t.parent.vhea.numberOfMetrics),\n  bearings: new r.LazyArray(r.int16, t => t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics)\n});\n","import * as r from 'restructure';\n\nlet shortFrac = new r.Fixed(16, 'BE', 14);\n\nlet Correspondence = new r.Struct({\n  fromCoord: shortFrac,\n  toCoord: shortFrac\n});\n\nlet Segment = new r.Struct({\n  pairCount: r.uint16,\n  correspondence: new r.Array(Correspondence, 'pairCount')\n});\n\nexport default new r.Struct({\n  version: r.fixed32,\n  axisCount: r.uint32,\n  segment: new r.Array(Segment, 'axisCount')\n});\n","import * as r from 'restructure';\nimport { LookupTable } from './aat';\n\nlet BslnSubtable = new r.VersionedStruct('format', {\n  0: { // Distance-based, no mapping\n    deltas: new r.Array(r.int16, 32)\n  },\n\n  1: { // Distance-based, with mapping\n    deltas: new r.Array(r.int16, 32),\n    mappingData: new LookupTable(r.uint16)\n  },\n\n  2: { // Control point-based, no mapping\n    standardGlyph: r.uint16,\n    controlPoints: new r.Array(r.uint16, 32)\n  },\n\n  3: { // Control point-based, with mapping\n    standardGlyph: r.uint16,\n    controlPoints: new r.Array(r.uint16, 32),\n    mappingData: new LookupTable(r.uint16)\n  }\n});\n\nexport default new r.Struct({\n  version: r.fixed32,\n  format: r.uint16,\n  defaultBaseline: r.uint16,\n  subtable: BslnSubtable\n});\n","import * as r from 'restructure';\n\nclass UnboundedArrayAccessor {\n  constructor(type, stream, parent) {\n    this.type = type;\n    this.stream = stream;\n    this.parent = parent;\n    this.base = this.stream.pos;\n    this._items = [];\n  }\n\n  getItem(index) {\n    if (this._items[index] == null) {\n      let pos = this.stream.pos;\n      this.stream.pos = this.base + this.type.size(null, this.parent) * index;\n      this._items[index] = this.type.decode(this.stream, this.parent);\n      this.stream.pos = pos;\n    }\n\n    return this._items[index];\n  }\n\n  inspect() {\n    return `[UnboundedArray ${this.type.constructor.name}]`;\n  }\n}\n\nexport class UnboundedArray extends r.Array {\n  constructor(type) {\n    super(type, 0);\n  }\n\n  decode(stream, parent) {\n    return new UnboundedArrayAccessor(this.type, stream, parent);\n  }\n}\n\nexport let LookupTable = function(ValueType = r.uint16) {\n  // Helper class that makes internal structures invisible to pointers\n  class Shadow {\n    constructor(type) {\n      this.type = type;\n    }\n\n    decode(stream, ctx) {\n      ctx = ctx.parent.parent;\n      return this.type.decode(stream, ctx);\n    }\n\n    size(val, ctx) {\n      ctx = ctx.parent.parent;\n      return this.type.size(val, ctx);\n    }\n\n    encode(stream, val, ctx) {\n      ctx = ctx.parent.parent;\n      return this.type.encode(stream, val, ctx);\n    }\n  }\n\n  ValueType = new Shadow(ValueType);\n\n  let BinarySearchHeader = new r.Struct({\n    unitSize: r.uint16,\n    nUnits: r.uint16,\n    searchRange: r.uint16,\n    entrySelector: r.uint16,\n    rangeShift: r.uint16\n  });\n\n  let LookupSegmentSingle = new r.Struct({\n    lastGlyph: r.uint16,\n    firstGlyph: r.uint16,\n    value: ValueType\n  });\n\n  let LookupSegmentArray = new r.Struct({\n    lastGlyph: r.uint16,\n    firstGlyph: r.uint16,\n    values: new r.Pointer(r.uint16, new r.Array(ValueType, t => t.lastGlyph - t.firstGlyph + 1), {type: 'parent'})\n  });\n\n  let LookupSingle = new r.Struct({\n    glyph: r.uint16,\n    value: ValueType\n  });\n\n  return new r.VersionedStruct(r.uint16, {\n    0: {\n      values: new UnboundedArray(ValueType) // length == number of glyphs maybe?\n    },\n    2: {\n      binarySearchHeader: BinarySearchHeader,\n      segments: new r.Array(LookupSegmentSingle, t => t.binarySearchHeader.nUnits)\n    },\n    4: {\n      binarySearchHeader: BinarySearchHeader,\n      segments: new r.Array(LookupSegmentArray, t => t.binarySearchHeader.nUnits)\n    },\n    6: {\n      binarySearchHeader: BinarySearchHeader,\n      segments: new r.Array(LookupSingle, t => t.binarySearchHeader.nUnits)\n    },\n    8: {\n      firstGlyph: r.uint16,\n      count: r.uint16,\n      values: new r.Array(ValueType, 'count')\n    }\n  });\n};\n\nexport function StateTable(entryData = {}, lookupType = r.uint16) {\n  let entry = Object.assign({\n    newState: r.uint16,\n    flags: r.uint16\n  }, entryData);\n\n  let Entry = new r.Struct(entry);\n  let StateArray = new UnboundedArray(new r.Array(r.uint16, t => t.nClasses));\n\n  let StateHeader = new r.Struct({\n    nClasses: r.uint32,\n    classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),\n    stateArray: new r.Pointer(r.uint32, StateArray),\n    entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))\n  });\n\n  return StateHeader;\n}\n\n// This is the old version of the StateTable structure\nexport function StateTable1(entryData = {}, lookupType = r.uint16) {\n  let ClassLookupTable = new r.Struct({\n    version() { return 8; }, // simulate LookupTable\n    firstGlyph: r.uint16,\n    values: new r.Array(r.uint8, r.uint16)\n  });\n\n  let entry = Object.assign({\n    newStateOffset: r.uint16,\n    // convert offset to stateArray index\n    newState: t => (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses,\n    flags: r.uint16\n  }, entryData);\n\n  let Entry = new r.Struct(entry);\n  let StateArray = new UnboundedArray(new r.Array(r.uint8, t => t.nClasses));\n\n  let StateHeader1 = new r.Struct({\n    nClasses: r.uint16,\n    classTable: new r.Pointer(r.uint16, ClassLookupTable),\n    stateArray: new r.Pointer(r.uint16, StateArray),\n    entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))\n  });\n\n  return StateHeader1;\n}\n","import * as r from 'restructure';\n\nlet Setting = new r.Struct({\n  setting: r.uint16,\n  nameIndex: r.int16,\n  name: t => t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]\n});\n\nlet FeatureName = new r.Struct({\n  feature: r.uint16,\n  nSettings: r.uint16,\n  settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), { type: 'parent' }),\n  featureFlags: new r.Bitfield(r.uint8, [\n    null, null, null, null, null, null,\n    'hasDefault', 'exclusive'\n  ]),\n  defaultSetting: r.uint8,\n  nameIndex: r.int16,\n  name: t => t.parent.parent.name.records.fontFeatures[t.nameIndex]\n});\n\nexport default new r.Struct({\n  version: r.fixed32,\n  featureNameCount: r.uint16,\n  reserved1: new r.Reserved(r.uint16),\n  reserved2: new r.Reserved(r.uint32),\n  featureNames: new r.Array(FeatureName, 'featureNameCount')\n});\n","import * as r from 'restructure';\n\nlet Axis = new r.Struct({\n  axisTag: new r.String(4),\n  minValue: r.fixed32,\n  defaultValue: r.fixed32,\n  maxValue: r.fixed32,\n  flags: r.uint16,\n  nameID: r.uint16,\n  name: t => t.parent.parent.name.records.fontFeatures[t.nameID]\n});\n\nlet Instance = new r.Struct({\n  nameID: r.uint16,\n  name: t => t.parent.parent.name.records.fontFeatures[t.nameID],\n  flags: r.uint16,\n  coord: new r.Array(r.fixed32, t => t.parent.axisCount),\n  postscriptNameID: new r.Optional(r.uint16, t => t.parent.instanceSize - t._currentOffset > 0)\n});\n\nexport default new r.Struct({\n  version: r.fixed32,\n  offsetToData: r.uint16,\n  countSizePairs: r.uint16,\n  axisCount: r.uint16,\n  axisSize: r.uint16,\n  instanceCount: r.uint16,\n  instanceSize: r.uint16,\n  axis: new r.Array(Axis, 'axisCount'),\n  instance: new r.Array(Instance, 'instanceCount')\n});\n","import * as r from 'restructure';\n\nlet shortFrac = new r.Fixed(16, 'BE', 14);\nclass Offset {\n  static decode(stream, parent) {\n    // In short format, offsets are multiplied by 2.\n    // This doesn't seem to be documented by Apple, but it\n    // is implemented this way in Freetype.\n    return parent.flags\n      ? stream.readUInt32BE()\n      : stream.readUInt16BE() * 2;\n  }\n}\n\nlet gvar = new r.Struct({\n  version: r.uint16,\n  reserved: new r.Reserved(r.uint16),\n  axisCount: r.uint16,\n  globalCoordCount: r.uint16,\n  globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac, 'axisCount'), 'globalCoordCount')),\n  glyphCount: r.uint16,\n  flags: r.uint16,\n  offsetToData: r.uint32,\n  offsets: new r.Array(new r.Pointer(Offset, 'void', { relativeTo: ctx => ctx.offsetToData, allowNull: false }), t => t.glyphCount + 1)\n});\n\nexport default gvar;\n","import * as r from 'restructure';\nimport { LookupTable, StateTable1 } from './aat';\n\nlet ClassTable = new r.Struct({\n  length: r.uint16,\n  coverage: r.uint16,\n  subFeatureFlags: r.uint32,\n  stateTable: new StateTable1\n});\n\nlet WidthDeltaRecord = new r.Struct({\n  justClass: r.uint32,\n  beforeGrowLimit: r.fixed32,\n  beforeShrinkLimit: r.fixed32,\n  afterGrowLimit: r.fixed32,\n  afterShrinkLimit: r.fixed32,\n  growFlags: r.uint16,\n  shrinkFlags: r.uint16\n});\n\nlet WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);\n\nlet ActionData = new r.VersionedStruct('actionType', {\n  0: { // Decomposition action\n    lowerLimit: r.fixed32,\n    upperLimit: r.fixed32,\n    order: r.uint16,\n    glyphs: new r.Array(r.uint16, r.uint16)\n  },\n\n  1: { // Unconditional add glyph action\n    addGlyph: r.uint16\n  },\n\n  2: { // Conditional add glyph action\n    substThreshold: r.fixed32,\n    addGlyph: r.uint16,\n    substGlyph: r.uint16\n  },\n\n  3: {}, // Stretch glyph action (no data, not supported by CoreText)\n\n  4: { // Ductile glyph action (not supported by CoreText)\n    variationAxis: r.uint32,\n    minimumLimit: r.fixed32,\n    noStretchValue: r.fixed32,\n    maximumLimit: r.fixed32\n  },\n\n  5: { // Repeated add glyph action\n    flags: r.uint16,\n    glyph: r.uint16\n  }\n});\n\nlet Action = new r.Struct({\n  actionClass: r.uint16,\n  actionType: r.uint16,\n  actionLength: r.uint32,\n  actionData: ActionData,\n  padding: new r.Reserved(r.uint8, t => t.actionLength - t._currentOffset)\n});\n\nlet PostcompensationAction = new r.Array(Action, r.uint32);\nlet PostCompensationTable = new r.Struct({\n  lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))\n});\n\nlet JustificationTable = new r.Struct({\n  classTable: new r.Pointer(r.uint16, ClassTable, { type: 'parent' }),\n  wdcOffset: r.uint16,\n  postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, { type: 'parent' }),\n  widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, { type: 'parent', relativeTo: ctx => ctx.wdcOffset }))\n});\n\nexport default new r.Struct({\n  version: r.uint32,\n  format: r.uint16,\n  horizontal: new r.Pointer(r.uint16, JustificationTable),\n  vertical: new r.Pointer(r.uint16, JustificationTable)\n});\n","import * as r from 'restructure';\nimport { UnboundedArray, LookupTable, StateTable } from './aat';\n\nlet LigatureData = {\n  action: r.uint16\n};\n\nlet ContextualData = {\n  markIndex: r.uint16,\n  currentIndex: r.uint16\n};\n\nlet InsertionData = {\n  currentInsertIndex: r.uint16,\n  markedInsertIndex: r.uint16\n};\n\nlet SubstitutionTable = new r.Struct({\n  items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable))\n});\n\nlet SubtableData = new r.VersionedStruct('type', {\n  0: { // Indic Rearrangement Subtable\n    stateTable: new StateTable\n  },\n\n  1: { // Contextual Glyph Substitution Subtable\n    stateTable: new StateTable(ContextualData),\n    substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)\n  },\n\n  2: { // Ligature subtable\n    stateTable: new StateTable(LigatureData),\n    ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),\n    components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),\n    ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n  },\n\n  4: { // Non-contextual Glyph Substitution Subtable\n    lookupTable: new LookupTable\n  },\n\n  5: { // Glyph Insertion Subtable\n    stateTable: new StateTable(InsertionData),\n    insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n  }\n});\n\nlet Subtable = new r.Struct({\n  length: r.uint32,\n  coverage: r.uint24,\n  type: r.uint8,\n  subFeatureFlags: r.uint32,\n  table: SubtableData,\n  padding: new r.Reserved(r.uint8, t => t.length - t._currentOffset)\n});\n\nlet FeatureEntry = new r.Struct({\n  featureType:    r.uint16,\n  featureSetting: r.uint16,\n  enableFlags:    r.uint32,\n  disableFlags:   r.uint32\n});\n\nlet MorxChain = new r.Struct({\n  defaultFlags:     r.uint32,\n  chainLength:      r.uint32,\n  nFeatureEntries:  r.uint32,\n  nSubtables:       r.uint32,\n  features:         new r.Array(FeatureEntry, 'nFeatureEntries'),\n  subtables:        new r.Array(Subtable, 'nSubtables')\n});\n\nexport default new r.Struct({\n  version:  r.uint16,\n  unused:   new r.Reserved(r.uint16),\n  nChains:  r.uint32,\n  chains:   new r.Array(MorxChain, 'nChains')\n});\n","import * as r from 'restructure';\nimport { LookupTable } from './aat';\n\nlet OpticalBounds = new r.Struct({\n  left: r.int16,\n  top: r.int16,\n  right: r.int16,\n  bottom: r.int16\n});\n\nexport default new r.Struct({\n  version: r.fixed32,\n  format: r.uint16,\n  lookupTable: new LookupTable(OpticalBounds)\n});\n","import { binarySearch } from './utils';\nimport { encodingExists, getEncoding, getEncodingMapping } from './encodings';\nimport { cache } from './decorators';\nimport { range } from './utils';\n\nexport default class CmapProcessor {\n  constructor(cmapTable) {\n    // Attempt to find a Unicode cmap first\n    this.encoding = null;\n    this.cmap = this.findSubtable(cmapTable, [\n      // 32-bit subtables\n      [3, 10],\n      [0, 6],\n      [0, 4],\n\n      // 16-bit subtables\n      [3, 1],\n      [0, 3],\n      [0, 2],\n      [0, 1],\n      [0, 0]\n    ]);\n\n    // If not unicode cmap was found, take the first table with a supported encoding.\n    if (!this.cmap) {\n      for (let cmap of cmapTable.tables) {\n        let encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);\n        let mapping = getEncodingMapping(encoding);\n        if (mapping) {\n          this.cmap = cmap.table;\n          this.encoding = mapping;\n        }\n      }\n    }\n\n    if (!this.cmap) {\n      throw new Error(\"Could not find a supported cmap table\");\n    }\n\n    this.uvs = this.findSubtable(cmapTable, [[0, 5]]);\n    if (this.uvs && this.uvs.version !== 14) {\n      this.uvs = null;\n    }\n  }\n\n  findSubtable(cmapTable, pairs) {\n    for (let [platformID, encodingID] of pairs) {\n      for (let cmap of cmapTable.tables) {\n        if (cmap.platformID === platformID && cmap.encodingID === encodingID) {\n          return cmap.table;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  lookup(codepoint, variationSelector) {\n    // If there is no Unicode cmap in this font, we need to re-encode\n    // the codepoint in the encoding that the cmap supports.\n    if (this.encoding) {\n      codepoint = this.encoding.get(codepoint) || codepoint;\n\n      // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.\n    } else if (variationSelector) {\n      let gid = this.getVariationSelector(codepoint, variationSelector);\n      if (gid) {\n        return gid;\n      }\n    }\n\n    let cmap = this.cmap;\n    switch (cmap.version) {\n      case 0:\n        return cmap.codeMap.get(codepoint) || 0;\n\n      case 4: {\n        let min = 0;\n        let max = cmap.segCount - 1;\n        while (min <= max) {\n          let mid = (min + max) >> 1;\n\n          if (codepoint < cmap.startCode.get(mid)) {\n            max = mid - 1;\n          } else if (codepoint > cmap.endCode.get(mid)) {\n            min = mid + 1;\n          } else {\n            let rangeOffset = cmap.idRangeOffset.get(mid);\n            let gid;\n\n            if (rangeOffset === 0) {\n              gid = codepoint + cmap.idDelta.get(mid);\n            } else {\n              let index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);\n              gid = cmap.glyphIndexArray.get(index) || 0;\n              if (gid !== 0) {\n                gid += cmap.idDelta.get(mid);\n              }\n            }\n\n            return gid & 0xffff;\n          }\n        }\n\n        return 0;\n      }\n\n      case 8:\n        throw new Error('TODO: cmap format 8');\n\n      case 6:\n      case 10:\n        return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;\n\n      case 12:\n      case 13: {\n        let min = 0;\n        let max = cmap.nGroups - 1;\n        while (min <= max) {\n          let mid = (min + max) >> 1;\n          let group = cmap.groups.get(mid);\n\n          if (codepoint < group.startCharCode) {\n            max = mid - 1;\n          } else if (codepoint > group.endCharCode) {\n            min = mid + 1;\n          } else {\n            if (cmap.version === 12) {\n              return group.glyphID + (codepoint - group.startCharCode);\n            } else {\n              return group.glyphID;\n            }\n          }\n        }\n\n        return 0;\n      }\n\n      case 14:\n        throw new Error('TODO: cmap format 14');\n\n      default:\n        throw new Error(`Unknown cmap format ${cmap.version}`);\n    }\n  }\n\n  getVariationSelector(codepoint, variationSelector) {\n    if (!this.uvs) {\n      return 0;\n    }\n\n    let selectors = this.uvs.varSelectors.toArray();\n    let i = binarySearch(selectors, x => variationSelector - x.varSelector);\n    let sel = selectors[i];\n\n    if (i !== -1 && sel.defaultUVS) {\n      i = binarySearch(sel.defaultUVS, x =>\n        codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0\n      );\n    }\n\n    if (i !== -1 && sel.nonDefaultUVS) {\n      i = binarySearch(sel.nonDefaultUVS, x => codepoint - x.unicodeValue);\n      if (i !== -1) {\n        return sel.nonDefaultUVS[i].glyphID;\n      }\n    }\n\n    return 0;\n  }\n\n  @cache\n  getCharacterSet() {\n    let cmap = this.cmap;\n    switch (cmap.version) {\n      case 0:\n        return range(0, cmap.codeMap.length);\n\n      case 4: {\n        let res = [];\n        let endCodes = cmap.endCode.toArray();\n        for (let i = 0; i < endCodes.length; i++) {\n          let tail = endCodes[i] + 1;\n          let start = cmap.startCode.get(i);\n          res.push(...range(start, tail));\n        }\n\n        return res;\n      }\n\n      case 8:\n        throw new Error('TODO: cmap format 8');\n\n      case 6:\n      case 10:\n        return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);\n\n      case 12:\n      case 13: {\n        let res = [];\n        for (let group of cmap.groups.toArray()) {\n          res.push(...range(group.startCharCode, group.endCharCode + 1));\n        }\n\n        return res;\n      }\n\n      case 14:\n        throw new Error('TODO: cmap format 14');\n\n      default:\n        throw new Error(`Unknown cmap format ${cmap.version}`);\n    }\n  }\n\n  @cache\n  codePointsForGlyph(gid) {\n    let cmap = this.cmap;\n    switch (cmap.version) {\n      case 0: {\n        let res = [];\n        for (let i = 0; i < 256; i++) {\n          if (cmap.codeMap.get(i) === gid) {\n            res.push(i);\n          }\n        }\n\n        return res;\n      }\n\n      case 4: {\n        let res = [];\n        for (let i = 0; i < cmap.segCount; i++) {\n          let end = cmap.endCode.get(i);\n          let start = cmap.startCode.get(i);\n          let rangeOffset = cmap.idRangeOffset.get(i);\n          let delta = cmap.idDelta.get(i);\n\n          for (var c = start; c <= end; c++) {\n            let g = 0;\n            if (rangeOffset === 0) {\n              g = c + delta;\n            } else {\n              let index = rangeOffset / 2 + (c - start) - (cmap.segCount - i);\n              g = cmap.glyphIndexArray.get(index) || 0;\n              if (g !== 0) {\n                g += delta;\n              }\n            }\n\n            if (g === gid) {\n              res.push(c);\n            }\n          }\n        }\n\n        return res;\n      }\n\n      case 12: {\n        let res = [];\n        for (let group of cmap.groups.toArray()) {\n          if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {\n            res.push(group.startCharCode + (gid - group.glyphID));\n          }\n        }\n\n        return res;\n      }\n\n      case 13: {\n        let res = [];\n        for (let group of cmap.groups.toArray()) {\n          if (gid === group.glyphID) {\n            res.push(...range(group.startCharCode, group.endCharCode + 1));\n          }\n        }\n\n        return res;\n      }\n\n      default:\n        throw new Error(`Unknown cmap format ${cmap.version}`);\n    }\n  }\n}\n","export function binarySearch(arr, cmp) {\n  let min = 0;\n  let max = arr.length - 1;\n  while (min <= max) {\n    let mid = (min + max) >> 1;\n    let res = cmp(arr[mid]);\n\n    if (res < 0) {\n      max = mid - 1;\n    } else if (res > 0) {\n      min = mid + 1;\n    } else {\n      return mid;\n    }\n  }\n\n  return -1;\n}\n\nexport function range(index, end) {\n  let range = [];\n  while (index < end) {\n    range.push(index++);\n  }\n  return range;\n}\n\nexport const asciiDecoder = new TextDecoder('ascii');\n\n// Based on https://github.com/niklasvh/base64-arraybuffer. MIT license.\nconst CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst LOOKUP = new Uint8Array(256);\nfor (let i = 0; i < CHARS.length; i++) {\n  LOOKUP[CHARS.charCodeAt(i)] = i;\n}\n\nexport function decodeBase64(base64) {\n  let bufferLength = base64.length * 0.75;\n\n  if (base64[base64.length - 1] === '=') {\n    bufferLength--;\n    if (base64[base64.length - 2] === '=') {\n      bufferLength--;\n    }\n  }\n\n  let bytes = new Uint8Array(bufferLength);\n  let p = 0;\n\n  for (let i = 0, len = base64.length; i < len; i += 4) {\n    let encoded1 = LOOKUP[base64.charCodeAt(i)];\n    let encoded2 = LOOKUP[base64.charCodeAt(i + 1)];\n    let encoded3 = LOOKUP[base64.charCodeAt(i + 2)];\n    let encoded4 = LOOKUP[base64.charCodeAt(i + 3)];\n\n    bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n    bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n    bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n  }\n\n  return bytes;\n}\n","import KernProcessor from './KernProcessor';\nimport UnicodeLayoutEngine from './UnicodeLayoutEngine';\nimport GlyphRun from './GlyphRun';\nimport GlyphPosition from './GlyphPosition';\nimport * as Script from './Script';\nimport AATLayoutEngine from '../aat/AATLayoutEngine';\nimport OTLayoutEngine from '../opentype/OTLayoutEngine';\n\nexport default class LayoutEngine {\n  constructor(font) {\n    this.font = font;\n    this.unicodeLayoutEngine = null;\n    this.kernProcessor = null;\n\n    // Choose an advanced layout engine. We try the AAT morx table first since more\n    // scripts are currently supported because the shaping logic is built into the font.\n    if (this.font.morx) {\n      this.engine = new AATLayoutEngine(this.font);\n\n    } else if (this.font.GSUB || this.font.GPOS) {\n      this.engine = new OTLayoutEngine(this.font);\n    }\n  }\n\n  layout(string, features, script, language, direction) {\n    // Make the features parameter optional\n    if (typeof features === 'string') {\n      direction = language;\n      language = script;\n      script = features;\n      features = [];\n    }\n\n    // Map string to glyphs if needed\n    if (typeof string === 'string') {\n      // Attempt to detect the script from the string if not provided.\n      if (script == null) {\n        script = Script.forString(string);\n      }\n\n      var glyphs = this.font.glyphsForString(string);\n    } else {\n      // Attempt to detect the script from the glyph code points if not provided.\n      if (script == null) {\n        let codePoints = [];\n        for (let glyph of string) {\n          codePoints.push(...glyph.codePoints);\n        }\n\n        script = Script.forCodePoints(codePoints);\n      }\n\n      var glyphs = string;\n    }\n\n    let glyphRun = new GlyphRun(glyphs, features, script, language, direction);\n\n    // Return early if there are no glyphs\n    if (glyphs.length === 0) {\n      glyphRun.positions = [];\n      return glyphRun;\n    }\n\n    // Setup the advanced layout engine\n    if (this.engine && this.engine.setup) {\n      this.engine.setup(glyphRun);\n    }\n\n    // Substitute and position the glyphs\n    this.substitute(glyphRun);\n    this.position(glyphRun);\n\n    this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions);\n\n    // Let the layout engine clean up any state it might have\n    if (this.engine && this.engine.cleanup) {\n      this.engine.cleanup();\n    }\n\n    return glyphRun;\n  }\n\n  substitute(glyphRun) {\n    // Call the advanced layout engine to make substitutions\n    if (this.engine && this.engine.substitute) {\n      this.engine.substitute(glyphRun);\n    }\n  }\n\n  position(glyphRun) {\n    // Get initial glyph positions\n    glyphRun.positions = glyphRun.glyphs.map(glyph => new GlyphPosition(glyph.advanceWidth));\n    let positioned = null;\n\n    // Call the advanced layout engine. Returns the features applied.\n    if (this.engine && this.engine.position) {\n      positioned = this.engine.position(glyphRun);\n    }\n\n    // if there is no GPOS table, use unicode properties to position marks.\n    if (!positioned && (!this.engine || this.engine.fallbackPosition)) {\n      if (!this.unicodeLayoutEngine) {\n        this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);\n      }\n\n      this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);\n    }\n\n    // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table\n    if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {\n      if (!this.kernProcessor) {\n        this.kernProcessor = new KernProcessor(this.font);\n      }\n\n      this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);\n      glyphRun.features.kern = true;\n    }\n  }\n\n  hideDefaultIgnorables(glyphs, positions) {\n    let space = this.font.glyphForCodePoint(0x20);\n    for (let i = 0; i < glyphs.length; i++) {\n      if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {\n        glyphs[i] = space;\n        positions[i].xAdvance = 0;\n        positions[i].yAdvance = 0;\n      }\n    }\n  }\n\n  isDefaultIgnorable(ch) {\n    // From DerivedCoreProperties.txt in the Unicode database,\n    // minus U+115F, U+1160, U+3164 and U+FFA0, which is what\n    // Harfbuzz and Uniscribe do.\n    let plane = ch >> 16;\n    if (plane === 0) {\n      // BMP\n      switch (ch >> 8) {\n      \tcase 0x00: return ch === 0x00AD;\n      \tcase 0x03: return ch === 0x034F;\n      \tcase 0x06: return ch === 0x061C;\n      \tcase 0x17: return 0x17B4 <= ch && ch <= 0x17B5;\n      \tcase 0x18: return 0x180B <= ch && ch <= 0x180E;\n      \tcase 0x20: return (0x200B <= ch && ch <= 0x200F) || (0x202A <= ch && ch <= 0x202E) || (0x2060 <= ch && ch <= 0x206F);\n      \tcase 0xFE: return (0xFE00 <= ch && ch <= 0xFE0F) || ch === 0xFEFF;\n      \tcase 0xFF: return 0xFFF0 <= ch && ch <= 0xFFF8;\n      \tdefault:   return false;\n      }\n    } else {\n      // Other planes\n      switch (plane) {\n      \tcase 0x01: return (0x1BCA0 <= ch && ch <= 0x1BCA3) || (0x1D173 <= ch && ch <= 0x1D17A);\n      \tcase 0x0E: return 0xE0000 <= ch && ch <= 0xE0FFF;\n      \tdefault:   return false;\n      }\n    }\n  }\n\n  getAvailableFeatures(script, language) {\n    let features = [];\n\n    if (this.engine) {\n      features.push(...this.engine.getAvailableFeatures(script, language));\n    }\n\n    if (this.font.kern && features.indexOf('kern') === -1) {\n      features.push('kern');\n    }\n\n    return features;\n  }\n\n  stringsForGlyph(gid) {\n    let result = new Set;\n\n    let codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);\n    for (let codePoint of codePoints) {\n      result.add(String.fromCodePoint(codePoint));\n    }\n\n    if (this.engine && this.engine.stringsForGlyph) {\n      for (let string of this.engine.stringsForGlyph(gid)) {\n        result.add(string);\n      }\n    }\n\n    return Array.from(result);\n  }\n}\n","import {binarySearch} from '../utils';\n\nexport default class KernProcessor {\n  constructor(font) {\n    this.kern = font.kern;\n  }\n\n  process(glyphs, positions) {\n    for (let glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {\n      let left = glyphs[glyphIndex].id;\n      let right = glyphs[glyphIndex + 1].id;\n      positions[glyphIndex].xAdvance += this.getKerning(left, right);\n    }\n  }\n\n  getKerning(left, right) {\n    let res = 0;\n\n    for (let table of this.kern.tables) {\n      if (table.coverage.crossStream) {\n        continue;\n      }\n\n      switch (table.version) {\n        case 0:\n          if (!table.coverage.horizontal) {\n            continue;\n          }\n\n          break;\n        case 1:\n          if (table.coverage.vertical || table.coverage.variation) {\n            continue;\n          }\n\n          break;\n        default:\n          throw new Error(`Unsupported kerning table version ${table.version}`);\n      }\n\n      let val = 0;\n      let s = table.subtable;\n      switch (table.format) {\n        case 0:\n          let pairIdx = binarySearch(s.pairs, function (pair) {\n            return (left - pair.left) || (right - pair.right);\n          });\n\n          if (pairIdx >= 0) {\n            val = s.pairs[pairIdx].value;\n          }\n\n          break;\n\n        case 2:\n          let leftOffset = 0, rightOffset = 0;\n          if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {\n            leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];\n          } else {\n            leftOffset = s.array.off;\n          }\n\n          if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {\n            rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];\n          }\n\n          let index = (leftOffset + rightOffset - s.array.off) / 2;\n          val = s.array.values.get(index);\n          break;\n\n        case 3:\n          if (left >= s.glyphCount || right >= s.glyphCount) {\n            return 0;\n          }\n\n          val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];\n          break;\n\n        default:\n          throw new Error(`Unsupported kerning sub-table format ${table.format}`);\n      }\n\n      // Microsoft supports the override flag, which resets the result\n      // Otherwise, the sum of the results from all subtables is returned\n      if (table.coverage.override) {\n        res = val;\n      } else {\n        res += val;\n      }\n    }\n\n    return res;\n  }\n}\n","import {getCombiningClass} from 'unicode-properties';\n\n/**\n * This class is used when GPOS does not define 'mark' or 'mkmk' features\n * for positioning marks relative to base glyphs. It uses the unicode\n * combining class property to position marks.\n *\n * Based on code from Harfbuzz, thanks!\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc\n */\nexport default class UnicodeLayoutEngine {\n  constructor(font) {\n    this.font = font;\n  }\n\n  positionGlyphs(glyphs, positions) {\n    // find each base + mark cluster, and position the marks relative to the base\n    let clusterStart = 0;\n    let clusterEnd = 0;\n    for (let index = 0; index < glyphs.length; index++) {\n      let glyph = glyphs[index];\n      if (glyph.isMark) { // TODO: handle ligatures\n        clusterEnd = index;\n      } else {\n        if (clusterStart !== clusterEnd) {\n          this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n        }\n\n        clusterStart = clusterEnd = index;\n      }\n    }\n\n    if (clusterStart !== clusterEnd) {\n      this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n    }\n\n    return positions;\n  }\n\n  positionCluster(glyphs, positions, clusterStart, clusterEnd) {\n    let base = glyphs[clusterStart];\n    let baseBox = base.cbox.copy();\n\n    // adjust bounding box for ligature glyphs\n    if (base.codePoints.length > 1) {\n      // LTR. TODO: RTL support.\n      baseBox.minX += ((base.codePoints.length - 1) * baseBox.width) / base.codePoints.length;\n    }\n\n    let xOffset = -positions[clusterStart].xAdvance;\n    let yOffset = 0;\n    let yGap = this.font.unitsPerEm / 16;\n\n    // position each of the mark glyphs relative to the base glyph\n    for (let index = clusterStart + 1; index <= clusterEnd; index++) {\n      let mark = glyphs[index];\n      let markBox = mark.cbox;\n      let position = positions[index];\n\n      let combiningClass = this.getCombiningClass(mark.codePoints[0]);\n\n      if (combiningClass !== 'Not_Reordered') {\n        position.xOffset = position.yOffset = 0;\n\n        // x positioning\n        switch (combiningClass) {\n          case 'Double_Above':\n          case 'Double_Below':\n            // LTR. TODO: RTL support.\n            position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;\n            break;\n\n          case 'Attached_Below_Left':\n          case 'Below_Left':\n          case 'Above_Left':\n            // left align\n            position.xOffset += baseBox.minX - markBox.minX;\n            break;\n\n          case 'Attached_Above_Right':\n          case 'Below_Right':\n          case 'Above_Right':\n            // right align\n            position.xOffset += baseBox.maxX - markBox.width - markBox.minX;\n            break;\n\n          default: // Attached_Below, Attached_Above, Below, Above, other\n            // center align\n            position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;\n        }\n\n        // y positioning\n        switch (combiningClass) {\n          case 'Double_Below':\n          case 'Below_Left':\n          case 'Below':\n          case 'Below_Right':\n          case 'Attached_Below_Left':\n          case 'Attached_Below':\n            // add a small gap between the glyphs if they are not attached\n            if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {\n              baseBox.minY += yGap;\n            }\n\n            position.yOffset = -baseBox.minY - markBox.maxY;\n            baseBox.minY += markBox.height;\n            break;\n\n          case 'Double_Above':\n          case 'Above_Left':\n          case 'Above':\n          case 'Above_Right':\n          case 'Attached_Above':\n          case 'Attached_Above_Right':\n            // add a small gap between the glyphs if they are not attached\n            if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {\n              baseBox.maxY += yGap;\n            }\n\n            position.yOffset = baseBox.maxY - markBox.minY;\n            baseBox.maxY += markBox.height;\n            break;\n        }\n\n        position.xAdvance = position.yAdvance = 0;\n        position.xOffset += xOffset;\n        position.yOffset += yOffset;\n\n      } else {\n        xOffset -= position.xAdvance;\n        yOffset -= position.yAdvance;\n      }\n    }\n\n    return;\n  }\n\n  getCombiningClass(codePoint) {\n    let combiningClass = getCombiningClass(codePoint);\n\n    // Thai / Lao need some per-character work\n    if ((codePoint & ~0xff) === 0x0e00) {\n      if (combiningClass === 'Not_Reordered') {\n        switch (codePoint) {\n          case 0x0e31:\n          case 0x0e34:\n          case 0x0e35:\n          case 0x0e36:\n          case 0x0e37:\n          case 0x0e47:\n          case 0x0e4c:\n          case 0x0e3d:\n          case 0x0e4e:\n            return 'Above_Right';\n\n          case 0x0eb1:\n          case 0x0eb4:\n          case 0x0eb5:\n          case 0x0eb6:\n          case 0x0eb7:\n          case 0x0ebb:\n          case 0x0ecc:\n          case 0x0ecd:\n            return 'Above';\n\n          case 0x0ebc:\n            return 'Below';\n        }\n      } else if (codePoint === 0x0e3a) { // virama\n        return 'Below_Right';\n      }\n    }\n\n    switch (combiningClass) {\n      // Hebrew\n\n      case 'CCC10': // sheva\n      case 'CCC11': // hataf segol\n      case 'CCC12': // hataf patah\n      case 'CCC13': // hataf qamats\n      case 'CCC14': // hiriq\n      case 'CCC15': // tsere\n      case 'CCC16': // segol\n      case 'CCC17': // patah\n      case 'CCC18': // qamats\n      case 'CCC20': // qubuts\n      case 'CCC22': // meteg\n        return 'Below';\n\n      case 'CCC23': // rafe\n        return 'Attached_Above';\n\n      case 'CCC24': // shin dot\n        return 'Above_Right';\n\n      case 'CCC25': // sin dot\n      case 'CCC19': // holam\n        return 'Above_Left';\n\n      case 'CCC26': // point varika\n        return 'Above';\n\n      case 'CCC21': // dagesh\n        break;\n\n      // Arabic and Syriac\n\n      case 'CCC27': // fathatan\n      case 'CCC28': // dammatan\n      case 'CCC30': // fatha\n      case 'CCC31': // damma\n      case 'CCC33': // shadda\n      case 'CCC34': // sukun\n      case 'CCC35': // superscript alef\n      case 'CCC36': // superscript alaph\n        return 'Above';\n\n      case 'CCC29': // kasratan\n      case 'CCC32': // kasra\n        return 'Below';\n\n      // Thai\n\n      case 'CCC103': // sara u / sara uu\n        return 'Below_Right';\n\n      case 'CCC107': // mai\n        return 'Above_Right';\n\n      // Lao\n\n      case 'CCC118': // sign u / sign uu\n        return 'Below';\n\n      case 'CCC122': // mai\n        return 'Above';\n\n      // Tibetan\n\n      case 'CCC129': // sign aa\n      case 'CCC132': // sign u\n        return 'Below';\n\n      case 'CCC130': // sign i\n        return 'Above';\n    }\n\n    return combiningClass;\n  }\n}\n","import BBox from '../glyph/BBox';\nimport * as Script from '../layout/Script';\n\n/**\n * Represents a run of Glyph and GlyphPosition objects.\n * Returned by the font layout method.\n */\nexport default class GlyphRun {\n  constructor(glyphs, features, script, language, direction) {\n    /**\n     * An array of Glyph objects in the run\n     * @type {Glyph[]}\n     */\n    this.glyphs = glyphs;\n\n    /**\n     * An array of GlyphPosition objects for each glyph in the run\n     * @type {GlyphPosition[]}\n     */\n    this.positions = null;\n\n    /**\n     * The script that was requested for shaping. This was either passed in or detected automatically.\n     * @type {string}\n     */\n    this.script = script;\n\n    /**\n     * The language requested for shaping, as passed in. If `null`, the default language for the\n     * script was used.\n     * @type {string}\n     */\n    this.language = language || null;\n\n    /**\n     * The direction requested for shaping, as passed in (either ltr or rtl).\n     * If `null`, the default direction of the script is used.\n     * @type {string}\n     */\n    this.direction = direction || Script.direction(script);\n\n    /**\n     * The features requested during shaping. This is a combination of user\n     * specified features and features chosen by the shaper.\n     * @type {object}\n     */\n    this.features = {};\n\n    // Convert features to an object\n    if (Array.isArray(features)) {\n      for (let tag of features) {\n        this.features[tag] = true;\n      }\n    } else if (typeof features === 'object') {\n      this.features = features;\n    }\n  }\n\n  /**\n   * The total advance width of the run.\n   * @type {number}\n   */\n  get advanceWidth() {\n    let width = 0;\n    for (let position of this.positions) {\n      width += position.xAdvance;\n    }\n\n    return width;\n  }\n\n /**\n  * The total advance height of the run.\n  * @type {number}\n  */\n  get advanceHeight() {\n    let height = 0;\n    for (let position of this.positions) {\n      height += position.yAdvance;\n    }\n\n    return height;\n  }\n\n /**\n  * The bounding box containing all glyphs in the run.\n  * @type {BBox}\n  */\n  get bbox() {\n    let bbox = new BBox;\n\n    let x = 0;\n    let y = 0;\n    for (let index = 0; index < this.glyphs.length; index++) {\n      let glyph = this.glyphs[index];\n      let p = this.positions[index];\n      let b = glyph.bbox;\n\n      bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);\n      bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);\n\n      x += p.xAdvance;\n      y += p.yAdvance;\n    }\n\n    return bbox;\n  }\n}\n","/**\n * Represents a glyph bounding box\n */\nexport default class BBox {\n  constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity) {\n    /**\n     * The minimum X position in the bounding box\n     * @type {number}\n     */\n    this.minX = minX;\n\n    /**\n     * The minimum Y position in the bounding box\n     * @type {number}\n     */\n    this.minY = minY;\n\n    /**\n     * The maxmimum X position in the bounding box\n     * @type {number}\n     */\n    this.maxX = maxX;\n\n    /**\n     * The maxmimum Y position in the bounding box\n     * @type {number}\n     */\n    this.maxY = maxY;\n  }\n\n  /**\n   * The width of the bounding box\n   * @type {number}\n   */\n  get width() {\n    return this.maxX - this.minX;\n  }\n\n  /**\n   * The height of the bounding box\n   * @type {number}\n   */\n  get height() {\n    return this.maxY - this.minY;\n  }\n\n  addPoint(x, y) {\n    if (Math.abs(x) !== Infinity) {\n      if (x < this.minX) {\n        this.minX = x;\n      }\n\n      if (x > this.maxX) {\n        this.maxX = x;\n      }\n    }\n\n    if (Math.abs(y) !== Infinity) {\n      if (y < this.minY) {\n        this.minY = y;\n      }\n\n      if (y > this.maxY) {\n        this.maxY = y;\n      }\n    }\n  }\n\n  copy() {\n    return new BBox(this.minX, this.minY, this.maxX, this.maxY);\n  }\n}\n","import {getScript} from 'unicode-properties';\n\n// This maps the Unicode Script property to an OpenType script tag\n// Data from http://www.microsoft.com/typography/otspec/scripttags.htm\n// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.\nconst UNICODE_SCRIPTS = {\n  Caucasian_Albanian: 'aghb',\n  Arabic: 'arab',\n  Imperial_Aramaic: 'armi',\n  Armenian: 'armn',\n  Avestan: 'avst',\n  Balinese: 'bali',\n  Bamum: 'bamu',\n  Bassa_Vah: 'bass',\n  Batak: 'batk',\n  Bengali: ['bng2', 'beng'],\n  Bopomofo: 'bopo',\n  Brahmi: 'brah',\n  Braille: 'brai',\n  Buginese: 'bugi',\n  Buhid: 'buhd',\n  Chakma: 'cakm',\n  Canadian_Aboriginal: 'cans',\n  Carian: 'cari',\n  Cham: 'cham',\n  Cherokee: 'cher',\n  Coptic: 'copt',\n  Cypriot: 'cprt',\n  Cyrillic: 'cyrl',\n  Devanagari: ['dev2', 'deva'],\n  Deseret: 'dsrt',\n  Duployan: 'dupl',\n  Egyptian_Hieroglyphs: 'egyp',\n  Elbasan: 'elba',\n  Ethiopic: 'ethi',\n  Georgian: 'geor',\n  Glagolitic: 'glag',\n  Gothic: 'goth',\n  Grantha: 'gran',\n  Greek: 'grek',\n  Gujarati: ['gjr2', 'gujr'],\n  Gurmukhi: ['gur2', 'guru'],\n  Hangul: 'hang',\n  Han: 'hani',\n  Hanunoo: 'hano',\n  Hebrew: 'hebr',\n  Hiragana: 'hira',\n  Pahawh_Hmong: 'hmng',\n  Katakana_Or_Hiragana: 'hrkt',\n  Old_Italic: 'ital',\n  Javanese: 'java',\n  Kayah_Li: 'kali',\n  Katakana: 'kana',\n  Kharoshthi: 'khar',\n  Khmer: 'khmr',\n  Khojki: 'khoj',\n  Kannada: ['knd2', 'knda'],\n  Kaithi: 'kthi',\n  Tai_Tham: 'lana',\n  Lao: 'lao ',\n  Latin: 'latn',\n  Lepcha: 'lepc',\n  Limbu: 'limb',\n  Linear_A: 'lina',\n  Linear_B: 'linb',\n  Lisu: 'lisu',\n  Lycian: 'lyci',\n  Lydian: 'lydi',\n  Mahajani: 'mahj',\n  Mandaic: 'mand',\n  Manichaean: 'mani',\n  Mende_Kikakui: 'mend',\n  Meroitic_Cursive: 'merc',\n  Meroitic_Hieroglyphs: 'mero',\n  Malayalam: ['mlm2', 'mlym'],\n  Modi: 'modi',\n  Mongolian: 'mong',\n  Mro: 'mroo',\n  Meetei_Mayek: 'mtei',\n  Myanmar: ['mym2', 'mymr'],\n  Old_North_Arabian: 'narb',\n  Nabataean: 'nbat',\n  Nko: 'nko ',\n  Ogham: 'ogam',\n  Ol_Chiki: 'olck',\n  Old_Turkic: 'orkh',\n  Oriya: ['ory2', 'orya'],\n  Osmanya: 'osma',\n  Palmyrene: 'palm',\n  Pau_Cin_Hau: 'pauc',\n  Old_Permic: 'perm',\n  Phags_Pa: 'phag',\n  Inscriptional_Pahlavi: 'phli',\n  Psalter_Pahlavi: 'phlp',\n  Phoenician: 'phnx',\n  Miao: 'plrd',\n  Inscriptional_Parthian: 'prti',\n  Rejang: 'rjng',\n  Runic: 'runr',\n  Samaritan: 'samr',\n  Old_South_Arabian: 'sarb',\n  Saurashtra: 'saur',\n  Shavian: 'shaw',\n  Sharada: 'shrd',\n  Siddham: 'sidd',\n  Khudawadi: 'sind',\n  Sinhala: 'sinh',\n  Sora_Sompeng: 'sora',\n  Sundanese: 'sund',\n  Syloti_Nagri: 'sylo',\n  Syriac: 'syrc',\n  Tagbanwa: 'tagb',\n  Takri: 'takr',\n  Tai_Le: 'tale',\n  New_Tai_Lue: 'talu',\n  Tamil: ['tml2', 'taml'],\n  Tai_Viet: 'tavt',\n  Telugu: ['tel2', 'telu'],\n  Tifinagh: 'tfng',\n  Tagalog: 'tglg',\n  Thaana: 'thaa',\n  Thai: 'thai',\n  Tibetan: 'tibt',\n  Tirhuta: 'tirh',\n  Ugaritic: 'ugar',\n  Vai: 'vai ',\n  Warang_Citi: 'wara',\n  Old_Persian: 'xpeo',\n  Cuneiform: 'xsux',\n  Yi: 'yi  ',\n  Inherited: 'zinh',\n  Common: 'zyyy',\n  Unknown: 'zzzz'\n};\n\nconst OPENTYPE_SCRIPTS = {};\nfor (let script in UNICODE_SCRIPTS) {\n  let tag = UNICODE_SCRIPTS[script];\n  if (Array.isArray(tag)) {\n    for (let t of tag) {\n      OPENTYPE_SCRIPTS[t] = script;\n    }\n  } else {\n    OPENTYPE_SCRIPTS[tag] = script;\n  }\n}\n\nexport function fromUnicode(script) {\n  return UNICODE_SCRIPTS[script];\n}\n\nexport function fromOpenType(tag) {\n  return OPENTYPE_SCRIPTS[tag];\n}\n\nexport function forString(string) {\n  let len = string.length;\n  let idx = 0;\n  while (idx < len) {\n    let code = string.charCodeAt(idx++);\n\n    // Check if this is a high surrogate\n    if (0xd800 <= code && code <= 0xdbff && idx < len) {\n      let next = string.charCodeAt(idx);\n\n      // Check if this is a low surrogate\n      if (0xdc00 <= next && next <= 0xdfff) {\n        idx++;\n        code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;\n      }\n    }\n\n    let script = getScript(code);\n    if (script !== 'Common' && script !== 'Inherited' && script !== 'Unknown') {\n      return UNICODE_SCRIPTS[script];\n    }\n  }\n\n  return UNICODE_SCRIPTS.Unknown;\n}\n\nexport function forCodePoints(codePoints) {\n  for (let i = 0; i < codePoints.length; i++) {\n    let codePoint = codePoints[i];\n    let script = getScript(codePoint);\n    if (script !== 'Common' && script !== 'Inherited' && script !== 'Unknown') {\n      return UNICODE_SCRIPTS[script];\n    }\n  }\n\n  return UNICODE_SCRIPTS.Unknown;\n}\n\n// The scripts in this map are written from right to left\nconst RTL = {\n  arab: true,   // Arabic\n  hebr: true,   // Hebrew\n  syrc: true,   // Syriac\n  thaa: true,   // Thaana\n  cprt: true,   // Cypriot Syllabary\n  khar: true,   // Kharosthi\n  phnx: true,   // Phoenician\n  'nko ': true, // N'Ko\n  lydi: true,   // Lydian\n  avst: true,   // Avestan\n  armi: true,   // Imperial Aramaic\n  phli: true,   // Inscriptional Pahlavi\n  prti: true,   // Inscriptional Parthian\n  sarb: true,   // Old South Arabian\n  orkh: true,   // Old Turkic, Orkhon Runic\n  samr: true,   // Samaritan\n  mand: true,   // Mandaic, Mandaean\n  merc: true,   // Meroitic Cursive\n  mero: true,   // Meroitic Hieroglyphs\n\n  // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)\n  mani: true,   // Manichaean\n  mend: true,   // Mende Kikakui\n  nbat: true,   // Nabataean\n  narb: true,   // Old North Arabian\n  palm: true,   // Palmyrene\n  phlp: true    // Psalter Pahlavi\n};\n\nexport function direction(script) {\n  if (RTL[script]) {\n    return 'rtl';\n  }\n\n  return 'ltr';\n}\n","/**\n * Represents positioning information for a glyph in a GlyphRun.\n */\nexport default class GlyphPosition {\n  constructor(xAdvance = 0, yAdvance = 0, xOffset = 0, yOffset = 0) {\n    /**\n     * The amount to move the virtual pen in the X direction after rendering this glyph.\n     * @type {number}\n     */\n    this.xAdvance = xAdvance;\n\n    /**\n     * The amount to move the virtual pen in the Y direction after rendering this glyph.\n     * @type {number}\n     */\n    this.yAdvance = yAdvance;\n\n    /**\n     * The offset from the pen position in the X direction at which to render this glyph.\n     * @type {number}\n     */\n    this.xOffset = xOffset;\n\n    /**\n     * The offset from the pen position in the Y direction at which to render this glyph.\n     * @type {number}\n     */\n    this.yOffset = yOffset;\n  }\n}\n","import * as AATFeatureMap from './AATFeatureMap';\nimport * as Script from '../layout/Script';\nimport AATMorxProcessor from './AATMorxProcessor';\n\nexport default class AATLayoutEngine {\n  constructor(font) {\n    this.font = font;\n    this.morxProcessor = new AATMorxProcessor(font);\n    this.fallbackPosition = false;\n  }\n\n  substitute(glyphRun) {\n    // AAT expects the glyphs to be in visual order prior to morx processing,\n    // so reverse the glyphs if the script is right-to-left.\n    if (glyphRun.direction === 'rtl') {\n      glyphRun.glyphs.reverse();\n    }\n\n    this.morxProcessor.process(glyphRun.glyphs, AATFeatureMap.mapOTToAAT(glyphRun.features));\n  }\n\n  getAvailableFeatures(script, language) {\n    return AATFeatureMap.mapAATToOT(this.morxProcessor.getSupportedFeatures());\n  }\n\n  stringsForGlyph(gid) {\n    let glyphStrings = this.morxProcessor.generateInputs(gid);\n    let result = new Set;\n\n    for (let glyphs of glyphStrings) {\n      this._addStrings(glyphs, 0, result, '');\n    }\n\n    return result;\n  }\n\n  _addStrings(glyphs, index, strings, string) {\n    let codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);\n\n    for (let codePoint of codePoints) {\n      let s = string + String.fromCodePoint(codePoint);\n      if (index < glyphs.length - 1) {\n        this._addStrings(glyphs, index + 1, strings, s);\n      } else {\n        strings.add(s);\n      }\n    }\n  }\n}\n","// see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html\n// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac\nconst features = {\n  allTypographicFeatures: {\n    code: 0,\n    exclusive: false,\n    allTypeFeatures: 0\n  },\n  ligatures: {\n    code: 1,\n    exclusive: false,\n    requiredLigatures: 0,\n    commonLigatures: 2,\n    rareLigatures: 4,\n    // logos: 6\n    rebusPictures: 8,\n    diphthongLigatures: 10,\n    squaredLigatures: 12,\n    abbrevSquaredLigatures: 14,\n    symbolLigatures: 16,\n    contextualLigatures: 18,\n    historicalLigatures: 20\n  },\n  cursiveConnection: {\n    code: 2,\n    exclusive: true,\n    unconnected: 0,\n    partiallyConnected: 1,\n    cursive: 2\n  },\n  letterCase: {\n    code: 3,\n    exclusive: true\n  },\n    // upperAndLowerCase: 0          # deprecated\n    // allCaps: 1                    # deprecated\n    // allLowerCase: 2               # deprecated\n    // smallCaps: 3                  # deprecated\n    // initialCaps: 4                # deprecated\n    // initialCapsAndSmallCaps: 5    # deprecated\n  verticalSubstitution: {\n    code: 4,\n    exclusive: false,\n    substituteVerticalForms: 0\n  },\n  linguisticRearrangement: {\n    code: 5,\n    exclusive: false,\n    linguisticRearrangement: 0\n  },\n  numberSpacing: {\n    code: 6,\n    exclusive: true,\n    monospacedNumbers: 0,\n    proportionalNumbers: 1,\n    thirdWidthNumbers: 2,\n    quarterWidthNumbers: 3\n  },\n  smartSwash: {\n    code: 8,\n    exclusive: false,\n    wordInitialSwashes: 0,\n    wordFinalSwashes: 2,\n    // lineInitialSwashes: 4\n    // lineFinalSwashes: 6\n    nonFinalSwashes: 8\n  },\n  diacritics: {\n    code: 9,\n    exclusive: true,\n    showDiacritics: 0,\n    hideDiacritics: 1,\n    decomposeDiacritics: 2\n  },\n  verticalPosition: {\n    code: 10,\n    exclusive: true,\n    normalPosition: 0,\n    superiors: 1,\n    inferiors: 2,\n    ordinals: 3,\n    scientificInferiors: 4\n  },\n  fractions: {\n    code: 11,\n    exclusive: true,\n    noFractions: 0,\n    verticalFractions: 1,\n    diagonalFractions: 2\n  },\n  overlappingCharacters: {\n    code: 13,\n    exclusive: false,\n    preventOverlap: 0\n  },\n  typographicExtras: {\n    code: 14,\n    exclusive: false,\n    // hyphensToEmDash: 0\n    // hyphenToEnDash: 2\n    slashedZero: 4\n  },\n    // formInterrobang: 6\n    // smartQuotes: 8\n    // periodsToEllipsis: 10\n  mathematicalExtras: {\n    code: 15,\n    exclusive: false,\n    // hyphenToMinus: 0\n    // asteristoMultiply: 2\n    // slashToDivide: 4\n    // inequalityLigatures: 6\n    // exponents: 8\n    mathematicalGreek: 10\n  },\n  ornamentSets: {\n    code: 16,\n    exclusive: true,\n    noOrnaments: 0,\n    dingbats: 1,\n    piCharacters: 2,\n    fleurons: 3,\n    decorativeBorders: 4,\n    internationalSymbols: 5,\n    mathSymbols: 6\n  },\n  characterAlternatives: {\n    code: 17,\n    exclusive: true,\n    noAlternates: 0\n  },\n    // user defined options\n  designComplexity: {\n    code: 18,\n    exclusive: true,\n    designLevel1: 0,\n    designLevel2: 1,\n    designLevel3: 2,\n    designLevel4: 3,\n    designLevel5: 4\n  },\n  styleOptions: {\n    code: 19,\n    exclusive: true,\n    noStyleOptions: 0,\n    displayText: 1,\n    engravedText: 2,\n    illuminatedCaps: 3,\n    titlingCaps: 4,\n    tallCaps: 5\n  },\n  characterShape: {\n    code: 20,\n    exclusive: true,\n    traditionalCharacters: 0,\n    simplifiedCharacters: 1,\n    JIS1978Characters: 2,\n    JIS1983Characters: 3,\n    JIS1990Characters: 4,\n    traditionalAltOne: 5,\n    traditionalAltTwo: 6,\n    traditionalAltThree: 7,\n    traditionalAltFour: 8,\n    traditionalAltFive: 9,\n    expertCharacters: 10,\n    JIS2004Characters: 11,\n    hojoCharacters: 12,\n    NLCCharacters: 13,\n    traditionalNamesCharacters: 14\n  },\n  numberCase: {\n    code: 21,\n    exclusive: true,\n    lowerCaseNumbers: 0,\n    upperCaseNumbers: 1\n  },\n  textSpacing: {\n    code: 22,\n    exclusive: true,\n    proportionalText: 0,\n    monospacedText: 1,\n    halfWidthText: 2,\n    thirdWidthText: 3,\n    quarterWidthText: 4,\n    altProportionalText: 5,\n    altHalfWidthText: 6\n  },\n  transliteration: {\n    code: 23,\n    exclusive: true,\n    noTransliteration: 0\n  },\n    // hanjaToHangul: 1\n    // hiraganaToKatakana: 2\n    // katakanaToHiragana: 3\n    // kanaToRomanization: 4\n    // romanizationToHiragana: 5\n    // romanizationToKatakana: 6\n    // hanjaToHangulAltOne: 7\n    // hanjaToHangulAltTwo: 8\n    // hanjaToHangulAltThree: 9\n  annotation: {\n    code: 24,\n    exclusive: true,\n    noAnnotation: 0,\n    boxAnnotation: 1,\n    roundedBoxAnnotation: 2,\n    circleAnnotation: 3,\n    invertedCircleAnnotation: 4,\n    parenthesisAnnotation: 5,\n    periodAnnotation: 6,\n    romanNumeralAnnotation: 7,\n    diamondAnnotation: 8,\n    invertedBoxAnnotation: 9,\n    invertedRoundedBoxAnnotation: 10\n  },\n  kanaSpacing: {\n    code: 25,\n    exclusive: true,\n    fullWidthKana: 0,\n    proportionalKana: 1\n  },\n  ideographicSpacing: {\n    code: 26,\n    exclusive: true,\n    fullWidthIdeographs: 0,\n    proportionalIdeographs: 1,\n    halfWidthIdeographs: 2\n  },\n  unicodeDecomposition: {\n    code: 27,\n    exclusive: false,\n    canonicalComposition: 0,\n    compatibilityComposition: 2,\n    transcodingComposition: 4\n  },\n  rubyKana: {\n    code: 28,\n    exclusive: false,\n    // noRubyKana: 0     # deprecated - use rubyKanaOff instead\n    // rubyKana: 1     # deprecated - use rubyKanaOn instead\n    rubyKana: 2\n  },\n  CJKSymbolAlternatives: {\n    code: 29,\n    exclusive: true,\n    noCJKSymbolAlternatives: 0,\n    CJKSymbolAltOne: 1,\n    CJKSymbolAltTwo: 2,\n    CJKSymbolAltThree: 3,\n    CJKSymbolAltFour: 4,\n    CJKSymbolAltFive: 5\n  },\n  ideographicAlternatives: {\n    code: 30,\n    exclusive: true,\n    noIdeographicAlternatives: 0,\n    ideographicAltOne: 1,\n    ideographicAltTwo: 2,\n    ideographicAltThree: 3,\n    ideographicAltFour: 4,\n    ideographicAltFive: 5\n  },\n  CJKVerticalRomanPlacement: {\n    code: 31,\n    exclusive: true,\n    CJKVerticalRomanCentered: 0,\n    CJKVerticalRomanHBaseline: 1\n  },\n  italicCJKRoman: {\n    code: 32,\n    exclusive: false,\n    // noCJKItalicRoman: 0     # deprecated - use CJKItalicRomanOff instead\n    // CJKItalicRoman: 1     # deprecated - use CJKItalicRomanOn instead\n    CJKItalicRoman: 2\n  },\n  caseSensitiveLayout: {\n    code: 33,\n    exclusive: false,\n    caseSensitiveLayout: 0,\n    caseSensitiveSpacing: 2\n  },\n  alternateKana: {\n    code: 34,\n    exclusive: false,\n    alternateHorizKana: 0,\n    alternateVertKana: 2\n  },\n  stylisticAlternatives: {\n    code: 35,\n    exclusive: false,\n    noStylisticAlternates: 0,\n    stylisticAltOne: 2,\n    stylisticAltTwo: 4,\n    stylisticAltThree: 6,\n    stylisticAltFour: 8,\n    stylisticAltFive: 10,\n    stylisticAltSix: 12,\n    stylisticAltSeven: 14,\n    stylisticAltEight: 16,\n    stylisticAltNine: 18,\n    stylisticAltTen: 20,\n    stylisticAltEleven: 22,\n    stylisticAltTwelve: 24,\n    stylisticAltThirteen: 26,\n    stylisticAltFourteen: 28,\n    stylisticAltFifteen: 30,\n    stylisticAltSixteen: 32,\n    stylisticAltSeventeen: 34,\n    stylisticAltEighteen: 36,\n    stylisticAltNineteen: 38,\n    stylisticAltTwenty: 40\n  },\n  contextualAlternates: {\n    code: 36,\n    exclusive: false,\n    contextualAlternates: 0,\n    swashAlternates: 2,\n    contextualSwashAlternates: 4\n  },\n  lowerCase: {\n    code: 37,\n    exclusive: true,\n    defaultLowerCase: 0,\n    lowerCaseSmallCaps: 1,\n    lowerCasePetiteCaps: 2\n  },\n  upperCase: {\n    code: 38,\n    exclusive: true,\n    defaultUpperCase: 0,\n    upperCaseSmallCaps: 1,\n    upperCasePetiteCaps: 2\n  },\n  languageTag: { // indices into ltag table\n    code: 39,\n    exclusive: true\n  },\n  CJKRomanSpacing: {\n    code: 103,\n    exclusive: true,\n    halfWidthCJKRoman: 0,\n    proportionalCJKRoman: 1,\n    defaultCJKRoman: 2,\n    fullWidthCJKRoman: 3\n  }\n};\n\nconst feature = (name, selector) => [features[name].code, features[name][selector]];\n\nconst OTMapping = {\n  rlig: feature('ligatures', 'requiredLigatures'),\n  clig: feature('ligatures', 'contextualLigatures'),\n  dlig: feature('ligatures', 'rareLigatures'),\n  hlig: feature('ligatures', 'historicalLigatures'),\n  liga: feature('ligatures', 'commonLigatures'),\n  hist: feature('ligatures', 'historicalLigatures'), // ??\n\n  smcp: feature('lowerCase', 'lowerCaseSmallCaps'),\n  pcap: feature('lowerCase', 'lowerCasePetiteCaps'),\n\n  frac: feature('fractions', 'diagonalFractions'),\n  dnom: feature('fractions', 'diagonalFractions'), // ??\n  numr: feature('fractions', 'diagonalFractions'), // ??\n  afrc: feature('fractions', 'verticalFractions'),\n  // aalt\n  // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?\n  // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?\n  // unic, vatu, vhal, vjmo, vpal, vrt2\n  // dist -> trak table?\n  // kern, vkrn -> kern table\n  // lfbd + opbd + rtbd -> opbd table?\n  // mark, mkmk -> acnt table?\n  // locl -> languageTag + ltag table\n\n  case: feature('caseSensitiveLayout', 'caseSensitiveLayout'), // also caseSensitiveSpacing\n  ccmp: feature('unicodeDecomposition', 'canonicalComposition'), // compatibilityComposition?\n  cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'), // guess..., probably not given below\n  valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n  swsh: feature('contextualAlternates', 'swashAlternates'),\n  cswh: feature('contextualAlternates', 'contextualSwashAlternates'),\n  curs: feature('cursiveConnection', 'cursive'), // ??\n  c2pc: feature('upperCase', 'upperCasePetiteCaps'),\n  c2sc: feature('upperCase', 'upperCaseSmallCaps'),\n\n  init: feature('smartSwash', 'wordInitialSwashes'), // ??\n  fin2: feature('smartSwash', 'wordFinalSwashes'), // ??\n  medi: feature('smartSwash', 'nonFinalSwashes'), // ??\n  med2: feature('smartSwash', 'nonFinalSwashes'), // ??\n  fin3: feature('smartSwash', 'wordFinalSwashes'), // ??\n  fina: feature('smartSwash', 'wordFinalSwashes'), // ??\n\n  pkna: feature('kanaSpacing', 'proportionalKana'),\n  half: feature('textSpacing', 'halfWidthText'), // also HalfWidthCJKRoman, HalfWidthIdeographs?\n  halt: feature('textSpacing', 'altHalfWidthText'),\n\n  hkna: feature('alternateKana', 'alternateHorizKana'),\n  vkna: feature('alternateKana', 'alternateVertKana'),\n  // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated\n\n  ital: feature('italicCJKRoman', 'CJKItalicRoman'),\n  lnum: feature('numberCase', 'upperCaseNumbers'),\n  onum: feature('numberCase', 'lowerCaseNumbers'),\n  mgrk: feature('mathematicalExtras', 'mathematicalGreek'),\n\n  // nalt: not enough info. what type of annotation?\n  // ornm: ditto, which ornament style?\n\n  calt: feature('contextualAlternates', 'contextualAlternates'), // or more?\n  vrt2: feature('verticalSubstitution', 'substituteVerticalForms'), // oh... below?\n  vert: feature('verticalSubstitution', 'substituteVerticalForms'),\n  tnum: feature('numberSpacing', 'monospacedNumbers'),\n  pnum: feature('numberSpacing', 'proportionalNumbers'),\n  sups: feature('verticalPosition', 'superiors'),\n  subs: feature('verticalPosition', 'inferiors'),\n  ordn: feature('verticalPosition', 'ordinals'),\n  pwid: feature('textSpacing', 'proportionalText'),\n  hwid: feature('textSpacing', 'halfWidthText'),\n  qwid: feature('textSpacing', 'quarterWidthText'), // also QuarterWidthNumbers?\n  twid: feature('textSpacing', 'thirdWidthText'), // also ThirdWidthNumbers?\n  fwid: feature('textSpacing', 'proportionalText'), //??\n  palt: feature('textSpacing', 'altProportionalText'),\n  trad: feature('characterShape', 'traditionalCharacters'),\n  smpl: feature('characterShape', 'simplifiedCharacters'),\n  jp78: feature('characterShape', 'JIS1978Characters'),\n  jp83: feature('characterShape', 'JIS1983Characters'),\n  jp90: feature('characterShape', 'JIS1990Characters'),\n  jp04: feature('characterShape', 'JIS2004Characters'),\n  expt: feature('characterShape', 'expertCharacters'),\n  hojo: feature('characterShape', 'hojoCharacters'),\n  nlck: feature('characterShape', 'NLCCharacters'),\n  tnam: feature('characterShape', 'traditionalNamesCharacters'),\n  ruby: feature('rubyKana', 'rubyKana'),\n  titl: feature('styleOptions', 'titlingCaps'),\n  zero: feature('typographicExtras', 'slashedZero'),\n\n  ss01: feature('stylisticAlternatives', 'stylisticAltOne'),\n  ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),\n  ss03: feature('stylisticAlternatives', 'stylisticAltThree'),\n  ss04: feature('stylisticAlternatives', 'stylisticAltFour'),\n  ss05: feature('stylisticAlternatives', 'stylisticAltFive'),\n  ss06: feature('stylisticAlternatives', 'stylisticAltSix'),\n  ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),\n  ss08: feature('stylisticAlternatives', 'stylisticAltEight'),\n  ss09: feature('stylisticAlternatives', 'stylisticAltNine'),\n  ss10: feature('stylisticAlternatives', 'stylisticAltTen'),\n  ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),\n  ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),\n  ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),\n  ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),\n  ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),\n  ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),\n  ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),\n  ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),\n  ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),\n  ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')\n};\n\n  // salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose\n\n// Add cv01-cv99 features\nfor (let i = 1; i <= 99; i++) {\n  OTMapping[`cv${`00${i}`.slice(-2)}`] = [features.characterAlternatives.code, i];\n}\n\n// create inverse mapping\nlet AATMapping = {};\nfor (let ot in OTMapping) {\n  let aat = OTMapping[ot];\n  if (AATMapping[aat[0]] == null) {\n    AATMapping[aat[0]] = {};\n  }\n\n  AATMapping[aat[0]][aat[1]] = ot;\n}\n\n// Maps an array of OpenType features to AAT features\n// in the form of {featureType:{featureSetting:true}}\nexport function mapOTToAAT(features) {\n  let res = {};\n  for (let k in features) {\n    let r;\n    if (r = OTMapping[k]) {\n      if (res[r[0]] == null) {\n        res[r[0]] = {};\n      }\n\n      res[r[0]][r[1]] = features[k];\n    }\n  }\n\n  return res;\n}\n\n// Maps strings in a [featureType, featureSetting]\n// to their equivalent number codes\nfunction mapFeatureStrings(f) {\n  let [type, setting] = f;\n  if (isNaN(type)) {\n    var typeCode = features[type] && features[type].code;\n  } else {\n    var typeCode = type;\n  }\n\n  if (isNaN(setting)) {\n    var settingCode = features[type] && features[type][setting];\n  } else {\n    var settingCode = setting;\n  }\n\n  return [typeCode, settingCode];\n}\n\n// Maps AAT features to an array of OpenType features\n// Supports both arrays in the form of [[featureType, featureSetting]]\n// and objects in the form of {featureType:{featureSetting:true}}\n// featureTypes and featureSettings can be either strings or number codes\nexport function mapAATToOT(features) {\n  let res = {};\n  if (Array.isArray(features)) {\n    for (let k = 0; k < features.length; k++) {\n      let r;\n      let f = mapFeatureStrings(features[k]);\n      if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {\n        res[r] = true;\n      }\n    }\n\n  } else if (typeof features === 'object') {\n    for (let type in features) {\n      let feature = features[type];\n      for (let setting in feature) {\n        let r;\n        let f = mapFeatureStrings([type, setting]);\n        if (feature[setting] && (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]])) {\n          res[r] = true;\n        }\n      }\n    }\n  }\n\n  return Object.keys(res);\n}\n","import AATStateMachine from './AATStateMachine';\nimport AATLookupTable from './AATLookupTable';\nimport {cache} from '../decorators';\n\n// indic replacement flags\nconst MARK_FIRST = 0x8000;\nconst MARK_LAST  = 0x2000;\nconst VERB       = 0x000F;\n\n// contextual substitution and glyph insertion flag\nconst SET_MARK = 0x8000;\n\n// ligature entry flags\nconst SET_COMPONENT  = 0x8000;\nconst PERFORM_ACTION = 0x2000;\n\n// ligature action masks\nconst LAST_MASK   = 0x80000000;\nconst STORE_MASK  = 0x40000000;\nconst OFFSET_MASK = 0x3FFFFFFF;\n\nconst VERTICAL_ONLY           = 0x800000;\nconst REVERSE_DIRECTION       = 0x400000;\nconst HORIZONTAL_AND_VERTICAL = 0x200000;\n\n// glyph insertion flags\nconst CURRENT_IS_KASHIDA_LIKE = 0x2000;\nconst MARKED_IS_KASHIDA_LIKE  = 0x1000;\nconst CURRENT_INSERT_BEFORE   = 0x0800;\nconst MARKED_INSERT_BEFORE    = 0x0400;\nconst CURRENT_INSERT_COUNT    = 0x03E0;\nconst MARKED_INSERT_COUNT     = 0x001F;\n\nexport default class AATMorxProcessor {\n  constructor(font) {\n    this.processIndicRearragement = this.processIndicRearragement.bind(this);\n    this.processContextualSubstitution = this.processContextualSubstitution.bind(this);\n    this.processLigature = this.processLigature.bind(this);\n    this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);\n    this.processGlyphInsertion = this.processGlyphInsertion.bind(this);\n    this.font = font;\n    this.morx = font.morx;\n    this.inputCache = null;\n  }\n\n  // Processes an array of glyphs and applies the specified features\n  // Features should be in the form of {featureType:{featureSetting:boolean}}\n  process(glyphs, features = {}) {\n    for (let chain of this.morx.chains) {\n      let flags = chain.defaultFlags;\n\n      // enable/disable the requested features\n      for (let feature of chain.features) {\n        let f;\n        if (f = features[feature.featureType]) {\n          if (f[feature.featureSetting]) {\n            flags &= feature.disableFlags;\n            flags |= feature.enableFlags;\n          } else if (f[feature.featureSetting] === false) {\n            flags |= ~feature.disableFlags;\n            flags &= ~feature.enableFlags;\n          }\n        }\n      }\n\n      for (let subtable of chain.subtables) {\n        if (subtable.subFeatureFlags & flags) {\n          this.processSubtable(subtable, glyphs);\n        }\n      }\n    }\n\n    // remove deleted glyphs\n    let index = glyphs.length - 1;\n    while (index >= 0) {\n      if (glyphs[index].id === 0xffff) {\n        glyphs.splice(index, 1);\n      }\n\n      index--;\n    }\n\n    return glyphs;\n  }\n\n  processSubtable(subtable, glyphs) {\n    this.subtable = subtable;\n    this.glyphs = glyphs;\n    if (this.subtable.type === 4) {\n      this.processNoncontextualSubstitutions(this.subtable, this.glyphs);\n      return;\n    }\n\n    this.ligatureStack = [];\n    this.markedGlyph = null;\n    this.firstGlyph = null;\n    this.lastGlyph = null;\n    this.markedIndex = null;\n\n    let stateMachine = this.getStateMachine(subtable);\n    let process = this.getProcessor();\n\n    let reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);\n    return stateMachine.process(this.glyphs, reverse, process);\n  }\n\n  @cache\n  getStateMachine(subtable) {\n    return new AATStateMachine(subtable.table.stateTable);\n  }\n\n  getProcessor() {\n    switch (this.subtable.type) {\n      case 0:\n        return this.processIndicRearragement;\n      case 1:\n        return this.processContextualSubstitution;\n      case 2:\n        return this.processLigature;\n      case 4:\n        return this.processNoncontextualSubstitutions;\n      case 5:\n        return this.processGlyphInsertion;\n      default:\n        throw new Error(`Invalid morx subtable type: ${this.subtable.type}`);\n    }\n  }\n\n  processIndicRearragement(glyph, entry, index) {\n    if (entry.flags & MARK_FIRST) {\n      this.firstGlyph = index;\n    }\n\n    if (entry.flags & MARK_LAST) {\n      this.lastGlyph = index;\n    }\n\n    reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);\n  }\n\n  processContextualSubstitution(glyph, entry, index) {\n    let subsitutions = this.subtable.table.substitutionTable.items;\n    if (entry.markIndex !== 0xffff) {\n      let lookup = subsitutions.getItem(entry.markIndex);\n      let lookupTable = new AATLookupTable(lookup);\n      glyph = this.glyphs[this.markedGlyph];\n      var gid = lookupTable.lookup(glyph.id);\n      if (gid) {\n        this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);\n      }\n    }\n\n    if (entry.currentIndex !== 0xffff) {\n      let lookup = subsitutions.getItem(entry.currentIndex);\n      let lookupTable = new AATLookupTable(lookup);\n      glyph = this.glyphs[index];\n      var gid = lookupTable.lookup(glyph.id);\n      if (gid) {\n        this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n      }\n    }\n\n    if (entry.flags & SET_MARK) {\n      this.markedGlyph = index;\n    }\n  }\n\n  processLigature(glyph, entry, index) {\n    if (entry.flags & SET_COMPONENT) {\n      this.ligatureStack.push(index);\n    }\n\n    if (entry.flags & PERFORM_ACTION) {\n      let actions = this.subtable.table.ligatureActions;\n      let components = this.subtable.table.components;\n      let ligatureList = this.subtable.table.ligatureList;\n\n      let actionIndex = entry.action;\n      let last = false;\n      let ligatureIndex = 0;\n      let codePoints = [];\n      let ligatureGlyphs = [];\n\n      while (!last) {\n        let componentGlyph = this.ligatureStack.pop();\n        codePoints.unshift(...this.glyphs[componentGlyph].codePoints);\n\n        let action = actions.getItem(actionIndex++);\n        last = !!(action & LAST_MASK);\n        let store = !!(action & STORE_MASK);\n        let offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits\n        offset += this.glyphs[componentGlyph].id;\n\n        let component = components.getItem(offset);\n        ligatureIndex += component;\n\n        if (last || store) {\n          let ligatureEntry = ligatureList.getItem(ligatureIndex);\n          this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);\n          ligatureGlyphs.push(componentGlyph);\n          ligatureIndex = 0;\n          codePoints = [];\n        } else {\n          this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);\n        }\n      }\n\n      // Put ligature glyph indexes back on the stack\n      this.ligatureStack.push(...ligatureGlyphs);\n    }\n  }\n\n  processNoncontextualSubstitutions(subtable, glyphs, index) {\n    let lookupTable = new AATLookupTable(subtable.table.lookupTable);\n\n    for (index = 0; index < glyphs.length; index++) {\n      let glyph = glyphs[index];\n      if (glyph.id !== 0xffff) {\n        let gid = lookupTable.lookup(glyph.id);\n        if (gid) { // 0 means do nothing\n          glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n        }\n      }\n    }\n  }\n\n  _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {\n    let insertions = [];\n    while (count--) {\n      let gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);\n      insertions.push(this.font.getGlyph(gid));\n    }\n\n    if (!isBefore) {\n      glyphIndex++;\n    }\n\n    this.glyphs.splice(glyphIndex, 0, ...insertions);\n  }\n\n  processGlyphInsertion(glyph, entry, index) {\n    if (entry.flags & SET_MARK) {\n      this.markedIndex = index;\n    }\n\n    if (entry.markedInsertIndex !== 0xffff) {\n      let count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;\n      let isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);\n      this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);\n    }\n\n    if (entry.currentInsertIndex !== 0xffff) {\n      let count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;\n      let isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);\n      this._insertGlyphs(index, entry.currentInsertIndex, count, isBefore);\n    }\n  }\n\n  getSupportedFeatures() {\n    let features = [];\n    for (let chain of this.morx.chains) {\n      for (let feature of chain.features) {\n        features.push([feature.featureType, feature.featureSetting]);\n      }\n    }\n\n    return features;\n  }\n\n  generateInputs(gid) {\n    if (!this.inputCache) {\n      this.generateInputCache();\n    }\n\n    return this.inputCache[gid] || [];\n  }\n\n  generateInputCache() {\n    this.inputCache = {};\n\n    for (let chain of this.morx.chains) {\n      let flags = chain.defaultFlags;\n\n      for (let subtable of chain.subtables) {\n        if (subtable.subFeatureFlags & flags) {\n          this.generateInputsForSubtable(subtable);\n        }\n      }\n    }\n  }\n\n  generateInputsForSubtable(subtable) {\n    // Currently, only supporting ligature subtables.\n    if (subtable.type !== 2) {\n      return;\n    }\n\n    let reverse = !!(subtable.coverage & REVERSE_DIRECTION);\n    if (reverse) {\n      throw new Error('Reverse subtable, not supported.');\n    }\n\n    this.subtable = subtable;\n    this.ligatureStack = [];\n\n    let stateMachine = this.getStateMachine(subtable);\n    let process = this.getProcessor();\n\n    let input = [];\n    let stack = [];\n    this.glyphs = [];\n\n    stateMachine.traverse({\n      enter: (glyph, entry) => {\n        let glyphs = this.glyphs;\n        stack.push({\n          glyphs: glyphs.slice(),\n          ligatureStack: this.ligatureStack.slice()\n        });\n\n        // Add glyph to input and glyphs to process.\n        let g = this.font.getGlyph(glyph);\n        input.push(g);\n        glyphs.push(input[input.length - 1]);\n\n        // Process ligature substitution\n        process(glyphs[glyphs.length - 1], entry, glyphs.length - 1);\n\n        // Add input to result if only one matching (non-deleted) glyph remains.\n        let count = 0;\n        let found = 0;\n        for (let i = 0; i < glyphs.length && count <= 1; i++) {\n          if (glyphs[i].id !== 0xffff) {\n            count++;\n            found = glyphs[i].id;\n          }\n        }\n\n        if (count === 1) {\n          let result = input.map(g => g.id);\n          let cache = this.inputCache[found];\n          if (cache) {\n            cache.push(result);\n          } else {\n            this.inputCache[found] = [result];\n          }\n        }\n      },\n\n      exit: () => {\n        ({glyphs: this.glyphs, ligatureStack: this.ligatureStack} = stack.pop());\n        input.pop();\n      }\n    });\n  }\n}\n\n// swaps the glyphs in rangeA with those in rangeB\n// reverse the glyphs inside those ranges if specified\n// ranges are in [offset, length] format\nfunction swap(glyphs, rangeA, rangeB, reverseA = false, reverseB = false) {\n  let end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);\n  if (reverseB) {\n    end.reverse();\n  }\n\n  let start = glyphs.splice(rangeA[0], rangeA[1], ...end);\n  if (reverseA) {\n    start.reverse();\n  }\n\n  glyphs.splice(rangeB[0] - (rangeA[1] - 1), 0, ...start);\n  return glyphs;\n}\n\nfunction reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {\n  let length = lastGlyph - firstGlyph + 1;\n  switch (verb) {\n    case 0: // no change\n      return glyphs;\n\n    case 1: // Ax => xA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);\n\n    case 2: // xD => Dx\n      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);\n\n    case 3: // AxD => DxA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);\n\n    case 4: // ABx => xAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);\n\n    case 5: // ABx => xBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);\n\n    case 6: // xCD => CDx\n      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);\n\n    case 7: // xCD => DCx\n      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);\n\n    case 8: // AxCD => CDxA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);\n\n    case 9: // AxCD => DCxA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);\n\n    case 10: // ABxD => DxAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);\n\n    case 11: // ABxD => DxBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);\n\n    case 12: // ABxCD => CDxAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);\n\n    case 13: // ABxCD => CDxBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);\n\n    case 14: // ABxCD => DCxAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);\n\n    case 15: // ABxCD => DCxBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);\n\n    default:\n      throw new Error(`Unknown verb: ${verb}`);\n  }\n}\n","import AATLookupTable from './AATLookupTable';\n\nconst START_OF_TEXT_STATE = 0;\nconst START_OF_LINE_STATE = 1;\n\nconst END_OF_TEXT_CLASS = 0;\nconst OUT_OF_BOUNDS_CLASS = 1;\nconst DELETED_GLYPH_CLASS = 2;\nconst END_OF_LINE_CLASS = 3;\n\nconst DONT_ADVANCE = 0x4000;\n\nexport default class AATStateMachine {\n  constructor(stateTable) {\n    this.stateTable = stateTable;\n    this.lookupTable = new AATLookupTable(stateTable.classTable);\n  }\n\n  process(glyphs, reverse, processEntry) {\n    let currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?\n    let index = reverse ? glyphs.length - 1 : 0;\n    let dir = reverse ? -1 : 1;\n\n    while ((dir === 1 && index <= glyphs.length) || (dir === -1 && index >= -1)) {\n      let glyph = null;\n      let classCode = OUT_OF_BOUNDS_CLASS;\n      let shouldAdvance = true;\n\n      if (index === glyphs.length || index === -1) {\n        classCode = END_OF_TEXT_CLASS;\n      } else {\n        glyph = glyphs[index];\n        if (glyph.id === 0xffff) { // deleted glyph\n          classCode = DELETED_GLYPH_CLASS;\n        } else {\n          classCode = this.lookupTable.lookup(glyph.id);\n          if (classCode == null) {\n            classCode = OUT_OF_BOUNDS_CLASS;\n          }\n        }\n      }\n\n      let row = this.stateTable.stateArray.getItem(currentState);\n      let entryIndex = row[classCode];\n      let entry = this.stateTable.entryTable.getItem(entryIndex);\n\n      if (classCode !== END_OF_TEXT_CLASS && classCode !==  DELETED_GLYPH_CLASS) {\n        processEntry(glyph, entry, index);\n        shouldAdvance = !(entry.flags & DONT_ADVANCE);\n      }\n\n      currentState = entry.newState;\n      if (shouldAdvance) {\n        index += dir;\n      }\n    }\n\n    return glyphs;\n  }\n\n  /**\n   * Performs a depth-first traversal of the glyph strings\n   * represented by the state machine.\n   */\n  traverse(opts, state = 0, visited = new Set) {\n    if (visited.has(state)) {\n      return;\n    }\n\n    visited.add(state);\n\n    let {nClasses, stateArray, entryTable} = this.stateTable;\n    let row = stateArray.getItem(state);\n\n    // Skip predefined classes\n    for (let classCode = 4; classCode < nClasses; classCode++) {\n      let entryIndex = row[classCode];\n      let entry = entryTable.getItem(entryIndex);\n\n      // Try all glyphs in the class\n      for (let glyph of this.lookupTable.glyphsForValue(classCode)) {\n        if (opts.enter) {\n          opts.enter(glyph, entry);\n        }\n\n        if (entry.newState !== 0) {\n          this.traverse(opts, entry.newState, visited);\n        }\n\n        if (opts.exit) {\n          opts.exit(glyph, entry);\n        }\n      }\n    }\n  }\n}\n","import {cache} from '../decorators';\nimport {range} from '../utils';\n\nexport default class AATLookupTable {\n  constructor(table) {\n    this.table = table;\n  }\n\n  lookup(glyph) {\n    switch (this.table.version) {\n      case 0: // simple array format\n        return this.table.values.getItem(glyph);\n\n      case 2: // segment format\n      case 4: {\n        let min = 0;\n        let max = this.table.binarySearchHeader.nUnits - 1;\n\n        while (min <= max) {\n          var mid = (min + max) >> 1;\n          var seg = this.table.segments[mid];\n\n          // special end of search value\n          if (seg.firstGlyph === 0xffff) {\n            return null;\n          }\n\n          if (glyph < seg.firstGlyph) {\n            max = mid - 1;\n          } else if (glyph > seg.lastGlyph) {\n            min = mid + 1;\n          } else {\n            if (this.table.version === 2) {\n              return seg.value;\n            } else {\n              return seg.values[glyph - seg.firstGlyph];\n            }\n          }\n        }\n\n        return null;\n      }\n\n      case 6: { // lookup single\n        let min = 0;\n        let max = this.table.binarySearchHeader.nUnits - 1;\n\n        while (min <= max) {\n          var mid = (min + max) >> 1;\n          var seg = this.table.segments[mid];\n\n          // special end of search value\n          if (seg.glyph === 0xffff) {\n            return null;\n          }\n\n          if (glyph < seg.glyph) {\n            max = mid - 1;\n          } else if (glyph > seg.glyph) {\n            min = mid + 1;\n          } else {\n            return seg.value;\n          }\n        }\n\n        return null;\n      }\n\n      case 8: // lookup trimmed\n        return this.table.values[glyph - this.table.firstGlyph];\n\n      default:\n        throw new Error(`Unknown lookup table format: ${this.table.version}`);\n    }\n  }\n\n  @cache\n  glyphsForValue(classValue) {\n    let res = [];\n\n    switch (this.table.version) {\n      case 2: // segment format\n      case 4: {\n        for (let segment of this.table.segments) {\n          if ((this.table.version === 2 && segment.value === classValue)) {\n            res.push(...range(segment.firstGlyph, segment.lastGlyph + 1));\n          } else {\n            for (let index = 0; index < segment.values.length; index++) {\n              if (segment.values[index] === classValue) {\n                res.push(segment.firstGlyph + index);\n              }\n            }\n          }\n        }\n\n        break;\n      }\n\n      case 6: { // lookup single\n        for (let segment of this.table.segments) {\n          if (segment.value === classValue) {\n            res.push(segment.glyph);\n          }\n        }\n\n        break;\n      }\n\n      case 8: { // lookup trimmed\n        for (let i = 0; i < this.table.values.length; i++) {\n          if (this.table.values[i] === classValue) {\n            res.push(this.table.firstGlyph + i);\n          }\n        }\n\n        break;\n      }\n\n      default:\n        throw new Error(`Unknown lookup table format: ${this.table.version}`);\n    }\n\n    return res;\n  }\n}\n","import ShapingPlan from './ShapingPlan';\nimport * as Shapers from './shapers';\nimport GlyphInfo from './GlyphInfo';\nimport GSUBProcessor from './GSUBProcessor';\nimport GPOSProcessor from './GPOSProcessor';\n\nexport default class OTLayoutEngine {\n  constructor(font) {\n    this.font = font;\n    this.glyphInfos = null;\n    this.plan = null;\n    this.GSUBProcessor = null;\n    this.GPOSProcessor = null;\n    this.fallbackPosition = true;\n\n    if (font.GSUB) {\n      this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);\n    }\n\n    if (font.GPOS) {\n      this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);\n    }\n  }\n\n  setup(glyphRun) {\n    // Map glyphs to GlyphInfo objects so data can be passed between\n    // GSUB and GPOS without mutating the real (shared) Glyph objects.\n    this.glyphInfos = glyphRun.glyphs.map(glyph => new GlyphInfo(this.font, glyph.id, [...glyph.codePoints]));\n\n    // Select a script based on what is available in GSUB/GPOS.\n    let script = null;\n    if (this.GPOSProcessor) {\n      script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n    }\n\n    if (this.GSUBProcessor) {\n      script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n    }\n\n    // Choose a shaper based on the script, and setup a shaping plan.\n    // This determines which features to apply to which glyphs.\n    this.shaper = Shapers.choose(script);\n    this.plan = new ShapingPlan(this.font, script, glyphRun.direction);\n    this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features);\n\n    // Assign chosen features to output glyph run\n    for (let key in this.plan.allFeatures) {\n      glyphRun.features[key] = true;\n    }\n  }\n\n  substitute(glyphRun) {\n    if (this.GSUBProcessor) {\n      this.plan.process(this.GSUBProcessor, this.glyphInfos);\n\n      // Map glyph infos back to normal Glyph objects\n      glyphRun.glyphs = this.glyphInfos.map(glyphInfo => this.font.getGlyph(glyphInfo.id, glyphInfo.codePoints));\n    }\n  }\n\n  position(glyphRun) {\n    if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {\n      this.zeroMarkAdvances(glyphRun.positions);\n    }\n\n    if (this.GPOSProcessor) {\n      this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);\n    }\n\n    if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {\n      this.zeroMarkAdvances(glyphRun.positions);\n    }\n\n    // Reverse the glyphs and positions if the script is right-to-left\n    if (glyphRun.direction === 'rtl') {\n      glyphRun.glyphs.reverse();\n      glyphRun.positions.reverse();\n    }\n\n    return this.GPOSProcessor && this.GPOSProcessor.features;\n  }\n\n  zeroMarkAdvances(positions) {\n    for (let i = 0; i < this.glyphInfos.length; i++) {\n      if (this.glyphInfos[i].isMark) {\n        positions[i].xAdvance = 0;\n        positions[i].yAdvance = 0;\n      }\n    }\n  }\n\n  cleanup() {\n    this.glyphInfos = null;\n    this.plan = null;\n    this.shaper = null;\n  }\n\n  getAvailableFeatures(script, language) {\n    let features = [];\n\n    if (this.GSUBProcessor) {\n      this.GSUBProcessor.selectScript(script, language);\n      features.push(...Object.keys(this.GSUBProcessor.features));\n    }\n\n    if (this.GPOSProcessor) {\n      this.GPOSProcessor.selectScript(script, language);\n      features.push(...Object.keys(this.GPOSProcessor.features));\n    }\n\n    return features;\n  }\n}\n","import * as Script from '../layout/Script';\n\n/**\n * ShapingPlans are used by the OpenType shapers to store which\n * features should by applied, and in what order to apply them.\n * The features are applied in groups called stages. A feature\n * can be applied globally to all glyphs, or locally to only\n * specific glyphs.\n *\n * @private\n */\nexport default class ShapingPlan {\n  constructor(font, script, direction) {\n    this.font = font;\n    this.script = script;\n    this.direction = direction;\n    this.stages = [];\n    this.globalFeatures = {};\n    this.allFeatures = {};\n  }\n\n  /**\n   * Adds the given features to the last stage.\n   * Ignores features that have already been applied.\n   */\n  _addFeatures(features, global) {\n    let stageIndex = this.stages.length - 1;\n    let stage = this.stages[stageIndex];\n    for (let feature of features) {\n      if (this.allFeatures[feature] == null) {\n        stage.push(feature);\n        this.allFeatures[feature] = stageIndex;\n\n        if (global) {\n          this.globalFeatures[feature] = true;\n        }\n      }\n    }\n  }\n\n  /**\n   * Add features to the last stage\n   */\n  add(arg, global = true) {\n    if (this.stages.length === 0) {\n      this.stages.push([]);\n    }\n\n    if (typeof arg === 'string') {\n      arg = [arg];\n    }\n\n    if (Array.isArray(arg)) {\n      this._addFeatures(arg, global);\n    } else if (typeof arg === 'object') {\n      this._addFeatures(arg.global || [], true);\n      this._addFeatures(arg.local || [], false);\n    } else {\n      throw new Error(\"Unsupported argument to ShapingPlan#add\");\n    }\n  }\n\n  /**\n   * Add a new stage\n   */\n  addStage(arg, global) {\n    if (typeof arg === 'function') {\n      this.stages.push(arg, []);\n    } else {\n      this.stages.push([]);\n      this.add(arg, global);\n    }\n  }\n\n  setFeatureOverrides(features) {\n    if (Array.isArray(features)) {\n      this.add(features);\n    } else if (typeof features === 'object') {\n      for (let tag in features) {\n        if (features[tag]) {\n          this.add(tag);\n        } else if (this.allFeatures[tag] != null) {\n          let stage = this.stages[this.allFeatures[tag]];\n          stage.splice(stage.indexOf(tag), 1);\n          delete this.allFeatures[tag];\n          delete this.globalFeatures[tag];\n        }\n      }\n    }\n  }\n\n  /**\n   * Assigns the global features to the given glyphs\n   */\n  assignGlobalFeatures(glyphs) {\n    for (let glyph of glyphs) {\n      for (let feature in this.globalFeatures) {\n        glyph.features[feature] = true;\n      }\n    }\n  }\n\n  /**\n   * Executes the planned stages using the given OTProcessor\n   */\n  process(processor, glyphs, positions) {\n    for (let stage of this.stages) {\n      if (typeof stage === 'function') {\n        if (!positions) {\n          stage(this.font, glyphs, this);\n        }\n\n      } else if (stage.length > 0) {\n        processor.applyFeatures(stage, glyphs, positions);\n      }\n    }\n  }\n}\n","import DefaultShaper from './DefaultShaper';\nimport ArabicShaper from './ArabicShaper';\nimport HangulShaper from './HangulShaper';\nimport IndicShaper from './IndicShaper';\nimport UniversalShaper from './UniversalShaper';\n\nconst SHAPERS = {\n  arab: ArabicShaper,    // Arabic\n  mong: ArabicShaper,    // Mongolian\n  syrc: ArabicShaper,    // Syriac\n  'nko ': ArabicShaper,  // N'Ko\n  phag: ArabicShaper,    // Phags Pa\n  mand: ArabicShaper,    // Mandaic\n  mani: ArabicShaper,    // Manichaean\n  phlp: ArabicShaper,    // Psalter Pahlavi\n\n  hang: HangulShaper,    // Hangul\n\n  bng2: IndicShaper,     // Bengali\n  beng: IndicShaper,     // Bengali\n  dev2: IndicShaper,     // Devanagari\n  deva: IndicShaper,     // Devanagari\n  gjr2: IndicShaper,     // Gujarati\n  gujr: IndicShaper,     // Gujarati\n  guru: IndicShaper,     // Gurmukhi\n  gur2: IndicShaper,     // Gurmukhi\n  knda: IndicShaper,     // Kannada\n  knd2: IndicShaper,     // Kannada\n  mlm2: IndicShaper,     // Malayalam\n  mlym: IndicShaper,     // Malayalam\n  ory2: IndicShaper,     // Oriya\n  orya: IndicShaper,     // Oriya\n  taml: IndicShaper,     // Tamil\n  tml2: IndicShaper,     // Tamil\n  telu: IndicShaper,     // Telugu\n  tel2: IndicShaper,     // Telugu\n  khmr: IndicShaper,     // Khmer\n\n  bali: UniversalShaper, // Balinese\n  batk: UniversalShaper, // Batak\n  brah: UniversalShaper, // Brahmi\n  bugi: UniversalShaper, // Buginese\n  buhd: UniversalShaper, // Buhid\n  cakm: UniversalShaper, // Chakma\n  cham: UniversalShaper, // Cham\n  dupl: UniversalShaper, // Duployan\n  egyp: UniversalShaper, // Egyptian Hieroglyphs\n  gran: UniversalShaper, // Grantha\n  hano: UniversalShaper, // Hanunoo\n  java: UniversalShaper, // Javanese\n  kthi: UniversalShaper, // Kaithi\n  kali: UniversalShaper, // Kayah Li\n  khar: UniversalShaper, // Kharoshthi\n  khoj: UniversalShaper, // Khojki\n  sind: UniversalShaper, // Khudawadi\n  lepc: UniversalShaper, // Lepcha\n  limb: UniversalShaper, // Limbu\n  mahj: UniversalShaper, // Mahajani\n  // mand: UniversalShaper, // Mandaic\n  // mani: UniversalShaper, // Manichaean\n  mtei: UniversalShaper, // Meitei Mayek\n  modi: UniversalShaper, // Modi\n  // mong: UniversalShaper, // Mongolian\n  // 'nko ': UniversalShaper, // N’Ko\n  hmng: UniversalShaper, // Pahawh Hmong\n  // phag: UniversalShaper, // Phags-pa\n  // phlp: UniversalShaper, // Psalter Pahlavi\n  rjng: UniversalShaper, // Rejang\n  saur: UniversalShaper, // Saurashtra\n  shrd: UniversalShaper, // Sharada\n  sidd: UniversalShaper, // Siddham\n  sinh: IndicShaper, // Sinhala\n  sund: UniversalShaper, // Sundanese\n  sylo: UniversalShaper, // Syloti Nagri\n  tglg: UniversalShaper, // Tagalog\n  tagb: UniversalShaper, // Tagbanwa\n  tale: UniversalShaper, // Tai Le\n  lana: UniversalShaper, // Tai Tham\n  tavt: UniversalShaper, // Tai Viet\n  takr: UniversalShaper, // Takri\n  tibt: UniversalShaper, // Tibetan\n  tfng: UniversalShaper, // Tifinagh\n  tirh: UniversalShaper, // Tirhuta\n\n  latn: DefaultShaper,   // Latin\n  DFLT: DefaultShaper    // Default\n};\n\nexport function choose(script) {\n  if (!Array.isArray(script)) {\n    script = [script];\n  }\n\n  for (let s of script) {\n    let shaper = SHAPERS[s];\n    if (shaper) {\n      return shaper;\n    }\n  }\n\n  return DefaultShaper;\n}\n","import {isDigit} from 'unicode-properties';\n\nconst VARIATION_FEATURES = ['rvrn'];\nconst COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];\nconst FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];\nconst HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];\nconst VERTICAL_FEATURES = ['vert'];\nconst DIRECTIONAL_FEATURES = {\n  ltr: ['ltra', 'ltrm'],\n  rtl: ['rtla', 'rtlm']\n};\n\nexport default class DefaultShaper {\n  static zeroMarkWidths = 'AFTER_GPOS';\n  static plan(plan, glyphs, features) {\n    // Plan the features we want to apply\n    this.planPreprocessing(plan);\n    this.planFeatures(plan);\n    this.planPostprocessing(plan, features);\n\n    // Assign the global features to all the glyphs\n    plan.assignGlobalFeatures(glyphs);\n\n    // Assign local features to glyphs\n    this.assignFeatures(plan, glyphs);\n  }\n\n  static planPreprocessing(plan) {\n    plan.add({\n      global: [...VARIATION_FEATURES, ...DIRECTIONAL_FEATURES[plan.direction]],\n      local: FRACTIONAL_FEATURES\n    });\n  }\n\n  static planFeatures(plan) {\n    // Do nothing by default. Let subclasses override this.\n  }\n\n  static planPostprocessing(plan, userFeatures) {\n    plan.add([...COMMON_FEATURES, ...HORIZONTAL_FEATURES]);\n    plan.setFeatureOverrides(userFeatures);\n  }\n\n  static assignFeatures(plan, glyphs) {\n    // Enable contextual fractions\n    for (let i = 0; i < glyphs.length; i++) {\n      let glyph = glyphs[i];\n      if (glyph.codePoints[0] === 0x2044) { // fraction slash\n        let start = i;\n        let end = i + 1;\n\n        // Apply numerator\n        while (start > 0 && isDigit(glyphs[start - 1].codePoints[0])) {\n          glyphs[start - 1].features.numr = true;\n          glyphs[start - 1].features.frac = true;\n          start--;\n        }\n\n        // Apply denominator\n        while (end < glyphs.length && isDigit(glyphs[end].codePoints[0])) {\n          glyphs[end].features.dnom = true;\n          glyphs[end].features.frac = true;\n          end++;\n        }\n\n        // Apply fraction slash\n        glyph.features.frac = true;\n        i = end - 1;\n      }\n    }\n  }\n}\n","import DefaultShaper from './DefaultShaper';\nimport {getCategory} from 'unicode-properties';\nimport UnicodeTrie from 'unicode-trie';\nimport { decodeBase64 } from '../../utils';\n\nconst trie = new UnicodeTrie(decodeBase64(require('fs').readFileSync(__dirname + '/data.trie', 'base64')));\nconst FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];\n\nconst ShapingClasses = {\n  Non_Joining: 0,\n  Left_Joining: 1,\n  Right_Joining: 2,\n  Dual_Joining: 3,\n  Join_Causing: 3,\n  ALAPH: 4,\n  'DALATH RISH': 5,\n  Transparent: 6\n};\n\nconst ISOL = 'isol';\nconst FINA = 'fina';\nconst FIN2 = 'fin2';\nconst FIN3 = 'fin3';\nconst MEDI = 'medi';\nconst MED2 = 'med2';\nconst INIT = 'init';\nconst NONE = null;\n\n// Each entry is [prevAction, curAction, nextState]\nconst STATE_TABLE = [\n  //   Non_Joining,        Left_Joining,       Right_Joining,     Dual_Joining,           ALAPH,            DALATH RISH\n  // State 0: prev was U,  not willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ NONE, ISOL, 1 ],  [ NONE, ISOL, 2 ],  [ NONE, ISOL, 1 ],  [ NONE, ISOL, 6 ] ],\n\n  // State 1: prev was R or ISOL/ALAPH,  not willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ NONE, ISOL, 1 ],  [ NONE, ISOL, 2 ],  [ NONE, FIN2, 5 ],  [ NONE, ISOL, 6 ] ],\n\n  // State 2: prev was D/L in ISOL form,  willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ INIT, FINA, 1 ],  [ INIT, FINA, 3 ],  [ INIT, FINA, 4 ],  [ INIT, FINA, 6 ] ],\n\n  // State 3: prev was D in FINA form,  willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ MEDI, FINA, 1 ],  [ MEDI, FINA, 3 ],  [ MEDI, FINA, 4 ],  [ MEDI, FINA, 6 ] ],\n\n  // State 4: prev was FINA ALAPH,  not willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ MED2, ISOL, 1 ],  [ MED2, ISOL, 2 ],  [ MED2, FIN2, 5 ],  [ MED2, ISOL, 6 ] ],\n\n  // State 5: prev was FIN2/FIN3 ALAPH,  not willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ ISOL, ISOL, 1 ],  [ ISOL, ISOL, 2 ],  [ ISOL, FIN2, 5 ],  [ ISOL, ISOL, 6 ] ],\n\n  // State 6: prev was DALATH/RISH,  not willing to join.\n  [ [ NONE, NONE, 0 ],  [ NONE, ISOL, 2 ],  [ NONE, ISOL, 1 ],  [ NONE, ISOL, 2 ],  [ NONE, FIN3, 5 ],  [ NONE, ISOL, 6 ] ]\n];\n\n/**\n * This is a shaper for Arabic, and other cursive scripts.\n * It uses data from ArabicShaping.txt in the Unicode database,\n * compiled to a UnicodeTrie by generate-data.coffee.\n *\n * The shaping state machine was ported from Harfbuzz.\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc\n */\nexport default class ArabicShaper extends DefaultShaper {\n  static planFeatures(plan) {\n    plan.add(['ccmp', 'locl']);\n    for (let i = 0; i < FEATURES.length; i++) {\n      let feature = FEATURES[i];\n      plan.addStage(feature, false);\n    }\n\n    plan.addStage('mset');\n  }\n\n  static assignFeatures(plan, glyphs) {\n    super.assignFeatures(plan, glyphs);\n\n    let prev = -1;\n    let state = 0;\n    let actions = [];\n\n    // Apply the state machine to map glyphs to features\n    for (let i = 0; i < glyphs.length; i++) {\n      let curAction, prevAction;\n      var glyph = glyphs[i];\n      let type = getShapingClass(glyph.codePoints[0]);\n      if (type === ShapingClasses.Transparent) {\n        actions[i] = NONE;\n        continue;\n      }\n\n      [prevAction, curAction, state] = STATE_TABLE[state][type];\n\n      if (prevAction !== NONE && prev !== -1) {\n        actions[prev] = prevAction;\n      }\n\n      actions[i] = curAction;\n      prev = i;\n    }\n\n    // Apply the chosen features to their respective glyphs\n    for (let index = 0; index < glyphs.length; index++) {\n      let feature;\n      var glyph = glyphs[index];\n      if (feature = actions[index]) {\n        glyph.features[feature] = true;\n      }\n    }\n  }\n}\n\nfunction getShapingClass(codePoint) {\n  let res = trie.get(codePoint);\n  if (res) {\n    return res - 1;\n  }\n\n  let category = getCategory(codePoint);\n  if (category === 'Mn' || category === 'Me' || category === 'Cf') {\n    return ShapingClasses.Transparent;\n  }\n\n  return ShapingClasses.Non_Joining;\n}\n","import DefaultShaper from './DefaultShaper';\nimport GlyphInfo from '../GlyphInfo';\n\n/**\n * This is a shaper for the Hangul script, used by the Korean language.\n * It does the following:\n *   - decompose if unsupported by the font:\n *     <LV>   -> <L,V>\n *     <LVT>  -> <L,V,T>\n *     <LV,T> -> <L,V,T>\n *\n *   - compose if supported by the font:\n *     <L,V>   -> <LV>\n *     <L,V,T> -> <LVT>\n *     <LV,T>  -> <LVT>\n *\n *   - reorder tone marks (S is any valid syllable):\n *     <S, M> -> <M, S>\n *\n *   - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.\n *\n * This logic is based on the following documents:\n *   - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm\n *   - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf\n */\nexport default class HangulShaper extends DefaultShaper {\n  static zeroMarkWidths = 'NONE';\n  static planFeatures(plan) {\n    plan.add(['ljmo', 'vjmo', 'tjmo'], false);\n  }\n\n  static assignFeatures(plan, glyphs) {\n    let state = 0;\n    let i = 0;\n    while (i < glyphs.length) {\n      let action;\n      let glyph = glyphs[i];\n      let code = glyph.codePoints[0];\n      let type = getType(code);\n\n      [ action, state ] = STATE_TABLE[state][type];\n\n      switch (action) {\n        case DECOMPOSE:\n          // Decompose the composed syllable if it is not supported by the font.\n          if (!plan.font.hasGlyphForCodePoint(code)) {\n            i = decompose(glyphs, i, plan.font);\n          }\n          break;\n\n        case COMPOSE:\n          // Found a decomposed syllable. Try to compose if supported by the font.\n          i = compose(glyphs, i, plan.font);\n          break;\n\n        case TONE_MARK:\n          // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.\n          reorderToneMark(glyphs, i, plan.font);\n          break;\n\n        case INVALID:\n          // Tone mark has no valid syllable to attach to, so insert a dotted circle\n          i = insertDottedCircle(glyphs, i, plan.font);\n          break;\n      }\n\n      i++;\n    }\n  }\n}\n\nconst HANGUL_BASE  = 0xac00;\nconst HANGUL_END   = 0xd7a4;\nconst HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;\nconst L_BASE  = 0x1100; // lead\nconst V_BASE  = 0x1161; // vowel\nconst T_BASE  = 0x11a7; // trail\nconst L_COUNT = 19;\nconst V_COUNT = 21;\nconst T_COUNT = 28;\nconst L_END   = L_BASE + L_COUNT - 1;\nconst V_END   = V_BASE + V_COUNT - 1;\nconst T_END   = T_BASE + T_COUNT - 1;\nconst DOTTED_CIRCLE = 0x25cc;\n\nconst isL    = code => 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;\nconst isV    = code => 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;\nconst isT    = code => 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;\nconst isTone = code => 0x302e <= code && code <= 0x302f;\nconst isLVT  = code => HANGUL_BASE <= code && code <= HANGUL_END;\nconst isLV   = code => (code - HANGUL_BASE) < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;\nconst isCombiningL = code => L_BASE <= code && code <= L_END;\nconst isCombiningV = code => V_BASE <= code && code <= V_END;\nconst isCombiningT = code => T_BASE + 1 && 1 <= code && code <= T_END;\n\n// Character categories\nconst X   = 0; // Other character\nconst L   = 1; // Leading consonant\nconst V   = 2; // Medial vowel\nconst T   = 3; // Trailing consonant\nconst LV  = 4; // Composed <LV> syllable\nconst LVT = 5; // Composed <LVT> syllable\nconst M   = 6; // Tone mark\n\n// This function classifies a character using the above categories.\nfunction getType(code) {\n  if (isL(code))    { return L; }\n  if (isV(code))    { return V; }\n  if (isT(code))    { return T; }\n  if (isLV(code))   { return LV; }\n  if (isLVT(code))  { return LVT; }\n  if (isTone(code)) { return M; }\n  return X;\n}\n\n// State machine actions\nconst NO_ACTION = 0;\nconst DECOMPOSE = 1;\nconst COMPOSE   = 2;\nconst TONE_MARK = 4;\nconst INVALID   = 5;\n\n// Build a state machine that accepts valid syllables, and applies actions along the way.\n// The logic this is implementing is documented at the top of the file.\nconst STATE_TABLE = [\n  //       X                 L                 V                T                  LV                LVT               M\n  // State 0: start state\n  [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ NO_ACTION, 0 ], [ NO_ACTION, 0 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [  INVALID, 0  ] ],\n\n  // State 1: <L>\n  [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [  COMPOSE, 2  ], [ NO_ACTION, 0 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [  INVALID, 0  ] ],\n\n  // State 2: <L,V> or <LV>\n  [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ NO_ACTION, 0 ], [  COMPOSE, 3  ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [ TONE_MARK, 0 ] ],\n\n  // State 3: <L,V,T> or <LVT>\n  [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ NO_ACTION, 0 ], [ NO_ACTION, 0 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [ TONE_MARK, 0 ] ]\n];\n\nfunction getGlyph(font, code, features) {\n  return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);\n}\n\nfunction decompose(glyphs, i, font) {\n  let glyph = glyphs[i];\n  let code = glyph.codePoints[0];\n\n  let s = code - HANGUL_BASE;\n  let t = T_BASE + s % T_COUNT;\n  s = s / T_COUNT | 0;\n  let l = L_BASE + s / V_COUNT | 0;\n  let v = V_BASE + s % V_COUNT;\n\n  // Don't decompose if all of the components are not available\n  if (!font.hasGlyphForCodePoint(l) ||\n      !font.hasGlyphForCodePoint(v) ||\n      (t !== T_BASE && !font.hasGlyphForCodePoint(t))) {\n    return i;\n  }\n\n  // Replace the current glyph with decomposed L, V, and T glyphs,\n  // and apply the proper OpenType features to each component.\n  let ljmo = getGlyph(font, l, glyph.features);\n  ljmo.features.ljmo = true;\n\n  let vjmo = getGlyph(font, v, glyph.features);\n  vjmo.features.vjmo = true;\n\n  let insert = [ ljmo, vjmo ];\n\n  if (t > T_BASE) {\n    let tjmo = getGlyph(font, t, glyph.features);\n    tjmo.features.tjmo = true;\n    insert.push(tjmo);\n  }\n\n  glyphs.splice(i, 1, ...insert);\n  return i + insert.length - 1;\n}\n\nfunction compose(glyphs, i, font) {\n  let glyph = glyphs[i];\n  let code = glyphs[i].codePoints[0];\n  let type = getType(code);\n\n  let prev = glyphs[i - 1].codePoints[0];\n  let prevType = getType(prev);\n\n  // Figure out what type of syllable we're dealing with\n  let lv, ljmo, vjmo, tjmo;\n  if (prevType === LV && type === T) {\n    // <LV,T>\n    lv = prev;\n    tjmo = glyph;\n  } else {\n    if (type === V) {\n      // <L,V>\n      ljmo = glyphs[i - 1];\n      vjmo = glyph;\n    } else {\n      // <L,V,T>\n      ljmo = glyphs[i - 2];\n      vjmo = glyphs[i - 1];\n      tjmo = glyph;\n    }\n\n    let l = ljmo.codePoints[0];\n    let v = vjmo.codePoints[0];\n\n    // Make sure L and V are combining characters\n    if (isCombiningL(l) && isCombiningV(v)) {\n      lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;\n    }\n  }\n\n  let t = (tjmo && tjmo.codePoints[0]) || T_BASE;\n  if ((lv != null) && (t === T_BASE || isCombiningT(t))) {\n    let s = lv + (t - T_BASE);\n\n    // Replace with a composed glyph if supported by the font,\n    // otherwise apply the proper OpenType features to each component.\n    if (font.hasGlyphForCodePoint(s)) {\n      let del = prevType === V ? 3 : 2;\n      glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));\n      return i - del + 1;\n    }\n  }\n\n  // Didn't compose (either a non-combining component or unsupported by font).\n  if (ljmo) { ljmo.features.ljmo = true; }\n  if (vjmo) { vjmo.features.vjmo = true; }\n  if (tjmo) { tjmo.features.tjmo = true; }\n\n  if (prevType === LV) {\n    // Sequence was originally <L,V>, which got combined earlier.\n    // Either the T was non-combining, or the LVT glyph wasn't supported.\n    // Decompose the glyph again and apply OT features.\n    decompose(glyphs, i - 1, font);\n    return i + 1;\n  }\n\n  return i;\n}\n\nfunction getLength(code) {\n  switch (getType(code)) {\n    case LV:\n    case LVT:\n      return 1;\n    case V:\n      return 2;\n    case T:\n      return 3;\n  }\n}\n\nfunction reorderToneMark(glyphs, i, font) {\n  let glyph = glyphs[i];\n  let code = glyphs[i].codePoints[0];\n\n  // Move tone mark to the beginning of the previous syllable, unless it is zero width\n  if (font.glyphForCodePoint(code).advanceWidth === 0) { return; }\n\n  let prev = glyphs[i - 1].codePoints[0];\n  let len = getLength(prev);\n\n  glyphs.splice(i, 1);\n  return glyphs.splice(i - len, 0, glyph);\n}\n\nfunction insertDottedCircle(glyphs, i, font) {\n  let glyph = glyphs[i];\n  let code = glyphs[i].codePoints[0];\n\n  if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {\n    let dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features);\n\n    // If the tone mark is zero width, insert the dotted circle before, otherwise after\n    let idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;\n    glyphs.splice(idx, 0, dottedCircle);\n    i++;\n  }\n\n  return i;\n}\n","import {isMark} from 'unicode-properties';\nimport OTProcessor from './OTProcessor';\n\nexport default class GlyphInfo {\n  constructor(font, id, codePoints = [], features) {\n    this._font = font;\n    this.codePoints = codePoints;\n    this.id = id;\n\n    this.features = {};\n    if (Array.isArray(features)) {\n      for (let i = 0; i < features.length; i++) {\n        let feature = features[i];\n        this.features[feature] = true;\n      }\n    } else if (typeof features === 'object') {\n      Object.assign(this.features, features);\n    }\n\n    this.ligatureID = null;\n    this.ligatureComponent = null;\n    this.isLigated = false;\n    this.cursiveAttachment = null;\n    this.markAttachment = null;\n    this.shaperInfo = null;\n    this.substituted = false;\n    this.isMultiplied = false;\n  }\n\n  get id() {\n    return this._id;\n  }\n\n  set id(id) {\n    this._id = id;\n    this.substituted = true;\n\n    let GDEF = this._font.GDEF;\n    if (GDEF && GDEF.glyphClassDef) {\n      // TODO: clean this up\n      let classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);\n      this.isBase = classID === 1;\n      this.isLigature = classID === 2;\n      this.isMark = classID === 3;\n      this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;\n    } else {\n      this.isMark = this.codePoints.length > 0 && this.codePoints.every(isMark);\n      this.isBase = !this.isMark;\n      this.isLigature = this.codePoints.length > 1;\n      this.markAttachmentType = 0;\n    }\n  }\n\n  copy() {\n    return new GlyphInfo(this._font, this.id, this.codePoints, this.features);\n  }\n}\n","import GlyphIterator from './GlyphIterator';\nimport * as Script from '../layout/Script';\n\nconst DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];\n\nexport default class OTProcessor {\n  constructor(font, table) {\n    this.font = font;\n    this.table = table;\n\n    this.script = null;\n    this.scriptTag = null;\n\n    this.language = null;\n    this.languageTag = null;\n\n    this.features = {};\n    this.lookups = {};\n\n    // Setup variation substitutions\n    this.variationsIndex = font._variationProcessor\n      ? this.findVariationsIndex(font._variationProcessor.normalizedCoords)\n      : -1;\n\n    // initialize to default script + language\n    this.selectScript();\n\n    // current context (set by applyFeatures)\n    this.glyphs = [];\n    this.positions = []; // only used by GPOS\n    this.ligatureID = 1;\n    this.currentFeature = null;\n  }\n\n  findScript(script) {\n    if (this.table.scriptList == null) {\n      return null;\n    }\n\n    if (!Array.isArray(script)) {\n      script = [script];\n    }\n\n    for (let s of script) {\n      for (let entry of this.table.scriptList) {\n        if (entry.tag === s) {\n          return entry;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  selectScript(script, language, direction) {\n    let changed = false;\n    let entry;\n    if (!this.script || script !== this.scriptTag) {\n      entry = this.findScript(script);\n      if (!entry) {\n        entry = this.findScript(DEFAULT_SCRIPTS);\n      }\n\n      if (!entry) {\n        return this.scriptTag;\n      }\n\n      this.scriptTag = entry.tag;\n      this.script = entry.script;\n      this.language = null;\n      this.languageTag = null;\n      changed = true;\n    }\n\n    if (!direction || direction !== this.direction) {\n      this.direction = direction || Script.direction(script);\n    }\n\n    if (language && language.length < 4) {\n      language += ' '.repeat(4 - language.length);\n    }\n\n    if (!language || language !== this.languageTag) {\n      this.language = null;\n\n      for (let lang of this.script.langSysRecords) {\n        if (lang.tag === language) {\n          this.language = lang.langSys;\n          this.languageTag = lang.tag;\n          break;\n        }\n      }\n\n      if (!this.language) {\n        this.language = this.script.defaultLangSys;\n        this.languageTag = null;\n      }\n\n      changed = true;\n    }\n\n    // Build a feature lookup table\n    if (changed) {\n      this.features = {};\n      if (this.language) {\n        for (let featureIndex of this.language.featureIndexes) {\n          let record = this.table.featureList[featureIndex];\n          let substituteFeature = this.substituteFeatureForVariations(featureIndex);\n          this.features[record.tag] = substituteFeature || record.feature;\n        }\n      }\n    }\n\n    return this.scriptTag;\n  }\n\n  lookupsForFeatures(userFeatures = [], exclude) {\n    let lookups = [];\n    for (let tag of userFeatures) {\n      let feature = this.features[tag];\n      if (!feature) {\n        continue;\n      }\n\n      for (let lookupIndex of feature.lookupListIndexes) {\n        if (exclude && exclude.indexOf(lookupIndex) !== -1) {\n          continue;\n        }\n\n        lookups.push({\n          feature: tag,\n          index: lookupIndex,\n          lookup: this.table.lookupList.get(lookupIndex)\n        });\n      }\n    }\n\n    lookups.sort((a, b) => a.index - b.index);\n    return lookups;\n  }\n\n  substituteFeatureForVariations(featureIndex) {\n    if (this.variationsIndex === -1) {\n      return null;\n    }\n\n    let record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];\n    let substitutions = record.featureTableSubstitution.substitutions;\n    for (let substitution of substitutions) {\n      if (substitution.featureIndex === featureIndex) {\n        return substitution.alternateFeatureTable;\n      }\n    }\n\n    return null;\n  }\n\n  findVariationsIndex(coords) {\n    let variations = this.table.featureVariations;\n    if (!variations) {\n      return -1;\n    }\n\n    let records = variations.featureVariationRecords;\n    for (let i = 0; i < records.length; i++) {\n      let conditions = records[i].conditionSet.conditionTable;\n      if (this.variationConditionsMatch(conditions, coords)) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  variationConditionsMatch(conditions, coords) {\n    return conditions.every(condition => {\n      let coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;\n      return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;\n    });\n  }\n\n  applyFeatures(userFeatures, glyphs, advances) {\n    let lookups = this.lookupsForFeatures(userFeatures);\n    this.applyLookups(lookups, glyphs, advances);\n  }\n\n  applyLookups(lookups, glyphs, positions) {\n    this.glyphs = glyphs;\n    this.positions = positions;\n    this.glyphIterator = new GlyphIterator(glyphs);\n\n    for (let { feature, lookup } of lookups) {\n      this.currentFeature = feature;\n      this.glyphIterator.reset(lookup.flags);\n\n      while (this.glyphIterator.index < glyphs.length) {\n        if (!(feature in this.glyphIterator.cur.features)) {\n          this.glyphIterator.next();\n          continue;\n        }\n\n        for (let table of lookup.subTables) {\n          let res = this.applyLookup(lookup.lookupType, table);\n          if (res) {\n            break;\n          }\n        }\n\n        this.glyphIterator.next();\n      }\n    }\n  }\n\n  applyLookup(lookup, table) {\n    throw new Error(\"applyLookup must be implemented by subclasses\");\n  }\n\n  applyLookupList(lookupRecords) {\n    let options = this.glyphIterator.options;\n    let glyphIndex = this.glyphIterator.index;\n\n    for (let lookupRecord of lookupRecords) {\n      // Reset flags and find glyph index for this lookup record\n      this.glyphIterator.reset(options, glyphIndex);\n      this.glyphIterator.increment(lookupRecord.sequenceIndex);\n\n      // Get the lookup and setup flags for subtables\n      let lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);\n      this.glyphIterator.reset(lookup.flags, this.glyphIterator.index);\n\n      // Apply lookup subtables until one matches\n      for (let table of lookup.subTables) {\n        if (this.applyLookup(lookup.lookupType, table)) {\n          break;\n        }\n      }\n    }\n\n    this.glyphIterator.reset(options, glyphIndex);\n    return true;\n  }\n\n  coverageIndex(coverage, glyph) {\n    if (glyph == null) {\n      glyph = this.glyphIterator.cur.id;\n    }\n\n    switch (coverage.version) {\n      case 1:\n        return coverage.glyphs.indexOf(glyph);\n\n      case 2:\n        for (let range of coverage.rangeRecords) {\n          if (range.start <= glyph && glyph <= range.end) {\n            return range.startCoverageIndex + glyph - range.start;\n          }\n        }\n\n        break;\n    }\n\n    return -1;\n  }\n\n  match(sequenceIndex, sequence, fn, matched) {\n    let pos = this.glyphIterator.index;\n    let glyph = this.glyphIterator.increment(sequenceIndex);\n    let idx = 0;\n\n    while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {\n      if (matched) {\n        matched.push(this.glyphIterator.index);\n      }\n\n      idx++;\n      glyph = this.glyphIterator.next();\n    }\n\n    this.glyphIterator.index = pos;\n    if (idx < sequence.length) {\n      return false;\n    }\n\n    return matched || true;\n  }\n\n  sequenceMatches(sequenceIndex, sequence) {\n    return this.match(sequenceIndex, sequence, (component, glyph) => component === glyph.id);\n  }\n\n  sequenceMatchIndices(sequenceIndex, sequence) {\n    return this.match(sequenceIndex, sequence, (component, glyph) => {\n      // If the current feature doesn't apply to this glyph,\n      if (!(this.currentFeature in glyph.features)) {\n        return false;\n      }\n\n      return component === glyph.id;\n    }, []);\n  }\n\n  coverageSequenceMatches(sequenceIndex, sequence) {\n    return this.match(sequenceIndex, sequence, (coverage, glyph) =>\n      this.coverageIndex(coverage, glyph.id) >= 0\n    );\n  }\n\n  getClassID(glyph, classDef) {\n    switch (classDef.version) {\n      case 1: // Class array\n        let i = glyph - classDef.startGlyph;\n        if (i >= 0 && i < classDef.classValueArray.length) {\n          return classDef.classValueArray[i];\n        }\n\n        break;\n\n      case 2:\n        for (let range of classDef.classRangeRecord) {\n          if (range.start <= glyph && glyph <= range.end) {\n            return range.class;\n          }\n        }\n\n        break;\n    }\n\n    return 0;\n  }\n\n  classSequenceMatches(sequenceIndex, sequence, classDef) {\n    return this.match(sequenceIndex, sequence, (classID, glyph) =>\n      classID === this.getClassID(glyph.id, classDef)\n    );\n  }\n\n  applyContext(table) {\n    let index, set;\n    switch (table.version) {\n      case 1:\n        index = this.coverageIndex(table.coverage);\n        if (index === -1) {\n          return false;\n        }\n\n        set = table.ruleSets[index];\n        for (let rule of set) {\n          if (this.sequenceMatches(1, rule.input)) {\n            return this.applyLookupList(rule.lookupRecords);\n          }\n        }\n\n        break;\n\n      case 2:\n        if (this.coverageIndex(table.coverage) === -1) {\n          return false;\n        }\n\n        index = this.getClassID(this.glyphIterator.cur.id, table.classDef);\n        if (index === -1) {\n          return false;\n        }\n\n        set = table.classSet[index];\n        for (let rule of set) {\n          if (this.classSequenceMatches(1, rule.classes, table.classDef)) {\n            return this.applyLookupList(rule.lookupRecords);\n          }\n        }\n\n        break;\n\n      case 3:\n        if (this.coverageSequenceMatches(0, table.coverages)) {\n          return this.applyLookupList(table.lookupRecords);\n        }\n\n        break;\n    }\n\n    return false;\n  }\n\n  applyChainingContext(table) {\n    let index;\n    switch (table.version) {\n      case 1:\n        index = this.coverageIndex(table.coverage);\n        if (index === -1) {\n          return false;\n        }\n\n        let set = table.chainRuleSets[index];\n        for (let rule of set) {\n          if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack)\n            && this.sequenceMatches(1, rule.input)\n            && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {\n            return this.applyLookupList(rule.lookupRecords);\n          }\n        }\n\n        break;\n\n      case 2:\n        if (this.coverageIndex(table.coverage) === -1) {\n          return false;\n        }\n\n        index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);\n        let rules = table.chainClassSet[index];\n        if (!rules) {\n          return false;\n        }\n\n        for (let rule of rules) {\n          if (this.classSequenceMatches(-rule.backtrack.length, rule.backtrack, table.backtrackClassDef) &&\n            this.classSequenceMatches(1, rule.input, table.inputClassDef) &&\n            this.classSequenceMatches(1 + rule.input.length, rule.lookahead, table.lookaheadClassDef)) {\n            return this.applyLookupList(rule.lookupRecords);\n          }\n        }\n\n        break;\n\n      case 3:\n        if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) &&\n          this.coverageSequenceMatches(0, table.inputCoverage) &&\n          this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {\n          return this.applyLookupList(table.lookupRecords);\n        }\n\n        break;\n    }\n\n    return false;\n  }\n}\n","export default class GlyphIterator {\n  constructor(glyphs, options) {\n    this.glyphs = glyphs;\n    this.reset(options);\n  }\n\n  reset(options = {}, index = 0) {\n    this.options = options;\n    this.flags = options.flags || {};\n    this.markAttachmentType = options.markAttachmentType || 0;\n    this.index = index;\n  }\n\n  get cur() {\n    return this.glyphs[this.index] || null;\n  }\n\n  shouldIgnore(glyph) {\n    return (this.flags.ignoreMarks && glyph.isMark) ||\n           (this.flags.ignoreBaseGlyphs && glyph.isBase) ||\n           (this.flags.ignoreLigatures && glyph.isLigature) ||\n           (this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType);\n  }\n\n  move(dir) {\n    this.index += dir;\n    while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {\n      this.index += dir;\n    }\n\n    if (0 > this.index || this.index >= this.glyphs.length) {\n      return null;\n    }\n\n    return this.glyphs[this.index];\n  }\n\n  next() {\n    return this.move(+1);\n  }\n\n  prev() {\n    return this.move(-1);\n  }\n\n  peek(count = 1) {\n    let idx = this.index;\n    let res = this.increment(count);\n    this.index = idx;\n    return res;\n  }\n\n  peekIndex(count = 1) {\n    let idx = this.index;\n    this.increment(count);\n    let res = this.index;\n    this.index = idx;\n    return res;\n  }\n\n  increment(count = 1) {\n    let dir = count < 0 ? -1 : 1;\n    count = Math.abs(count);\n    while (count--) {\n      this.move(dir);\n    }\n\n    return this.glyphs[this.index];\n  }\n}\n","import DefaultShaper from './DefaultShaper';\nimport StateMachine from 'dfa';\nimport UnicodeTrie from 'unicode-trie';\nimport {getCategory} from 'unicode-properties';\nimport * as Script from '../../layout/Script';\nimport GlyphInfo from '../GlyphInfo';\nimport indicMachine from './indic.json';\nimport useData from './use.json';\nimport {\n  CATEGORIES,\n  POSITIONS,\n  CONSONANT_FLAGS,\n  JOINER_FLAGS,\n  HALANT_OR_COENG_FLAGS, INDIC_CONFIGS,\n  INDIC_DECOMPOSITIONS\n} from './indic-data';\nimport { decodeBase64 } from '../../utils';\n\nconst {decompositions} = useData;\nconst trie = new UnicodeTrie(decodeBase64(require('fs').readFileSync(__dirname + '/indic.trie', 'base64')));\nconst stateMachine = new StateMachine(indicMachine);\n\n/**\n * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.\n * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc\n */\nexport default class IndicShaper extends DefaultShaper {\n  static zeroMarkWidths = 'NONE';\n  static planFeatures(plan) {\n    plan.addStage(setupSyllables);\n\n    plan.addStage(['locl', 'ccmp']);\n\n    plan.addStage(initialReordering);\n\n    plan.addStage('nukt');\n    plan.addStage('akhn');\n    plan.addStage('rphf', false);\n    plan.addStage('rkrf');\n    plan.addStage('pref', false);\n    plan.addStage('blwf', false);\n    plan.addStage('abvf', false);\n    plan.addStage('half', false);\n    plan.addStage('pstf', false);\n    plan.addStage('vatu');\n    plan.addStage('cjct');\n    plan.addStage('cfar', false);\n\n    plan.addStage(finalReordering);\n\n    plan.addStage({\n      local: ['init'],\n      global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']\n    });\n\n    // Setup the indic config for the selected script\n    plan.unicodeScript = Script.fromOpenType(plan.script);\n    plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;\n    plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2';\n\n    // TODO: turn off kern (Khmer) and liga features.\n  }\n\n  static assignFeatures(plan, glyphs) {\n    // Decompose split matras\n    // TODO: do this in a more general unicode normalizer\n    for (let i = glyphs.length - 1; i >= 0; i--) {\n      let codepoint = glyphs[i].codePoints[0];\n      let d = INDIC_DECOMPOSITIONS[codepoint] || decompositions[codepoint];\n      if (d) {\n        let decomposed = d.map(c => {\n          let g = plan.font.glyphForCodePoint(c);\n          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);\n        });\n\n        glyphs.splice(i, 1, ...decomposed);\n      }\n    }\n  }\n}\n\nfunction indicCategory(glyph) {\n  return trie.get(glyph.codePoints[0]) >> 8;\n}\n\nfunction indicPosition(glyph) {\n  return 1 << (trie.get(glyph.codePoints[0]) & 0xff);\n}\n\nclass IndicInfo {\n  constructor(category, position, syllableType, syllable) {\n    this.category = category;\n    this.position = position;\n    this.syllableType = syllableType;\n    this.syllable = syllable;\n  }\n}\n\nfunction setupSyllables(font, glyphs) {\n  let syllable = 0;\n  let last = 0;\n  for (let [start, end, tags] of stateMachine.match(glyphs.map(indicCategory))) {\n    if (start > last) {\n      ++syllable;\n      for (let i = last; i < start; i++) {\n        glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n      }\n    }\n\n    ++syllable;\n\n    // Create shaper info\n    for (let i = start; i <= end; i++) {\n      glyphs[i].shaperInfo = new IndicInfo(\n        1 << indicCategory(glyphs[i]),\n        indicPosition(glyphs[i]),\n        tags[0],\n        syllable\n      );\n    }\n\n    last = end + 1;\n  }\n\n  if (last < glyphs.length) {\n    ++syllable;\n    for (let i = last; i < glyphs.length; i++) {\n      glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n    }\n  }\n}\n\nfunction isConsonant(glyph) {\n  return glyph.shaperInfo.category & CONSONANT_FLAGS;\n}\n\nfunction isJoiner(glyph) {\n  return glyph.shaperInfo.category & JOINER_FLAGS;\n}\n\nfunction isHalantOrCoeng(glyph) {\n  return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;\n}\n\nfunction wouldSubstitute(glyphs, feature) {\n  for (let glyph of glyphs) {\n    glyph.features = {[feature]: true};\n  }\n\n  let GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;\n  GSUB.applyFeatures([feature], glyphs);\n\n  return glyphs.length === 1;\n}\n\nfunction consonantPosition(font, consonant, virama) {\n  let glyphs = [virama, consonant, virama];\n  if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {\n    return POSITIONS.Below_C;\n  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {\n    return POSITIONS.Post_C;\n  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {\n    return POSITIONS.Post_C;\n  }\n\n  return POSITIONS.Base_C;\n}\n\nfunction initialReordering(font, glyphs, plan) {\n  let indicConfig = plan.indicConfig;\n  let features = font._layoutEngine.engine.GSUBProcessor.features;\n\n  let dottedCircle = font.glyphForCodePoint(0x25cc).id;\n  let virama = font.glyphForCodePoint(indicConfig.virama).id;\n  if (virama) {\n    let info = new GlyphInfo(font, virama, [indicConfig.virama]);\n    for (let i = 0; i < glyphs.length; i++) {\n      if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {\n        glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);\n      }\n    }\n  }\n\n  for (let start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {\n    let {category, syllableType} = glyphs[start].shaperInfo;\n\n    if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {\n      continue;\n    }\n\n    if (syllableType === 'broken_cluster' && dottedCircle) {\n      let g = new GlyphInfo(font, dottedCircle, [0x25cc]);\n      g.shaperInfo = new IndicInfo(\n        1 << indicCategory(g),\n        indicPosition(g),\n        glyphs[start].shaperInfo.syllableType,\n        glyphs[start].shaperInfo.syllable\n      );\n\n      // Insert after possible Repha.\n      let i = start;\n      while (i < end && glyphs[i].shaperInfo.category === CATEGORIES.Repha) {\n        i++;\n      }\n\n      glyphs.splice(i++, 0, g);\n      end++;\n    }\n\n    // 1. Find base consonant:\n    //\n    // The shaping engine finds the base consonant of the syllable, using the\n    // following algorithm: starting from the end of the syllable, move backwards\n    // until a consonant is found that does not have a below-base or post-base\n    // form (post-base forms have to follow below-base forms), or that is not a\n    // pre-base reordering Ra, or arrive at the first consonant. The consonant\n    // stopped at will be the base.\n\n    let base = end;\n    let limit = start;\n    let hasReph = false;\n\n    // If the syllable starts with Ra + Halant (in a script that has Reph)\n    // and has more than one consonant, Ra is excluded from candidates for\n    // base consonants.\n    if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph &&\n      features.rphf &&\n      start + 3 <= end && (\n        (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2])) ||\n        (indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)\n      )\n    ) {\n      // See if it matches the 'rphf' feature.\n      let g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];\n      if (wouldSubstitute(g.slice(0, 2), 'rphf') || (indicConfig.rephMode === 'Explicit' && wouldSubstitute(g, 'rphf'))) {\n        limit += 2;\n        while (limit < end && isJoiner(glyphs[limit])) {\n          limit++;\n        }\n        base = start;\n        hasReph = true;\n      }\n    } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {\n      limit++;\n      while (limit < end && isJoiner(glyphs[limit])) {\n        limit++;\n      }\n      base = start;\n      hasReph = true;\n    }\n\n    switch (indicConfig.basePos) {\n      case 'Last': {\n        // starting from the end of the syllable, move backwards\n        let i = end;\n        let seenBelow = false;\n\n        do {\n          let info = glyphs[--i].shaperInfo;\n\n          // until a consonant is found\n          if (isConsonant(glyphs[i])) {\n            // that does not have a below-base or post-base form\n            // (post-base forms have to follow below-base forms),\n            if (info.position !== POSITIONS.Below_C && (info.position !== POSITIONS.Post_C || seenBelow)) {\n              base = i;\n              break;\n            }\n\n            // or that is not a pre-base reordering Ra,\n            //\n            // IMPLEMENTATION NOTES:\n            //\n            // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped\n            // by the logic above already.\n            //\n\n            // or arrive at the first consonant. The consonant stopped at will\n            // be the base.\n            if (info.position === POSITIONS.Below_C) {\n              seenBelow = true;\n            }\n\n            base = i;\n          } else if (start < i && info.category === CATEGORIES.ZWJ && glyphs[i - 1].shaperInfo.category === CATEGORIES.H) {\n            // A ZWJ after a Halant stops the base search, and requests an explicit\n            // half form.\n            // A ZWJ before a Halant, requests a subjoined form instead, and hence\n            // search continues.  This is particularly important for Bengali\n            // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.\n            break;\n          }\n        } while (i > limit);\n        break;
Showing 512.00 KB of 704.82 KB. Use Edit/Download for full content.

Directory Contents

Dirs: 0 × Files: 9

Name Size Perms Modified Actions
127 B lr--r--r-- 2026-03-14 01:49:19
Edit Download
532.21 KB lrw-r--r-- 2026-02-14 19:19:54
Edit Download
704.82 KB lrw-r--r-- 2026-02-14 19:19:40
Edit Download
552.76 KB lrw-r--r-- 2026-02-14 19:19:16
Edit Download
705.70 KB lrw-r--r-- 2026-02-14 19:19:42
Edit Download
553.71 KB lrw-r--r-- 2026-02-14 19:19:20
Edit Download
706.57 KB lrw-r--r-- 2026-02-14 19:19:42
Edit Download
533.15 KB lrw-r--r-- 2026-02-14 19:20:04
Edit Download
705.68 KB lrw-r--r-- 2026-02-14 19:19:50
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).