{"version":3,"file":"mermaid.core.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,0xCAA0xC;AACryC,aAAa,uyBAAuyB;AACpzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,iCAAiC;AACjC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,sBAAsB,mCAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,yEAAyE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,0EAA0E,EAAE,QAAQ,sDAAsD,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,oBAAoB,qNAAqN,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,eAAe,UAAU,8IAA8I,gFAAgF,GAAG,8CAA8C,8BAA8B,2BAA2B,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,UAAU,eAAe,wDAAwD,gBAAgB,UAAU,oHAAoH,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,+NAA+N,gBAAgB,wDAAwD,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,oBAAoB,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,4CAA4C,UAAU,EAAE,UAAU,gBAAgB,8CAA8C,EAAE,wDAAwD,eAAe,kCAAkC,iBAAiB,2BAA2B,EAAE,aAAa,EAAE,8CAA8C,eAAe,UAAU,gBAAgB,qBAAqB,gBAAgB,sBAAsB,gBAAgB,sBAAsB,2DAA2D,+CAA+C,6BAA6B,WAAW,GAAG,WAAW,EAAE,wBAAwB,yDAAyD,WAAW,8BAA8B,WAAW,8BAA8B,WAAW,iBAAiB,cAAc,gBAAgB,UAAU,4CAA4C,WAAW;AACt6F,iBAAiB,sGAAsG;AACvH;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,yIAAyI,8BAA8B,mBAAmB,yBAAyB,8DAA8D,gCAAgC,yFAAyF,oBAAoB,WAAW,yBAAyB,0fAA0f,EAAE,MAAM,YAAY,EAAE;AACn+B,aAAa,iBAAiB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,kBAAkB,kCAAkC,kBAAkB,qCAAqC,SAAS,kCAAkC,WAAW,2CAA2C,YAAY,kCAAkC,aAAa,kCAAkC,WAAW,kCAAkC,YAAY;AACpgB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACh4BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,+vBAA+vB;AAC1wB,aAAa,2aAA2a;AACxb;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB,mCAAmC;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,mFAAmF,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,kDAAkD,uDAAuD,kDAAkD,GAAG,UAAU,EAAE,UAAU,mDAAmD,UAAU,EAAE,gBAAgB,EAAE,UAAU,eAAe,aAAa,EAAE,mCAAmC,EAAE,0BAA0B,mGAAmG,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,mCAAmC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kCAAkC,8BAA8B,UAAU,EAAE,0BAA0B,gBAAgB,UAAU,eAAe,6BAA6B,2BAA2B,UAAU,uEAAuE,aAAa;AAC9pC,iBAAiB,mEAAmE;AACpF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,yBAAyB;AACzB;AACA,qCAAqC;AACrC;AACA,yBAAyB;AACzB;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,0GAA0G,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,gGAAgG,2GAA2G,mCAAmC,cAAc,uCAAuC,aAAa;AAC7gB,aAAa,kBAAkB,8BAA8B,UAAU,8BAA8B,mBAAmB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,UAAU,iDAAiD,YAAY;AAClU,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AClxBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,48DAA48D;AACv9D,aAAa,4tCAA4tC;AACzuC;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,6CAA6C,8CAA8C,WAAW;AACtG;AACA;AACA,+CAA+C,gDAAgD,WAAW;AAC1G;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,iCAAiC;AACjC;AACA;AACA,mCAAmC,qDAAqD;AACxF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,6CAA6C,UAAU;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA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AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,yBAAyB;AACzB;AACA,qCAAqC;AACrC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,mBAAmB,+2BAA+2B,21JAA21J,UAAU;AACn1L,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,WAAW,6BAA6B,QAAQ,6DAA6D,mBAAmB,+BAA+B,UAAU,8BAA8B,WAAW,kCAAkC,YAAY;AACnpB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACvhCA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,ikBAAikB;AAC5kB,aAAa,sXAAsX;AACnY;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,aAAa;AACb;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,wCAAwC;AACxC;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,EAAE,0BAA0B,cAAc,IAAI,GAAG,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,kJAAkJ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,iHAAiH,qLAAqL,UAAU,gBAAgB,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,oBAAoB,gBAAgB,UAAU,iBAAiB,aAAa,EAAE,UAAU,eAAe,UAAU,8BAA8B,UAAU,GAAG,UAAU;AACn7B,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,qBAAqB,8TAA8T,2EAA2E,2BAA2B,2BAA2B,6BAA6B,qDAAqD,iCAAiC,2BAA2B,kBAAkB,kBAAkB;AACvvB,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,YAAY;AAC/Z,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AClwBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,mhBAAmhB,0BAA0B;AACxjB,aAAa,wTAAwT,EAAE;AACvU;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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A;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA,UAAU,wBAAwB,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB;AACvF,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,YAAY,kCAAkC,WAAW,kCAAkC,YAAY;AAC1T,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt5BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,iSAAiS,mHAAmH;AAC/Z,aAAa,mJAAmJ,2FAA2F;AAC3P;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,mDAAmD,EAAE,MAAM,EAAE,oDAAoD,EAAE,oDAAoD,YAAY,cAAc,6CAA6C,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,YAAY,yDAAyD,aAAa,KAAK,GAAG,uBAAuB,iCAAiC,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,0BAA0B,yDAAyD,iBAAiB,gBAAgB,sEAAsE,aAAa,EAAE,UAAU;AAC1sB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA,sCAAsC;AACtC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB;AACrI,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,mBAAmB,+BAA+B,UAAU,+BAA+B,WAAW,kCAAkC,YAAY;AACvW,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC3pBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,4kCAA4kC;AACvlC,aAAa,wtBAAwtB;AACruB;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,uCAAuC,EAAE,MAAM,EAAE,+CAA+C,EAAE,SAAS,EAAE,gBAAgB,4BAA4B,SAAS,EAAE,wCAAwC,EAAE,QAAQ,EAAE,4IAA4I,EAAE,uBAAuB,mBAAmB,QAAQ,EAAE,SAAS,EAAE,4IAA4I,EAAE,4IAA4I,EAAE,4IAA4I,EAAE,4IAA4I,EAAE,4IAA4I,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oBAAoB,+HAA+H,gBAAgB,gBAAgB,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,uDAAuD,EAAE,uDAAuD,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,oGAAoG,UAAU,eAAe,+CAA+C,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,oBAAoB,gBAAgB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,+CAA+C,8BAA8B,UAAU,EAAE,UAAU,EAAE,iCAAiC,4CAA4C,oBAAoB,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,+CAA+C,gBAAgB,6BAA6B,EAAE,6BAA6B,gBAAgB,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,kCAAkC,EAAE,kCAAkC;AAC10F,iBAAiB,6QAA6Q;AAC9R;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,gCAAgC,iCAAiC,iHAAiH,WAAW,qoBAAqoB;AACz5B,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,cAAc,6BAA6B,UAAU,6BAA6B,WAAW,kCAAkC,YAAY;AAC9V,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACzyBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,yhCAAyhC;AACpiC,aAAa,woBAAwoB;AACrpB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,yBAAyB,gDAAgD;AACzE;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF;AAC5G;AACA;AACA,4BAA4B,kFAAkF;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;;AAEA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;;AAEA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;;AAEA,uBAAuB,wDAAwD;AAC/E;AACA;AACA;;AAEA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,4EAA4E,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,+NAA+N,EAAE,uBAAuB,iCAAiC,sMAAsM,4BAA4B,aAAa,EAAE,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,4CAA4C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,sFAAsF,EAAE,oCAAoC,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,iDAAiD,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,EAAE,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,kFAAkF,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,kHAAkH,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,gBAAgB,cAAc,EAAE,UAAU,EAAE,WAAW,gBAAgB,WAAW,4CAA4C,kOAAkO,EAAE,kOAAkO,EAAE,kOAAkO,EAAE,WAAW,EAAE,4OAA4O,EAAE,WAAW,EAAE,4OAA4O,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,0DAA0D,WAAW,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,sDAAsD,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC1oH,iBAAiB,yNAAyN;AAC1O;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA,yCAAyC,qBAAqB;AAC9D;AACA,0BAA0B,iBAAiB,oBAAoB;AAC/D;AACA,0BAA0B,iBAAiB;AAC3C;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kEAAkE,iCAAiC,sKAAsK,uNAAuN,yBAAyB,iCAAiC,qEAAqE,qBAAqB,yCAAyC,4IAA4I;AAC3+B,aAAa,kBAAkB,gCAAgC,mBAAmB,kCAAkC,kBAAkB,kCAAkC,OAAO,mCAAmC,UAAU,sCAAsC,SAAS,mCAAmC,YAAY;AAC1T,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACh4BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,ylBAAylB,qJAAqJ;AACzvB,aAAa,wZAAwZ,6HAA6H;AACliB;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,6DAA6D,WAAW;AACxE;AACA;;AAEA,2CAA2C,iCAAiC;AAC5E,iBAAiB,4BAA4B,+DAA+D,WAAW;AACvH;AACA;AACA;;AAEA,sEAAsE;AACtE,iBAAiB,4BAA4B,+DAA+D,WAAW,8DAA8D;AACrL;AACA;AACA;;AAEA,2EAA2E;AAC3E,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA,2GAA2G;AAC3G,kBAAkB;AAClB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,6GAA6G;AAC7G,iBAAiB,0CAA0C;AAC3D;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,sEAAsE,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mLAAmL,EAAE,uBAAuB,iCAAiC,0JAA0J,yCAAyC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,0DAA0D,oCAAoC,8BAA8B,UAAU,EAAE,UAAU,oGAAoG,gBAAgB,2CAA2C,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,8BAA8B,aAAa,EAAE,UAAU,eAAe,UAAU,GAAG,qLAAqL,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,sDAAsD,KAAK,+BAA+B,qLAAqL;AACzyD,iBAAiB,gEAAgE;AACjF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV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;AAC1C,MAAM;AACN,WAAW,kXAAkX;AAC7X,aAAa,oNAAoN;AACjO;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,oFAAoF,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,mDAAmD,sEAAsE,UAAU,gBAAgB,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,aAAa,EAAE,UAAU,EAAE,UAAU;AACjjB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,2FAA2F,iCAAiC,2BAA2B,kBAAkB,kBAAkB;AAC/T,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,YAAY;AAC9K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC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A;AACA;AACA;AACA;AACEpP,EAAAA,mBAAmB,EAAE,KA5ER;;AA8Eb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE1L,EAAAA,MAAM,EAAE,CAAC,QAAD,EAAW,eAAX,EAA4B,aAA5B,EAA2C,aAA3C,CAxFK;;AA0Fb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE+a,EAAAA,gBAAgB,EAAE,KAtGL;;AAwGb;AACF;AACA;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAExZ,SA7GR;;AA+Gb;AACAG,EAAAA,SAAS,EAAE;AACT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIsZ,IAAAA,cAAc,EAAE,CAbP;;AAeT;AACJ;AACA;AACA;AACA;AACA;AACA;AACIrZ,IAAAA,UAAU,EAAE,IAtBH;;AAwBT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIsZ,IAAAA,WAAW,EAAE,EApCJ;;AAsCT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAlDJ;;AAoDT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIjQ,IAAAA,KAAK,EAAE,OA7DE;AA8DT;AACA;AACA/I,IAAAA,OAAO,EAAE,EAhEA;;AAkET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiZ,IAAAA,WAAW,EAAE,IA9EJ;;AAgFT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5FR,GAhHE;;AA+Mb;AACAC,EAAAA,QAAQ,EAAE;AACR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EART;;AAUR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBR;;AAmBR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EA1BR;;AA4BR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAnCL;;AAqCR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIzZ,IAAAA,KAAK,EAAE,GA5CC;;AA8CR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EArDA;;AAuDR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIyZ,IAAAA,SAAS,EAAE,EA9DH;;AAgER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CAvEP;;AAyER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAhFJ;;AAkFR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EAzFP;;AA2FR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QAlGN;;AAoGR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,IA3GN;;AA6GR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,KAtHJ;;AAwHR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,CAnIT;;AAqIR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IA/IL;;AAiJR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KA5JL;;AA8JR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,KArKb;;AAuKR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9KP;;AAgLR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,yBAvLT;;AAyLR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,GA9LT;;AAgMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EAvMN;;AAyMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,4CAhNR;;AAkNR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GAvNR;;AAyNR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,QAhOH;;AAkOR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EAzOT;;AA2OR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,4CAlPX;;AAoPR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,GAzPX;;AA2PR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,KAhQE;;AAkQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvQL;;AAyQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9QP;;AAgRR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EArRR;AAuRRC,IAAAA,WAAW,EAAE,uBAAY;AACvB,aAAO;AACL5c,QAAAA,UAAU,EAAE,KAAKsc,iBADZ;AAELO,QAAAA,QAAQ,EAAE,KAAKR,eAFV;AAGLS,QAAAA,UAAU,EAAE,KAAKP;AAHZ,OAAP;AAKD,KA7RO;AA8RRQ,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO;AACL/c,QAAAA,UAAU,EAAE,KAAKkc,cADZ;AAELW,QAAAA,QAAQ,EAAE,KAAKZ,YAFV;AAGLa,QAAAA,UAAU,EAAE,KAAKX;AAHZ,OAAP;AAKD,KApSO;AAqSRa,IAAAA,SAAS,EAAE,qBAAY;AACrB,aAAO;AACLhd,QAAAA,UAAU,EAAE,KAAK+b,eADZ;AAELc,QAAAA,QAAQ,EAAE,KAAKf,aAFV;AAGLgB,QAAAA,UAAU,EAAE,KAAKd;AAHZ,OAAP;AAKD;AA3SO,GAhNG;;AA8fb;AACAiB,EAAAA,KAAK,EAAE;AACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAVX;;AAYL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,EAnBN;;AAqBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,CA5BH;;AA8BL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EArCP;;AAuCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EA9CT;;AAgDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvDR;;AAyDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,oBAAoB,EAAE,EAhEjB;;AAkEL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIX,IAAAA,QAAQ,EAAE,EAzEL;;AA2EL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIY,IAAAA,eAAe,EAAE,EAlFZ;;AAoFL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,CA3FhB;;AA6FL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,UAxGP;;AA0GL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI9C,IAAAA,WAAW,EAAE,IAtHR;;AAwHL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI+C,IAAAA,OAAO,EAAE,KAjIJ;AAmILC,IAAAA,QAAQ,EAAE5c;AAnIL,GA/fM;;AAqoBb;AACA6c,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,cAAc,EAAE,EART;;AAUP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBT;;AAmBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI6C,IAAAA,UAAU,EAAE,GA1BL;;AA4BP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIrc,IAAAA,KAAK,EAAE,GAnCA;;AAqCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EA5CD;;AA8CP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIyZ,IAAAA,SAAS,EAAE,EArDJ;;AAuDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CA9DR;;AAgEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAvEL;;AAyEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EApFR;;AAsFP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QA7FP;;AA+FP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIG,IAAAA,eAAe,EAAE,CA1GV;;AA4GP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IAxHN;;AA0HP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KArIN;AAsIPoC,IAAAA,YAAY,EAAE,EAtIP;AAuIPC,IAAAA,cAAc,EAAE,yBAvIT;AAwIPC,IAAAA,UAAU,EAAE,EAxIL;AAyIP;AACAlD,IAAAA,eAAe,EAAE,EA1IV;AA4IP;AACAmD,IAAAA,aAAa,EAAE,IA7IR;AA8IPC,IAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,CA9IP;AAgJPC,IAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,CAhJP;AAiJPC,IAAAA,cAAc,EAAE,CAAC,MAAD;AAjJT,GAtoBI;AAyxBb1d,EAAAA,KAAK,EAAE;AACLuK,IAAAA,mBAAmB,EAAE,KADhB;;AAGL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI0P,IAAAA,WAAW,EAAE,IAfR;;AAgBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5BZ,GAzxBM;AAuzBb5P,EAAAA,KAAK,EAAE;AACLqT,IAAAA,aAAa,EAAE,EADV;AAELC,IAAAA,QAAQ,EAAE,CAFL;AAGL5c,IAAAA,OAAO,EAAE,CAHJ;AAIL6c,IAAAA,UAAU,EAAE,EAJP;AAKLC,IAAAA,UAAU,EAAE,CAAC,EALR;AAMLpD,IAAAA,UAAU,EAAE,EANP;AAOLqD,IAAAA,SAAS,EAAE,EAPN;AAQLC,IAAAA,UAAU,EAAE,CARP;AASL;AACAC,IAAAA,WAAW,EAAE,CAVR;AAWL;AACA;AACAC,IAAAA,cAAc,EAAE,IAbX;AAcLjC,IAAAA,QAAQ,EAAE,EAdL;AAeLkC,IAAAA,WAAW,EAAE,EAfR;AAgBLC,IAAAA,gBAAgB,EAAE,IAhBb;AAiBLC,IAAAA,iBAAiB,EAAE,EAjBd;AAkBLC,IAAAA,MAAM,EAAE,CAlBH;;AAmBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIrE,IAAAA,WAAW,EAAE,IA/BR;;AAgCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5CZ,GAvzBM;;AAs2Bb;AACAqE,EAAAA,EAAE,EAAE;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIzE,IAAAA,cAAc,EAAE,EAbd;;AAeF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI0E,IAAAA,eAAe,EAAE,IA5Bf;;AA8BF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GArCd;;AAuCF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EA9Cf;;AAgDF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA5Db;;AA8DF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,MArEN;;AAuEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,UA9EJ;;AAgFF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI5C,IAAAA,QAAQ,EAAE,EAzFR;;AA2FF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIhC,IAAAA,WAAW,EAAE;AAvGX,GAv2BS;;AAi9Bb;AACA6E,EAAAA,GAAG,EAAE;AACH7B,IAAAA,QAAQ,EAAE5c,SADP;;AAGH;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI4Z,IAAAA,WAAW,EAAE;AAfV,GAl9BQ;;AAo+Bb;AACA8E,EAAAA,WAAW,EAAE;AACX9B,IAAAA,QAAQ,EAAE5c,SADC;;AAGX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI4Z,IAAAA,WAAW,EAAE,IAfF;AAiBX+E,IAAAA,SAAS,EAAE,SAjBA;AAkBXC,IAAAA,UAAU,EAAE,MAlBD;AAmBXC,IAAAA,gBAAgB,EAAE,OAnBP;AAoBXC,IAAAA,iBAAiB,EAAE,MApBR;AAqBXC,IAAAA,cAAc,EAAE,GArBL;AAsBXC,IAAAA,eAAe,EAAE,GAtBN;AAuBXpD,IAAAA,QAAQ,EAAE,EAvBC;AAwBXqD,IAAAA,YAAY,EAAE,EAxBH;AAyBXC,IAAAA,WAAW,EAAE;AAzBF,GAr+BA;AAggCbC,EAAAA,QAAQ,EAAE;AACR1F,IAAAA,cAAc,EAAE,CADR;AAER2F,IAAAA,SAAS,EAAE;AACT3e,MAAAA,KAAK,EAAE,EADE;AAETC,MAAAA,MAAM,EAAE,GAFC;AAGTS,MAAAA,CAAC,EAAE,CAAC,EAHK;AAITC,MAAAA,CAAC,EAAE;AAJM,KAFH;AAQRie,IAAAA,cAAc,EAAE,MARR;AASRC,IAAAA,eAAe,EAAE,IATT;AAURC,IAAAA,YAAY,EAAE;AAVN;AAhgCG,CAAf;AA8gCA5iB,MAAM,CAACgD,KAAP,CAAauK,mBAAb,GAAmCvN,MAAM,CAACuN,mBAA1C;AACAvN,MAAM,CAACwiB,QAAP,CAAgBjV,mBAAhB,GAAsCvN,MAAM,CAACuN,mBAA7C;;AAEA,IAAMsV,MAAM,GAAG,SAATA,MAAS,CAACC,GAAD;AAAA,MAAMC,MAAN,uEAAe,EAAf;AAAA,SACb7iB,MAAM,CAAC0B,IAAP,CAAYkhB,GAAZ,EAAiBE,MAAjB,CAAwB,UAAChY,GAAD,EAAMnF,EAAN,EAAa;AACnC,QAAIwB,KAAK,CAACC,OAAN,CAAcwb,GAAG,CAACjd,EAAD,CAAjB,CAAJ,EAA4B;AAC1B,aAAOmF,GAAP;AACD,KAFD,MAEO,IAAI,QAAO8X,GAAG,CAACjd,EAAD,CAAV,MAAmB,QAAnB,IAA+Bid,GAAG,CAACjd,EAAD,CAAH,KAAY,IAA/C,EAAqD;AAC1D,0CAAWmF,GAAX,IAAgB+X,MAAM,GAAGld,EAAzB,sBAAgCgd,MAAM,CAACC,GAAG,CAACjd,EAAD,CAAJ,EAAU,EAAV,CAAtC;AACD;;AACD,wCAAWmF,GAAX,IAAgB+X,MAAM,GAAGld,EAAzB;AACD,GAPD,EAOG,EAPH,CADa;AAAA,CAAf;;AAUO,IAAMod,UAAU,GAAGJ,MAAM,CAAC7iB,MAAD,EAAS,EAAT,CAAzB;AACP,iEAAeA,MAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnjCA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMqjB,qBAAqB,GAAG,UAA9B;AAEA,IAAIC,SAAS,GAAG,EAAhB;AACA,IAAIve,OAAO,GAAG,EAAd;AACA,IAAIwe,YAAY,GAAG,CAAnB;AAEA,IAAIC,IAAI,GAAG,EAAX;;AAEA,IAAM1d,YAAY,GAAG,SAAfA,YAAe,CAACE,GAAD;AAAA,SAASmd,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAT;AAAA,CAArB;;AAEO,IAAMO,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;;AAIP,IAAMyT,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUvkB,EAAV,EAAc;AAC1C,MAAIwkB,WAAW,GAAG,EAAlB;AACA,MAAIC,SAAS,GAAGzkB,EAAhB;;AAEA,MAAIA,EAAE,CAAC4C,OAAH,CAAW,GAAX,IAAkB,CAAtB,EAAyB;AACvB,QAAImF,KAAK,GAAG/H,EAAE,CAAC+H,KAAH,CAAS,GAAT,CAAZ;AACA0c,IAAAA,SAAS,GAAG1c,KAAK,CAAC,CAAD,CAAjB;AAEAyc,IAAAA,WAAW,GAAGV,mEAAA,CAAoB/b,KAAK,CAAC,CAAD,CAAzB,EAA8B8b,8CAAA,EAA9B,CAAd;AACD;;AAED,SAAO;AAAEY,IAAAA,SAAS,EAAEA,SAAb;AAAwB3T,IAAAA,IAAI,EAAE0T;AAA9B,GAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAAU1kB,EAAV,EAAc;AACpC,MAAI2kB,OAAO,GAAGJ,qBAAqB,CAACvkB,EAAD,CAAnC,CADoC,CAEpC;;AACA,MAAI,OAAO0F,OAAO,CAACif,OAAO,CAACF,SAAT,CAAd,KAAsC,WAA1C,EAAuD;AAEvD/e,EAAAA,OAAO,CAACif,OAAO,CAACF,SAAT,CAAP,GAA6B;AAC3BzkB,IAAAA,EAAE,EAAE2kB,OAAO,CAACF,SADe;AAE3B3T,IAAAA,IAAI,EAAE6T,OAAO,CAAC7T,IAFa;AAG3B8T,IAAAA,UAAU,EAAE,EAHe;AAI3BvI,IAAAA,OAAO,EAAE,EAJkB;AAK3BR,IAAAA,OAAO,EAAE,EALkB;AAM3BR,IAAAA,WAAW,EAAE,EANc;AAO3BxD,IAAAA,KAAK,EAAEmM,qBAAqB,GAAGW,OAAO,CAACF,SAAhC,GAA4C,GAA5C,GAAkDP;AAP9B,GAA7B;AAUAA,EAAAA,YAAY;AACb,CAhBM;AAkBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMW,WAAW,GAAG,SAAdA,WAAc,CAAU7kB,EAAV,EAAc;AACvC,MAAM8kB,SAAS,GAAGjkB,MAAM,CAAC0B,IAAP,CAAYmD,OAAZ,CAAlB;;AACA,OAAK,IAAIlE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsjB,SAAS,CAACrjB,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAIkE,OAAO,CAACof,SAAS,CAACtjB,CAAD,CAAV,CAAP,CAAsBxB,EAAtB,KAA6BA,EAAjC,EAAqC;AACnC,aAAO0F,OAAO,CAACof,SAAS,CAACtjB,CAAD,CAAV,CAAP,CAAsBqW,KAA7B;AACD;AACF;AACF,CAPM;AASA,IAAMxR,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/B4d,EAAAA,SAAS,GAAG,EAAZ;AACAve,EAAAA,OAAO,GAAG,EAAV;AACAye,EAAAA,IAAI,GAAG,EAAP;AACAA,EAAAA,IAAI,CAACnhB,IAAL,CAAU+hB,aAAV;AACD,CALM;AAOA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAUhlB,EAAV,EAAc;AACpC,SAAO0F,OAAO,CAAC1F,EAAD,CAAd;AACD,CAFM;AAGA,IAAMilB,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAOvf,OAAP;AACD,CAFM;AAIA,IAAMwf,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOjB,SAAP;AACD,CAFM;AAIA,IAAMkB,WAAW,GAAG,SAAdA,WAAc,CAAUC,QAAV,EAAoB;AAC7C3kB,EAAAA,8CAAA,CAAU,sBAAsBqE,IAAI,CAACC,SAAL,CAAeqgB,QAAf,CAAhC;AACAV,EAAAA,QAAQ,CAACU,QAAQ,CAACC,GAAV,CAAR;AACAX,EAAAA,QAAQ,CAACU,QAAQ,CAACE,GAAV,CAAR;AAEAF,EAAAA,QAAQ,CAACC,GAAT,GAAed,qBAAqB,CAACa,QAAQ,CAACC,GAAV,CAArB,CAAoCZ,SAAnD;AACAW,EAAAA,QAAQ,CAACE,GAAT,GAAef,qBAAqB,CAACa,QAAQ,CAACE,GAAV,CAArB,CAAoCb,SAAnD;AAEAW,EAAAA,QAAQ,CAACG,cAAT,GAA0BzB,mEAAA,CACxBsB,QAAQ,CAACG,cAAT,CAAwBjd,IAAxB,EADwB,EAExBub,8CAAA,EAFwB,CAA1B;AAKAuB,EAAAA,QAAQ,CAACI,cAAT,GAA0B1B,mEAAA,CACxBsB,QAAQ,CAACI,cAAT,CAAwBld,IAAxB,EADwB,EAExBub,8CAAA,EAFwB,CAA1B;AAKAI,EAAAA,SAAS,CAACjhB,IAAV,CAAeoiB,QAAf;AACD,CAnBM;AAqBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAAUhB,SAAV,EAAqBiB,UAArB,EAAiC;AAC5D,MAAMC,kBAAkB,GAAGpB,qBAAqB,CAACE,SAAD,CAArB,CAAiCA,SAA5D;AACA/e,EAAAA,OAAO,CAACigB,kBAAD,CAAP,CAA4BtK,WAA5B,CAAwCrY,IAAxC,CAA6C0iB,UAA7C;AACD,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAME,SAAS,GAAG,SAAZA,SAAY,CAAUnB,SAAV,EAAqBoB,MAArB,EAA6B;AACpD,MAAMF,kBAAkB,GAAGpB,qBAAqB,CAACE,SAAD,CAArB,CAAiCA,SAA5D;AACA,MAAMqB,QAAQ,GAAGpgB,OAAO,CAACigB,kBAAD,CAAxB;;AAEA,MAAI,OAAOE,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACA,QAAME,YAAY,GAAGF,MAAM,CAACvd,IAAP,EAArB;;AAEA,QAAIyd,YAAY,CAACC,UAAb,CAAwB,IAAxB,KAAiCD,YAAY,CAACE,QAAb,CAAsB,IAAtB,CAArC,EAAkE;AAChE;AACA;AACAH,MAAAA,QAAQ,CAACzK,WAAT,CAAqBrY,IAArB,CAA0ByD,YAAY,CAACsf,YAAY,CAACG,SAAb,CAAuB,CAAvB,EAA0BH,YAAY,CAACtkB,MAAb,GAAsB,CAAhD,CAAD,CAAtC;AACD,KAJD,MAIO,IAAIskB,YAAY,CAACnjB,OAAb,CAAqB,GAArB,IAA4B,CAAhC,EAAmC;AACxCkjB,MAAAA,QAAQ,CAACzJ,OAAT,CAAiBrZ,IAAjB,CAAsByD,YAAY,CAACsf,YAAD,CAAlC;AACD,KAFM,MAEA,IAAIA,YAAJ,EAAkB;AACvBD,MAAAA,QAAQ,CAACjK,OAAT,CAAiB7Y,IAAjB,CAAsByD,YAAY,CAACsf,YAAD,CAAlC;AACD;AACF;AACF,CAlBM;AAoBA,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAAU1B,SAAV,EAAqB5I,OAArB,EAA8B;AACtD,MAAI7T,KAAK,CAACC,OAAN,CAAc4T,OAAd,CAAJ,EAA4B;AAC1BA,IAAAA,OAAO,CAACxO,OAAR;AACAwO,IAAAA,OAAO,CAACpZ,OAAR,CAAgB,UAACojB,MAAD;AAAA,aAAYD,SAAS,CAACnB,SAAD,EAAYoB,MAAZ,CAArB;AAAA,KAAhB;AACD;AACF,CALM;AAOA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAAUxiB,KAAV,EAAiB;AAC3C,MAAIA,KAAK,CAACsiB,SAAN,CAAgB,CAAhB,EAAmB,CAAnB,MAA0B,GAA9B,EAAmC;AACjC,WAAOpC,mEAAA,CAAoBlgB,KAAK,CAACyiB,MAAN,CAAa,CAAb,EAAgB/d,IAAhB,EAApB,EAA4Cub,8CAAA,EAA5C,CAAP;AACD,GAFD,MAEO;AACL,WAAOpd,YAAY,CAAC7C,KAAK,CAAC0E,IAAN,EAAD,CAAnB;AACD;AACF,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMge,WAAW,GAAG,SAAdA,WAAc,CAAUC,GAAV,EAAe9B,SAAf,EAA0B;AACnD8B,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUqT,GAAV,EAAe;AACpC,QAAI9V,EAAE,GAAG8V,GAAT;AACA,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAO0Q,KAAP,CAAa,IAAb,CAAJ,EAAwBxmB,EAAE,GAAGgkB,qBAAqB,GAAGhkB,EAA7B;;AACxB,QAAI,OAAO0F,OAAO,CAAC1F,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtC0F,MAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAY4kB,UAAZ,CAAuB5hB,IAAvB,CAA4ByhB,SAA5B;AACD;AACF,GAND;AAOD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMgC,UAAU,GAAG,SAAbA,UAAa,CAAUF,GAAV,EAAe1J,OAAf,EAAwB;AACzC,MAAMlc,MAAM,GAAGkjB,8CAAA,EAAf;AACA0C,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC,QAAI,OAAO6c,OAAP,KAAmB,WAAvB,EAAoC;AAClCnX,MAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAY6c,OAAZ,GAAsBiH,mEAAA,CAAoBjH,OAApB,EAA6Blc,MAA7B,CAAtB;AACD;AACF,GAJD;AAKD,CAPD;AASA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM+lB,OAAO,GAAG,SAAVA,OAAU,CAAUH,GAAV,EAAeI,OAAf,EAAwBjK,MAAxB,EAAgC;AACrD,MAAM/b,MAAM,GAAGkjB,8CAAA,EAAf;AACA0C,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUqT,GAAV,EAAe;AACpC,QAAI9V,EAAE,GAAG8V,GAAT;AACA,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAO0Q,KAAP,CAAa,IAAb,CAAJ,EAAwBxmB,EAAE,GAAGgkB,qBAAqB,GAAGhkB,EAA7B;;AACxB,QAAI,OAAO0F,OAAO,CAAC1F,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtC0F,MAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAYyc,IAAZ,GAAmBhU,wDAAA,CAAgBke,OAAhB,EAAyBhmB,MAAzB,CAAnB;;AACA,UAAIA,MAAM,CAACgc,aAAP,KAAyB,SAA7B,EAAwC;AACtCjX,QAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAY4c,UAAZ,GAAyB,MAAzB;AACD,OAFD,MAEO,IAAI,OAAOF,MAAP,KAAkB,QAAtB,EAAgC;AACrChX,QAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAY4c,UAAZ,GAAyBnW,YAAY,CAACiW,MAAD,CAArC;AACD,OAFM,MAEA;AACLhX,QAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAY4c,UAAZ,GAAyB,QAAzB;AACD;AACF;AACF,GAbD;AAcA0J,EAAAA,WAAW,CAACC,GAAD,EAAM,WAAN,CAAX;AACD,CAjBM;AAmBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMM,aAAa,GAAG,SAAhBA,aAAgB,CAAUN,GAAV,EAAeO,YAAf,EAA6BC,YAA7B,EAA2C;AACtER,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnCgnB,IAAAA,YAAY,CAAChnB,EAAD,EAAK8mB,YAAL,EAAmBC,YAAnB,CAAZ;AACArhB,IAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAY8c,YAAZ,GAA2B,IAA3B;AACD,GAHD;AAIAwJ,EAAAA,WAAW,CAACC,GAAD,EAAM,WAAN,CAAX;AACD,CANM;;AAQP,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAAUnP,KAAV,EAAiBiP,YAAjB,EAA+BC,YAA/B,EAA6C;AAChE,MAAMpmB,MAAM,GAAGkjB,8CAAA,EAAf;AACA,MAAI7jB,EAAE,GAAG6X,KAAT;AACA,MAAIoP,MAAM,GAAGpC,WAAW,CAAC7kB,EAAD,CAAxB;;AAEA,MAAIW,MAAM,CAACgc,aAAP,KAAyB,OAA7B,EAAsC;AACpC;AACD;;AACD,MAAI,OAAOmK,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AACD,MAAI,OAAOphB,OAAO,CAAC1F,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtC,QAAIknB,OAAO,GAAG,EAAd;;AACA,QAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAG,MAAAA,OAAO,GAAGH,YAAY,CAAChf,KAAb,CAAmB,+BAAnB,CAAV;;AACA,WAAK,IAAIvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0lB,OAAO,CAACzlB,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC,YAAI2lB,IAAI,GAAGD,OAAO,CAAC1lB,CAAD,CAAP,CAAW8G,IAAX,EAAX;AACA;;AACA;;AACA,YAAI6e,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0BD,IAAI,CAACC,MAAL,CAAYD,IAAI,CAAC1lB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClE0lB,UAAAA,IAAI,GAAGA,IAAI,CAACd,MAAL,CAAY,CAAZ,EAAec,IAAI,CAAC1lB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDylB,QAAAA,OAAO,CAAC1lB,CAAD,CAAP,GAAa2lB,IAAb;AACD;AACF;AAED;;;AACA,QAAID,OAAO,CAACzlB,MAAR,KAAmB,CAAvB,EAA0B;AACxBylB,MAAAA,OAAO,CAAClkB,IAAR,CAAaikB,MAAb;AACD;;AAED9C,IAAAA,IAAI,CAACnhB,IAAL,CAAU,YAAY;AACpB,UAAMiD,IAAI,GAAGgB,QAAQ,CAACogB,aAAT,iBAA+BJ,MAA/B,SAAb;;AACA,UAAIhhB,IAAI,KAAK,IAAb,EAAmB;AACjBA,QAAAA,IAAI,CAACqhB,gBAAL,CACE,OADF,EAEE,YAAY;AACV7e,UAAAA,4DAAA,CAAAA,8CAAK,GAASqe,YAAT,4BAA0BI,OAA1B,GAAL;AACD,SAJH,EAKE,KALF;AAOD;AACF,KAXD;AAYD;AACF,CA7CD;;AA+CO,IAAMM,aAAa,GAAG,SAAhBA,aAAgB,CAAUvK,OAAV,EAAmB;AAC9CkH,EAAAA,IAAI,CAAC1hB,OAAL,CAAa,UAAUglB,GAAV,EAAe;AAC1BA,IAAAA,GAAG,CAACxK,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAMA,IAAMyK,QAAQ,GAAG;AACtBC,EAAAA,IAAI,EAAE,CADgB;AAEtBC,EAAAA,WAAW,EAAE;AAFS,CAAjB;AAKA,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,WAAW,EAAE,CADa;AAE1BC,EAAAA,SAAS,EAAE,CAFe;AAG1BC,EAAAA,WAAW,EAAE,CAHa;AAI1BC,EAAAA,UAAU,EAAE;AAJc,CAArB;;AAOP,IAAMlD,aAAa,GAAG,SAAhBA,aAAgB,CAAU9H,OAAV,EAAmB;AACvC,MAAIiL,WAAW,GAAG9kB,0CAAM,CAAC,iBAAD,CAAxB;;AACA,MAAI,CAAC8kB,WAAW,CAACC,OAAZ,IAAuBD,WAAxB,EAAqC,CAArC,EAAwC,CAAxC,MAA+C,IAAnD,EAAyD;AACvDA,IAAAA,WAAW,GAAG9kB,0CAAM,CAAC,MAAD,CAAN,CAAewC,MAAf,CAAsB,KAAtB,EAA6BtF,IAA7B,CAAkC,OAAlC,EAA2C,gBAA3C,EAA6D0E,KAA7D,CAAmE,SAAnE,EAA8E,CAA9E,CAAd;AACD;;AAED,MAAMjF,GAAG,GAAGqD,0CAAM,CAAC6Z,OAAD,CAAN,CAAgB7Z,MAAhB,CAAuB,KAAvB,CAAZ;AAEA,MAAM2M,KAAK,GAAGhQ,GAAG,CAACqoB,SAAJ,CAAc,QAAd,CAAd;AACArY,EAAAA,KAAK,CACFsY,EADH,CACM,WADN,EACmB,YAAY;AAC3B,QAAM7hB,EAAE,GAAGpD,0CAAM,CAAC,IAAD,CAAjB;AACA,QAAMwW,KAAK,GAAGpT,EAAE,CAAClG,IAAH,CAAQ,OAAR,CAAd,CAF2B,CAG3B;;AACA,QAAIsZ,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AACD,QAAMtW,IAAI,GAAG,KAAKkB,qBAAL,EAAb;AAEA0jB,IAAAA,WAAW,CAACI,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuCvjB,KAAvC,CAA6C,SAA7C,EAAwD,IAAxD;AACAkjB,IAAAA,WAAW,CACR7gB,IADH,CACQb,EAAE,CAAClG,IAAH,CAAQ,OAAR,CADR,EAEG0E,KAFH,CAES,MAFT,EAEiBmJ,MAAM,CAACqa,OAAP,GAAiBllB,IAAI,CAACsQ,IAAtB,GAA6B,CAACtQ,IAAI,CAACmlB,KAAL,GAAanlB,IAAI,CAACsQ,IAAnB,IAA2B,CAAxD,GAA4D,IAF7E,EAGG5O,KAHH,CAGS,KAHT,EAGgBmJ,MAAM,CAACua,OAAP,GAAiBplB,IAAI,CAACuQ,GAAtB,GAA4B,EAA5B,GAAiC5M,QAAQ,CAAC0hB,IAAT,CAAcC,SAA/C,GAA2D,IAH3E;AAIApiB,IAAAA,EAAE,CAACqiB,OAAH,CAAW,OAAX,EAAoB,IAApB;AACD,GAhBH,EAiBGR,EAjBH,CAiBM,UAjBN,EAiBkB,YAAY;AAC1BH,IAAAA,WAAW,CAACI,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuCvjB,KAAvC,CAA6C,SAA7C,EAAwD,CAAxD;AACA,QAAMwB,EAAE,GAAGpD,0CAAM,CAAC,IAAD,CAAjB;AACAoD,IAAAA,EAAE,CAACqiB,OAAH,CAAW,OAAX,EAAoB,KAApB;AACD,GArBH;AAsBD,CA/BD;;AAgCA1E,IAAI,CAACnhB,IAAL,CAAU+hB,aAAV;AAEA,IAAI+D,SAAS,GAAG,IAAhB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,SAAMD,SAAN;AAAA,CAArB;;AACA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACnZ,GAAD,EAAS;AAC5BiZ,EAAAA,SAAS,GAAGjZ,GAAZ;AACD,CAFD;;AAIA,IAAI+J,KAAK,GAAG,EAAZ;AAEO,IAAMqP,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AACrC,MAAIuiB,aAAa,GAAGziB,YAAY,CAACE,GAAD,EAAMkd,8CAAA,EAAN,CAAhC;AACAjK,EAAAA,KAAK,GAAGsP,aAAR;AACD,CAHM;AAKA,IAAM/oB,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOyZ,KAAP;AACD,CAFM;AAIP,IAAIuP,cAAc,GAAG,EAArB;AAEO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AAC9C,MAAIuiB,aAAa,GAAGziB,YAAY,CAACE,GAAD,EAAMkd,8CAAA,EAAN,CAAhC;AACAsF,EAAAA,cAAc,GAAGD,aAAjB;AACD,CAHM;AAKA,IAAM7oB,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AAC3C,SAAO8oB,cAAP;AACD,CAFM;AAIP,iEAAe;AACb/E,EAAAA,cAAc,EAAdA,cADa;AAEb6E,EAAAA,QAAQ,EAARA,QAFa;AAGb9oB,EAAAA,QAAQ,EAARA,QAHa;AAIbE,EAAAA,iBAAiB,EAAjBA,iBAJa;AAKb+oB,EAAAA,iBAAiB,EAAjBA,iBALa;AAMb/mB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsBlgB,KAA5B;AAAA,GANE;AAOb+gB,EAAAA,QAAQ,EAARA,QAPa;AAQb8C,EAAAA,aAAa,EAAbA,aARa;AASbnhB,EAAAA,KAAK,EAALA,KATa;AAUb2e,EAAAA,QAAQ,EAARA,QAVa;AAWbC,EAAAA,UAAU,EAAVA,UAXa;AAYbQ,EAAAA,aAAa,EAAbA,aAZa;AAabP,EAAAA,YAAY,EAAZA,YAba;AAcbC,EAAAA,WAAW,EAAXA,WAda;AAeb4D,EAAAA,YAAY,EAAZA,YAfa;AAgBbC,EAAAA,YAAY,EAAZA,YAhBa;AAiBbpD,EAAAA,SAAS,EAATA,SAjBa;AAkBbO,EAAAA,UAAU,EAAVA,UAlBa;AAmBbC,EAAAA,YAAY,EAAZA,YAnBa;AAoBbsB,EAAAA,QAAQ,EAARA,QApBa;AAqBbG,EAAAA,YAAY,EAAZA,YArBa;AAsBbhB,EAAAA,aAAa,EAAbA,aAtBa;AAuBbP,EAAAA,WAAW,EAAXA,WAvBa;AAwBbI,EAAAA,OAAO,EAAPA,OAxBa;AAyBbD,EAAAA,UAAU,EAAVA,UAzBa;AA0Bb5B,EAAAA,WAAW,EAAXA;AA1Ba,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA;AACA;AACA;AACA;AAEAyE,2DAAA,GAAYD,gDAAZ;AAEA,IAAIQ,OAAO,GAAG,EAAd;AACA,IAAMllB,OAAO,GAAG,EAAhB;;AAEA,IAAM8B,YAAY,GAAG,SAAfA,YAAe,CAACE,GAAD;AAAA,SAASmd,mEAAA,CAAoBnd,GAApB,EAAyBtE,kDAAS,EAAlC,CAAT;AAAA,CAArB;;AAEA,IAAML,IAAI,GAAG;AACXsf,EAAAA,aAAa,EAAE,EADJ;AAEX3c,EAAAA,OAAO,EAAE,CAFE;AAGX6c,EAAAA,UAAU,EAAE;AAHD,CAAb;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMsI,UAAU,GAAG,SAAbA,UAAa,CAAUpkB,OAAV,EAAmBqkB,CAAnB,EAAsB;AAC9C;AACA,MAAMxnB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYmD,OAAZ,CAAb;AACAjF,EAAAA,6CAAA,CAAS,OAAT,EAAkB8B,IAAlB;AACA9B,EAAAA,6CAAA,CAASiF,OAAT,EAJ8C,CAM9C;;AACAnD,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUzC,EAAV,EAAc;AACzB,QAAMgqB,MAAM,GAAGtkB,OAAO,CAAC1F,EAAD,CAAtB;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAIiqB,WAAW,GAAG,EAAlB;;AACA,QAAID,MAAM,CAACpF,UAAP,CAAkBnjB,MAAlB,GAA2B,CAA/B,EAAkC;AAChCwoB,MAAAA,WAAW,GAAGA,WAAW,GAAG,GAAd,GAAoBD,MAAM,CAACpF,UAAP,CAAkB7M,IAAlB,CAAuB,GAAvB,CAAlC;AACD,KAXwB,CAYzB;AACA;AACA;;;AAEA,QAAMmS,MAAM,GAAG;AAAEnmB,MAAAA,UAAU,EAAE;AAAd,KAAf,CAhByB,CAgBU;AAEnC;;AACA,QAAIyD,UAAU,GAAGwiB,MAAM,CAACzpB,IAAP,KAAgByD,SAAhB,GAA4BgmB,MAAM,CAACzpB,IAAnC,GAA0CypB,MAAM,CAAChqB,EAAlE,CAnByB,CAqBzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAImqB,OAAO,GAAG,CAAd;AACA,QAAIC,MAAM,GAAG,EAAb,CAlDyB,CAmDzB;;AACA,YAAQJ,MAAM,CAAClZ,IAAf;AACE,WAAK,OAAL;AACEsZ,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF;AACEA,QAAAA,MAAM,GAAG,WAAT;AALJ,KApDyB,CA2DzB;;;AACAL,IAAAA,CAAC,CAACzZ,OAAF,CAAU0Z,MAAM,CAAChqB,EAAjB,EAAqB;AACnB+D,MAAAA,UAAU,EAAEmmB,MAAM,CAACnmB,UADA;AAEnBmC,MAAAA,KAAK,EAAEkkB,MAFY;AAGnBtmB,MAAAA,SAAS,EAAE2C,YAAY,CAACe,UAAD,CAHJ;AAInB4T,MAAAA,SAAS,EAAE4O,MAJQ;AAKnB/kB,MAAAA,EAAE,EAAEklB,OALe;AAMnBjlB,MAAAA,EAAE,EAAEilB,OANe;AAOnBxmB,MAAAA,KAAK,EAAEsmB,WAPY;AAQnBjlB,MAAAA,KAAK,EAAEklB,MAAM,CAACllB,KARK;AASnBhF,MAAAA,EAAE,EAAEgqB,MAAM,CAAChqB,EATQ;AAUnB6X,MAAAA,KAAK,EAAEmS,MAAM,CAACnS,KAVK;AAWnBiF,MAAAA,YAAY,EAAEkN,MAAM,CAAClN,YAXF;AAYnBL,MAAAA,IAAI,EAAEuN,MAAM,CAACvN,IAZM;AAanBhY,MAAAA,KAAK,EAAEulB,MAAM,CAAClZ,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC9M,SAbpB;AAcnB8M,MAAAA,IAAI,EAAEkZ,MAAM,CAAClZ,IAdM;AAenBnM,MAAAA,OAAO,EAAEtC,kDAAS,GAAG8B,SAAZ,CAAsBQ;AAfZ,KAArB;AAkBAlE,IAAAA,6CAAA,CAAS,SAAT,EAAoB;AAClBsD,MAAAA,UAAU,EAAEmmB,MAAM,CAACnmB,UADD;AAElBmC,MAAAA,KAAK,EAAEkkB,MAFW;AAGlBtmB,MAAAA,SAAS,EAAE0D,UAHO;AAIlBvC,MAAAA,EAAE,EAAEklB,OAJc;AAKlBjlB,MAAAA,EAAE,EAAEilB,OALc;AAMlBxmB,MAAAA,KAAK,EAAEsmB,WANW;AAOlBjlB,MAAAA,KAAK,EAAEklB,MAAM,CAACllB,KAPI;AAQlBhF,MAAAA,EAAE,EAAEgqB,MAAM,CAAChqB,EARO;AASlByE,MAAAA,KAAK,EAAEulB,MAAM,CAAClZ,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC9M,SATrB;AAUlB8M,MAAAA,IAAI,EAAEkZ,MAAM,CAAClZ,IAVK;AAWlBnM,MAAAA,OAAO,EAAEtC,kDAAS,GAAG8B,SAAZ,CAAsBQ;AAXb,KAApB;AAaD,GA3FD;AA4FD,CAnGM;AAqGP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM0lB,YAAY,GAAG,SAAfA,YAAe,CAAUpG,SAAV,EAAqB8F,CAArB,EAAwB;AAClD,MAAIO,GAAG,GAAG,CAAV;AAEA,MAAIC,YAAJ;AACA,MAAIC,iBAAJ,CAJkD,CAMlD;AACA;AACA;AACA;AACA;;AAEAvG,EAAAA,SAAS,CAACxhB,OAAV,CAAkB,UAAUoG,IAAV,EAAgB;AAChCyhB,IAAAA,GAAG;AACH,QAAMG,QAAQ,GAAG,EAAjB,CAFgC,CAGhC;;AACAA,IAAAA,QAAQ,CAAC/kB,OAAT,GAAmB,UAAnB;AACA+kB,IAAAA,QAAQ,CAAC3c,OAAT,GAAmBjF,IAAI,CAACuc,QAAL,CAAcsC,QAAd,IAA0B,CAA1B,GAA8B,QAA9B,GAAyC,OAA5D;AAEA+C,IAAAA,QAAQ,CAACzqB,EAAT,GAAc,OAAOsqB,GAArB,CAPgC,CAQhC;;AACA,QAAIzhB,IAAI,CAACiI,IAAL,KAAc,YAAlB,EAAgC;AAC9B2Z,MAAAA,QAAQ,CAACC,SAAT,GAAqB,MAArB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,SAAT,GAAqB,QAArB;AACD;;AAEDjqB,IAAAA,6CAAA,CAASgqB,QAAT,EAAmB5hB,IAAnB,EAfgC,CAgBhC;AACA;;AACA4hB,IAAAA,QAAQ,CAAClhB,eAAT,GAA2BV,IAAI,CAAC0c,cAAL,KAAwB,MAAxB,GAAiC,EAAjC,GAAsC1c,IAAI,CAAC0c,cAAtE;AACAkF,IAAAA,QAAQ,CAAC/gB,YAAT,GAAwBb,IAAI,CAAC2c,cAAL,KAAwB,MAAxB,GAAiC,EAAjC,GAAsC3c,IAAI,CAAC2c,cAAnE,CAnBgC,CAoBhC;AAEA;;AACAiF,IAAAA,QAAQ,CAAC/f,cAAT,GAA0BigB,cAAc,CAAC9hB,IAAI,CAACuc,QAAL,CAAcwF,KAAf,CAAxC;AACAH,IAAAA,QAAQ,CAAC9f,YAAT,GAAwBggB,cAAc,CAAC9hB,IAAI,CAACuc,QAAL,CAAcyF,KAAf,CAAtC;AACA,QAAI7lB,KAAK,GAAG,EAAZ;AACA,QAAIjB,UAAU,GAAG,EAAjB;;AAEA,QAAI,OAAO8E,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,UAAMklB,MAAM,GAAGR,0DAAkB,CAAC7gB,IAAI,CAAC7D,KAAN,CAAjC;AACAA,MAAAA,KAAK,GAAGklB,MAAM,CAACllB,KAAf;AACAjB,MAAAA,UAAU,GAAGmmB,MAAM,CAACnmB,UAApB;AACD,KAJD,MAIO;AACLiB,MAAAA,KAAK,GAAG,WAAR;;AACA,UAAI,OAAOulB,YAAP,KAAwB,WAA5B,EAAyC;AACvCvlB,QAAAA,KAAK,GAAGulB,YAAR;AACD;;AACD,UAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC5CzmB,QAAAA,UAAU,GAAGymB,iBAAb;AACD;AACF;;AAEDC,IAAAA,QAAQ,CAACzlB,KAAT,GAAiBA,KAAjB;AACAylB,IAAAA,QAAQ,CAAC1mB,UAAT,GAAsBA,UAAtB;;AAEA,QAAI,OAAO8E,IAAI,CAACiiB,WAAZ,KAA4B,WAAhC,EAA6C;AAC3CL,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAAC5gB,IAAI,CAACiiB,WAAN,EAAmBtB,2CAAnB,CAAnC;AACD,KAFD,MAEO,IAAI,OAAOvF,SAAS,CAAC8G,kBAAjB,KAAwC,WAA5C,EAAyD;AAC9DN,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAACxF,SAAS,CAAC8G,kBAAX,EAA+BvB,2CAA/B,CAAnC;AACD,KAFM,MAEA;AACLiB,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAACznB,IAAI,CAAC0L,KAAN,EAAa8b,2CAAb,CAAnC;AACD;;AAED3gB,IAAAA,IAAI,CAACtI,IAAL,GAAYsI,IAAI,CAAC+Q,KAAjB;;AACA,QAAI,OAAO/Q,IAAI,CAACtI,IAAZ,KAAqB,WAAzB,EAAsC;AACpC,UAAI,OAAOsI,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrCylB,QAAAA,QAAQ,CAACO,cAAT,GAA0B,YAA1B;AACD;AACF,KAJD,MAIO;AACLP,MAAAA,QAAQ,CAACO,cAAT,GAA0B,YAA1B;AACAP,MAAAA,QAAQ,CAACQ,QAAT,GAAoB,GAApB;;AAEA,UAAI5oB,kDAAS,GAAG8B,SAAZ,CAAsBC,UAA1B,EAAsC;AACpC;AACAqmB,QAAAA,QAAQ,CAACS,SAAT,GAAqB,MAArB;AACAT,QAAAA,QAAQ,CAAC7mB,KAAT,GAAiB,6BAA6BiF,IAAI,CAACtI,IAAlC,GAAyC,SAA1D;AACD,OAJD,MAIO;AACLkqB,QAAAA,QAAQ,CAACS,SAAT,GAAqB,MAArB;AACAT,QAAAA,QAAQ,CAAC7mB,KAAT,GAAiBiF,IAAI,CAACtI,IAAL,CAAUkH,OAAV,CAAkBqc,qEAAlB,EAAyC,IAAzC,CAAjB;;AAEA,YAAI,OAAOjb,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrCylB,UAAAA,QAAQ,CAACzlB,KAAT,GAAiBylB,QAAQ,CAACzlB,KAAT,IAAkB,6CAAnC;AACD;;AAEDylB,QAAAA,QAAQ,CAAC1mB,UAAT,GAAsB0mB,QAAQ,CAAC1mB,UAAT,CAAoB0D,OAApB,CAA4B,QAA5B,EAAsC,OAAtC,CAAtB;AACD;AACF,KA5E+B,CA6EhC;;;AACAsiB,IAAAA,CAAC,CAACvU,OAAF,CAAU3M,IAAI,CAACwc,GAAf,EAAoBxc,IAAI,CAACyc,GAAzB,EAA8BmF,QAA9B,EAAwCH,GAAxC;AACD,GA/ED;AAgFD,CA5FM;AA8FP;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMc,UAAU,GAAG,SAAbA,UAAa,CAAUxnB,KAAV,EAAiB;AAClC,MAAMynB,UAAU,GAAGxqB,MAAM,CAACyqB,OAAP,CAAezB,OAAf,EAAwBtd,IAAxB,CAA6B,UAACmH,KAAD;AAAA,WAAWA,KAAK,CAAC,CAAD,CAAL,CAAS9P,KAAT,KAAmBA,KAA9B;AAAA,GAA7B,CAAnB;;AAEA,MAAIynB,UAAJ,EAAgB;AACd,WAAOA,UAAU,CAAC,CAAD,CAAjB;AACD;AACF,CAND;AAQA;AACA;AACA;AACA;AACA;;;AACO,IAAME,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;AAEAjpB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAY8oB,GAAG,CAAC9oB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+oB,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCS,EAAAA,6CAAA,CAAS,kBAAT,EAA6BT,EAA7B;AACAqpB,EAAAA,sDAAA,GAFsC,CAGtC;AACA;AAEA;AACA;;AACAC,EAAAA,8DAAA,CAAa/oB,IAAb,EARsC,CAStC;AACA;AACA;AAEA;AACA;;AAEA,MAAMyB,IAAI,GAAGK,kDAAS,GAAG8B,SAAzB;AACA,MAAMwY,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC;AACAlc,EAAAA,6CAAA,CAAS,SAAT,EAAoBuB,IAApB;AACA,MAAM0b,WAAW,GAAG1b,IAAI,CAAC0b,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG3b,IAAI,CAAC2b,WAAL,IAAoB,EAAxC,CApBsC,CAsBtC;;AACA,MAAMoM,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAEuZ,6DAAA,EADD;AAERxS,IAAAA,OAAO,EAAE6G,WAFD;AAGR5G,IAAAA,OAAO,EAAE6G,WAHD;AAIR5G,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV,CAvBsC,CAsCtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,MAAMvR,OAAO,GAAG2jB,2DAAA,EAAhB;AACA,MAAMpF,SAAS,GAAGoF,6DAAA,EAAlB;AAEA5oB,EAAAA,6CAAA,CAASwjB,SAAT,EAnDsC,CAoDtC;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;;AACA6F,EAAAA,UAAU,CAACpkB,OAAD,EAAUqkB,CAAV,EAAa/pB,EAAb,CAAV;AACAqqB,EAAAA,YAAY,CAACpG,SAAD,EAAY8F,CAAZ,CAAZ,CA/DsC,CAiEtC;AACA;AAEA;;AACA,MAAI2B,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAMrD,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,iBAAoBpD,EAApB,SAAZ;AACAD,EAAAA,GAAG,CAACO,IAAJ,CAAS,aAAT,EAAwB,8BAAxB,EA9EsC,CAgFtC;;AACA,MAAM2c,OAAO,GAAG0O,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAN,GAAW,IAAvB,CAAhB;AACA+Q,EAAAA,+DAAM,CAACkM,OAAD,EAAU8M,CAAV,EAAa,CAAC,aAAD,EAAgB,WAAhB,EAA6B,aAA7B,EAA4C,YAA5C,CAAb,EAAwE,cAAxE,EAAwF/pB,EAAxF,CAAN,CAlFsC,CAoFtC;AACA;AACA;;AAEA,MAAM2E,OAAO,GAAG,CAAhB;AACA,MAAMknB,SAAS,GAAG9rB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AACAlE,EAAAA,8CAAA,2BACqBgE,KADrB,cAC8BC,MAD9B,uBAEeC,OAAO,GAAGolB,CAAC,CAAC+B,MAAF,CAAS/U,OAFlC,eAE8CpS,OAAO,GAAGolB,CAAC,CAAC+B,MAAF,CAAS9U,OAFjE;AAKA2S,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAM2E,MAAN,EAAcD,KAAd,EAAqBzC,IAAI,CAAC4b,WAA1B,CAAhB;AAEA7d,EAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,gBAA2BmE,KAA3B,cAAoCC,MAApC;AACA3E,EAAAA,GAAG,CACAqD,MADH,CACU,GADV,EAEG9C,IAFH,CAEQ,WAFR,sBAEkCqE,OAAO,GAAGolB,CAAC,CAAC+B,MAAF,CAAS/U,OAFrD,eAEiEpS,OAAO,GAAGknB,SAAS,CAACzmB,CAFrF,QApGsC,CAwGtC;AACA;AAEA;;AACA,MAAI,CAACpD,IAAI,CAACoC,UAAV,EAAsB;AACpB,QAAM2nB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AACA,QAAM+kB,MAAM,GAAGD,GAAG,CAACE,gBAAJ,CAAqB,UAAUjsB,EAAV,GAAe,sBAApC,CAAf;;AACA,SAAK,IAAIksB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACvqB,MAA3B,EAAmCyqB,CAAC,EAApC,EAAwC;AACtC,UAAMtoB,KAAK,GAAGooB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,UAAMC,GAAG,GAAGvoB,KAAK,CAACM,OAAN,EAAZ;AAEA,UAAMZ,IAAI,GAAGyoB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,MAAlD,CAAb;AACA5D,MAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,MAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,MAAAA,IAAI,CAACuE,YAAL,CAAkB,OAAlB,EAA2BskB,GAAG,CAAC1nB,KAA/B;AACAnB,MAAAA,IAAI,CAACuE,YAAL,CAAkB,QAAlB,EAA4BskB,GAAG,CAACznB,MAAhC,EAVsC,CAWtC;;AAEAd,MAAAA,KAAK,CAACwoB,YAAN,CAAmB9oB,IAAnB,EAAyBM,KAAK,CAACyoB,UAA/B;AACD;AACF;;AAEDxsB,EAAAA,2DAAyB,CAACypB,2DAAD,EAAYvpB,GAAZ,EAAiBC,EAAjB,CAAzB,CAhIsC,CAiItC;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD,CAlKM;AAoKP;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS2qB,cAAT,CAAwB7Z,IAAxB,EAA8B;AAC5B,MAAIwb,MAAJ;;AACA,UAAQxb,IAAR;AACE,SAAK,CAAL;AACEwb,MAAAA,MAAM,GAAG,aAAT;AACA;;AACF,SAAK,CAAL;AACEA,MAAAA,MAAM,GAAG,WAAT;AACA;;AACF,SAAK,CAAL;AACEA,MAAAA,MAAM,GAAG,aAAT;AACA;;AACF,SAAK,CAAL;AACEA,MAAAA,MAAM,GAAG,YAAT;AACA;;AACF;AACEA,MAAAA,MAAM,GAAG,MAAT;AAdJ;;AAgBA,SAAOA,MAAP;AACD;;AAED,iEAAe;AACbf,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/cA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAnC,2DAAA,GAAYD,gDAAZ;AAEA,IAAIQ,OAAO,GAAG,EAAd;AACA,IAAMllB,OAAO,GAAG,EAAhB;AAEA,IAAM3C,IAAI,GAAG;AACXsf,EAAAA,aAAa,EAAE,EADJ;AAEX3c,EAAAA,OAAO,EAAE,CAFE;AAGX6c,EAAAA,UAAU,EAAE;AAHD,CAAb;AAMA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM4J,UAAU,GAAG,SAAbA,UAAa,CAAUxnB,KAAV,EAAiB;AAClC,MAAMynB,UAAU,GAAGxqB,MAAM,CAACyqB,OAAP,CAAezB,OAAf,EAAwBtd,IAAxB,CAA6B,UAACmH,KAAD;AAAA,WAAWA,KAAK,CAAC,CAAD,CAAL,CAAS9P,KAAT,KAAmBA,KAA9B;AAAA,GAA7B,CAAnB;;AAEA,MAAIynB,UAAJ,EAAgB;AACd,WAAOA,UAAU,CAAC,CAAD,CAAjB;AACD;AACF,CAND;AAQA;AACA;AACA;AACA;AACA;;;AACA,IAAM1c,aAAa,GAAG,SAAhBA,aAAgB,CAAU1I,IAAV,EAAgB;AACpCA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGsF,MAVH,CAUU,MAVV,EAWGtF,IAXH,CAWQ,GAXR,EAWa,oBAXb;AAaA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,cAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,oBAVb,EAdoC,CAwBA;;AAEpC2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,kBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGsF,MAVH,CAUU,MAVV,EAWGtF,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAaA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,0BAVb;AAYA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,kBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGsF,MAVH,CAUU,MAVV,EAWGtF,IAXH,CAWQ,GAXR,EAWa,0BAXb;AAaA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,0BAVb;AAYA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,iBAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,WAJjB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,MANR,EAMgB,CANhB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,GAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,GARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGsF,MAVH,CAUU,MAVV,EAWGtF,IAXH,CAWQ,GAXR,EAWa,yBAXb;AAaA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,eAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,2BAVb;AAWD,CApGD;AAsGA;AACA;AACA;AACA;AACA;;;AACO,IAAMirB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;AAEAjpB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAY8oB,GAAG,CAAC9oB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+oB,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtC6pB,EAAAA,OAAO,GAAG,EAAV;AACAP,EAAAA,iEAAA;AACAA,EAAAA,8DAAA,CAAa/oB,IAAb;AAEAE,EAAAA,6CAAA,CAAS,uBAAuBF,IAAhC;AAEA,MAAMoc,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CAPsC,CAQtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF,CAjBsC,CAmBtC;;AACA,MAAMslB,OAAO,GAAGZ,IAAI,CAACvoB,MAAL,gBAAoBpD,EAApB,QAAhB;AACAusB,EAAAA,OAAO,CAACjsB,IAAR,CAAa,aAAb,EAA4B,8BAA5B;AACAqO,EAAAA,aAAa,CAAC4d,OAAD,CAAb,CAtBsC,CAwBtC;;AACA,MAAMxC,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE;AADe,GAAnB,CAAV,CAzBsC,CA6BtC;;AACAqT,EAAAA,CAAC,CAACnT,QAAF,CAAW;AACT4V,IAAAA,YAAY,EAAE;AADL,GAAX,EA9BsC,CAkCtC;;AACAzC,EAAAA,CAAC,CAAC9S,mBAAF,CAAsB,YAAY;AAChC,WAAO,EAAP;AACD,GAFD;AAIA,MAAMvR,OAAO,GAAG2jB,2DAAA,EAAhB;AACA,MAAM9mB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYmD,OAAZ,CAAb;;AAEA,OAAK,IAAIlE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAMirB,QAAQ,GAAG/mB,OAAO,CAACnD,IAAI,CAACf,CAAD,CAAL,CAAxB;AACA,QAAMgC,IAAI,GAAG+lB,0DAAA,CAAkBgD,OAAlB,EAA2BE,QAA3B,EAAqCzqB,IAArC,CAAb;AACA6nB,IAAAA,OAAO,CAACrmB,IAAI,CAACxD,EAAN,CAAP,GAAmBwD,IAAnB,CAHoC,CAKpC;AACA;AACA;;AACAumB,IAAAA,CAAC,CAACzZ,OAAF,CAAU9M,IAAI,CAACxD,EAAf,EAAmBwD,IAAnB;AAEA/C,IAAAA,6CAAA,CAAS,iBAAiB+C,IAAI,CAACkB,MAA/B;AACD;;AAED,MAAMuf,SAAS,GAAGoF,6DAAA,EAAlB;AACApF,EAAAA,SAAS,CAACxhB,OAAV,CAAkB,UAAU2iB,QAAV,EAAoB;AACpC3kB,IAAAA,6CAAA,CACE,UAAU2qB,UAAU,CAAChG,QAAQ,CAACC,GAAV,CAApB,GAAqC+F,UAAU,CAAChG,QAAQ,CAACE,GAAV,CAA/C,GAAgExgB,IAAI,CAACC,SAAL,CAAeqgB,QAAf,CADlE;AAGA2E,IAAAA,CAAC,CAACvU,OAAF,CACE4V,UAAU,CAAChG,QAAQ,CAACC,GAAV,CADZ,EAEE+F,UAAU,CAAChG,QAAQ,CAACE,GAAV,CAFZ,EAGE;AACEF,MAAAA,QAAQ,EAAEA;AADZ,KAHF,EAMEA,QAAQ,CAACxL,KAAT,IAAkB,SANpB;AAQD,GAZD;AAcAnL,EAAAA,mDAAA,CAAasb,CAAb;AACAA,EAAAA,CAAC,CAACha,KAAF,GAAUtN,OAAV,CAAkB,UAAUsK,CAAV,EAAa;AAC7B,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOgd,CAAC,CAACvmB,IAAF,CAAOuJ,CAAP,CAAP,KAAqB,WAArD,EAAkE;AAChEtM,MAAAA,8CAAA,CAAU,UAAUsM,CAAV,GAAc,IAAd,GAAqBjI,IAAI,CAACC,SAAL,CAAeglB,CAAC,CAACvmB,IAAF,CAAOuJ,CAAP,CAAf,CAA/B;AACA4e,MAAAA,IAAI,CACDvoB,MADH,CACU,MAAMyhB,qDAAW,CAAC9X,CAAD,CAD3B,EAEGzM,IAFH,CAGI,WAHJ,EAII,gBACGypB,CAAC,CAACvmB,IAAF,CAAOuJ,CAAP,EAAU5H,CAAV,GAAc4kB,CAAC,CAACvmB,IAAF,CAAOuJ,CAAP,EAAUtI,KAAV,GAAkB,CADnC,IAEE,GAFF,IAGGslB,CAAC,CAACvmB,IAAF,CAAOuJ,CAAP,EAAU3H,CAAV,GAAc2kB,CAAC,CAACvmB,IAAF,CAAOuJ,CAAP,EAAUrI,MAAV,GAAmB,CAHpC,IAIE,IARN;AAUD;AACF,GAdD;AAgBAqlB,EAAAA,CAAC,CAAC/Z,KAAF,GAAUvN,OAAV,CAAkB,UAAU+J,CAAV,EAAa;AAC7B,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOud,CAAC,CAAClhB,IAAF,CAAO2D,CAAP,CAAP,KAAqB,WAArD,EAAkE;AAChE/L,MAAAA,8CAAA,CAAU,UAAU+L,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsCnG,IAAI,CAACC,SAAL,CAAeglB,CAAC,CAAClhB,IAAF,CAAO2D,CAAP,CAAf,CAAhD;AACA+c,MAAAA,yDAAA,CAAiBgD,OAAjB,EAA0BxC,CAAC,CAAClhB,IAAF,CAAO2D,CAAP,CAA1B,EAAqCud,CAAC,CAAClhB,IAAF,CAAO2D,CAAP,EAAU4Y,QAA/C,EAAyDpjB,IAAzD;AACD;AACF,GALD;AAOA,MAAM6pB,SAAS,GAAGU,OAAO,CAAC/oB,IAAR,GAAeU,OAAf,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAglB,EAAAA,wDAAgB,CAAC4C,OAAD,EAAU7nB,MAAV,EAAkBD,KAAlB,EAAyBzC,IAAI,CAAC4b,WAA9B,CAAhB,CAlGsC,CAoGtC;;AACA,MAAMgP,IAAI,aAAMf,SAAS,CAAC1mB,CAAV,GAAcR,OAApB,cAA+BknB,SAAS,CAACzmB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACAjE,EAAAA,8CAAA,mBAAqBmsB,IAArB;AACAL,EAAAA,OAAO,CAACjsB,IAAR,CAAa,SAAb,EAAwBssB,IAAxB;AACA/sB,EAAAA,0DAAyB,CAACypB,2DAAD,EAAYiD,OAAZ,EAAqBvsB,EAArB,CAAzB;AACD,CAzGM;AA2GP,iEAAe;AACburB,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AC7QA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,gDAERA,OAAO,CAACwqB,UAFA,wBAGRxqB,OAAO,CAACyqB,SAHA,gDAKDzqB,OAAO,CAACS,UALP,2HAePT,OAAO,CAACyqB,SAfD,qDAkBRzqB,OAAO,CAAC0qB,OAlBA,0CAqBR1qB,OAAO,CAACyqB,SArBA,2DAwBFzqB,OAAO,CAAC0qB,OAxBN,2JAmCN1qB,OAAO,CAAC0qB,OAnCF,4BAoCJ1qB,OAAO,CAACwqB,UApCJ,uEA0CNxqB,OAAO,CAACwqB,UA1CF,wGAmDRxqB,OAAO,CAAC0qB,OAnDA,0BAoDN1qB,OAAO,CAACwqB,UApDF,oDAwDNxqB,OAAO,CAACwqB,UAxDF,0GA+DRxqB,OAAO,CAAC0qB,OA/DA,oEAoER1qB,OAAO,CAACwqB,UApEA,gEAyENxqB,OAAO,CAAC2qB,SAzEF,+IAmFR3qB,OAAO,CAAC2qB,SAnFA,qCAoFN3qB,OAAO,CAAC2qB,SApFF,6FAyFR3qB,OAAO,CAAC2qB,SAzFA,qCA0FN3qB,OAAO,CAAC2qB,SA1FF,6FA+FR3qB,OAAO,CAAC2qB,SA/FA,qCAgGN3qB,OAAO,CAAC2qB,SAhGF,6FAqGR3qB,OAAO,CAAC2qB,SArGA,qCAsGN3qB,OAAO,CAAC2qB,SAtGF,2FA2GR3qB,OAAO,CAAC2qB,SA3GA,qCA4GN3qB,OAAO,CAAC2qB,SA5GF,yFAiHR3qB,OAAO,CAAC2qB,SAjHA,qCAkHN3qB,OAAO,CAAC2qB,SAlHF,+FAuHR3qB,OAAO,CAAC0qB,OAvHA,qCAwHN1qB,OAAO,CAAC2qB,SAxHF,6FA6HR3qB,OAAO,CAAC0qB,OA7HA,qCA8HN1qB,OAAO,CAAC2qB,SA9HF;AAAA,CAAlB;;AAwIA,iEAAeJ,SAAf;;;;;;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AAEA,IAAIK,SAAS,GAAG,CAAhB;AACO,IAAMP,QAAQ,GAAG,SAAXA,QAAW,CAAU1mB,IAAV,EAAgBmE,IAAhB,EAAsBgb,QAAtB,EAAgCpjB,IAAhC,EAAsC;AAC5D,MAAMmrB,eAAe,GAAG,SAAlBA,eAAkB,CAAUrc,IAAV,EAAgB;AACtC,YAAQA,IAAR;AACE,WAAK+W,8DAAL;AACE,eAAO,aAAP;;AACF,WAAKA,4DAAL;AACE,eAAO,WAAP;;AACF,WAAKA,8DAAL;AACE,eAAO,aAAP;;AACF,WAAKA,6DAAL;AACE,eAAO,YAAP;AARJ;AAUD,GAXD;;AAaAzd,EAAAA,IAAI,CAAC6B,MAAL,GAAc7B,IAAI,CAAC6B,MAAL,CAAYsB,MAAZ,CAAmB,UAACjB,CAAD;AAAA,WAAO,CAACkB,MAAM,CAACC,KAAP,CAAanB,CAAC,CAAClH,CAAf,CAAR;AAAA,GAAnB,CAAd,CAd4D,CAgB5D;;AACA,MAAMkI,QAAQ,GAAGlD,IAAI,CAAC6B,MAAtB,CAjB4D,CAmB5D;;AACA,MAAM0B,YAAY,GAAGpF,wCAAI,GACtBpD,CADkB,CAChB,UAAUzD,CAAV,EAAa;AACd,WAAOA,CAAC,CAACyD,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU1D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC0D,CAAT;AACD,GANkB,EAOlBsI,KAPkB,CAOZlF,0CAPY,CAArB;AASA,MAAMuF,OAAO,GAAG9H,IAAI,CACjBL,MADa,CACN,MADM,EAEbtF,IAFa,CAER,GAFQ,EAEHqN,YAAY,CAACL,QAAD,CAFT,EAGbhN,IAHa,CAGR,IAHQ,EAGF,SAAS4sB,SAHP,EAIb5sB,IAJa,CAIR,OAJQ,EAIC,UAJD,CAAhB;AAKA,MAAI0N,GAAG,GAAG,EAAV;;AACA,MAAIhM,IAAI,CAACkM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAED,MAAI2d,QAAQ,CAACA,QAAT,CAAkBsC,QAAlB,IAA8B,CAAlC,EAAqC;AACnC3Z,IAAAA,OAAO,CAACzN,IAAR,CAAa,OAAb,EAAsB,sBAAtB;AACD;;AACD,MAAI8kB,QAAQ,CAACA,QAAT,CAAkBwF,KAAlB,KAA4B,MAAhC,EAAwC;AACtC7c,IAAAA,OAAO,CAACzN,IAAR,CACE,cADF,EAEE,SAAS0N,GAAT,GAAe,GAAf,GAAqBmf,eAAe,CAAC/H,QAAQ,CAACA,QAAT,CAAkBwF,KAAnB,CAApC,GAAgE,OAAhE,GAA0E,GAF5E;AAID;;AACD,MAAIxF,QAAQ,CAACA,QAAT,CAAkByF,KAAlB,KAA4B,MAAhC,EAAwC;AACtC9c,IAAAA,OAAO,CAACzN,IAAR,CACE,YADF,EAEE,SAAS0N,GAAT,GAAe,GAAf,GAAqBmf,eAAe,CAAC/H,QAAQ,CAACA,QAAT,CAAkByF,KAAnB,CAApC,GAAgE,KAAhE,GAAwE,GAF1E;AAID;;AAED,MAAI1lB,CAAJ,EAAOC,CAAP;AACA,MAAMgoB,CAAC,GAAGhjB,IAAI,CAAC6B,MAAL,CAAYxK,MAAtB,CA/D4D,CAgE5D;;AACA,MAAI4rB,aAAa,GAAG5kB,gEAAA,CAAwB2B,IAAI,CAAC6B,MAA7B,CAApB;AACA9G,EAAAA,CAAC,GAAGkoB,aAAa,CAACloB,CAAlB;AACAC,EAAAA,CAAC,GAAGioB,aAAa,CAACjoB,CAAlB;AAEA,MAAIkoB,SAAJ,EAAeC,SAAf;AACA,MAAIC,SAAJ,EAAeC,SAAf;;AAEA,MAAIL,CAAC,GAAG,CAAJ,KAAU,CAAV,IAAeA,CAAC,GAAG,CAAvB,EAA0B;AACxB,QAAIM,mBAAmB,GAAGjlB,sEAAA,CACxB2c,QAAQ,CAACA,QAAT,CAAkBwF,KAAlB,KAA4B,MADJ,EAExBxgB,IAAI,CAAC6B,MAFmB,EAGxB7B,IAAI,CAAC6B,MAAL,CAAY,CAAZ,CAHwB,CAA1B;AAKA,QAAI2hB,mBAAmB,GAAGnlB,sEAAA,CACxB2c,QAAQ,CAACA,QAAT,CAAkByF,KAAlB,KAA4B,MADJ,EAExBzgB,IAAI,CAAC6B,MAFmB,EAGxB7B,IAAI,CAAC6B,MAAL,CAAYmhB,CAAC,GAAG,CAAhB,CAHwB,CAA1B;AAMA3sB,IAAAA,8CAAA,CAAU,yBAAyBqE,IAAI,CAACC,SAAL,CAAe2oB,mBAAf,CAAnC;AACAjtB,IAAAA,8CAAA,CAAU,yBAAyBqE,IAAI,CAACC,SAAL,CAAe6oB,mBAAf,CAAnC;AAEAN,IAAAA,SAAS,GAAGI,mBAAmB,CAACvoB,CAAhC;AACAooB,IAAAA,SAAS,GAAGG,mBAAmB,CAACtoB,CAAhC;AACAooB,IAAAA,SAAS,GAAGI,mBAAmB,CAACzoB,CAAhC;AACAsoB,IAAAA,SAAS,GAAGG,mBAAmB,CAACxoB,CAAhC;AACD;;AAED,MAAI,OAAOggB,QAAQ,CAACxL,KAAhB,KAA0B,WAA9B,EAA2C;AACzC,QAAMmQ,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBtF,IAAjB,CAAsB,OAAtB,EAA+B,YAA/B,CAAV;AACA,QAAMsD,KAAK,GAAGmmB,CAAC,CACZnkB,MADW,CACJ,MADI,EAEXtF,IAFW,CAEN,OAFM,EAEG,OAFH,EAGXA,IAHW,CAGN,GAHM,EAGD6E,CAHC,EAIX7E,IAJW,CAIN,GAJM,EAID8E,CAJC,EAKX9E,IALW,CAKN,MALM,EAKE,KALF,EAMXA,IANW,CAMN,aANM,EAMS,QANT,EAOXC,IAPW,CAON6kB,QAAQ,CAACxL,KAPH,CAAd;AASAzL,IAAAA,MAAM,CAACvK,KAAP,GAAeA,KAAf;AACA,QAAMiqB,MAAM,GAAGjqB,KAAK,CAACJ,IAAN,GAAaU,OAAb,EAAf;AAEA6lB,IAAAA,CAAC,CAAC9pB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGK,IADH,CACQ,OADR,EACiB,KADjB,EAEGA,IAFH,CAEQ,GAFR,EAEautB,MAAM,CAAC1oB,CAAP,GAAWnD,IAAI,CAAC2C,OAAL,GAAe,CAFvC,EAGGrE,IAHH,CAGQ,GAHR,EAGautB,MAAM,CAACzoB,CAAP,GAAWpD,IAAI,CAAC2C,OAAL,GAAe,CAHvC,EAIGrE,IAJH,CAIQ,OAJR,EAIiButB,MAAM,CAACppB,KAAP,GAAezC,IAAI,CAAC2C,OAJrC,EAKGrE,IALH,CAKQ,QALR,EAKkButB,MAAM,CAACnpB,MAAP,GAAgB1C,IAAI,CAAC2C,OALvC;AAMD;;AAEDlE,EAAAA,6CAAA,CAAS,wBAAwBqE,IAAI,CAACC,SAAL,CAAeqgB,QAAf,CAAjC;;AACA,MAAI,OAAOA,QAAQ,CAACG,cAAhB,KAAmC,WAAnC,IAAkDH,QAAQ,CAACG,cAAT,KAA4B,MAAlF,EAA0F;AACxF,QAAMwE,EAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBtF,IAAjB,CAAsB,OAAtB,EAA+B,aAA/B,CAAV;;AACAypB,IAAAA,EAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEagtB,SAFb,EAGGhtB,IAHH,CAGQ,GAHR,EAGaitB,SAHb,EAIGjtB,IAJH,CAIQ,MAJR,EAIgB,OAJhB,EAKGA,IALH,CAKQ,WALR,EAKqB,GALrB,EAMGC,IANH,CAMQ6kB,QAAQ,CAACG,cANjB;AAOD;;AACD,MAAI,OAAOH,QAAQ,CAACI,cAAhB,KAAmC,WAAnC,IAAkDJ,QAAQ,CAACI,cAAT,KAA4B,MAAlF,EAA0F;AACxF,QAAMuE,GAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBtF,IAAjB,CAAsB,OAAtB,EAA+B,aAA/B,CAAV;;AACAypB,IAAAA,GAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEaktB,SAFb,EAGGltB,IAHH,CAGQ,GAHR,EAGamtB,SAHb,EAIGntB,IAJH,CAIQ,MAJR,EAIgB,OAJhB,EAKGA,IALH,CAKQ,WALR,EAKqB,GALrB,EAMGC,IANH,CAMQ6kB,QAAQ,CAACI,cANjB;AAOD;;AAED0H,EAAAA,SAAS;AACV,CA1IM;AA4IP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMR,SAAS,GAAG,SAAZA,SAAY,CAAUzmB,IAAV,EAAgBwmB,QAAhB,EAA0BzqB,IAA1B,EAAgC;AACvDvB,EAAAA,6CAAA,CAAS,qBAAqBgsB,QAA9B;AAEA,MAAMzsB,EAAE,GAAGysB,QAAQ,CAACzsB,EAApB;AACA,MAAM8tB,SAAS,GAAG;AAChB9tB,IAAAA,EAAE,EAAEA,EADY;AAEhB4D,IAAAA,KAAK,EAAE6oB,QAAQ,CAACzsB,EAFA;AAGhByE,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,MAAM,EAAE;AAJQ,GAAlB,CAJuD,CAWvD;;AACA,MAAMqlB,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBtF,IAAjB,CAAsB,IAAtB,EAA4BukB,qDAAW,CAAC7kB,EAAD,CAAvC,EAA6CM,IAA7C,CAAkD,OAAlD,EAA2D,YAA3D,CAAV,CAZuD,CAcvD;;AACA,MAAIsZ,KAAJ;;AACA,MAAI6S,QAAQ,CAAChQ,IAAb,EAAmB;AACjB7C,IAAAA,KAAK,GAAGmQ,CAAC,CACNnkB,MADK,CACE,OADF,EAELtF,IAFK,CAEA,YAFA,EAEcmsB,QAAQ,CAAChQ,IAFvB,EAGLnc,IAHK,CAGA,QAHA,EAGUmsB,QAAQ,CAAC7P,UAHnB,EAILhX,MAJK,CAIE,MAJF,EAKLtF,IALK,CAKA,GALA,EAKK0B,IAAI,CAACwf,UAAL,GAAkBxf,IAAI,CAAC2C,OAL5B,EAMLrE,IANK,CAMA,GANA,EAMK,CANL,CAAR;AAOD,GARD,MAQO;AACLsZ,IAAAA,KAAK,GAAGmQ,CAAC,CACNnkB,MADK,CACE,MADF,EAELtF,IAFK,CAEA,GAFA,EAEK0B,IAAI,CAACwf,UAAL,GAAkBxf,IAAI,CAAC2C,OAF5B,EAGLrE,IAHK,CAGA,GAHA,EAGK,CAHL,CAAR;AAID,GA7BsD,CA+BvD;;;AACA,MAAIytB,OAAO,GAAG,IAAd;AACAtB,EAAAA,QAAQ,CAACpR,WAAT,CAAqB5Y,OAArB,CAA6B,UAAUojB,MAAV,EAAkB;AAC7C,QAAMmI,UAAU,GAAGpU,KAAK,CAAChU,MAAN,CAAa,OAAb,EAAsBrF,IAAtB,CAA2B,MAAMslB,MAAN,GAAe,GAA1C,CAAnB;AACA,QAAI,CAACkI,OAAL,EAAcC,UAAU,CAAC1tB,IAAX,CAAgB,IAAhB,EAAsB0B,IAAI,CAACwf,UAA3B;AACduM,IAAAA,OAAO,GAAG,KAAV;AACD,GAJD;AAMA,MAAItS,gBAAgB,GAAGgR,QAAQ,CAACzsB,EAAhC;;AAEA,MAAIysB,QAAQ,CAAC3b,IAAT,KAAkB9M,SAAlB,IAA+ByoB,QAAQ,CAAC3b,IAAT,KAAkB,EAArD,EAAyD;AACvD2K,IAAAA,gBAAgB,IAAI,MAAMgR,QAAQ,CAAC3b,IAAf,GAAsB,GAA1C;AACD;;AAED,MAAMmd,UAAU,GAAGrU,KAAK,CAAChU,MAAN,CAAa,OAAb,EAAsBrF,IAAtB,CAA2Bkb,gBAA3B,EAA6Cnb,IAA7C,CAAkD,OAAlD,EAA2D,OAA3D,CAAnB,CA7CuD,CA+CvD;;AACA,MAAI,CAACytB,OAAL,EAAcE,UAAU,CAAC3tB,IAAX,CAAgB,IAAhB,EAAsB0B,IAAI,CAACwf,UAA3B;AAEd,MAAM0M,WAAW,GAAGtU,KAAK,CAACpW,IAAN,GAAaU,OAAb,GAAuBQ,MAA3C;AAEA,MAAMypB,WAAW,GAAGpE,CAAC,CAClBnkB,MADiB,CACV,MADU,EACF;AADE,GAEjBtF,IAFiB,CAEZ,IAFY,EAEN,CAFM,EAGjBA,IAHiB,CAGZ,IAHY,EAGN0B,IAAI,CAAC2C,OAAL,GAAeupB,WAAf,GAA6BlsB,IAAI,CAACsf,aAAL,GAAqB,CAH5C,EAIjBhhB,IAJiB,CAIZ,IAJY,EAIN0B,IAAI,CAAC2C,OAAL,GAAeupB,WAAf,GAA6BlsB,IAAI,CAACsf,aAAL,GAAqB,CAJ5C,CAApB;AAMA,MAAMzF,OAAO,GAAGkO,CAAC,CACdnkB,MADa,CACN,MADM,EACE;AADF,GAEbtF,IAFa,CAER,GAFQ,EAEH0B,IAAI,CAAC2C,OAFF,EAGbrE,IAHa,CAGR,GAHQ,EAGH4tB,WAAW,GAAGlsB,IAAI,CAACsf,aAAnB,GAAmCtf,IAAI,CAACwf,UAHrC,EAIblhB,IAJa,CAIR,MAJQ,EAIA,OAJA,EAKbA,IALa,CAKR,OALQ,EAKC,WALD,CAAhB;AAOAytB,EAAAA,OAAO,GAAG,IAAV;AACAtB,EAAAA,QAAQ,CAAC5Q,OAAT,CAAiBpZ,OAAjB,CAAyB,UAAUojB,MAAV,EAAkB;AACzCuI,IAAAA,QAAQ,CAACvS,OAAD,EAAUgK,MAAV,EAAkBkI,OAAlB,EAA2B/rB,IAA3B,CAAR;AACA+rB,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD;AAKA,MAAMM,UAAU,GAAGxS,OAAO,CAACrY,IAAR,GAAeU,OAAf,EAAnB;AAEA,MAAMoqB,WAAW,GAAGvE,CAAC,CAClBnkB,MADiB,CACV,MADU,EACF;AADE,GAEjBtF,IAFiB,CAEZ,IAFY,EAEN,CAFM,EAGjBA,IAHiB,CAGZ,IAHY,EAGN0B,IAAI,CAAC2C,OAAL,GAAeupB,WAAf,GAA6BlsB,IAAI,CAACsf,aAAlC,GAAkD+M,UAAU,CAAC3pB,MAHvD,EAIjBpE,IAJiB,CAIZ,IAJY,EAIN0B,IAAI,CAAC2C,OAAL,GAAeupB,WAAf,GAA6BlsB,IAAI,CAACsf,aAAlC,GAAkD+M,UAAU,CAAC3pB,MAJvD,CAApB;AAMA,MAAM2X,OAAO,GAAG0N,CAAC,CACdnkB,MADa,CACN,MADM,EACE;AADF,GAEbtF,IAFa,CAER,GAFQ,EAEH0B,IAAI,CAAC2C,OAFF,EAGbrE,IAHa,CAGR,GAHQ,EAGH4tB,WAAW,GAAG,IAAIlsB,IAAI,CAACsf,aAAvB,GAAuC+M,UAAU,CAAC3pB,MAAlD,GAA2D1C,IAAI,CAACwf,UAH7D,EAIblhB,IAJa,CAIR,MAJQ,EAIA,OAJA,EAKbA,IALa,CAKR,OALQ,EAKC,WALD,CAAhB;AAOAytB,EAAAA,OAAO,GAAG,IAAV;AAEAtB,EAAAA,QAAQ,CAACpQ,OAAT,CAAiB5Z,OAAjB,CAAyB,UAAU8rB,MAAV,EAAkB;AACzCH,IAAAA,QAAQ,CAAC/R,OAAD,EAAUkS,MAAV,EAAkBR,OAAlB,EAA2B/rB,IAA3B,CAAR;AACA+rB,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD;AAKA,MAAMS,QAAQ,GAAGzE,CAAC,CAACvmB,IAAF,GAASU,OAAT,EAAjB;AACA,MAAI+lB,WAAW,GAAG,GAAlB;;AAEA,MAAIwC,QAAQ,CAAC7H,UAAT,CAAoBnjB,MAApB,GAA6B,CAAjC,EAAoC;AAClCwoB,IAAAA,WAAW,GAAGA,WAAW,GAAGwC,QAAQ,CAAC7H,UAAT,CAAoB7M,IAApB,CAAyB,GAAzB,CAA5B;AACD;;AAED,MAAMzU,IAAI,GAAGymB,CAAC,CACX9pB,MADU,CACH,MADG,EACK,cADL,EAEVK,IAFU,CAEL,GAFK,EAEA,CAFA,EAGVA,IAHU,CAGL,GAHK,EAGA,CAHA,EAIVA,IAJU,CAIL,OAJK,EAIIkuB,QAAQ,CAAC/pB,KAAT,GAAiB,IAAIzC,IAAI,CAAC2C,OAJ9B,EAKVrE,IALU,CAKL,QALK,EAKKkuB,QAAQ,CAAC9pB,MAAT,GAAkB1C,IAAI,CAAC2C,OAAvB,GAAiC,MAAM3C,IAAI,CAACsf,aALjD,EAMVhhB,IANU,CAML,OANK,EAMI2pB,WANJ,CAAb;AAQA,MAAMwE,SAAS,GAAGnrB,IAAI,CAACE,IAAL,GAAYU,OAAZ,GAAsBO,KAAxC,CA5GuD,CA8GvD;AACA;;AACAmV,EAAAA,KAAK,CAACpW,IAAN,GAAakrB,UAAb,CAAwBjsB,OAAxB,CAAgC,UAAU0C,CAAV,EAAa;AAC3CA,IAAAA,CAAC,CAAC0C,YAAF,CAAe,GAAf,EAAoB,CAAC4mB,SAAS,GAAGtpB,CAAC,CAACjB,OAAF,GAAYO,KAAzB,IAAkC,CAAtD;AACD,GAFD;;AAIA,MAAIgoB,QAAQ,CAAC5P,OAAb,EAAsB;AACpBjD,IAAAA,KAAK,CAAC3Z,MAAN,CAAa,OAAb,EAAsBM,IAAtB,CAA2BksB,QAAQ,CAAC5P,OAApC;AACD;;AAEDsR,EAAAA,WAAW,CAAC7tB,IAAZ,CAAiB,IAAjB,EAAuBmuB,SAAvB;AACAH,EAAAA,WAAW,CAAChuB,IAAZ,CAAiB,IAAjB,EAAuBmuB,SAAvB;AAEAX,EAAAA,SAAS,CAACrpB,KAAV,GAAkBgqB,SAAlB;AACAX,EAAAA,SAAS,CAACppB,MAAV,GAAmB8pB,QAAQ,CAAC9pB,MAAT,GAAkB1C,IAAI,CAAC2C,OAAvB,GAAiC,MAAM3C,IAAI,CAACsf,aAA/D;AAEA,SAAOwM,SAAP;AACD,CA/HM;AAiIA,IAAMrW,WAAW,GAAG,SAAdA,WAAc,CAAUlX,IAAV,EAAgB;AACzC,MAAMouB,UAAU,GAAG,mDAAnB;AACA,MAAMC,WAAW,GAAG,mEAApB;AAEA,MAAIC,UAAU,GAAGtuB,IAAI,CAACimB,KAAL,CAAWmI,UAAX,CAAjB;AACA,MAAIG,WAAW,GAAGvuB,IAAI,CAACimB,KAAL,CAAWoI,WAAX,CAAlB;;AAEA,MAAIC,UAAU,IAAI,CAACC,WAAnB,EAAgC;AAC9B,WAAOC,iBAAiB,CAACF,UAAD,CAAxB;AACD,GAFD,MAEO,IAAIC,WAAJ,EAAiB;AACtB,WAAOE,kBAAkB,CAACF,WAAD,CAAzB;AACD,GAFM,MAEA;AACL,WAAOG,kBAAkB,CAAC1uB,IAAD,CAAzB;AACD;AACF,CAdM;;AAgBP,IAAMwuB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAU/S,UAAV,EAAsB;AAC9C,MAAIG,QAAQ,GAAG,EAAf;AACA,MAAIF,WAAW,GAAG,EAAlB;;AAEA,MAAI;AACF,QAAIiT,UAAU,GAAGlT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAI6mB,SAAS,GAAGnT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAvD;AACA,QAAIkc,WAAW,GAAGxI,UAAU,CAAC,CAAD,CAAV,GAAgBoT,iBAAiB,CAACpT,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAD,CAAjC,GAA0D,EAA5E;AACA,QAAI+mB,SAAS,GAAGrT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAvD;AACA,QAAIgnB,UAAU,GAAGtT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAxD;AAEA2T,IAAAA,WAAW,GAAGiT,UAAU,GAAGC,SAAb,GAAyB3K,WAAzB,GAAuC,GAAvC,GAA6C6K,SAA3D;AACAlT,IAAAA,QAAQ,GAAGoT,eAAe,CAACD,UAAD,CAA1B;AACD,GATD,CASE,OAAOE,GAAP,EAAY;AACZvT,IAAAA,WAAW,GAAGD,UAAd;AACD;;AAED,SAAO;AACLC,IAAAA,WAAW,EAAEA,WADR;AAELE,IAAAA,QAAQ,EAAEA;AAFL,GAAP;AAID,CArBD;;AAuBA,IAAM6S,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUhT,UAAV,EAAsB;AAC/C,MAAIG,QAAQ,GAAG,EAAf;AACA,MAAIF,WAAW,GAAG,EAAlB;;AAEA,MAAI;AACF,QAAIiT,UAAU,GAAGlT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAImnB,UAAU,GAAGzT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIonB,UAAU,GAAG1T,UAAU,CAAC,CAAD,CAAV,GAAgBoT,iBAAiB,CAACpT,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAD,CAAjC,GAA0D,EAA3E;AACA,QAAIgnB,UAAU,GAAGtT,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAAc1T,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIqnB,UAAU,GAAG3T,UAAU,CAAC,CAAD,CAAV,GAAgB,QAAQoT,iBAAiB,CAACpT,UAAU,CAAC,CAAD,CAAX,CAAjB,CAAiC1T,IAAjC,EAAxB,GAAkE,EAAnF;AAEA2T,IAAAA,WAAW,GAAGiT,UAAU,GAAGO,UAAb,GAA0B,GAA1B,GAAgCC,UAAhC,GAA6C,GAA7C,GAAmDC,UAAjE;AACAxT,IAAAA,QAAQ,GAAGoT,eAAe,CAACD,UAAD,CAA1B;AACD,GATD,CASE,OAAOE,GAAP,EAAY;AACZvT,IAAAA,WAAW,GAAGD,UAAd;AACD;;AAED,SAAO;AACLC,IAAAA,WAAW,EAAEA,WADR;AAELE,IAAAA,QAAQ,EAAEA;AAFL,GAAP;AAID,CArBD;;AAuBA,IAAM8S,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU1uB,IAAV,EAAgB;AACzC;AACA,MAAI0b,WAAW,GAAG,EAAlB;AACA,MAAIE,QAAQ,GAAG,EAAf;AACA,MAAIyT,UAAU,GAAG,EAAjB;AACA,MAAID,UAAU,GAAG,EAAjB;AACA,MAAIE,WAAW,GAAGtvB,IAAI,CAACqC,OAAL,CAAa,GAAb,CAAlB;AACA,MAAIktB,SAAS,GAAGvvB,IAAI,CAACqC,OAAL,CAAa,GAAb,CAAhB;;AAEA,MAAIitB,WAAW,GAAG,CAAd,IAAmBC,SAAS,GAAGD,WAA/B,IAA8CC,SAAS,IAAIvvB,IAAI,CAACkB,MAApE,EAA4E;AAC1E,QAAIytB,UAAU,GAAG,EAAjB;AACA,QAAIO,UAAU,GAAG,EAAjB;AAEA,QAAIM,SAAS,GAAGxvB,IAAI,CAAC2lB,SAAL,CAAe,CAAf,EAAkB,CAAlB,CAAhB;;AACA,QAAI6J,SAAS,CAACvJ,KAAV,CAAgB,IAAhB,CAAJ,EAA2B;AACzBiJ,MAAAA,UAAU,GAAGlvB,IAAI,CAAC2lB,SAAL,CAAe,CAAf,EAAkB2J,WAAlB,EAA+BvnB,IAA/B,EAAb;AACD,KAFD,MAEO;AACL,UAAIynB,SAAS,CAACvJ,KAAV,CAAgB,UAAhB,CAAJ,EAAiC;AAC/B0I,QAAAA,UAAU,GAAGa,SAAb;AACD;;AAEDN,MAAAA,UAAU,GAAGlvB,IAAI,CAAC2lB,SAAL,CAAe,CAAf,EAAkB2J,WAAlB,EAA+BvnB,IAA/B,EAAb;AACD;;AAED,QAAIonB,UAAU,GAAGnvB,IAAI,CAAC2lB,SAAL,CAAe2J,WAAW,GAAG,CAA7B,EAAgCC,SAAhC,CAAjB;AACA,QAAIR,UAAU,GAAG/uB,IAAI,CAAC2lB,SAAL,CAAe4J,SAAS,GAAG,CAA3B,EAA8B,CAA9B,CAAjB;AACA3T,IAAAA,QAAQ,GAAGoT,eAAe,CAACD,UAAD,CAA1B;AAEArT,IAAAA,WAAW,GAAGiT,UAAU,GAAGO,UAAb,GAA0B,GAA1B,GAAgCL,iBAAiB,CAACM,UAAU,CAACpnB,IAAX,EAAD,CAAjD,GAAuE,GAArF;;AAEA,QAAIwnB,SAAS,GAAGF,UAAU,CAACnuB,MAA3B,EAAmC;AACjCkuB,MAAAA,UAAU,GAAGpvB,IAAI,CAAC2lB,SAAL,CAAe4J,SAAS,GAAG,CAA3B,EAA8BxnB,IAA9B,EAAb;;AACA,UAAIqnB,UAAU,KAAK,EAAnB,EAAuB;AACrBA,QAAAA,UAAU,GAAG,QAAQP,iBAAiB,CAACO,UAAD,CAAtC;AACD;AACF;AACF,GA3BD,MA2BO;AACL;AACA1T,IAAAA,WAAW,GAAGmT,iBAAiB,CAAC7uB,IAAD,CAA/B;AACD;;AAED,SAAO;AACL0b,IAAAA,WAAW,EAAEA,WADR;AAELE,IAAAA,QAAQ,EAAEA;AAFL,GAAP;AAID,CA7CD;AA+CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMiS,QAAQ,GAAG,SAAXA,QAAW,CAAU4B,MAAV,EAAkBrpB,GAAlB,EAAuBonB,OAAvB,EAAgC/rB,IAAhC,EAAsC;AACrD,MAAI6jB,MAAM,GAAGpO,WAAW,CAAC9Q,GAAD,CAAxB;AAEA,MAAMspB,KAAK,GAAGD,MAAM,CAACpqB,MAAP,CAAc,OAAd,EAAuBtF,IAAvB,CAA4B,GAA5B,EAAiC0B,IAAI,CAAC2C,OAAtC,EAA+CpE,IAA/C,CAAoDslB,MAAM,CAAC5J,WAA3D,CAAd;;AAEA,MAAI4J,MAAM,CAAC1J,QAAP,KAAoB,EAAxB,EAA4B;AAC1B8T,IAAAA,KAAK,CAAC3vB,IAAN,CAAW,OAAX,EAAoBulB,MAAM,CAAC1J,QAA3B;AACD;;AAED,MAAI,CAAC4R,OAAL,EAAc;AACZkC,IAAAA,KAAK,CAAC3vB,IAAN,CAAW,IAAX,EAAiB0B,IAAI,CAACwf,UAAtB;AACD;AACF,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM4N,iBAAiB,GAAG,SAApBA,iBAAoB,CAAU7uB,IAAV,EAAgB;AACxC,MAAI2vB,WAAW,GAAG3vB,IAAlB;;AAEA,MAAIA,IAAI,CAACqC,OAAL,CAAa,GAAb,KAAqB,CAAC,CAA1B,EAA6B;AAC3BstB,IAAAA,WAAW,GAAGA,WAAW,CAACzoB,OAAZ,CAAoB,GAApB,EAAyB,GAAzB,CAAd;AACAyoB,IAAAA,WAAW,GAAGA,WAAW,CAACzoB,OAAZ,CAAoB,GAApB,EAAyB,GAAzB,CAAd;AAEA,WAAO2nB,iBAAiB,CAACc,WAAD,CAAxB;AACD,GALD,MAKO;AACL,WAAOA,WAAP;AACD;AACF,CAXD;AAaA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMX,eAAe,GAAG,SAAlBA,eAAkB,CAAUD,UAAV,EAAsB;AAC5C,UAAQA,UAAR;AACE,SAAK,GAAL;AACE,aAAO,oBAAP;;AACF,SAAK,GAAL;AACE,aAAO,4BAAP;;AACF;AACE,aAAO,EAAP;AANJ;AAQD,CATD;;AAWA,iEAAe;AACb5C,EAAAA,SAAS,EAATA,SADa;AAEbC,EAAAA,QAAQ,EAARA,QAFa;AAGblV,EAAAA,WAAW,EAAXA;AAHa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;ACtcA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM2Y,OAAO,GAAG,SAAVA,OAAU,CAAC1oB,CAAD,EAAO;AAC5B,MAAI,CAACA,CAAL,EAAQ,OAAO,CAAP;AACR,MAAIoU,GAAG,GAAGuU,kBAAkB,CAAC3oB,CAAD,CAA5B;AACAoU,EAAAA,GAAG,GAAGA,GAAG,CAACrU,OAAJ,CAAY,MAAZ,EAAoB,MAApB,CAAN;AACA,SAAOqU,GAAG,CAAC/T,KAAJ,CAAU,MAAV,CAAP;AACD,CALM;AAOA,IAAMuoB,aAAa,GAAG,SAAhBA,aAAgB,CAAC/vB,IAAD,EAAU;AACrC,MAAIgwB,MAAM,GAAGhwB,IAAI,CAACkH,OAAL,CAAa,iBAAb,EAAgC,UAAU+e,KAAV,EAAiB;AAC5D,WAAOgK,MAAM,CAACC,YAAP,CAAoBC,QAAQ,CAAClK,KAAK,CAAC/e,OAAN,CAAc,MAAd,EAAsB,EAAtB,CAAD,EAA4B,EAA5B,CAA5B,CAAP;AACD,GAFY,CAAb;AAIA8oB,EAAAA,MAAM,GAAGA,MAAM,CAAC9oB,OAAP,CAAe,oBAAf,EAAqC,UAACkpB,CAAD,EAAIC,CAAJ;AAAA,WAAUJ,MAAM,CAACC,YAAP,CAAoBC,QAAQ,CAACE,CAAD,EAAI,EAAJ,CAA5B,CAAV;AAAA,GAArC,CAAT;AACAL,EAAAA,MAAM,GAAGA,MAAM,CAAC9oB,OAAP,CAAe,iBAAf,EAAkC,UAAU+e,KAAV,EAAiB;AAC1D,WAAOgK,MAAM,CAACC,YAAP,CAAoBC,QAAQ,CAAClK,KAAK,CAAC/e,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAD,EAA2B,CAA3B,CAA5B,CAAP;AACD,GAFQ,CAAT;AAGA8oB,EAAAA,MAAM,GAAGA,MAAM,CAAC9oB,OAAP,CAAe,iBAAf,EAAkC,UAAU+e,KAAV,EAAiB;AAC1D,WAAOgK,MAAM,CAACC,YAAP,CAAoBC,QAAQ,CAAClK,KAAK,CAAC/e,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAD,EAA2B,CAA3B,CAA5B,CAAP;AACD,GAFQ,CAAT;AAIA,SAAO8oB,MAAP;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMM,YAAY,GAAG,SAAfA,YAAe,CAAClqB,GAAD,EAAS;AACnC,MAAImqB,EAAE,GAAG,EAAT;AACA,MAAIC,GAAG,GAAG,CAAV;;AAEA,SAAOA,GAAG,IAAI,CAAd,EAAiB;AACfA,IAAAA,GAAG,GAAGpqB,GAAG,CAAC/D,OAAJ,CAAY,SAAZ,CAAN;;AACA,QAAImuB,GAAG,IAAI,CAAX,EAAc;AACZD,MAAAA,EAAE,IAAInqB,GAAG,CAAC0f,MAAJ,CAAW,CAAX,EAAc0K,GAAd,CAAN;AACApqB,MAAAA,GAAG,GAAGA,GAAG,CAAC0f,MAAJ,CAAW0K,GAAG,GAAG,CAAjB,CAAN;AAEAA,MAAAA,GAAG,GAAGpqB,GAAG,CAAC/D,OAAJ,CAAY,WAAZ,CAAN;;AACA,UAAImuB,GAAG,IAAI,CAAX,EAAc;AACZA,QAAAA,GAAG,IAAI,CAAP;AACApqB,QAAAA,GAAG,GAAGA,GAAG,CAAC0f,MAAJ,CAAW0K,GAAX,CAAN;AACD;AACF,KATD,MASO;AACLD,MAAAA,EAAE,IAAInqB,GAAN;AACAoqB,MAAAA,GAAG,GAAG,CAAC,CAAP;AACA;AACD;AACF;;AACD,MAAIC,WAAW,GAAGV,aAAa,CAACQ,EAAD,CAA/B;AACAE,EAAAA,WAAW,GAAGA,WAAW,CAACvpB,OAAZ,CAAoB,WAApB,EAAiC,GAAjC,CAAd;AACAupB,EAAAA,WAAW,GAAGA,WAAW,CAACvpB,OAAZ,CAAoB,eAApB,EAAqC,GAArC,CAAd;AACAupB,EAAAA,WAAW,GAAGA,WAAW,CAACvpB,OAAZ,CAAoB,YAApB,EAAkC,UAAlC,CAAd;AACAupB,EAAAA,WAAW,GAAGA,WAAW,CAACvpB,OAAZ,CAAoB,WAApB,EAAiC,EAAjC,CAAd;AACA,SAAOupB,WAAP;AACD,CA3BM;;AA6BP,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAC1wB,IAAD,EAAOI,MAAP,EAAkB;AACrC,MAAIgG,GAAG,GAAGpG,IAAV;AACA,MAAI6D,UAAU,GAAG,IAAjB;;AACA,MACEzD,MAAM,CAACwD,SAAP,KACCxD,MAAM,CAACwD,SAAP,CAAiBC,UAAjB,KAAgC,KAAhC,IAAyCzD,MAAM,CAACwD,SAAP,CAAiBC,UAAjB,KAAgC,OAD1E,CADF,EAGE;AACAA,IAAAA,UAAU,GAAG,KAAb;AACD;;AAED,MAAIA,UAAJ,EAAgB;AACd,QAAM8sB,KAAK,GAAGvwB,MAAM,CAACgc,aAArB;;AAEA,QAAIuU,KAAK,KAAK,YAAV,IAA0BA,KAAK,KAAK,QAAxC,EAAkD;AAChDvqB,MAAAA,GAAG,GAAGkqB,YAAY,CAAClqB,GAAD,CAAlB;AACD,KAFD,MAEO,IAAIuqB,KAAK,KAAK,OAAd,EAAuB;AAC5B;AACAvqB,MAAAA,GAAG,GAAG0pB,kBAAkB,CAAC1pB,GAAD,CAAxB;AACAA,MAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,IAAZ,EAAkB,MAAlB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,MAAxC,CAAN;AACAd,MAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,IAAZ,EAAkB,UAAlB,CAAN;AACAd,MAAAA,GAAG,GAAGwqB,kBAAkB,CAACxqB,GAAD,CAAxB;AACD;AACF;;AAED,SAAOA,GAAP;AACD,CAzBD;;AA2BO,IAAMF,YAAY,GAAG,SAAfA,YAAe,CAAClG,IAAD,EAAOI,MAAP,EAAkB;AAC5C,MAAI,CAACJ,IAAL,EAAW,OAAOA,IAAP;AACX,MAAIoG,GAAG,GAAG,EAAV;;AACA,MAAIhG,MAAM,CAAC,iBAAD,CAAV,EAA+B;AAC7BgG,IAAAA,GAAG,GAAGwpB,yDAAA,CAAmBc,YAAY,CAAC1wB,IAAD,EAAOI,MAAP,CAA/B,EAA+CA,MAAM,CAAC,iBAAD,CAArD,CAAN;AACD,GAFD,MAEO;AACLgG,IAAAA,GAAG,GAAGwpB,yDAAA,CAAmBc,YAAY,CAAC1wB,IAAD,EAAOI,MAAP,CAA/B,CAAN;AACD;;AACD,SAAOgG,GAAP;AACD,CATM;AAWA,IAAMyqB,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,CAAD,EAAI1wB,MAAJ,EAAe;AAChD,MAAI,OAAO0wB,CAAP,KAAa,QAAjB,EAA2B,OAAO5qB,YAAY,CAAC4qB,CAAD,EAAI1wB,MAAJ,CAAnB;;AAE3B,MAAMsX,CAAC,GAAG,SAAJA,CAAI,CAAC9S,CAAD;AAAA,WAAOsB,YAAY,CAACtB,CAAD,EAAIxE,MAAJ,CAAnB;AAAA,GAAV;;AACA,SAAO0wB,CAAC,CAAC1X,IAAF,GAAS7B,GAAT,CAAaG,CAAb,CAAP;AACD,CALM;AAOA,IAAMkT,cAAc,GAAG,cAAvB;AAEP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMmG,SAAS,GAAG,SAAZA,SAAY,CAAC/wB,IAAD,EAAU;AACjC,SAAO4qB,cAAc,CAACoG,IAAf,CAAoBhxB,IAApB,CAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMixB,WAAW,GAAG,SAAdA,WAAc,CAACjxB,IAAD,EAAU;AACnC,SAAOA,IAAI,CAACwH,KAAL,CAAWojB,cAAX,CAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMgG,kBAAkB,GAAG,SAArBA,kBAAqB,CAACzpB,CAAD,EAAO;AAChC,SAAOA,CAAC,CAACD,OAAF,CAAU,OAAV,EAAmB,OAAnB,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM4oB,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC3oB,CAAD,EAAO;AAChC,SAAOA,CAAC,CAACD,OAAF,CAAU0jB,cAAV,EAA0B,MAA1B,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMsG,MAAM,GAAG,SAATA,MAAS,CAACC,WAAD,EAAiB;AAC9B,MAAI1jB,GAAG,GAAG,EAAV;;AACA,MAAI0jB,WAAJ,EAAiB;AACf1jB,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAED,SAAOuG,GAAP;AACD,CAdD;AAgBA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM3K,QAAQ,GAAG,SAAXA,QAAW,CAACsuB,GAAD;AAAA,SAAUA,GAAG,KAAK,OAAR,IAAmBA,GAAG,KAAK,KAA3B,GAAmC,KAAnC,GAA2C,IAArD;AAAA,CAAjB;AAEP,iEAAe;AACbvB,EAAAA,OAAO,EAAPA,OADa;AAEb3pB,EAAAA,YAAY,EAAZA,YAFa;AAGb2qB,EAAAA,mBAAmB,EAAnBA,mBAHa;AAIbE,EAAAA,SAAS,EAATA,SAJa;AAKbE,EAAAA,WAAW,EAAXA,WALa;AAMbrG,EAAAA,cAAc,EAAdA,cANa;AAOb0F,EAAAA,YAAY,EAAZA,YAPa;AAQbY,EAAAA,MAAM,EAANA,MARa;AASbpuB,EAAAA,QAAQ,EAARA,QATa;AAUbitB,EAAAA,aAAa,EAAbA;AAVa,CAAf;;;;;;;;;;;;;;;;;;;;ACvLA;AACA;AACA;AACA;AAEA,IAAIsB,QAAQ,GAAG,EAAf;AACA,IAAIC,aAAa,GAAG,EAApB;AACA,IAAIjY,KAAK,GAAG,EAAZ;AACA,IAAIxZ,WAAW,GAAG,EAAlB;AAEA,IAAM0xB,WAAW,GAAG;AAClBC,EAAAA,WAAW,EAAE,aADK;AAElBC,EAAAA,YAAY,EAAE,cAFI;AAGlBC,EAAAA,WAAW,EAAE,aAHK;AAIlBC,EAAAA,QAAQ,EAAE;AAJQ,CAApB;AAOA,IAAMC,cAAc,GAAG;AACrBC,EAAAA,eAAe,EAAE,iBADI;AAErBC,EAAAA,WAAW,EAAE;AAFQ,CAAvB;AAKO,IAAMjO,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;;AAIP,IAAMwhB,SAAS,GAAG,SAAZA,SAAY,CAAU3hB,IAAV,EAAgB;AAChC,MAAI,OAAOihB,QAAQ,CAACjhB,IAAD,CAAf,KAA0B,WAA9B,EAA2C;AACzCihB,IAAAA,QAAQ,CAACjhB,IAAD,CAAR,GAAiB;AAAE4hB,MAAAA,UAAU,EAAE;AAAd,KAAjB;AACA9xB,IAAAA,6CAAA,CAAS,oBAAT,EAA+BkQ,IAA/B;AACD;;AAED,SAAOihB,QAAQ,CAACjhB,IAAD,CAAf;AACD,CAPD;;AASA,IAAM6hB,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAMZ,QAAN;AAAA,CAApB;;AAEA,IAAMa,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,UAAV,EAAsBC,OAAtB,EAA+B;AACnD,MAAIC,MAAM,GAAGN,SAAS,CAACI,UAAD,CAAtB,CADmD,CACf;AAEpC;;AACA,MAAIlxB,CAAJ;;AACA,OAAKA,CAAC,GAAGmxB,OAAO,CAAClxB,MAAR,GAAiB,CAA1B,EAA6BD,CAAC,IAAI,CAAlC,EAAqCA,CAAC,EAAtC,EAA0C;AACxCoxB,IAAAA,MAAM,CAACL,UAAP,CAAkBvvB,IAAlB,CAAuB2vB,OAAO,CAACnxB,CAAD,CAA9B;AACAf,IAAAA,8CAAA,CAAU,kBAAV,EAA8BkyB,OAAO,CAACnxB,CAAD,CAAP,CAAWqxB,aAAzC;AACD;AACF,CATD;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAUC,IAAV,EAAgBC,IAAhB,EAAsBC,IAAtB,EAA4BC,KAA5B,EAAmC;AACzD,MAAIC,GAAG,GAAG;AACRC,IAAAA,OAAO,EAAEL,IADD;AAERM,IAAAA,KAAK,EAAEL,IAFC;AAGRM,IAAAA,OAAO,EAAEL,IAHD;AAIRM,IAAAA,OAAO,EAAEL;AAJD,GAAV;AAOArB,EAAAA,aAAa,CAAC7uB,IAAd,CAAmBmwB,GAAnB;AACA1yB,EAAAA,8CAAA,CAAU,0BAAV,EAAsC0yB,GAAtC;AACD,CAVD;;AAYA,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAmB;AAAA,SAAM3B,aAAN;AAAA,CAAzB,EAEA;;;AACA,IAAM5I,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AAC9B,MAAIuiB,aAAa,GAAGpF,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAApB;AACAjK,EAAAA,KAAK,GAAGsP,aAAR;AACD,CAHD;;AAKA,IAAM/oB,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOyZ,KAAP;AACD,CAFD;;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AACvC,MAAIuiB,aAAa,GAAGpF,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAApB;AACAzjB,EAAAA,WAAW,GAAG8oB,aAAd;AACD,CAHD;;AAKA,IAAM7oB,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AACpC,SAAOD,WAAP;AACD,CAFD;;AAIA,IAAMiG,KAAK,GAAG,SAARA,KAAQ,GAAY;AACxBurB,EAAAA,QAAQ,GAAG,EAAX;AACAC,EAAAA,aAAa,GAAG,EAAhB;AACAjY,EAAAA,KAAK,GAAG,EAAR;AACD,CAJD;;AAMA,iEAAe;AACbkY,EAAAA,WAAW,EAAXA,WADa;AAEbK,EAAAA,cAAc,EAAdA,cAFa;AAGb/N,EAAAA,cAAc,EAAdA,cAHa;AAIb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsB3B,EAA5B;AAAA,GAJE;AAKboQ,EAAAA,SAAS,EAATA,SALa;AAMbG,EAAAA,aAAa,EAAbA,aANa;AAObD,EAAAA,WAAW,EAAXA,WAPa;AAQbM,EAAAA,eAAe,EAAfA,eARa;AASbU,EAAAA,gBAAgB,EAAhBA,gBATa;AAUbntB,EAAAA,KAAK,EAALA,KAVa;AAWb4iB,EAAAA,QAAQ,EAARA,QAXa;AAYb9oB,EAAAA,QAAQ,EAARA,QAZa;AAabipB,EAAAA,iBAAiB,EAAjBA,iBAba;AAcb/oB,EAAAA,iBAAiB,EAAjBA;AAda,CAAf;;;;;;;;;;;;;;;AC/FA,IAAMozB,SAAS,GAAG;AAChBC,EAAAA,cAAc,EAAE,gBADA;AAEhBC,EAAAA,YAAY,EAAE,cAFE;AAGhBC,EAAAA,iBAAiB,EAAE,mBAHH;AAIhBC,EAAAA,eAAe,EAAE,iBAJD;AAKhBC,EAAAA,iBAAiB,EAAE,mBALH;AAMhBC,EAAAA,eAAe,EAAE,iBAND;AAOhBC,EAAAA,kBAAkB,EAAE,oBAPJ;AAQhBC,EAAAA,gBAAgB,EAAE;AARF,CAAlB;AAWA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMtlB,aAAa,GAAG,SAAhBA,aAAgB,CAAU1I,IAAV,EAAgBjE,IAAhB,EAAsB;AAC1C,MAAIsqB,MAAJ;AAEArmB,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGcmzB,SAAS,CAACC,cAHxB,EAIGpzB,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,QAVR,EAUkB0B,IAAI,CAACugB,MAVvB,EAWGjiB,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,yBAZb;AAcA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGcmzB,SAAS,CAACE,YAHxB,EAIGrzB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,QAVR,EAUkB0B,IAAI,CAACugB,MAVvB,EAWGjiB,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,uBAZb;AAcAgsB,EAAAA,MAAM,GAAGrmB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNtF,IAHM,CAGD,IAHC,EAGKmzB,SAAS,CAACG,iBAHf,EAINtzB,IAJM,CAID,MAJC,EAIO,CAJP,EAKNA,IALM,CAKD,MALC,EAKO,CALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,QAFR,EAEkB0B,IAAI,CAACugB,MAFvB,EAGGjiB,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAgsB,EAAAA,MAAM,CAAC1mB,MAAP,CAAc,MAAd,EAAsBtF,IAAtB,CAA2B,QAA3B,EAAqC0B,IAAI,CAACugB,MAA1C,EAAkDjiB,IAAlD,CAAuD,MAAvD,EAA+D,MAA/D,EAAuEA,IAAvE,CAA4E,GAA5E,EAAiF,YAAjF;AAEAgsB,EAAAA,MAAM,GAAGrmB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNtF,IAHM,CAGD,IAHC,EAGKmzB,SAAS,CAACI,eAHf,EAINvzB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,CALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,QAFR,EAEkB0B,IAAI,CAACugB,MAFvB,EAGGjiB,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGA,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAgsB,EAAAA,MAAM,CAAC1mB,MAAP,CAAc,MAAd,EAAsBtF,IAAtB,CAA2B,QAA3B,EAAqC0B,IAAI,CAACugB,MAA1C,EAAkDjiB,IAAlD,CAAuD,MAAvD,EAA+D,MAA/D,EAAuEA,IAAvE,CAA4E,GAA5E,EAAiF,cAAjF;AAEA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGcmzB,SAAS,CAACK,iBAHxB,EAIGxzB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,QAVR,EAUkB0B,IAAI,CAACugB,MAVvB,EAWGjiB,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,8CAZb;AAcA2F,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGcmzB,SAAS,CAACM,eAHxB,EAIGzzB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,QAVR,EAUkB0B,IAAI,CAACugB,MAVvB,EAWGjiB,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,0CAZb;AAcAgsB,EAAAA,MAAM,GAAGrmB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNtF,IAHM,CAGD,IAHC,EAGKmzB,SAAS,CAACO,kBAHf,EAIN1zB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,EALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,QAFR,EAEkB0B,IAAI,CAACugB,MAFvB,EAGGjiB,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKc,EALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,QAFR,EAEkB0B,IAAI,CAACugB,MAFvB,EAGGjiB,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,+BAJb;AAMAgsB,EAAAA,MAAM,GAAGrmB,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGNtF,IAHM,CAGD,IAHC,EAGKmzB,SAAS,CAACQ,gBAHf,EAIN3zB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,EALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,QAFR,EAEkB0B,IAAI,CAACugB,MAFvB,EAGGjiB,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGA,IALH,CAKQ,IALR,EAKc,EALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,QAFR,EAEkB0B,IAAI,CAACugB,MAFvB,EAGGjiB,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,iCAJb;AAMA;AACD,CA5ID;;AA8IA,iEAAe;AACbmzB,EAAAA,SAAS,EAATA,SADa;AAEb9kB,EAAAA,aAAa,EAAbA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM3M,IAAI,GAAG,EAAb;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMupB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;;AACA,OAAK,IAAIhqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBgqB,GAAG,CAACjpB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM6yB,cAAc,GAAG,SAAjBA,cAAiB,CAACC,SAAD,EAAYC,cAAZ,EAA4BhC,UAA5B,EAA2C;AAChE,MAAMiC,aAAa,GAAGxyB,IAAI,CAACsgB,aAAL,GAAqB,CAA3C,CADgE,CAClB;;AAC9C,MAAMmS,YAAY,GAAGzyB,IAAI,CAACsgB,aAAL,GAAqB,CAA1C,CAFgE,CAEnB;;AAC7C,MAAMoS,YAAY,GAAG1yB,IAAI,CAAC4d,QAAL,GAAgB,IAArC;AACA,MAAM+U,SAAS,GAAGJ,cAAc,CAAC/wB,IAAf,GAAsBU,OAAtB,EAAlB;AACA,MAAM0wB,cAAc,GAAG,EAAvB,CALgE,CAKrC;;AAC3B,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAIC,UAAU,GAAG,KAAjB;AACA,MAAIC,YAAY,GAAG,CAAnB;AACA,MAAIC,YAAY,GAAG,CAAnB;AACA,MAAIC,WAAW,GAAG,CAAlB;AACA,MAAIC,eAAe,GAAG,CAAtB;AACA,MAAIC,gBAAgB,GAAGR,SAAS,CAACjwB,MAAV,GAAmB8vB,aAAa,GAAG,CAA1D;AACA,MAAIY,OAAO,GAAG,CAAd,CAbgE,CAehE;;AACA7C,EAAAA,UAAU,CAAC9vB,OAAX,CAAmB,UAAC0kB,IAAD,EAAU;AAC3B,QAAIA,IAAI,CAACkO,gBAAL,KAA0BrxB,SAA9B,EAAyC;AACvC6wB,MAAAA,UAAU,GAAG,IAAb;AACD;;AAED,QAAI1N,IAAI,CAACmO,gBAAL,KAA0BtxB,SAA9B,EAAyC;AACvC8wB,MAAAA,UAAU,GAAG,IAAb;AACD;AACF,GARD;AAUAvC,EAAAA,UAAU,CAAC9vB,OAAX,CAAmB,UAAC0kB,IAAD,EAAU;AAC3B,QAAMoO,UAAU,aAAMhB,cAAc,CAAC/wB,IAAf,GAAsBxD,EAA5B,mBAAuCo1B,OAAvC,CAAhB;AACA,QAAII,UAAU,GAAG,CAAjB,CAF2B,CAI3B;;AACA,QAAMC,QAAQ,GAAGnB,SAAS,CACvB1uB,MADc,CACP,MADO,EAEdtF,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,YAGAi1B,UAHA,YAIdj1B,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,MAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkB+B,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6D2xB,YAA7D,GAA4E,IAV/D,EAYdn0B,IAZc,CAYT4mB,IAAI,CAACuO,aAZI,CAAjB,CAL2B,CAmB3B;;AACA,QAAMC,QAAQ,GAAGrB,SAAS,CACvB1uB,MADc,CACP,MADO,EAEdtF,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,YAGAi1B,UAHA,YAIdj1B,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,MAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkB+B,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6D2xB,YAA7D,GAA4E,IAV/D,EAYdn0B,IAZc,CAYT4mB,IAAI,CAAC0L,aAZI,CAAjB;AAcA,QAAM+C,aAAa,GAAG,EAAtB;AACAA,IAAAA,aAAa,CAACC,EAAd,GAAmBJ,QAAnB;AACAG,IAAAA,aAAa,CAACE,EAAd,GAAmBH,QAAnB;AAEA,QAAMI,QAAQ,GAAGN,QAAQ,CAACjyB,IAAT,GAAgBU,OAAhB,EAAjB;AACA,QAAM8xB,QAAQ,GAAGL,QAAQ,CAACnyB,IAAT,GAAgBU,OAAhB,EAAjB;AACA6wB,IAAAA,YAAY,GAAGjqB,IAAI,CAACmrB,GAAL,CAASlB,YAAT,EAAuBgB,QAAQ,CAACtxB,KAAhC,CAAf;AACAuwB,IAAAA,YAAY,GAAGlqB,IAAI,CAACmrB,GAAL,CAASjB,YAAT,EAAuBgB,QAAQ,CAACvxB,KAAhC,CAAf;AAEA+wB,IAAAA,UAAU,GAAG1qB,IAAI,CAACmrB,GAAL,CAASF,QAAQ,CAACrxB,MAAlB,EAA0BsxB,QAAQ,CAACtxB,MAAnC,CAAb;;AAEA,QAAImwB,UAAJ,EAAgB;AACd,UAAMqB,WAAW,GAAG5B,SAAS,CAC1B1uB,MADiB,CACV,MADU,EAEjBtF,IAFiB,CAEZ,OAFY,EAEH,gBAFG,EAGjBA,IAHiB,CAGZ,IAHY,YAGHi1B,UAHG,WAIjBj1B,IAJiB,CAIZ,GAJY,EAIP,CAJO,EAKjBA,IALiB,CAKZ,GALY,EAKP,CALO,EAMjBA,IANiB,CAMZ,mBANY,EAMS,QANT,EAOjBA,IAPiB,CAOZ,aAPY,EAOG,MAPH,EAQjBA,IARiB,CAShB,OATgB,EAUhB,kBAAkB+B,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6D2xB,YAA7D,GAA4E,IAV5D,EAYjBn0B,IAZiB,CAYZ4mB,IAAI,CAACkO,gBAAL,IAAyB,EAZb,CAApB;AAcAO,MAAAA,aAAa,CAACO,EAAd,GAAmBD,WAAnB;AACA,UAAME,WAAW,GAAGF,WAAW,CAAC1yB,IAAZ,GAAmBU,OAAnB,EAApB;AACA+wB,MAAAA,WAAW,GAAGnqB,IAAI,CAACmrB,GAAL,CAAShB,WAAT,EAAsBmB,WAAW,CAAC3xB,KAAlC,CAAd;AACA+wB,MAAAA,UAAU,GAAG1qB,IAAI,CAACmrB,GAAL,CAAST,UAAT,EAAqBY,WAAW,CAAC1xB,MAAjC,CAAb;AACD;;AAED,QAAIowB,UAAJ,EAAgB;AACd,UAAMuB,WAAW,GAAG/B,SAAS,CAC1B1uB,MADiB,CACV,MADU,EAEjBtF,IAFiB,CAEZ,OAFY,EAEH,gBAFG,EAGjBA,IAHiB,CAGZ,IAHY,YAGHi1B,UAHG,eAIjBj1B,IAJiB,CAIZ,GAJY,EAIP,CAJO,EAKjBA,IALiB,CAKZ,GALY,EAKP,CALO,EAMjBA,IANiB,CAMZ,mBANY,EAMS,QANT,EAOjBA,IAPiB,CAOZ,aAPY,EAOG,MAPH,EAQjBA,IARiB,CAShB,OATgB,EAUhB,kBAAkB+B,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6D2xB,YAA7D,GAA4E,IAV5D,EAYjBn0B,IAZiB,CAYZ4mB,IAAI,CAACmO,gBAAL,IAAyB,EAZb,CAApB;AAcAM,MAAAA,aAAa,CAACU,EAAd,GAAmBD,WAAnB;AACA,UAAME,eAAe,GAAGF,WAAW,CAAC7yB,IAAZ,GAAmBU,OAAnB,EAAxB;AACAgxB,MAAAA,eAAe,GAAGpqB,IAAI,CAACmrB,GAAL,CAASf,eAAT,EAA0BqB,eAAe,CAAC9xB,KAA1C,CAAlB;AACA+wB,MAAAA,UAAU,GAAG1qB,IAAI,CAACmrB,GAAL,CAAST,UAAT,EAAqBe,eAAe,CAAC7xB,MAArC,CAAb;AACD;;AAEDkxB,IAAAA,aAAa,CAAClxB,MAAd,GAAuB8wB,UAAvB,CAvF2B,CAwF3B;;AACAZ,IAAAA,cAAc,CAAC5xB,IAAf,CAAoB4yB,aAApB;AACAT,IAAAA,gBAAgB,IAAIK,UAAU,GAAGhB,aAAa,GAAG,CAAjD;AACAY,IAAAA,OAAO,IAAI,CAAX;AACD,GA5FD;AA8FA,MAAIoB,kBAAkB,GAAG,CAAzB;;AACA,MAAI3B,UAAJ,EAAgB;AACd2B,IAAAA,kBAAkB,IAAI,CAAtB;AACD;;AACD,MAAI1B,UAAJ,EAAgB;AACd0B,IAAAA,kBAAkB,IAAI,CAAtB;AACD;;AAED,MAAMzb,QAAQ,GAAGga,YAAY,GAAGC,YAAf,GAA8BC,WAA9B,GAA4CC,eAA7D,CAhIgE,CAkIhE;;AACA,MAAMuB,IAAI,GAAG;AACXhyB,IAAAA,KAAK,EAAEqG,IAAI,CAACmrB,GAAL,CACLj0B,IAAI,CAACogB,cADA,EAELtX,IAAI,CAACmrB,GAAL,CACEtB,SAAS,CAAClwB,KAAV,GAAkBzC,IAAI,CAACsgB,aAAL,GAAqB,CADzC,EAEEvH,QAAQ,GAAG0Z,YAAY,GAAG+B,kBAF5B,CAFK,CADI;AAQX9xB,IAAAA,MAAM,EACJ6tB,UAAU,CAAC9wB,MAAX,GAAoB,CAApB,GACI0zB,gBADJ,GAEIrqB,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACqgB,eAAd,EAA+BsS,SAAS,CAACjwB,MAAV,GAAmB1C,IAAI,CAACsgB,aAAL,GAAqB,CAAvE;AAXK,GAAb;;AAcA,MAAIiQ,UAAU,CAAC9wB,MAAX,GAAoB,CAAxB,EAA2B;AACzB;AACA,QAAMi1B,gBAAgB,GAAG5rB,IAAI,CAACmrB,GAAL,CACvB,CADuB,EAEvB,CAACQ,IAAI,CAAChyB,KAAL,GAAasW,QAAb,GAAwB0Z,YAAY,GAAG+B,kBAAxC,KAA+DA,kBAAkB,GAAG,CAApF,CAFuB,CAAzB,CAFyB,CAOzB;;AACAjC,IAAAA,cAAc,CAACj0B,IAAf,CACE,WADF,EAEE,eAAem2B,IAAI,CAAChyB,KAAL,GAAa,CAA5B,GAAgC,GAAhC,IAAuC+vB,aAAa,GAAGG,SAAS,CAACjwB,MAAV,GAAmB,CAA1E,IAA+E,GAFjF,EARyB,CAazB;;AACA,QAAIiyB,YAAY,GAAGhC,SAAS,CAACjwB,MAAV,GAAmB8vB,aAAa,GAAG,CAAtD,CAdyB,CAcgC;;AACzD,QAAIoC,WAAW,GAAG,iBAAlB,CAfyB,CAeY;;AAErChC,IAAAA,cAAc,CAACnyB,OAAf,CAAuB,UAACmzB,aAAD,EAAmB;AACxC;AACA,UAAMiB,MAAM,GAAGF,YAAY,GAAGnC,aAAf,GAA+BoB,aAAa,CAAClxB,MAAd,GAAuB,CAArE,CAFwC,CAIxC;;AACAkxB,MAAAA,aAAa,CAACC,EAAd,CAAiBv1B,IAAjB,CAAsB,WAAtB,EAAmC,eAAem0B,YAAf,GAA8B,GAA9B,GAAoCoC,MAApC,GAA6C,GAAhF,EALwC,CAOxC;AACA;;AACA,UAAMC,QAAQ,GAAGxC,SAAS,CACvBr0B,MADc,CACP,MADO,EACC,MAAM21B,aAAa,CAACC,EAAd,CAAiBryB,IAAjB,GAAwBxD,EAD/B,EAEdM,IAFc,CAET,OAFS,eAEMs2B,WAFN,GAGdt2B,IAHc,CAGT,MAHS,EAGD0B,IAAI,CAACwgB,IAHJ,EAIdliB,IAJc,CAIT,cAJS,EAIO,MAJP,EAKdA,IALc,CAKT,QALS,EAKC0B,IAAI,CAACugB,MALN,EAMdjiB,IANc,CAMT,GANS,EAMJ,CANI,EAOdA,IAPc,CAOT,GAPS,EAOJq2B,YAPI,EAQdr2B,IARc,CAQT,OARS,EAQAy0B,YAAY,GAAGN,YAAY,GAAG,CAA9B,GAAkCiC,gBARlC,EASdp2B,IATc,CAST,QATS,EASCs1B,aAAa,CAAClxB,MAAd,GAAuB8vB,aAAa,GAAG,CATxC,CAAjB;AAWA,UAAMuC,WAAW,GAAGC,UAAU,CAACF,QAAQ,CAACx2B,IAAT,CAAc,GAAd,CAAD,CAAV,GAAiC02B,UAAU,CAACF,QAAQ,CAACx2B,IAAT,CAAc,OAAd,CAAD,CAA/D,CApBwC,CAsBxC;;AACAs1B,MAAAA,aAAa,CAACE,EAAd,CAAiBx1B,IAAjB,CACE,WADF,EAEE,gBAAgBy2B,WAAW,GAAGtC,YAA9B,IAA8C,GAA9C,GAAoDoC,MAApD,GAA6D,GAF/D,EAvBwC,CA4BxC;;AACA,UAAMI,QAAQ,GAAG3C,SAAS,CACvBr0B,MADc,CACP,MADO,EACC,MAAM21B,aAAa,CAACE,EAAd,CAAiBtyB,IAAjB,GAAwBxD,EAD/B,EAEdM,IAFc,CAET,OAFS,eAEMs2B,WAFN,GAGdt2B,IAHc,CAGT,MAHS,EAGD0B,IAAI,CAACwgB,IAHJ,EAIdliB,IAJc,CAIT,cAJS,EAIO,MAJP,EAKdA,IALc,CAKT,QALS,EAKC0B,IAAI,CAACugB,MALN,EAMdjiB,IANc,CAMT,GANS,EAMJy2B,WANI,EAOdz2B,IAPc,CAOT,GAPS,EAOJq2B,YAPI,EAQdr2B,IARc,CAQT,OARS,EAQA00B,YAAY,GAAGP,YAAY,GAAG,CAA9B,GAAkCiC,gBARlC,EASdp2B,IATc,CAST,QATS,EASCs1B,aAAa,CAAClxB,MAAd,GAAuB8vB,aAAa,GAAG,CATxC,CAAjB;AAWA,UAAI0C,wBAAwB,GAC1BF,UAAU,CAACC,QAAQ,CAAC32B,IAAT,CAAc,GAAd,CAAD,CAAV,GAAiC02B,UAAU,CAACC,QAAQ,CAAC32B,IAAT,CAAc,OAAd,CAAD,CAD7C;;AAGA,UAAIu0B,UAAJ,EAAgB;AACd;AACAe,QAAAA,aAAa,CAACO,EAAd,CAAiB71B,IAAjB,CACE,WADF,EAEE,gBAAgB42B,wBAAwB,GAAGzC,YAA3C,IAA2D,GAA3D,GAAiEoC,MAAjE,GAA0E,GAF5E,EAFc,CAOd;;AACA,YAAMM,WAAW,GAAG7C,SAAS,CAC1Br0B,MADiB,CACV,MADU,EACF,MAAM21B,aAAa,CAACO,EAAd,CAAiB3yB,IAAjB,GAAwBxD,EAD5B,EAEjBM,IAFiB,CAEZ,OAFY,eAEGs2B,WAFH,GAGjBt2B,IAHiB,CAGZ,MAHY,EAGJ0B,IAAI,CAACwgB,IAHD,EAIjBliB,IAJiB,CAIZ,cAJY,EAII,MAJJ,EAKjBA,IALiB,CAKZ,QALY,EAKF0B,IAAI,CAACugB,MALH,EAMjBjiB,IANiB,CAMZ,GANY,EAMP42B,wBANO,EAOjB52B,IAPiB,CAOZ,GAPY,EAOPq2B,YAPO,EAQjBr2B,IARiB,CAQZ,OARY,EAQH20B,WAAW,GAAGR,YAAY,GAAG,CAA7B,GAAiCiC,gBAR9B,EASjBp2B,IATiB,CASZ,QATY,EASFs1B,aAAa,CAAClxB,MAAd,GAAuB8vB,aAAa,GAAG,CATrC,CAApB;AAWA0C,QAAAA,wBAAwB,GACtBF,UAAU,CAACG,WAAW,CAAC72B,IAAZ,CAAiB,GAAjB,CAAD,CAAV,GAAoC02B,UAAU,CAACG,WAAW,CAAC72B,IAAZ,CAAiB,OAAjB,CAAD,CADhD;AAED;;AAED,UAAIw0B,UAAJ,EAAgB;AACd;AACAc,QAAAA,aAAa,CAACU,EAAd,CAAiBh2B,IAAjB,CACE,WADF,EAEE,gBAAgB42B,wBAAwB,GAAGzC,YAA3C,IAA2D,GAA3D,GAAiEoC,MAAjE,GAA0E,GAF5E,EAFc,CAOd;;AACAvC,QAAAA,SAAS,CACNr0B,MADH,CACU,MADV,EACkB,MAAM21B,aAAa,CAACU,EAAd,CAAiB9yB,IAAjB,GAAwBxD,EADhD,EAEGM,IAFH,CAEQ,OAFR,eAEuBs2B,WAFvB,GAGGt2B,IAHH,CAGQ,MAHR,EAGgB0B,IAAI,CAACwgB,IAHrB,EAIGliB,IAJH,CAIQ,cAJR,EAIwB,MAJxB,EAKGA,IALH,CAKQ,QALR,EAKkB0B,IAAI,CAACugB,MALvB,EAMGjiB,IANH,CAMQ,GANR,EAMa42B,wBANb,EAOG52B,IAPH,CAOQ,GAPR,EAOaq2B,YAPb,EAQGr2B,IARH,CAQQ,OARR,EAQiB40B,eAAe,GAAGT,YAAY,GAAG,CAAjC,GAAqCiC,gBARtD,EASGp2B,IATH,CASQ,QATR,EASkBs1B,aAAa,CAAClxB,MAAd,GAAuB8vB,aAAa,GAAG,CATzD;AAUD,OApFuC,CAsFxC;;;AACAmC,MAAAA,YAAY,IAAIf,aAAa,CAAClxB,MAAd,GAAuB8vB,aAAa,GAAG,CAAvD,CAvFwC,CAyFxC;;AACAoC,MAAAA,WAAW,GAAGA,WAAW,IAAI,iBAAf,GAAmC,kBAAnC,GAAwD,iBAAtE;AACD,KA3FD;AA4FD,GA7GD,MA6GO;AACL;AACAH,IAAAA,IAAI,CAAC/xB,MAAL,GAAcoG,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACqgB,eAAd,EAA+B8S,gBAA/B,CAAd,CAFK,CAIL;;AACAZ,IAAAA,cAAc,CAACj0B,IAAf,CAAoB,WAApB,EAAiC,eAAem2B,IAAI,CAAChyB,KAAL,GAAa,CAA5B,GAAgC,GAAhC,GAAsCgyB,IAAI,CAAC/xB,MAAL,GAAc,CAApD,GAAwD,GAAzF;AACD;;AAED,SAAO+xB,IAAP;AACD,CAvQD;AAyQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMW,YAAY,GAAG,SAAfA,YAAe,CAAUC,OAAV,EAAmBzF,QAAnB,EAA6BhlB,KAA7B,EAAoC;AACvD,MAAMrK,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYqvB,QAAZ,CAAb;AACA,MAAI0F,QAAJ;AAEA/0B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUzC,EAAV,EAAc;AACzB;AACA,QAAMs0B,SAAS,GAAG+C,OAAO,CAACzxB,MAAR,CAAe,GAAf,EAAoBtF,IAApB,CAAyB,IAAzB,EAA+BN,EAA/B,CAAlB;AAEAs3B,IAAAA,QAAQ,GAAGA,QAAQ,KAAKtzB,SAAb,GAAyBhE,EAAzB,GAA8Bs3B,QAAzC,CAJyB,CAMzB;AACA;;AACA,QAAMC,MAAM,GAAG,YAAYv3B,EAA3B;AACA,QAAMw3B,QAAQ,GAAGlD,SAAS,CACvB1uB,MADc,CACP,MADO,EAEdtF,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,EAGHi3B,MAHG,EAIdj3B,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,QAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkB+B,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6Df,IAAI,CAAC4d,QAAlE,GAA6E,IAVhE,EAYdrf,IAZc,CAYTP,EAZS,CAAjB;;AAcA,0BAAqDq0B,cAAc,CACjEC,SADiE,EAEjEkD,QAFiE,EAGjE5F,QAAQ,CAAC5xB,EAAD,CAAR,CAAauyB,UAHoD,CAAnE;AAAA,QAAekF,WAAf,mBAAQhzB,KAAR;AAAA,QAAoCizB,YAApC,mBAA4BhzB,MAA5B,CAvByB,CA6BzB;;;AACA,QAAMizB,QAAQ,GAAGrD,SAAS,CACvBr0B,MADc,CACP,MADO,EACC,MAAMs3B,MADP,EAEdj3B,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,MAHS,EAGD0B,IAAI,CAACwgB,IAHJ,EAIdliB,IAJc,CAIT,cAJS,EAIO,MAJP,EAKdA,IALc,CAKT,QALS,EAKC0B,IAAI,CAACugB,MALN,EAMdjiB,IANc,CAMT,GANS,EAMJ,CANI,EAOdA,IAPc,CAOT,GAPS,EAOJ,CAPI,EAQdA,IARc,CAQT,OARS,EAQAm3B,WARA,EASdn3B,IATc,CAST,QATS,EASCo3B,YATD,CAAjB;AAWA,QAAME,QAAQ,GAAGD,QAAQ,CAACn0B,IAAT,GAAgBU,OAAhB,EAAjB,CAzCyB,CA2CzB;;AACA0I,IAAAA,KAAK,CAAC0D,OAAN,CAActQ,EAAd,EAAkB;AAChByE,MAAAA,KAAK,EAAEmzB,QAAQ,CAACnzB,KADA;AAEhBC,MAAAA,MAAM,EAAEkzB,QAAQ,CAAClzB,MAFD;AAGhBwB,MAAAA,KAAK,EAAE,MAHS;AAIhBlG,MAAAA,EAAE,EAAEA;AAJY,KAAlB;AAMD,GAlDD;AAmDA,SAAOs3B,QAAP;AACD,CAxDD,EAwDG;;;AAEH,IAAMO,cAAc,GAAG,SAAjBA,cAAiB,CAAUR,OAAV,EAAmBzqB,KAAnB,EAA0B;AAC/CA,EAAAA,KAAK,CAACmD,KAAN,GAActN,OAAd,CAAsB,UAAUsK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpEsqB,MAAAA,OAAO,CACJj0B,MADH,CACU,MAAM2J,CADhB,EAEGzM,IAFH,CAGI,WAHJ,EAII,gBACGsM,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc5H,CAAd,GAAkByH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAActI,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGmI,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc3H,CAAd,GAAkBwH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAcrI,MAAd,GAAuB,CAH5C,IAIE,IARN;AAUD;AACF,GAbD;AAcA;AACD,CAhBD;;AAkBA,IAAMozB,WAAW,GAAG,SAAdA,WAAc,CAAU3E,GAAV,EAAe;AACjC,SAAO,CAACA,GAAG,CAACC,OAAJ,GAAcD,GAAG,CAACE,KAAlB,GAA0BF,GAAG,CAACG,OAA/B,EAAwC7rB,OAAxC,CAAgD,KAAhD,EAAuD,EAAvD,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMswB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUlG,aAAV,EAAyB9H,CAAzB,EAA4B;AACnD8H,EAAAA,aAAa,CAACpvB,OAAd,CAAsB,UAAU8I,CAAV,EAAa;AACjCwe,IAAAA,CAAC,CAACvU,OAAF,CAAUjK,CAAC,CAAC6nB,OAAZ,EAAqB7nB,CAAC,CAAC+nB,OAAvB,EAAgC;AAAE0E,MAAAA,YAAY,EAAEzsB;AAAhB,KAAhC,EAAqDusB,WAAW,CAACvsB,CAAD,CAAhE;AACD,GAFD;AAGA,SAAOsmB,aAAP;AACD,CALD,EAKG;;;AAEH,IAAIoG,MAAM,GAAG,CAAb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAUn4B,GAAV,EAAeozB,GAAf,EAAoBpJ,CAApB,EAAuB9pB,MAAvB,EAA+B;AAChEg4B,EAAAA,MAAM,GAD0D,CAGhE;;AACA,MAAMpvB,IAAI,GAAGkhB,CAAC,CAAClhB,IAAF,CAAOsqB,GAAG,CAACC,OAAX,EAAoBD,GAAG,CAACG,OAAxB,EAAiCwE,WAAW,CAAC3E,GAAD,CAA5C,CAAb,CAJgE,CAMhE;;AACA,MAAMxlB,YAAY,GAAGpF,wCAAI,GACtBpD,CADkB,CAChB,UAAUzD,CAAV,EAAa;AACd,WAAOA,CAAC,CAACyD,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU1D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC0D,CAAT;AACD,GANkB,EAOlBsI,KAPkB,CAOZlF,0CAPY,CAArB,CAPgE,CAgBhE;;AACA,MAAMuF,OAAO,GAAGhO,GAAG,CAChBE,MADa,CACN,MADM,EACE,MAAMA,MADR,EAEbK,IAFa,CAER,OAFQ,EAEC,qBAFD,EAGbA,IAHa,CAGR,GAHQ,EAGHqN,YAAY,CAAC9E,IAAI,CAACoD,MAAN,CAHT,EAIb3L,IAJa,CAIR,QAJQ,EAIE0B,IAAI,CAACugB,MAJP,EAKbjiB,IALa,CAKR,MALQ,EAKA,MALA,CAAhB,CAjBgE,CAwBhE;;AACA,MAAI6yB,GAAG,CAACI,OAAJ,CAAY4E,OAAZ,KAAwBjE,4EAA5B,EAAiE;AAC/DnmB,IAAAA,OAAO,CAACzN,IAAR,CAAa,kBAAb,EAAiC,KAAjC;AACD,GA3B+D,CA6BhE;;;AACA,MAAI0N,GAAG,GAAG,EAAV;;AACA,MAAIhM,IAAI,CAACkM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD,GAxC+D,CA0ChE;AACA;AAEA;;;AACA,UAAQ0rB,GAAG,CAACI,OAAJ,CAAY6E,KAApB;AACE,SAAKlE,qEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CAAa,YAAb,EAA2B,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,4EAArB,GAA2D,GAAtF;AACA;;AACF,SAAKF,sEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CAAa,YAAb,EAA2B,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,6EAArB,GAA4D,GAAvF;AACA;;AACF,SAAKF,qEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CAAa,YAAb,EAA2B,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,4EAArB,GAA2D,GAAtF;AACA;;AACF,SAAKF,kEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CAAa,YAAb,EAA2B,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,yEAArB,GAAwD,GAAnF;AACA;AAZJ;;AAeA,UAAQjB,GAAG,CAACI,OAAJ,CAAY8E,KAApB;AACE,SAAKnE,qEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CACE,cADF,EAEE,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,8EAArB,GAA6D,GAF/D;AAIA;;AACF,SAAKF,sEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CACE,cADF,EAEE,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,+EAArB,GAA8D,GAFhE;AAIA;;AACF,SAAKF,qEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CACE,cADF,EAEE,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,8EAArB,GAA6D,GAF/D;AAIA;;AACF,SAAKF,kEAAL;AACEnmB,MAAAA,OAAO,CAACzN,IAAR,CAAa,cAAb,EAA6B,SAAS0N,GAAT,GAAe,GAAf,GAAqBomB,2EAArB,GAA0D,GAAvF;AACA;AArBJ,GA7DgE,CAqFhE;AAEA;;;AACA,MAAMkE,GAAG,GAAGvqB,OAAO,CAACvK,IAAR,GAAe+0B,cAAf,EAAZ;AACA,MAAMC,UAAU,GAAGzqB,OAAO,CAACvK,IAAR,GAAei1B,gBAAf,CAAgCH,GAAG,GAAG,GAAtC,CAAnB,CAzFgE,CA2FhE;;AACA,MAAMI,OAAO,GAAG,QAAQT,MAAxB;AAEA,MAAMU,SAAS,GAAG54B,GAAG,CAClB6F,MADe,CACR,MADQ,EAEftF,IAFe,CAEV,OAFU,EAED,sBAFC,EAGfA,IAHe,CAGV,IAHU,EAGJo4B,OAHI,EAIfp4B,IAJe,CAIV,GAJU,EAILk4B,UAAU,CAACrzB,CAJN,EAKf7E,IALe,CAKV,GALU,EAKLk4B,UAAU,CAACpzB,CALN,EAMf9E,IANe,CAMV,aANU,EAMK,QANL,EAOfA,IAPe,CAOV,mBAPU,EAOW,QAPX,EAQfA,IARe,CASd,OATc,EAUd,kBAAkB+B,kDAAS,GAAGU,UAA9B,GAA2C,eAA3C,GAA6Df,IAAI,CAAC4d,QAAlE,GAA6E,IAV/D,EAYfrf,IAZe,CAYV4yB,GAAG,CAACE,KAZM,CAAlB,CA9FgE,CA4GhE;;AACA,MAAMsB,SAAS,GAAGgE,SAAS,CAACn1B,IAAV,GAAiBU,OAAjB,EAAlB,CA7GgE,CA+GhE;;AACAnE,EAAAA,GAAG,CACAE,MADH,CACU,MADV,EACkB,MAAMy4B,OADxB,EAEGp4B,IAFH,CAEQ,OAFR,EAEiB,yBAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGak4B,UAAU,CAACrzB,CAAX,GAAewvB,SAAS,CAAClwB,KAAV,GAAkB,CAH9C,EAIGnE,IAJH,CAIQ,GAJR,EAIak4B,UAAU,CAACpzB,CAAX,GAAeuvB,SAAS,CAACjwB,MAAV,GAAmB,CAJ/C,EAKGpE,IALH,CAKQ,OALR,EAKiBq0B,SAAS,CAAClwB,KAL3B,EAMGnE,IANH,CAMQ,QANR,EAMkBq0B,SAAS,CAACjwB,MAN5B,EAOGpE,IAPH,CAOQ,MAPR,EAOgB,OAPhB,EAQGA,IARH,CAQQ,cARR,EAQwB,KARxB;AAUA;AACD,CA3HD;AA6HA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMmrB,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCS,EAAAA,6CAAA,CAAS,oBAAT;AACAyzB,EAAAA,mDAAA;AACA,MAAM5K,MAAM,GAAG6K,iEAAf;AACA7K,EAAAA,MAAM,CAACM,EAAP,GAAYsK,6CAAZ;AACA,MAAMvX,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CALsC,CAMtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF,CAfsC,CAiBtC;;AACA,MAAI;AACFqiB,IAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb;AACD,GAFD,CAEE,OAAOivB,GAAP,EAAY;AACZ/uB,IAAAA,8CAAA,CAAU,gBAAV;AACD,GAtBqC,CAwBtC;;;AACA,MAAMV,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,gBAAoBpD,EAApB,QAAZ,CAzBsC,CA2BtC;;AACAo0B,EAAAA,gEAAA,CAAwBr0B,GAAxB,EAA6BiC,IAA7B,EA5BsC,CA8BtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,MAAI+nB,CAAJ,CA7CsC,CA+CtC;AACA;AACA;AACA;AACA;;AACAA,EAAAA,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AACrBgI,IAAAA,UAAU,EAAE,IADS;AAErBkiB,IAAAA,QAAQ,EAAE,IAFW;AAGrBjiB,IAAAA,QAAQ,EAAE;AAHW,GAAnB,EAKDC,QALC,CAKQ;AACR9G,IAAAA,OAAO,EAAE9N,IAAI,CAACmgB,eADN;AAERpL,IAAAA,OAAO,EAAE,EAFD;AAGRC,IAAAA,OAAO,EAAE,EAHD;AAIRH,IAAAA,OAAO,EAAE,GAJD;AAKRgiB,IAAAA,OAAO,EAAE,GALD;AAMR/hB,IAAAA,OAAO,EAAE;AAND,GALR,EAaDG,mBAbC,CAamB,YAAY;AAC/B,WAAO,EAAP;AACD,GAfC,CAAJ,CApDsC,CAqEtC;AACA;;AACA,MAAM6hB,WAAW,GAAG1B,YAAY,CAACr3B,GAAD,EAAMm0B,yDAAA,EAAN,EAA0BnK,CAA1B,CAAhC,CAvEsC,CAyEtC;AAEA;;AACA,MAAM8H,aAAa,GAAGkG,gBAAgB,CAAC7D,8DAAA,EAAD,EAA0BnK,CAA1B,CAAtC;AAEAtb,EAAAA,mDAAA,CAAasb,CAAb,EA9EsC,CA8ErB;AAEjB;;AACA8N,EAAAA,cAAc,CAAC93B,GAAD,EAAMgqB,CAAN,CAAd,CAjFsC,CAmFtC;;AACA8H,EAAAA,aAAa,CAACpvB,OAAd,CAAsB,UAAU0wB,GAAV,EAAe;AACnC+E,IAAAA,0BAA0B,CAACn4B,GAAD,EAAMozB,GAAN,EAAWpJ,CAAX,EAAc+O,WAAd,CAA1B;AACD,GAFD;AAIA,MAAMn0B,OAAO,GAAG3C,IAAI,CAACyb,cAArB;AAEA,MAAMoO,SAAS,GAAG9rB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAglB,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAM2E,MAAN,EAAcD,KAAd,EAAqBzC,IAAI,CAAC4b,WAA1B,CAAhB;AAEA7d,EAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,YAAuBurB,SAAS,CAAC1mB,CAAV,GAAcR,OAArC,cAAgDknB,SAAS,CAACzmB,CAAV,GAAcT,OAA9D,cAAyEF,KAAzE,cAAkFC,MAAlF;AAEA7E,EAAAA,0DAAyB,CAACypB,MAAM,CAACM,EAAR,EAAY7pB,GAAZ,EAAiBC,EAAjB,CAAzB;AACD,CAnGM,EAmGJ;;AAEH,iEAAe;AACburB,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACpoBA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,+CAGNA,OAAO,CAAC0qB,OAHF,4BAIJ1qB,OAAO,CAACwqB,UAJJ,6EASJxqB,OAAO,CAACwqB,UATJ,8EAcJxqB,OAAO,CAACwqB,UAdJ,4DAkBNxqB,OAAO,CAACy2B,aAlBF,yDAoBMz2B,OAAO,CAACy2B,aApBd,4GA2BFz2B,OAAO,CAAC2qB,SA3BN;AAAA,CAAlB;;AA+BA,iEAAeJ,SAAf;;;;;;;;;;;;;;;;;;;AC/BA;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASnV,QAAT,CAAkBnU,MAAlB,EAA0BU,IAA1B,EAAgCT,IAAhC,EAAsC;AACpC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMgD,CAAC,GAAG,CAACuD,CAAC,GAAGC,CAAL,IAAU,GAApB;AACA,MAAMe,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAEuC,CAAC,GAAG,CAAT;AAAYtC,IAAAA,CAAC,EAAE;AAAf,GADa,EAEb;AAAED,IAAAA,CAAC,EAAEuC,CAAL;AAAQtC,IAAAA,CAAC,EAAE,CAACsC,CAAD,GAAK;AAAhB,GAFa,EAGb;AAAEvC,IAAAA,CAAC,EAAEuC,CAAC,GAAG,CAAT;AAAYtC,IAAAA,CAAC,EAAE,CAACsC;AAAhB,GAHa,EAIb;AAAEvC,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAACsC,CAAD,GAAK;AAAhB,GAJa,CAAf;AAMA,MAAMhE,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAASmE,CAAT,EAAYA,CAAZ,EAAeuE,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASsU,OAAT,CAAiBzU,MAAjB,EAAyBU,IAAzB,EAA+BT,IAA/B,EAAqC;AACnC,MAAMyU,CAAC,GAAG,CAAV;AACA,MAAM/M,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMwT,CAAC,GAAGhN,CAAC,GAAG+M,CAAd;AACA,MAAMhN,CAAC,GAAGhH,IAAI,CAACQ,KAAL,GAAa,IAAIyT,CAA3B;AACA,MAAMjM,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAE+S,CAAL;AAAQ9S,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAGiN,CAAT;AAAY9S,IAAAA,CAAC,EAAE;AAAf,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAL;AAAQ7F,IAAAA,CAAC,EAAE,CAAC8F,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE8F,CAAC,GAAGiN,CAAT;AAAY9S,IAAAA,CAAC,EAAE,CAAC8F;AAAhB,GAJa,EAKb;AAAE/F,IAAAA,CAAC,EAAE+S,CAAL;AAAQ9S,IAAAA,CAAC,EAAE,CAAC8F;AAAZ,GALa,EAMb;AAAE/F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC8F,CAAD,GAAK;AAAhB,GANa,CAAf;AAQA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS0U,mBAAT,CAA6B7U,MAA7B,EAAqCU,IAArC,EAA2CT,IAA3C,EAAiD;AAC/C,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAE,CAAC+F,CAAD,GAAK,CAAV;AAAa9F,IAAAA,CAAC,EAAE;AAAhB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAL;AAAQ7F,IAAAA,CAAC,EAAE;AAAX,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAL;AAAQ7F,IAAAA,CAAC,EAAE,CAAC8F;AAAZ,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE,CAAC+F,CAAD,GAAK,CAAV;AAAa9F,IAAAA,CAAC,EAAE,CAAC8F;AAAjB,GAJa,EAKb;AAAE/F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC8F,CAAD,GAAK;AAAhB,GALa,CAAf;AAOA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS2U,UAAT,CAAoB9U,MAApB,EAA4BU,IAA5B,EAAkCT,IAAlC,EAAwC;AACtC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK+F,CAAN,GAAW,CAAhB;AAAmB9F,IAAAA,CAAC,EAAE;AAAtB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB9F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB9F,IAAAA,CAAC,EAAE,CAAC8F;AAA1B,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE+F,CAAC,GAAG,CAAT;AAAY9F,IAAAA,CAAC,EAAE,CAAC8F;AAAhB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS4U,SAAT,CAAmB/U,MAAnB,EAA2BU,IAA3B,EAAiCT,IAAjC,EAAuC;AACrC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAG,IAAI+F,CAAL,GAAU,CAAf;AAAkB9F,IAAAA,CAAC,EAAE;AAArB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB9F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB9F,IAAAA,CAAC,EAAE,CAAC8F;AAA1B,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE,CAAC+F,CAAD,GAAK,CAAV;AAAa9F,IAAAA,CAAC,EAAE,CAAC8F;AAAjB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS6U,SAAT,CAAmBhV,MAAnB,EAA2BU,IAA3B,EAAiCT,IAAjC,EAAuC;AACrC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK+F,CAAN,GAAW,CAAhB;AAAmB9F,IAAAA,CAAC,EAAE;AAAtB,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB9F,IAAAA,CAAC,EAAE;AAAzB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB9F,IAAAA,CAAC,EAAE,CAAC8F;AAApB,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE+F,CAAC,GAAG,CAAT;AAAY9F,IAAAA,CAAC,EAAE,CAAC8F;AAAhB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS8U,aAAT,CAAuBjV,MAAvB,EAA+BU,IAA/B,EAAqCT,IAArC,EAA2C;AACzC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAE+F,CAAC,GAAG,CAAT;AAAY9F,IAAAA,CAAC,EAAE;AAAf,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB9F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAI,IAAIC,CAAL,GAAU,CAAnB;AAAsB9F,IAAAA,CAAC,EAAE,CAAC8F;AAA1B,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAG,CAAC,CAAD,GAAK+F,CAAN,GAAW,CAAhB;AAAmB9F,IAAAA,CAAC,EAAE,CAAC8F;AAAvB,GAJa,CAAf;AAMA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS+U,oBAAT,CAA8BlV,MAA9B,EAAsCU,IAAtC,EAA4CT,IAA5C,EAAkD;AAChD,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB9F,IAAAA,CAAC,EAAE;AAAnB,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAL;AAAQ7F,IAAAA,CAAC,EAAE,CAAC8F,CAAD,GAAK;AAAhB,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE8F,CAAC,GAAGC,CAAC,GAAG,CAAb;AAAgB9F,IAAAA,CAAC,EAAE,CAAC8F;AAApB,GAJa,EAKb;AAAE/F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC8F;AAAZ,GALa,CAAf;AAOA,MAAMxH,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASsW,OAAT,CAAiBzW,MAAjB,EAAyBU,IAAzB,EAA+BT,IAA/B,EAAqC;AACnC,MAAM0H,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuG,CAAC,GAAGhH,IAAI,CAACQ,KAAL,GAAayG,CAAC,GAAG,CAA3B;AAEA,MAAMxH,QAAQ,GAAGH,MAAM,CACpBtD,MADc,CACP,MADO,EACC,cADD,EAEdK,IAFc,CAET,IAFS,EAEH4K,CAAC,GAAG,CAFD,EAGd5K,IAHc,CAGT,IAHS,EAGH4K,CAAC,GAAG,CAHD,EAId5K,IAJc,CAIT,GAJS,EAIJ,CAAC2K,CAAD,GAAK,CAJD,EAKd3K,IALc,CAKT,GALS,EAKJ,CAAC4K,CAAD,GAAK,CALD,EAMd5K,IANc,CAMT,OANS,EAMA2K,CANA,EAOd3K,IAPc,CAOT,QAPS,EAOC4K,CAPD,CAAjB;;AASA1H,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,8DAAA,CAAuBx1B,IAAvB,EAA6B+B,KAA7B,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS4W,UAAT,CAAoB/W,MAApB,EAA4BU,IAA5B,EAAkCT,IAAlC,EAAwC;AACtC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMyG,CAAC,GAAGjH,IAAI,CAACS,MAAf;AACA,MAAMuH,MAAM,GAAG,CACb;AAAE9G,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GADa,EAEb;AAAED,IAAAA,CAAC,EAAE8F,CAAL;AAAQ7F,IAAAA,CAAC,EAAE;AAAX,GAFa,EAGb;AAAED,IAAAA,CAAC,EAAE8F,CAAL;AAAQ7F,IAAAA,CAAC,EAAE,CAAC8F;AAAZ,GAHa,EAIb;AAAE/F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAC8F;AAAZ,GAJa,EAKb;AAAE/F,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GALa,EAMb;AAAED,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE;AAAZ,GANa,EAOb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAG,CAAT;AAAY7F,IAAAA,CAAC,EAAE;AAAf,GAPa,EAQb;AAAED,IAAAA,CAAC,EAAE8F,CAAC,GAAG,CAAT;AAAY7F,IAAAA,CAAC,EAAE,CAAC8F;AAAhB,GARa,EASb;AAAE/F,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE,CAAC8F;AAAb,GATa,EAUb;AAAE/F,IAAAA,CAAC,EAAE,CAAC,CAAN;AAASC,IAAAA,CAAC,EAAE;AAAZ,GAVa,CAAf;AAYA,MAAM1B,QAAQ,GAAG6T,kBAAkB,CAAChU,MAAD,EAAS0H,CAAT,EAAYC,CAAZ,EAAee,MAAf,CAAnC;;AACAzI,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,WAAOyzB,iEAAA,CAA0Bx1B,IAA1B,EAAgCyI,MAAhC,EAAwC1G,KAAxC,CAAP;AACD,GAFD;;AAGA,SAAO7B,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASgV,QAAT,CAAkBnV,MAAlB,EAA0BU,IAA1B,EAAgCT,IAAhC,EAAsC;AACpC,MAAMyH,CAAC,GAAGhH,IAAI,CAACQ,KAAf;AACA,MAAMQ,EAAE,GAAGgG,CAAC,GAAG,CAAf;AACA,MAAM/F,EAAE,GAAGD,EAAE,IAAI,MAAMgG,CAAC,GAAG,EAAd,CAAb;AACA,MAAMC,CAAC,GAAGjH,IAAI,CAACS,MAAL,GAAcQ,EAAxB;AAEA,MAAMgB,KAAK,GACT,SACAhB,EADA,GAEA,KAFA,GAGAD,EAHA,GAIA,GAJA,GAKAC,EALA,GAMA,SANA,GAOA+F,CAPA,GAQA,OARA,GASAhG,EATA,GAUA,GAVA,GAWAC,EAXA,GAYA,SAZA,GAaA,CAAC+F,CAbD,GAcA,SAdA,GAeAC,CAfA,GAgBA,KAhBA,GAiBAjG,EAjBA,GAkBA,GAlBA,GAmBAC,EAnBA,GAoBA,SApBA,GAqBA+F,CArBA,GAsBA,SAtBA,GAuBA,CAACC,CAxBH;AA0BA,MAAMxH,QAAQ,GAAGH,MAAM,CACpBjD,IADc,CACT,gBADS,EACS4E,EADT,EAEdjF,MAFc,CAEP,MAFO,EAEC,cAFD,EAGdK,IAHc,CAGT,GAHS,EAGJ4F,KAHI,EAId5F,IAJc,CAIT,WAJS,EAII,eAAe,CAAC2K,CAAD,GAAK,CAApB,GAAwB,GAAxB,GAA8B,EAAEC,CAAC,GAAG,CAAJ,GAAQhG,EAAV,CAA9B,GAA8C,GAJlD,CAAjB;;AAMA1B,EAAAA,IAAI,CAAC8B,SAAL,GAAiB,UAAUC,KAAV,EAAiB;AAChC,QAAMgF,GAAG,GAAGyuB,8DAAA,CAAuBx1B,IAAvB,EAA6B+B,KAA7B,CAAZ;AACA,QAAMJ,CAAC,GAAGoF,GAAG,CAACpF,CAAJ,GAAQ3B,IAAI,CAAC2B,CAAvB;;AAEA,QACEF,EAAE,IAAI,CAAN,KACC6F,IAAI,CAACC,GAAL,CAAS5F,CAAT,IAAc3B,IAAI,CAACiB,KAAL,GAAa,CAA3B,IACEqG,IAAI,CAACC,GAAL,CAAS5F,CAAT,KAAe3B,IAAI,CAACiB,KAAL,GAAa,CAA5B,IAAiCqG,IAAI,CAACC,GAAL,CAASR,GAAG,CAACnF,CAAJ,GAAQ5B,IAAI,CAAC4B,CAAtB,IAA2B5B,IAAI,CAACkB,MAAL,GAAc,CAAd,GAAkBQ,EAFjF,CADF,EAIE;AACA;AACA;AACA,UAAIE,CAAC,GAAGF,EAAE,GAAGA,EAAL,IAAW,IAAKC,CAAC,GAAGA,CAAL,IAAWF,EAAE,GAAGA,EAAhB,CAAf,CAAR;AACA,UAAIG,CAAC,IAAI,CAAT,EAAYA,CAAC,GAAG0F,IAAI,CAAC6G,IAAL,CAAUvM,CAAV,CAAJ;AACZA,MAAAA,CAAC,GAAGF,EAAE,GAAGE,CAAT;AACA,UAAIG,KAAK,CAACH,CAAN,GAAU5B,IAAI,CAAC4B,CAAf,GAAmB,CAAvB,EAA0BA,CAAC,GAAG,CAACA,CAAL;AAE1BmF,MAAAA,GAAG,CAACnF,CAAJ,IAASA,CAAT;AACD;;AAED,WAAOmF,GAAP;AACD,GApBD;;AAsBA,SAAO7G,QAAP;AACD;AAED;;;AACO,SAASu1B,WAAT,CAAqBloB,MAArB,EAA6B;AAClCA,EAAAA,MAAM,CAACjL,MAAP,GAAgB4R,QAAhB,GAA2BA,QAA3B;AACA3G,EAAAA,MAAM,CAACjL,MAAP,GAAgBkS,OAAhB,GAA0BA,OAA1B;AACAjH,EAAAA,MAAM,CAACjL,MAAP,GAAgBkU,OAAhB,GAA0BA,OAA1B;AACAjJ,EAAAA,MAAM,CAACjL,MAAP,GAAgBwU,UAAhB,GAA6BA,UAA7B;AACAvJ,EAAAA,MAAM,CAACjL,MAAP,GAAgB4S,QAAhB,GAA2BA,QAA3B,CALkC,CAOlC;;AACA3H,EAAAA,MAAM,CAACjL,MAAP,GAAgBsS,mBAAhB,GAAsCA,mBAAtC,CARkC,CAUlC;;AACArH,EAAAA,MAAM,CAACjL,MAAP,GAAgBuS,UAAhB,GAA6BA,UAA7B,CAXkC,CAalC;;AACAtH,EAAAA,MAAM,CAACjL,MAAP,GAAgBwS,SAAhB,GAA4BA,SAA5B,CAdkC,CAgBlC;;AACAvH,EAAAA,MAAM,CAACjL,MAAP,GAAgByS,SAAhB,GAA4BA,SAA5B,CAjBkC,CAmBlC;;AACAxH,EAAAA,MAAM,CAACjL,MAAP,GAAgB0S,aAAhB,GAAgCA,aAAhC,CApBkC,CAsBlC;;AACAzH,EAAAA,MAAM,CAACjL,MAAP,GAAgB2S,oBAAhB,GAAuCA,oBAAvC;AACD;AAED;;AACO,SAASygB,aAAT,CAAuBC,QAAvB,EAAiC;AACtCA,EAAAA,QAAQ,CAAC;AAAEzhB,IAAAA,QAAQ,EAARA;AAAF,GAAD,CAAR;AACAyhB,EAAAA,QAAQ,CAAC;AAAEnhB,IAAAA,OAAO,EAAPA;AAAF,GAAD,CAAR;AACAmhB,EAAAA,QAAQ,CAAC;AAAEnf,IAAAA,OAAO,EAAPA;AAAF,GAAD,CAAR;AACAmf,EAAAA,QAAQ,CAAC;AAAE7e,IAAAA,UAAU,EAAVA;AAAF,GAAD,CAAR;AACA6e,EAAAA,QAAQ,CAAC;AAAEzgB,IAAAA,QAAQ,EAARA;AAAF,GAAD,CAAR,CALsC,CAOtC;;AACAygB,EAAAA,QAAQ,CAAC;AAAE/gB,IAAAA,mBAAmB,EAAnBA;AAAF,GAAD,CAAR,CARsC,CAUtC;;AACA+gB,EAAAA,QAAQ,CAAC;AAAE9gB,IAAAA,UAAU,EAAVA;AAAF,GAAD,CAAR,CAXsC,CAatC;;AACA8gB,EAAAA,QAAQ,CAAC;AAAE7gB,IAAAA,SAAS,EAATA;AAAF,GAAD,CAAR,CAdsC,CAgBtC;;AACA6gB,EAAAA,QAAQ,CAAC;AAAE5gB,IAAAA,SAAS,EAATA;AAAF,GAAD,CAAR,CAjBsC,CAmBtC;;AACA4gB,EAAAA,QAAQ,CAAC;AAAE3gB,IAAAA,aAAa,EAAbA;AAAF,GAAD,CAAR,CApBsC,CAsBtC;;AACA2gB,EAAAA,QAAQ,CAAC;AAAE1gB,IAAAA,oBAAoB,EAApBA;AAAF,GAAD,CAAR;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,SAASlB,kBAAT,CAA4BhU,MAA5B,EAAoC0H,CAApC,EAAuCC,CAAvC,EAA0Ce,MAA1C,EAAkD;AAChD,SAAO1I,MAAM,CACVtD,MADI,CACG,SADH,EACc,cADd,EAEJK,IAFI,CAGH,QAHG,EAIH2L,MAAM,CACH6L,GADH,CACO,UAAUpW,CAAV,EAAa;AAChB,WAAOA,CAAC,CAACyD,CAAF,GAAM,GAAN,GAAYzD,CAAC,CAAC0D,CAArB;AACD,GAHH,EAIG2S,IAJH,CAIQ,GAJR,CAJG,EAUJzX,IAVI,CAUC,WAVD,EAUc,eAAe,CAAC2K,CAAD,GAAK,CAApB,GAAwB,GAAxB,GAA8BC,CAAC,GAAG,CAAlC,GAAsC,GAVpD,CAAP;AAWD;;AAED,iEAAe;AACb+tB,EAAAA,WAAW,EAAXA,WADa;AAEbC,EAAAA,aAAa,EAAbA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClXA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMlV,qBAAqB,GAAG,YAA9B;AACA,IAAIoV,aAAa,GAAG,CAApB;AACA,IAAIz4B,MAAM,GAAGkjB,8CAAA,EAAb;AACA,IAAIwV,QAAQ,GAAG,EAAf;AACA,IAAIrpB,KAAK,GAAG,EAAZ;AACA,IAAItK,OAAO,GAAG,EAAd;AACA,IAAI4zB,SAAS,GAAG,EAAhB;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAIC,QAAQ,GAAG,CAAf;AACA,IAAIC,cAAc,GAAG,IAArB;AACA,IAAI5Q,SAAJ;AACA,IAAIlP,KAAK,GAAG,YAAZ;AACA,IAAIxZ,WAAW,GAAG,EAAlB;AAEA,IAAIu5B,OAAJ,EAAa;AAEb;;AACA,IAAIxV,IAAI,GAAG,EAAX;;AAEA,IAAM1d,YAAY,GAAG,SAAfA,YAAe,CAACE,GAAD;AAAA,SAASmd,mEAAA,CAAoBnd,GAApB,EAAyBhG,MAAzB,CAAT;AAAA,CAArB;;AAEO,IAAMyjB,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;;AAIP,IAAMmY,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AAC9BiT,EAAAA,KAAK,GAAGnT,YAAY,CAACE,GAAD,CAApB;AACD,CAFD;;AAIA,IAAMxG,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOyZ,KAAP;AACD,CAFD;;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AACvCvG,EAAAA,WAAW,GAAGqG,YAAY,CAACE,GAAD,CAA1B;AACD,CAFD;;AAIA,IAAMtG,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AACpC,SAAOD,WAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMykB,WAAW,GAAG,SAAdA,WAAc,CAAU7kB,EAAV,EAAc;AACvC,MAAM45B,WAAW,GAAG/4B,MAAM,CAAC0B,IAAP,CAAY82B,QAAZ,CAApB;;AACA,OAAK,IAAI73B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo4B,WAAW,CAACn4B,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC3C,QAAI63B,QAAQ,CAACO,WAAW,CAACp4B,CAAD,CAAZ,CAAR,CAAyBxB,EAAzB,KAAgCA,EAApC,EAAwC;AACtC,aAAOq5B,QAAQ,CAACO,WAAW,CAACp4B,CAAD,CAAZ,CAAR,CAAyBqW,KAAhC;AACD;AACF;;AACD,SAAO7X,EAAP;AACD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM65B,SAAS,GAAG,SAAZA,SAAY,CAAU/jB,GAAV,EAAevV,IAAf,EAAqBuQ,IAArB,EAA2B9L,KAA3B,EAAkCU,OAAlC,EAA2CmK,GAA3C,EAA4D;AAAA,MAAZgJ,KAAY,uEAAJ,EAAI;AACnF,MAAIlS,GAAJ;AACA,MAAI3G,EAAE,GAAG8V,GAAT;;AACA,MAAI,OAAO9V,EAAP,KAAc,WAAlB,EAA+B;AAC7B;AACD;;AACD,MAAIA,EAAE,CAACsI,IAAH,GAAU7G,MAAV,KAAqB,CAAzB,EAA4B;AAC1B;AACD,GARkF,CAUnF;;;AAEA,MAAI,OAAO43B,QAAQ,CAACr5B,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCq5B,IAAAA,QAAQ,CAACr5B,EAAD,CAAR,GAAe;AACbA,MAAAA,EAAE,EAAEA,EADS;AAEb6X,MAAAA,KAAK,EAAEmM,qBAAqB,GAAGhkB,EAAxB,GAA6B,GAA7B,GAAmCo5B,aAF7B;AAGblP,MAAAA,MAAM,EAAE,EAHK;AAIbxkB,MAAAA,OAAO,EAAE;AAJI,KAAf;AAMD;;AACD0zB,EAAAA,aAAa;;AACb,MAAI,OAAO74B,IAAP,KAAgB,WAApB,EAAiC;AAC/BI,IAAAA,MAAM,GAAGkjB,8CAAA,EAAT;AACAld,IAAAA,GAAG,GAAGF,YAAY,CAAClG,IAAI,CAAC+H,IAAL,EAAD,CAAlB,CAF+B,CAI/B;;AACA,QAAI3B,GAAG,CAAC,CAAD,CAAH,KAAW,GAAX,IAAkBA,GAAG,CAACA,GAAG,CAAClF,MAAJ,GAAa,CAAd,CAAH,KAAwB,GAA9C,EAAmD;AACjDkF,MAAAA,GAAG,GAAGA,GAAG,CAACuf,SAAJ,CAAc,CAAd,EAAiBvf,GAAG,CAAClF,MAAJ,GAAa,CAA9B,CAAN;AACD;;AAED43B,IAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAaO,IAAb,GAAoBoG,GAApB;AACD,GAVD,MAUO;AACL,QAAI,OAAO0yB,QAAQ,CAACr5B,EAAD,CAAR,CAAaO,IAApB,KAA6B,WAAjC,EAA8C;AAC5C84B,MAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAaO,IAAb,GAAoBuV,GAApB;AACD;AACF;;AACD,MAAI,OAAOhF,IAAP,KAAgB,WAApB,EAAiC;AAC/BuoB,IAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa8Q,IAAb,GAAoBA,IAApB;AACD;;AACD,MAAI,OAAO9L,KAAP,KAAiB,WAArB,EAAkC;AAChC,QAAIA,KAAK,KAAK,IAAd,EAAoB;AAClBA,MAAAA,KAAK,CAACvC,OAAN,CAAc,UAAUiF,CAAV,EAAa;AACzB2xB,QAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAakqB,MAAb,CAAoBlnB,IAApB,CAAyB0E,CAAzB;AACD,OAFD;AAGD;AACF;;AACD,MAAI,OAAOhC,OAAP,KAAmB,WAAvB,EAAoC;AAClC,QAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpBA,MAAAA,OAAO,CAACjD,OAAR,CAAgB,UAAUiF,CAAV,EAAa;AAC3B2xB,QAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa0F,OAAb,CAAqB1C,IAArB,CAA0B0E,CAA1B;AACD,OAFD;AAGD;AACF;;AACD,MAAI,OAAOmI,GAAP,KAAe,WAAnB,EAAgC;AAC9BwpB,IAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa6P,GAAb,GAAmBA,GAAnB;AACD;;AACDwpB,EAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa6Y,KAAb,GAAqBA,KAArB;AACD,CAzDM;AA2DP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMihB,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,MAAV,EAAkBC,IAAlB,EAAwBlpB,IAAxB,EAA8BmpB,QAA9B,EAAwC;AACnE,MAAI1f,KAAK,GAAGwf,MAAZ;AACA,MAAItf,GAAG,GAAGuf,IAAV,CAFmE,CAGnE;AACA;AACA;;AAEA,MAAMnxB,IAAI,GAAG;AAAE0R,IAAAA,KAAK,EAAEA,KAAT;AAAgBE,IAAAA,GAAG,EAAEA,GAArB;AAA0B3J,IAAAA,IAAI,EAAE9M,SAAhC;AAA2CzD,IAAAA,IAAI,EAAE;AAAjD,GAAb;AACA05B,EAAAA,QAAQ,GAAGnpB,IAAI,CAACvQ,IAAhB;;AAEA,MAAI,OAAO05B,QAAP,KAAoB,WAAxB,EAAqC;AACnCpxB,IAAAA,IAAI,CAACtI,IAAL,GAAYkG,YAAY,CAACwzB,QAAQ,CAAC3xB,IAAT,EAAD,CAAxB,CADmC,CAGnC;;AACA,QAAIO,IAAI,CAACtI,IAAL,CAAU,CAAV,MAAiB,GAAjB,IAAwBsI,IAAI,CAACtI,IAAL,CAAUsI,IAAI,CAACtI,IAAL,CAAUkB,MAAV,GAAmB,CAA7B,MAAoC,GAAhE,EAAqE;AACnEoH,MAAAA,IAAI,CAACtI,IAAL,GAAYsI,IAAI,CAACtI,IAAL,CAAU2lB,SAAV,CAAoB,CAApB,EAAuBrd,IAAI,CAACtI,IAAL,CAAUkB,MAAV,GAAmB,CAA1C,CAAZ;AACD;AACF;;AAED,MAAI,OAAOqP,IAAP,KAAgB,WAApB,EAAiC;AAC/BjI,IAAAA,IAAI,CAACiI,IAAL,GAAYA,IAAI,CAACA,IAAjB;AACAjI,IAAAA,IAAI,CAAC0Z,MAAL,GAAczR,IAAI,CAACyR,MAAnB;AACA1Z,IAAAA,IAAI,CAACpH,MAAL,GAAcqP,IAAI,CAACrP,MAAnB;AACD;;AACDuO,EAAAA,KAAK,CAAChN,IAAN,CAAW6F,IAAX;AACD,CAzBM;AA0BA,IAAMqxB,OAAO,GAAG,SAAVA,OAAU,CAAUH,MAAV,EAAkBC,IAAlB,EAAwBlpB,IAAxB,EAA8BmpB,QAA9B,EAAwC;AAC7D,MAAIz4B,CAAJ,EAAO0G,CAAP;;AACA,OAAK1G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu4B,MAAM,CAACt4B,MAAvB,EAA+BD,CAAC,EAAhC,EAAoC;AAClC,SAAK0G,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8xB,IAAI,CAACv4B,MAArB,EAA6ByG,CAAC,EAA9B,EAAkC;AAChC4xB,MAAAA,aAAa,CAACC,MAAM,CAACv4B,CAAD,CAAP,EAAYw4B,IAAI,CAAC9xB,CAAD,CAAhB,EAAqB4I,IAArB,EAA2BmpB,QAA3B,CAAb;AACD;AACF;AACF,CAPM;AASP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAME,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUC,SAAV,EAAqBC,MAArB,EAA6B;AAChED,EAAAA,SAAS,CAAC33B,OAAV,CAAkB,UAAU8H,GAAV,EAAe;AAC/B,QAAIA,GAAG,KAAK,SAAZ,EAAuB;AACrByF,MAAAA,KAAK,CAAC+a,kBAAN,GAA2BsP,MAA3B;AACD,KAFD,MAEO;AACLrqB,MAAAA,KAAK,CAACzF,GAAD,CAAL,CAAWugB,WAAX,GAAyBuP,MAAzB;AACD;AACF,GAND;AAOD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAAUF,SAAV,EAAqBp1B,KAArB,EAA4B;AACpDo1B,EAAAA,SAAS,CAAC33B,OAAV,CAAkB,UAAU8H,GAAV,EAAe;AAC/B,QAAIA,GAAG,KAAK,SAAZ,EAAuB;AACrByF,MAAAA,KAAK,CAACua,YAAN,GAAqBvlB,KAArB;AACD,KAFD,MAEO;AACL,UAAIyD,iEAAA,CAAyB,MAAzB,EAAiCzD,KAAjC,MAA4C,CAAC,CAAjD,EAAoD;AAClDA,QAAAA,KAAK,CAAChC,IAAN,CAAW,WAAX;AACD;;AACDgN,MAAAA,KAAK,CAACzF,GAAD,CAAL,CAAWvF,KAAX,GAAmBA,KAAnB;AACD;AACF,GATD;AAUD,CAXM;AAaA,IAAM0f,QAAQ,GAAG,SAAXA,QAAW,CAAU1kB,EAAV,EAAcgF,KAAd,EAAqB;AAC3C,MAAI,OAAOU,OAAO,CAAC1F,EAAD,CAAd,KAAuB,WAA3B,EAAwC;AACtC0F,IAAAA,OAAO,CAAC1F,EAAD,CAAP,GAAc;AAAEA,MAAAA,EAAE,EAAEA,EAAN;AAAUkqB,MAAAA,MAAM,EAAE,EAAlB;AAAsBsQ,MAAAA,UAAU,EAAE;AAAlC,KAAd;AACD;;AAED,MAAI,OAAOx1B,KAAP,KAAiB,WAArB,EAAkC;AAChC,QAAIA,KAAK,KAAK,IAAd,EAAoB;AAClBA,MAAAA,KAAK,CAACvC,OAAN,CAAc,UAAUiF,CAAV,EAAa;AACzB,YAAIA,CAAC,CAAC8e,KAAF,CAAQ,OAAR,CAAJ,EAAsB;AACpB,cAAMiU,SAAS,GAAG/yB,CAAC,CAACD,OAAF,CAAU,MAAV,EAAkB,QAAlB,CAAlB;AACA,cAAMizB,SAAS,GAAGD,SAAS,CAAChzB,OAAV,CAAkB,OAAlB,EAA2B,MAA3B,CAAlB;AACA/B,UAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAYw6B,UAAZ,CAAuBx3B,IAAvB,CAA4B03B,SAA5B;AACD;;AACDh1B,QAAAA,OAAO,CAAC1F,EAAD,CAAP,CAAYkqB,MAAZ,CAAmBlnB,IAAnB,CAAwB0E,CAAxB;AACD,OAPD;AAQD;AACF;AACF,CAjBM;AAmBP;AACA;AACA;AACA;AACA;;AACO,IAAMshB,YAAY,GAAG,SAAfA,YAAe,CAAUnZ,GAAV,EAAe;AACzCiZ,EAAAA,SAAS,GAAGjZ,GAAZ;;AACA,MAAIiZ,SAAS,CAACtC,KAAV,CAAgB,KAAhB,CAAJ,EAA4B;AAC1BsC,IAAAA,SAAS,GAAG,IAAZ;AACD;;AACD,MAAIA,SAAS,CAACtC,KAAV,CAAgB,MAAhB,CAAJ,EAA6B;AAC3BsC,IAAAA,SAAS,GAAG,IAAZ;AACD;;AACD,MAAIA,SAAS,CAACtC,KAAV,CAAgB,KAAhB,CAAJ,EAA4B;AAC1BsC,IAAAA,SAAS,GAAG,IAAZ;AACD;;AACD,MAAIA,SAAS,CAACtC,KAAV,CAAgB,KAAhB,CAAJ,EAA4B;AAC1BsC,IAAAA,SAAS,GAAG,IAAZ;AACD;AACF,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6R,QAAQ,GAAG,SAAXA,QAAW,CAAUpU,GAAV,EAAe9B,SAAf,EAA0B;AAChD8B,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUqT,GAAV,EAAe;AACpC;AACA,QAAI9V,EAAE,GAAG8V,GAAT,CAFoC,CAGpC;;AACA,QAAI,OAAOujB,QAAQ,CAACr5B,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCq5B,MAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa0F,OAAb,CAAqB1C,IAArB,CAA0ByhB,SAA1B;AACD;;AAED,QAAI,OAAO8U,cAAc,CAACv5B,EAAD,CAArB,KAA8B,WAAlC,EAA+C;AAC7Cu5B,MAAAA,cAAc,CAACv5B,EAAD,CAAd,CAAmB0F,OAAnB,CAA2B1C,IAA3B,CAAgCyhB,SAAhC;AACD;AACF,GAXD;AAYD,CAbM;;AAeP,IAAMgC,UAAU,GAAG,SAAbA,UAAa,CAAUF,GAAV,EAAe1J,OAAf,EAAwB;AACzC0J,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC,QAAI,OAAO6c,OAAP,KAAmB,WAAvB,EAAoC;AAClC2c,MAAAA,QAAQ,CAACG,OAAO,KAAK,OAAZ,GAAsB9U,WAAW,CAAC7kB,EAAD,CAAjC,GAAwCA,EAAzC,CAAR,GAAuDyG,YAAY,CAACoW,OAAD,CAAnE;AACD;AACF,GAJD;AAKD,CAND;;AAQA,IAAM+d,WAAW,GAAG,SAAdA,WAAc,CAAU56B,EAAV,EAAc8mB,YAAd,EAA4BC,YAA5B,EAA0C;AAC5D,MAAIlP,KAAK,GAAGgN,WAAW,CAAC7kB,EAAD,CAAvB,CAD4D,CAE5D;;AACA,MAAI6jB,8CAAA,GAAsBlH,aAAtB,KAAwC,OAA5C,EAAqD;AACnD;AACD;;AACD,MAAI,OAAOmK,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AACD,MAAII,OAAO,GAAG,EAAd;;AACA,MAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAG,IAAAA,OAAO,GAAGH,YAAY,CAAChf,KAAb,CAAmB,+BAAnB,CAAV;;AACA,SAAK,IAAIvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0lB,OAAO,CAACzlB,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC,UAAI2lB,IAAI,GAAGD,OAAO,CAAC1lB,CAAD,CAAP,CAAW8G,IAAX,EAAX;AACA;;AACA;;AACA,UAAI6e,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0BD,IAAI,CAACC,MAAL,CAAYD,IAAI,CAAC1lB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClE0lB,QAAAA,IAAI,GAAGA,IAAI,CAACd,MAAL,CAAY,CAAZ,EAAec,IAAI,CAAC1lB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDylB,MAAAA,OAAO,CAAC1lB,CAAD,CAAP,GAAa2lB,IAAb;AACD;AACF;AAED;;;AACA,MAAID,OAAO,CAACzlB,MAAR,KAAmB,CAAvB,EAA0B;AACxBylB,IAAAA,OAAO,CAAClkB,IAAR,CAAahD,EAAb;AACD;;AAED,MAAI,OAAOq5B,QAAQ,CAACr5B,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCq5B,IAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa8c,YAAb,GAA4B,IAA5B;AACAqH,IAAAA,IAAI,CAACnhB,IAAL,CAAU,YAAY;AACpB,UAAMiD,IAAI,GAAGgB,QAAQ,CAACogB,aAAT,iBAA+BxP,KAA/B,SAAb;;AACA,UAAI5R,IAAI,KAAK,IAAb,EAAmB;AACjBA,QAAAA,IAAI,CAACqhB,gBAAL,CACE,OADF,EAEE,YAAY;AACV7e,UAAAA,4DAAA,CAAAA,8CAAK,GAASqe,YAAT,4BAA0BI,OAA1B,GAAL;AACD,SAJH,EAKE,KALF;AAOD;AACF,KAXD;AAYD;AACF,CA5CD;AA8CA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMR,OAAO,GAAG,SAAVA,OAAU,CAAUH,GAAV,EAAeI,OAAf,EAAwBjK,MAAxB,EAAgC;AACrD6J,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC,QAAI,OAAOq5B,QAAQ,CAACr5B,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvCq5B,MAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAayc,IAAb,GAAoBhU,wDAAA,CAAgBke,OAAhB,EAAyBhmB,MAAzB,CAApB;AACA04B,MAAAA,QAAQ,CAACr5B,EAAD,CAAR,CAAa4c,UAAb,GAA0BF,MAA1B;AACD;AACF,GALD;AAMAie,EAAAA,QAAQ,CAACpU,GAAD,EAAM,WAAN,CAAR;AACD,CARM;AASA,IAAMsU,UAAU,GAAG,SAAbA,UAAa,CAAU76B,EAAV,EAAc;AACtC,SAAOw5B,QAAQ,CAACx5B,EAAD,CAAf;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6mB,aAAa,GAAG,SAAhBA,aAAgB,CAAUN,GAAV,EAAeO,YAAf,EAA6BC,YAA7B,EAA2C;AACtER,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC46B,IAAAA,WAAW,CAAC56B,EAAD,EAAK8mB,YAAL,EAAmBC,YAAnB,CAAX;AACD,GAFD;AAGA4T,EAAAA,QAAQ,CAACpU,GAAD,EAAM,WAAN,CAAR;AACD,CALM;AAOA,IAAMiB,aAAa,GAAG,SAAhBA,aAAgB,CAAUvK,OAAV,EAAmB;AAC9CkH,EAAAA,IAAI,CAAC1hB,OAAL,CAAa,UAAUglB,GAAV,EAAe;AAC1BA,IAAAA,GAAG,CAACxK,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAKA,IAAM8L,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOD,SAAS,CAACxgB,IAAV,EAAP;AACD,CAFM;AAGP;AACA;AACA;AACA;AACA;;AACO,IAAMwyB,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOzB,QAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;;AACO,IAAM0B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAO/qB,KAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;;AACO,IAAMiV,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAOvf,OAAP;AACD,CAFM;;AAIP,IAAMqf,aAAa,GAAG,SAAhBA,aAAgB,CAAU9H,OAAV,EAAmB;AACvC,MAAIiL,WAAW,GAAG9kB,0CAAM,CAAC,iBAAD,CAAxB;;AACA,MAAI,CAAC8kB,WAAW,CAACC,OAAZ,IAAuBD,WAAxB,EAAqC,CAArC,EAAwC,CAAxC,MAA+C,IAAnD,EAAyD;AACvDA,IAAAA,WAAW,GAAG9kB,0CAAM,CAAC,MAAD,CAAN,CAAewC,MAAf,CAAsB,KAAtB,EAA6BtF,IAA7B,CAAkC,OAAlC,EAA2C,gBAA3C,EAA6D0E,KAA7D,CAAmE,SAAnE,EAA8E,CAA9E,CAAd;AACD;;AAED,MAAMjF,GAAG,GAAGqD,0CAAM,CAAC6Z,OAAD,CAAN,CAAgB7Z,MAAhB,CAAuB,KAAvB,CAAZ;AAEA,MAAM2M,KAAK,GAAGhQ,GAAG,CAACqoB,SAAJ,CAAc,QAAd,CAAd;AACArY,EAAAA,KAAK,CACFsY,EADH,CACM,WADN,EACmB,YAAY;AAC3B,QAAM7hB,EAAE,GAAGpD,0CAAM,CAAC,IAAD,CAAjB;AACA,QAAMwW,KAAK,GAAGpT,EAAE,CAAClG,IAAH,CAAQ,OAAR,CAAd,CAF2B,CAI3B;;AACA,QAAIsZ,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AACD,QAAMtW,IAAI,GAAG,KAAKkB,qBAAL,EAAb;AAEA0jB,IAAAA,WAAW,CAACI,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuCvjB,KAAvC,CAA6C,SAA7C,EAAwD,IAAxD;AACAkjB,IAAAA,WAAW,CACR7gB,IADH,CACQb,EAAE,CAAClG,IAAH,CAAQ,OAAR,CADR,EAEG0E,KAFH,CAES,MAFT,EAEiBmJ,MAAM,CAACqa,OAAP,GAAiBllB,IAAI,CAACsQ,IAAtB,GAA6B,CAACtQ,IAAI,CAACmlB,KAAL,GAAanlB,IAAI,CAACsQ,IAAnB,IAA2B,CAAxD,GAA4D,IAF7E,EAGG5O,KAHH,CAGS,KAHT,EAGgBmJ,MAAM,CAACua,OAAP,GAAiBplB,IAAI,CAACuQ,GAAtB,GAA4B,EAA5B,GAAiC5M,QAAQ,CAAC0hB,IAAT,CAAcC,SAA/C,GAA2D,IAH3E;AAIApiB,IAAAA,EAAE,CAACqiB,OAAH,CAAW,OAAX,EAAoB,IAApB;AACD,GAjBH,EAkBGR,EAlBH,CAkBM,UAlBN,EAkBkB,YAAY;AAC1BH,IAAAA,WAAW,CAACI,UAAZ,GAAyBC,QAAzB,CAAkC,GAAlC,EAAuCvjB,KAAvC,CAA6C,SAA7C,EAAwD,CAAxD;AACA,QAAMwB,EAAE,GAAGpD,0CAAM,CAAC,IAAD,CAAjB;AACAoD,IAAAA,EAAE,CAACqiB,OAAH,CAAW,OAAX,EAAoB,KAApB;AACD,GAtBH;AAuBD,CAhCD;;AAiCA1E,IAAI,CAACnhB,IAAL,CAAU+hB,aAAV;AAEA;AACA;AACA;AACA;AACA;;AACO,IAAM1e,KAAK,GAAG,SAARA,KAAQ,CAAU20B,GAAV,EAAe;AAClC3B,EAAAA,QAAQ,GAAG,EAAX;AACA3zB,EAAAA,OAAO,GAAG,EAAV;AACAsK,EAAAA,KAAK,GAAG,EAAR;AACAmU,EAAAA,IAAI,GAAG,EAAP;AACAA,EAAAA,IAAI,CAACnhB,IAAL,CAAU+hB,aAAV;AACAuU,EAAAA,SAAS,GAAG,EAAZ;AACAC,EAAAA,cAAc,GAAG,EAAjB;AACAE,EAAAA,QAAQ,GAAG,CAAX;AACAD,EAAAA,QAAQ,GAAG,EAAX;AACAE,EAAAA,cAAc,GAAG,IAAjB;AACAC,EAAAA,OAAO,GAAGqB,GAAG,IAAI,OAAjB;AACD,CAZM;AAaA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACD,GAAD,EAAS;AAC7BrB,EAAAA,OAAO,GAAGqB,GAAG,IAAI,OAAjB;AACD,CAFM;AAGP;;AACO,IAAMzQ,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAO,2FAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM2Q,WAAW,GAAG,SAAdA,WAAc,CAAUplB,GAAV,EAAeqlB,IAAf,EAAqBC,MAArB,EAA6B;AACtD;AACA,MAAIp7B,EAAE,GAAG8V,GAAG,CAACxN,IAAJ,EAAT;;AACA,MAAIsR,KAAK,GAAGwhB,MAAZ;;AACA,MAAItlB,GAAG,KAAKslB,MAAR,IAAkBA,MAAM,CAAC5U,KAAP,CAAa,IAAb,CAAtB,EAA0C;AACxCxmB,IAAAA,EAAE,GAAGgE,SAAL;AACD;AACD;;;AACA,WAASq3B,IAAT,CAAchK,CAAd,EAAiB;AACf,QAAMiK,KAAK,GAAG;AAAEC,MAAAA,OAAO,EAAE,EAAX;AAAeC,MAAAA,MAAM,EAAE,EAAvB;AAA2BC,MAAAA,MAAM,EAAE;AAAnC,KAAd;AACA,QAAMC,IAAI,GAAG,EAAb;AAEA,QAAI7rB,GAAJ,CAJe,CAIN;;AACT,QAAM8rB,QAAQ,GAAGtK,CAAC,CAAC9jB,MAAF,CAAS,UAAU4Z,IAAV,EAAgB;AACxC,UAAMrW,IAAI,WAAUqW,IAAV,CAAV;;AACA,UAAIA,IAAI,CAACyU,IAAL,IAAazU,IAAI,CAACyU,IAAL,KAAc,KAA/B,EAAsC;AACpC/rB,QAAAA,GAAG,GAAGsX,IAAI,CAACld,KAAX;AACA,eAAO,KAAP;AACD;;AACD,UAAIkd,IAAI,CAAC7e,IAAL,OAAgB,EAApB,EAAwB;AACtB,eAAO,KAAP;AACD;;AACD,UAAIwI,IAAI,IAAIwqB,KAAZ,EAAmB;AACjB,eAAOA,KAAK,CAACxqB,IAAD,CAAL,CAAY+qB,cAAZ,CAA2B1U,IAA3B,IAAmC,KAAnC,GAA4CmU,KAAK,CAACxqB,IAAD,CAAL,CAAYqW,IAAZ,IAAoB,IAAvE,CADiB,CAC6D;AAC/E,OAFD,MAEO;AACL,eAAOuU,IAAI,CAAC94B,OAAL,CAAaukB,IAAb,KAAsB,CAAtB,GAA0B,KAA1B,GAAkCuU,IAAI,CAAC14B,IAAL,CAAUmkB,IAAV,CAAzC;AACD;AACF,KAdgB,CAAjB;AAeA,WAAO;AAAEwU,MAAAA,QAAQ,EAARA,QAAF;AAAY9rB,MAAAA,GAAG,EAAHA;AAAZ,KAAP;AACD;;AAED,MAAI8rB,QAAQ,GAAG,EAAf;;AAEA,cAA8BN,IAAI,CAACM,QAAQ,CAAC/lB,MAAT,CAAgBkmB,KAAhB,CAAsBH,QAAtB,EAAgCR,IAAhC,CAAD,CAAlC;AAAA,MAAkBY,EAAlB,SAAQJ,QAAR;AAAA,MAAsB9rB,GAAtB,SAAsBA,GAAtB;;AACA8rB,EAAAA,QAAQ,GAAGI,EAAX;;AACA,MAAIpC,OAAO,KAAK,OAAhB,EAAyB;AACvBl5B,IAAAA,6CAAA,CAAS,YAAT;;AACA,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm6B,QAAQ,CAACl6B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxCm6B,MAAAA,QAAQ,CAACn6B,CAAD,CAAR,GAAcqjB,WAAW,CAAC8W,QAAQ,CAACn6B,CAAD,CAAT,CAAzB;AACD;AACF;;AAEDxB,EAAAA,EAAE,GAAGA,EAAE,IAAI,aAAay5B,QAAxB,CA1CsD,CA2CtD;;AACA7f,EAAAA,KAAK,GAAGA,KAAK,IAAI,EAAjB;AACAA,EAAAA,KAAK,GAAGnT,YAAY,CAACmT,KAAD,CAApB;AACA6f,EAAAA,QAAQ,GAAGA,QAAQ,GAAG,CAAtB;AACA,MAAMuC,QAAQ,GAAG;AAAEh8B,IAAAA,EAAE,EAAEA,EAAN;AAAU+P,IAAAA,KAAK,EAAE4rB,QAAjB;AAA2B/hB,IAAAA,KAAK,EAAEA,KAAK,CAACtR,IAAN,EAAlC;AAAgD5C,IAAAA,OAAO,EAAE,EAAzD;AAA6DmK,IAAAA,GAAG,EAAHA;AAA7D,GAAjB;AAEApP,EAAAA,6CAAA,CAAS,QAAT,EAAmBu7B,QAAQ,CAACh8B,EAA5B,EAAgCg8B,QAAQ,CAACjsB,KAAzC,EAAgDisB,QAAQ,CAACnsB,GAAzD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AACAmsB,EAAAA,QAAQ,CAACjsB,KAAT,GAAiBksB,QAAQ,CAACD,QAAD,EAAW1C,SAAX,CAAR,CAA8BvpB,KAA/C;AACAupB,EAAAA,SAAS,CAACt2B,IAAV,CAAeg5B,QAAf;AACAzC,EAAAA,cAAc,CAACv5B,EAAD,CAAd,GAAqBg8B,QAArB;AACA,SAAOh8B,EAAP;AACD,CArEM;;AAuEP,IAAMk8B,WAAW,GAAG,SAAdA,WAAc,CAAUl8B,EAAV,EAAc;AAChC,OAAK,IAAIwB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG83B,SAAS,CAAC73B,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAI83B,SAAS,CAAC93B,CAAD,CAAT,CAAaxB,EAAb,KAAoBA,EAAxB,EAA4B;AAC1B,aAAOwB,CAAP;AACD;AACF;;AACD,SAAO,CAAC,CAAR;AACD,CAPD;;AAQA,IAAI26B,QAAQ,GAAG,CAAC,CAAhB;AACA,IAAMC,WAAW,GAAG,EAApB;;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAUr8B,EAAV,EAAcuK,GAAd,EAAmB;AACrC,MAAMwF,KAAK,GAAGupB,SAAS,CAAC/uB,GAAD,CAAT,CAAewF,KAA7B;AACAosB,EAAAA,QAAQ,GAAGA,QAAQ,GAAG,CAAtB;;AACA,MAAIA,QAAQ,GAAG,IAAf,EAAqB;AACnB;AACD;;AACDC,EAAAA,WAAW,CAACD,QAAD,CAAX,GAAwB5xB,GAAxB,CANqC,CAOrC;;AACA,MAAI+uB,SAAS,CAAC/uB,GAAD,CAAT,CAAevK,EAAf,KAAsBA,EAA1B,EAA8B;AAC5B,WAAO;AACLmX,MAAAA,MAAM,EAAE,IADH;AAELmlB,MAAAA,KAAK,EAAE;AAFF,KAAP;AAID;;AAED,MAAIA,KAAK,GAAG,CAAZ;AACA,MAAIC,QAAQ,GAAG,CAAf;;AACA,SAAOD,KAAK,GAAGvsB,KAAK,CAACtO,MAArB,EAA6B;AAC3B,QAAM+6B,QAAQ,GAAGN,WAAW,CAACnsB,KAAK,CAACusB,KAAD,CAAN,CAA5B,CAD2B,CAE3B;;AACA,QAAIE,QAAQ,IAAI,CAAhB,EAAmB;AACjB,UAAM7wB,GAAG,GAAG0wB,WAAW,CAACr8B,EAAD,EAAKw8B,QAAL,CAAvB;;AACA,UAAI7wB,GAAG,CAACwL,MAAR,EAAgB;AACd,eAAO;AACLA,UAAAA,MAAM,EAAE,IADH;AAELmlB,UAAAA,KAAK,EAAEC,QAAQ,GAAG5wB,GAAG,CAAC2wB;AAFjB,SAAP;AAID,OALD,MAKO;AACLC,QAAAA,QAAQ,GAAGA,QAAQ,GAAG5wB,GAAG,CAAC2wB,KAA1B;AACD;AACF;;AACDA,IAAAA,KAAK,GAAGA,KAAK,GAAG,CAAhB;AACD;;AAED,SAAO;AACLnlB,IAAAA,MAAM,EAAE,KADH;AAELmlB,IAAAA,KAAK,EAAEC;AAFF,GAAP;AAID,CAtCD;;AAwCO,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUlyB,GAAV,EAAe;AAC7C,SAAO6xB,WAAW,CAAC7xB,GAAD,CAAlB;AACD,CAFM;AAGA,IAAMmyB,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpCP,EAAAA,QAAQ,GAAG,CAAC,CAAZ;;AACA,MAAI7C,SAAS,CAAC73B,MAAV,GAAmB,CAAvB,EAA0B;AACxB46B,IAAAA,WAAW,CAAC,MAAD,EAAS/C,SAAS,CAAC73B,MAAV,GAAmB,CAA5B,EAA+B,CAA/B,CAAX;AACD;AACF,CALM;AAOA,IAAMk7B,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOrD,SAAP;AACD,CAFM;AAIA,IAAMsD,UAAU,GAAG,SAAbA,UAAa,GAAM;AAC9B,MAAIlD,cAAJ,EAAoB;AAClBA,IAAAA,cAAc,GAAG,KAAjB;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD,CANM;;AAQP,IAAMmD,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,IAAD,EAAU;AAClC,MAAIhhB,GAAG,GAAGghB,IAAI,CAACx0B,IAAL,EAAV;;AACA,MAAIwI,IAAI,GAAG,YAAX;;AAEA,UAAQgL,GAAG,CAAC,CAAD,CAAX;AACE,SAAK,GAAL;AACEhL,MAAAA,IAAI,GAAG,aAAP;AACAgL,MAAAA,GAAG,GAAGA,GAAG,CAAC7O,KAAJ,CAAU,CAAV,CAAN;AACA;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,aAAP;AACAgL,MAAAA,GAAG,GAAGA,GAAG,CAAC7O,KAAJ,CAAU,CAAV,CAAN;AACA;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,cAAP;AACAgL,MAAAA,GAAG,GAAGA,GAAG,CAAC7O,KAAJ,CAAU,CAAV,CAAN;AACA;AAZJ;;AAeA,MAAIsV,MAAM,GAAG,QAAb;;AAEA,MAAIzG,GAAG,CAAClZ,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AAC3B2f,IAAAA,MAAM,GAAG,OAAT;AACD;;AAED,MAAIzG,GAAG,CAAClZ,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;AAC3B2f,IAAAA,MAAM,GAAG,QAAT;AACD;;AAED,SAAO;AAAEzR,IAAAA,IAAI,EAAJA,IAAF;AAAQyR,IAAAA,MAAM,EAANA;AAAR,GAAP;AACD,CA9BD;;AAgCA,IAAMwa,SAAS,GAAG,SAAZA,SAAY,CAACC,IAAD,EAAOlhB,GAAP,EAAe;AAC/B,MAAMra,MAAM,GAAGqa,GAAG,CAACra,MAAnB;AACA,MAAI66B,KAAK,GAAG,CAAZ;;AACA,OAAK,IAAI96B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,MAApB,EAA4B,EAAED,CAA9B,EAAiC;AAC/B,QAAIsa,GAAG,CAACta,CAAD,CAAH,KAAWw7B,IAAf,EAAqB;AACnB,QAAEV,KAAF;AACD;AACF;;AACD,SAAOA,KAAP;AACD,CATD;;AAWA,IAAMW,eAAe,GAAG,SAAlBA,eAAkB,CAACH,IAAD,EAAU;AAChC,MAAMhhB,GAAG,GAAGghB,IAAI,CAACx0B,IAAL,EAAZ;;AACA,MAAIC,IAAI,GAAGuT,GAAG,CAAC7O,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAX;AACA,MAAI6D,IAAI,GAAG,YAAX;;AAEA,UAAQgL,GAAG,CAAC7O,KAAJ,CAAU,CAAC,CAAX,CAAR;AACE,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,aAAP;;AACA,UAAIgL,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AAClBhL,QAAAA,IAAI,GAAG,YAAYA,IAAnB;AACAvI,QAAAA,IAAI,GAAGA,IAAI,CAAC0E,KAAL,CAAW,CAAX,CAAP;AACD;;AACD;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,aAAP;;AACA,UAAIgL,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AAClBhL,QAAAA,IAAI,GAAG,YAAYA,IAAnB;AACAvI,QAAAA,IAAI,GAAGA,IAAI,CAAC0E,KAAL,CAAW,CAAX,CAAP;AACD;;AACD;;AACF,SAAK,GAAL;AACE6D,MAAAA,IAAI,GAAG,cAAP;;AACA,UAAIgL,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AAClBhL,QAAAA,IAAI,GAAG,YAAYA,IAAnB;AACAvI,QAAAA,IAAI,GAAGA,IAAI,CAAC0E,KAAL,CAAW,CAAX,CAAP;AACD;;AACD;AArBJ;;AAwBA,MAAIsV,MAAM,GAAG,QAAb;AACA,MAAI9gB,MAAM,GAAG8G,IAAI,CAAC9G,MAAL,GAAc,CAA3B;;AAEA,MAAI8G,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnBga,IAAAA,MAAM,GAAG,OAAT;AACD;;AAED,MAAI2a,IAAI,GAAGH,SAAS,CAAC,GAAD,EAAMx0B,IAAN,CAApB;;AAEA,MAAI20B,IAAJ,EAAU;AACR3a,IAAAA,MAAM,GAAG,QAAT;AACA9gB,IAAAA,MAAM,GAAGy7B,IAAT;AACD;;AAED,SAAO;AAAEpsB,IAAAA,IAAI,EAAJA,IAAF;AAAQyR,IAAAA,MAAM,EAANA,MAAR;AAAgB9gB,IAAAA,MAAM,EAANA;AAAhB,GAAP;AACD,CA5CD;;AA8CA,IAAM07B,YAAY,GAAG,SAAfA,YAAe,CAACL,IAAD,EAAOM,SAAP,EAAqB;AACxC,MAAM72B,IAAI,GAAG02B,eAAe,CAACH,IAAD,CAA5B;AACA,MAAIO,SAAJ;;AACA,MAAID,SAAJ,EAAe;AACbC,IAAAA,SAAS,GAAGR,iBAAiB,CAACO,SAAD,CAA7B;;AAEA,QAAIC,SAAS,CAAC9a,MAAV,KAAqBhc,IAAI,CAACgc,MAA9B,EAAsC;AACpC,aAAO;AAAEzR,QAAAA,IAAI,EAAE,SAAR;AAAmByR,QAAAA,MAAM,EAAE;AAA3B,OAAP;AACD;;AAED,QAAI8a,SAAS,CAACvsB,IAAV,KAAmB,YAAvB,EAAqC;AACnC;AACAusB,MAAAA,SAAS,CAACvsB,IAAV,GAAiBvK,IAAI,CAACuK,IAAtB;AACD,KAHD,MAGO;AACL;AACA,UAAIusB,SAAS,CAACvsB,IAAV,KAAmBvK,IAAI,CAACuK,IAA5B,EAAkC,OAAO;AAAEA,QAAAA,IAAI,EAAE,SAAR;AAAmByR,QAAAA,MAAM,EAAE;AAA3B,OAAP;AAElC8a,MAAAA,SAAS,CAACvsB,IAAV,GAAiB,YAAYusB,SAAS,CAACvsB,IAAvC;AACD;;AAED,QAAIusB,SAAS,CAACvsB,IAAV,KAAmB,cAAvB,EAAuC;AACrCusB,MAAAA,SAAS,CAACvsB,IAAV,GAAiB,oBAAjB;AACD;;AAEDusB,IAAAA,SAAS,CAAC57B,MAAV,GAAmB8E,IAAI,CAAC9E,MAAxB;AACA,WAAO47B,SAAP;AACD;;AAED,SAAO92B,IAAP;AACD,CA7BD,EA+BA;;;AACA,IAAM+2B,MAAM,GAAG,SAATA,MAAS,CAACC,MAAD,EAASznB,GAAT,EAAiB;AAC9B,MAAInK,GAAG,GAAG,KAAV;AACA4xB,EAAAA,MAAM,CAAC96B,OAAP,CAAe,UAAC+6B,EAAD,EAAQ;AACrB,QAAMjzB,GAAG,GAAGizB,EAAE,CAACztB,KAAH,CAASnN,OAAT,CAAiBkT,GAAjB,CAAZ;;AACA,QAAIvL,GAAG,IAAI,CAAX,EAAc;AACZoB,MAAAA,GAAG,GAAG,IAAN;AACD;AACF,GALD;AAMA,SAAOA,GAAP;AACD,CATD;AAUA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMswB,QAAQ,GAAG,SAAXA,QAAW,CAACuB,EAAD,EAAKC,YAAL,EAAsB;AACrC,MAAM9xB,GAAG,GAAG,EAAZ;AACA6xB,EAAAA,EAAE,CAACztB,KAAH,CAAStN,OAAT,CAAiB,UAACqT,GAAD,EAAMvL,GAAN,EAAc;AAC7B,QAAI,CAAC+yB,MAAM,CAACG,YAAD,EAAe3nB,GAAf,CAAX,EAAgC;AAC9BnK,MAAAA,GAAG,CAAC3I,IAAJ,CAASw6B,EAAE,CAACztB,KAAH,CAASxF,GAAT,CAAT;AACD;AACF,GAJD;AAKA,SAAO;AAAEwF,IAAAA,KAAK,EAAEpE;AAAT,GAAP;AACD,CARD;;AAUA,iEAAe;AACbyY,EAAAA,cAAc,EAAdA,cADa;AAEbxjB,EAAAA,aAAa,EAAE;AAAA,WAAMijB,4DAAN;AAAA,GAFF;AAGboF,EAAAA,QAAQ,EAARA,QAHa;AAIb9oB,EAAAA,QAAQ,EAARA,QAJa;AAKbE,EAAAA,iBAAiB,EAAjBA,iBALa;AAMb+oB,EAAAA,iBAAiB,EAAjBA,iBANa;AAObyQ,EAAAA,SAAS,EAATA,SAPa;AAQbhV,EAAAA,WAAW,EAAXA,WARa;AASbqV,EAAAA,OAAO,EAAPA,OATa;AAUbC,EAAAA,qBAAqB,EAArBA,qBAVa;AAWbG,EAAAA,UAAU,EAAVA,UAXa;AAYb5V,EAAAA,QAAQ,EAARA,QAZa;AAabsE,EAAAA,YAAY,EAAZA,YAba;AAcb2R,EAAAA,QAAQ,EAARA,QAda;AAeblU,EAAAA,UAAU,EAAVA,UAfa;AAgBboU,EAAAA,UAAU,EAAVA,UAhBa;AAiBbhU,EAAAA,aAAa,EAAbA,aAjBa;AAkBbH,EAAAA,OAAO,EAAPA,OAlBa;AAmBbc,EAAAA,aAAa,EAAbA,aAnBa;AAoBbuB,EAAAA,YAAY,EAAZA,YApBa;AAqBb+R,EAAAA,WAAW,EAAXA,WArBa;AAsBbC,EAAAA,QAAQ,EAARA,QAtBa;AAuBb9V,EAAAA,UAAU,EAAVA,UAvBa;AAwBb5e,EAAAA,KAAK,EAALA,KAxBa;AAyBb40B,EAAAA,MAAM,EAANA,MAzBa;AA0Bb1Q,EAAAA,YAAY,EAAZA,YA1Ba;AA2Bb2Q,EAAAA,WAAW,EAAXA,WA3Ba;AA4BbuB,EAAAA,gBAAgB,EAAhBA,gBA5Ba;AA6BbC,EAAAA,UAAU,EAAVA,UA7Ba;AA8BbC,EAAAA,YAAY,EAAZA,YA9Ba;AA+BbQ,EAAAA,YAAY,EAAZA,YA/Ba;AAgCbO,EAAAA,GAAG,EAAE;AACHd,IAAAA,UAAU,EAAVA;AADG,GAhCQ;AAmCbU,EAAAA,MAAM,EAANA,MAnCa;AAoCbrB,EAAAA,QAAQ,EAARA;AApCa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnvBA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMj6B,IAAI,GAAG,EAAb;AACO,IAAMupB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;;AACA,OAAK,IAAIhqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBgqB,GAAG,CAACjpB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMq8B,WAAW,GAAG,SAAdA,WAAc,CAAUC,IAAV,EAAgB/T,CAAhB,EAAmBgU,KAAnB,EAA0BpS,IAA1B,EAAgCI,GAAhC,EAAqC;AAC9D,MAAMhsB,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,iBAAoB26B,KAApB,SAAZ;AACA,MAAMx7B,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYu7B,IAAZ,CAAb,CAF8D,CAI9D;;AACAv7B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUzC,EAAV,EAAc;AACzB,QAAMgqB,MAAM,GAAG8T,IAAI,CAAC99B,EAAD,CAAnB;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAIg+B,QAAQ,GAAG,SAAf;;AACA,QAAIhU,MAAM,CAACtkB,OAAP,CAAejE,MAAf,GAAwB,CAA5B,EAA+B;AAC7Bu8B,MAAAA,QAAQ,GAAGhU,MAAM,CAACtkB,OAAP,CAAeqS,IAAf,CAAoB,GAApB,CAAX;AACD;;AAED,QAAMmS,MAAM,GAAGR,0DAAkB,CAACM,MAAM,CAACE,MAAR,CAAjC,CAbyB,CAezB;;AACA,QAAI1iB,UAAU,GAAGwiB,MAAM,CAACzpB,IAAP,KAAgByD,SAAhB,GAA4BgmB,MAAM,CAACzpB,IAAnC,GAA0CypB,MAAM,CAAChqB,EAAlE,CAhByB,CAkBzB;;AACA,QAAI2H,UAAJ;;AACA,QAAItE,wDAAQ,CAAChB,kDAAS,GAAG8B,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C;AACA,UAAMZ,IAAI,GAAG;AACXI,QAAAA,KAAK,EAAE4D,UAAU,CAACC,OAAX,CACL,sBADK,EAEL,UAACC,CAAD;AAAA,qCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,SAFK;AADI,OAAb;AAMAE,MAAAA,UAAU,GAAGZ,2EAAY,CAAChH,GAAD,EAAMyD,IAAN,CAAZ,CAAwBA,IAAxB,EAAb;AACAmE,MAAAA,UAAU,CAACs2B,UAAX,CAAsB73B,WAAtB,CAAkCuB,UAAlC;AACD,KAVD,MAUO;AACL,UAAMC,QAAQ,GAAGmkB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,MAAlD,CAAjB;AACAU,MAAAA,QAAQ,CAACC,YAAT,CAAsB,OAAtB,EAA+BqiB,MAAM,CAACnmB,UAAP,CAAkB0D,OAAlB,CAA0B,QAA1B,EAAoC,OAApC,CAA/B;AAEA,UAAMK,IAAI,GAAGN,UAAU,CAACO,KAAX,CAAiB+b,qEAAjB,CAAb;;AAEA,WAAK,IAAI5b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACrG,MAAzB,EAAiCyG,CAAC,EAAlC,EAAsC;AACpC,YAAMC,KAAK,GAAG4jB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,OAAlD,CAAd;AACAiB,QAAAA,KAAK,CAACC,cAAN,CAAqB,sCAArB,EAA6D,WAA7D,EAA0E,UAA1E;AACAD,QAAAA,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACAM,QAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,GAAxB;AACAM,QAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAxB;AACAN,QAAAA,QAAQ,CAAC/D,WAAT,CAAqBsE,KAArB;AACD;;AACDR,MAAAA,UAAU,GAAGC,QAAb;AACD;;AAED,QAAIuiB,OAAO,GAAG,CAAd;AACA,QAAIC,MAAM,GAAG,EAAb,CAhDyB,CAiDzB;;AACA,YAAQJ,MAAM,CAAClZ,IAAf;AACE,WAAK,OAAL;AACEqZ,QAAAA,OAAO,GAAG,CAAV;AACAC,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,KAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,eAAL;AACEA,QAAAA,MAAM,GAAG,eAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,QAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,UAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,OAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,cAAL;AACEA,QAAAA,MAAM,GAAG,cAAT;AACA;;AACF;AACEA,QAAAA,MAAM,GAAG,MAAT;AAtDJ,KAlDyB,CA0GzB;;;AACAL,IAAAA,CAAC,CAACzZ,OAAF,CAAU0Z,MAAM,CAAChqB,EAAjB,EAAqB;AACnB+D,MAAAA,UAAU,EAAEmmB,MAAM,CAACnmB,UADA;AAEnBmC,MAAAA,KAAK,EAAEkkB,MAFY;AAGnBtmB,MAAAA,SAAS,EAAE0D,UAHQ;AAInBvC,MAAAA,EAAE,EAAEklB,OAJe;AAKnBjlB,MAAAA,EAAE,EAAEilB,OALe;AAMnBxmB,MAAAA,KAAK,EAAEq6B,QANY;AAOnBh5B,MAAAA,KAAK,EAAEklB,MAAM,CAACllB,KAPK;AAQnBhF,MAAAA,EAAE,EAAEgqB,MAAM,CAAChqB,EARQ;AASnByc,MAAAA,IAAI,EAAEuN,MAAM,CAACvN,IATM;AAUnBG,MAAAA,UAAU,EAAEoN,MAAM,CAACpN,UAVA;AAWnBC,MAAAA,OAAO,EAAE8gB,0DAAA,CAAkB3T,MAAM,CAAChqB,EAAzB,KAAgC,EAXtB;AAYnB6X,MAAAA,KAAK,EAAE8lB,2DAAA,CAAmB3T,MAAM,CAAChqB,EAA1B,CAZY;AAanB8c,MAAAA,YAAY,EAAEkN,MAAM,CAAClN,YAbF;AAcnBrY,MAAAA,KAAK,EAAEulB,MAAM,CAAClZ,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC9M,SAdpB;AAenB6L,MAAAA,GAAG,EAAEma,MAAM,CAACna,GAfO;AAgBnBiB,MAAAA,IAAI,EAAEkZ,MAAM,CAAClZ,IAhBM;AAiBnB+H,MAAAA,KAAK,EAAEmR,MAAM,CAACnR,KAjBK;AAkBnBlU,MAAAA,OAAO,EAAEtC,kDAAS,GAAG8B,SAAZ,CAAsBQ;AAlBZ,KAArB;AAqBAlE,IAAAA,6CAAA,CAAS,SAAT,EAAoB;AAClBsD,MAAAA,UAAU,EAAEmmB,MAAM,CAACnmB,UADD;AAElBmC,MAAAA,KAAK,EAAEkkB,MAFW;AAGlBtmB,MAAAA,SAAS,EAAE0D,UAHO;AAIlBvC,MAAAA,EAAE,EAAEklB,OAJc;AAKlBjlB,MAAAA,EAAE,EAAEilB,OALc;AAMlBxmB,MAAAA,KAAK,EAAEq6B,QANW;AAOlBh5B,MAAAA,KAAK,EAAEklB,MAAM,CAACllB,KAPI;AAQlBhF,MAAAA,EAAE,EAAEgqB,MAAM,CAAChqB,EARO;AASlB6X,MAAAA,KAAK,EAAE8lB,2DAAA,CAAmB3T,MAAM,CAAChqB,EAA1B,CATW;AAUlByE,MAAAA,KAAK,EAAEulB,MAAM,CAAClZ,IAAP,KAAgB,OAAhB,GAA0B,GAA1B,GAAgC9M,SAVrB;AAWlB8M,MAAAA,IAAI,EAAEkZ,MAAM,CAAClZ,IAXK;AAYlBjB,MAAAA,GAAG,EAAEma,MAAM,CAACna,GAZM;AAalBgJ,MAAAA,KAAK,EAAEmR,MAAM,CAACnR,KAbI;AAclBlU,MAAAA,OAAO,EAAEtC,kDAAS,GAAG8B,SAAZ,CAAsBQ;AAdb,KAApB;AAgBD,GAhJD;AAiJD,CAtJM;AAwJP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMu5B,QAAQ,GAAG,SAAXA,QAAW,CAAUluB,KAAV,EAAiB+Z,CAAjB,EAAoB;AAC1CtpB,EAAAA,6CAAA,CAAS,gBAAT,EAA2BuP,KAA3B;AACA,MAAIsa,GAAG,GAAG,CAAV;AACA,MAAI6T,SAAS,GAAG,EAAhB;AAEA,MAAI5T,YAAJ;AACA,MAAIC,iBAAJ;;AAEA,MAAI,OAAOxa,KAAK,CAACua,YAAb,KAA8B,WAAlC,EAA+C;AAC7C,QAAM6T,aAAa,GAAG1U,0DAAkB,CAAC1Z,KAAK,CAACua,YAAP,CAAxC;AACAA,IAAAA,YAAY,GAAG6T,aAAa,CAACp5B,KAA7B;AACAwlB,IAAAA,iBAAiB,GAAG4T,aAAa,CAACr6B,UAAlC;AACD;;AAEDiM,EAAAA,KAAK,CAACvN,OAAN,CAAc,UAAUoG,IAAV,EAAgB;AAC5ByhB,IAAAA,GAAG,GADyB,CAG5B;;AACA,QAAI+T,UAAU,GAAG,OAAOx1B,IAAI,CAAC0R,KAAZ,GAAoB,GAApB,GAA0B1R,IAAI,CAAC4R,GAAhD,CAJ4B,CAK5B;;AACA,QAAI,OAAO0jB,SAAS,CAACE,UAAD,CAAhB,KAAiC,WAArC,EAAkD;AAChDF,MAAAA,SAAS,CAACE,UAAD,CAAT,GAAwB,CAAxB;AACA59B,MAAAA,6CAAA,CAAS,iBAAT,EAA4B49B,UAA5B,EAAwCF,SAAS,CAACE,UAAD,CAAjD;AACD,KAHD,MAGO;AACLF,MAAAA,SAAS,CAACE,UAAD,CAAT;AACA59B,MAAAA,6CAAA,CAAS,iBAAT,EAA4B49B,UAA5B,EAAwCF,SAAS,CAACE,UAAD,CAAjD;AACD;;AACD,QAAIC,MAAM,GAAGD,UAAU,GAAG,GAAb,GAAmBF,SAAS,CAACE,UAAD,CAAzC;AACA59B,IAAAA,6CAAA,CAAS,iCAAT,EAA4C49B,UAA5C,EAAwDC,MAAxD,EAAgEH,SAAS,CAACE,UAAD,CAAzE;AACA,QAAIE,aAAa,GAAG,QAAQ11B,IAAI,CAAC0R,KAAjC;AACA,QAAIikB,WAAW,GAAG,QAAQ31B,IAAI,CAAC4R,GAA/B;AAEA,QAAMgQ,QAAQ,GAAG;AAAEzlB,MAAAA,KAAK,EAAE,EAAT;AAAajB,MAAAA,UAAU,EAAE;AAAzB,KAAjB;AACA0mB,IAAAA,QAAQ,CAACgU,MAAT,GAAkB51B,IAAI,CAACpH,MAAL,IAAe,CAAjC,CAnB4B,CAoB5B;AAEA;;AACA,QAAIoH,IAAI,CAACiI,IAAL,KAAc,YAAlB,EAAgC;AAC9B2Z,MAAAA,QAAQ,CAACC,SAAT,GAAqB,MAArB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,SAAT,GAAqB,QAArB;AACD,KA3B2B,CA6B5B;;;AACAD,IAAAA,QAAQ,CAAC/f,cAAT,GAA0B,YAA1B;AACA+f,IAAAA,QAAQ,CAAC9f,YAAT,GAAwB,YAAxB;AAEA;;AACA,YAAQ9B,IAAI,CAACiI,IAAb;AACE,WAAK,oBAAL;AACE2Z,QAAAA,QAAQ,CAAC/f,cAAT,GAA0B,aAA1B;;AACF,WAAK,aAAL;AACE+f,QAAAA,QAAQ,CAAC9f,YAAT,GAAwB,aAAxB;AACA;;AACF,WAAK,oBAAL;AACE8f,QAAAA,QAAQ,CAAC/f,cAAT,GAA0B,aAA1B;;AACF,WAAK,aAAL;AACE+f,QAAAA,QAAQ,CAAC9f,YAAT,GAAwB,aAAxB;AACA;;AACF,WAAK,qBAAL;AACE8f,QAAAA,QAAQ,CAAC/f,cAAT,GAA0B,cAA1B;;AACF,WAAK,cAAL;AACE+f,QAAAA,QAAQ,CAAC9f,YAAT,GAAwB,cAAxB;AACA;AAfJ;;AAkBA,QAAI3F,KAAK,GAAG,EAAZ;AACA,QAAIjB,UAAU,GAAG,EAAjB;;AAEA,YAAQ8E,IAAI,CAAC0Z,MAAb;AACE,WAAK,QAAL;AACEvd,QAAAA,KAAK,GAAG,YAAR;;AACA,YAAI,OAAOulB,YAAP,KAAwB,WAA5B,EAAyC;AACvCvlB,UAAAA,KAAK,GAAGulB,YAAR;AACD;;AACD,YAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC5CzmB,UAAAA,UAAU,GAAGymB,iBAAb;AACD;;AACDC,QAAAA,QAAQ,CAAC5c,SAAT,GAAqB,QAArB;AACA4c,QAAAA,QAAQ,CAAC3c,OAAT,GAAmB,OAAnB;AACA;;AACF,WAAK,QAAL;AACE2c,QAAAA,QAAQ,CAAC5c,SAAT,GAAqB,QAArB;AACA4c,QAAAA,QAAQ,CAAC3c,OAAT,GAAmB,QAAnB;AACA2c,QAAAA,QAAQ,CAACzlB,KAAT,GAAiB,gDAAjB;AACA;;AACF,WAAK,OAAL;AACEylB,QAAAA,QAAQ,CAAC5c,SAAT,GAAqB,OAArB;AACA4c,QAAAA,QAAQ,CAAC3c,OAAT,GAAmB,OAAnB;AACA2c,QAAAA,QAAQ,CAACzlB,KAAT,GAAiB,gCAAjB;AACA;AArBJ;;AAuBA,QAAI,OAAO6D,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,UAAMklB,MAAM,GAAGR,0DAAkB,CAAC7gB,IAAI,CAAC7D,KAAN,CAAjC;AACAA,MAAAA,KAAK,GAAGklB,MAAM,CAACllB,KAAf;AACAjB,MAAAA,UAAU,GAAGmmB,MAAM,CAACnmB,UAApB;AACD;;AAED0mB,IAAAA,QAAQ,CAACzlB,KAAT,GAAiBylB,QAAQ,CAACzlB,KAAT,IAAkBA,KAAnC;AACAylB,IAAAA,QAAQ,CAAC1mB,UAAT,GAAsB0mB,QAAQ,CAAC1mB,UAAT,IAAuBA,UAA7C;;AAEA,QAAI,OAAO8E,IAAI,CAACiiB,WAAZ,KAA4B,WAAhC,EAA6C;AAC3CL,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAAC5gB,IAAI,CAACiiB,WAAN,EAAmBtB,2CAAnB,CAAnC;AACD,KAFD,MAEO,IAAI,OAAOxZ,KAAK,CAAC+a,kBAAb,KAAoC,WAAxC,EAAqD;AAC1DN,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAACzZ,KAAK,CAAC+a,kBAAP,EAA2BvB,2CAA3B,CAAnC;AACD,KAFM,MAEA;AACLiB,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAACznB,IAAI,CAAC0L,KAAN,EAAa8b,2CAAb,CAAnC;AACD;;AAED,QAAI,OAAO3gB,IAAI,CAACtI,IAAZ,KAAqB,WAAzB,EAAsC;AACpC,UAAI,OAAOsI,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrCylB,QAAAA,QAAQ,CAACO,cAAT,GAA0B,YAA1B;AACD;AACF,KAJD,MAIO;AACLP,MAAAA,QAAQ,CAACO,cAAT,GAA0B,YAA1B;AACAP,MAAAA,QAAQ,CAACQ,QAAT,GAAoB,GAApB;AACD,KAtG2B,CAuG5B;AACA;AACA;AACA;AACA;;;AACAR,IAAAA,QAAQ,CAACS,SAAT,GAAqB,MAArB;AACAT,IAAAA,QAAQ,CAAC7mB,KAAT,GAAiBiF,IAAI,CAACtI,IAAL,CAAUkH,OAAV,CAAkBqc,qEAAlB,EAAyC,IAAzC,CAAjB;;AAEA,QAAI,OAAOjb,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrCylB,MAAAA,QAAQ,CAACzlB,KAAT,GAAiBylB,QAAQ,CAACzlB,KAAT,IAAkB,8CAAnC;AACD;;AAEDylB,IAAAA,QAAQ,CAAC1mB,UAAT,GAAsB0mB,QAAQ,CAAC1mB,UAAT,CAAoB0D,OAApB,CAA4B,QAA5B,EAAsC,OAAtC,CAAtB,CAnH4B,CAoH5B;;AAEAgjB,IAAAA,QAAQ,CAACzqB,EAAT,GAAcs+B,MAAd;AACA7T,IAAAA,QAAQ,CAAC/kB,OAAT,GAAmB,oBAAoB64B,aAApB,GAAoC,GAApC,GAA0CC,WAA7D,CAvH4B,CAyH5B;;AACAzU,IAAAA,CAAC,CAACvU,OAAF,CAAU3M,IAAI,CAAC0R,KAAf,EAAsB1R,IAAI,CAAC4R,GAA3B,EAAgCgQ,QAAhC,EAA0CH,GAA1C;AACD,GA3HD;AA4HD,CA1IM;AA4IP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMrF,UAAU,GAAG,SAAbA,UAAa,CAAU1kB,IAAV,EAAgB;AACxCE,EAAAA,6CAAA,CAAS,oBAAT;AACAk9B,EAAAA,qDAAA;AACA,MAAMrU,MAAM,GAAGsU,4DAAf;AACAtU,EAAAA,MAAM,CAACM,EAAP,GAAY+T,+CAAZ;;AAEA,MAAI;AACF;AACArU,IAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb;AACD,GAHD,CAGE,OAAOiM,CAAP,EAAU;AACV;AACD;;AAED,SAAOmxB,0DAAA,EAAP;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMlS,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCS,EAAAA,6CAAA,CAAS,mBAAT;AACAk9B,EAAAA,qDAAA;AACAA,EAAAA,sDAAA,CAAc,OAAd;AACA,MAAMrU,MAAM,GAAGsU,4DAAf;AACAtU,EAAAA,MAAM,CAACM,EAAP,GAAY+T,+CAAZ,CALsC,CAOtC;AACA;;AACArU,EAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb,EATsC,CAUtC;AACA;AACA;AAEA;;AACA,MAAIsP,GAAG,GAAG8tB,4DAAA,EAAV;;AACA,MAAI,OAAO9tB,GAAP,KAAe,WAAnB,EAAgC;AAC9BA,IAAAA,GAAG,GAAG,IAAN;AACD;;AAED,MAAM7N,IAAI,GAAGK,kDAAS,GAAG8B,SAAzB;AACA,MAAMuZ,WAAW,GAAG1b,IAAI,CAAC0b,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG3b,IAAI,CAAC2b,WAAL,IAAoB,EAAxC;AAEA,MAAMhB,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CAxBsC,CAyBtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF,CAlCsC,CAoCtC;;AACA,MAAM8iB,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAED,GADD;AAERgH,IAAAA,OAAO,EAAE6G,WAFD;AAGR5G,IAAAA,OAAO,EAAE6G,WAHD;AAIR5G,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV;AAeA,MAAIynB,IAAJ;AACA,MAAMpF,SAAS,GAAGqE,4DAAA,EAAlB;AACAl9B,EAAAA,6CAAA,CAAS,cAAT,EAAyB64B,SAAzB;;AACA,OAAK,IAAI93B,EAAC,GAAG83B,SAAS,CAAC73B,MAAV,GAAmB,CAAhC,EAAmCD,EAAC,IAAI,CAAxC,EAA2CA,EAAC,EAA5C,EAAgD;AAC9Ck9B,IAAAA,IAAI,GAAGpF,SAAS,CAAC93B,EAAD,CAAhB;AACAf,IAAAA,6CAAA,CAAS,aAAT,EAAwBi+B,IAAxB;AACAf,IAAAA,yDAAA,CAAiBe,IAAI,CAAC1+B,EAAtB,EAA0B0+B,IAAI,CAAC9kB,KAA/B,EAAsC,OAAtC,EAA+C5V,SAA/C,EAA0D06B,IAAI,CAACh5B,OAA/D,EAAwEg5B,IAAI,CAAC7uB,GAA7E;AACD,GA3DqC,CA6DtC;;;AACA,MAAMiuB,IAAI,GAAGH,2DAAA,EAAb;AAEA,MAAM3tB,KAAK,GAAG2tB,wDAAA,EAAd;AAEAl9B,EAAAA,6CAAA,CAASuP,KAAT;AACA,MAAIxO,CAAC,GAAG,CAAR;;AACA,OAAKA,CAAC,GAAG83B,SAAS,CAAC73B,MAAV,GAAmB,CAA5B,EAA+BD,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;AAC1C;AACAk9B,IAAAA,IAAI,GAAGpF,SAAS,CAAC93B,CAAD,CAAhB;AAEA4mB,IAAAA,6CAAS,CAAC,SAAD,CAAT,CAAqBxiB,MAArB,CAA4B,MAA5B;;AAEA,SAAK,IAAIsC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGw2B,IAAI,CAAC3uB,KAAL,CAAWtO,MAA/B,EAAuCyG,CAAC,EAAxC,EAA4C;AAC1CzH,MAAAA,6CAAA,CAAS,sBAAT,EAAiCi+B,IAAI,CAAC3uB,KAAL,CAAW7H,CAAX,CAAjC,EAAgDw2B,IAAI,CAAC1+B,EAArD;AACA+pB,MAAAA,CAAC,CAACxZ,SAAF,CAAYmuB,IAAI,CAAC3uB,KAAL,CAAW7H,CAAX,CAAZ,EAA2Bw2B,IAAI,CAAC1+B,EAAhC;AACD;AACF;;AACD69B,EAAAA,WAAW,CAACC,IAAD,EAAO/T,CAAP,EAAU/pB,EAAV,EAAc2rB,IAAd,EAAoBI,GAApB,CAAX;AACAmS,EAAAA,QAAQ,CAACluB,KAAD,EAAQ+Z,CAAR,CAAR,CAhFsC,CAkFtC;AACA;AAEA;;AACA,MAAMhqB,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,iBAAoBpD,EAApB,SAAZ;AACAD,EAAAA,GAAG,CAACO,IAAJ,CAAS,aAAT,EAAwB,8BAAxB,EAvFsC,CAyFtC;;AACAT,EAAAA,0DAAyB,CAACypB,MAAM,CAACM,EAAR,EAAY7pB,GAAZ,EAAiBC,EAAjB,CAAzB,CA1FsC,CA4FtC;;AACA,MAAMid,OAAO,GAAG0O,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAN,GAAW,IAAvB,CAAhB;AACA+Q,EAAAA,gEAAM,CAACkM,OAAD,EAAU8M,CAAV,EAAa,CAAC,OAAD,EAAU,QAAV,EAAoB,OAApB,CAAb,EAA2C,WAA3C,EAAwD/pB,EAAxD,CAAN;AAEA,MAAM2E,OAAO,GAAG3C,IAAI,CAACyb,cAArB;AACA,MAAMoO,SAAS,GAAG9rB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AACAlE,EAAAA,8CAAA,2BACqBgE,KADrB,cAC8BC,MAD9B,uBAEeC,OAAO,GAAGolB,CAAC,CAAC+B,MAAF,CAAS/U,OAFlC,eAE8CpS,OAAO,GAAGolB,CAAC,CAAC+B,MAAF,CAAS9U,OAFjE;AAKA2S,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAM2E,MAAN,EAAcD,KAAd,EAAqBzC,IAAI,CAAC4b,WAA1B,CAAhB;AAEA7d,EAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,gBAA2BmE,KAA3B,cAAoCC,MAApC;AACA3E,EAAAA,GAAG,CACAqD,MADH,CACU,GADV,EAEG9C,IAFH,CAEQ,WAFR,sBAEkCqE,OAAO,GAAGolB,CAAC,CAAC+B,MAAF,CAAS/U,OAFrD,eAEiEpS,OAAO,GAAGknB,SAAS,CAACzmB,CAFrF,QA5GsC,CAgHtC;;AACAu4B,EAAAA,0DAAA,CAAkB,aAAan8B,CAA/B,EAjHsC,CAmHtC;;AACA,MAAI,CAACQ,IAAI,CAACoC,UAAV,EAAsB;AACpB,QAAM4nB,MAAM,GAAGD,GAAG,CAACE,gBAAJ,CAAqB,UAAUjsB,EAAV,GAAe,sBAApC,CAAf;;AACA,SAAK,IAAIksB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACvqB,MAA3B,EAAmCyqB,CAAC,EAApC,EAAwC;AACtC,UAAMtoB,KAAK,GAAGooB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,UAAMC,GAAG,GAAGvoB,KAAK,CAACM,OAAN,EAAZ;AAEA,UAAMZ,IAAI,GAAGyoB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,MAAlD,CAAb;AACA5D,MAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,MAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,MAAAA,IAAI,CAACuE,YAAL,CAAkB,OAAlB,EAA2BskB,GAAG,CAAC1nB,KAA/B;AACAnB,MAAAA,IAAI,CAACuE,YAAL,CAAkB,QAAlB,EAA4BskB,GAAG,CAACznB,MAAhC,EAVsC,CAWtC;;AAEAd,MAAAA,KAAK,CAACwoB,YAAN,CAAmB9oB,IAAnB,EAAyBM,KAAK,CAACyoB,UAA/B;AACD;AACF,GArIqC,CAuItC;;;AACA,MAAM9pB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYu7B,IAAZ,CAAb;AACAv7B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1B,QAAMsnB,MAAM,GAAG8T,IAAI,CAACp7B,GAAD,CAAnB;;AAEA,QAAIsnB,MAAM,CAACvN,IAAX,EAAiB;AACf,UAAMjZ,IAAI,GAAGJ,0CAAM,CAAC,MAAMpD,EAAN,GAAW,QAAX,GAAsB0C,GAAtB,GAA4B,IAA7B,CAAnB;;AACA,UAAIc,IAAJ,EAAU;AACR,YAAMiZ,IAAI,GAAGsP,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,GAAlD,CAAb;AACAuV,QAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,OAAlD,EAA2D4hB,MAAM,CAACtkB,OAAP,CAAeqS,IAAf,CAAoB,GAApB,CAA3D;AACA0E,QAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,MAAlD,EAA0D4hB,MAAM,CAACvN,IAAjE;AACAA,QAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,KAAlD,EAAyD,UAAzD;;AACA,YAAIuU,aAAa,KAAK,SAAtB,EAAiC;AAC/BF,UAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,QAAlD,EAA4D,MAA5D;AACD,SAFD,MAEO,IAAI4hB,MAAM,CAACpN,UAAX,EAAuB;AAC5BH,UAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,QAAlD,EAA4D4hB,MAAM,CAACpN,UAAnE;AACD;;AAED,YAAM+hB,QAAQ,GAAGn7B,IAAI,CAACvD,MAAL,CAAY,YAAY;AACvC,iBAAOwc,IAAP;AACD,SAFgB,EAEd,cAFc,CAAjB;AAIA,YAAMvW,KAAK,GAAG1C,IAAI,CAACJ,MAAL,CAAY,kBAAZ,CAAd;;AACA,YAAI8C,KAAJ,EAAW;AACTy4B,UAAAA,QAAQ,CAAC/4B,MAAT,CAAgB,YAAY;AAC1B,mBAAOM,KAAK,CAAC1C,IAAN,EAAP;AACD,WAFD;AAGD;;AAED,YAAMI,MAAK,GAAGJ,IAAI,CAACJ,MAAL,CAAY,QAAZ,CAAd;;AACA,YAAIQ,MAAJ,EAAW;AACT+6B,UAAAA,QAAQ,CAAC/4B,MAAT,CAAgB,YAAY;AAC1B,mBAAOhC,MAAK,CAACJ,IAAN,EAAP;AACD,WAFD;AAGD;AACF;AACF;AACF,GAnCD;AAoCD,CA7KM;AA+KP,iEAAe;AACb+nB,EAAAA,OAAO,EAAPA,OADa;AAEbsS,EAAAA,WAAW,EAAXA,WAFa;AAGbK,EAAAA,QAAQ,EAARA,QAHa;AAIbjZ,EAAAA,UAAU,EAAVA,UAJa;AAKbwG,EAAAA,IAAI,EAAJA;AALa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrhBA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMzpB,IAAI,GAAG,EAAb;AACO,IAAMupB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;;AACA,OAAK,IAAIhqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBgqB,GAAG,CAACjpB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMq8B,WAAW,GAAG,SAAdA,WAAc,CAAUC,IAAV,EAAgB/T,CAAhB,EAAmBgU,KAAnB,EAA0BpS,IAA1B,EAAgCkT,IAAhC,EAAsC;AAC/D,MAAMliB,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC;AAEA,MAAM5c,GAAG,GAAG,CAAC4rB,IAAD,GAAQvoB,0CAAM,iBAAS26B,KAAT,SAAd,GAAoCpS,IAAI,CAACvoB,MAAL,iBAAoB26B,KAApB,SAAhD;AACA,MAAMhS,GAAG,GAAG,CAAC8S,IAAD,GAAQ53B,QAAR,GAAmB43B,IAA/B;AACA,MAAMt8B,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYu7B,IAAZ,CAAb,CAL+D,CAO/D;;AACAv7B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUzC,EAAV,EAAc;AACzB,QAAMgqB,MAAM,GAAG8T,IAAI,CAAC99B,EAAD,CAAnB;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAIg+B,QAAQ,GAAG,SAAf;;AACA,QAAIhU,MAAM,CAACtkB,OAAP,CAAejE,MAAf,GAAwB,CAA5B,EAA+B;AAC7Bu8B,MAAAA,QAAQ,GAAGhU,MAAM,CAACtkB,OAAP,CAAeqS,IAAf,CAAoB,GAApB,CAAX;AACD;;AAED,QAAMmS,MAAM,GAAGR,0DAAkB,CAACM,MAAM,CAACE,MAAR,CAAjC,CAbyB,CAezB;;AACA,QAAI1iB,UAAU,GAAGwiB,MAAM,CAACzpB,IAAP,KAAgByD,SAAhB,GAA4BgmB,MAAM,CAACzpB,IAAnC,GAA0CypB,MAAM,CAAChqB,EAAlE,CAhByB,CAkBzB;;AACA,QAAI2H,UAAJ;;AACA,QAAItE,wDAAQ,CAAChB,kDAAS,GAAG8B,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9C;AACA,UAAMZ,IAAI,GAAG;AACXI,QAAAA,KAAK,EAAE4D,UAAU,CAACC,OAAX,CACL,sBADK,EAEL,UAACC,CAAD;AAAA,qCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,SAFK;AADI,OAAb;AAMAE,MAAAA,UAAU,GAAGZ,2EAAY,CAAChH,GAAD,EAAMyD,IAAN,CAAZ,CAAwBA,IAAxB,EAAb;AACAmE,MAAAA,UAAU,CAACs2B,UAAX,CAAsB73B,WAAtB,CAAkCuB,UAAlC;AACD,KAVD,MAUO;AACL,UAAMC,QAAQ,GAAGmkB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,MAAlD,CAAjB;AACAU,MAAAA,QAAQ,CAACC,YAAT,CAAsB,OAAtB,EAA+BqiB,MAAM,CAACnmB,UAAP,CAAkB0D,OAAlB,CAA0B,QAA1B,EAAoC,OAApC,CAA/B;AAEA,UAAMK,IAAI,GAAGN,UAAU,CAACO,KAAX,CAAiB+b,qEAAjB,CAAb;;AAEA,WAAK,IAAI5b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACrG,MAAzB,EAAiCyG,CAAC,EAAlC,EAAsC;AACpC,YAAMC,KAAK,GAAG4jB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,OAAlD,CAAd;AACAiB,QAAAA,KAAK,CAACC,cAAN,CAAqB,sCAArB,EAA6D,WAA7D,EAA0E,UAA1E;AACAD,QAAAA,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACAM,QAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,GAAxB;AACAM,QAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAxB;AACAN,QAAAA,QAAQ,CAAC/D,WAAT,CAAqBsE,KAArB;AACD;;AACDR,MAAAA,UAAU,GAAGC,QAAb;AACD;;AAED,QAAIuiB,OAAO,GAAG,CAAd;AACA,QAAIC,MAAM,GAAG,EAAb,CAhDyB,CAiDzB;;AACA,YAAQJ,MAAM,CAAClZ,IAAf;AACE,WAAK,OAAL;AACEqZ,QAAAA,OAAO,GAAG,CAAV;AACAC,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,KAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,WAAT;AACA;;AACF,WAAK,eAAL;AACEA,QAAAA,MAAM,GAAG,eAAT;AACA;;AACF,WAAK,WAAL;AACEA,QAAAA,MAAM,GAAG,qBAAT;AACA;;AACF,WAAK,QAAL;AACEA,QAAAA,MAAM,GAAG,QAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,SAAL;AACEA,QAAAA,MAAM,GAAG,SAAT;AACA;;AACF,WAAK,YAAL;AACEA,QAAAA,MAAM,GAAG,YAAT;AACA;;AACF,WAAK,UAAL;AACEA,QAAAA,MAAM,GAAG,UAAT;AACA;;AACF,WAAK,OAAL;AACEA,QAAAA,MAAM,GAAG,MAAT;AACA;;AACF;AACEA,QAAAA,MAAM,GAAG,MAAT;AAnDJ,KAlDyB,CAuGzB;;;AACA3pB,IAAAA,6CAAA,CAAS,aAAT,EAAwBupB,MAAM,CAAChqB,EAA/B,EAAmCgqB,MAAM,CAACnS,KAA1C;AACAkS,IAAAA,CAAC,CAACzZ,OAAF,CAAUqtB,2DAAA,CAAmB3T,MAAM,CAAChqB,EAA1B,CAAV,EAAyC;AACvCkrB,MAAAA,SAAS,EAAE,KAD4B;AAEvCnnB,MAAAA,UAAU,EAAEmmB,MAAM,CAACnmB,UAFoB;AAGvCmC,MAAAA,KAAK,EAAEkkB,MAHgC;AAIvCxmB,MAAAA,KAAK,EAAE+D,UAJgC;AAKvC1C,MAAAA,EAAE,EAAEklB,OALmC;AAMvCjlB,MAAAA,EAAE,EAAEilB,OANmC;AAOvCxmB,MAAAA,KAAK,EAAEq6B,QAPgC;AAQvCh5B,MAAAA,KAAK,EAAEklB,MAAM,CAACllB,KARyB;AASvChF,MAAAA,EAAE,EAAE29B,2DAAA,CAAmB3T,MAAM,CAAChqB,EAA1B;AATmC,KAAzC;AAWD,GApHD;AAqHD,CA7HM;AA+HP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMk+B,QAAQ,GAAG,SAAXA,QAAW,CAAUluB,KAAV,EAAiB+Z,CAAjB,EAAoB;AAC1C,MAAIO,GAAG,GAAG,CAAV;AAEA,MAAIC,YAAJ;AACA,MAAIC,iBAAJ;;AAEA,MAAI,OAAOxa,KAAK,CAACua,YAAb,KAA8B,WAAlC,EAA+C;AAC7C,QAAM6T,aAAa,GAAG1U,0DAAkB,CAAC1Z,KAAK,CAACua,YAAP,CAAxC;AACAA,IAAAA,YAAY,GAAG6T,aAAa,CAACp5B,KAA7B;AACAwlB,IAAAA,iBAAiB,GAAG4T,aAAa,CAACr6B,UAAlC;AACD;;AAEDiM,EAAAA,KAAK,CAACvN,OAAN,CAAc,UAAUoG,IAAV,EAAgB;AAC5ByhB,IAAAA,GAAG,GADyB,CAG5B;;AACA,QAAIgU,MAAM,GAAG,OAAOz1B,IAAI,CAAC0R,KAAZ,GAAoB,GAApB,GAA0B1R,IAAI,CAAC4R,GAA5C;AACA,QAAI8jB,aAAa,GAAG,QAAQ11B,IAAI,CAAC0R,KAAjC;AACA,QAAIikB,WAAW,GAAG,QAAQ31B,IAAI,CAAC4R,GAA/B;AAEA,QAAMgQ,QAAQ,GAAG,EAAjB,CAR4B,CAU5B;;AACA,QAAI5hB,IAAI,CAACiI,IAAL,KAAc,YAAlB,EAAgC;AAC9B2Z,MAAAA,QAAQ,CAACC,SAAT,GAAqB,MAArB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,SAAT,GAAqB,QAArB;AACD;;AAED,QAAI1lB,KAAK,GAAG,EAAZ;AACA,QAAIjB,UAAU,GAAG,EAAjB;;AAEA,QAAI,OAAO8E,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrC,UAAMklB,MAAM,GAAGR,0DAAkB,CAAC7gB,IAAI,CAAC7D,KAAN,CAAjC;AACAA,MAAAA,KAAK,GAAGklB,MAAM,CAACllB,KAAf;AACAjB,MAAAA,UAAU,GAAGmmB,MAAM,CAACnmB,UAApB;AACD,KAJD,MAIO;AACL,cAAQ8E,IAAI,CAAC0Z,MAAb;AACE,aAAK,QAAL;AACEvd,UAAAA,KAAK,GAAG,WAAR;;AACA,cAAI,OAAOulB,YAAP,KAAwB,WAA5B,EAAyC;AACvCvlB,YAAAA,KAAK,GAAGulB,YAAR;AACD;;AACD,cAAI,OAAOC,iBAAP,KAA6B,WAAjC,EAA8C;AAC5CzmB,YAAAA,UAAU,GAAGymB,iBAAb;AACD;;AACD;;AACF,aAAK,QAAL;AACExlB,UAAAA,KAAK,GAAG,gDAAR;AACA;;AACF,aAAK,OAAL;AACEA,UAAAA,KAAK,GAAG,gCAAR;AACA;AAfJ;AAiBD;;AAEDylB,IAAAA,QAAQ,CAACzlB,KAAT,GAAiBA,KAAjB;AACAylB,IAAAA,QAAQ,CAAC1mB,UAAT,GAAsBA,UAAtB;;AAEA,QAAI,OAAO8E,IAAI,CAACiiB,WAAZ,KAA4B,WAAhC,EAA6C;AAC3CL,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAAC5gB,IAAI,CAACiiB,WAAN,EAAmBtB,2CAAnB,CAAnC;AACD,KAFD,MAEO,IAAI,OAAOxZ,KAAK,CAAC+a,kBAAb,KAAoC,WAAxC,EAAqD;AAC1DN,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAACzZ,KAAK,CAAC+a,kBAAP,EAA2BvB,2CAA3B,CAAnC;AACD,KAFM,MAEA;AACLiB,MAAAA,QAAQ,CAAC/c,KAAT,GAAiB+b,0DAAkB,CAACznB,IAAI,CAAC0L,KAAN,EAAa8b,2CAAb,CAAnC;AACD;;AAED,QAAI,OAAO3gB,IAAI,CAACtI,IAAZ,KAAqB,WAAzB,EAAsC;AACpC,UAAI,OAAOsI,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrCylB,QAAAA,QAAQ,CAACO,cAAT,GAA0B,YAA1B;AACD;AACF,KAJD,MAIO;AACLP,MAAAA,QAAQ,CAACO,cAAT,GAA0B,YAA1B;AACAP,MAAAA,QAAQ,CAACQ,QAAT,GAAoB,GAApB;;AAEA,UAAI5nB,wDAAQ,CAAChB,kDAAS,GAAG8B,SAAZ,CAAsBC,UAAvB,CAAZ,EAAgD;AAC9CqmB,QAAAA,QAAQ,CAACS,SAAT,GAAqB,MAArB;AACAT,QAAAA,QAAQ,CAAC7mB,KAAT,0BAAgC06B,MAAhC,oCAA8DC,aAA9D,iBAAkFC,WAAlF,gBAAkG31B,IAAI,CAACtI,IAAL,CAAUkH,OAAV,CAChG,sBADgG,EAEhG,UAACC,CAAD;AAAA,qCAAoBA,CAAC,CAACD,OAAF,CAAU,GAAV,EAAe,GAAf,CAApB;AAAA,SAFgG,CAAlG;AAID,OAND,MAMO;AACLgjB,QAAAA,QAAQ,CAACS,SAAT,GAAqB,MAArB;AACAT,QAAAA,QAAQ,CAAC7mB,KAAT,GAAiBiF,IAAI,CAACtI,IAAL,CAAUkH,OAAV,CAAkBqc,qEAAlB,EAAyC,IAAzC,CAAjB;;AAEA,YAAI,OAAOjb,IAAI,CAAC7D,KAAZ,KAAsB,WAA1B,EAAuC;AACrCylB,UAAAA,QAAQ,CAACzlB,KAAT,GAAiBylB,QAAQ,CAACzlB,KAAT,IAAkB,6CAAnC;AACD;;AAEDylB,QAAAA,QAAQ,CAAC1mB,UAAT,GAAsB0mB,QAAQ,CAAC1mB,UAAT,CAAoB0D,OAApB,CAA4B,QAA5B,EAAsC,OAAtC,CAAtB;AACD;AACF;;AAEDgjB,IAAAA,QAAQ,CAACzqB,EAAT,GAAcs+B,MAAd;AACA7T,IAAAA,QAAQ,CAAC9mB,KAAT,GAAiB46B,aAAa,GAAG,GAAhB,GAAsBC,WAAvC;AACA/T,IAAAA,QAAQ,CAACgU,MAAT,GAAkB51B,IAAI,CAACpH,MAAL,IAAe,CAAjC,CAnF4B,CAqF5B;;AACAsoB,IAAAA,CAAC,CAACvU,OAAF,CAAUmoB,2DAAA,CAAmB90B,IAAI,CAAC0R,KAAxB,CAAV,EAA0CojB,2DAAA,CAAmB90B,IAAI,CAAC4R,GAAxB,CAA1C,EAAwEgQ,QAAxE,EAAkFH,GAAlF;AACD,GAvFD;AAwFD,CApGM;AAsGP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMrF,UAAU,GAAG,SAAbA,UAAa,CAAU1kB,IAAV,EAAgB;AACxCE,EAAAA,6CAAA,CAAS,oBAAT;AACAk9B,EAAAA,qDAAA;;AACA,MAAI;AACF,QAAMrU,MAAM,GAAGsU,4DAAf;AACAtU,IAAAA,MAAM,CAACM,EAAP,GAAY+T,+CAAZ,CAFE,CAIF;;AACArU,IAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb;AACA,WAAOo9B,0DAAA,EAAP;AACD,GAPD,CAOE,OAAOnxB,CAAP,EAAU;AACV;AACD;AACF,CAbM;AAeP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMif,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCS,EAAAA,6CAAA,CAAS,mBAAT;AACAk9B,EAAAA,qDAAA;AACAA,EAAAA,sDAAA,CAAc,OAAd;AACA,MAAMrU,MAAM,GAAGsU,4DAAf;AACAtU,EAAAA,MAAM,CAACM,EAAP,GAAY+T,+CAAZ;AAEA,MAAMhhB,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF,CAhBsC,CAkBtC;AACA;;AACAqiB,EAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb,EApBsC,CAqBtC;AACA;AACA;AAEA;;AACA,MAAIsP,GAAG,GAAG8tB,4DAAA,EAAV;;AACA,MAAI,OAAO9tB,GAAP,KAAe,WAAnB,EAAgC;AAC9BA,IAAAA,GAAG,GAAG,IAAN;AACD;;AAED,MAAM7N,IAAI,GAAGK,kDAAS,GAAG8B,SAAzB;AACA,MAAMuZ,WAAW,GAAG1b,IAAI,CAAC0b,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG3b,IAAI,CAAC2b,WAAL,IAAoB,EAAxC,CAjCsC,CAmCtC;;AACA,MAAMoM,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAED,GADD;AAERgH,IAAAA,OAAO,EAAE6G,WAFD;AAGR5G,IAAAA,OAAO,EAAE6G,WAHD;AAIR5G,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV;AAeA,MAAIynB,IAAJ;AACA,MAAMpF,SAAS,GAAGqE,4DAAA,EAAlB;;AACA,OAAK,IAAIn8B,EAAC,GAAG83B,SAAS,CAAC73B,MAAV,GAAmB,CAAhC,EAAmCD,EAAC,IAAI,CAAxC,EAA2CA,EAAC,EAA5C,EAAgD;AAC9Ck9B,IAAAA,IAAI,GAAGpF,SAAS,CAAC93B,EAAD,CAAhB;AACAm8B,IAAAA,yDAAA,CAAiBe,IAAI,CAAC1+B,EAAtB,EAA0B0+B,IAAI,CAAC9kB,KAA/B,EAAsC,OAAtC,EAA+C5V,SAA/C,EAA0D06B,IAAI,CAACh5B,OAA/D;AACD,GAxDqC,CA0DtC;;;AACA,MAAMo4B,IAAI,GAAGH,2DAAA,EAAb;AACAl9B,EAAAA,6CAAA,CAAS,cAAT,EAAyBq9B,IAAzB;AAEA,MAAM9tB,KAAK,GAAG2tB,wDAAA,EAAd;AAEA,MAAIn8B,CAAC,GAAG,CAAR;;AACA,OAAKA,CAAC,GAAG83B,SAAS,CAAC73B,MAAV,GAAmB,CAA5B,EAA+BD,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;AAC1Ck9B,IAAAA,IAAI,GAAGpF,SAAS,CAAC93B,CAAD,CAAhB;AAEA4mB,IAAAA,6CAAS,CAAC,SAAD,CAAT,CAAqBxiB,MAArB,CAA4B,MAA5B;;AAEA,SAAK,IAAIsC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGw2B,IAAI,CAAC3uB,KAAL,CAAWtO,MAA/B,EAAuCyG,CAAC,EAAxC,EAA4C;AAC1CzH,MAAAA,6CAAA,CACE,kBADF,EAEEi+B,IAAI,CAAC3uB,KAAL,CAAW7H,CAAX,CAFF,EAGEy1B,2DAAA,CAAmBe,IAAI,CAAC3uB,KAAL,CAAW7H,CAAX,CAAnB,CAHF,EAIEy1B,2DAAA,CAAmBe,IAAI,CAAC1+B,EAAxB,CAJF;AAMA+pB,MAAAA,CAAC,CAACxZ,SAAF,CAAYotB,2DAAA,CAAmBe,IAAI,CAAC3uB,KAAL,CAAW7H,CAAX,CAAnB,CAAZ,EAA+Cy1B,2DAAA,CAAmBe,IAAI,CAAC1+B,EAAxB,CAA/C;AACD;AACF;;AACD69B,EAAAA,WAAW,CAACC,IAAD,EAAO/T,CAAP,EAAU/pB,EAAV,EAAc2rB,IAAd,EAAoBI,GAApB,CAAX;AACAmS,EAAAA,QAAQ,CAACluB,KAAD,EAAQ+Z,CAAR,CAAR,CAjFsC,CAmFtC;;AACA,MAAM+U,MAAM,GAAG9F,wDAAf;AACA,MAAMjoB,MAAM,GAAG,IAAI+tB,MAAJ,EAAf,CArFsC,CAuFtC;;AACAF,EAAAA,qEAAA,CAA4B7tB,MAA5B,EAxFsC,CA0FtC;;AACAA,EAAAA,MAAM,CAACguB,MAAP,GAAgBC,IAAhB,GAAuB,SAASC,MAAT,CAAgB17B,MAAhB,EAAwBvD,EAAxB,EAA4B6I,IAA5B,EAAkCiI,IAAlC,EAAwC;AAC7D,QAAMwb,MAAM,GAAG/oB,MAAM,CAClBqC,MADY,CACL,QADK,EAEZtF,IAFY,CAEP,IAFO,EAEDN,EAFC,EAGZM,IAHY,CAGP,SAHO,EAGI,WAHJ,EAIZA,IAJY,CAIP,MAJO,EAIC,CAJD,EAKZA,IALY,CAKP,MALO,EAKC,CALD,EAMZA,IANY,CAMP,aANO,EAMQ,aANR,EAOZA,IAPY,CAOP,aAPO,EAOQ,CAPR,EAQZA,IARY,CAQP,cARO,EAQS,CART,EASZA,IATY,CASP,QATO,EASG,MATH,CAAf;AAWA,QAAM8J,IAAI,GAAGkiB,MAAM,CAAC1mB,MAAP,CAAc,MAAd,EAAsBtF,IAAtB,CAA2B,GAA3B,EAAgC,qBAAhC,CAAb;AACA04B,IAAAA,+DAAA,CAAwB5uB,IAAxB,EAA8BvB,IAAI,CAACiI,IAAI,GAAG,OAAR,CAAlC;AACD,GAdD,CA3FsC,CA2GtC;;;AACAC,EAAAA,MAAM,CAACguB,MAAP,GAAgBE,MAAhB,GAAyB,SAASA,MAAT,CAAgB17B,MAAhB,EAAwBvD,EAAxB,EAA4B;AACnD,QAAMssB,MAAM,GAAG/oB,MAAM,CAClBqC,MADY,CACL,QADK,EAEZtF,IAFY,CAEP,IAFO,EAEDN,EAFC,EAGZM,IAHY,CAGP,SAHO,EAGI,WAHJ,EAIZA,IAJY,CAIP,MAJO,EAIC,CAJD,EAKZA,IALY,CAKP,MALO,EAKC,CALD,EAMZA,IANY,CAMP,aANO,EAMQ,aANR,EAOZA,IAPY,CAOP,aAPO,EAOQ,CAPR,EAQZA,IARY,CAQP,cARO,EAQS,CART,EASZA,IATY,CASP,QATO,EASG,MATH,CAAf;AAWAgsB,IAAAA,MAAM,CACH1mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,GAFR,EAEa,uBAFb,EAGGA,IAHH,CAGQ,OAHR,EAGiB,eAHjB,EAIG0E,KAJH,CAIS,cAJT,EAIyB,CAJzB,EAKGA,KALH,CAKS,kBALT,EAK6B,KAL7B;AAMD,GAlBD,CA5GsC,CAgItC;;;AACA,MAAMjF,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,iBAAoBpD,EAApB,SAAZ;AACAD,EAAAA,GAAG,CAACO,IAAJ,CAAS,aAAT,EAAwB,8BAAxB;AAEAG,EAAAA,6CAAA,CAASspB,CAAT,EApIsC,CAsItC;;AACAlqB,EAAAA,2DAAyB,CAACypB,MAAM,CAACM,EAAR,EAAY7pB,GAAZ,EAAiBC,EAAjB,CAAzB,CAvIsC,CAyItC;;AACA,MAAMid,OAAO,GAAG0O,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAN,GAAW,IAAvB,CAAhB;AACA+Q,EAAAA,MAAM,CAACkM,OAAD,EAAU8M,CAAV,CAAN;AAEA9M,EAAAA,OAAO,CAACmL,SAAR,CAAkB,QAAlB,EAA4B9nB,IAA5B,CAAiC,OAAjC,EAA0C,YAAY;AACpD,WAAOq9B,0DAAA,CAAkB,KAAK39B,EAAvB,CAAP;AACD,GAFD;AAIA,MAAM2E,OAAO,GAAG3C,IAAI,CAACyb,cAArB;AACA,MAAMoO,SAAS,GAAG9rB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAglB,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAM2E,MAAN,EAAcD,KAAd,EAAqBzC,IAAI,CAAC4b,WAA1B,CAAhB,CAtJsC,CAwJtC;;AACA,MAAMgP,IAAI,aAAMf,SAAS,CAAC1mB,CAAV,GAAcR,OAApB,cAA+BknB,SAAS,CAACzmB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACAjE,EAAAA,8CAAA,mBAAqBmsB,IAArB;AACA7sB,EAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,EAAoBssB,IAApB,EA3JsC,CA6JtC;;AACA+Q,EAAAA,0DAAA,CAAkB,aAAan8B,CAA/B,EA9JsC,CAgKtC;;AACA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG83B,SAAS,CAAC73B,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrCk9B,IAAAA,IAAI,GAAGpF,SAAS,CAAC93B,CAAD,CAAhB;;AACA,QAAIk9B,IAAI,CAAC9kB,KAAL,KAAe,WAAnB,EAAgC;AAC9B,UAAMulB,YAAY,GAAGpT,GAAG,CAACE,gBAAJ,CACnB,MAAMjsB,EAAN,GAAW,QAAX,GAAsB29B,2DAAA,CAAmBe,IAAI,CAAC1+B,EAAxB,CAAtB,GAAoD,SADjC,CAArB;AAGA,UAAMo/B,SAAS,GAAGrT,GAAG,CAACE,gBAAJ,CAChB,MAAMjsB,EAAN,GAAW,QAAX,GAAsB29B,2DAAA,CAAmBe,IAAI,CAAC1+B,EAAxB,CAAtB,GAAoD,IADpC,CAAlB;AAIA,UAAMq/B,IAAI,GAAGF,YAAY,CAAC,CAAD,CAAZ,CAAgBh6B,CAAhB,CAAkBm6B,OAAlB,CAA0Br1B,KAAvC;AACA,UAAMs1B,IAAI,GAAGJ,YAAY,CAAC,CAAD,CAAZ,CAAgB/5B,CAAhB,CAAkBk6B,OAAlB,CAA0Br1B,KAAvC;AACA,UAAMxF,MAAK,GAAG06B,YAAY,CAAC,CAAD,CAAZ,CAAgB16B,KAAhB,CAAsB66B,OAAtB,CAA8Br1B,KAA5C;AACA,UAAMu1B,OAAO,GAAGp8B,0CAAM,CAACg8B,SAAS,CAAC,CAAD,CAAV,CAAtB;AACA,UAAMK,EAAE,GAAGD,OAAO,CAACp8B,MAAR,CAAe,QAAf,CAAX;AACAq8B,MAAAA,EAAE,CAACn/B,IAAH,CAAQ,WAAR,sBAAkC++B,IAAI,GAAG56B,MAAK,GAAG,CAAjD,eAAuD86B,IAAI,GAAG,EAA9D;AACAE,MAAAA,EAAE,CAACn/B,IAAH,CAAQ,IAAR,EAAcN,EAAE,GAAG,MAAnB;;AAEA,WAAK,IAAIkI,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGw2B,IAAI,CAACh5B,OAAL,CAAajE,MAAjC,EAAyCyG,EAAC,EAA1C,EAA8C;AAC5Ck3B,QAAAA,SAAS,CAAC,CAAD,CAAT,CAAaM,SAAb,CAAuBC,GAAvB,CAA2BjB,IAAI,CAACh5B,OAAL,CAAawC,EAAb,CAA3B;AACD;AACF;AACF,GAvLqC,CAyLtC;;;AACA,MAAI,CAAC7E,wDAAQ,CAACrB,IAAI,CAACoC,UAAN,CAAT,IAA8B,IAAlC,EAAwC;AAAE;AACxC,QAAM4nB,MAAM,GAAGD,GAAG,CAACE,gBAAJ,CAAqB,UAAUjsB,EAAV,GAAe,sBAApC,CAAf;;AACA,SAAK,IAAIksB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACvqB,MAA3B,EAAmCyqB,CAAC,EAApC,EAAwC;AACtC,UAAMtoB,KAAK,GAAGooB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,UAAMC,GAAG,GAAGvoB,KAAK,CAACM,OAAN,EAAZ;AAEA,UAAMZ,IAAI,GAAGyoB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,MAAlD,CAAb;AACA5D,MAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,MAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,MAAAA,IAAI,CAACuE,YAAL,CAAkB,OAAlB,EAA2BskB,GAAG,CAAC1nB,KAA/B;AACAnB,MAAAA,IAAI,CAACuE,YAAL,CAAkB,QAAlB,EAA4BskB,GAAG,CAACznB,MAAhC,EAVsC,CAWtC;;AAEAd,MAAAA,KAAK,CAACwoB,YAAN,CAAmB9oB,IAAnB,EAAyBM,KAAK,CAACyoB,UAA/B;AACD;AACF,GA3MqC,CA6MtC;;;AACA,MAAM9pB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYu7B,IAAZ,CAAb;AACAv7B,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1B,QAAMsnB,MAAM,GAAG8T,IAAI,CAACp7B,GAAD,CAAnB;;AAEA,QAAIsnB,MAAM,CAACvN,IAAX,EAAiB;AACf,UAAMjZ,IAAI,GAAGmoB,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAN,GAAW,QAAX,GAAsB29B,2DAAA,CAAmBj7B,GAAnB,CAAtB,GAAgD,IAA5D,CAAb;;AACA,UAAIc,IAAJ,EAAU;AACR,YAAMiZ,IAAI,GAAGsP,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,GAAlD,CAAb;AACAuV,QAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,OAAlD,EAA2D4hB,MAAM,CAACtkB,OAAP,CAAeqS,IAAf,CAAoB,GAApB,CAA3D;AACA0E,QAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,MAAlD,EAA0D4hB,MAAM,CAACvN,IAAjE;AACAA,QAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,KAAlD,EAAyD,UAAzD;;AACA,YAAIuU,aAAa,KAAK,SAAtB,EAAiC;AAC/BF,UAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,QAAlD,EAA4D,MAA5D;AACD,SAFD,MAEO,IAAI4hB,MAAM,CAACpN,UAAX,EAAuB;AAC5BH,UAAAA,IAAI,CAACrU,cAAL,CAAoB,4BAApB,EAAkD,QAAlD,EAA4D4hB,MAAM,CAACpN,UAAnE;AACD;;AAED,YAAM+hB,QAAQ,GAAGn7B,IAAI,CAACvD,MAAL,CAAY,YAAY;AACvC,iBAAOwc,IAAP;AACD,SAFgB,EAEd,cAFc,CAAjB;AAIA,YAAMvW,KAAK,GAAG1C,IAAI,CAACJ,MAAL,CAAY,kBAAZ,CAAd;;AACA,YAAI8C,KAAJ,EAAW;AACTy4B,UAAAA,QAAQ,CAAC/4B,MAAT,CAAgB,YAAY;AAC1B,mBAAOM,KAAK,CAAC1C,IAAN,EAAP;AACD,WAFD;AAGD;;AAED,YAAMI,MAAK,GAAGJ,IAAI,CAACJ,MAAL,CAAY,QAAZ,CAAd;;AACA,YAAIQ,MAAJ,EAAW;AACT+6B,UAAAA,QAAQ,CAAC/4B,MAAT,CAAgB,YAAY;AAC1B,mBAAOhC,MAAK,CAACJ,IAAN,EAAP;AACD,WAFD;AAGD;AACF;AACF;AACF,GAnCD;AAoCD,CAnPM;AAqPP,iEAAe;AACb+nB,EAAAA,OAAO,EAAPA,OADa;AAEbsS,EAAAA,WAAW,EAAXA,WAFa;AAGbK,EAAAA,QAAQ,EAARA,QAHa;AAIbjZ,EAAAA,UAAU,EAAVA,UAJa;AAKbwG,EAAAA,IAAI,EAAJA;AALa,CAAf;;;;;;;;;;;;;;;AC5hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,8CAECA,OAAO,CAACS,UAFT,2BAGLT,OAAO,CAACs9B,aAAR,IAAyBt9B,OAAO,CAACu9B,SAH5B,wDAMNv9B,OAAO,CAACw9B,UANF,yDASLx9B,OAAO,CAACw9B,UATH,uDAaNx9B,OAAO,CAACs9B,aAAR,IAAyBt9B,OAAO,CAACu9B,SAb3B,2BAcLv9B,OAAO,CAACs9B,aAAR,IAAyBt9B,OAAO,CAACu9B,SAd5B,qHAsBNv9B,OAAO,CAAC0qB,OAtBF,4BAuBJ1qB,OAAO,CAACwqB,UAvBJ,+KAmCNxqB,OAAO,CAACy9B,cAnCF,wDAuCJz9B,OAAO,CAAC2qB,SAvCJ,kFA4CJ3qB,OAAO,CAAC2qB,SA5CJ,8EAiDM3qB,OAAO,CAAC09B,mBAjDd,yEAoDQ19B,OAAO,CAAC09B,mBApDhB,4BAqDJ19B,OAAO,CAAC09B,mBArDJ,oFA2DN19B,OAAO,CAAC29B,UA3DF,4BA4DJ39B,OAAO,CAAC49B,aA5DJ,4EAiEN59B,OAAO,CAACw9B,UAjEF,qDAqELx9B,OAAO,CAACw9B,UArEH,qDAwELx9B,OAAO,CAACw9B,UAxEH,+JAgFCx9B,OAAO,CAACS,UAhFT,sDAkFAT,OAAO,CAACy2B,aAlFR,sCAmFMz2B,OAAO,CAAC69B,OAnFd;AAAA,CAAlB;;AA0FA,iEAAetT,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIyT,UAAU,GAAG,EAAjB;AACA,IAAI5f,UAAU,GAAG,EAAjB;AACA,IAAI6f,WAAW,GAAG,EAAlB;AACA,IAAIhnB,QAAQ,GAAG,EAAf;AACA,IAAIinB,QAAQ,GAAG,EAAf;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAI7mB,KAAK,GAAG,EAAZ;AACA,IAAIuP,cAAc,GAAG,EAArB;AACA,IAAIuX,QAAQ,GAAG,EAAf;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAMC,IAAI,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,EAA2B,WAA3B,CAAb;AACA,IAAI1c,IAAI,GAAG,EAAX;AACA,IAAI2c,iBAAiB,GAAG,KAAxB;AACA,IAAIngB,OAAO,GAAG,KAAd,EAEA;;AACA,IAAIogB,SAAS,GAAG,CAAhB;;AAEA,IAAMt6B,YAAY,GAAG,SAAfA,YAAe,CAAUE,GAAV,EAAe;AAClC,SAAOmd,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAP;AACD,CAFD;;AAIO,IAAMO,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;AAIA,IAAMzK,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/Bq6B,EAAAA,QAAQ,GAAG,EAAX;AACAC,EAAAA,KAAK,GAAG,EAAR;AACAC,EAAAA,cAAc,GAAG,EAAjB;AACAzc,EAAAA,IAAI,GAAG,EAAP;AACAvK,EAAAA,KAAK,GAAG,EAAR;AACAonB,EAAAA,OAAO,GAAG,CAAV;AACAC,EAAAA,QAAQ,GAAGj9B,SAAX;AACAk9B,EAAAA,UAAU,GAAGl9B,SAAb;AACAm9B,EAAAA,QAAQ,GAAG,EAAX;AACAb,EAAAA,UAAU,GAAG,EAAb;AACA5f,EAAAA,UAAU,GAAG,EAAb;AACA6f,EAAAA,WAAW,GAAG,EAAd;AACAhnB,EAAAA,QAAQ,GAAG,EAAX;AACAinB,EAAAA,QAAQ,GAAG,EAAX;AACAM,EAAAA,iBAAiB,GAAG,KAApB;AACAngB,EAAAA,OAAO,GAAG,KAAV;AACAogB,EAAAA,SAAS,GAAG,CAAZ;AACAN,EAAAA,KAAK,GAAG,EAAR;AACD,CAnBM;AAqBA,IAAMW,aAAa,GAAG,SAAhBA,aAAgB,CAAUz6B,GAAV,EAAe;AAC1C+Z,EAAAA,UAAU,GAAG/Z,GAAb;AACD,CAFM;AAIA,IAAM06B,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AACvC,SAAO3gB,UAAP;AACD,CAFM;AAIA,IAAM4gB,cAAc,GAAG,SAAjBA,cAAiB,CAAU36B,GAAV,EAAe;AAC3C45B,EAAAA,WAAW,GAAG55B,GAAd;AACD,CAFM;AAIA,IAAM46B,cAAc,GAAG,SAAjBA,cAAiB,GAAY;AACxC,SAAOhB,WAAP;AACD,CAFM;AAIA,IAAMiB,aAAa,GAAG,SAAhBA,aAAgB,CAAU76B,GAAV,EAAe;AAC1C25B,EAAAA,UAAU,GAAG35B,GAAb;AACD,CAFM;AAIA,IAAM86B,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAY;AACjDX,EAAAA,iBAAiB,GAAG,IAApB;AACD,CAFM;AAIA,IAAMY,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAY;AAC9C,SAAOZ,iBAAP;AACD,CAFM;AAIA,IAAMa,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AACvChhB,EAAAA,OAAO,GAAG,IAAV;AACD,CAFM;AAIA,IAAMihB,cAAc,GAAG,SAAjBA,cAAiB,GAAY;AACxC,SAAOjhB,OAAP;AACD,CAFM;AAIA,IAAMkhB,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AACvC,SAAOvB,UAAP;AACD,CAFM;AAIA,IAAMwB,WAAW,GAAG,SAAdA,WAAc,CAAUn7B,GAAV,EAAe;AACxC4S,EAAAA,QAAQ,GAAG5S,GAAG,CAACo7B,WAAJ,GAAkBh6B,KAAlB,CAAwB,QAAxB,CAAX;AACD,CAFM;AAIA,IAAMi6B,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOzoB,QAAP;AACD,CAFM;AAGA,IAAM0oB,WAAW,GAAG,SAAdA,WAAc,CAAUt7B,GAAV,EAAe;AACxC65B,EAAAA,QAAQ,GAAG75B,GAAG,CAACo7B,WAAJ,GAAkBh6B,KAAlB,CAAwB,QAAxB,CAAX;AACD,CAFM;AAIA,IAAMm6B,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO1B,QAAP;AACD,CAFM;AAIA,IAAM2B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAO1B,KAAP;AACD,CAFM;AAIA,IAAMxX,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AACrCiT,EAAAA,KAAK,GAAGnT,YAAY,CAACE,GAAD,CAApB;AACD,CAFM;AAIA,IAAMxG,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOyZ,KAAP;AACD,CAFM;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AAC9CwiB,EAAAA,cAAc,GAAG1iB,YAAY,CAACE,GAAD,CAA7B;AACD,CAFM;AAIA,IAAMtG,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AAC3C,SAAO8oB,cAAP;AACD,CAFM;AAIA,IAAMiZ,UAAU,GAAG,SAAbA,UAAa,CAAUz7B,GAAV,EAAe;AACvCi6B,EAAAA,cAAc,GAAGj6B,GAAjB;AACA+5B,EAAAA,QAAQ,CAAC19B,IAAT,CAAc2D,GAAd;AACD,CAHM;AAKA,IAAM07B,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO3B,QAAP;AACD,CAFM;AAIA,IAAM4B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,MAAIC,iBAAiB,GAAGC,YAAY,EAApC;AACA,MAAMC,QAAQ,GAAG,EAAjB;AACA,MAAIC,cAAc,GAAG,CAArB;;AACA,SAAO,CAACH,iBAAD,IAAsBG,cAAc,GAAGD,QAA9C,EAAwD;AACtDF,IAAAA,iBAAiB,GAAGC,YAAY,EAAhC;AACAE,IAAAA,cAAc;AACf;;AAED/B,EAAAA,KAAK,GAAGQ,QAAR;AAEA,SAAOR,KAAP;AACD,CAZM;AAcA,IAAMgC,aAAa,GAAG,SAAhBA,aAAgB,CAAUC,IAAV,EAAgBtC,UAAhB,EAA4BE,QAA5B,EAAsCjnB,QAAtC,EAAgD;AAC3E,MAAIA,QAAQ,CAAC3W,OAAT,CAAiBggC,IAAI,CAACC,MAAL,CAAYvC,UAAU,CAACh4B,IAAX,EAAZ,CAAjB,KAAoD,CAAxD,EAA2D;AACzD,WAAO,KAAP;AACD;;AACD,MAAIs6B,IAAI,CAACE,UAAL,MAAqB,CAArB,IAA0BtC,QAAQ,CAAC59B,OAAT,CAAiB,UAAjB,KAAgC,CAA9D,EAAiE;AAC/D,WAAO,IAAP;AACD;;AACD,MAAI49B,QAAQ,CAAC59B,OAAT,CAAiBggC,IAAI,CAACC,MAAL,CAAY,MAAZ,EAAoBd,WAApB,EAAjB,KAAuD,CAA3D,EAA8D;AAC5D,WAAO,IAAP;AACD;;AACD,SAAOvB,QAAQ,CAAC59B,OAAT,CAAiBggC,IAAI,CAACC,MAAL,CAAYvC,UAAU,CAACh4B,IAAX,EAAZ,CAAjB,KAAoD,CAA3D;AACD,CAXM;;AAaP,IAAMy6B,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,IAAV,EAAgB1C,UAAhB,EAA4BE,QAA5B,EAAsCjnB,QAAtC,EAAgD;AACrE,MAAI,CAACinB,QAAQ,CAAC/+B,MAAV,IAAoBuhC,IAAI,CAACC,aAA7B,EAA4C;AAC5C,MAAIC,SAAS,GAAG9C,kDAAM,CAAC4C,IAAI,CAACE,SAAN,EAAiB5C,UAAjB,EAA6B,IAA7B,CAAtB;AACA4C,EAAAA,SAAS,CAACvD,GAAV,CAAc,CAAd,EAAiB,GAAjB;AACA,MAAIwD,OAAO,GAAG/C,kDAAM,CAAC4C,IAAI,CAACG,OAAN,EAAe7C,UAAf,EAA2B,IAA3B,CAApB;AACA,MAAI8C,aAAa,GAAGC,YAAY,CAACH,SAAD,EAAYC,OAAZ,EAAqB7C,UAArB,EAAiCE,QAAjC,EAA2CjnB,QAA3C,CAAhC;AACAypB,EAAAA,IAAI,CAACG,OAAL,GAAeA,OAAO,CAACG,MAAR,EAAf;AACAN,EAAAA,IAAI,CAACI,aAAL,GAAqBA,aAArB;AACD,CARD;;AAUA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAUH,SAAV,EAAqBC,OAArB,EAA8B7C,UAA9B,EAA0CE,QAA1C,EAAoDjnB,QAApD,EAA8D;AACjF,MAAIgqB,OAAO,GAAG,KAAd;AACA,MAAIH,aAAa,GAAG,IAApB;;AACA,SAAOF,SAAS,IAAIC,OAApB,EAA6B;AAC3B,QAAI,CAACI,OAAL,EAAc;AACZH,MAAAA,aAAa,GAAGD,OAAO,CAACG,MAAR,EAAhB;AACD;;AACDC,IAAAA,OAAO,GAAGZ,aAAa,CAACO,SAAD,EAAY5C,UAAZ,EAAwBE,QAAxB,EAAkCjnB,QAAlC,CAAvB;;AACA,QAAIgqB,OAAJ,EAAa;AACXJ,MAAAA,OAAO,CAACxD,GAAR,CAAY,CAAZ,EAAe,GAAf;AACD;;AACDuD,IAAAA,SAAS,CAACvD,GAAV,CAAc,CAAd,EAAiB,GAAjB;AACD;;AACD,SAAOyD,aAAP;AACD,CAdD;;AAgBA,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAAUC,QAAV,EAAoBnD,UAApB,EAAgCxkB,GAAhC,EAAqC;AACxDA,EAAAA,GAAG,GAAGA,GAAG,CAACxT,IAAJ,EAAN,CADwD,CAGxD;;AACA,MAAMo7B,EAAE,GAAG,sBAAX;AACA,MAAMC,cAAc,GAAGD,EAAE,CAACE,IAAH,CAAQ9nB,GAAG,CAACxT,IAAJ,EAAR,CAAvB;;AAEA,MAAIq7B,cAAc,KAAK,IAAvB,EAA6B;AAC3B;AACA,QAAIE,gBAAgB,GAAG,IAAvB;AACAF,IAAAA,cAAc,CAAC,CAAD,CAAd,CAAkB57B,KAAlB,CAAwB,GAAxB,EAA6BtF,OAA7B,CAAqC,UAAUzC,EAAV,EAAc;AACjD,UAAIgjC,IAAI,GAAGc,YAAY,CAAC9jC,EAAD,CAAvB;;AACA,UAAI,OAAOgjC,IAAP,KAAgB,WAApB,EAAiC;AAC/B,YAAI,CAACa,gBAAL,EAAuB;AACrBA,UAAAA,gBAAgB,GAAGb,IAAnB;AACD,SAFD,MAEO;AACL,cAAIA,IAAI,CAACG,OAAL,GAAeU,gBAAgB,CAACV,OAApC,EAA6C;AAC3CU,YAAAA,gBAAgB,GAAGb,IAAnB;AACD;AACF;AACF;AACF,KAXD;;AAaA,QAAI,CAACa,gBAAL,EAAuB;AACrB,UAAME,EAAE,GAAG,IAAIC,IAAJ,EAAX;AACAD,MAAAA,EAAE,CAACE,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB;AACA,aAAOF,EAAP;AACD,KAJD,MAIO;AACL,aAAOF,gBAAgB,CAACV,OAAxB;AACD;AACF,GA9BuD,CAgCxD;;;AACA,MAAIe,KAAK,GAAG9D,kDAAM,CAACtkB,GAAD,EAAMwkB,UAAU,CAACh4B,IAAX,EAAN,EAAyB,IAAzB,CAAlB;;AACA,MAAI47B,KAAK,CAACC,OAAN,EAAJ,EAAqB;AACnB,WAAOD,KAAK,CAACZ,MAAN,EAAP;AACD,GAFD,MAEO;AACL7iC,IAAAA,8CAAA,CAAU,kBAAkBqb,GAA5B;AACArb,IAAAA,8CAAA,CAAU,sBAAsB6/B,UAAU,CAACh4B,IAAX,EAAhC;AACD,GAvCuD,CAyCxD;;;AACA,SAAO,IAAI07B,IAAJ,EAAP;AACD,CA3CD;;AA6CA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,iBAAV,EAA6BC,YAA7B,EAA2C;AAChE,MAAID,iBAAiB,KAAK,IAA1B,EAAgC;AAC9B,YAAQA,iBAAiB,CAAC,CAAD,CAAzB;AACE,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC3E,GAAb,CAAiB0E,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,SAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC3E,GAAb,CAAiB0E,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,SAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC3E,GAAb,CAAiB0E,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,OAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC3E,GAAb,CAAiB0E,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,MAAvC;AACA;;AACF,WAAK,GAAL;AACEC,QAAAA,YAAY,CAAC3E,GAAb,CAAiB0E,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,OAAvC;AACA;AAfJ;AAiBD,GAnB+D,CAoBhE;;;AACA,SAAOC,YAAY,CAAChB,MAAb,EAAP;AACD,CAtBD;;AAwBA,IAAMiB,UAAU,GAAG,SAAbA,UAAa,CAAUd,QAAV,EAAoBnD,UAApB,EAAgCxkB,GAAhC,EAAqC0oB,SAArC,EAAgD;AACjEA,EAAAA,SAAS,GAAGA,SAAS,IAAI,KAAzB;AACA1oB,EAAAA,GAAG,GAAGA,GAAG,CAACxT,IAAJ,EAAN,CAFiE,CAIjE;;AACA,MAAI47B,KAAK,GAAG9D,kDAAM,CAACtkB,GAAD,EAAMwkB,UAAU,CAACh4B,IAAX,EAAN,EAAyB,IAAzB,CAAlB;;AACA,MAAI47B,KAAK,CAACC,OAAN,EAAJ,EAAqB;AACnB,QAAIK,SAAJ,EAAe;AACbN,MAAAA,KAAK,CAACvE,GAAN,CAAU,CAAV,EAAa,GAAb;AACD;;AACD,WAAOuE,KAAK,CAACZ,MAAN,EAAP;AACD;;AAED,SAAOc,cAAc,CAAC,oBAAoBR,IAApB,CAAyB9nB,GAAG,CAACxT,IAAJ,EAAzB,CAAD,EAAuC83B,kDAAM,CAACqD,QAAD,CAA7C,CAArB;AACD,CAdD;;AAgBA,IAAIzC,OAAO,GAAG,CAAd;;AACA,IAAMyD,OAAO,GAAG,SAAVA,OAAU,CAAUC,KAAV,EAAiB;AAC/B,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;AAChC1D,IAAAA,OAAO,GAAGA,OAAO,GAAG,CAApB;AACA,WAAO,SAASA,OAAhB;AACD;;AACD,SAAO0D,KAAP;AACD,CAND,EAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAUC,QAAV,EAAoBC,OAApB,EAA6B;AAC/C,MAAIC,EAAJ;;AAEA,MAAID,OAAO,CAACxe,MAAR,CAAe,CAAf,EAAkB,CAAlB,MAAyB,GAA7B,EAAkC;AAChCye,IAAAA,EAAE,GAAGD,OAAO,CAACxe,MAAR,CAAe,CAAf,EAAkBwe,OAAO,CAACpjC,MAA1B,CAAL;AACD,GAFD,MAEO;AACLqjC,IAAAA,EAAE,GAAGD,OAAL;AACD;;AAED,MAAM10B,IAAI,GAAG20B,EAAE,CAAC/8B,KAAH,CAAS,GAAT,CAAb;AAEA,MAAMi7B,IAAI,GAAG,EAAb,CAX+C,CAa/C;;AACA+B,EAAAA,WAAW,CAAC50B,IAAD,EAAO6yB,IAAP,EAAanC,IAAb,CAAX;;AAEA,OAAK,IAAIr/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2O,IAAI,CAAC1O,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC2O,IAAAA,IAAI,CAAC3O,CAAD,CAAJ,GAAU2O,IAAI,CAAC3O,CAAD,CAAJ,CAAQ8G,IAAR,EAAV;AACD;;AAED,MAAI08B,WAAW,GAAG,EAAlB;;AACA,UAAQ70B,IAAI,CAAC1O,MAAb;AACE,SAAK,CAAL;AACEuhC,MAAAA,IAAI,CAAChjC,EAAL,GAAUykC,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiB0B,QAAQ,CAACzB,OAA1B;AACA6B,MAAAA,WAAW,GAAG70B,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF,SAAK,CAAL;AACE6yB,MAAAA,IAAI,CAAChjC,EAAL,GAAUykC,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiBM,YAAY,CAACx/B,SAAD,EAAYs8B,UAAZ,EAAwBnwB,IAAI,CAAC,CAAD,CAA5B,CAA7B;AACA60B,MAAAA,WAAW,GAAG70B,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF,SAAK,CAAL;AACE6yB,MAAAA,IAAI,CAAChjC,EAAL,GAAUykC,OAAO,CAACt0B,IAAI,CAAC,CAAD,CAAL,CAAjB;AACA6yB,MAAAA,IAAI,CAACE,SAAL,GAAiBM,YAAY,CAACx/B,SAAD,EAAYs8B,UAAZ,EAAwBnwB,IAAI,CAAC,CAAD,CAA5B,CAA7B;AACA60B,MAAAA,WAAW,GAAG70B,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF;AAhBF;;AAmBA,MAAI60B,WAAJ,EAAiB;AACfhC,IAAAA,IAAI,CAACG,OAAL,GAAeoB,UAAU,CAACvB,IAAI,CAACE,SAAN,EAAiB5C,UAAjB,EAA6B0E,WAA7B,EAA0ClE,iBAA1C,CAAzB;AACAkC,IAAAA,IAAI,CAACC,aAAL,GAAqB7C,kDAAM,CAAC4E,WAAD,EAAc,YAAd,EAA4B,IAA5B,CAAN,CAAwCb,OAAxC,EAArB;AACApB,IAAAA,cAAc,CAACC,IAAD,EAAO1C,UAAP,EAAmBE,QAAnB,EAA6BjnB,QAA7B,CAAd;AACD;;AAED,SAAOypB,IAAP;AACD,CA/CD;;AAiDA,IAAMiC,SAAS,GAAG,SAAZA,SAAY,CAAUC,UAAV,EAAsBL,OAAtB,EAA+B;AAC/C,MAAIC,EAAJ;;AACA,MAAID,OAAO,CAACxe,MAAR,CAAe,CAAf,EAAkB,CAAlB,MAAyB,GAA7B,EAAkC;AAChCye,IAAAA,EAAE,GAAGD,OAAO,CAACxe,MAAR,CAAe,CAAf,EAAkBwe,OAAO,CAACpjC,MAA1B,CAAL;AACD,GAFD,MAEO;AACLqjC,IAAAA,EAAE,GAAGD,OAAL;AACD;;AAED,MAAM10B,IAAI,GAAG20B,EAAE,CAAC/8B,KAAH,CAAS,GAAT,CAAb;AAEA,MAAMi7B,IAAI,GAAG,EAAb,CAV+C,CAY/C;;AACA+B,EAAAA,WAAW,CAAC50B,IAAD,EAAO6yB,IAAP,EAAanC,IAAb,CAAX;;AAEA,OAAK,IAAIr/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2O,IAAI,CAAC1O,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC2O,IAAAA,IAAI,CAAC3O,CAAD,CAAJ,GAAU2O,IAAI,CAAC3O,CAAD,CAAJ,CAAQ8G,IAAR,EAAV;AACD;;AAED,UAAQ6H,IAAI,CAAC1O,MAAb;AACE,SAAK,CAAL;AACEuhC,MAAAA,IAAI,CAAChjC,EAAL,GAAUykC,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiB;AACfpyB,QAAAA,IAAI,EAAE,aADS;AAEf9Q,QAAAA,EAAE,EAAEklC;AAFW,OAAjB;AAIAlC,MAAAA,IAAI,CAACG,OAAL,GAAe;AACbhzB,QAAAA,IAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF,SAAK,CAAL;AACE6yB,MAAAA,IAAI,CAAChjC,EAAL,GAAUykC,OAAO,EAAjB;AACAzB,MAAAA,IAAI,CAACE,SAAL,GAAiB;AACfpyB,QAAAA,IAAI,EAAE,cADS;AAEfq0B,QAAAA,SAAS,EAAEh1B,IAAI,CAAC,CAAD;AAFA,OAAjB;AAIA6yB,MAAAA,IAAI,CAACG,OAAL,GAAe;AACbhzB,QAAAA,IAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF,SAAK,CAAL;AACE6yB,MAAAA,IAAI,CAAChjC,EAAL,GAAUykC,OAAO,CAACt0B,IAAI,CAAC,CAAD,CAAL,CAAjB;AACA6yB,MAAAA,IAAI,CAACE,SAAL,GAAiB;AACfpyB,QAAAA,IAAI,EAAE,cADS;AAEfq0B,QAAAA,SAAS,EAAEh1B,IAAI,CAAC,CAAD;AAFA,OAAjB;AAIA6yB,MAAAA,IAAI,CAACG,OAAL,GAAe;AACbhzB,QAAAA,IAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF;AA/BF;;AAkCA,SAAO6yB,IAAP;AACD,CAtDD;;AAwDA,IAAI/B,QAAJ;AACA,IAAIC,UAAJ;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAMiE,MAAM,GAAG,EAAf;AACO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAUtrB,KAAV,EAAiB5J,IAAjB,EAAuB;AAC5C,MAAMm1B,OAAO,GAAG;AACdC,IAAAA,OAAO,EAAE3E,cADK;AAEd9vB,IAAAA,IAAI,EAAE8vB,cAFQ;AAGd4E,IAAAA,SAAS,EAAE,KAHG;AAIdvC,IAAAA,aAAa,EAAE,KAJD;AAKdG,IAAAA,aAAa,EAAE,IALD;AAMdqC,IAAAA,GAAG,EAAE;AAAEt1B,MAAAA,IAAI,EAAEA;AAAR,KANS;AAOd6yB,IAAAA,IAAI,EAAEjpB,KAPQ;AAQdrU,IAAAA,OAAO,EAAE;AARK,GAAhB;AAUA,MAAMggC,QAAQ,GAAGT,SAAS,CAAC/D,UAAD,EAAa/wB,IAAb,CAA1B;AACAm1B,EAAAA,OAAO,CAACG,GAAR,CAAYvC,SAAZ,GAAwBwC,QAAQ,CAACxC,SAAjC;AACAoC,EAAAA,OAAO,CAACG,GAAR,CAAYtC,OAAZ,GAAsBuC,QAAQ,CAACvC,OAA/B;AACAmC,EAAAA,OAAO,CAACtlC,EAAR,GAAa0lC,QAAQ,CAAC1lC,EAAtB;AACAslC,EAAAA,OAAO,CAACJ,UAAR,GAAqBhE,UAArB;AACAoE,EAAAA,OAAO,CAACK,MAAR,GAAiBD,QAAQ,CAACC,MAA1B;AACAL,EAAAA,OAAO,CAACM,IAAR,GAAeF,QAAQ,CAACE,IAAxB;AACAN,EAAAA,OAAO,CAACO,IAAR,GAAeH,QAAQ,CAACG,IAAxB;AACAP,EAAAA,OAAO,CAACQ,SAAR,GAAoBJ,QAAQ,CAACI,SAA7B;AACAR,EAAAA,OAAO,CAACS,KAAR,GAAgBhF,SAAhB;AAEAA,EAAAA,SAAS;AAET,MAAMx2B,GAAG,GAAG42B,QAAQ,CAACn+B,IAAT,CAAcsiC,OAAd,CAAZ;AAEApE,EAAAA,UAAU,GAAGoE,OAAO,CAACtlC,EAArB,CA1B4C,CA2B5C;;AACAolC,EAAAA,MAAM,CAACE,OAAO,CAACtlC,EAAT,CAAN,GAAqBuK,GAAG,GAAG,CAA3B;AACD,CA7BM;AA+BA,IAAMu5B,YAAY,GAAG,SAAfA,YAAe,CAAU9jC,EAAV,EAAc;AACxC,MAAMuK,GAAG,GAAG66B,MAAM,CAACplC,EAAD,CAAlB;AACA,SAAOmhC,QAAQ,CAAC52B,GAAD,CAAf;AACD,CAHM;AAKA,IAAMy7B,UAAU,GAAG,SAAbA,UAAa,CAAUjsB,KAAV,EAAiB5J,IAAjB,EAAuB;AAC/C,MAAM81B,OAAO,GAAG;AACdV,IAAAA,OAAO,EAAE3E,cADK;AAEd9vB,IAAAA,IAAI,EAAE8vB,cAFQ;AAGdxgC,IAAAA,WAAW,EAAE2Z,KAHC;AAIdipB,IAAAA,IAAI,EAAEjpB,KAJQ;AAKdrU,IAAAA,OAAO,EAAE;AALK,GAAhB;AAOA,MAAMggC,QAAQ,GAAGf,WAAW,CAAC1D,QAAD,EAAW9wB,IAAX,CAA5B;AACA81B,EAAAA,OAAO,CAAC/C,SAAR,GAAoBwC,QAAQ,CAACxC,SAA7B;AACA+C,EAAAA,OAAO,CAAC9C,OAAR,GAAkBuC,QAAQ,CAACvC,OAA3B;AACA8C,EAAAA,OAAO,CAACjmC,EAAR,GAAa0lC,QAAQ,CAAC1lC,EAAtB;AACAimC,EAAAA,OAAO,CAACN,MAAR,GAAiBD,QAAQ,CAACC,MAA1B;AACAM,EAAAA,OAAO,CAACL,IAAR,GAAeF,QAAQ,CAACE,IAAxB;AACAK,EAAAA,OAAO,CAACJ,IAAR,GAAeH,QAAQ,CAACG,IAAxB;AACAI,EAAAA,OAAO,CAACH,SAAR,GAAoBJ,QAAQ,CAACI,SAA7B;AACA7E,EAAAA,QAAQ,GAAGgF,OAAX;AACAtF,EAAAA,KAAK,CAAC39B,IAAN,CAAWijC,OAAX;AACD,CAlBM;;AAoBP,IAAMzD,YAAY,GAAG,SAAfA,YAAe,GAAY;AAC/B,MAAM0D,WAAW,GAAG,SAAdA,WAAc,CAAU37B,GAAV,EAAe;AACjC,QAAMy4B,IAAI,GAAG7B,QAAQ,CAAC52B,GAAD,CAArB;AACA,QAAI24B,SAAS,GAAG,EAAhB;;AACA,YAAQ/B,QAAQ,CAAC52B,GAAD,CAAR,CAAck7B,GAAd,CAAkBvC,SAAlB,CAA4BpyB,IAApC;AACE,WAAK,aAAL;AAAoB;AAClB,cAAM8zB,QAAQ,GAAGd,YAAY,CAACd,IAAI,CAACkC,UAAN,CAA7B;AACAlC,UAAAA,IAAI,CAACE,SAAL,GAAiB0B,QAAQ,CAACzB,OAA1B;AACA;AACD;;AACD,WAAK,cAAL;AACED,QAAAA,SAAS,GAAGM,YAAY,CAACx/B,SAAD,EAAYs8B,UAAZ,EAAwBa,QAAQ,CAAC52B,GAAD,CAAR,CAAck7B,GAAd,CAAkBvC,SAAlB,CAA4BiC,SAApD,CAAxB;;AACA,YAAIjC,SAAJ,EAAe;AACb/B,UAAAA,QAAQ,CAAC52B,GAAD,CAAR,CAAc24B,SAAd,GAA0BA,SAA1B;AACD;;AACD;AAXJ;;AAcA,QAAI/B,QAAQ,CAAC52B,GAAD,CAAR,CAAc24B,SAAlB,EAA6B;AAC3B/B,MAAAA,QAAQ,CAAC52B,GAAD,CAAR,CAAc44B,OAAd,GAAwBoB,UAAU,CAChCpD,QAAQ,CAAC52B,GAAD,CAAR,CAAc24B,SADkB,EAEhC5C,UAFgC,EAGhCa,QAAQ,CAAC52B,GAAD,CAAR,CAAck7B,GAAd,CAAkBtC,OAAlB,CAA0BhzB,IAHM,EAIhC2wB,iBAJgC,CAAlC;;AAMA,UAAIK,QAAQ,CAAC52B,GAAD,CAAR,CAAc44B,OAAlB,EAA2B;AACzBhC,QAAAA,QAAQ,CAAC52B,GAAD,CAAR,CAAci7B,SAAd,GAA0B,IAA1B;AACArE,QAAAA,QAAQ,CAAC52B,GAAD,CAAR,CAAc04B,aAAd,GAA8B7C,kDAAM,CAClCe,QAAQ,CAAC52B,GAAD,CAAR,CAAck7B,GAAd,CAAkBtC,OAAlB,CAA0BhzB,IADQ,EAElC,YAFkC,EAGlC,IAHkC,CAAN,CAI5Bg0B,OAJ4B,EAA9B;AAKApB,QAAAA,cAAc,CAAC5B,QAAQ,CAAC52B,GAAD,CAAT,EAAgB+1B,UAAhB,EAA4BE,QAA5B,EAAsCjnB,QAAtC,CAAd;AACD;AACF;;AAED,WAAO4nB,QAAQ,CAAC52B,GAAD,CAAR,CAAci7B,SAArB;AACD,GApCD;;AAsCA,MAAIW,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAI3kC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2/B,QAAQ,CAAC1/B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxC0kC,IAAAA,WAAW,CAAC1kC,CAAD,CAAX;AAEA2kC,IAAAA,YAAY,GAAGA,YAAY,IAAIhF,QAAQ,CAAC3/B,CAAD,CAAR,CAAYgkC,SAA3C;AACD;;AACD,SAAOW,YAAP;AACD,CA9CD;AAgDA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMzf,OAAO,GAAG,SAAVA,OAAU,CAAUH,GAAV,EAAe6f,QAAf,EAAyB;AAC9C,MAAIzf,OAAO,GAAGyf,QAAd;;AACA,MAAIviB,8CAAA,GAAsBlH,aAAtB,KAAwC,OAA5C,EAAqD;AACnDgK,IAAAA,OAAO,GAAG0Z,oEAAW,CAAC+F,QAAD,CAArB;AACD;;AACD7f,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC,QAAIslC,OAAO,GAAGxB,YAAY,CAAC9jC,EAAD,CAA1B;;AACA,QAAI,OAAOslC,OAAP,KAAmB,WAAvB,EAAoC;AAClCe,MAAAA,OAAO,CAACrmC,EAAD,EAAK,YAAM;AAChBmO,QAAAA,MAAM,CAACm4B,IAAP,CAAY3f,OAAZ,EAAqB,OAArB;AACD,OAFM,CAAP;AAGA8Z,MAAAA,KAAK,CAACzgC,EAAD,CAAL,GAAY2mB,OAAZ;AACD;AACF,GARD;AASAgU,EAAAA,QAAQ,CAACpU,GAAD,EAAM,WAAN,CAAR;AACD,CAfM;AAiBP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMoU,QAAQ,GAAG,SAAXA,QAAW,CAAUpU,GAAV,EAAe9B,SAAf,EAA0B;AAChD8B,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC,QAAIslC,OAAO,GAAGxB,YAAY,CAAC9jC,EAAD,CAA1B;;AACA,QAAI,OAAOslC,OAAP,KAAmB,WAAvB,EAAoC;AAClCA,MAAAA,OAAO,CAAC5/B,OAAR,CAAgB1C,IAAhB,CAAqByhB,SAArB;AACD;AACF,GALD;AAMD,CAPM;;AASP,IAAMmW,WAAW,GAAG,SAAdA,WAAc,CAAU56B,EAAV,EAAc8mB,YAAd,EAA4BC,YAA5B,EAA0C;AAC5D,MAAIlD,8CAAA,GAAsBlH,aAAtB,KAAwC,OAA5C,EAAqD;AACnD;AACD;;AACD,MAAI,OAAOmK,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AAED,MAAII,OAAO,GAAG,EAAd;;AACA,MAAI,OAAOH,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAG,IAAAA,OAAO,GAAGH,YAAY,CAAChf,KAAb,CAAmB,+BAAnB,CAAV;;AACA,SAAK,IAAIvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0lB,OAAO,CAACzlB,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;AACvC,UAAI2lB,IAAI,GAAGD,OAAO,CAAC1lB,CAAD,CAAP,CAAW8G,IAAX,EAAX;AACA;;AACA;;AACA,UAAI6e,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0BD,IAAI,CAACC,MAAL,CAAYD,IAAI,CAAC1lB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClE0lB,QAAAA,IAAI,GAAGA,IAAI,CAACd,MAAL,CAAY,CAAZ,EAAec,IAAI,CAAC1lB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDylB,MAAAA,OAAO,CAAC1lB,CAAD,CAAP,GAAa2lB,IAAb;AACD;AACF;AAED;;;AACA,MAAID,OAAO,CAACzlB,MAAR,KAAmB,CAAvB,EAA0B;AACxBylB,IAAAA,OAAO,CAAClkB,IAAR,CAAahD,EAAb;AACD;;AAED,MAAIslC,OAAO,GAAGxB,YAAY,CAAC9jC,EAAD,CAA1B;;AACA,MAAI,OAAOslC,OAAP,KAAmB,WAAvB,EAAoC;AAClCe,IAAAA,OAAO,CAACrmC,EAAD,EAAK,YAAM;AAChByI,MAAAA,4DAAA,CAAAA,8CAAK,GAASqe,YAAT,4BAA0BI,OAA1B,GAAL;AACD,KAFM,CAAP;AAGD;AACF,CAlCD;AAoCA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMmf,OAAO,GAAG,SAAVA,OAAU,CAAUrmC,EAAV,EAAcumC,gBAAd,EAAgC;AAC9CpiB,EAAAA,IAAI,CAACnhB,IAAL,CAAU,YAAY;AACpB;AACA,QAAMiD,IAAI,GAAGgB,QAAQ,CAACogB,aAAT,iBAA+BrnB,EAA/B,SAAb;;AACA,QAAIiG,IAAI,KAAK,IAAb,EAAmB;AACjBA,MAAAA,IAAI,CAACqhB,gBAAL,CAAsB,OAAtB,EAA+B,YAAY;AACzCif,QAAAA,gBAAgB;AACjB,OAFD;AAGD;AACF,GARD;AASApiB,EAAAA,IAAI,CAACnhB,IAAL,CAAU,YAAY;AACpB;AACA,QAAMiD,IAAI,GAAGgB,QAAQ,CAACogB,aAAT,iBAA+BrnB,EAA/B,cAAb;;AACA,QAAIiG,IAAI,KAAK,IAAb,EAAmB;AACjBA,MAAAA,IAAI,CAACqhB,gBAAL,CAAsB,OAAtB,EAA+B,YAAY;AACzCif,QAAAA,gBAAgB;AACjB,OAFD;AAGD;AACF,GARD;AASD,CAnBD;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM1f,aAAa,GAAG,SAAhBA,aAAgB,CAAUN,GAAV,EAAeO,YAAf,EAA6BC,YAA7B,EAA2C;AACtER,EAAAA,GAAG,CAACxe,KAAJ,CAAU,GAAV,EAAetF,OAAf,CAAuB,UAAUzC,EAAV,EAAc;AACnC46B,IAAAA,WAAW,CAAC56B,EAAD,EAAK8mB,YAAL,EAAmBC,YAAnB,CAAX;AACD,GAFD;AAGA4T,EAAAA,QAAQ,CAACpU,GAAD,EAAM,WAAN,CAAR;AACD,CALM;AAOP;AACA;AACA;AACA;AACA;;AACO,IAAMiB,aAAa,GAAG,SAAhBA,aAAgB,CAAUvK,OAAV,EAAmB;AAC9CkH,EAAAA,IAAI,CAAC1hB,OAAL,CAAa,UAAUglB,GAAV,EAAe;AAC1BA,IAAAA,GAAG,CAACxK,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAMP,iEAAe;AACbmH,EAAAA,cAAc,EAAdA,cADa;AAEb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsB7D,KAA5B;AAAA,GAFE;AAGb3Z,EAAAA,KAAK,EAALA,KAHa;AAIbm7B,EAAAA,aAAa,EAAbA,aAJa;AAKbK,EAAAA,aAAa,EAAbA,aALa;AAMbJ,EAAAA,uBAAuB,EAAvBA,uBANa;AAObC,EAAAA,oBAAoB,EAApBA,oBAPa;AAQbC,EAAAA,aAAa,EAAbA,aARa;AASbC,EAAAA,cAAc,EAAdA,cATa;AAUbR,EAAAA,aAAa,EAAbA,aAVa;AAWbC,EAAAA,aAAa,EAAbA,aAXa;AAYbC,EAAAA,cAAc,EAAdA,cAZa;AAabC,EAAAA,cAAc,EAAdA,cAba;AAcbtY,EAAAA,QAAQ,EAARA,QAda;AAeb9oB,EAAAA,QAAQ,EAARA,QAfa;AAgBbipB,EAAAA,iBAAiB,EAAjBA,iBAhBa;AAiBb/oB,EAAAA,iBAAiB,EAAjBA,iBAjBa;AAkBb+hC,EAAAA,UAAU,EAAVA,UAlBa;AAmBbC,EAAAA,WAAW,EAAXA,WAnBa;AAoBbC,EAAAA,QAAQ,EAARA,QApBa;AAqBb+C,EAAAA,OAAO,EAAPA,OArBa;AAsBbvB,EAAAA,YAAY,EAAZA,YAtBa;AAuBbkC,EAAAA,UAAU,EAAVA,UAvBa;AAwBblE,EAAAA,WAAW,EAAXA,WAxBa;AAyBbE,EAAAA,WAAW,EAAXA,WAzBa;AA0BbC,EAAAA,WAAW,EAAXA,WA1Ba;AA2BbC,EAAAA,WAAW,EAAXA,WA3Ba;AA4Bbrb,EAAAA,aAAa,EAAbA,aA5Ba;AA6BbH,EAAAA,OAAO,EAAPA,OA7Ba;AA8Bbyb,EAAAA,QAAQ,EAARA,QA9Ba;AA+Bb3a,EAAAA,aAAa,EAAbA,aA/Ba;AAgCb4c,EAAAA,cAAc,EAAdA,cAhCa;AAiCbzB,EAAAA,aAAa,EAAbA;AAjCa,CAAf;AAoCA;AACA;AACA;AACA;AACA;;AACA,SAASoC,WAAT,CAAqB50B,IAArB,EAA2B6yB,IAA3B,EAAiCnC,IAAjC,EAAuC;AACrC,MAAI2F,UAAU,GAAG,IAAjB;;AACA,SAAOA,UAAP,EAAmB;AACjBA,IAAAA,UAAU,GAAG,KAAb;AACA3F,IAAAA,IAAI,CAACp+B,OAAL,CAAa,UAAUgkC,CAAV,EAAa;AACxB,UAAM34B,OAAO,GAAG,UAAU24B,CAAV,GAAc,OAA9B;AACA,UAAMC,KAAK,GAAG,IAAIC,MAAJ,CAAW74B,OAAX,CAAd;;AACA,UAAIqC,IAAI,CAAC,CAAD,CAAJ,CAAQqW,KAAR,CAAckgB,KAAd,CAAJ,EAA0B;AACxB1D,QAAAA,IAAI,CAACyD,CAAD,CAAJ,GAAU,IAAV;AACAt2B,QAAAA,IAAI,CAACy2B,KAAL,CAAW,CAAX;AACAJ,QAAAA,UAAU,GAAG,IAAb;AACD;AACF,KARD;AASD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACprBD;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AAEAld,oDAAA,GAAY6d,gDAAZ;AACO,IAAM5b,OAAO,GAAG,SAAVA,OAAU,GAAY,CACjC;AACA;AACA;AACA;AACD,CALM;AAMP,IAAItgB,CAAJ;AACO,IAAMwgB,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtC,MAAMgC,IAAI,GAAGK,kDAAS,GAAG2d,KAAzB;AACAsJ,EAAAA,0DAAA;AACAA,EAAAA,uDAAA,CAAa/oB,IAAb;AAEA,MAAMoc,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CALsC,CAMtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AAEA,MAAMhB,IAAI,GAAG8lB,GAAG,CAACqb,cAAJ,CAAmBpnC,EAAnB,CAAb;AACAiL,EAAAA,CAAC,GAAGhF,IAAI,CAACohC,aAAL,CAAmBC,WAAvB;;AAEA,MAAI,OAAOr8B,CAAP,KAAa,WAAjB,EAA8B;AAC5BA,IAAAA,CAAC,GAAG,IAAJ;AACD;;AAED,MAAI,OAAOjJ,IAAI,CAAC4e,QAAZ,KAAyB,WAA7B,EAA0C;AACxC3V,IAAAA,CAAC,GAAGjJ,IAAI,CAAC4e,QAAT;AACD;;AAED,MAAM2mB,SAAS,GAAGje,6DAAA,EAAlB,CA5BsC,CA8BtC;;AACA,MAAMpe,CAAC,GAAGq8B,SAAS,CAAC9lC,MAAV,IAAoBO,IAAI,CAACke,SAAL,GAAiBle,IAAI,CAACme,MAA1C,IAAoD,IAAIne,IAAI,CAACoe,UAAvE,CA/BsC,CAiCtC;;AACAna,EAAAA,IAAI,CAAC4B,YAAL,CAAkB,SAAlB,EAA6B,SAASoD,CAAT,GAAa,GAAb,GAAmBC,CAAhD;AACA,MAAMnL,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,iBAAoBpD,EAApB,SAAZ,CAnCsC,CAqCtC;;AACA,MAAMwnC,SAAS,GAAGX,6CAAS,GACxBY,MADe,CACR,CACN9zB,uCAAG,CAAC4zB,SAAD,EAAY,UAAU7lC,CAAV,EAAa;AAC1B,WAAOA,CAAC,CAACwhC,SAAT;AACD,GAFE,CADG,EAINjN,uCAAG,CAACsR,SAAD,EAAY,UAAU7lC,CAAV,EAAa;AAC1B,WAAOA,CAAC,CAACyhC,OAAT;AACD,GAFE,CAJG,CADQ,EASfuE,UATe,CASJ,CAAC,CAAD,EAAIz8B,CAAC,GAAGjJ,IAAI,CAACse,WAAT,GAAuBte,IAAI,CAACqe,YAAhC,CATI,CAAlB;AAWA,MAAIsnB,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAInmC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+lC,SAAS,CAAC9lC,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzCmmC,IAAAA,UAAU,CAAC3kC,IAAX,CAAgBukC,SAAS,CAAC/lC,CAAD,CAAT,CAAasP,IAA7B;AACD;;AAED,MAAM82B,cAAc,GAAGD,UAAvB,CAvDsC,CAuDH;;AAEnCA,EAAAA,UAAU,GAAGE,WAAW,CAACF,UAAD,CAAxB;AAEA;AACF;AACA;AACA;;AACE,WAASG,WAAT,CAAqBzW,CAArB,EAAwB0W,CAAxB,EAA2B;AACzB,QAAMC,KAAK,GAAG3W,CAAC,CAAC6R,SAAhB;AACA,QAAM+E,KAAK,GAAGF,CAAC,CAAC7E,SAAhB;AACA,QAAI/rB,MAAM,GAAG,CAAb;;AACA,QAAI6wB,KAAK,GAAGC,KAAZ,EAAmB;AACjB9wB,MAAAA,MAAM,GAAG,CAAT;AACD,KAFD,MAEO,IAAI6wB,KAAK,GAAGC,KAAZ,EAAmB;AACxB9wB,MAAAA,MAAM,GAAG,CAAC,CAAV;AACD;;AACD,WAAOA,MAAP;AACD,GAzEqC,CA2EtC;AACA;;;AACAowB,EAAAA,SAAS,CAACzzB,IAAV,CAAeg0B,WAAf;AAEAI,EAAAA,QAAQ,CAACX,SAAD,EAAYt8B,CAAZ,EAAeC,CAAf,CAAR;AAEAye,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAMmL,CAAN,EAASD,CAAT,EAAYjJ,IAAI,CAAC4b,WAAjB,CAAhB;AAEA7d,EAAAA,GAAG,CACA6F,MADH,CACU,MADV,EAEGrF,IAFH,CAEQ+oB,6DAAA,EAFR,EAGGhpB,IAHH,CAGQ,GAHR,EAGa2K,CAAC,GAAG,CAHjB,EAIG3K,IAJH,CAIQ,GAJR,EAIa0B,IAAI,CAACie,cAJlB,EAKG3f,IALH,CAKQ,OALR,EAKiB,WALjB;AAOAT,EAAAA,0DAAyB,CAACypB,oDAAD,EAAYvpB,GAAZ,EAAiBC,EAAjB,CAAzB;AAEA;AACF;AACA;AACA;AACA;;AACE,WAASkoC,QAAT,CAAkBvH,KAAlB,EAAyBwH,SAAzB,EAAoCC,UAApC,EAAgD;AAC9C,QAAMloB,SAAS,GAAGle,IAAI,CAACke,SAAvB;AACA,QAAMhG,GAAG,GAAGgG,SAAS,GAAGle,IAAI,CAACme,MAA7B;AACA,QAAMC,UAAU,GAAGpe,IAAI,CAACoe,UAAxB;AACA,QAAME,WAAW,GAAGte,IAAI,CAACse,WAAzB;AAEA,QAAM+nB,UAAU,GAAGvB,+CAAW,GAC3BW,MADgB,CACT,CAAC,CAAD,EAAIE,UAAU,CAAClmC,MAAf,CADS,EAEhB6mC,KAFgB,CAEV,CAAC,SAAD,EAAY,SAAZ,CAFU,EAGhBxd,WAHgB,CAGJic,8CAHI,CAAnB;AAKAwB,IAAAA,eAAe,CACbruB,GADa,EAEbkG,UAFa,EAGbE,WAHa,EAIb6nB,SAJa,EAKbC,UALa,EAMbzH,KANa,EAObrX,gEAAA,EAPa,EAQbA,gEAAA,EARa,CAAf;AAUAkf,IAAAA,QAAQ,CAACloB,WAAD,EAAcF,UAAd,EAA0B+nB,SAA1B,EAAqCC,UAArC,CAAR;AACAK,IAAAA,SAAS,CAAC9H,KAAD,EAAQzmB,GAAR,EAAakG,UAAb,EAAyBE,WAAzB,EAAsCJ,SAAtC,EAAiDmoB,UAAjD,EAA6DF,SAA7D,EAAwEC,UAAxE,CAAT;AACAM,IAAAA,UAAU,CAACxuB,GAAD,EAAMkG,UAAN,EAAkBE,WAAlB,EAA+BJ,SAA/B,EAA0CmoB,UAA1C,CAAV;AACAM,IAAAA,SAAS,CAACroB,WAAD,EAAcF,UAAd,EAA0B+nB,SAA1B,EAAqCC,UAArC,CAAT;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAASK,SAAT,CAAmBG,QAAnB,EAA6BC,MAA7B,EAAqCC,SAArC,EAAgDC,UAAhD,EAA4DC,YAA5D,EAA0EC,aAA1E,EAAyFh+B,CAAzF,EAA4F;AAC1F;AACAlL,IAAAA,GAAG,CACA6F,MADH,CACU,GADV,EAEGwiB,SAFH,CAEa,MAFb,EAGGjY,IAHH,CAGQy4B,QAHR,EAIGM,KAJH,GAKGtjC,MALH,CAKU,MALV,EAMGtF,IANH,CAMQ,GANR,EAMa,CANb,EAOGA,IAPH,CAOQ,GAPR,EAOa,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACzB;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAACqkC,KAAN;AACA,aAAOvkC,CAAC,GAAGqnC,MAAJ,GAAaC,SAAb,GAAyB,CAAhC;AACD,KAXH,EAYGxoC,IAZH,CAYQ,OAZR,EAYiB,YAAY;AACzB,aAAO2K,CAAC,GAAGjJ,IAAI,CAACqe,YAAL,GAAoB,CAA/B;AACD,KAdH,EAeG/f,IAfH,CAeQ,QAfR,EAekBuoC,MAflB,EAgBGvoC,IAhBH,CAgBQ,OAhBR,EAgBiB,UAAUoB,CAAV,EAAa;AAC1B,WAAK,IAAIF,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGmmC,UAAU,CAAClmC,MAA/B,EAAuCD,EAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAACoP,IAAF,KAAW62B,UAAU,CAACnmC,EAAD,CAAzB,EAA8B;AAC5B,iBAAO,oBAAqBA,EAAC,GAAGQ,IAAI,CAACye,mBAArC;AACD;AACF;;AACD,aAAO,kBAAP;AACD,KAvBH,EAF0F,CA2B1F;;AACA,QAAM0oB,UAAU,GAAGppC,GAAG,CAAC6F,MAAJ,CAAW,GAAX,EAAgBwiB,SAAhB,CAA0B,MAA1B,EAAkCjY,IAAlC,CAAuCy4B,QAAvC,EAAiDM,KAAjD,EAAnB;AAEA,QAAMzI,KAAK,GAAG0G,yDAAA,EAAd,CA9B0F,CAgC1F;AACA;;AACAgC,IAAAA,UAAU,CACPvjC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,UAAUoB,CAAV,EAAa;AACvB,aAAOA,CAAC,CAAC1B,EAAT;AACD,KAJH,EAKGM,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,IANR,EAMc,CANd,EAOGA,IAPH,CAOQ,GAPR,EAOa,UAAUoB,CAAV,EAAa;AACtB,UAAIA,CAAC,CAACokC,SAAN,EAAiB;AACf,eACE0B,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAT,GACA6F,UADA,GAEA,OAAOvB,SAAS,CAAC9lC,CAAC,CAACyhC,OAAH,CAAT,GAAuBqE,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAvC,CAFA,GAGA,MAAM8F,YAJR;AAMD;;AACD,aAAOxB,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAT,GAAyB6F,UAAhC;AACD,KAjBH,EAkBGzoC,IAlBH,CAkBQ,GAlBR,EAkBa,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACzB;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAACqkC,KAAN;AACA,aAAOvkC,CAAC,GAAGqnC,MAAJ,GAAaC,SAApB;AACD,KAtBH,EAuBGxoC,IAvBH,CAuBQ,OAvBR,EAuBiB,UAAUoB,CAAV,EAAa;AAC1B,UAAIA,CAAC,CAACokC,SAAN,EAAiB;AACf,eAAOkD,YAAP;AACD;;AACD,aAAOxB,SAAS,CAAC9lC,CAAC,CAAC0hC,aAAF,IAAmB1hC,CAAC,CAACyhC,OAAtB,CAAT,GAA0CqE,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAA1D;AACD,KA5BH,EA6BG5iC,IA7BH,CA6BQ,QA7BR,EA6BkB0oC,YA7BlB,EA8BG1oC,IA9BH,CA8BQ,kBA9BR,EA8B4B,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACxC;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAACqkC,KAAN;AAEA,aACE,CACEyB,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAT,GACA6F,UADA,GAEA,OAAOvB,SAAS,CAAC9lC,CAAC,CAACyhC,OAAH,CAAT,GAAuBqE,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAvC,CAHF,EAIEkG,QAJF,KAKA,KALA,GAMA,CAAC5nC,CAAC,GAAGqnC,MAAJ,GAAaC,SAAb,GAAyB,MAAME,YAAhC,EAA8CI,QAA9C,EANA,GAOA,IARF;AAUD,KA5CH,EA6CG9oC,IA7CH,CA6CQ,OA7CR,EA6CiB,UAAUoB,CAAV,EAAa;AAC1B,UAAMiK,GAAG,GAAG,MAAZ;AAEA,UAAIqyB,QAAQ,GAAG,EAAf;;AACA,UAAIt8B,CAAC,CAACgE,OAAF,CAAUjE,MAAV,GAAmB,CAAvB,EAA0B;AACxBu8B,QAAAA,QAAQ,GAAGt8B,CAAC,CAACgE,OAAF,CAAUqS,IAAV,CAAe,GAAf,CAAX;AACD;;AAED,UAAIsxB,MAAM,GAAG,CAAb;;AACA,WAAK,IAAI7nC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGmmC,UAAU,CAAClmC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAACoP,IAAF,KAAW62B,UAAU,CAACnmC,GAAD,CAAzB,EAA8B;AAC5B6nC,UAAAA,MAAM,GAAG7nC,GAAC,GAAGQ,IAAI,CAACye,mBAAlB;AACD;AACF;;AAED,UAAI6oB,SAAS,GAAG,EAAhB;;AACA,UAAI5nC,CAAC,CAACikC,MAAN,EAAc;AACZ,YAAIjkC,CAAC,CAACmkC,IAAN,EAAY;AACVyD,UAAAA,SAAS,IAAI,aAAb;AACD,SAFD,MAEO;AACLA,UAAAA,SAAS,GAAG,SAAZ;AACD;AACF,OAND,MAMO,IAAI5nC,CAAC,CAACkkC,IAAN,EAAY;AACjB,YAAIlkC,CAAC,CAACmkC,IAAN,EAAY;AACVyD,UAAAA,SAAS,GAAG,WAAZ;AACD,SAFD,MAEO;AACLA,UAAAA,SAAS,GAAG,OAAZ;AACD;AACF,OANM,MAMA;AACL,YAAI5nC,CAAC,CAACmkC,IAAN,EAAY;AACVyD,UAAAA,SAAS,IAAI,OAAb;AACD;AACF;;AAED,UAAIA,SAAS,CAAC7nC,MAAV,KAAqB,CAAzB,EAA4B;AAC1B6nC,QAAAA,SAAS,GAAG,OAAZ;AACD;;AAED,UAAI5nC,CAAC,CAACokC,SAAN,EAAiB;AACfwD,QAAAA,SAAS,GAAG,gBAAgBA,SAA5B;AACD;;AAEDA,MAAAA,SAAS,IAAID,MAAb;AAEAC,MAAAA,SAAS,IAAI,MAAMtL,QAAnB;AAEA,aAAOryB,GAAG,GAAG29B,SAAb;AACD,KA5FH,EAlC0F,CAgI1F;;AACAH,IAAAA,UAAU,CACPvjC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,UAAUoB,CAAV,EAAa;AACvB,aAAOA,CAAC,CAAC1B,EAAF,GAAO,OAAd;AACD,KAJH,EAKGO,IALH,CAKQ,UAAUmB,CAAV,EAAa;AACjB,aAAOA,CAAC,CAACshC,IAAT;AACD,KAPH,EAQG1iC,IARH,CAQQ,WARR,EAQqB0B,IAAI,CAAC4d,QAR1B,EASGtf,IATH,CASQ,GATR,EASa,UAAUoB,CAAV,EAAa;AACtB,UAAI6nC,MAAM,GAAG/B,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAtB;AACA,UAAIsG,IAAI,GAAGhC,SAAS,CAAC9lC,CAAC,CAAC0hC,aAAF,IAAmB1hC,CAAC,CAACyhC,OAAtB,CAApB;;AACA,UAAIzhC,CAAC,CAACokC,SAAN,EAAiB;AACfyD,QAAAA,MAAM,IAAI,OAAO/B,SAAS,CAAC9lC,CAAC,CAACyhC,OAAH,CAAT,GAAuBqE,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAvC,IAAwD,MAAM8F,YAAxE;AACD;;AACD,UAAItnC,CAAC,CAACokC,SAAN,EAAiB;AACf0D,QAAAA,IAAI,GAAGD,MAAM,GAAGP,YAAhB;AACD;;AACD,UAAMS,SAAS,GAAG,KAAKvlC,OAAL,GAAeO,KAAjC,CATsB,CAWtB;;AACA,UAAIglC,SAAS,GAAGD,IAAI,GAAGD,MAAvB,EAA+B;AAC7B,YAAIC,IAAI,GAAGC,SAAP,GAAmB,MAAMznC,IAAI,CAACse,WAA9B,GAA4CrV,CAAhD,EAAmD;AACjD,iBAAOs+B,MAAM,GAAGR,UAAT,GAAsB,CAA7B;AACD,SAFD,MAEO;AACL,iBAAOS,IAAI,GAAGT,UAAP,GAAoB,CAA3B;AACD;AACF,OAND,MAMO;AACL,eAAO,CAACS,IAAI,GAAGD,MAAR,IAAkB,CAAlB,GAAsBA,MAAtB,GAA+BR,UAAtC;AACD;AACF,KA9BH,EA+BGzoC,IA/BH,CA+BQ,GA/BR,EA+Ba,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACzB;AACAA,MAAAA,CAAC,GAAGE,CAAC,CAACqkC,KAAN;AACA,aAAOvkC,CAAC,GAAGqnC,MAAJ,GAAa7mC,IAAI,CAACke,SAAL,GAAiB,CAA9B,IAAmCle,IAAI,CAAC4d,QAAL,GAAgB,CAAhB,GAAoB,CAAvD,IAA4DkpB,SAAnE;AACD,KAnCH,EAoCGxoC,IApCH,CAoCQ,aApCR,EAoCuB0oC,YApCvB,EAqCG1oC,IArCH,CAqCQ,OArCR,EAqCiB,UAAUoB,CAAV,EAAa;AAC1B,UAAM6nC,MAAM,GAAG/B,SAAS,CAAC9lC,CAAC,CAACwhC,SAAH,CAAxB;AACA,UAAIsG,IAAI,GAAGhC,SAAS,CAAC9lC,CAAC,CAACyhC,OAAH,CAApB;;AACA,UAAIzhC,CAAC,CAACokC,SAAN,EAAiB;AACf0D,QAAAA,IAAI,GAAGD,MAAM,GAAGP,YAAhB;AACD;;AACD,UAAMS,SAAS,GAAG,KAAKvlC,OAAL,GAAeO,KAAjC;AAEA,UAAIu5B,QAAQ,GAAG,EAAf;;AACA,UAAIt8B,CAAC,CAACgE,OAAF,CAAUjE,MAAV,GAAmB,CAAvB,EAA0B;AACxBu8B,QAAAA,QAAQ,GAAGt8B,CAAC,CAACgE,OAAF,CAAUqS,IAAV,CAAe,GAAf,CAAX;AACD;;AAED,UAAIsxB,MAAM,GAAG,CAAb;;AACA,WAAK,IAAI7nC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGmmC,UAAU,CAAClmC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAACoP,IAAF,KAAW62B,UAAU,CAACnmC,GAAD,CAAzB,EAA8B;AAC5B6nC,UAAAA,MAAM,GAAG7nC,GAAC,GAAGQ,IAAI,CAACye,mBAAlB;AACD;AACF;;AAED,UAAIipB,QAAQ,GAAG,EAAf;;AACA,UAAIhoC,CAAC,CAACikC,MAAN,EAAc;AACZ,YAAIjkC,CAAC,CAACmkC,IAAN,EAAY;AACV6D,UAAAA,QAAQ,GAAG,mBAAmBL,MAA9B;AACD,SAFD,MAEO;AACLK,UAAAA,QAAQ,GAAG,eAAeL,MAA1B;AACD;AACF;;AAED,UAAI3nC,CAAC,CAACkkC,IAAN,EAAY;AACV,YAAIlkC,CAAC,CAACmkC,IAAN,EAAY;AACV6D,UAAAA,QAAQ,GAAGA,QAAQ,GAAG,eAAX,GAA6BL,MAAxC;AACD,SAFD,MAEO;AACLK,UAAAA,QAAQ,GAAGA,QAAQ,GAAG,WAAX,GAAyBL,MAApC;AACD;AACF,OAND,MAMO;AACL,YAAI3nC,CAAC,CAACmkC,IAAN,EAAY;AACV6D,UAAAA,QAAQ,GAAGA,QAAQ,GAAG,WAAX,GAAyBL,MAApC;AACD;AACF;;AAED,UAAI3nC,CAAC,CAACokC,SAAN,EAAiB;AACf4D,QAAAA,QAAQ,IAAI,gBAAZ;AACD,OA3CyB,CA6C1B;;;AACA,UAAID,SAAS,GAAGD,IAAI,GAAGD,MAAvB,EAA+B;AAC7B,YAAIC,IAAI,GAAGC,SAAP,GAAmB,MAAMznC,IAAI,CAACse,WAA9B,GAA4CrV,CAAhD,EAAmD;AACjD,iBAAO+yB,QAAQ,GAAG,sCAAX,GAAoDqL,MAApD,GAA6D,GAA7D,GAAmEK,QAA1E;AACD,SAFD,MAEO;AACL,iBACE1L,QAAQ,GACR,uCADA,GAEAqL,MAFA,GAGA,GAHA,GAIAK,QAJA,GAKA,SALA,GAMAD,SAPF;AASD;AACF,OAdD,MAcO;AACL,eAAOzL,QAAQ,GAAG,oBAAX,GAAkCqL,MAAlC,GAA2C,GAA3C,GAAiDK,QAAjD,GAA4D,SAA5D,GAAwED,SAA/E;AACD;AACF,KApGH;AAsGA,QAAM9sB,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CAvO0F,CAyO1F;;AACA,QAAIA,aAAa,KAAK,SAAtB,EAAiC;AAC/B,UAAI+O,eAAJ;;AACAA,MAAAA,eAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;;AACA,UAAM2rB,KAAI,GAAGvoB,0CAAM,CAACsoB,eAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CAAnB;;AACA,UAAMoD,IAAG,GAAGL,eAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAtC;;AAEAud,MAAAA,UAAU,CACP57B,MADH,CACU,UAAU7L,CAAV,EAAa;AACnB,eAAO,OAAO++B,KAAK,CAAC/+B,CAAC,CAAC1B,EAAH,CAAZ,KAAuB,WAA9B;AACD,OAHH,EAIG2pC,IAJH,CAIQ,UAAUl5B,CAAV,EAAa;AACjB,YAAIm5B,QAAQ,GAAG7d,IAAG,CAAC1E,aAAJ,CAAkB,MAAM5W,CAAC,CAACzQ,EAA1B,CAAf;;AACA,YAAI6pC,QAAQ,GAAG9d,IAAG,CAAC1E,aAAJ,CAAkB,MAAM5W,CAAC,CAACzQ,EAAR,GAAa,OAA/B,CAAf;;AACA,YAAM8pC,SAAS,GAAGF,QAAQ,CAAC3L,UAA3B;;AACA,YAAI8L,IAAI,GAAGhe,IAAG,CAACie,aAAJ,CAAkB,GAAlB,CAAX;;AACAD,QAAAA,IAAI,CAACliC,YAAL,CAAkB,YAAlB,EAAgC44B,KAAK,CAAChwB,CAAC,CAACzQ,EAAH,CAArC;AACA+pC,QAAAA,IAAI,CAACliC,YAAL,CAAkB,QAAlB,EAA4B,MAA5B;AACAiiC,QAAAA,SAAS,CAACjmC,WAAV,CAAsBkmC,IAAtB;AACAA,QAAAA,IAAI,CAAClmC,WAAL,CAAiB+lC,QAAjB;AACAG,QAAAA,IAAI,CAAClmC,WAAL,CAAiBgmC,QAAjB;AACD,OAdH;AAeD;AACF;AACD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAStB,eAAT,CAAyBM,MAAzB,EAAiCC,SAAjC,EAA4CC,UAA5C,EAAwD99B,CAAxD,EAA2DC,CAA3D,EAA8Dy1B,KAA9D,EAAqEH,QAArE,EAA+EjnB,QAA/E,EAAyF;AACvF,QAAM0wB,OAAO,GAAGtJ,KAAK,CAAChd,MAAN,CACd,UAAChQ,GAAD;AAAA,UAAQuvB,SAAR,QAAQA,SAAR;AAAA,aAAyBvvB,GAAG,GAAG7I,IAAI,CAAC6I,GAAL,CAASA,GAAT,EAAcuvB,SAAd,CAAH,GAA8BA,SAA1D;AAAA,KADc,EAEd,CAFc,CAAhB;AAIA,QAAMgH,OAAO,GAAGvJ,KAAK,CAAChd,MAAN,CAAa,UAACsS,GAAD;AAAA,UAAQkN,OAAR,SAAQA,OAAR;AAAA,aAAuBlN,GAAG,GAAGnrB,IAAI,CAACmrB,GAAL,CAASA,GAAT,EAAckN,OAAd,CAAH,GAA4BA,OAAtD;AAAA,KAAb,EAA6E,CAA7E,CAAhB;AACA,QAAM7C,UAAU,GAAGhX,kEAAA,EAAnB;AACA,QAAI,CAAC2gB,OAAD,IAAY,CAACC,OAAjB,EAA0B;AAE1B,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAI7B,KAAK,GAAG,IAAZ;AACA,QAAI5mC,CAAC,GAAG0+B,kDAAM,CAAC6J,OAAD,CAAd;;AACA,WAAOvoC,CAAC,CAAC0oC,OAAF,MAAeF,OAAtB,EAA+B;AAC7B,UAAI5gB,kEAAA,CAAwB5nB,CAAxB,EAA2B4+B,UAA3B,EAAuCE,QAAvC,EAAiDjnB,QAAjD,CAAJ,EAAgE;AAC9D,YAAI,CAAC+uB,KAAL,EAAY;AACVA,UAAAA,KAAK,GAAG;AACN/tB,YAAAA,KAAK,EAAE7Y,CAAC,CAAC2oC,KAAF,EADD;AAEN5vB,YAAAA,GAAG,EAAE/Y,CAAC,CAAC2oC,KAAF;AAFC,WAAR;AAID,SALD,MAKO;AACL/B,UAAAA,KAAK,CAAC7tB,GAAN,GAAY/Y,CAAC,CAAC2oC,KAAF,EAAZ;AACD;AACF,OATD,MASO;AACL,YAAI/B,KAAJ,EAAW;AACT6B,UAAAA,aAAa,CAACnnC,IAAd,CAAmBslC,KAAnB;AACAA,UAAAA,KAAK,GAAG,IAAR;AACD;AACF;;AACD5mC,MAAAA,CAAC,CAACi+B,GAAF,CAAM,CAAN,EAAS,GAAT;AACD;;AAED,QAAMwJ,UAAU,GAAGppC,GAAG,CAAC6F,MAAJ,CAAW,GAAX,EAAgBwiB,SAAhB,CAA0B,MAA1B,EAAkCjY,IAAlC,CAAuCg6B,aAAvC,EAAsDjB,KAAtD,EAAnB;AAEAC,IAAAA,UAAU,CACPvjC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,UAAUoB,CAAV,EAAa;AACvB,aAAO,aAAaA,CAAC,CAAC6Y,KAAF,CAAQsoB,MAAR,CAAe,YAAf,CAApB;AACD,KAJH,EAKGviC,IALH,CAKQ,GALR,EAKa,UAAUoB,CAAV,EAAa;AACtB,aAAO8lC,SAAS,CAAC9lC,CAAC,CAAC6Y,KAAH,CAAT,GAAqBwuB,UAA5B;AACD,KAPH,EAQGzoC,IARH,CAQQ,GARR,EAQa0B,IAAI,CAACue,oBARlB,EASGjgB,IATH,CASQ,OATR,EASiB,UAAUoB,CAAV,EAAa;AAC1B,UAAM4oC,SAAS,GAAG5oC,CAAC,CAAC+Y,GAAF,CAAM4vB,KAAN,GAAc1K,GAAd,CAAkB,CAAlB,EAAqB,KAArB,CAAlB;AACA,aAAO6H,SAAS,CAAC8C,SAAD,CAAT,GAAuB9C,SAAS,CAAC9lC,CAAC,CAAC6Y,KAAH,CAAvC;AACD,KAZH,EAaGja,IAbH,CAaQ,QAbR,EAakB4K,CAAC,GAAG49B,SAAJ,GAAgB9mC,IAAI,CAACue,oBAbvC,EAcGjgB,IAdH,CAcQ,kBAdR,EAc4B,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACxC,aACE,CACEgmC,SAAS,CAAC9lC,CAAC,CAAC6Y,KAAH,CAAT,GACAwuB,UADA,GAEA,OAAOvB,SAAS,CAAC9lC,CAAC,CAAC+Y,GAAH,CAAT,GAAmB+sB,SAAS,CAAC9lC,CAAC,CAAC6Y,KAAH,CAAnC,CAHF,EAIE6uB,QAJF,KAKA,KALA,GAMA,CAAC5nC,CAAC,GAAGqnC,MAAJ,GAAa,MAAM39B,CAApB,EAAuBk+B,QAAvB,EANA,GAOA,IARF;AAUD,KAzBH,EA0BG9oC,IA1BH,CA0BQ,OA1BR,EA0BiB,eA1BjB;AA2BD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASkoC,QAAT,CAAkBO,UAAlB,EAA8BD,SAA9B,EAAyC79B,CAAzC,EAA4CC,CAA5C,EAA+C;AAC7C,QAAIq/B,WAAW,GAAGvD,8CAAU,CAACQ,SAAD,CAAV,CACfgD,QADe,CACN,CAACt/B,CAAD,GAAK49B,SAAL,GAAiB9mC,IAAI,CAACue,oBADhB,EAEfkqB,UAFe,CAEJvD,8CAAU,CAAC5d,kEAAA,MAA6BtnB,IAAI,CAAC0e,UAAlC,IAAgD,UAAjD,CAFN,CAAlB;AAIA3gB,IAAAA,GAAG,CACA6F,MADH,CACU,GADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,MAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,eAAeyoC,UAAf,GAA4B,IAA5B,IAAoC79B,CAAC,GAAG,EAAxC,IAA8C,GAHnE,EAIGw/B,IAJH,CAIQH,WAJR,EAKGniB,SALH,CAKa,MALb,EAMGpjB,KANH,CAMS,aANT,EAMwB,QANxB,EAOG1E,IAPH,CAOQ,MAPR,EAOgB,MAPhB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGA,IATH,CASQ,WATR,EASqB,EATrB,EAUGA,IAVH,CAUQ,IAVR,EAUc,KAVd;;AAYA,QAAI6mC,+DAAA,MAA4BnlC,IAAI,CAAC2e,OAArC,EAA8C;AAC5C,UAAIgqB,QAAQ,GAAG1D,2CAAO,CAACO,SAAD,CAAP,CACZgD,QADY,CACH,CAACt/B,CAAD,GAAK49B,SAAL,GAAiB9mC,IAAI,CAACue,oBADnB,EAEZkqB,UAFY,CAEDvD,8CAAU,CAAC5d,kEAAA,MAA6BtnB,IAAI,CAAC0e,UAAlC,IAAgD,UAAjD,CAFT,CAAf;AAIA3gB,MAAAA,GAAG,CACA6F,MADH,CACU,GADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,MAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,eAAeyoC,UAAf,GAA4B,IAA5B,GAAmCD,SAAnC,GAA+C,GAHpE,EAIG4B,IAJH,CAIQC,QAJR,EAKGviB,SALH,CAKa,MALb,EAMGpjB,KANH,CAMS,aANT,EAMwB,QANxB,EAOG1E,IAPH,CAOQ,MAPR,EAOgB,MAPhB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGA,IATH,CASQ,WATR,EASqB,EATrB,EAL4C,CAe5C;AACD;AACF;AAED;AACF;AACA;AACA;;;AACE,WAASooC,UAAT,CAAoBG,MAApB,EAA4BC,SAA5B,EAAuC;AACrC,QAAM8B,aAAa,GAAG,EAAtB;AACA,QAAIC,OAAO,GAAG,CAAd;;AAEA,SAAK,IAAIrpC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGmmC,UAAU,CAAClmC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1CopC,MAAAA,aAAa,CAACppC,GAAD,CAAb,GAAmB,CAACmmC,UAAU,CAACnmC,GAAD,CAAX,EAAgBspC,QAAQ,CAACnD,UAAU,CAACnmC,GAAD,CAAX,EAAgBomC,cAAhB,CAAxB,CAAnB;AACD;;AAED7nC,IAAAA,GAAG,CACA6F,MADH,CACU,GADV,EACe;AADf,KAEGwiB,SAFH,CAEa,MAFb,EAGGjY,IAHH,CAGQy6B,aAHR,EAIG1B,KAJH,GAKGtjC,MALH,CAKU,UAAUlE,CAAV,EAAa;AACnB,UAAMoG,IAAI,GAAGpG,CAAC,CAAC,CAAD,CAAD,CAAKqG,KAAL,CAAW+b,qEAAX,CAAb;AACA,UAAM9Y,EAAE,GAAG,EAAElD,IAAI,CAACrG,MAAL,GAAc,CAAhB,IAAqB,CAAhC;AAEA,UAAMmG,QAAQ,GAAGmkB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,MAAlD,CAAjB;AACAU,MAAAA,QAAQ,CAACC,YAAT,CAAsB,IAAtB,EAA4BmD,EAAE,GAAG,IAAjC;;AAEA,WAAK,IAAI9C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACrG,MAAzB,EAAiCyG,CAAC,EAAlC,EAAsC;AACpC,YAAMC,KAAK,GAAG4jB,GAAG,CAAC7kB,eAAJ,CAAoB,4BAApB,EAAkD,OAAlD,CAAd;AACAiB,QAAAA,KAAK,CAACN,YAAN,CAAmB,oBAAnB,EAAyC,SAAzC;AACAM,QAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,IAAxB;AACA,YAAIK,CAAC,GAAG,CAAR,EAAWC,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACXM,QAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAxB;AACAN,QAAAA,QAAQ,CAAC/D,WAAT,CAAqBsE,KAArB;AACD;;AACD,aAAOP,QAAP;AACD,KArBH,EAsBGtH,IAtBH,CAsBQ,GAtBR,EAsBa,EAtBb,EAuBGA,IAvBH,CAuBQ,GAvBR,EAuBa,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACzB,UAAIA,CAAC,GAAG,CAAR,EAAW;AACT,aAAK,IAAI0G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1G,CAApB,EAAuB0G,CAAC,EAAxB,EAA4B;AAC1B2iC,UAAAA,OAAO,IAAID,aAAa,CAACppC,CAAC,GAAG,CAAL,CAAb,CAAqB,CAArB,CAAX;AACA,iBAAQE,CAAC,CAAC,CAAD,CAAD,GAAOmnC,MAAR,GAAkB,CAAlB,GAAsBgC,OAAO,GAAGhC,MAAhC,GAAyCC,SAAhD;AACD;AACF,OALD,MAKO;AACL,eAAQpnC,CAAC,CAAC,CAAD,CAAD,GAAOmnC,MAAR,GAAkB,CAAlB,GAAsBC,SAA7B;AACD;AACF,KAhCH,EAiCGxoC,IAjCH,CAiCQ,WAjCR,EAiCqB0B,IAAI,CAACwe,eAjC1B,EAkCGlgB,IAlCH,CAkCQ,WAlCR,EAkCqB0B,IAAI,CAACwe,eAlC1B,EAmCGlgB,IAnCH,CAmCQ,OAnCR,EAmCiB,UAAUoB,CAAV,EAAa;AAC1B,WAAK,IAAIF,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGmmC,UAAU,CAAClmC,MAA/B,EAAuCD,GAAC,EAAxC,EAA4C;AAC1C,YAAIE,CAAC,CAAC,CAAD,CAAD,KAASimC,UAAU,CAACnmC,GAAD,CAAvB,EAA4B;AAC1B,iBAAO,8BAA+BA,GAAC,GAAGQ,IAAI,CAACye,mBAA/C;AACD;AACF;;AACD,aAAO,cAAP;AACD,KA1CH;AA2CD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASkoB,SAAT,CAAmBI,UAAnB,EAA+BD,SAA/B,EAA0C79B,CAA1C,EAA6CC,CAA7C,EAAgD;AAC9C,QAAMq1B,WAAW,GAAG4G,+DAAA,EAApB;;AACA,QAAI5G,WAAW,KAAK,KAApB,EAA2B;AACzB;AACD;;AAED,QAAMwK,MAAM,GAAGhrC,GAAG,CAAC6F,MAAJ,CAAW,GAAX,EAAgBtF,IAAhB,CAAqB,OAArB,EAA8B,OAA9B,CAAf;AACA,QAAM0qC,KAAK,GAAG,IAAIhH,IAAJ,EAAd;AACA,QAAMiH,SAAS,GAAGF,MAAM,CAACnlC,MAAP,CAAc,MAAd,CAAlB;AAEAqlC,IAAAA,SAAS,CACN3qC,IADH,CACQ,IADR,EACcknC,SAAS,CAACwD,KAAD,CAAT,GAAmBjC,UADjC,EAEGzoC,IAFH,CAEQ,IAFR,EAEcknC,SAAS,CAACwD,KAAD,CAAT,GAAmBjC,UAFjC,EAGGzoC,IAHH,CAGQ,IAHR,EAGc0B,IAAI,CAACie,cAHnB,EAIG3f,IAJH,CAIQ,IAJR,EAIc4K,CAAC,GAAGlJ,IAAI,CAACie,cAJvB,EAKG3f,IALH,CAKQ,OALR,EAKiB,OALjB;;AAOA,QAAIigC,WAAW,KAAK,EAApB,EAAwB;AACtB0K,MAAAA,SAAS,CAAC3qC,IAAV,CAAe,OAAf,EAAwBigC,WAAW,CAAC94B,OAAZ,CAAoB,IAApB,EAA0B,GAA1B,CAAxB;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASogC,WAAT,CAAqBqD,GAArB,EAA0B;AACxB,QAAMC,IAAI,GAAG,EAAb;AACA,QAAMh0B,MAAM,GAAG,EAAf;;AACA,SAAK,IAAI3V,GAAC,GAAG,CAAR,EAAW4rB,CAAC,GAAG8d,GAAG,CAACzpC,MAAxB,EAAgCD,GAAC,GAAG4rB,CAApC,EAAuC,EAAE5rB,GAAzC,EAA4C;AAC1C,UAAI,CAACX,MAAM,CAACuqC,SAAP,CAAiBvP,cAAjB,CAAgC6O,IAAhC,CAAqCS,IAArC,EAA2CD,GAAG,CAAC1pC,GAAD,CAA9C,CAAL,EAAyD;AACvD;AACA;AACA2pC,QAAAA,IAAI,CAACD,GAAG,CAAC1pC,GAAD,CAAJ,CAAJ,GAAe,IAAf;AACA2V,QAAAA,MAAM,CAACnU,IAAP,CAAYkoC,GAAG,CAAC1pC,GAAD,CAAf;AACD;AACF;;AACD,WAAO2V,MAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASk0B,SAAT,CAAmBH,GAAnB,EAAwB;AACtB,QAAI1pC,CAAC,GAAG0pC,GAAG,CAACzpC,MAAZ,CADsB,CACF;;AACpB,QAAMgiB,GAAG,GAAG,EAAZ,CAFsB,CAEN;;AAChB,WAAOjiB,CAAP,EAAU;AACRiiB,MAAAA,GAAG,CAACynB,GAAG,CAAC,EAAE1pC,CAAH,CAAJ,CAAH,GAAgB,CAACiiB,GAAG,CAACynB,GAAG,CAAC1pC,CAAD,CAAJ,CAAH,IAAe,CAAhB,IAAqB,CAArC,CADQ,CACgC;AACzC;;AACD,WAAOiiB,GAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE,WAASqnB,QAAT,CAAkBQ,IAAlB,EAAwBJ,GAAxB,EAA6B;AAC3B,WAAOG,SAAS,CAACH,GAAD,CAAT,CAAeI,IAAf,KAAwB,CAA/B;AACD;AACF,CAznBM;AA2nBP,iEAAe;AACb/f,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACtpBA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,8LAONA,OAAO,CAACipC,eAPF,2GAgBNjpC,OAAO,CAACkpC,eAhBF,gDAoBNlpC,OAAO,CAACmpC,gBApBF,8DAyBNnpC,OAAO,CAACopC,kBAzBF,wEA8BNppC,OAAO,CAACw9B,UA9BF,qDAkCNx9B,OAAO,CAACw9B,UAlCF,qDAsCNx9B,OAAO,CAACw9B,UAtCF,qDA0CNx9B,OAAO,CAACw9B,UA1CF,qFA+CEx9B,OAAO,CAACqpC,aA/CV,wNA0DJrpC,OAAO,CAACspC,SA1DJ,oGA8DGtpC,OAAO,CAACS,UA9DX,4BA+DJT,OAAO,CAACu9B,SA/DJ,4IA4EJv9B,OAAO,CAACupC,cA5EJ,0VAgGEvpC,OAAO,CAACqpC,aAhGV,+DAoGNrpC,OAAO,CAACwpC,iBApGF,2DAsGExpC,OAAO,CAACqpC,aAtGV,yKA6GNrpC,OAAO,CAACwpC,iBA7GF,yDA+GExpC,OAAO,CAACqpC,aA/GV,gKAwHNrpC,OAAO,CAACypC,sBAxHF,8HA8HNzpC,OAAO,CAACypC,sBA9HF,+HAoINzpC,OAAO,CAACypC,sBApIF,mLA8INzpC,OAAO,CAAC0pC,aA9IF,8EAqJN1pC,OAAO,CAAC2pC,YArJF,4BAsJJ3pC,OAAO,CAAC4pC,eAtJJ,iFA4JN5pC,OAAO,CAAC6pC,oBA5JF,8EAiKN7pC,OAAO,CAAC6pC,oBAjKF,+GA2KN7pC,OAAO,CAAC8pC,kBA3KF,4BA4KJ9pC,OAAO,CAAC+pC,qBA5KJ,sGAmLN/pC,OAAO,CAACwpC,iBAnLF,uHA6LJxpC,OAAO,CAACgqC,mBA7LJ,0BA8LNhqC,OAAO,CAACiqC,gBA9LF,oHAsMNjqC,OAAO,CAACwpC,iBAtMF,mIAgNJxpC,OAAO,CAACkqC,eAhNJ,0BAiNNlqC,OAAO,CAACmqC,YAjNF,8HAyNJnqC,OAAO,CAACkqC,eAzNJ,0BA0NNlqC,OAAO,CAAC8pC,kBA1NF,sHAkOJ9pC,OAAO,CAACkqC,eAlOJ,0BAmONlqC,OAAO,CAACiqC,gBAnOF,mTAoPNjqC,OAAO,CAACwpC,iBApPF,iIA2PNxpC,OAAO,CAACwpC,iBA3PF,4GAiQNxpC,OAAO,CAACu9B,SAjQF;AAAA,CAAlB;;AAuQA,iEAAehT,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIxJ,cAAc,GAAGhhB,kDAAS,GAAG8gB,QAAZ,CAAqBE,cAA1C;AACA,IAAIspB,OAAO,GAAG,EAAd;AACA,IAAI3/B,IAAI,GAAG,IAAX;AACA,IAAI4/B,QAAQ,GAAG,EAAf;AACAA,QAAQ,CAACvpB,cAAD,CAAR,GAA2BrW,IAA3B;AACA,IAAI6/B,SAAS,GAAGxpB,cAAhB;AACA,IAAIyF,SAAS,GAAG,IAAhB;AACA,IAAIgkB,GAAG,GAAG,CAAV;;AAEA,SAASC,KAAT,GAAiB;AACf,SAAOL,8CAAM,CAAC;AAAEjrC,IAAAA,MAAM,EAAE;AAAV,GAAD,CAAb;AACD;;AAEM,IAAM2iB,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM,EAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AACA,SAASk8B,MAAT,CAAgB7R,IAAhB,EAAsB8R,EAAtB,EAA0B;AACxB,MAAMC,SAAS,GAAGrsC,MAAM,CAACssC,MAAP,CAAc,IAAd,CAAlB;AACA,SAAOhS,IAAI,CAACxX,MAAL,CAAY,UAACypB,GAAD,EAAMjmB,IAAN,EAAe;AAChC,QAAMzkB,GAAG,GAAGuqC,EAAE,CAAC9lB,IAAD,CAAd;;AACA,QAAI,CAAC+lB,SAAS,CAACxqC,GAAD,CAAd,EAAqB;AACnBwqC,MAAAA,SAAS,CAACxqC,GAAD,CAAT,GAAiB,IAAjB;AACA0qC,MAAAA,GAAG,CAACpqC,IAAJ,CAASmkB,IAAT;AACD;;AACD,WAAOimB,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAEM,IAAMpkB,YAAY,GAAG,SAAfA,YAAe,CAAUnZ,GAAV,EAAe;AACzCiZ,EAAAA,SAAS,GAAGjZ,GAAZ;AACD,CAFM;AAGP,IAAIvN,OAAO,GAAG,EAAd;AACO,IAAM+qC,UAAU,GAAG,SAAbA,UAAa,CAAUC,YAAV,EAAwB;AAChD7sC,EAAAA,8CAAA,CAAU,aAAV,EAAyB6sC,YAAzB;AACAA,EAAAA,YAAY,GAAGA,YAAY,IAAIA,YAAY,CAAChlC,IAAb,EAA/B;AACAglC,EAAAA,YAAY,GAAGA,YAAY,IAAI,IAA/B;;AACA,MAAI;AACFhrC,IAAAA,OAAO,GAAGwC,IAAI,CAACsL,KAAL,CAAWk9B,YAAX,CAAV;AACD,GAFD,CAEE,OAAO9gC,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,sCAAV,EAAkD+L,CAAC,CAAC+gC,OAApD;AACD;AACF,CATM;AAWA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAOlrC,OAAP;AACD,CAFM;AAIA,IAAMmrC,MAAM,GAAG,gBAAUC,GAAV,EAAe1tC,EAAf,EAAmB8Q,IAAnB,EAAyB68B,GAAzB,EAA8B;AAClDltC,EAAAA,8CAAA,CAAU,kBAAV,EAA8BitC,GAA9B,EAAmC1tC,EAAnC,EAAuC8Q,IAAvC,EAA6C68B,GAA7C;AACA3tC,EAAAA,EAAE,GAAG8jB,mEAAA,CAAoB9jB,EAApB,EAAwB6jB,8CAAA,EAAxB,CAAL;AACA6pB,EAAAA,GAAG,GAAG5pB,mEAAA,CAAoB4pB,GAApB,EAAyB7pB,8CAAA,EAAzB,CAAN;AACA8pB,EAAAA,GAAG,GAAG7pB,mEAAA,CAAoB6pB,GAApB,EAAyB9pB,8CAAA,EAAzB,CAAN;AACA,MAAM4pB,MAAM,GAAG;AACbztC,IAAAA,EAAE,EAAEA,EAAE,GAAGA,EAAH,GAAQ8sC,GAAG,GAAG,GAAN,GAAYC,KAAK,EADlB;AAEbQ,IAAAA,OAAO,EAAEG,GAFI;AAGbZ,IAAAA,GAAG,EAAEA,GAAG,EAHK;AAIbh8B,IAAAA,IAAI,EAAEA,IAAI,GAAGA,IAAH,GAAU88B,UAAU,CAACC,MAJlB;AAKbF,IAAAA,GAAG,EAAEA,GAAG,GAAGA,GAAH,GAAS,EALJ;AAMb34B,IAAAA,OAAO,EAAEhI,IAAI,IAAI,IAAR,GAAe,EAAf,GAAoB,CAACA,IAAI,CAAChN,EAAN,CANhB;AAOb8tC,IAAAA,MAAM,EAAEjB;AAPK,GAAf;AASA7/B,EAAAA,IAAI,GAAGygC,MAAP;AACAd,EAAAA,OAAO,CAACc,MAAM,CAACztC,EAAR,CAAP,GAAqBytC,MAArB;AACAb,EAAAA,QAAQ,CAACC,SAAD,CAAR,GAAsBY,MAAM,CAACztC,EAA7B;AACAS,EAAAA,8CAAA,CAAU,mBAAmBgtC,MAAM,CAACztC,EAApC;AACD,CAlBM;AAoBA,IAAM8tC,MAAM,GAAG,SAATA,MAAS,CAAUn9B,IAAV,EAAgB;AACpCA,EAAAA,IAAI,GAAGmT,mEAAA,CAAoBnT,IAApB,EAA0BkT,8CAAA,EAA1B,CAAP;;AACA,MAAI,OAAO+oB,QAAQ,CAACj8B,IAAD,CAAf,KAA0B,WAA9B,EAA2C;AACzCi8B,IAAAA,QAAQ,CAACj8B,IAAD,CAAR,GAAiB3D,IAAI,IAAI,IAAR,GAAeA,IAAI,CAAChN,EAApB,GAAyB,IAA1C;AACA+tC,IAAAA,QAAQ,CAACp9B,IAAD,CAAR;AACAlQ,IAAAA,8CAAA,CAAU,iBAAV;AACD,GAJD,MAIO;AACL,QAAIgV,KAAK,GAAG,IAAIu4B,KAAJ,CACV,8HACEr9B,IADF,GAEE,IAHQ,CAAZ;AAKA8E,IAAAA,KAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,YAAYoQ,IADP;AAEXs9B,MAAAA,KAAK,EAAE,YAAYt9B,IAFR;AAGXpI,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,eAAe59B,IAAf,GAAsB,GAAvB;AALC,KAAb;AAOA,UAAM8E,KAAN;AACD;AACF,CArBM;AAuBA,IAAM+4B,KAAK,GAAG,SAARA,KAAQ,CAAUC,WAAV,EAAuB;AAC1CA,EAAAA,WAAW,GAAG3qB,mEAAA,CAAoB2qB,WAApB,EAAiC5qB,8CAAA,EAAjC,CAAd;AACA,MAAM6qB,aAAa,GAAG/B,OAAO,CAACC,QAAQ,CAACC,SAAD,CAAT,CAA7B;AACA,MAAM8B,WAAW,GAAGhC,OAAO,CAACC,QAAQ,CAAC6B,WAAD,CAAT,CAA3B;;AACA,MAAI5B,SAAS,KAAK4B,WAAlB,EAA+B;AAC7B,QAAIh5B,KAAK,GAAG,IAAIu4B,KAAJ,CAAU,6DAAV,CAAZ;AACAv4B,IAAAA,KAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,WAAWkuC,WADN;AAEXR,MAAAA,KAAK,EAAE,WAAWQ,WAFP;AAGXlmC,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,YAAD;AALC,KAAb;AAOA,UAAM94B,KAAN;AACD,GAVD,MAUO,IAAI,OAAOi5B,aAAP,KAAyB,WAAzB,IAAwC,CAACA,aAA7C,EAA4D;AACjE,QAAIj5B,MAAK,GAAG,IAAIu4B,KAAJ,CACV,iDAAiDnB,SAAjD,GAA6D,iBADnD,CAAZ;;AAGAp3B,IAAAA,MAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,WAAWkuC,WADN;AAEXR,MAAAA,KAAK,EAAE,WAAWQ,WAFP;AAGXlmC,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,QAAD;AALC,KAAb;AAOA,UAAM94B,MAAN;AACD,GAZM,MAYA,IAAI,OAAOm3B,QAAQ,CAAC6B,WAAD,CAAf,KAAiC,WAArC,EAAkD;AACvD,QAAIh5B,OAAK,GAAG,IAAIu4B,KAAJ,CACV,sDAAsDS,WAAtD,GAAoE,kBAD1D,CAAZ;;AAGAh5B,IAAAA,OAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,WAAWkuC,WADN;AAEXR,MAAAA,KAAK,EAAE,WAAWQ,WAFP;AAGXlmC,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,YAAYE,WAAb;AALC,KAAb;AAOA,UAAMh5B,OAAN;AACD,GAZM,MAYA,IAAI,OAAOk5B,WAAP,KAAuB,WAAvB,IAAsC,CAACA,WAA3C,EAAwD;AAC7D,QAAIl5B,OAAK,GAAG,IAAIu4B,KAAJ,CACV,sDAAsDS,WAAtD,GAAoE,kBAD1D,CAAZ;;AAGAh5B,IAAAA,OAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,WAAWkuC,WADN;AAEXR,MAAAA,KAAK,EAAE,WAAWQ,WAFP;AAGXlmC,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,UAAD;AALC,KAAb;AAOA,UAAM94B,OAAN;AACD,GAZM,MAYA,IAAIi5B,aAAa,KAAKC,WAAtB,EAAmC;AACxC,QAAIl5B,OAAK,GAAG,IAAIu4B,KAAJ,CAAU,0DAAV,CAAZ;;AACAv4B,IAAAA,OAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,WAAWkuC,WADN;AAEXR,MAAAA,KAAK,EAAE,WAAWQ,WAFP;AAGXlmC,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,YAAD;AALC,KAAb;AAOA,UAAM94B,OAAN;AACD,GA5DyC,CA6D1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMg4B,MAAM,GAAG;AACbztC,IAAAA,EAAE,EAAE8sC,GAAG,GAAG,GAAN,GAAYC,KAAK,EADR;AAEbQ,IAAAA,OAAO,EAAE,mBAAmBkB,WAAnB,GAAiC,QAAjC,GAA4C5B,SAFxC;AAGbC,IAAAA,GAAG,EAAEA,GAAG,EAHK;AAIb93B,IAAAA,OAAO,EAAE,CAAChI,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAAChN,EAA5B,EAAgC4sC,QAAQ,CAAC6B,WAAD,CAAxC,CAJI;AAKbX,IAAAA,MAAM,EAAEjB,SALK;AAMb/7B,IAAAA,IAAI,EAAE88B,UAAU,CAACgB;AANJ,GAAf;AAQA5hC,EAAAA,IAAI,GAAGygC,MAAP;AACAd,EAAAA,OAAO,CAACc,MAAM,CAACztC,EAAR,CAAP,GAAqBytC,MAArB;AACAb,EAAAA,QAAQ,CAACC,SAAD,CAAR,GAAsBY,MAAM,CAACztC,EAA7B,CAhF0C,CAiF1C;;AACAS,EAAAA,8CAAA,CAAUmsC,QAAV;AACAnsC,EAAAA,8CAAA,CAAU,gBAAV;AACD,CApFM;AAsFA,IAAMstC,QAAQ,GAAG,SAAXA,QAAW,CAAUD,MAAV,EAAkB;AACxCA,EAAAA,MAAM,GAAGhqB,mEAAA,CAAoBgqB,MAApB,EAA4BjqB,8CAAA,EAA5B,CAAT;;AACA,MAAI,OAAO+oB,QAAQ,CAACkB,MAAD,CAAf,KAA4B,WAAhC,EAA6C;AAC3C,QAAIr4B,KAAK,GAAG,IAAIu4B,KAAJ,CACV,iFAAiFF,MAAjF,GAA0F,IADhF,CAAZ;AAGAr4B,IAAAA,KAAK,CAAC01B,IAAN,GAAa;AACX5qC,MAAAA,IAAI,EAAE,cAAcutC,MADT;AAEXG,MAAAA,KAAK,EAAE,cAAcH,MAFV;AAGXvlC,MAAAA,IAAI,EAAE,GAHK;AAIX2lC,MAAAA,GAAG,EAAE;AAAEC,QAAAA,UAAU,EAAE,CAAd;AAAiBC,QAAAA,SAAS,EAAE,CAA5B;AAA+BC,QAAAA,YAAY,EAAE,CAA7C;AAAgDC,QAAAA,WAAW,EAAE;AAA7D,OAJM;AAKXC,MAAAA,QAAQ,EAAE,CAAC,aAAaT,MAAb,GAAsB,GAAvB;AALC,KAAb;AAOA,UAAMr4B,KAAN,CAX2C,CAY3C;AACA;AACD,GAdD,MAcO;AACLo3B,IAAAA,SAAS,GAAGiB,MAAZ;AACA,QAAM9tC,EAAE,GAAG4sC,QAAQ,CAACC,SAAD,CAAnB;AACA7/B,IAAAA,IAAI,GAAG2/B,OAAO,CAAC3sC,EAAD,CAAd;AACD;AACF,CArBM,EAuBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AACA,SAAS6uC,MAAT,CAAgB3D,GAAhB,EAAqBxoC,GAArB,EAA0BosC,MAA1B,EAAkC;AAChC,MAAMC,KAAK,GAAG7D,GAAG,CAACtoC,OAAJ,CAAYF,GAAZ,CAAd;;AACA,MAAIqsC,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB7D,IAAAA,GAAG,CAACloC,IAAJ,CAAS8rC,MAAT;AACD,GAFD,MAEO;AACL5D,IAAAA,GAAG,CAAC8D,MAAJ,CAAWD,KAAX,EAAkB,CAAlB,EAAqBD,MAArB;AACD;AACF;AAED;;;AACA,SAASG,wBAAT,CAAkCC,SAAlC,EAA6C;AAC3C,MAAMzB,MAAM,GAAGyB,SAAS,CAACvrB,MAAV,CAAiB,UAACypB,GAAD,EAAMK,MAAN,EAAiB;AAC/C,QAAIL,GAAG,CAACN,GAAJ,GAAUW,MAAM,CAACX,GAArB,EAA0B,OAAOM,GAAP;AAC1B,WAAOK,MAAP;AACD,GAHc,EAGZyB,SAAS,CAAC,CAAD,CAHG,CAAf;AAIA,MAAI3mC,IAAI,GAAG,EAAX;AACA2mC,EAAAA,SAAS,CAACzsC,OAAV,CAAkB,UAAUmuB,CAAV,EAAa;AAC7B,QAAIA,CAAC,KAAK6c,MAAV,EAAkB;AAChBllC,MAAAA,IAAI,IAAI,KAAR;AACD,KAFD,MAEO;AACLA,MAAAA,IAAI,IAAI,KAAR;AACD;AACF,GAND;AAOA,MAAM3E,KAAK,GAAG,CAAC2E,IAAD,EAAOklC,MAAM,CAACztC,EAAd,EAAkBytC,MAAM,CAACX,GAAzB,CAAd;;AACA,OAAK,IAAIgB,OAAT,IAAmBlB,QAAnB,EAA6B;AAC3B,QAAIA,QAAQ,CAACkB,OAAD,CAAR,KAAqBL,MAAM,CAACztC,EAAhC,EAAoC4D,KAAK,CAACZ,IAAN,CAAW8qC,OAAX;AACrC;;AACDrtC,EAAAA,8CAAA,CAAUmD,KAAK,CAACmU,IAAN,CAAW,GAAX,CAAV;;AACA,MAAI01B,MAAM,CAACz4B,OAAP,IAAkBy4B,MAAM,CAACz4B,OAAP,CAAevT,MAAf,IAAyB,CAA/C,EAAkD;AAChD,QAAM0tC,SAAS,GAAGxC,OAAO,CAACc,MAAM,CAACz4B,OAAP,CAAe,CAAf,CAAD,CAAzB;AACA65B,IAAAA,MAAM,CAACK,SAAD,EAAYzB,MAAZ,EAAoB0B,SAApB,CAAN;AACAD,IAAAA,SAAS,CAAClsC,IAAV,CAAe2pC,OAAO,CAACc,MAAM,CAACz4B,OAAP,CAAe,CAAf,CAAD,CAAtB;AACD,GAJD,MAIO,IAAIy4B,MAAM,CAACz4B,OAAP,CAAevT,MAAf,IAAyB,CAA7B,EAAgC;AACrC;AACD,GAFM,MAEA;AACL,QAAM2tC,UAAU,GAAGzC,OAAO,CAACc,MAAM,CAACz4B,OAAR,CAA1B;AACA65B,IAAAA,MAAM,CAACK,SAAD,EAAYzB,MAAZ,EAAoB2B,UAApB,CAAN;AACD;;AACDF,EAAAA,SAAS,GAAGlC,MAAM,CAACkC,SAAD,EAAY,UAACte,CAAD;AAAA,WAAOA,CAAC,CAAC5wB,EAAT;AAAA,GAAZ,CAAlB;AACAivC,EAAAA,wBAAwB,CAACC,SAAD,CAAxB;AACD;;AAEM,IAAMG,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC5uC,EAAAA,8CAAA,CAAUksC,OAAV;AACA,MAAMnpC,IAAI,GAAG8rC,eAAe,GAAG,CAAH,CAA5B;AACAL,EAAAA,wBAAwB,CAAC,CAACzrC,IAAD,CAAD,CAAxB;AACD,CAJM;AAMA,IAAM6C,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/BsmC,EAAAA,OAAO,GAAG,EAAV;AACA3/B,EAAAA,IAAI,GAAG,IAAP;AACA,MAAIuiC,UAAU,GAAGltC,kDAAS,GAAG8gB,QAAZ,CAAqBE,cAAtC;AACAupB,EAAAA,QAAQ,GAAG,EAAX;AACAA,EAAAA,QAAQ,CAAC2C,UAAD,CAAR,GAAuB,IAAvB;AACA1C,EAAAA,SAAS,GAAG0C,UAAZ;AACAzC,EAAAA,GAAG,GAAG,CAAN;AACD,CARM;AAUA,IAAM0C,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAY;AAC/C,MAAMC,SAAS,GAAG,EAAlB;;AACA,OAAK,IAAI3B,QAAT,IAAmBlB,QAAnB,EAA6B;AAC3B;AACA6C,IAAAA,SAAS,CAACzsC,IAAV,CAAe;AAAE2N,MAAAA,IAAI,EAAEm9B;AAAR,KAAf;AACD;;AACD,SAAO2B,SAAP;AACD,CAPM;AASA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO9C,QAAP;AACD,CAFM;AAGA,IAAM+C,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAOhD,OAAP;AACD,CAFM;AAGA,IAAM2C,eAAe,GAAG,SAAlBA,eAAkB,GAAY;AACzC,MAAMJ,SAAS,GAAGruC,MAAM,CAAC0B,IAAP,CAAYoqC,OAAZ,EAAqB70B,GAArB,CAAyB,UAAUpV,GAAV,EAAe;AACxD,WAAOiqC,OAAO,CAACjqC,GAAD,CAAd;AACD,GAFiB,CAAlB;AAGAwsC,EAAAA,SAAS,CAACzsC,OAAV,CAAkB,UAAUgO,CAAV,EAAa;AAC7BhQ,IAAAA,8CAAA,CAAUgQ,CAAC,CAACzQ,EAAZ;AACD,GAFD;AAGAkvC,EAAAA,SAAS,CAACp7B,IAAV,CAAe,UAACud,CAAD,EAAI0W,CAAJ;AAAA,WAAU1W,CAAC,CAACyb,GAAF,GAAQ/E,CAAC,CAAC+E,GAApB;AAAA,GAAf;AACA,SAAOoC,SAAP;AACD,CATM;AAUA,IAAMU,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAY;AAC1C,SAAO/C,SAAP;AACD,CAFM;AAGA,IAAM9jB,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAOD,SAAP;AACD,CAFM;AAGA,IAAM+mB,OAAO,GAAG,SAAVA,OAAU,GAAY;AACjC,SAAO7iC,IAAP;AACD,CAFM;AAIA,IAAM4gC,UAAU,GAAG;AACxBC,EAAAA,MAAM,EAAE,CADgB;AAExBiC,EAAAA,OAAO,EAAE,CAFe;AAGxBC,EAAAA,SAAS,EAAE,CAHa;AAIxBnB,EAAAA,KAAK,EAAE;AAJiB,CAAnB;AAOP,iEAAe;AACbxqB,EAAAA,cAAc,EAAdA,cADa;AAEb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsBV,QAA5B;AAAA,GAFE;AAGb6F,EAAAA,YAAY,EAAZA,YAHa;AAIbqkB,EAAAA,UAAU,EAAVA,UAJa;AAKbG,EAAAA,UAAU,EAAVA,UALa;AAMbC,EAAAA,MAAM,EAANA,MANa;AAObK,EAAAA,MAAM,EAANA,MAPa;AAQbU,EAAAA,KAAK,EAALA,KARa;AASbT,EAAAA,QAAQ,EAARA,QATa;AAUb;AACAsB,EAAAA,WAAW,EAAXA,WAXa;AAYbhpC,EAAAA,KAAK,EAALA,KAZa;AAabmpC,EAAAA,qBAAqB,EAArBA,qBAba;AAcbE,EAAAA,WAAW,EAAXA,WAda;AAebC,EAAAA,UAAU,EAAVA,UAfa;AAgBbL,EAAAA,eAAe,EAAfA,eAhBa;AAiBbM,EAAAA,gBAAgB,EAAhBA,gBAjBa;AAkBb7mB,EAAAA,YAAY,EAAZA,YAlBa;AAmBb8mB,EAAAA,OAAO,EAAPA,OAnBa;AAoBbjC,EAAAA,UAAU,EAAVA;AApBa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;ACnXA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIsC,cAAc,GAAG,EAArB;AACA,IAAIC,SAAJ;AAEA,IAAMvC,UAAU,GAAG;AACjBC,EAAAA,MAAM,EAAE,CADS;AAEjBiC,EAAAA,OAAO,EAAE,CAFQ;AAGjBC,EAAAA,SAAS,EAAE,CAHM;AAIjBnB,EAAAA,KAAK,EAAE;AAJU,CAAnB;AAOA,IAAIwB,SAAS,GAAG,EAAhB;AACA,IAAIC,SAAS,GAAG,EAAhB;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAIC,MAAM,GAAG,CAAb;;AACA,IAAMlqC,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClB+pC,EAAAA,SAAS,GAAG,EAAZ;AACAC,EAAAA,SAAS,GAAG,EAAZ;AACAH,EAAAA,cAAc,GAAG,EAAjB;AACAK,EAAAA,MAAM,GAAG,CAAT;AACAD,EAAAA,KAAK,GAAG,EAAR;AACD,CAND;AAQA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAAC7pC,GAAD,EAAS;AACxB,MAAMiB,QAAQ,GAAGX,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACA,MAAIY,IAAI,GAAG,EAAX,CAFwB,CAIxB;;AACA,MAAI,OAAOnB,GAAP,KAAe,QAAnB,EAA6B;AAC3BmB,IAAAA,IAAI,GAAGnB,GAAG,CAACoB,KAAJ,CAAU,qBAAV,CAAP;AACD,GAFD,MAEO,IAAIC,KAAK,CAACC,OAAN,CAActB,GAAd,CAAJ,EAAwB;AAC7BmB,IAAAA,IAAI,GAAGnB,GAAP;AACD,GAFM,MAEA;AACLmB,IAAAA,IAAI,GAAG,EAAP;AACD;;AAED,OAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACrG,MAAzB,EAAiCyG,CAAC,EAAlC,EAAsC;AACpC,QAAMC,KAAK,GAAGlB,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,OAAvD,CAAd;AACAiB,IAAAA,KAAK,CAACC,cAAN,CAAqB,sCAArB,EAA6D,WAA7D,EAA0E,UAA1E;AACAD,IAAAA,KAAK,CAACN,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACAM,IAAAA,KAAK,CAACN,YAAN,CAAmB,GAAnB,EAAwB,GAAxB;AACAM,IAAAA,KAAK,CAACN,YAAN,CAAmB,OAAnB,EAA4B,KAA5B;AACAM,IAAAA,KAAK,CAACE,WAAN,GAAoBP,IAAI,CAACI,CAAD,CAAJ,CAAQI,IAAR,EAApB;AACAV,IAAAA,QAAQ,CAAC/D,WAAT,CAAqBsE,KAArB;AACD;AACD;AACF;AACA;AACA;;;AACE,SAAOP,QAAP;AACD,CA3BD;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM6oC,WAAW,GAAG,SAAdA,WAAc,CAAC1wC,GAAD,EAAM4sC,OAAN,EAAe+D,WAAf,EAA+B;AACjD,MAAMC,cAAc,GAAGtuC,kDAAS,GAAG8gB,QAAnC;AACA,MAAMytB,QAAQ,GAAG7wC,GAAG,CAAC6F,MAAJ,CAAW,GAAX,EAAgBtF,IAAhB,CAAqB,OAArB,EAA8B,gBAA9B,CAAjB;AACA,MAAMuwC,OAAO,GAAG9wC,GAAG,CAAC6F,MAAJ,CAAW,GAAX,EAAgBtF,IAAhB,CAAqB,OAArB,EAA8B,eAA9B,CAAhB;AACA,MAAIiK,GAAG,GAAG,CAAV;AAEA,MAAMhI,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYoqC,OAAZ,CAAb;AACA,MAAMmE,UAAU,GAAGvuC,IAAI,CAACuR,IAAL,CAAU,UAACud,CAAD,EAAI0W,CAAJ,EAAU;AACrC,WAAO4E,OAAO,CAACtb,CAAD,CAAP,CAAWyb,GAAX,GAAiBH,OAAO,CAAC5E,CAAD,CAAP,CAAW+E,GAAnC;AACD,GAFkB,CAAnB;AAGAgE,EAAAA,UAAU,CAACruC,OAAX,CAAmB,UAACC,GAAD,EAAMqsC,KAAN,EAAgB;AACjC,QAAMtB,MAAM,GAAGd,OAAO,CAACjqC,GAAD,CAAtB;AAEA,QAAM0C,CAAC,GAAGgrC,SAAS,CAAC3C,MAAM,CAACK,MAAR,CAAT,CAAyBvjC,GAAnC;AACA,QAAMpF,CAAC,GAAGoF,GAAG,GAAG,EAAhB,CAJiC,CAKjC;;AACA,QAAImmC,WAAJ,EAAiB;AACf,UAAIK,SAAJ;;AACA,cAAQtD,MAAM,CAAC38B,IAAf;AACE,aAAK88B,UAAU,CAACC,MAAhB;AACEkD,UAAAA,SAAS,GAAG,eAAZ;AACA;;AACF,aAAKnD,UAAU,CAACkC,OAAhB;AACEiB,UAAAA,SAAS,GAAG,gBAAZ;AACA;;AACF,aAAKnD,UAAU,CAACmC,SAAhB;AACEgB,UAAAA,SAAS,GAAG,kBAAZ;AACA;;AACF,aAAKnD,UAAU,CAACgB,KAAhB;AACEmC,UAAAA,SAAS,GAAG,cAAZ;AACA;;AACF;AACEA,UAAAA,SAAS,GAAG,eAAZ;AAdJ;;AAiBA,UAAItD,MAAM,CAAC38B,IAAP,KAAgB88B,UAAU,CAACmC,SAA/B,EAA0C;AACxC,YAAM9+B,MAAM,GAAG2/B,QAAQ,CAAChrC,MAAT,CAAgB,MAAhB,CAAf;AACAqL,QAAAA,MAAM,CAAC3Q,IAAP,CAAY,GAAZ,EAAiB6E,CAAC,GAAG,EAArB;AACA8L,QAAAA,MAAM,CAAC3Q,IAAP,CAAY,GAAZ,EAAiB8E,CAAC,GAAG,EAArB;AACA6L,QAAAA,MAAM,CAAC3Q,IAAP,CAAY,QAAZ,EAAsB,EAAtB;AACA2Q,QAAAA,MAAM,CAAC3Q,IAAP,CAAY,OAAZ,EAAqB,EAArB;AACA2Q,QAAAA,MAAM,CAAC3Q,IAAP,CACE,OADF,EAEE,YACEmtC,MAAM,CAACztC,EADT,GAEE,mBAFF,GAGEowC,SAAS,CAAC3C,MAAM,CAACK,MAAR,CAAT,CAAyBiB,KAH3B,GAIE,GAJF,GAKEgC,SALF,GAME,QARJ;AAUAH,QAAAA,QAAQ,CACLhrC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,GAFR,EAEa6E,CAAC,GAAG,CAFjB,EAGG7E,IAHH,CAGQ,GAHR,EAGa8E,CAAC,GAAG,CAHjB,EAIG9E,IAJH,CAIQ,QAJR,EAIkB,EAJlB,EAKGA,IALH,CAKQ,OALR,EAKiB,EALjB,EAMGA,IANH,CAOI,OAPJ,EAQI,YACEmtC,MAAM,CAACztC,EADT,GAEE,SAFF,GAGEowC,SAAS,CAAC3C,MAAM,CAACK,MAAR,CAAT,CAAyBiB,KAH3B,GAIE,GAJF,GAKEgC,SALF,GAME,QAdN;AAgBD,OAhCD,MAgCO;AACL,YAAM9/B,OAAM,GAAG2/B,QAAQ,CAAChrC,MAAT,CAAgB,QAAhB,CAAf;;AACAqL,QAAAA,OAAM,CAAC3Q,IAAP,CAAY,IAAZ,EAAkB6E,CAAlB;;AACA8L,QAAAA,OAAM,CAAC3Q,IAAP,CAAY,IAAZ,EAAkB8E,CAAlB;;AACA6L,QAAAA,OAAM,CAAC3Q,IAAP,CAAY,GAAZ,EAAiBmtC,MAAM,CAAC38B,IAAP,KAAgB88B,UAAU,CAACgB,KAA3B,GAAmC,CAAnC,GAAuC,EAAxD;;AACA39B,QAAAA,OAAM,CAAC3Q,IAAP,CAAY,OAAZ,EAAqB,YAAYmtC,MAAM,CAACztC,EAAnB,GAAwB,SAAxB,GAAoCowC,SAAS,CAAC3C,MAAM,CAACK,MAAR,CAAT,CAAyBiB,KAAlF;;AACA,YAAItB,MAAM,CAAC38B,IAAP,KAAgB88B,UAAU,CAACgB,KAA/B,EAAsC;AACpC,cAAMoC,OAAO,GAAGJ,QAAQ,CAAChrC,MAAT,CAAgB,QAAhB,CAAhB;AACAorC,UAAAA,OAAO,CAAC1wC,IAAR,CAAa,IAAb,EAAmB6E,CAAnB;AACA6rC,UAAAA,OAAO,CAAC1wC,IAAR,CAAa,IAAb,EAAmB8E,CAAnB;AACA4rC,UAAAA,OAAO,CAAC1wC,IAAR,CAAa,GAAb,EAAkB,CAAlB;AACA0wC,UAAAA,OAAO,CAAC1wC,IAAR,CACE,OADF,EAEE,YAAYywC,SAAZ,GAAwB,GAAxB,GAA8BtD,MAAM,CAACztC,EAArC,GAA0C,SAA1C,GAAsDowC,SAAS,CAAC3C,MAAM,CAACK,MAAR,CAAT,CAAyBiB,KAFjF;AAID;;AACD,YAAItB,MAAM,CAAC38B,IAAP,KAAgB88B,UAAU,CAACkC,OAA/B,EAAwC;AACtC,cAAMj7B,KAAK,GAAG+7B,QAAQ,CAAChrC,MAAT,CAAgB,MAAhB,CAAd;AACAiP,UAAAA,KAAK,CACFvU,IADH,CACQ,GADR,cACkB6E,CAAC,GAAG,CADtB,cAC2BC,CAAC,GAAG,CAD/B,cACoCD,CAAC,GAAG,CADxC,cAC6CC,CAAC,GAAG,CADjD,cACsDD,CAAC,GAAG,CAD1D,cAC+DC,CAAC,GAAG,CADnE,cACwED,CAAC,GAAG,CAD5E,cACiFC,CAAC,GAAG,CADrF,GAEG9E,IAFH,CAGI,OAHJ,EAII,YAAYywC,SAAZ,GAAwB,GAAxB,GAA8BtD,MAAM,CAACztC,EAArC,GAA0C,SAA1C,GAAsDowC,SAAS,CAAC3C,MAAM,CAACK,MAAR,CAAT,CAAyBiB,KAJnF;AAMD;AACF;AACF;;AACDsB,IAAAA,SAAS,CAAC5C,MAAM,CAACztC,EAAR,CAAT,GAAuB;AAAEmF,MAAAA,CAAC,EAAEoF,GAAG,GAAG,EAAX;AAAenF,MAAAA,CAAC,EAAEA;AAAlB,KAAvB,CApFiC,CAsFjC;AACA;AACA;;AACA,QAAIsrC,WAAJ,EAAiB;AACf,UAAMl/B,EAAE,GAAG,CAAX;AACA,UAAMC,EAAE,GAAG,CAAX,CAFe,CAGf;;AACA,UAAIg8B,MAAM,CAAC38B,IAAP,KAAgB88B,UAAU,CAACgB,KAA3B,IAAoC+B,cAAc,CAACrtB,eAAvD,EAAwE;AACtE,YAAM2tB,QAAQ,GAAGJ,OAAO,CAAC5wC,MAAR,CAAe,MAAf,EAAuBK,IAAvB,CAA4B,OAA5B,EAAqC,kBAArC,CAAjB;AAEA,YAAMC,IAAI,GAAGswC,OAAO,CACjBjrC,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEAiK,GAFA,EAGVjK,IAHU,CAGL,GAHK,EAGA8E,CAAC,GAAG,EAHJ,EAIV9E,IAJU,CAIL,OAJK,EAII,cAJJ,EAKVC,IALU,CAKLktC,MAAM,CAACztC,EALF,CAAb;AAMA,YAAIiE,IAAI,GAAG1D,IAAI,CAACiD,IAAL,GAAYU,OAAZ,EAAX,CATsE,CAWtE;;AACA+sC,QAAAA,QAAQ,CACL3wC,IADH,CACQ,GADR,EACaiK,GAAG,GAAG,EAAN,GAAWtG,IAAI,CAACQ,KAAL,GAAa,CAAxB,GAA4BgN,EADzC,EAEGnR,IAFH,CAEQ,GAFR,EAEa8E,CAAC,GAAG,IAFjB,EAGG9E,IAHH,CAGQ,OAHR,EAGiB2D,IAAI,CAACQ,KAAL,GAAa,IAAIgN,EAHlC,EAIGnR,IAJH,CAIQ,QAJR,EAIkB2D,IAAI,CAACS,MAAL,GAAc,IAAI+M,EAJpC;AAKAlR,QAAAA,IAAI,CAACD,IAAL,CAAU,GAAV,EAAeiK,GAAG,GAAG,EAAN,GAAWtG,IAAI,CAACQ,KAAL,GAAa,CAAvC;AACD;;AACD,UAAIgpC,MAAM,CAACE,GAAX,EAAgB;AACd,YAAMrqC,IAAI,GAAGutC,OAAO,CAAC5wC,MAAR,CAAe,SAAf,CAAb;AACA,YAAMixC,IAAI,GAAGL,OAAO,CAACjrC,MAAR,CAAe,QAAf,CAAb;AACA,YAAM+nC,GAAG,GAAGkD,OAAO,CAChBjrC,MADS,CACF,MADE,EAEV;AAFU,SAGTtF,IAHS,CAGJ,GAHI,EAGC8E,CAAC,GAAG,EAHL,EAIT9E,IAJS,CAIJ,OAJI,EAIK,WAJL,EAKTC,IALS,CAKJktC,MAAM,CAACE,GALH,CAAZ;AAMA,YAAIwD,OAAO,GAAGxD,GAAG,CAACnqC,IAAJ,GAAWU,OAAX,EAAd;AACAypC,QAAAA,GAAG,CAACrtC,IAAJ,CAAS,GAAT,EAAciK,GAAG,GAAG,EAAN,GAAW4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAAzC;AAEA,YAAM2sC,EAAE,GAAGD,OAAO,CAACzsC,MAAR,GAAiB,CAA5B;AACA,YAAM2sC,EAAE,GAAGjsC,CAAC,GAAG,IAAf;AACA9B,QAAAA,IAAI,CAAChD,IAAL,CAAU,OAAV,EAAmB,eAAnB,EAAoCA,IAApC,CACE,QADF,wBAGIiK,GAAG,GAAG4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAAtB,GAA0B+M,EAAE,GAAG,CAHnC,cAGwC6/B,EAAE,GAAG5/B,EAH7C,yBAIIlH,GAAG,GAAG4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAAtB,GAA0B+M,EAAE,GAAG,CAJnC,cAIwC6/B,EAAE,GAAG5/B,EAJ7C,yBAKIlH,GAAG,GAAG,EAAN,GAAW4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAA3B,GAA+B+M,EALnC,cAKyC6/B,EAAE,GAAGD,EAAL,GAAU3/B,EALnD,yBAMIlH,GAAG,GAAG,EAAN,GAAW4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAA3B,GAA+B+M,EANnC,cAMyC6/B,EAAE,GAAGD,EAAL,GAAU3/B,EANnD,yBAOIlH,GAAG,GAAG,EAAN,GAAW4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAA3B,GAA+B+M,EAPnC,cAOyC6/B,EAAE,GAAGD,EAAL,GAAU3/B,EAPnD,yBAQIlH,GAAG,GAAG,EAAN,GAAW4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAA3B,GAA+B+M,EARnC,cAQyC6/B,EAAE,GAAGD,EAAL,GAAU3/B,EARnD;AAWAy/B,QAAAA,IAAI,CACD5wC,IADH,CACQ,IADR,EACciK,GAAG,GAAG4mC,OAAO,CAAC1sC,KAAR,GAAgB,CAAtB,GAA0B+M,EAAE,GAAG,CAD7C,EAEGlR,IAFH,CAEQ,IAFR,EAEc+wC,EAFd,EAGG/wC,IAHH,CAGQ,GAHR,EAGa,GAHb,EAIGA,IAJH,CAIQ,OAJR,EAIiB,UAJjB;AAKD;AACF;;AACDiK,IAAAA,GAAG,IAAI,EAAP;;AACA,QAAIA,GAAG,GAAGgmC,MAAV,EAAkB;AAChBA,MAAAA,MAAM,GAAGhmC,GAAT;AACD;AACF,GApJD;AAqJD,CA/JD;AAiKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM+mC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,UAAnB,EAAkC;AAC9D,MAAMC,UAAU,GAAGrB,SAAS,CAACmB,OAAO,CAACxxC,EAAT,CAA5B;AACA,MAAM2xC,UAAU,GAAGtB,SAAS,CAACkB,OAAO,CAACvxC,EAAT,CAA5B,CAF8D,CAI9D;;AACA,MAAMuC,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYkvC,UAAZ,CAAb;AACA,MAAMG,iBAAiB,GAAGrvC,IAAI,CAACgL,MAAL,CAAY,UAAC7K,GAAD,EAAS;AAC7C,WACE+uC,UAAU,CAAC/uC,GAAD,CAAV,CAAgBorC,MAAhB,KAA2B0D,OAAO,CAAC1D,MAAnC,IACA2D,UAAU,CAAC/uC,GAAD,CAAV,CAAgBoqC,GAAhB,GAAsByE,OAAO,CAACzE,GAD9B,IAEA2E,UAAU,CAAC/uC,GAAD,CAAV,CAAgBoqC,GAAhB,GAAsB0E,OAAO,CAAC1E,GAHhC;AAKD,GANyB,CAA1B;AAQA,SAAO8E,iBAAiB,CAACnwC,MAAlB,GAA2B,CAAlC;AACD,CAfD;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMowC,QAAQ,GAAG,SAAXA,QAAW,CAACx+B,EAAD,EAAKy+B,EAAL,EAASC,MAAT,EAAoB;AACnC,MAAM97B,KAAK,GAAG87B,MAAM,IAAI,CAAxB;AAEA,MAAMC,SAAS,GAAG3+B,EAAE,GAAGvI,IAAI,CAACC,GAAL,CAASsI,EAAE,GAAGy+B,EAAd,IAAoB,CAA3C;;AACA,MAAI77B,KAAK,GAAG,CAAZ,EAAe;AACb,WAAO+7B,SAAP;AACD;;AAED,MAAIC,EAAE,GAAG,IAAT;;AACA,OAAK,IAAIzwC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8uC,KAAK,CAAC7uC,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAIsJ,IAAI,CAACC,GAAL,CAASulC,KAAK,CAAC9uC,CAAD,CAAL,GAAWwwC,SAApB,IAAiC,EAArC,EAAyC;AACvCC,MAAAA,EAAE,GAAG,KAAL;AACD;AACF;;AACD,MAAIA,EAAJ,EAAQ;AACN3B,IAAAA,KAAK,CAACttC,IAAN,CAAWgvC,SAAX;AACA,WAAOA,SAAP;AACD;;AACD,MAAMntC,IAAI,GAAGiG,IAAI,CAACC,GAAL,CAASsI,EAAE,GAAGy+B,EAAd,CAAb;AACA,SAAOD,QAAQ,CAACx+B,EAAD,EAAKy+B,EAAE,GAAGjtC,IAAI,GAAG,CAAjB,EAAoBoR,KAApB,CAAf;AACD,CApBD;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMi8B,SAAS,GAAG,SAAZA,SAAY,CAACnyC,GAAD,EAAMwxC,OAAN,EAAeC,OAAf,EAAwBC,UAAxB,EAAuC;AACvD,MAAMzvC,IAAI,GAAGK,kDAAS,EAAtB;AAEA,MAAMwP,EAAE,GAAGw+B,SAAS,CAACkB,OAAO,CAACvxC,EAAT,CAApB;AACA,MAAM8R,EAAE,GAAGu+B,SAAS,CAACmB,OAAO,CAACxxC,EAAT,CAApB;AACA,MAAMmyC,kBAAkB,GAAGb,qBAAqB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,UAAnB,CAAhD,CALuD,CAMvD;;AAEA,MAAIzjC,GAAG,GAAG,EAAV;;AACA,MAAIhM,IAAI,CAACkM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAED,MAAI2qC,GAAG,GAAG,EAAV;AACA,MAAIC,IAAI,GAAG,EAAX;AACA,MAAIpwB,MAAM,GAAG,CAAb;AACA,MAAIrP,MAAM,GAAG,CAAb;AACA,MAAI0/B,aAAa,GAAGlC,SAAS,CAACoB,OAAO,CAAC1D,MAAT,CAAT,CAA0BiB,KAA9C;AACA,MAAIwD,OAAJ;;AACA,MAAIJ,kBAAJ,EAAwB;AACtBC,IAAAA,GAAG,GAAG,mBAAN;AACAC,IAAAA,IAAI,GAAG,mBAAP;AACApwB,IAAAA,MAAM,GAAG,EAAT;AACArP,IAAAA,MAAM,GAAG,EAAT,CAJsB,CAKtB;;AACA0/B,IAAAA,aAAa,GAAGlC,SAAS,CAACoB,OAAO,CAAC1D,MAAT,CAAT,CAA0BiB,KAA1C;AAEA,QAAMyD,KAAK,GAAG3gC,EAAE,CAACzM,CAAH,GAAO0M,EAAE,CAAC1M,CAAV,GAAcysC,QAAQ,CAAChgC,EAAE,CAACzM,CAAJ,EAAO0M,EAAE,CAAC1M,CAAV,CAAtB,GAAqCysC,QAAQ,CAAC//B,EAAE,CAAC1M,CAAJ,EAAOyM,EAAE,CAACzM,CAAV,CAA3D;;AAEA,QAAIyM,EAAE,CAACzM,CAAH,GAAO0M,EAAE,CAAC1M,CAAd,EAAiB;AACfmtC,MAAAA,OAAO,eAAQ1gC,EAAE,CAAC1M,CAAX,cAAgB0M,EAAE,CAACzM,CAAnB,gBAA0ByM,EAAE,CAAC1M,CAA7B,cAAkCqtC,KAAK,GAAGvwB,MAA1C,cAAoDmwB,GAApD,cAA2DvgC,EAAE,CAAC1M,CAAH,GAAOyN,MAAlE,cAA4E4/B,KAA5E,gBACL1gC,EAAE,CAAC3M,CAAH,GAAO8c,MADF,cAEHuwB,KAFG,cAEMH,IAFN,cAEcvgC,EAAE,CAAC3M,CAFjB,cAEsBqtC,KAAK,GAAG5/B,MAF9B,gBAE0Cd,EAAE,CAAC3M,CAF7C,cAEkD2M,EAAE,CAAC1M,CAFrD,CAAP;AAGD,KAJD,MAIO;AACLmtC,MAAAA,OAAO,eAAQ1gC,EAAE,CAAC1M,CAAX,cAAgB0M,EAAE,CAACzM,CAAnB,gBAA0ByM,EAAE,CAAC1M,CAA7B,cAAkCqtC,KAAK,GAAGvwB,MAA1C,cAAoDowB,IAApD,cACLxgC,EAAE,CAAC1M,CAAH,GAAOyN,MADF,cAEH4/B,KAFG,gBAEQ1gC,EAAE,CAAC3M,CAAH,GAAO8c,MAFf,cAEyBuwB,KAFzB,cAEkCJ,GAFlC,cAEyCtgC,EAAE,CAAC3M,CAF5C,cAEiDqtC,KAAK,GAAG5/B,MAFzD,gBAEqEd,EAAE,CAAC3M,CAFxE,cAE6E2M,EAAE,CAAC1M,CAFhF,CAAP;AAGD;AACF,GAnBD,MAmBO;AACL,QAAIyM,EAAE,CAACzM,CAAH,GAAO0M,EAAE,CAAC1M,CAAd,EAAiB;AACfgtC,MAAAA,GAAG,GAAG,mBAAN;AACAnwB,MAAAA,MAAM,GAAG,EAAT;AACArP,MAAAA,MAAM,GAAG,EAAT,CAHe,CAKf;;AACA0/B,MAAAA,aAAa,GAAGlC,SAAS,CAACoB,OAAO,CAAC1D,MAAT,CAAT,CAA0BiB,KAA1C;AAEAwD,MAAAA,OAAO,eAAQ1gC,EAAE,CAAC1M,CAAX,cAAgB0M,EAAE,CAACzM,CAAnB,gBAA0ByM,EAAE,CAAC1M,CAA7B,cAAkC2M,EAAE,CAAC1M,CAAH,GAAO6c,MAAzC,cAAmDmwB,GAAnD,cAA0DvgC,EAAE,CAAC1M,CAAH,GAAOyN,MAAjE,cAA2Ed,EAAE,CAAC1M,CAA9E,gBACL0M,EAAE,CAAC3M,CADE,cAEH2M,EAAE,CAAC1M,CAFA,CAAP;AAGD;;AACD,QAAIyM,EAAE,CAACzM,CAAH,GAAO0M,EAAE,CAAC1M,CAAd,EAAiB;AACfgtC,MAAAA,GAAG,GAAG,mBAAN;AACAnwB,MAAAA,MAAM,GAAG,EAAT;AACArP,MAAAA,MAAM,GAAG,EAAT,CAHe,CAKf;;AACA0/B,MAAAA,aAAa,GAAGlC,SAAS,CAACmB,OAAO,CAACzD,MAAT,CAAT,CAA0BiB,KAA1C;AACAwD,MAAAA,OAAO,eAAQ1gC,EAAE,CAAC1M,CAAX,cAAgB0M,EAAE,CAACzM,CAAnB,gBAA0B0M,EAAE,CAAC3M,CAAH,GAAO8c,MAAjC,cAA2CpQ,EAAE,CAACzM,CAA9C,cAAmDgtC,GAAnD,cAA0DtgC,EAAE,CAAC3M,CAA7D,cAAkE0M,EAAE,CAACzM,CAAH,GAAOwN,MAAzE,gBACLd,EAAE,CAAC3M,CADE,cAEH2M,EAAE,CAAC1M,CAFA,CAAP;AAGD;;AAED,QAAIyM,EAAE,CAACzM,CAAH,KAAS0M,EAAE,CAAC1M,CAAhB,EAAmB;AACjBktC,MAAAA,aAAa,GAAGlC,SAAS,CAACmB,OAAO,CAACzD,MAAT,CAAT,CAA0BiB,KAA1C;AACAwD,MAAAA,OAAO,eAAQ1gC,EAAE,CAAC1M,CAAX,cAAgB0M,EAAE,CAACzM,CAAnB,gBAA0ByM,EAAE,CAAC1M,CAA7B,cAAkC2M,EAAE,CAAC1M,CAAH,GAAO6c,MAAzC,cAAmDmwB,GAAnD,cAA0DvgC,EAAE,CAAC1M,CAAH,GAAOyN,MAAjE,cAA2Ed,EAAE,CAAC1M,CAA9E,gBACL0M,EAAE,CAAC3M,CADE,cAEH2M,EAAE,CAAC1M,CAFA,CAAP;AAGD;AACF;;AACD,MAAMqtC,KAAK,GAAG1yC,GAAG,CACd6F,MADW,CACJ,MADI,EAEXtF,IAFW,CAEN,GAFM,EAEDiyC,OAFC,EAGXjyC,IAHW,CAGN,OAHM,EAGG,gBAAgBgyC,aAHnB,CAAd;AAID,CAjFD;;AAmFA,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAAC3yC,GAAD,EAAM4sC,OAAN,EAAkB;AACnC,MAAMgG,OAAO,GAAG5yC,GAAG,CAAC6F,MAAJ,CAAW,GAAX,EAAgBtF,IAAhB,CAAqB,OAArB,EAA8B,eAA9B,CAAhB;AACA,MAAIiK,GAAG,GAAG,CAAV;AAEA,MAAM2hB,CAAC,GAAGrrB,MAAM,CAAC0B,IAAP,CAAYoqC,OAAZ,CAAV;AACAzgB,EAAAA,CAAC,CAACzpB,OAAF,CAAU,UAACC,GAAD,EAAMqsC,KAAN,EAAgB;AACxB,QAAMtB,MAAM,GAAGd,OAAO,CAACjqC,GAAD,CAAtB;;AACA,QAAI+qC,MAAM,CAACz4B,OAAP,IAAkBy4B,MAAM,CAACz4B,OAAP,CAAevT,MAAf,GAAwB,CAA9C,EAAiD;AAC/CgsC,MAAAA,MAAM,CAACz4B,OAAP,CAAevS,OAAf,CAAuB,UAACc,MAAD,EAAY;AACjC2uC,QAAAA,SAAS,CAACS,OAAD,EAAUhG,OAAO,CAACppC,MAAD,CAAjB,EAA2BkqC,MAA3B,EAAmCd,OAAnC,CAAT;AACD,OAFD;AAGD;AACF,GAPD;AAQD,CAbD;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMiG,YAAY,GAAG,SAAfA,YAAe,CAAC7yC,GAAD,EAAM6sC,QAAN,EAAmB;AACtC,MAAM+D,cAAc,GAAGtuC,kDAAS,GAAG8gB,QAAnC;AACA,MAAM4G,CAAC,GAAGhqB,GAAG,CAAC6F,MAAJ,CAAW,GAAX,CAAV;AACAgnC,EAAAA,QAAQ,CAACnqC,OAAT,CAAiB,UAACqrC,MAAD,EAASiB,KAAT,EAAmB;AAClC,QAAMxkC,GAAG,GAAG6lC,SAAS,CAACtC,MAAM,CAACn9B,IAAR,CAAT,CAAuBpG,GAAnC;AACA,QAAMhC,IAAI,GAAGwhB,CAAC,CAACnkB,MAAF,CAAS,MAAT,CAAb;AACA2C,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgB,CAAhB;AACAiI,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgBiK,GAAhB;AACAhC,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgBiwC,MAAhB;AACAhoC,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgBiK,GAAhB;AACAhC,IAAAA,IAAI,CAACjI,IAAL,CAAU,OAAV,EAAmB,kBAAkByuC,KAArC;AAEAuB,IAAAA,KAAK,CAACttC,IAAN,CAAWuH,GAAX;AAEA,QAAIoG,IAAI,GAAGo+B,KAAK,KAAK,CAAV,GAAc4B,cAAc,CAACttB,cAA7B,GAA8CyqB,MAAM,CAACn9B,IAAhE,CAXkC,CAalC;;AACA,QAAM7H,YAAY,GAAG0nC,QAAQ,CAAC7/B,IAAD,CAA7B,CAdkC,CAelC;;AACA,QAAMkiC,GAAG,GAAG9oB,CAAC,CAAC9pB,MAAF,CAAS,MAAT,CAAZ;AACA,QAAM6yC,WAAW,GAAG/oB,CAAC,CAAC9pB,MAAF,CAAS,GAAT,EAAcK,IAAd,CAAmB,OAAnB,EAA4B,aAA5B,CAApB,CAjBkC,CAmBlC;;AACA,QAAMsD,KAAK,GAAGkvC,WAAW,CAAC7yC,MAAZ,CAAmB,GAAnB,EAAwBK,IAAxB,CAA6B,OAA7B,EAAsC,uBAAuByuC,KAA7D,CAAd;AACAnrC,IAAAA,KAAK,CAACJ,IAAN,GAAaK,WAAb,CAAyBiF,YAAzB;AACA,QAAI7E,IAAI,GAAG6E,YAAY,CAAC5E,OAAb,EAAX;AACA2uC,IAAAA,GAAG,CACAvyC,IADH,CACQ,OADR,EACiB,yBAAyByuC,KAD1C,EAEGzuC,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc,CAHd,EAIGA,IAJH,CAIQ,GAJR,EAIa,CAAC2D,IAAI,CAACQ,KAAN,GAAc,CAJ3B,EAKGnE,IALH,CAKQ,GALR,EAKa,CAAC2D,IAAI,CAACS,MAAN,GAAe,CAAf,GAAmB,CALhC,EAMGpE,IANH,CAMQ,OANR,EAMiB2D,IAAI,CAACQ,KAAL,GAAa,EAN9B,EAOGnE,IAPH,CAOQ,QAPR,EAOkB2D,IAAI,CAACS,MAAL,GAAc,CAPhC;AASAd,IAAAA,KAAK,CAACtD,IAAN,CACE,WADF,EAEE,gBAAgB,CAAC2D,IAAI,CAACQ,KAAN,GAAc,EAA9B,IAAoC,IAApC,IAA4C8F,GAAG,GAAGtG,IAAI,CAACS,MAAL,GAAc,CAApB,GAAwB,CAApE,IAAyE,GAF3E;AAIAmuC,IAAAA,GAAG,CAACvyC,IAAJ,CAAS,WAAT,EAAsB,eAAe,CAAC,EAAhB,GAAqB,IAArB,IAA6BiK,GAAG,GAAGtG,IAAI,CAACS,MAAL,GAAc,CAAjD,IAAsD,GAA5E;AACD,GArCD;AAsCD,CAzCD;AA2CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM+mB,IAAI,GAAG,SAAPA,IAAO,CAAU9kB,GAAV,EAAe3G,EAAf,EAAmBg7B,GAAnB,EAAwB;AAC1C30B,EAAAA,KAAK;AACL,MAAMrE,IAAI,GAAGK,kDAAS,EAAtB;AACA,MAAMsuC,cAAc,GAAGtuC,kDAAS,GAAG8gB,QAAnC,CAH0C,CAI1C;;AACA,MAAMmG,MAAM,GAAG2mB,gEAAf;AACA3mB,EAAAA,MAAM,CAACM,EAAP,GAAYomB,oDAAZ;AACA1mB,EAAAA,MAAM,CAACM,EAAP,CAAUvjB,KAAV;AAEA5F,EAAAA,8CAAA,CAAU,sBAAV,EAAkCkG,GAAG,GAAG,IAAxC,EAA8C,KAA9C,EAAqD3G,EAArD,EAAyDg7B,GAAzD,EAT0C,CAU1C;;AACA1R,EAAAA,MAAM,CAAClZ,KAAP,CAAazJ,GAAG,GAAG,IAAnB;AAEA,MAAMmiB,SAAS,GAAGknB,iEAAA,EAAlB;AACAE,EAAAA,cAAc,GAAGF,+DAAA,EAAjB;AACA,MAAMpD,QAAQ,GAAGoD,0EAAA,EAAjB,CAf0C,CAiB1C;;AACA,MAAIzlC,GAAG,GAAG,CAAV;AACAqiC,EAAAA,QAAQ,CAACnqC,OAAT,CAAiB,UAACqrC,MAAD,EAASiB,KAAT,EAAmB;AAClCqB,IAAAA,SAAS,CAACtC,MAAM,CAACn9B,IAAR,CAAT,GAAyB;AAAEpG,MAAAA,GAAG,EAAHA,GAAF;AAAOwkC,MAAAA,KAAK,EAALA;AAAP,KAAzB;AACAxkC,IAAAA,GAAG,IAAI,EAAP;AACD,GAHD;AAKA,MAAMgiB,OAAO,GAAGnpB,0CAAM,iBAASpD,EAAT,SAAtB;AAEAywC,EAAAA,WAAW,CAAClkB,OAAD,EAAU2jB,cAAV,EAA0B,KAA1B,CAAX;;AACA,MAAIS,cAAc,CAACptB,YAAnB,EAAiC;AAC/BqvB,IAAAA,YAAY,CAACrmB,OAAD,EAAUqgB,QAAV,CAAZ;AACD;;AACD8F,EAAAA,UAAU,CAACnmB,OAAD,EAAU2jB,cAAV,CAAV;AACAO,EAAAA,WAAW,CAAClkB,OAAD,EAAU2jB,cAAV,EAA0B,IAA1B,CAAX;AAEA,MAAMvrC,OAAO,GAAGgsC,cAAc,CAAClzB,cAA/B;AACA,MAAMoO,SAAS,GAAGU,OAAO,CAAC/oB,IAAR,GAAeU,OAAf,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAglB,EAAAA,wDAAgB,CAAC4C,OAAD,EAAU7nB,MAAV,EAAkBD,KAAlB,EAAyBzC,IAAI,CAAC4b,WAA9B,CAAhB;AACA,MAAMgP,IAAI,aAAMf,SAAS,CAAC1mB,CAAV,GAAcR,OAApB,cAA+BknB,SAAS,CAACzmB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACA6nB,EAAAA,OAAO,CAACjsB,IAAR,CAAa,SAAb,EAAwBssB,IAAxB;AACD,CAzCM;AA2CP,iEAAe;AACbnB,EAAAA,IAAI,EAAJA;AADa,CAAf;;;;;;;;;;;;;;;ACnfA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,uOAUd,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EACCwV,GADD,CAEE,UAACtW,CAAD;AAAA,4CAEiBA,CAFjB,sBAE8Bc,OAAO,CAAC,mBAAmBd,CAApB,CAFrC,iCAGWA,CAHX,wBAG0Bc,OAAO,CAAC,QAAQd,CAAT,CAHjC,qBAGuDc,OAAO,CAAC,QAAQd,CAAT,CAH9D,2CAIqBA,CAJrB,wBAIoCc,OAAO,CAAC,WAAWd,CAAZ,CAJ3C,qBAIoEc,OAAO,CAAC,WAAWd,CAAZ,CAJ3E,gCAKUA,CALV,uBAKwBc,OAAO,CAAC,QAAQd,CAAT,CAL/B,gCAMUA,CANV,wBAMyBc,OAAO,CAAC,QAAQd,CAAT,CANhC;AAAA,GAFF,EAWCuW,IAXD,CAWM,IAXN,CAVc,gEAyBJzV,OAAO,CAAC2qB,SAzBJ,wFA4ByB3qB,OAAO,CAACywC,gBA5BjC,8DA6B6BzwC,OAAO,CAAC0wC,qBA7BrC,sEA8BsB1wC,OAAO,CAAC2wC,aA9B9B,0CA+BS3wC,OAAO,CAAC4wC,kBA/BjB,uBA+BgD5wC,OAAO,CAAC6wC,cA/BxD,sCAgCI7wC,OAAO,CAACu9B,SAhCZ,mDAmCJv9B,OAAO,CAAC8wC,YAnCJ,0BAoCN9wC,OAAO,CAAC8wC,YApCF,sDAuCJ9wC,OAAO,CAAC8wC,YAvCJ,0BAwCN9wC,OAAO,CAAC8wC,YAxCF,sHA8CJ9wC,OAAO,CAAC8wC,YA9CJ,0BA+CN9wC,OAAO,CAAC8wC,YA/CF;AAAA,CAAlB;;AAsDA,iEAAevmB,SAAf;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AAEA,IAAI0gB,OAAO,GAAG,EAAd;AACA,IAAIhnC,IAAI,GAAG,KAAX;AAEO,IAAM8sC,UAAU,GAAG,SAAbA,UAAa,CAAC1sC,GAAD,EAAS;AACjClG,EAAAA,8CAAA,CAAU,yBAAyBkG,GAAnC;AACA4mC,EAAAA,OAAO,GAAG5mC,GAAV;AACD,CAHM;AAKA,IAAM2sC,UAAU,GAAG,SAAbA,UAAa,GAAM;AAC9B,SAAO/F,OAAP;AACD,CAFM;AAIA,IAAMgG,OAAO,GAAG,SAAVA,OAAU,CAACC,GAAD,EAAS;AAC9BjtC,EAAAA,IAAI,GAAGitC,GAAP;AACD,CAFM;AAIA,IAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AAC3B,SAAOltC,IAAP;AACD,CAFM,EAIP;AACA;AACA;;AAEA,iEAAe;AACb8sC,EAAAA,UAAU,EAAVA,UADa;AAEbC,EAAAA,UAAU,EAAVA,UAFa;AAGbC,EAAAA,OAAO,EAAPA,OAHa;AAIbE,EAAAA,OAAO,EAAPA,OAJa,CAKb;;AALa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMzxC,IAAI,GAAG,EAAb;AACO,IAAMupB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;AAEAjpB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAY8oB,GAAG,CAAC9oB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+oB,IAAI,GAAG,SAAPA,IAAO,CAAClrB,IAAD,EAAOP,EAAP,EAAW25B,OAAX,EAAuB;AACzC,MAAI;AACF,QAAMrQ,MAAM,GAAGoqB,4DAAf;AACApqB,IAAAA,MAAM,CAACM,EAAP,GAAYomB,+CAAZ;AACAvvC,IAAAA,8CAAA,CAAU,4BAA4BF,IAAtC;AAEA,QAAMoc,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CALE,CAMF;;AACA,QAAI+O,cAAJ;;AACA,QAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,MAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,QAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,QAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF,CAfE,CAiBF;;AACAqiB,IAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb;AACAE,IAAAA,8CAAA,CAAU,qBAAV,EAnBE,CAoBF;;AACA,QAAMV,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAlB,CAAZ;AAEA,QAAM+pB,CAAC,GAAGhqB,GAAG,CAAC6F,MAAJ,CAAW,GAAX,CAAV;AAEAmkB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EAAiB;AAAjB,KACGtF,IADH,CACQ,GADR,EACa,GADb,EAEGA,IAFH,CAEQ,GAFR,EAEa,EAFb,EAGGA,IAHH,CAGQ,OAHR,EAGiB,SAHjB,EAIGA,IAJH,CAIQ,WAJR,EAIqB,MAJrB,EAKG0E,KALH,CAKS,aALT,EAKwB,QALxB,EAMGzE,IANH,CAMQ,OAAOo5B,OANf;AAQA55B,IAAAA,GAAG,CAACO,IAAJ,CAAS,QAAT,EAAmB,GAAnB;AACAP,IAAAA,GAAG,CAACO,IAAJ,CAAS,OAAT,EAAkB,GAAlB,EAlCE,CAmCF;AACD,GApCD,CAoCE,OAAOkM,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,oCAAV;AACAA,IAAAA,8CAAA,CAAU+L,CAAC,CAAC+gC,OAAZ;AACD;AACF,CAzCM;AA2CP,iEAAe;AACbhiB,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AClEA,IAAMoB,SAAS,GAAG,SAAZA,SAAY;AAAA;AAAA,CAAlB;;AAEA,iEAAeA,SAAf;;;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AAEA,IAAI6T,QAAQ,GAAG,EAAf;AACA,IAAI9mB,KAAK,GAAG,EAAZ;AACA,IAAIxZ,WAAW,GAAG,EAAlB;AACA,IAAIuzC,QAAQ,GAAG,KAAf;AAEO,IAAMvvB,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;;AAIP,IAAMsxB,UAAU,GAAG,SAAbA,UAAa,CAAUpiC,EAAV,EAAciK,KAAd,EAAqB;AACtCjK,EAAAA,EAAE,GAAG8jB,mEAAA,CAAoB9jB,EAApB,EAAwB6jB,8CAAA,EAAxB,CAAL;;AACA,MAAI,OAAO6c,QAAQ,CAAC1gC,EAAD,CAAf,KAAwB,WAA5B,EAAyC;AACvC0gC,IAAAA,QAAQ,CAAC1gC,EAAD,CAAR,GAAeiK,KAAf;AACAxJ,IAAAA,8CAAA,CAAU,qBAAV,EAAiCT,EAAjC;AACD;AACF,CAND;;AAOA,IAAMqiC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAM3B,QAAN;AAAA,CAApB;;AAEA,IAAMzX,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AAC9BiT,EAAAA,KAAK,GAAGkK,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAR;AACD,CAFD;;AAIA,IAAM+vB,WAAW,GAAG,SAAdA,WAAc,CAAUC,MAAV,EAAkB;AACpCF,EAAAA,QAAQ,GAAGE,MAAX;AACD,CAFD;;AAIA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AAC9B,SAAOH,QAAP;AACD,CAFD;;AAIA,IAAMxzC,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOyZ,KAAP;AACD,CAFD;;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AACvCvG,EAAAA,WAAW,GAAG0jB,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAd;AACD,CAFD;;AAIA,IAAMxjB,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AACpC,SAAOD,WAAP;AACD,CAFD;;AAIA,IAAM2zC,YAAY,GAAG,SAAfA,YAAe,CAAU9pC,KAAV,EAAiB;AACpC,MAAIA,KAAK,CAACic,SAAN,CAAgB,CAAhB,EAAmB,CAAnB,MAA0B,GAA9B,EAAmC;AACjCjc,IAAAA,KAAK,GAAGA,KAAK,CAACic,SAAN,CAAgB,CAAhB,EAAmB5d,IAAnB,EAAR;AACA,WAAOkF,MAAM,CAACvD,KAAK,CAAC3B,IAAN,EAAD,CAAb;AACD,GAHD,MAGO;AACL,WAAOkF,MAAM,CAACvD,KAAK,CAAC3B,IAAN,EAAD,CAAb;AACD;AACF,CAPD;;AASA,IAAMjC,KAAK,GAAG,SAARA,KAAQ,GAAY;AACxBq6B,EAAAA,QAAQ,GAAG,EAAX;AACA9mB,EAAAA,KAAK,GAAG,EAAR;AACA+5B,EAAAA,QAAQ,GAAG,KAAX;AACD,CAJD,EAKA;AACA;AACA;;;AAEA,iEAAe;AACbvvB,EAAAA,cAAc,EAAdA,cADa;AAEb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsBpB,GAA5B;AAAA,GAFE;AAGb2f,EAAAA,UAAU,EAAVA,UAHa;AAIbC,EAAAA,WAAW,EAAXA,WAJa;AAKb0R,EAAAA,YAAY,EAAZA,YALa;AAMb1tC,EAAAA,KAAK,EAALA,KANa;AAOb4iB,EAAAA,QAAQ,EAARA,QAPa;AAQb9oB,EAAAA,QAAQ,EAARA,QARa;AASbyzC,EAAAA,WAAW,EAAXA,WATa;AAUbE,EAAAA,WAAW,EAAXA,WAVa;AAWbzzC,EAAAA,iBAAiB,EAAjBA,iBAXa;AAYb+oB,EAAAA,iBAAiB,EAAjBA,iBAZa,CAab;;AAba,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIpnB,IAAI,GAAG6hB,8CAAA,EAAX;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIpf,KAAJ;AACA,IAAMC,MAAM,GAAG,GAAf;AACO,IAAM+mB,IAAI,GAAG,SAAPA,IAAO,CAAC9kB,GAAD,EAAM3G,EAAN,EAAa;AAC/B,MAAI;AACFgC,IAAAA,IAAI,GAAG6hB,8CAAA,EAAP;AACA,QAAMyF,MAAM,GAAG6qB,2DAAf;AACA7qB,IAAAA,MAAM,CAACM,EAAP,GAAYsqB,8CAAZ;AACAzzC,IAAAA,8CAAA,CAAU,6BAA6BkG,GAAvC;AAEA,QAAMgW,aAAa,GAAGkH,8CAAA,GAAsBlH,aAA5C,CANE,CAOF;;AACA,QAAI+O,cAAJ;;AACA,QAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,MAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,QAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,QAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF,CAhBE,CAkBF;;AACAqiB,IAAAA,MAAM,CAACM,EAAP,CAAUvjB,KAAV;AACAijB,IAAAA,MAAM,CAAClZ,KAAP,CAAazJ,GAAb;AACAlG,IAAAA,8CAAA,CAAU,qBAAV;AACA,QAAMwF,IAAI,GAAG8lB,GAAG,CAACqb,cAAJ,CAAmBpnC,EAAnB,CAAb;AACAyE,IAAAA,KAAK,GAAGwB,IAAI,CAACohC,aAAL,CAAmBC,WAA3B;;AAEA,QAAI,OAAO7iC,KAAP,KAAiB,WAArB,EAAkC;AAChCA,MAAAA,KAAK,GAAG,IAAR;AACD;;AAED,QAAI,OAAOzC,IAAI,CAAC4e,QAAZ,KAAyB,WAA7B,EAA0C;AACxCnc,MAAAA,KAAK,GAAGzC,IAAI,CAAC4e,QAAb;AACD;;AACD,QAAI,OAAO5e,IAAI,CAACygB,GAAL,CAAS7B,QAAhB,KAA6B,WAAjC,EAA8C;AAC5Cnc,MAAAA,KAAK,GAAGzC,IAAI,CAACygB,GAAL,CAAS7B,QAAjB;AACD;;AAED,QAAM2L,OAAO,GAAGZ,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAlB,CAAhB;AACA2pB,IAAAA,wDAAgB,CAAC4C,OAAD,EAAU7nB,MAAV,EAAkBD,KAAlB,EAAyBzC,IAAI,CAACygB,GAAL,CAAS7E,WAAlC,CAAhB;AAEA/d,IAAAA,0DAAyB,CAACypB,MAAM,CAACM,EAAR,EAAY2C,OAAZ,EAAqBvsB,EAArB,CAAzB,CAvCE,CAwCF;;AACAiG,IAAAA,IAAI,CAAC4B,YAAL,CAAkB,SAAlB,EAA6B,SAASpD,KAAT,GAAiB,GAAjB,GAAuBC,MAApD,EAzCE,CA2CF;;AACA,QAAI0vC,MAAM,GAAG,EAAb;AACA,QAAIC,cAAc,GAAG,EAArB;AACA,QAAIC,aAAa,GAAG,CAApB;AAEA,QAAIryB,MAAM,GAAGnX,IAAI,CAAC6I,GAAL,CAASlP,KAAT,EAAgBC,MAAhB,IAA0B,CAA1B,GAA8B0vC,MAA3C;AAEA,QAAIr0C,GAAG,GAAGwsB,OAAO,CACd3mB,MADO,CACA,GADA,EAEPtF,IAFO,CAEF,WAFE,EAEW,eAAemE,KAAK,GAAG,CAAvB,GAA2B,GAA3B,GAAiCC,MAAM,GAAG,CAA1C,GAA8C,GAFzD,CAAV;AAIA,QAAIyL,IAAI,GAAG+jC,0DAAA,EAAX;AACA,QAAIK,GAAG,GAAG,CAAV;AACA1zC,IAAAA,MAAM,CAAC0B,IAAP,CAAY4N,IAAZ,EAAkB1N,OAAlB,CAA0B,UAAUC,GAAV,EAAe;AACvC6xC,MAAAA,GAAG,IAAIpkC,IAAI,CAACzN,GAAD,CAAX;AACD,KAFD;AAIA,QAAMb,cAAc,GAAGG,IAAI,CAACH,cAA5B;AACA,QAAI2yC,iBAAiB,GAAG,CACtB3yC,cAAc,CAAC4yC,IADO,EAEtB5yC,cAAc,CAAC6yC,IAFO,EAGtB7yC,cAAc,CAAC8yC,IAHO,EAItB9yC,cAAc,CAAC+yC,IAJO,EAKtB/yC,cAAc,CAACgzC,IALO,EAMtBhzC,cAAc,CAACizC,IANO,EAOtBjzC,cAAc,CAACkzC,IAPO,EAQtBlzC,cAAc,CAACmzC,IARO,EAStBnzC,cAAc,CAACozC,IATO,EAUtBpzC,cAAc,CAACqzC,KAVO,EAWtBrzC,cAAc,CAACszC,KAXO,EAYtBtzC,cAAc,CAACuzC,KAZO,CAAxB,CA7DE,CA4EF;;AACA,QAAIC,KAAK,GAAGrB,gDAAY,GAAG1L,KAAf,CAAqBkM,iBAArB,CAAZ,CA7EE,CA+EF;;AACA,QAAI/xB,GAAG,GAAGwxB,uCAAK,GAAGhqC,KAAR,CAAc,UAAUvI,CAAV,EAAa;AACnC,aAAOA,CAAC,CAAC,CAAD,CAAR;AACD,KAFS,CAAV;AAGA,QAAI4zC,SAAS,GAAG7yB,GAAG,CAAC5hB,MAAM,CAACyqB,OAAP,CAAenb,IAAf,CAAD,CAAnB,CAnFE,CAqFF;;AACA,QAAIolC,YAAY,GAAGnD,uCAAG,GAAGoD,WAAN,CAAkB,CAAlB,EAAqBC,WAArB,CAAiCxzB,MAAjC,CAAnB,CAtFE,CAwFF;;AACAliB,IAAAA,GAAG,CACAqoB,SADH,CACa,UADb,EAEGjY,IAFH,CAEQmlC,SAFR,EAGGpM,KAHH,GAIGtjC,MAJH,CAIU,MAJV,EAKGtF,IALH,CAKQ,GALR,EAKai1C,YALb,EAMGj1C,IANH,CAMQ,MANR,EAMgB,UAAUoB,CAAV,EAAa;AACzB,aAAO2zC,KAAK,CAAC3zC,CAAC,CAACyO,IAAF,CAAO,CAAP,CAAD,CAAZ;AACD,KARH,EASG7P,IATH,CASQ,OATR,EASiB,WATjB,EAzFE,CAoGF;AACA;;AACAP,IAAAA,GAAG,CACAqoB,SADH,CACa,UADb,EAEGjY,IAFH,CAEQmlC,SAFR,EAGGpM,KAHH,GAIGtjC,MAJH,CAIU,MAJV,EAKGrF,IALH,CAKQ,UAAUmB,CAAV,EAAa;AACjB,aAAO,CAAEA,CAAC,CAACyO,IAAF,CAAO,CAAP,IAAYokC,GAAb,GAAoB,GAArB,EAA0BmB,OAA1B,CAAkC,CAAlC,IAAuC,GAA9C;AACD,KAPH,EAQGp1C,IARH,CAQQ,WARR,EAQqB,UAAUoB,CAAV,EAAa;AAC9B,aAAO,eAAe6zC,YAAY,CAACI,QAAb,CAAsBj0C,CAAtB,CAAf,GAA0C,GAAjD;AACD,KAVH,EAWGsD,KAXH,CAWS,aAXT,EAWwB,QAXxB,EAYG1E,IAZH,CAYQ,OAZR,EAYiB,OAZjB;AAcAP,IAAAA,GAAG,CACA6F,MADH,CACU,MADV,EAEGrF,IAFH,CAEQ+oB,MAAM,CAACM,EAAP,CAAUzpB,QAAV,EAFR,EAGGG,IAHH,CAGQ,GAHR,EAGa,CAHb,EAIGA,IAJH,CAIQ,GAJR,EAIa,EAAEoE,MAAM,GAAG,EAAX,IAAiB,CAJ9B,EAKGpE,IALH,CAKQ,OALR,EAKiB,cALjB,EApHE,CA2HF;;AACA,QAAIs1C,MAAM,GAAG71C,GAAG,CACbqoB,SADU,CACA,SADA,EAEVjY,IAFU,CAELklC,KAAK,CAAC5N,MAAN,EAFK,EAGVyB,KAHU,GAIVtjC,MAJU,CAIH,GAJG,EAKVtF,IALU,CAKL,OALK,EAKI,QALJ,EAMVA,IANU,CAML,WANK,EAMQ,UAAUoB,CAAV,EAAaF,CAAb,EAAgB;AACjC,UAAIkD,MAAM,GAAG2vC,cAAc,GAAGC,aAA9B;AACA,UAAI1hC,MAAM,GAAIlO,MAAM,GAAG2wC,KAAK,CAAC5N,MAAN,GAAehmC,MAAzB,GAAmC,CAAhD;AACA,UAAIo0C,IAAI,GAAG,KAAKxB,cAAhB;AACA,UAAIvW,IAAI,GAAGt8B,CAAC,GAAGkD,MAAJ,GAAakO,MAAxB;AACA,aAAO,eAAeijC,IAAf,GAAsB,GAAtB,GAA4B/X,IAA5B,GAAmC,GAA1C;AACD,KAZU,CAAb;AAcA8X,IAAAA,MAAM,CACHhwC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB+zC,cAFjB,EAGG/zC,IAHH,CAGQ,QAHR,EAGkB+zC,cAHlB,EAIGrvC,KAJH,CAIS,MAJT,EAIiBqwC,KAJjB,EAKGrwC,KALH,CAKS,QALT,EAKmBqwC,KALnB;AAOAO,IAAAA,MAAM,CACHzlC,IADH,CACQmlC,SADR,EAEG1vC,MAFH,CAEU,MAFV,EAGGtF,IAHH,CAGQ,GAHR,EAGa+zC,cAAc,GAAGC,aAH9B,EAIGh0C,IAJH,CAIQ,GAJR,EAIa+zC,cAAc,GAAGC,aAJ9B,EAKG/zC,IALH,CAKQ,UAAUmB,CAAV,EAAa;AACjB,UAAI4nB,MAAM,CAACM,EAAP,CAAUkqB,WAAV,MAA2B9xC,IAAI,CAAC2xC,QAAhC,IAA4C3xC,IAAI,CAACygB,GAAL,CAASkxB,QAAzD,EAAmE;AACjE,eAAOjyC,CAAC,CAACyO,IAAF,CAAO,CAAP,IAAY,IAAZ,GAAmBzO,CAAC,CAACyO,IAAF,CAAO,CAAP,CAAnB,GAA+B,GAAtC;AACD,OAFD,MAEO;AACL,eAAOzO,CAAC,CAACyO,IAAF,CAAO,CAAP,CAAP;AACD;AACF,KAXH;AAYD,GA7JD,CA6JE,OAAO3D,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,oCAAV;AACAA,IAAAA,8CAAA,CAAU+L,CAAV;AACD;AACF,CAlKM;AAoKP,iEAAe;AACbif,EAAAA,IAAI,EAAJA;AADa,CAAf;;;;;;;;;;;;;;;ACvLA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,gDAGJA,OAAO,CAACwzC,cAHJ,mCAIGxzC,OAAO,CAACyzC,cAJX,8BAKFzzC,OAAO,CAAC0zC,UALN,iFASD1zC,OAAO,CAAC2zC,gBATP,0BAUN3zC,OAAO,CAAC4zC,iBAVF,iCAWC5zC,OAAO,CAACS,UAXT,kDAcCT,OAAO,CAACS,UAdT,0BAeNT,OAAO,CAAC6zC,mBAfF,8BAgBF7zC,OAAO,CAAC8zC,kBAhBN,sEAoBN9zC,OAAO,CAAC+zC,kBApBF,iCAqBC/zC,OAAO,CAACS,UArBT,+BAsBDT,OAAO,CAACg0C,iBAtBP;AAAA,CAAlB;;AA0BA,iEAAezpB,SAAf;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AAEA,IAAI5I,SAAS,GAAG,EAAhB;AACA,IAAIsyB,iBAAiB,GAAG,EAAxB;AACA,IAAIC,YAAY,GAAG,EAAnB;AACA,IAAIC,aAAa,GAAG,EAApB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAI98B,KAAK,GAAG,EAAZ;AACA,IAAIuP,cAAc,GAAG,EAArB;;AAEA,IAAM1iB,YAAY,GAAG,SAAfA,YAAe,CAACE,GAAD;AAAA,SAASmd,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAT;AAAA,CAArB;;AAEA,IAAM8yB,eAAe,GAAG;AACtBC,EAAAA,WAAW,EAAE,aADS;AAEtBC,EAAAA,sBAAsB,EAAE,wBAFF;AAGtBC,EAAAA,qBAAqB,EAAE,uBAHD;AAItBC,EAAAA,uBAAuB,EAAE,yBAJH;AAKtBC,EAAAA,oBAAoB,EAAE,sBALA;AAMtBC,EAAAA,iBAAiB,EAAE;AANG,CAAxB;AASA,IAAMC,SAAS,GAAG;AAChBC,EAAAA,QAAQ,EAAE,KADM;AAEhBC,EAAAA,QAAQ,EAAE,QAFM;AAGhBC,EAAAA,SAAS,EAAE;AAHK,CAAlB;AAMA,IAAMC,UAAU,GAAG;AACjBC,EAAAA,eAAe,EAAE,UADA;AAEjBC,EAAAA,oBAAoB,EAAE,eAFL;AAGjBC,EAAAA,iBAAiB,EAAE,YAHF;AAIjBC,EAAAA,WAAW,EAAE;AAJI,CAAnB;AAOA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,QAAQ,EAAE,UADU;AAEpBC,EAAAA,MAAM,EAAE,QAFY;AAGpBC,EAAAA,OAAO,EAAE,SAHW;AAIpBC,EAAAA,SAAS,EAAE,WAJS;AAKpBC,EAAAA,QAAQ,EAAE,UALU;AAMpBC,EAAAA,OAAO,EAAE,SANW;AAOpBC,EAAAA,MAAM,EAAE;AAPY,CAAtB;AAUO,IAAM9zB,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;;AAIP,IAAMqnC,cAAc,GAAG,SAAjBA,cAAiB,CAACxnC,IAAD,EAAOG,IAAP,EAAgB;AACrC,MAAI,OAAO0lC,YAAY,CAAC7lC,IAAD,CAAnB,KAA8B,WAAlC,EAA+C;AAC7C6lC,IAAAA,YAAY,CAAC7lC,IAAD,CAAZ,GAAqB;AACnBA,MAAAA,IAAI,EAAJA,IADmB;AAEnBG,MAAAA,IAAI,EAAJA,IAFmB;AAInB9Q,MAAAA,EAAE,EAAEu2C,iBAAiB,CAACv2C,EAJH;AAKnBO,MAAAA,IAAI,EAAEg2C,iBAAiB,CAACh2C,IALL;AAMnB63C,MAAAA,IAAI,EAAE7B,iBAAiB,CAAC6B,IANL;AAOnBC,MAAAA,YAAY,EAAE9B,iBAAiB,CAAC8B;AAPb,KAArB;AASD;;AACD9B,EAAAA,iBAAiB,GAAG,EAApB;AAEA,SAAOC,YAAY,CAAC7lC,IAAD,CAAnB;AACD,CAfD;;AAiBA,IAAM2nC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAAM9B,YAAN;AAAA,CAAxB;;AAEA,IAAM+B,WAAW,GAAG,SAAdA,WAAc,CAACv4C,EAAD,EAAQ;AAC1B,MAAI,OAAOu2C,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAACv2C,EAAlB,GAAuBA,EAAvB;AACD;AACF,CAJD;;AAMA,IAAMw4C,aAAa,GAAG,SAAhBA,aAAgB,CAACj4C,IAAD,EAAU;AAC9B,MAAI,OAAOg2C,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAACh2C,IAAlB,GAAyBA,IAAzB;AACD;AACF,CAJD;;AAMA,IAAMk4C,aAAa,GAAG,SAAhBA,aAAgB,CAACL,IAAD,EAAU;AAC9B,MAAI,OAAO7B,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAAC6B,IAAlB,GAAyBA,IAAzB;AACD;AACF,CAJD;;AAMA,IAAMM,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACL,YAAD,EAAkB;AAC9C,MAAI,OAAO9B,iBAAP,IAA4B,WAAhC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAAC8B,YAAlB,GAAiCA,YAAjC;AACD;AACF,CAJD;;AAMA,IAAMM,UAAU,GAAG,SAAbA,UAAa,CAAChoC,IAAD,EAAU;AAC3B,MAAI,OAAO+lC,QAAQ,CAAC/lC,IAAD,CAAf,KAA0B,WAA9B,EAA2C;AACzC+lC,IAAAA,QAAQ,CAAC/lC,IAAD,CAAR,GAAiB;AACfA,MAAAA,IAAI,EAAJA,IADe;AAGfG,MAAAA,IAAI,EAAE2lC,aAAa,CAAC3lC,IAHL;AAIf8nC,MAAAA,MAAM,EAAEnC,aAAa,CAACmC;AAJP,KAAjB;AAMAn4C,IAAAA,6CAAA,CAAS,yBAAT,EAAoCkQ,IAApC;AACD;;AACD8lC,EAAAA,aAAa,GAAG,EAAhB;AAEA,SAAOC,QAAQ,CAAC/lC,IAAD,CAAf;AACD,CAbD;;AAeA,IAAMkoC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAMnC,QAAN;AAAA,CAApB;;AAEA,IAAMoC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAChoC,IAAD,EAAU;AAClC,MAAI,OAAO2lC,aAAP,IAAwB,WAA5B,EAAyC;AACvCA,IAAAA,aAAa,CAAC3lC,IAAd,GAAqBA,IAArB;AACD;AACF,CAJD;;AAMA,IAAMioC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACH,MAAD,EAAY;AACtC,MAAI,OAAOnC,aAAP,IAAwB,WAA5B,EAAyC;AACvCA,IAAAA,aAAa,CAACmC,MAAd,GAAuBA,MAAvB;AACD;AACF,CAJD;;AAMA,IAAM9lB,eAAe,GAAG,SAAlBA,eAAkB,CAAChiB,IAAD,EAAOkoC,GAAP,EAAYC,GAAZ,EAAoB;AAC1Ch1B,EAAAA,SAAS,CAACjhB,IAAV,CAAe;AACb8N,IAAAA,IAAI,EAAJA,IADa;AAEbkoC,IAAAA,GAAG,EAAHA,GAFa;AAGbC,IAAAA,GAAG,EAAHA;AAHa,GAAf;AAKD,CAND;;AAQA,IAAMzlB,gBAAgB,GAAG,SAAnBA,gBAAmB;AAAA,SAAMvP,SAAN;AAAA,CAAzB;;AAEA,IAAM5d,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClB4d,EAAAA,SAAS,GAAG,EAAZ;AACAsyB,EAAAA,iBAAiB,GAAG,EAApB;AACAC,EAAAA,YAAY,GAAG,EAAf;AACAC,EAAAA,aAAa,GAAG,EAAhB;AACAC,EAAAA,QAAQ,GAAG,EAAX;AACD,CAND;;AAQO,IAAMztB,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AACrC,MAAIuiB,aAAa,GAAGziB,YAAY,CAACE,GAAD,EAAMkd,8CAAA,EAAN,CAAhC;AACAjK,EAAAA,KAAK,GAAGsP,aAAR;AACD,CAHM;AAKA,IAAM/oB,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOyZ,KAAP;AACD,CAFM;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AAC9C,MAAIuiB,aAAa,GAAGziB,YAAY,CAACE,GAAD,EAAMkd,8CAAA,EAAN,CAAhC;AACAsF,EAAAA,cAAc,GAAGD,aAAjB;AACD,CAHM;AAKA,IAAM7oB,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AAC3C,SAAO8oB,cAAP;AACD,CAFM;AAIP,iEAAe;AACbwtB,EAAAA,eAAe,EAAfA,eADa;AAEbO,EAAAA,SAAS,EAATA,SAFa;AAGbI,EAAAA,UAAU,EAAVA,UAHa;AAIbK,EAAAA,aAAa,EAAbA,aAJa;AAMbvzB,EAAAA,cAAc,EAAdA,cANa;AAOb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsBq1B,GAA5B;AAAA,GAPE;AASbf,EAAAA,cAAc,EAAdA,cATa;AAUbG,EAAAA,eAAe,EAAfA,eAVa;AAWbC,EAAAA,WAAW,EAAXA,WAXa;AAYbC,EAAAA,aAAa,EAAbA,aAZa;AAabC,EAAAA,aAAa,EAAbA,aAba;AAcbC,EAAAA,qBAAqB,EAArBA,qBAda;AAebzvB,EAAAA,QAAQ,EAARA,QAfa;AAgBb9oB,EAAAA,QAAQ,EAARA,QAhBa;AAiBbipB,EAAAA,iBAAiB,EAAjBA,iBAjBa;AAkBb/oB,EAAAA,iBAAiB,EAAjBA,iBAlBa;AAoBbs4C,EAAAA,UAAU,EAAVA,UApBa;AAqBbE,EAAAA,WAAW,EAAXA,WArBa;AAsBbC,EAAAA,iBAAiB,EAAjBA,iBAtBa;AAuBbC,EAAAA,mBAAmB,EAAnBA,mBAvBa;AAyBbjmB,EAAAA,eAAe,EAAfA,eAzBa;AA0BbU,EAAAA,gBAAgB,EAAhBA,gBA1Ba;AA4BbntB,EAAAA,KAAK,EAALA;AA5Ba,CAAf;;;;;;;;;;;;;;;AC/JA,IAAM8yC,UAAU,GAAG;AACjBvB,EAAAA,QAAQ,EAAE,UADO;AAEjBwB,EAAAA,KAAK,EAAE;AAFU,CAAnB;;AAKA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACpb,UAAD,EAAaj8B,IAAb,EAAsB;AAC9C,MAAIs3C,YAAY,GAAGrb,UAAU,CAC1Br4B,MADgB,CACT,MADS,EAEhBA,MAFgB,CAET,QAFS,EAGhBtF,IAHgB,CAGX,IAHW,EAGL64C,UAAU,CAACvB,QAAX,GAAsB,cAHjB,EAIhBt3C,IAJgB,CAIX,MAJW,EAIH,CAJG,EAKhBA,IALgB,CAKX,MALW,EAKH0B,IAAI,CAACkhB,WAAL,GAAmB,CALhB,EAMhB5iB,IANgB,CAMX,aANW,EAMI0B,IAAI,CAACkhB,WANT,EAOhB5iB,IAPgB,CAOX,cAPW,EAOK0B,IAAI,CAACkhB,WAPV,EAQhB5iB,IARgB,CAQX,QARW,EAQD,MARC,EAShBsF,MATgB,CAST,GATS,CAAnB;AAWA0zC,EAAAA,YAAY,CACT1zC,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc0B,IAAI,CAACkhB,WAAL,GAAmB,CAFjC,EAGG5iB,IAHH,CAGQ,IAHR,EAGc0B,IAAI,CAACkhB,WAAL,GAAmB,CAHjC,EAIG5iB,IAJH,CAIQ,GAJR,EAIa0B,IAAI,CAACkhB,WAAL,GAAmB,CAJhC,EAKE;AACA;AANF,GAOG5iB,IAPH,CAOQ,MAPR,EAOgB,MAPhB;AASAg5C,EAAAA,YAAY,CACT1zC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc0B,IAAI,CAACkhB,WAHnB,EAIG5iB,IAJH,CAIQ,IAJR,EAIc0B,IAAI,CAACkhB,WAAL,GAAmB,CAJjC,EAKG5iB,IALH,CAKQ,IALR,EAKc0B,IAAI,CAACkhB,WAAL,GAAmB,CALjC,EAME;AANF,GAOG5iB,IAPH,CAOQ,cAPR,EAOwB,CAPxB;AASAg5C,EAAAA,YAAY,CACT1zC,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc0B,IAAI,CAACkhB,WAHnB,EAIG5iB,IAJH,CAIQ,IAJR,EAIc0B,IAAI,CAACkhB,WAAL,GAAmB,CAJjC,EAKG5iB,IALH,CAKQ,IALR,EAKc0B,IAAI,CAACkhB,WAAL,GAAmB,CALjC,EAME;AANF,GAOG5iB,IAPH,CAOQ,cAPR,EAOwB,CAPxB;AASA29B,EAAAA,UAAU,CACPr4B,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc64C,UAAU,CAACC,KAAX,GAAmB,cAHjC,EAIG94C,IAJH,CAIQ,MAJR,EAIgB0B,IAAI,CAACkhB,WAJrB,EAKG5iB,IALH,CAKQ,MALR,EAKgB,MAAM0B,IAAI,CAACkhB,WAL3B,EAMG5iB,IANH,CAMQ,aANR,EAMuB0B,IAAI,CAACkhB,WAN5B,EAOG5iB,IAPH,CAOQ,cAPR,EAOwB0B,IAAI,CAACkhB,WAP7B,EAQG5iB,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAWI,GAXJ,yBAaO0B,IAAI,CAACkhB,WAbZ,cAa2BlhB,IAAI,CAACkhB,WAAL,GAAmB,CAb9C,sBAcOlhB,IAAI,CAACkhB,WAdZ,cAc2BlhB,IAAI,CAACkhB,WAAL,GAAmB,CAd9C,wBAeSlhB,IAAI,CAACkhB,WAfd,GAiBG5iB,IAjBH,CAiBQ,cAjBR,EAiBwB,CAjBxB,EAvC8C,CAyD9C;AACD,CA1DD;;AA4DA,iEAAe;AACb64C,EAAAA,UAAU,EAAVA,UADa;AAEbE,EAAAA,iBAAiB,EAAjBA;AAFa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjEA;AACA;CAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMr3C,IAAI,GAAG,EAAb;AACA,IAAIi2B,MAAM,GAAG,CAAb;AAEO,IAAM1M,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAI,OAAOA,GAAP,KAAe,WAAnB,EAAgC;AAC9B;AACD;;AACD,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;;AACA,OAAK,IAAIhqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBgqB,GAAG,CAACjpB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CARM;;AAUP,IAAMg4C,WAAW,GAAG,SAAdA,WAAc,CAACvb,UAAD,EAAaj+B,EAAb,EAAoB;AACtC,SAAOi+B,UAAU,CACdh+B,MADI,CACG,MADH,EACW,MAAMD,EADjB,EAEJM,IAFI,CAEC,OAFD,EAEU,YAFV,EAGJA,IAHI,CAGC,GAHD,EAGM,CAHN,EAIJA,IAJI,CAIC,GAJD,EAIM,CAJN,EAKJA,IALI,CAKC,OALD,EAKU0B,IAAI,CAAC+gB,cAAL,GAAsB,IALhC,EAMJziB,IANI,CAMC,QAND,EAMW0B,IAAI,CAACghB,eAAL,GAAuB,IANlC,CAAP;AAOD,CARD;;AAUA,IAAMy2B,YAAY,GAAG,SAAfA,YAAe,CAACxb,UAAD,EAAaj+B,EAAb,EAAiB05C,IAAjB,EAA0B;AAC7C,MAAIv0C,CAAC,GAAGnD,IAAI,CAAC+gB,cAAL,GAAsB,CAA9B;AAEA,MAAInJ,KAAK,GAAGqkB,UAAU,CACnBr4B,MADS,CACF,MADE,EAETtF,IAFS,CAEJ,OAFI,EAEK,uBAFL,EAGTA,IAHS,CAGJ,IAHI,EAGEN,EAHF,EAITM,IAJS,CAIJ,GAJI,EAIC6E,CAJD,EAKT7E,IALS,CAKJ,GALI,EAKC0B,IAAI,CAACihB,YALN,EAMT3iB,IANS,CAMJ,mBANI,EAMiB,SANjB,CAAZ,CAH6C,CAU7C;AACA;AACA;AACA;;AACA,MAAIkB,CAAC,GAAG,CAAR;AACAk4C,EAAAA,IAAI,CAACj3C,OAAL,CAAa,UAACk3C,OAAD,EAAa;AACxB,QAAIn4C,CAAC,IAAI,CAAT,EAAY;AACVoY,MAAAA,KAAK,CACFhU,MADH,CACU,OADV,EAEGtF,IAFH,CAEQ,aAFR,EAEuB,QAFvB,EAGGA,IAHH,CAGQ,GAHR,EAGa0B,IAAI,CAAC+gB,cAAL,GAAsB,CAHnC,EAIGziB,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGC,IALH,CAKQo5C,OALR;AAMD,KAPD,MAOO;AACL//B,MAAAA,KAAK,CACFhU,MADH,CACU,OADV,EAEGtF,IAFH,CAEQ,aAFR,EAEuB,QAFvB,EAGGA,IAHH,CAGQ,GAHR,EAGa0B,IAAI,CAAC+gB,cAAL,GAAsB,CAHnC,EAIGziB,IAJH,CAIQ,IAJR,EAIc0B,IAAI,CAACkhB,WAAL,GAAmB,IAJjC,EAKG3iB,IALH,CAKQo5C,OALR;AAMD;;AACDn4C,IAAAA,CAAC;AACF,GAjBD;AAmBA,MAAIo4C,QAAQ,GAAG,MAAM53C,IAAI,CAACihB,YAA1B;AACA,MAAI42B,WAAW,GAAGr4C,CAAC,GAAGQ,IAAI,CAACkhB,WAAT,GAAuB,IAAzC;AACA,MAAI42B,MAAM,GAAGF,QAAQ,GAAGC,WAAxB;AAEA5b,EAAAA,UAAU,CACPr4B,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,gBAFjB,EAGGA,IAHH,CAGQ,IAHR,EAGc,GAHd,EAIGA,IAJH,CAIQ,IAJR,EAIc0B,IAAI,CAAC+gB,cAJnB,EAKGziB,IALH,CAKQ,IALR,EAKcw5C,MALd,EAMGx5C,IANH,CAMQ,IANR,EAMcw5C,MANd;AAQA,SAAO;AACLC,IAAAA,SAAS,EAAEngC,KADN;AAELxU,IAAAA,CAAC,EAAE00C;AAFE,GAAP;AAID,CAlDD;;AAoDA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAAC/b,UAAD,EAAaj+B,EAAb,EAAiB05C,IAAjB,EAAuBO,MAAvB,EAAkC;AACpD,MAAItxB,IAAI,GAAGsV,UAAU,CAClBr4B,MADQ,CACD,MADC,EAERtF,IAFQ,CAEH,OAFG,EAEM,cAFN,EAGRA,IAHQ,CAGH,IAHG,EAGGN,EAHH,EAIRM,IAJQ,CAIH,GAJG,EAIE0B,IAAI,CAACihB,YAJP,EAKR3iB,IALQ,CAKH,GALG,EAKE25C,MALF,EAMR35C,IANQ,CAMH,mBANG,EAMkB,SANlB,CAAX,CADoD,CAQpD;AACA;AACA;AACA;;AAEA,MAAI45C,UAAU,GAAG,CAAjB;AACA,MAAMC,SAAS,GAAG,EAAlB;AACA,MAAIC,WAAW,GAAG,EAAlB;AACAV,EAAAA,IAAI,CAACj3C,OAAL,CAAa,UAACk3C,OAAD,EAAa;AACxB,QAAIU,cAAc,GAAGV,OAAO,CAACl4C,MAA7B;;AACA,WAAO44C,cAAc,GAAGF,SAAjB,IAA8BD,UAAU,GAAG,CAAlD,EAAqD;AACnD,UAAII,SAAS,GAAGX,OAAO,CAACzzB,SAAR,CAAkB,CAAlB,EAAqBi0B,SAArB,CAAhB;AACAR,MAAAA,OAAO,GAAGA,OAAO,CAACzzB,SAAR,CAAkBi0B,SAAlB,EAA6BR,OAAO,CAACl4C,MAArC,CAAV;AACA44C,MAAAA,cAAc,GAAGV,OAAO,CAACl4C,MAAzB;AACA24C,MAAAA,WAAW,CAACA,WAAW,CAAC34C,MAAb,CAAX,GAAkC64C,SAAlC;AACAJ,MAAAA,UAAU;AACX;;AACD,QAAIA,UAAU,IAAI,CAAlB,EAAqB;AACnB,UAAIK,OAAO,GAAGH,WAAW,CAACA,WAAW,CAAC34C,MAAZ,GAAqB,CAAtB,CAAzB;AACA24C,MAAAA,WAAW,CAACA,WAAW,CAAC34C,MAAZ,GAAqB,CAAtB,CAAX,GAAsC84C,OAAO,CAACr0B,SAAR,CAAkB,CAAlB,EAAqBq0B,OAAO,CAAC94C,MAAR,GAAiB,CAAtC,IAA2C,KAAjF;AACD,KAHD,MAGO;AACL24C,MAAAA,WAAW,CAACA,WAAW,CAAC34C,MAAb,CAAX,GAAkCk4C,OAAlC;AACD;;AACDO,IAAAA,UAAU,GAAG,CAAb;AACD,GAhBD;AAkBAE,EAAAA,WAAW,CAAC33C,OAAZ,CAAoB,UAACk3C,OAAD,EAAa;AAC/BhxB,IAAAA,IAAI,CAAC/iB,MAAL,CAAY,OAAZ,EAAqBtF,IAArB,CAA0B,GAA1B,EAA+B0B,IAAI,CAACihB,YAApC,EAAkD3iB,IAAlD,CAAuD,IAAvD,EAA6D0B,IAAI,CAACkhB,WAAlE,EAA+E3iB,IAA/E,CAAoFo5C,OAApF;AACD,GAFD;AAIA,SAAOhxB,IAAP;AACD,CAvCD;;AAyCA,IAAM6xB,YAAY,GAAG,SAAfA,YAAe,CAACvc,UAAD,EAAalwB,OAAb,EAAsB/L,IAAtB,EAA4B2E,GAA5B,EAAoC;AACvD;AACA,MAAM2xB,GAAG,GAAGvqB,OAAO,CAACvK,IAAR,GAAe+0B,cAAf,EAAZ;AACA,MAAMC,UAAU,GAAGzqB,OAAO,CAACvK,IAAR,GAAei1B,gBAAf,CAAgCH,GAAG,GAAG,GAAtC,CAAnB,CAHuD,CAKvD;;AACA,MAAMI,OAAO,GAAG,QAAQT,MAAxB;AACAA,EAAAA,MAAM;AAEN,MAAMU,SAAS,GAAGsF,UAAU,CACzBr4B,MADe,CACR,MADQ,EAEftF,IAFe,CAEV,OAFU,EAED,uBAFC,EAGfA,IAHe,CAGV,IAHU,EAGJo4B,OAHI,EAIfp4B,IAJe,CAIV,GAJU,EAILk4B,UAAU,CAACrzB,CAJN,EAKf7E,IALe,CAKV,GALU,EAKLk4B,UAAU,CAACpzB,CALN,EAMf9E,IANe,CAMV,aANU,EAMK,QANL,EAOfA,IAPe,CAOV,mBAPU,EAOW,QAPX,EAQhB;AARgB,GASfC,IATe,CASVoG,GATU,CAAlB,CATuD,CAoBvD;;AACA,MAAMguB,SAAS,GAAGgE,SAAS,CAACn1B,IAAV,GAAiBU,OAAjB,EAAlB,CArBuD,CAuBvD;;AACA+5B,EAAAA,UAAU,CACPh+B,MADH,CACU,MADV,EACkB,MAAMy4B,OADxB,EAEGp4B,IAFH,CAEQ,OAFR,EAEiB,iBAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGak4B,UAAU,CAACrzB,CAAX,GAAewvB,SAAS,CAAClwB,KAAV,GAAkB,CAH9C,EAIGnE,IAJH,CAIQ,GAJR,EAIak4B,UAAU,CAACpzB,CAAX,GAAeuvB,SAAS,CAACjwB,MAAV,GAAmB,CAJ/C,EAKGpE,IALH,CAKQ,OALR,EAKiBq0B,SAAS,CAAClwB,KAL3B,EAMGnE,IANH,CAMQ,QANR,EAMkBq0B,SAAS,CAACjwB,MAN5B,EAOGpE,IAPH,CAOQ,MAPR,EAOgB,OAPhB,EAQGA,IARH,CAQQ,cARR,EAQwB,KARxB;AASD,CAjCD;;AAmCA,IAAM43B,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAUn4B,GAAV,EAAeozB,GAAf,EAAoBpJ,CAApB,EAAuB9pB,MAAvB,EAA+B;AAChE;AACA,MAAM4I,IAAI,GAAGkhB,CAAC,CAAClhB,IAAF,CAAO4xC,aAAa,CAACtnB,GAAG,CAAC6lB,GAAL,CAApB,EAA+ByB,aAAa,CAACtnB,GAAG,CAAC8lB,GAAL,CAA5C,CAAb,CAFgE,CAIhE;;AACA,MAAMtrC,YAAY,GAAGpF,wCAAI,GACtBpD,CADkB,CAChB,UAAUzD,CAAV,EAAa;AACd,WAAOA,CAAC,CAACyD,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU1D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC0D,CAAT;AACD,GANkB,CAArB,CALgE,CAahE;;AACA,MAAM2I,OAAO,GAAGhO,GAAG,CAChBE,MADa,CACN,MADM,EACE,MAAMA,MADR,EAEbK,IAFa,CAER,OAFQ,EAEC,qBAFD,EAGbA,IAHa,CAGR,GAHQ,EAGHqN,YAAY,CAAC9E,IAAI,CAACoD,MAAN,CAHT,EAIb3L,IAJa,CAIR,MAJQ,EAIA,MAJA,CAAhB;;AAMA,MAAI6yB,GAAG,CAACriB,IAAJ,IAAYyoC,6EAAhB,EAAsD;AACpDxrC,IAAAA,OAAO,CAACzN,IAAR,CACE,cADF,EAEE,SAASwjB,6DAAA,CAAc9hB,IAAI,CAACkM,mBAAnB,CAAT,GAAmD,GAAnD,GAAyDilB,GAAG,CAACriB,IAA7D,GAAoE,cAApE,GAAqF,GAFvF;AAID,GALD,MAKO;AACL/C,IAAAA,OAAO,CAACzN,IAAR,CAAa,kBAAb,EAAiC,MAAjC;AACAyN,IAAAA,OAAO,CAACzN,IAAR,CACE,YADF,EAEE,SACEwjB,6DAAA,CAAc9hB,IAAI,CAACkM,mBAAnB,CADF,GAEE,GAFF,GAGE8C,4EAHF,GAIE,cAJF,GAKE,GAPJ;AASD;;AAEDwpC,EAAAA,YAAY,CAACz6C,GAAD,EAAMgO,OAAN,EAAe/L,IAAf,cAA0BmxB,GAAG,CAACriB,IAA9B,QAAZ;AAEA;AACD,CAzCD;;AA2CO,IAAM4pC,QAAQ,GAAG,SAAXA,QAAW,CAACC,IAAD,EAAO/tC,KAAP,EAAcyqB,OAAd,EAA0B;AAChDx2B,EAAAA,MAAM,CAAC0B,IAAP,CAAYo4C,IAAZ,EAAkBl4C,OAAlB,CAA0B,UAACm4C,OAAD,EAAa;AACrC,QAAI1B,GAAG,GAAGyB,IAAI,CAACC,OAAD,CAAd;AACAA,IAAAA,OAAO,GAAGH,aAAa,CAACG,OAAD,CAAvB;AACAn6C,IAAAA,6CAAA,CAAS,yBAAT,EAAoCm6C,OAApC;AAEA,QAAMtmB,SAAS,GAAG+C,OAAO,CAACzxB,MAAR,CAAe,GAAf,EAAoBtF,IAApB,CAAyB,IAAzB,EAA+Bs6C,OAA/B,CAAlB;AACA,QAAMrjB,MAAM,GAAG,SAASqjB,OAAxB;AACA,QAAMjjB,QAAQ,GAAG6hB,WAAW,CAACllB,SAAD,EAAYiD,MAAZ,CAA5B;AAEA,QAAIxnB,KAAK,GAAG,EAAZ;AAEA,QAAI8qC,aAAa,GAAGpB,YAAY,CAACnlB,SAAD,EAAYsmB,OAAO,GAAG,QAAtB,EAAgC,aACzD1B,GAAG,CAACpoC,IADqD,mBAE3DooC,GAAG,CAACvoC,IAFuD,EAAhC,CAAhC;AAKAZ,IAAAA,KAAK,CAAC/M,IAAN,CAAW63C,aAAa,CAACd,SAAzB;AAEA,QAAIe,QAAQ,GAAGd,WAAW,CACxB1lB,SADwB,EAExBsmB,OAAO,GAAG,OAFc,EAGxB,eACS1B,GAAG,CAACl5C,EADb,mBAEWk5C,GAAG,CAAC34C,IAFf,mBAGW24C,GAAG,CAACd,IAHf,2BAImBc,GAAG,CAACb,YAJvB,EAHwB,EASxBwC,aAAa,CAACz1C,CATU,CAA1B;AAYA2K,IAAAA,KAAK,CAAC/M,IAAN,CAAW83C,QAAX;AAEA,QAAMljB,QAAQ,GAAGD,QAAQ,CAACn0B,IAAT,GAAgBU,OAAhB,EAAjB,CAhCqC,CAkCrC;;AACA0I,IAAAA,KAAK,CAAC0D,OAAN,CAAcsqC,OAAd,EAAuB;AACrBn2C,MAAAA,KAAK,EAAEmzB,QAAQ,CAACnzB,KADK;AAErBC,MAAAA,MAAM,EAAEkzB,QAAQ,CAAClzB,MAFI;AAGrBwB,MAAAA,KAAK,EAAE,MAHc;AAIrBlG,MAAAA,EAAE,EAAE46C;AAJiB,KAAvB;AAMD,GAzCD;AA0CD,CA3CM;AA6CA,IAAMG,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAMpuC,KAAN,EAAayqB,OAAb,EAAyB;AACnDx2B,EAAAA,MAAM,CAAC0B,IAAP,CAAYy4C,GAAZ,EAAiBv4C,OAAjB,CAAyB,UAACw4C,MAAD,EAAY;AACnC,QAAIz0C,EAAE,GAAGw0C,GAAG,CAACC,MAAD,CAAZ;AACA,QAAMj7C,EAAE,GAAGy6C,aAAa,CAACQ,MAAD,CAAxB;AAEA,QAAM3mB,SAAS,GAAG+C,OAAO,CAACzxB,MAAR,CAAe,GAAf,EAAoBtF,IAApB,CAAyB,IAAzB,EAA+BN,EAA/B,CAAlB;AACA,QAAMu3B,MAAM,GAAG,aAAav3B,EAA5B;AACA,QAAM23B,QAAQ,GAAG6hB,WAAW,CAACllB,SAAD,EAAYiD,MAAZ,CAA5B;AAEA,QAAIxnB,KAAK,GAAG,EAAZ;AAEA,QAAI8qC,aAAa,GAAGpB,YAAY,CAACnlB,SAAD,EAAYiD,MAAM,GAAG,QAArB,EAA+B,0BAAmB0jB,MAAnB,EAA/B,CAAhC;AAEAlrC,IAAAA,KAAK,CAAC/M,IAAN,CAAW63C,aAAa,CAACd,SAAzB;AAEA,QAAIe,QAAQ,GAAGd,WAAW,CACxB1lB,SADwB,EAExBiD,MAAM,GAAG,OAFe,EAGxB,iBAAU/wB,EAAE,CAACsK,IAAH,IAAW,eAArB,sBAAoDtK,EAAE,CAACoyC,MAAH,IAAa,MAAjE,EAHwB,EAIxBiC,aAAa,CAACz1C,CAJU,CAA1B;AAOA2K,IAAAA,KAAK,CAAC/M,IAAN,CAAW83C,QAAX;AAEA,QAAMljB,QAAQ,GAAGD,QAAQ,CAACn0B,IAAT,GAAgBU,OAAhB,EAAjB,CAvBmC,CAyBnC;;AACA0I,IAAAA,KAAK,CAAC0D,OAAN,CAActQ,EAAd,EAAkB;AAChByE,MAAAA,KAAK,EAAEmzB,QAAQ,CAACnzB,KADA;AAEhBC,MAAAA,MAAM,EAAEkzB,QAAQ,CAAClzB,MAFD;AAGhBwB,MAAAA,KAAK,EAAE,MAHS;AAIhBlG,MAAAA,EAAE,EAAEA;AAJY,KAAlB;AAMD,GAhCD;AAiCD,CAlCM;;AAoCP,IAAM+3B,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAClG,aAAD,EAAgB9H,CAAhB,EAAsB;AAC7C8H,EAAAA,aAAa,CAACpvB,OAAd,CAAsB,UAAU8I,CAAV,EAAa;AACjC,QAAIytC,GAAG,GAAGyB,aAAa,CAAClvC,CAAC,CAACytC,GAAH,CAAvB;AACA,QAAIC,GAAG,GAAGwB,aAAa,CAAClvC,CAAC,CAAC0tC,GAAH,CAAvB;AACAlvB,IAAAA,CAAC,CAACvU,OAAF,CAAUwjC,GAAV,EAAeC,GAAf,EAAoB;AAAEjhB,MAAAA,YAAY,EAAEzsB;AAAhB,KAApB;AACD,GAJD;AAKA,SAAOsmB,aAAP;AACD,CAPD;;AASA,IAAMgG,cAAc,GAAG,SAAjBA,cAAiB,CAAUR,OAAV,EAAmBzqB,KAAnB,EAA0B;AAC/CA,EAAAA,KAAK,CAACmD,KAAN,GAActN,OAAd,CAAsB,UAAUsK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpEsqB,MAAAA,OAAO,CAACj0B,MAAR,CAAe,MAAM2J,CAArB;AACAsqB,MAAAA,OAAO,CACJj0B,MADH,CACU,MAAM2J,CADhB,EAEGzM,IAFH,CAGI,WAHJ,EAII,gBACGsM,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc5H,CAAd,GAAkByH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAActI,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGmI,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc3H,CAAd,GAAkBwH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAcrI,MAAd,GAAuB,CAH5C,IAIE,IARN;AAUD;AACF,GAdD;AAeA;AACD,CAjBD;;AAmBA,IAAM+1C,aAAa,GAAG,SAAhBA,aAAgB,CAAC3+B,GAAD,EAAS;AAC7B,SAAOA,GAAG,CAACrU,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,EAAuBA,OAAvB,CAA+B,KAA/B,EAAsC,GAAtC,CAAP;AACD,CAFD;;AAIO,IAAMgkB,IAAI,GAAG,SAAPA,IAAO,CAAClrB,IAAD,EAAOP,EAAP,EAAc;AAChCspB,EAAAA,iEAAA,GAAYiwB,sDAAZ;AACAjwB,EAAAA,uEAAA;AACAA,EAAAA,oEAAA,CAAa/oB,IAAb;AAEA,MAAMoc,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CALgC,CAMhC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AAEA,MAAMlH,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,gBAAoBpD,EAApB,QAAZ;AACAgR,EAAAA,6EAAA,CAA0BjR,GAA1B,EAA+BiC,IAA/B;AAEA,MAAM+nB,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BiiB,IAAAA,QAAQ,EAAE;AAHiB,GAAnB,EAKPhiB,QALO,CAKE;AACR9G,IAAAA,OAAO,EAAE9N,IAAI,CAACmgB,eADN;AAERpL,IAAAA,OAAO,EAAE,EAFD;AAGRC,IAAAA,OAAO,EAAE,EAHD;AAIRH,IAAAA,OAAO,EAAE,GAJD;AAKRgiB,IAAAA,OAAO,EAAE,GALD;AAMR/hB,IAAAA,OAAO,EAAE;AAND,GALF,EAaPG,mBAbO,CAaa,YAAY;AAC/B,WAAO,EAAP;AACD,GAfO,CAAV;AAiBA,MAAIu/B,YAAY,GAAG+C,sEAAA,EAAnB;AACA,MAAI7C,QAAQ,GAAG6C,kEAAA,EAAf;AACA,MAAI1nB,aAAa,GAAG0nB,uEAAA,EAApB;AAEAmB,EAAAA,QAAQ,CAAClE,YAAD,EAAezsB,CAAf,EAAkBhqB,GAAlB,CAAR;AACAg7C,EAAAA,YAAY,CAACrE,QAAD,EAAW3sB,CAAX,EAAchqB,GAAd,CAAZ;AACAg4B,EAAAA,gBAAgB,CAAClG,aAAD,EAAgB9H,CAAhB,CAAhB;AACAtb,EAAAA,mDAAA,CAAasb,CAAb;AACA8N,EAAAA,cAAc,CAAC93B,GAAD,EAAMgqB,CAAN,CAAd;AAEA8H,EAAAA,aAAa,CAACpvB,OAAd,CAAsB,UAAU0wB,GAAV,EAAe;AACnC+E,IAAAA,0BAA0B,CAACn4B,GAAD,EAAMozB,GAAN,EAAWpJ,CAAX,EAAc/pB,EAAd,CAA1B;AACD,GAFD,EA/CgC,CAmDhC;;AACA,MAAM2E,OAAO,GAAG3C,IAAI,CAACihB,YAArB;AACA,MAAM4I,SAAS,GAAG9rB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAlB;AACA,MAAMO,KAAK,GAAGonB,SAAS,CAACpnB,KAAV,GAAkBE,OAAO,GAAG,CAA1C;AACA,MAAMD,MAAM,GAAGmnB,SAAS,CAACnnB,MAAV,GAAmBC,OAAO,GAAG,CAA5C;AAEAglB,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAM2E,MAAN,EAAcD,KAAd,EAAqBzC,IAAI,CAAC4b,WAA1B,CAAhB;AAEA7d,EAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,YAAuBurB,SAAS,CAAC1mB,CAAV,GAAcR,OAArC,cAAgDknB,SAAS,CAACzmB,CAAV,GAAcT,OAA9D,cAAyEF,KAAzE,cAAkFC,MAAlF,GA3DgC,CA4DhC;;AACA7E,EAAAA,2DAAyB,CAACypB,iEAAD,EAAYvpB,GAAZ,EAAiBC,EAAjB,CAAzB;AACD,CA9DM;AAgEP,iEAAe;AACburB,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AChYA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,6CAGNA,OAAO,CAAC44C,aAHF,4BAIJ54C,OAAO,CAAC44C,aAJJ,qDAQJ54C,OAAO,CAAC2qB,SARJ,iDAYC3qB,OAAO,CAACS,UAZT,+BAaDT,OAAO,CAACsd,QAbP,8CAiBNtd,OAAO,CAAC64C,qBAjBF,qDAmBJ74C,OAAO,CAAC84C,sBAnBJ,kCAoBE94C,OAAO,CAAC+4C,qBApBV,6DAwBL/4C,OAAO,CAACg5C,oBAxBH,iDA2BNh5C,OAAO,CAACi5C,uBA3BF,iFAgCJj5C,OAAO,CAAC84C,sBAhCJ,kCAiCE94C,OAAO,CAAC+4C,qBAjCV,wDAoCJ/4C,OAAO,CAAC44C,aApCJ,6EAwCN54C,OAAO,CAACk5C,kBAxCF;AAAA,CAAlB,EA4CA;;;AACA,iEAAe3uB,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AAEA,IAAI4uB,SAAS,GAAGz3C,SAAhB;AACA,IAAI03C,MAAM,GAAG,EAAb;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAMC,KAAK,GAAG,EAAd;AACA,IAAIhiC,KAAK,GAAG,EAAZ;AACA,IAAIxZ,WAAW,GAAG,EAAlB;AACA,IAAIy7C,sBAAsB,GAAG,KAA7B;AACA,IAAIC,WAAW,GAAG,KAAlB;AAEO,IAAM13B,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;AAIA,IAAMirC,QAAQ,GAAG,SAAXA,QAAW,CAAU/7C,EAAV,EAAc2Q,IAAd,EAAoBvQ,WAApB,EAAiC0Q,IAAjC,EAAuC;AAC7D;AACA,MAAMkrC,GAAG,GAAGN,MAAM,CAAC17C,EAAD,CAAlB;AACA,MAAIg8C,GAAG,IAAIrrC,IAAI,KAAKqrC,GAAG,CAACrrC,IAApB,IAA4BvQ,WAAW,IAAI,IAA/C,EAAqD,OAHQ,CAK7D;;AACA,MAAIA,WAAW,IAAI,IAAf,IAAuBA,WAAW,CAACG,IAAZ,IAAoB,IAA/C,EAAqD;AACnDH,IAAAA,WAAW,GAAG;AAAEG,MAAAA,IAAI,EAAEoQ,IAAR;AAAc4O,MAAAA,IAAI,EAAE,IAApB;AAA0BzO,MAAAA,IAAI,EAAJA;AAA1B,KAAd;AACD;;AACD,MAAIA,IAAI,IAAI,IAAR,IAAgB1Q,WAAW,CAACG,IAAZ,IAAoB,IAAxC,EAA8C;AAC5CH,IAAAA,WAAW,GAAG;AAAEG,MAAAA,IAAI,EAAEoQ,IAAR;AAAc4O,MAAAA,IAAI,EAAE,IAApB;AAA0BzO,MAAAA,IAAI,EAAJA;AAA1B,KAAd;AACD;;AAED4qC,EAAAA,MAAM,CAAC17C,EAAD,CAAN,GAAa;AACX2Q,IAAAA,IAAI,EAAEA,IADK;AAEXvQ,IAAAA,WAAW,EAAEA,WAAW,CAACG,IAFd;AAGXgf,IAAAA,IAAI,EAAGnf,WAAW,CAACmf,IAAZ,KAAqBvb,SAArB,IAAkCi4C,QAAQ,EAA3C,IAAkD,CAAC,CAAC77C,WAAW,CAACmf,IAH3D;AAIXk8B,IAAAA,SAAS,EAAEA,SAJA;AAKXhb,IAAAA,KAAK,EAAE,EALI;AAMXyb,IAAAA,UAAU,EAAE,EAND;AAOXC,IAAAA,QAAQ,EAAE,IAPC;AAQXC,IAAAA,QAAQ,EAAE,IARC;AASXtrC,IAAAA,IAAI,EAAEA,IAAI,IAAI;AATH,GAAb;;AAWA,MAAI2qC,SAAS,IAAIC,MAAM,CAACD,SAAD,CAAvB,EAAoC;AAClCC,IAAAA,MAAM,CAACD,SAAD,CAAN,CAAkBY,SAAlB,GAA8Br8C,EAA9B;AACD;;AAEDy7C,EAAAA,SAAS,GAAGz7C,EAAZ;AACD,CA7BM;;AA+BP,IAAMs8C,eAAe,GAAG,SAAlBA,eAAkB,CAACC,IAAD,EAAU;AAChC,MAAI/6C,CAAJ;AACA,MAAI86B,KAAK,GAAG,CAAZ;;AACA,OAAK96B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGm6C,QAAQ,CAACl6C,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAIm6C,QAAQ,CAACn6C,CAAD,CAAR,CAAYsP,IAAZ,KAAqB0rC,QAAQ,CAACC,YAAlC,EAAgD;AAC9C,UAAId,QAAQ,CAACn6C,CAAD,CAAR,CAAYk7C,IAAZ,CAAiBC,KAAjB,KAA2BJ,IAA/B,EAAqC;AACnCjgB,QAAAA,KAAK;AACN;AACF;;AACD,QAAIqf,QAAQ,CAACn6C,CAAD,CAAR,CAAYsP,IAAZ,KAAqB0rC,QAAQ,CAACI,UAAlC,EAA8C;AAC5C,UAAIjB,QAAQ,CAACn6C,CAAD,CAAR,CAAYk7C,IAAZ,CAAiBC,KAAjB,KAA2BJ,IAA/B,EAAqC;AACnCjgB,QAAAA,KAAK;AACN;AACF;AACF;;AACD,SAAOA,KAAP;AACD,CAhBD;;AAkBO,IAAMugB,UAAU,GAAG,SAAbA,UAAa,CAAUC,MAAV,EAAkBC,IAAlB,EAAwBxP,OAAxB,EAAiCyP,MAAjC,EAAyC;AACjErB,EAAAA,QAAQ,CAAC34C,IAAT,CAAc;AACZ05C,IAAAA,IAAI,EAAEI,MADM;AAEZG,IAAAA,EAAE,EAAEF,IAFQ;AAGZxP,IAAAA,OAAO,EAAEA,OAAO,CAAChtC,IAHL;AAIZgf,IAAAA,IAAI,EAAGguB,OAAO,CAAChuB,IAAR,KAAiBvb,SAAjB,IAA8Bi4C,QAAQ,EAAvC,IAA8C,CAAC,CAAC1O,OAAO,CAAChuB,IAJlD;AAKZy9B,IAAAA,MAAM,EAAEA;AALI,GAAd;AAOD,CARM;AAUA,IAAME,SAAS,GAAG,SAAZA,SAAY,CACvBJ,MADuB,EAEvBC,IAFuB,EAKvB;AAAA,MAFAxP,OAEA,uEAFU;AAAEhtC,IAAAA,IAAI,EAAEyD,SAAR;AAAmBub,IAAAA,IAAI,EAAEvb;AAAzB,GAEV;AAAA,MADAm5C,WACA;;AACA,MAAIA,WAAW,KAAKX,QAAQ,CAACI,UAA7B,EAAyC;AACvC,QAAMtyB,GAAG,GAAGgyB,eAAe,CAACQ,MAAM,CAACH,KAAR,CAA3B;;AACA,QAAIryB,GAAG,GAAG,CAAV,EAAa;AACX;AACA,UAAI7U,KAAK,GAAG,IAAIu4B,KAAJ,CAAU,mDAAmD8O,MAAM,CAACH,KAA1D,GAAkE,GAA5E,CAAZ;AACAlnC,MAAAA,KAAK,CAAC01B,IAAN,GAAa;AACX5qC,QAAAA,IAAI,EAAE,MADK;AAEX0tC,QAAAA,KAAK,EAAE,MAFI;AAGX1lC,QAAAA,IAAI,EAAE,GAHK;AAIX2lC,QAAAA,GAAG,EAAE;AAAEC,UAAAA,UAAU,EAAE,CAAd;AAAiBC,UAAAA,SAAS,EAAE,CAA5B;AAA+BC,UAAAA,YAAY,EAAE,CAA7C;AAAgDC,UAAAA,WAAW,EAAE;AAA7D,SAJM;AAKXC,QAAAA,QAAQ,EAAE,CAAC,sBAAD;AALC,OAAb;AAOA,YAAM94B,KAAN;AACD;AACF;;AACDkmC,EAAAA,QAAQ,CAAC34C,IAAT,CAAc;AACZ05C,IAAAA,IAAI,EAAEI,MADM;AAEZG,IAAAA,EAAE,EAAEF,IAFQ;AAGZxP,IAAAA,OAAO,EAAEA,OAAO,CAAChtC,IAHL;AAIZgf,IAAAA,IAAI,EAAGguB,OAAO,CAAChuB,IAAR,KAAiBvb,SAAjB,IAA8Bi4C,QAAQ,EAAvC,IAA8C,CAAC,CAAC1O,OAAO,CAAChuB,IAJlD;AAKZzO,IAAAA,IAAI,EAAEqsC;AALM,GAAd;AAOA,SAAO,IAAP;AACD,CA7BM;AA+BA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAOzB,QAAP;AACD,CAFM;AAIA,IAAM0B,SAAS,GAAG,SAAZA,SAAY,GAAY;AACnC,SAAO3B,MAAP;AACD,CAFM;AAGA,IAAM4B,QAAQ,GAAG,SAAXA,QAAW,CAAUt9C,EAAV,EAAc;AACpC,SAAO07C,MAAM,CAAC17C,EAAD,CAAb;AACD,CAFM;AAGA,IAAMu9C,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAO18C,MAAM,CAAC0B,IAAP,CAAYm5C,MAAZ,CAAP;AACD,CAFM;AAGA,IAAMv7C,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,SAAOyZ,KAAP;AACD,CAFM;AAGA,IAAM4jC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAY;AAC/C3B,EAAAA,sBAAsB,GAAG,IAAzB;AACD,CAFM;AAGA,IAAMj9B,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA,SAAMi9B,sBAAN;AAAA,CAA5B;AAEA,IAAM4B,OAAO,GAAG,SAAVA,OAAU,CAAUC,WAAV,EAAuB;AAC5C5B,EAAAA,WAAW,GAAG4B,WAAd;AACD,CAFM;AAIA,IAAMzB,QAAQ,GAAG,SAAXA,QAAW;AAAA,SAAMH,WAAN;AAAA,CAAjB;AAEA,IAAMz1C,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/Bq1C,EAAAA,MAAM,GAAG,EAAT;AACAC,EAAAA,QAAQ,GAAG,EAAX;AACAE,EAAAA,sBAAsB,GAAG,KAAzB;AACD,CAJM;AAMA,IAAM8B,YAAY,GAAG,SAAfA,YAAe,CAAU7hC,GAAV,EAAe;AACzC,MAAMghB,IAAI,GAAGhhB,GAAG,CAACxT,IAAJ,EAAb;;AACA,MAAMilC,OAAO,GAAG;AACdhtC,IAAAA,IAAI,EAAEu8B,IAAI,CAACr1B,OAAL,CAAa,mBAAb,EAAkC,EAAlC,EAAsCa,IAAtC,EADQ;AAEdiX,IAAAA,IAAI,EACFud,IAAI,CAACtW,KAAL,CAAW,YAAX,MAA6B,IAA7B,GACI,IADJ,GAEIsW,IAAI,CAACtW,KAAL,CAAW,cAAX,MAA+B,IAA/B,GACA,KADA,GAEAxiB;AAPQ,GAAhB;AASAvD,EAAAA,8CAAA,CAAU,eAAV,EAA2B8sC,OAA3B;AACA,SAAOA,OAAP;AACD,CAbM;AAeA,IAAMiP,QAAQ,GAAG;AACtBoB,EAAAA,KAAK,EAAE,CADe;AAEtBC,EAAAA,MAAM,EAAE,CAFc;AAGtBC,EAAAA,IAAI,EAAE,CAHgB;AAItBC,EAAAA,WAAW,EAAE,CAJS;AAKtBC,EAAAA,YAAY,EAAE,CALQ;AAMtBC,EAAAA,UAAU,EAAE,CANU;AAOtBC,EAAAA,WAAW,EAAE,CAPS;AAQtBC,EAAAA,UAAU,EAAE,EARU;AAStBC,EAAAA,QAAQ,EAAE,EATY;AAUtBC,EAAAA,SAAS,EAAE,EAVW;AAWtBC,EAAAA,QAAQ,EAAE,EAXY;AAYtBC,EAAAA,OAAO,EAAE,EAZa;AAatBC,EAAAA,SAAS,EAAE,EAbW;AActBC,EAAAA,OAAO,EAAE,EAda;AAetBhC,EAAAA,YAAY,EAAE,EAfQ;AAgBtBG,EAAAA,UAAU,EAAE,EAhBU;AAiBtB8B,EAAAA,SAAS,EAAE,EAjBW;AAkBtBC,EAAAA,OAAO,EAAE,EAlBa;AAmBtBC,EAAAA,OAAO,EAAE,EAnBa;AAoBtBC,EAAAA,UAAU,EAAE,EApBU;AAqBtBC,EAAAA,QAAQ,EAAE,EArBY;AAsBtBC,EAAAA,WAAW,EAAE,EAtBS;AAuBtBC,EAAAA,YAAY,EAAE;AAvBQ,CAAjB;AA0BA,IAAMC,SAAS,GAAG;AACvBC,EAAAA,MAAM,EAAE,CADe;AAEvBC,EAAAA,IAAI,EAAE;AAFiB,CAAlB;AAKA,IAAMC,SAAS,GAAG;AACvBC,EAAAA,MAAM,EAAE,CADe;AAEvBC,EAAAA,OAAO,EAAE,CAFc;AAGvBC,EAAAA,IAAI,EAAE;AAHiB,CAAlB;AAMA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAU7C,KAAV,EAAiB8C,SAAjB,EAA4BlS,OAA5B,EAAqC;AAC1D,MAAM/1B,IAAI,GAAG;AACXmlC,IAAAA,KAAK,EAAEA,KADI;AAEX8C,IAAAA,SAAS,EAAEA,SAFA;AAGXlS,IAAAA,OAAO,EAAEA,OAAO,CAAChtC,IAHN;AAIXgf,IAAAA,IAAI,EAAGguB,OAAO,CAAChuB,IAAR,KAAiBvb,SAAjB,IAA8Bi4C,QAAQ,EAAvC,IAA8C,CAAC,CAAC1O,OAAO,CAAChuB;AAJnD,GAAb,CAD0D,CAQ1D;;AACA,MAAMm8B,MAAM,GAAG,GAAG9lC,MAAH,CAAU+mC,KAAV,EAAiBA,KAAjB,CAAf;AAEAf,EAAAA,KAAK,CAAC54C,IAAN,CAAWwU,IAAX;AACAmkC,EAAAA,QAAQ,CAAC34C,IAAT,CAAc;AACZ05C,IAAAA,IAAI,EAAEhB,MAAM,CAAC,CAAD,CADA;AAEZuB,IAAAA,EAAE,EAAEvB,MAAM,CAAC,CAAD,CAFE;AAGZnO,IAAAA,OAAO,EAAEA,OAAO,CAAChtC,IAHL;AAIZgf,IAAAA,IAAI,EAAGguB,OAAO,CAAChuB,IAAR,KAAiBvb,SAAjB,IAA8Bi4C,QAAQ,EAAvC,IAA8C,CAAC,CAAC1O,OAAO,CAAChuB,IAJlD;AAKZzO,IAAAA,IAAI,EAAE0rC,QAAQ,CAACsB,IALH;AAMZ2B,IAAAA,SAAS,EAAEA;AANC,GAAd;AAQD,CApBM;AAsBA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAUC,OAAV,EAAmBp/C,IAAnB,EAAyB;AAC/C;AACA,MAAMo8C,KAAK,GAAGW,QAAQ,CAACqC,OAAD,CAAtB,CAF+C,CAG/C;;AACA,MAAI;AACF,QAAIz2B,aAAa,GAAGziB,4DAAY,CAAClG,IAAI,CAACA,IAAN,EAAYsjB,8CAAA,EAAZ,CAAhC;AACAqF,IAAAA,aAAa,GAAGA,aAAa,CAACzhB,OAAd,CAAsB,QAAtB,EAAgC,GAAhC,CAAhB;AACAyhB,IAAAA,aAAa,GAAGA,aAAa,CAACzhB,OAAd,CAAsB,WAAtB,EAAmC,GAAnC,CAAhB;AACA,QAAMg5B,KAAK,GAAG37B,IAAI,CAACsL,KAAL,CAAW8Y,aAAX,CAAd,CAJE,CAKF;;AACA02B,IAAAA,WAAW,CAACjD,KAAD,EAAQlc,KAAR,CAAX;AACD,GAPD,CAOE,OAAOj0B,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,qCAAV,EAAiD+L,CAAjD;AACD;AACF,CAdM;AAgBA,IAAMqzC,QAAQ,GAAG,SAAXA,QAAW,CAAUF,OAAV,EAAmBp/C,IAAnB,EAAyB;AAC/C;AACA,MAAMo8C,KAAK,GAAGW,QAAQ,CAACqC,OAAD,CAAtB;;AACA,MAAI;AACF,QAAMlf,KAAK,GAAG,EAAd;AACA,QAAIvX,aAAa,GAAGziB,4DAAY,CAAClG,IAAI,CAACA,IAAN,EAAYsjB,8CAAA,EAAZ,CAAhC;AACA,QAAIi8B,GAAG,GAAG52B,aAAa,CAACtmB,OAAd,CAAsB,GAAtB,CAAV;AACAsmB,IAAAA,aAAa,GAAGA,aAAa,CAACzhB,OAAd,CAAsB,QAAtB,EAAgC,GAAhC,CAAhB;AACAyhB,IAAAA,aAAa,GAAGA,aAAa,CAACzhB,OAAd,CAAsB,WAAtB,EAAmC,GAAnC,CAAhB;AACA,QAAI7D,KAAK,GAAGslB,aAAa,CAACjc,KAAd,CAAoB,CAApB,EAAuB6yC,GAAG,GAAG,CAA7B,EAAgCx3C,IAAhC,EAAZ;AACA,QAAImU,IAAI,GAAGyM,aAAa,CAACjc,KAAd,CAAoB6yC,GAAG,GAAG,CAA1B,EAA6Bx3C,IAA7B,EAAX;AAEAm4B,IAAAA,KAAK,CAAC78B,KAAD,CAAL,GAAe6Y,IAAf,CATE,CAUF;;AACAmjC,IAAAA,WAAW,CAACjD,KAAD,EAAQlc,KAAR,CAAX;AACD,GAZD,CAYE,OAAOj0B,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,qCAAV,EAAiD+L,CAAjD;AACD;AACF,CAlBM;AAoBP;AACA;AACA;AACA;;AACA,SAASozC,WAAT,CAAqBjD,KAArB,EAA4Blc,KAA5B,EAAmC;AACjC,MAAIkc,KAAK,CAAClc,KAAN,IAAe,IAAnB,EAAyB;AACvBkc,IAAAA,KAAK,CAAClc,KAAN,GAAcA,KAAd;AACD,GAFD,MAEO;AACL,SAAK,IAAI/9B,GAAT,IAAgB+9B,KAAhB,EAAuB;AACrBkc,MAAAA,KAAK,CAAClc,KAAN,CAAY/9B,GAAZ,IAAmB+9B,KAAK,CAAC/9B,GAAD,CAAxB;AACD;AACF;AACF;;AAEM,IAAMq9C,aAAa,GAAG,SAAhBA,aAAgB,CAAUJ,OAAV,EAAmBp/C,IAAnB,EAAyB;AACpD;AACA,MAAMo8C,KAAK,GAAGW,QAAQ,CAACqC,OAAD,CAAtB,CAFoD,CAGpD;;AACA,MAAI;AACF,QAAIz2B,aAAa,GAAGziB,4DAAY,CAAClG,IAAI,CAACA,IAAN,EAAYsjB,8CAAA,EAAZ,CAAhC;AACA,QAAMq4B,UAAU,GAAGp3C,IAAI,CAACsL,KAAL,CAAW8Y,aAAX,CAAnB,CAFE,CAGF;;AACA82B,IAAAA,gBAAgB,CAACrD,KAAD,EAAQT,UAAR,CAAhB;AACD,GALD,CAKE,OAAO1vC,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,2CAAV,EAAuD+L,CAAvD;AACD;AACF,CAZM;AAcP;AACA;AACA;AACA;;AACA,SAASwzC,gBAAT,CAA0BrD,KAA1B,EAAiCT,UAAjC,EAA6C;AAC3C,MAAIS,KAAK,CAACT,UAAN,IAAoB,IAAxB,EAA8B;AAC5BS,IAAAA,KAAK,CAACT,UAAN,GAAmBA,UAAnB;AACD,GAFD,MAEO;AACL,SAAK,IAAIx5C,GAAT,IAAgBw5C,UAAhB,EAA4B;AAC1BS,MAAAA,KAAK,CAACT,UAAN,CAAiBx5C,GAAjB,IAAwBw5C,UAAU,CAACx5C,GAAD,CAAlC;AACD;AACF;AACF;;AAEM,IAAMu9C,UAAU,GAAG,SAAbA,UAAa,CAAUN,OAAV,EAAmBp/C,IAAnB,EAAyB;AACjD;AACA,MAAMo8C,KAAK,GAAGW,QAAQ,CAACqC,OAAD,CAAtB;AACA,MAAM15C,IAAI,GAAGgB,QAAQ,CAACmgC,cAAT,CAAwB7mC,IAAI,CAACA,IAA7B,CAAb,CAHiD,CAKjD;;AACA,MAAI;AACF,QAAMA,KAAI,GAAG0F,IAAI,CAACi6C,SAAlB;AACA,QAAMC,OAAO,GAAGr7C,IAAI,CAACsL,KAAL,CAAW7P,KAAX,CAAhB,CAFE,CAGF;;AACA,QAAI4/C,OAAO,CAAC,YAAD,CAAX,EAA2B;AACzBH,MAAAA,gBAAgB,CAACrD,KAAD,EAAQwD,OAAO,CAAC,YAAD,CAAf,CAAhB;AACD;;AAED,QAAIA,OAAO,CAAC,OAAD,CAAX,EAAsB;AACpBP,MAAAA,WAAW,CAACjD,KAAD,EAAQwD,OAAO,CAAC,OAAD,CAAf,CAAX;AACD;AACF,GAXD,CAWE,OAAO3zC,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,wCAAV,EAAoD+L,CAApD;AACD;AACF,CApBM;AAsBA,IAAM4zC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUzD,KAAV,EAAiBj6C,GAAjB,EAAsB;AACpD,MAAI,OAAOi6C,KAAP,KAAiB,WAAjB,IAAgC,OAAOA,KAAK,CAACT,UAAb,KAA4B,WAAhE,EAA6E;AAC3E,WAAOS,KAAK,CAACT,UAAN,CAAiBx5C,GAAjB,CAAP;AACD;;AAED,SAAOsB,SAAP;AACD,CANM;AAQA,IAAMilB,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AACrC,MAAIuiB,aAAa,GAAGziB,4DAAY,CAACE,GAAD,EAAMkd,8CAAA,EAAN,CAAhC;AACAjK,EAAAA,KAAK,GAAGsP,aAAR;AACD,CAHM;AAKA,IAAM4S,KAAK,GAAG,SAARA,KAAQ,CAAUukB,KAAV,EAAiB;AACpC,MAAIA,KAAK,YAAYr4C,KAArB,EAA4B;AAC1Bq4C,IAAAA,KAAK,CAAC59C,OAAN,CAAc,UAAU0kB,IAAV,EAAgB;AAC5B2U,MAAAA,KAAK,CAAC3U,IAAD,CAAL;AACD,KAFD;AAGD,GAJD,MAIO;AACL,YAAQk5B,KAAK,CAACvvC,IAAd;AACE,WAAK,gBAAL;AACEirC,QAAAA,QAAQ,CAACsE,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAAC1D,KAApB,EAA2B0D,KAAK,CAACjgD,WAAjC,EAA8C,aAA9C,CAAR;AACA;;AACF,WAAK,UAAL;AACE27C,QAAAA,QAAQ,CAACsE,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAAC1D,KAApB,EAA2B0D,KAAK,CAACjgD,WAAjC,EAA8C,OAA9C,CAAR;AACA;;AACF,WAAK,aAAL;AACE88C,QAAAA,SAAS,CAACmD,KAAK,CAAC1D,KAAP,EAAc34C,SAAd,EAAyBA,SAAzB,EAAoCq8C,KAAK,CAACC,UAA1C,CAAT;AACA;;AACF,WAAK,WAAL;AACEpD,QAAAA,SAAS,CAACmD,KAAK,CAAC1D,KAAP,EAAc34C,SAAd,EAAyBA,SAAzB,EAAoCq8C,KAAK,CAACC,UAA1C,CAAT;AACA;;AACF,WAAK,SAAL;AACEd,QAAAA,OAAO,CAACa,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAACZ,SAApB,EAA+BY,KAAK,CAAC9/C,IAArC,CAAP;AACA;;AACF,WAAK,UAAL;AACEm/C,QAAAA,QAAQ,CAACW,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAAC9/C,IAApB,CAAR;AACA;;AACF,WAAK,UAAL;AACEs/C,QAAAA,QAAQ,CAACQ,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAAC9/C,IAApB,CAAR;AACA;;AACF,WAAK,eAAL;AACEw/C,QAAAA,aAAa,CAACM,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAAC9/C,IAApB,CAAb;AACA;;AACF,WAAK,YAAL;AACE0/C,QAAAA,UAAU,CAACI,KAAK,CAAC1D,KAAP,EAAc0D,KAAK,CAAC9/C,IAApB,CAAV;AACA;;AACF,WAAK,YAAL;AACE28C,QAAAA,SAAS,CAACmD,KAAK,CAAC3D,IAAP,EAAa2D,KAAK,CAACpD,EAAnB,EAAuBoD,KAAK,CAAC3S,GAA7B,EAAkC2S,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,WAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAACE,QAA7B,EAAuCF,KAAK,CAACC,UAA7C,CAAT;AACA;;AACF,WAAK,SAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCq8C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,WAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAAChL,KAA7B,EAAoCgL,KAAK,CAACC,UAA1C,CAAT;AACA;;AACF,WAAK,SAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCq8C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,UAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAACG,OAA7B,EAAsCH,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCq8C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,UAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAACI,OAA7B,EAAsCJ,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,MAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAACI,OAA7B,EAAsCJ,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCq8C,KAAK,CAACC,UAAxC,CAAT;AACA;;AACF,WAAK,UAAL;AACEr3B,QAAAA,QAAQ,CAACo3B,KAAK,CAAC9/C,IAAP,CAAR;AACA;;AACF,WAAK,UAAL;AACE28C,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAACK,OAA7B,EAAsCL,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,KAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBq8C,KAAK,CAACK,OAA7B,EAAsCL,KAAK,CAACC,UAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACEpD,QAAAA,SAAS,CAACl5C,SAAD,EAAYA,SAAZ,EAAuBA,SAAvB,EAAkCq8C,KAAK,CAACC,UAAxC,CAAT;AACA;AArEJ;AAuED;AACF,CA9EM;;AAgFP,IAAMl3B,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUu3B,eAAV,EAA2B;AACnD,MAAIz3B,aAAa,GAAGziB,4DAAY,CAACk6C,eAAD,EAAkB98B,8CAAA,EAAlB,CAAhC;AACAzjB,EAAAA,WAAW,GAAG8oB,aAAd;AACD,CAHD;;AAKA,IAAM7oB,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AACpC,SAAOD,WAAP;AACD,CAFD;;AAIA,iEAAe;AACb27C,EAAAA,QAAQ,EAARA,QADa;AAEbc,EAAAA,UAAU,EAAVA,UAFa;AAGbK,EAAAA,SAAS,EAATA,SAHa;AAIbwC,EAAAA,QAAQ,EAARA,QAJa;AAKbO,EAAAA,UAAU,EAAVA,UALa;AAMbF,EAAAA,aAAa,EAAbA,aANa;AAOb9D,EAAAA,QAAQ,EAARA,QAPa;AAQbwB,EAAAA,OAAO,EAAPA,OARa;AASbD,EAAAA,qBAAqB,EAArBA,qBATa;AAUb5+B,EAAAA,mBAAmB,EAAnBA,mBAVa;AAWbw+B,EAAAA,WAAW,EAAXA,WAXa;AAYbC,EAAAA,SAAS,EAATA,SAZa;AAabC,EAAAA,QAAQ,EAARA,QAba;AAcbC,EAAAA,YAAY,EAAZA,YAda;AAeb6C,EAAAA,gBAAgB,EAAhBA,gBAfa;AAgBbjgD,EAAAA,QAAQ,EAARA,QAhBa;AAiBbikB,EAAAA,cAAc,EAAdA,cAjBa;AAkBb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsB/F,QAA5B;AAAA,GAlBE;AAmBbzX,EAAAA,KAAK,EAALA,KAnBa;AAoBbs3C,EAAAA,YAAY,EAAZA,YApBa;AAqBbnB,EAAAA,QAAQ,EAARA,QArBa;AAsBbyC,EAAAA,SAAS,EAATA,SAtBa;AAuBbG,EAAAA,SAAS,EAATA,SAvBa;AAwBbI,EAAAA,OAAO,EAAPA,OAxBa;AAyBbv2B,EAAAA,QAAQ,EAARA,QAzBa;AA0Bb6S,EAAAA,KAAK,EAALA,KA1Ba;AA2Bb1S,EAAAA,iBAAiB,EAAjBA,iBA3Ba;AA4Bb/oB,EAAAA,iBAAiB,EAAjBA;AA5Ba,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAipB,8DAAA,GAAYu3B,mDAAZ;AAEA,IAAI7+C,IAAI,GAAG,EAAX;AAEO,IAAM6rB,MAAM,GAAG;AACpB1d,EAAAA,IAAI,EAAE;AACJ2wC,IAAAA,MAAM,EAAE98C,SADJ;AAEJ+8C,IAAAA,KAAK,EAAE/8C,SAFH;AAGJg9C,IAAAA,MAAM,EAAEh9C,SAHJ;AAIJi9C,IAAAA,KAAK,EAAEj9C;AAJH,GADc;AAOpBkX,EAAAA,WAAW,EAAE,CAPO;AAQpBgmC,EAAAA,aAAa,EAAE,EARK;AASpBC,EAAAA,WAAW,EAAE,EATO;AAUpBC,EAAAA,MAAM,EAAE;AACNC,IAAAA,SAAS,EAAE,qBAAY;AACrB,aACEv2C,IAAI,CAACmrB,GAAL,CAAS6F,KAAT,CACE,IADF,EAEE,KAAK4f,MAAL,CAAYj6C,MAAZ,KAAuB,CAAvB,GAA2B,CAAC,CAAD,CAA3B,GAAiC,KAAKi6C,MAAL,CAAY5jC,GAAZ,CAAgB,UAAC6kC,KAAD;AAAA,eAAWA,KAAK,CAACj4C,MAAN,IAAgB,CAA3B;AAAA,OAAhB,CAFnC,KAIC,KAAK48C,KAAL,CAAW7/C,MAAX,KAAsB,CAAtB,GACG,CADH,GAEG,KAAK6/C,KAAL,CAAWxpC,GAAX,CAAe,UAACypC,EAAD;AAAA,eAAQA,EAAE,CAAC78C,MAAH,IAAa,CAArB;AAAA,OAAf,EAAuCif,MAAvC,CAA8C,UAAC69B,GAAD,EAAMt2C,CAAN;AAAA,eAAYs2C,GAAG,GAAGt2C,CAAlB;AAAA,OAA9C,CANJ,KAOC,KAAKywC,QAAL,CAAcl6C,MAAd,KAAyB,CAAzB,GACG,CADH,GAEG,KAAKk6C,QAAL,CAAc7jC,GAAd,CAAkB,UAACypC,EAAD;AAAA,eAAQA,EAAE,CAAC78C,MAAH,IAAa,CAArB;AAAA,OAAlB,EAA0Cif,MAA1C,CAAiD,UAAC69B,GAAD,EAAMt2C,CAAN;AAAA,eAAYs2C,GAAG,GAAGt2C,CAAlB;AAAA,OAAjD,CATJ,KAUC,KAAK0wC,KAAL,CAAWn6C,MAAX,KAAsB,CAAtB,GACG,CADH,GAEG,KAAKm6C,KAAL,CAAW9jC,GAAX,CAAe,UAACypC,EAAD;AAAA,eAAQA,EAAE,CAAC78C,MAAH,IAAa,CAArB;AAAA,OAAf,EAAuCif,MAAvC,CAA8C,UAAC69B,GAAD,EAAMt2C,CAAN;AAAA,eAAYs2C,GAAG,GAAGt2C,CAAlB;AAAA,OAA9C,CAZJ,CADF;AAeD,KAjBK;AAkBN7E,IAAAA,KAAK,EAAE,iBAAY;AACjB,WAAKq1C,MAAL,GAAc,EAAd;AACA,WAAK4F,KAAL,GAAa,EAAb;AACA,WAAK3F,QAAL,GAAgB,EAAhB;AACA,WAAKC,KAAL,GAAa,EAAb;AACD,KAvBK;AAwBNG,IAAAA,QAAQ,EAAE,kBAAU0F,UAAV,EAAsB;AAC9B,WAAK/F,MAAL,CAAY14C,IAAZ,CAAiBy+C,UAAjB;AACD,KA1BK;AA2BNC,IAAAA,OAAO,EAAE,iBAAUC,SAAV,EAAqB;AAC5B,WAAKL,KAAL,CAAWt+C,IAAX,CAAgB2+C,SAAhB;AACD,KA7BK;AA8BN9E,IAAAA,UAAU,EAAE,oBAAU+E,QAAV,EAAoB;AAC9B,WAAKjG,QAAL,CAAc34C,IAAd,CAAmB4+C,QAAnB;AACD,KAhCK;AAiCNpC,IAAAA,OAAO,EAAE,iBAAUqC,SAAV,EAAqB;AAC5B,WAAKjG,KAAL,CAAW54C,IAAX,CAAgB6+C,SAAhB;AACD,KAnCK;AAoCNC,IAAAA,SAAS,EAAE,qBAAY;AACrB,aAAO,KAAKpG,MAAL,CAAY,KAAKA,MAAL,CAAYj6C,MAAZ,GAAqB,CAAjC,CAAP;AACD,KAtCK;AAuCNsgD,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO,KAAKT,KAAL,CAAW,KAAKA,KAAL,CAAW7/C,MAAX,GAAoB,CAA/B,CAAP;AACD,KAzCK;AA0CNugD,IAAAA,WAAW,EAAE,uBAAY;AACvB,aAAO,KAAKrG,QAAL,CAAc,KAAKA,QAAL,CAAcl6C,MAAd,GAAuB,CAArC,CAAP;AACD,KA5CK;AA6CNwgD,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO,KAAKrG,KAAL,CAAW,KAAKA,KAAL,CAAWn6C,MAAX,GAAoB,CAA/B,CAAP;AACD,KA/CK;AAgDNi6C,IAAAA,MAAM,EAAE,EAhDF;AAiDN4F,IAAAA,KAAK,EAAE,EAjDD;AAkDN3F,IAAAA,QAAQ,EAAE,EAlDJ;AAmDNC,IAAAA,KAAK,EAAE;AAnDD,GAVY;AA+DpBsG,EAAAA,IAAI,EAAE,gBAAY;AAChB,SAAKhB,aAAL,GAAqB,EAArB;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACA,SAAKC,MAAL,CAAY/6C,KAAZ;AACA,SAAK8J,IAAL,GAAY;AACV2wC,MAAAA,MAAM,EAAE98C,SADE;AAEV+8C,MAAAA,KAAK,EAAE/8C,SAFG;AAGVg9C,MAAAA,MAAM,EAAEh9C,SAHE;AAIVi9C,MAAAA,KAAK,EAAEj9C;AAJG,KAAZ;AAMA,SAAKkX,WAAL,GAAmB,CAAnB;AACAqQ,IAAAA,OAAO,CAACjC,wEAAA,EAAD,CAAP;AACD,GA3EmB;AA4EpB64B,EAAAA,SAAS,EAAE,mBAAU1+B,GAAV,EAAe/gB,GAAf,EAAoBivB,GAApB,EAAyBlK,GAAzB,EAA8B;AACvC,QAAI,OAAOhE,GAAG,CAAC/gB,GAAD,CAAV,KAAoB,WAAxB,EAAqC;AACnC+gB,MAAAA,GAAG,CAAC/gB,GAAD,CAAH,GAAWivB,GAAX;AACD,KAFD,MAEO;AACLlO,MAAAA,GAAG,CAAC/gB,GAAD,CAAH,GAAW+kB,GAAG,CAACkK,GAAD,EAAMlO,GAAG,CAAC/gB,GAAD,CAAT,CAAd;AACD;AACF,GAlFmB;AAmFpB0/C,EAAAA,YAAY,EAAE,sBAAUtB,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AACpD,QAAMoB,KAAK,GAAG,IAAd;;AACA,QAAI/3B,GAAG,GAAG,CAAV;AACA;;AACA,aAASg4B,QAAT,CAAkBxxC,IAAlB,EAAwB;AACtB,aAAO,SAASyxC,gBAAT,CAA0Bp7B,IAA1B,EAAgC;AACrCmD,QAAAA,GAAG,GADkC,CAErC;;AACA,YAAMzZ,CAAC,GAAGwxC,KAAK,CAACnB,aAAN,CAAoBz/C,MAApB,GAA6B6oB,GAA7B,GAAmC,CAA7C;;AAEA+3B,QAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,QAAtB,EAAgC65B,MAAM,GAAGnwC,CAAC,GAAG7O,IAAI,CAACmc,SAAlD,EAA6DrT,IAAI,CAAC6I,GAAlE;;AACA0uC,QAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,OAAtB,EAA+B85B,KAAK,GAAGpwC,CAAC,GAAG7O,IAAI,CAACmc,SAAhD,EAA2DrT,IAAI,CAACmrB,GAAhE;;AAEAosB,QAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,QAA7B,EAAuC2wC,MAAM,GAAGjwC,CAAC,GAAG7O,IAAI,CAACmc,SAAzD,EAAoErT,IAAI,CAAC6I,GAAzE;;AACA0uC,QAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,OAA7B,EAAsC4wC,KAAK,GAAGlwC,CAAC,GAAG7O,IAAI,CAACmc,SAAvD,EAAkErT,IAAI,CAACmrB,GAAvE;;AAEA,YAAI,EAAEnlB,IAAI,KAAK,YAAX,CAAJ,EAA8B;AAC5BuxC,UAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,QAAtB,EAAgC25B,MAAM,GAAGjwC,CAAC,GAAG7O,IAAI,CAACmc,SAAlD,EAA6DrT,IAAI,CAAC6I,GAAlE;;AACA0uC,UAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,OAAtB,EAA+B45B,KAAK,GAAGlwC,CAAC,GAAG7O,IAAI,CAACmc,SAAhD,EAA2DrT,IAAI,CAACmrB,GAAhE;;AAEAosB,UAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,QAA7B,EAAuC6wC,MAAM,GAAGnwC,CAAC,GAAG7O,IAAI,CAACmc,SAAzD,EAAoErT,IAAI,CAAC6I,GAAzE;;AACA0uC,UAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,OAA7B,EAAsC8wC,KAAK,GAAGpwC,CAAC,GAAG7O,IAAI,CAACmc,SAAvD,EAAkErT,IAAI,CAACmrB,GAAvE;AACD;AACF,OAlBD;AAmBD;;AAED,SAAKirB,aAAL,CAAmBz+C,OAAnB,CAA2B6/C,QAAQ,EAAnC;AACA,SAAKnB,WAAL,CAAiB1+C,OAAjB,CAAyB6/C,QAAQ,CAAC,YAAD,CAAjC;AACD,GA/GmB;AAgHpBriD,EAAAA,MAAM,EAAE,gBAAU6gD,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AAC9C,QAAMuB,OAAO,GAAG13C,IAAI,CAAC6I,GAAL,CAASmtC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG33C,IAAI,CAACmrB,GAAL,CAAS6qB,MAAT,EAAiBC,KAAjB,CAAf;;AACA,QAAM2B,OAAO,GAAG53C,IAAI,CAAC6I,GAAL,CAASqtC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG73C,IAAI,CAACmrB,GAAL,CAAS+qB,MAAT,EAAiBC,KAAjB,CAAf;;AAEA,SAAKkB,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,QAA5B,EAAsCqyC,OAAtC,EAA+C13C,IAAI,CAAC6I,GAApD;AACA,SAAKwuC,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,QAA5B,EAAsCuyC,OAAtC,EAA+C53C,IAAI,CAAC6I,GAApD;AACA,SAAKwuC,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,OAA5B,EAAqCsyC,MAArC,EAA6C33C,IAAI,CAACmrB,GAAlD;AACA,SAAKksB,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,OAA5B,EAAqCwyC,MAArC,EAA6C73C,IAAI,CAACmrB,GAAlD;AAEA,SAAKmsB,YAAL,CAAkBI,OAAlB,EAA2BE,OAA3B,EAAoCD,MAApC,EAA4CE,MAA5C;AACD,GA5HmB;AA6HpBC,EAAAA,aAAa,EAAE,uBAAUrV,OAAV,EAAmBhhB,OAAnB,EAA4BmvB,MAA5B,EAAoC;AACjD,QAAMmH,SAAS,GAAGnH,MAAM,CAACnO,OAAO,CAACmP,IAAR,CAAaC,KAAd,CAAxB;AACA,QAAMmG,WAAW,GAAGC,gBAAgB,CAACxV,OAAO,CAACmP,IAAR,CAAaC,KAAd,CAAhB,CAAqCl7C,MAArC,IAA+C,CAAnE;AACA,QAAM0D,CAAC,GAAG09C,SAAS,CAAC19C,CAAV,GAAc09C,SAAS,CAACp+C,KAAV,GAAkB,CAAhC,GAAqC,CAACq+C,WAAW,GAAG,CAAf,IAAoB9gD,IAAI,CAAC+b,eAA1B,GAA6C,CAA3F;AACA,SAAKojC,WAAL,CAAiBn+C,IAAjB,CAAsB;AACpB89C,MAAAA,MAAM,EAAE37C,CADY;AAEpB67C,MAAAA,MAAM,EAAE,KAAK9lC,WAAL,GAAmB,CAFP;AAGpB6lC,MAAAA,KAAK,EAAE57C,CAAC,GAAGnD,IAAI,CAAC+b,eAHI;AAIpBkjC,MAAAA,KAAK,EAAEj9C,SAJa;AAKpB24C,MAAAA,KAAK,EAAEpP,OAAO,CAACmP,IAAR,CAAaC,KALA;AAMpBqG,MAAAA,QAAQ,EAAEz5B,8DAAA,CAAsBgD,OAAtB;AANU,KAAtB;AAQD,GAzImB;AA0IpB22B,EAAAA,aAAa,EAAE,uBAAU3V,OAAV,EAAmB;AAChC;AACA,QAAM4V,sBAAsB,GAAG,KAAKhC,WAAL,CAC5BrpC,GAD4B,CACxB,UAAUsrC,UAAV,EAAsB;AACzB,aAAOA,UAAU,CAACzG,KAAlB;AACD,KAH4B,EAI5B0G,WAJ4B,CAIhB9V,OAAO,CAACmP,IAAR,CAAaC,KAJG,CAA/B;AAKA,WAAO,KAAKwE,WAAL,CAAiBnS,MAAjB,CAAwBmU,sBAAxB,EAAgD,CAAhD,EAAmD,CAAnD,CAAP;AACD,GAlJmB;AAmJpBG,EAAAA,UAAU,EAAE,sBAA+E;AAAA,QAArE1pC,KAAqE,uEAA7D;AAAE2zB,MAAAA,OAAO,EAAEvpC,SAAX;AAAsBub,MAAAA,IAAI,EAAE,KAA5B;AAAmC9a,MAAAA,KAAK,EAAET;AAA1C,KAA6D;AAAA,QAANwe,IAAM;AACzF,WAAO;AACLs+B,MAAAA,MAAM,EAAE98C,SADH;AAELg9C,MAAAA,MAAM,EAAE,KAAK9lC,WAFR;AAGL6lC,MAAAA,KAAK,EAAE/8C,SAHF;AAILi9C,MAAAA,KAAK,EAAEj9C,SAJF;AAKL4V,MAAAA,KAAK,EAAEA,KAAK,CAAC2zB,OALR;AAMLhuB,MAAAA,IAAI,EAAE3F,KAAK,CAAC2F,IANP;AAOL9a,MAAAA,KAAK,EAAEmV,KAAK,CAACnV,KAPR;AAQLC,MAAAA,MAAM,EAAE,CARH;AASL8d,MAAAA,IAAI,EAAEA;AATD,KAAP;AAWD,GA/JmB;AAgKpB+gC,EAAAA,OAAO,EAAE,mBAA+E;AAAA,QAArE3pC,KAAqE,uEAA7D;AAAE2zB,MAAAA,OAAO,EAAEvpC,SAAX;AAAsBub,MAAAA,IAAI,EAAE,KAA5B;AAAmC9a,MAAAA,KAAK,EAAET;AAA1C,KAA6D;AAAA,QAANwe,IAAM;AACtF,SAAK0+B,aAAL,CAAmBl+C,IAAnB,CAAwB,KAAKsgD,UAAL,CAAgB1pC,KAAhB,EAAuB4I,IAAvB,CAAxB;AACD,GAlKmB;AAmKpBghC,EAAAA,OAAO,EAAE,mBAAY;AACnB,WAAO,KAAKtC,aAAL,CAAmBuC,GAAnB,EAAP;AACD,GArKmB;AAsKpBC,EAAAA,gBAAgB,EAAE,0BAAUnW,OAAV,EAAmB;AACnC,QAAMoW,IAAI,GAAG,KAAKzC,aAAL,CAAmBuC,GAAnB,EAAb;AACAE,IAAAA,IAAI,CAACjjB,QAAL,GAAgBijB,IAAI,CAACjjB,QAAL,IAAiB,EAAjC;AACAijB,IAAAA,IAAI,CAACC,aAAL,GAAqBD,IAAI,CAACC,aAAL,IAAsB,EAA3C;AACAD,IAAAA,IAAI,CAACjjB,QAAL,CAAc19B,IAAd,CAAmB;AAAEoC,MAAAA,CAAC,EAAEyoB,MAAM,CAACg2B,cAAP,EAAL;AAA8Bn/C,MAAAA,MAAM,EAAE;AAAtC,KAAnB;AACAi/C,IAAAA,IAAI,CAACC,aAAL,CAAmB5gD,IAAnB,CAAwBuqC,OAAxB;AACA,SAAK2T,aAAL,CAAmBl+C,IAAnB,CAAwB2gD,IAAxB;AACD,GA7KmB;AA8KpBG,EAAAA,eAAe,EAAE,yBAAUC,IAAV,EAAgB;AAC/B,SAAK7oC,WAAL,GAAmB,KAAKA,WAAL,GAAmB6oC,IAAtC;AACA,SAAK5zC,IAAL,CAAU8wC,KAAV,GAAkB,KAAK/lC,WAAvB;AACD,GAjLmB;AAkLpB2oC,EAAAA,cAAc,EAAE,0BAAY;AAC1B,WAAO,KAAK3oC,WAAZ;AACD,GApLmB;AAqLpB8oC,EAAAA,SAAS,EAAE,qBAAY;AACrB,WAAO;AAAEn2B,MAAAA,MAAM,EAAE,KAAK1d,IAAf;AAAqBixC,MAAAA,MAAM,EAAE,KAAKA;AAAlC,KAAP;AACD;AAvLmB,CAAf;AA0LP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM6C,QAAQ,GAAG,SAAXA,QAAW,CAAUh+C,IAAV,EAAgB47C,SAAhB,EAA2B;AAC1Ch0B,EAAAA,MAAM,CAACi2B,eAAP,CAAuB9hD,IAAI,CAACmc,SAA5B;AACA0jC,EAAAA,SAAS,CAACn9C,MAAV,GAAmB1C,IAAI,CAACmc,SAAxB;AACA0jC,EAAAA,SAAS,CAACb,MAAV,GAAmBnzB,MAAM,CAACg2B,cAAP,EAAnB;AACA,MAAMvgD,IAAI,GAAGimB,4DAAA,EAAb;AACAjmB,EAAAA,IAAI,CAAC6B,CAAL,GAAS08C,SAAS,CAACf,MAAnB;AACAx9C,EAAAA,IAAI,CAAC8B,CAAL,GAASy8C,SAAS,CAACb,MAAnB;AACA19C,EAAAA,IAAI,CAACmB,KAAL,GAAao9C,SAAS,CAACp9C,KAAV,IAAmBzC,IAAI,CAACyC,KAArC;AACAnB,EAAAA,IAAI,CAACK,KAAL,GAAa,MAAb;AAEA,MAAIomB,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAR;AACA,MAAMu+C,QAAQ,GAAG56B,yDAAA,CAAiBQ,CAAjB,EAAoBzmB,IAApB,CAAjB;AACA,MAAM+gD,OAAO,GAAG96B,2DAAA,EAAhB;AACA86B,EAAAA,OAAO,CAACl/C,CAAR,GAAY08C,SAAS,CAACf,MAAtB;AACAuD,EAAAA,OAAO,CAACj/C,CAAR,GAAYy8C,SAAS,CAACb,MAAtB;AACAqD,EAAAA,OAAO,CAAC5/C,KAAR,GAAgBnB,IAAI,CAACmB,KAArB;AACA4/C,EAAAA,OAAO,CAACr5C,EAAR,GAAa,KAAb;AACAq5C,EAAAA,OAAO,CAAC9jD,IAAR,GAAeshD,SAAS,CAACtU,OAAzB;AACA8W,EAAAA,OAAO,CAAC1gD,KAAR,GAAgB,UAAhB;AACA0gD,EAAAA,OAAO,CAACthD,UAAR,GAAqBf,IAAI,CAACid,cAA1B;AACAolC,EAAAA,OAAO,CAACzkC,QAAR,GAAmB5d,IAAI,CAACgd,YAAxB;AACAqlC,EAAAA,OAAO,CAACxkC,UAAR,GAAqB7d,IAAI,CAACkd,cAA1B;AACAmlC,EAAAA,OAAO,CAACE,MAAR,GAAiBviD,IAAI,CAACmd,SAAtB;AACAklC,EAAAA,OAAO,CAACG,UAAR,GAAqBxiD,IAAI,CAACqc,UAA1B;AACAgmC,EAAAA,OAAO,CAACI,MAAR,GAAiBziD,IAAI,CAACmd,SAAtB;AAEA,MAAIulC,QAAQ,GAAGlU,kDAAQ,CAACzmB,CAAD,EAAIs6B,OAAJ,CAAvB;AAEA,MAAI7iC,UAAU,GAAG1W,IAAI,CAAC65C,KAAL,CACfD,QAAQ,CACL5sC,GADH,CACO,UAAC2nB,EAAD;AAAA,WAAQ,CAACA,EAAE,CAACtX,OAAH,IAAcsX,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,EAAyBv7B,OAAzB,GAAmCQ,MAA3C;AAAA,GADP,EAEGif,MAFH,CAEU,UAAC69B,GAAD,EAAMoD,IAAN;AAAA,WAAepD,GAAG,GAAGoD,IAArB;AAAA,GAFV,CADe,CAAjB;AAMAT,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwBkhB,UAAU,GAAG,IAAIxf,IAAI,CAACqc,UAA9C;AACAwjC,EAAAA,SAAS,CAACn9C,MAAV,IAAoB8c,UAAU,GAAG,IAAIxf,IAAI,CAACqc,UAA1C;AACAwP,EAAAA,MAAM,CAACi2B,eAAP,CAAuBtiC,UAAU,GAAG,IAAIxf,IAAI,CAACqc,UAA7C;AACAwjC,EAAAA,SAAS,CAACZ,KAAV,GAAkBY,SAAS,CAACb,MAAV,GAAmBx/B,UAAnB,GAAgC,IAAIxf,IAAI,CAACqc,UAA3D;AACAwjC,EAAAA,SAAS,CAACd,KAAV,GAAkBc,SAAS,CAACf,MAAV,GAAmBx9C,IAAI,CAACmB,KAA1C;AACAopB,EAAAA,MAAM,CAAC5tB,MAAP,CAAc4hD,SAAS,CAACf,MAAxB,EAAgCe,SAAS,CAACb,MAA1C,EAAkDa,SAAS,CAACd,KAA5D,EAAmEc,SAAS,CAACZ,KAA7E;AACApzB,EAAAA,MAAM,CAACuzB,MAAP,CAAc5B,OAAd,CAAsBqC,SAAtB;AACD,CAzCD;;AA2CA,IAAMliC,WAAW,GAAG,SAAdA,WAAc,CAAC6L,GAAD,EAAS;AAC3B,SAAO;AACLzoB,IAAAA,UAAU,EAAEyoB,GAAG,CAACnM,iBADX;AAELO,IAAAA,QAAQ,EAAE4L,GAAG,CAACpM,eAFT;AAGLS,IAAAA,UAAU,EAAE2L,GAAG,CAAClM;AAHX,GAAP;AAKD,CAND;;AAOA,IAAMQ,QAAQ,GAAG,SAAXA,QAAW,CAAC0L,GAAD,EAAS;AACxB,SAAO;AACLzoB,IAAAA,UAAU,EAAEyoB,GAAG,CAACvM,cADX;AAELW,IAAAA,QAAQ,EAAE4L,GAAG,CAACxM,YAFT;AAGLa,IAAAA,UAAU,EAAE2L,GAAG,CAACtM;AAHX,GAAP;AAKD,CAND;;AAOA,IAAMa,SAAS,GAAG,SAAZA,SAAY,CAACyL,GAAD,EAAS;AACzB,SAAO;AACLzoB,IAAAA,UAAU,EAAEyoB,GAAG,CAAC1M,eADX;AAELc,IAAAA,QAAQ,EAAE4L,GAAG,CAAC3M,aAFT;AAGLgB,IAAAA,UAAU,EAAE2L,GAAG,CAACzM;AAHX,GAAP;AAKD,CAND;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM8lC,YAAY,GAAG,SAAfA,YAAe,CAAUt4B,OAAV,EAAmBq1B,QAAnB,EAA6B;AAChD/zB,EAAAA,MAAM,CAACi2B,eAAP,CAAuB,EAAvB;AACA,MAAQhD,MAAR,GAAmCc,QAAnC,CAAQd,MAAR;AAAA,MAAgBC,KAAhB,GAAmCa,QAAnC,CAAgBb,KAAhB;AAAA,MAAuBxT,OAAvB,GAAmCqU,QAAnC,CAAuBrU,OAAvB;AACA,MAAMuX,KAAK,GAAGhhC,kEAAA,CAAmBypB,OAAnB,EAA4B9rC,MAA1C;AACA,MAAIsjD,QAAQ,GAAGt8C,sEAAA,CAA8B8kC,OAA9B,EAAuC5tB,WAAW,CAAC3d,IAAD,CAAlD,CAAf;AACA,MAAM4Y,UAAU,GAAGmqC,QAAQ,CAACrgD,MAAT,GAAkBogD,KAArC;AACAlD,EAAAA,QAAQ,CAACl9C,MAAT,IAAmBkW,UAAnB;AAEAiT,EAAAA,MAAM,CAACi2B,eAAP,CAAuBlpC,UAAvB;AAEA,MAAIqqC,UAAJ;AACA,MAAIC,WAAW,GAAGH,QAAQ,CAACrgD,MAAT,GAAkB,EAApC;AACA,MAAI+kC,SAAS,GAAGsb,QAAQ,CAACtgD,KAAzB;;AAEA,MAAIq8C,MAAM,KAAKC,KAAf,EAAsB;AACpBkE,IAAAA,UAAU,GAAGp3B,MAAM,CAACg2B,cAAP,KAA0BqB,WAAvC;;AACA,QAAI,CAACljD,IAAI,CAAC2c,WAAV,EAAuB;AACrBumC,MAAAA,WAAW,IAAIljD,IAAI,CAACmc,SAApB;AACA8mC,MAAAA,UAAU,GAAGp3B,MAAM,CAACg2B,cAAP,KAA0BqB,WAAvC;AACD;;AACDA,IAAAA,WAAW,IAAI,EAAf;AACA,QAAMr6C,EAAE,GAAGC,IAAI,CAACmrB,GAAL,CAASwT,SAAS,GAAG,CAArB,EAAwBznC,IAAI,CAACyC,KAAL,GAAa,CAArC,CAAX;AACAopB,IAAAA,MAAM,CAAC5tB,MAAP,CACE6gD,MAAM,GAAGj2C,EADX,EAEEgjB,MAAM,CAACg2B,cAAP,KAA0B,EAA1B,GAA+BqB,WAFjC,EAGEnE,KAAK,GAAGl2C,EAHV,EAIEgjB,MAAM,CAACg2B,cAAP,KAA0B,EAA1B,GAA+BqB,WAJjC;AAMD,GAdD,MAcO;AACLA,IAAAA,WAAW,IAAIljD,IAAI,CAACmc,SAApB;AACA8mC,IAAAA,UAAU,GAAGp3B,MAAM,CAACg2B,cAAP,KAA0BqB,WAAvC;AACAr3B,IAAAA,MAAM,CAAC5tB,MAAP,CAAc6gD,MAAd,EAAsBmE,UAAU,GAAG,EAAnC,EAAuClE,KAAvC,EAA8CkE,UAA9C;AACD;;AACDp3B,EAAAA,MAAM,CAACi2B,eAAP,CAAuBoB,WAAvB;AACAtD,EAAAA,QAAQ,CAACl9C,MAAT,IAAmBwgD,WAAnB;AACAtD,EAAAA,QAAQ,CAACX,KAAT,GAAiBW,QAAQ,CAACZ,MAAT,GAAkBY,QAAQ,CAACl9C,MAA5C;AACAmpB,EAAAA,MAAM,CAAC5tB,MAAP,CAAc2hD,QAAQ,CAACuD,UAAvB,EAAmCvD,QAAQ,CAACZ,MAA5C,EAAoDY,QAAQ,CAACwD,QAA7D,EAAuExD,QAAQ,CAACX,KAAhF;AAEA,SAAOgE,UAAP;AACD,CAvCD;AAyCA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMI,WAAW,GAAG,SAAdA,WAAc,CAAU94B,OAAV,EAAmBq1B,QAAnB,EAA6BqD,UAA7B,EAAyC;AAC3D,MAAQnE,MAAR,GAAgEc,QAAhE,CAAQd,MAAR;AAAA,MAAgBC,KAAhB,GAAgEa,QAAhE,CAAgBb,KAAhB;AAAA,MAAuBC,MAAvB,GAAgEY,QAAhE,CAAuBZ,MAAvB;AAAA,MAA+BzT,OAA/B,GAAgEqU,QAAhE,CAA+BrU,OAA/B;AAAA,MAAwCz8B,IAAxC,GAAgE8wC,QAAhE,CAAwC9wC,IAAxC;AAAA,MAA8Cw0C,aAA9C,GAAgE1D,QAAhE,CAA8C0D,aAA9C;AACA,MAAIP,QAAQ,GAAGt8C,sEAAA,CAA8B8kC,OAA9B,EAAuC5tB,WAAW,CAAC3d,IAAD,CAAlD,CAAf;AACA,MAAMqiD,OAAO,GAAG96B,2DAAA,EAAhB;AACA86B,EAAAA,OAAO,CAACl/C,CAAR,GAAY27C,MAAZ;AACAuD,EAAAA,OAAO,CAACj/C,CAAR,GAAY47C,MAAM,GAAG,EAArB;AACAqD,EAAAA,OAAO,CAAC5/C,KAAR,GAAgBs8C,KAAK,GAAGD,MAAxB;AACAuD,EAAAA,OAAO,CAAC1gD,KAAR,GAAgB,aAAhB;AACA0gD,EAAAA,OAAO,CAACr5C,EAAR,GAAa,KAAb;AACAq5C,EAAAA,OAAO,CAAC9jD,IAAR,GAAegtC,OAAf;AACA8W,EAAAA,OAAO,CAACthD,UAAR,GAAqBf,IAAI,CAACqd,iBAA1B;AACAglC,EAAAA,OAAO,CAACzkC,QAAR,GAAmB5d,IAAI,CAACod,eAAxB;AACAilC,EAAAA,OAAO,CAACxkC,UAAR,GAAqB7d,IAAI,CAACsd,iBAA1B;AACA+kC,EAAAA,OAAO,CAACE,MAAR,GAAiBviD,IAAI,CAACuc,YAAtB;AACA8lC,EAAAA,OAAO,CAACI,MAAR,GAAiBziD,IAAI,CAACuc,YAAtB;AACA8lC,EAAAA,OAAO,CAACG,UAAR,GAAqBxiD,IAAI,CAACwd,WAA1B;AACA6kC,EAAAA,OAAO,CAACl8C,KAAR,GAAgB,KAAhB;AAEAqoC,EAAAA,kDAAQ,CAACjkB,OAAD,EAAU83B,OAAV,CAAR;AAEA,MAAI5a,SAAS,GAAGsb,QAAQ,CAACtgD,KAAzB;AAEA,MAAI8D,IAAJ;;AACA,MAAIu4C,MAAM,KAAKC,KAAf,EAAsB;AACpB,QAAI/+C,IAAI,CAAC2c,WAAT,EAAsB;AACpBpW,MAAAA,IAAI,GAAGgkB,OAAO,CACX3mB,MADI,CACG,MADH,EAEJtF,IAFI,CAGH,GAHG,eAIGwgD,MAJH,cAIamE,UAJb,gBAI6BnE,MAAM,GAAGh2C,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAL,GAAa,CAAtB,EAAyBglC,SAAS,GAAG,CAArC,CAJtC,gBAKDwb,UAAU,GAAG,EALZ,gBAMGnE,MANH,EAAP;AAQD,KATD,MASO;AACLv4C,MAAAA,IAAI,GAAGgkB,OAAO,CACX3mB,MADI,CACG,MADH,EAEJtF,IAFI,CAGH,GAHG,EAIH,OACEwgD,MADF,GAEE,GAFF,GAGEmE,UAHF,GAIE,KAJF,IAKGnE,MAAM,GAAG,EALZ,IAME,GANF,IAOGmE,UAAU,GAAG,EAPhB,IAQE,GARF,IASGnE,MAAM,GAAG,EATZ,IAUE,GAVF,IAWGmE,UAAU,GAAG,EAXhB,IAYE,GAZF,GAaEnE,MAbF,GAcE,GAdF,IAeGmE,UAAU,GAAG,EAfhB,CAJG,CAAP;AAqBD;AACF,GAjCD,MAiCO;AACL18C,IAAAA,IAAI,GAAGgkB,OAAO,CAAC3mB,MAAR,CAAe,MAAf,CAAP;AACA2C,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgBwgD,MAAhB;AACAv4C,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgB2kD,UAAhB;AACA18C,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgBygD,KAAhB;AACAx4C,IAAAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgB2kD,UAAhB;AACD,GA9D0D,CA+D3D;AACA;;;AACA,MACEn0C,IAAI,KAAKwY,8EAAT,IACAxY,IAAI,KAAKwY,oFADT,IAEAxY,IAAI,KAAKwY,oFAFT,IAGAxY,IAAI,KAAKwY,mFAJX,EAKE;AACA/gB,IAAAA,IAAI,CAACvD,KAAL,CAAW,kBAAX,EAA+B,MAA/B;AACAuD,IAAAA,IAAI,CAACjI,IAAL,CAAU,OAAV,EAAmB,cAAnB;AACD,GARD,MAQO;AACLiI,IAAAA,IAAI,CAACjI,IAAL,CAAU,OAAV,EAAmB,cAAnB;AACD;;AAED,MAAI0N,GAAG,GAAG,EAAV;;AACA,MAAIhM,IAAI,CAACkM,mBAAT,EAA8B;AAC5BF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAEDc,EAAAA,IAAI,CAACjI,IAAL,CAAU,cAAV,EAA0B,CAA1B;AACAiI,EAAAA,IAAI,CAACjI,IAAL,CAAU,QAAV,EAAoB,MAApB,EA1F2D,CA0F9B;;AAC7BiI,EAAAA,IAAI,CAACvD,KAAL,CAAW,MAAX,EAAmB,MAAnB,EA3F2D,CA2F/B;;AAC5B,MAAI8L,IAAI,KAAKwY,6EAAT,IAAqCxY,IAAI,KAAKwY,8EAAlD,EAA6E;AAC3E/gB,IAAAA,IAAI,CAACjI,IAAL,CAAU,YAAV,EAAwB,SAAS0N,GAAT,GAAe,aAAvC;AACD;;AACD,MAAI8C,IAAI,KAAKwY,mFAAT,IAA2CxY,IAAI,KAAKwY,oFAAxD,EAAyF;AACvF/gB,IAAAA,IAAI,CAACjI,IAAL,CAAU,YAAV,EAAwB,SAAS0N,GAAT,GAAe,eAAvC;AACD;;AAED,MAAI8C,IAAI,KAAKwY,mFAAT,IAA2CxY,IAAI,KAAKwY,oFAAxD,EAAyF;AACvF/gB,IAAAA,IAAI,CAACjI,IAAL,CAAU,YAAV,EAAwB,SAAS0N,GAAT,GAAe,aAAvC;AACD,GArG0D,CAuG3D;;;AACA,MAAI6yC,uEAAA,MAAoC7+C,IAAI,CAAC4c,mBAA7C,EAAkE;AAChErW,IAAAA,IAAI,CAACjI,IAAL,CAAU,cAAV,EAA0B,SAAS0N,GAAT,GAAe,kBAAzC;AACAue,IAAAA,OAAO,CACJ3mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,GAFR,EAEawgD,MAFb,EAGGxgD,IAHH,CAGQ,GAHR,EAGa2kD,UAAU,GAAG,CAH1B,EAIG3kD,IAJH,CAIQ,aAJR,EAIuB,YAJvB,EAKGA,IALH,CAKQ,WALR,EAKqB,MALrB,EAMGA,IANH,CAMQ,aANR,EAMuB,QANvB,EAOGA,IAPH,CAOQ,YAPR,EAOsB,MAPtB,EAQGA,IARH,CAQQ,OARR,EAQiB,gBARjB,EASGC,IATH,CASQ+kD,aATR;AAUD;AACF,CArHD;;AAuHO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CACxBh5B,OADwB,EAExBmvB,MAFwB,EAGxB8J,SAHwB,EAIxBtqC,WAJwB,EAKxBuqC,aALwB,EAMxB9J,QANwB,EAOxB;AACA,MAAI8J,aAAa,CAACC,sBAAd,KAAyC,IAA7C,EAAmD;AACjD,QAAMC,SAAS,GAAG,IAAI5sC,GAAJ,EAAlB;AACA4iC,IAAAA,QAAQ,CAACl5C,OAAT,CAAiB,UAAC8qC,OAAD,EAAa;AAC5BoY,MAAAA,SAAS,CAAChmB,GAAV,CAAc4N,OAAO,CAACmP,IAAtB;AACAiJ,MAAAA,SAAS,CAAChmB,GAAV,CAAc4N,OAAO,CAAC0P,EAAtB;AACD,KAHD;AAIAuI,IAAAA,SAAS,GAAGA,SAAS,CAACj4C,MAAV,CAAiB,UAACq4C,QAAD;AAAA,aAAcD,SAAS,CAACpsC,QAAV,CAAmBqsC,QAAnB,CAAd;AAAA,KAAjB,CAAZ;AACD,GARD,CAUA;;;AACA,MAAIC,SAAS,GAAG,CAAhB;AACA,MAAIC,UAAU,GAAG,CAAjB;AACA,MAAI9qC,SAAS,GAAG,CAAhB;;AACA,OAAK,IAAIxZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgkD,SAAS,CAAC/jD,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAMm7C,KAAK,GAAGjB,MAAM,CAAC8J,SAAS,CAAChkD,CAAD,CAAV,CAApB,CADyC,CAGzC;;AACAm7C,IAAAA,KAAK,CAACl4C,KAAN,GAAck4C,KAAK,CAACl4C,KAAN,IAAezC,IAAI,CAACyC,KAAlC;AACAk4C,IAAAA,KAAK,CAACj4C,MAAN,GAAeoG,IAAI,CAACmrB,GAAL,CAAS0mB,KAAK,CAACj4C,MAAN,IAAgB1C,IAAI,CAAC0C,MAA9B,EAAsC1C,IAAI,CAAC0C,MAA3C,CAAf;AACAi4C,IAAAA,KAAK,CAACvI,MAAN,GAAeuI,KAAK,CAACvI,MAAN,IAAgBpyC,IAAI,CAACkc,WAApC;AAEAy+B,IAAAA,KAAK,CAACx3C,CAAN,GAAU0gD,SAAS,GAAGC,UAAtB;AACAnJ,IAAAA,KAAK,CAACv3C,CAAN,GAAU8V,WAAV,CATyC,CAWzC;;AACA,QAAMxW,MAAM,GAAG6kB,0DAAA,CAAkBgD,OAAlB,EAA2BowB,KAA3B,EAAkC36C,IAAlC,CAAf;AACAgZ,IAAAA,SAAS,GAAGlQ,IAAI,CAACmrB,GAAL,CAASjb,SAAT,EAAoBtW,MAApB,CAAZ;AACAmpB,IAAAA,MAAM,CAAC5tB,MAAP,CAAc08C,KAAK,CAACx3C,CAApB,EAAuB+V,WAAvB,EAAoCyhC,KAAK,CAACx3C,CAAN,GAAUw3C,KAAK,CAACl4C,KAApD,EAA2Dk4C,KAAK,CAACj4C,MAAjE;AAEAmhD,IAAAA,SAAS,IAAIlJ,KAAK,CAACl4C,KAAnB;AACAqhD,IAAAA,UAAU,IAAInJ,KAAK,CAACvI,MAApB;AACAvmB,IAAAA,MAAM,CAACuzB,MAAP,CAAcrF,QAAd,CAAuBY,KAAvB;AACD,GAjCD,CAmCA;;;AACA9uB,EAAAA,MAAM,CAACi2B,eAAP,CAAuB9oC,SAAvB;AACD,CA5CM;AA8CA,IAAMgrC,eAAe,GAAG,SAAlBA,eAAkB,CAAUz5B,OAAV,EAAmBmvB,MAAnB,EAA2B8J,SAA3B,EAAsCz5B,GAAtC,EAA2C;AACxE,MAAI/Q,SAAS,GAAG,CAAhB;AACA,MAAID,QAAQ,GAAG,CAAf;;AACA,OAAK,IAAIvZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgkD,SAAS,CAAC/jD,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,QAAMm7C,KAAK,GAAGjB,MAAM,CAAC8J,SAAS,CAAChkD,CAAD,CAAV,CAApB;AACA,QAAMykD,YAAY,GAAGC,qBAAqB,CAACvJ,KAAD,CAA1C;AACA,QAAIwJ,cAAc,GAAG58B,0DAAA,CACnBgD,OADmB,EAEnBowB,KAFmB,EAGnBsJ,YAHmB,EAInBjkD,IAJmB,EAKnBA,IAAI,CAACyc,UALc,EAMnBsN,GANmB,CAArB;;AAQA,QAAIo6B,cAAc,CAACzhD,MAAf,GAAwBsW,SAA5B,EAAuC;AACrCA,MAAAA,SAAS,GAAGmrC,cAAc,CAACzhD,MAA3B;AACD;;AACD,QAAIyhD,cAAc,CAAC1hD,KAAf,GAAuBk4C,KAAK,CAACx3C,CAA7B,GAAiC4V,QAArC,EAA+C;AAC7CA,MAAAA,QAAQ,GAAGorC,cAAc,CAAC1hD,KAAf,GAAuBk4C,KAAK,CAACx3C,CAAxC;AACD;AACF;;AAED,SAAO;AAAE6V,IAAAA,SAAS,EAAEA,SAAb;AAAwBD,IAAAA,QAAQ,EAAEA;AAAlC,GAAP;AACD,CAvBM;AAyBA,IAAMwQ,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpChrB,EAAAA,uDAAe,CAACwB,IAAD,EAAOwpB,GAAP,CAAf;;AAEA,MAAIA,GAAG,CAACzoB,UAAR,EAAoB;AAClBf,IAAAA,IAAI,CAAC8c,eAAL,GAAuB9c,IAAI,CAACid,cAAL,GAAsBjd,IAAI,CAACqd,iBAAL,GAAyBmM,GAAG,CAACzoB,UAA1E;AACD;;AACD,MAAIyoB,GAAG,CAAC5L,QAAR,EAAkB;AAChB5d,IAAAA,IAAI,CAAC6c,aAAL,GAAqB7c,IAAI,CAACgd,YAAL,GAAoBhd,IAAI,CAACod,eAAL,GAAuBoM,GAAG,CAAC5L,QAApE;AACD;;AACD,MAAI4L,GAAG,CAAC3L,UAAR,EAAoB;AAClB7d,IAAAA,IAAI,CAAC+c,eAAL,GAAuB/c,IAAI,CAACkd,cAAL,GAAsBld,IAAI,CAACsd,iBAAL,GAAyBkM,GAAG,CAAC3L,UAA1E;AACD;AACF,CAZM;;AAcP,IAAMkjC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAUpG,KAAV,EAAiB;AACxC,SAAO9uB,MAAM,CAACszB,WAAP,CAAmB5zC,MAAnB,CAA0B,UAAU61C,UAAV,EAAsB;AACrD,WAAOA,UAAU,CAACzG,KAAX,KAAqBA,KAA5B;AACD,GAFM,CAAP;AAGD,CAJD;;AAMA,IAAM0J,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAU1J,KAAV,EAAiBjB,MAAjB,EAAyB;AAChD;AACA,MAAM4K,QAAQ,GAAG5K,MAAM,CAACiB,KAAD,CAAvB;AACA,MAAMwE,WAAW,GAAG4B,gBAAgB,CAACpG,KAAD,CAApC;AAEA,MAAM/oC,IAAI,GAAGutC,WAAW,CAACx9B,MAAZ,CAAmB,UAAU69B,GAAV,EAAe4B,UAAf,EAA2B;AACzD,WAAOt4C,IAAI,CAAC6I,GAAL,CAAS6tC,GAAT,EAAc4B,UAAU,CAACtC,MAAzB,CAAP;AACD,GAFY,EAEVwF,QAAQ,CAACnhD,CAAT,GAAamhD,QAAQ,CAAC7hD,KAAT,GAAiB,CAFpB,CAAb;AAGA,MAAMgkB,KAAK,GAAG04B,WAAW,CAACx9B,MAAZ,CAAmB,UAAU69B,GAAV,EAAe4B,UAAf,EAA2B;AAC1D,WAAOt4C,IAAI,CAACmrB,GAAL,CAASurB,GAAT,EAAc4B,UAAU,CAACrC,KAAzB,CAAP;AACD,GAFa,EAEXuF,QAAQ,CAACnhD,CAAT,GAAamhD,QAAQ,CAAC7hD,KAAT,GAAiB,CAFnB,CAAd;AAGA,SAAO,CAACmP,IAAD,EAAO6U,KAAP,CAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS89B,uBAAT,CAAiCC,UAAjC,EAA6C9Y,GAA7C,EAAkD+Y,SAAlD,EAA6DC,UAA7D,EAAyEC,SAAzE,EAAoF;AAClF94B,EAAAA,MAAM,CAACi2B,eAAP,CAAuB2C,SAAvB;AACA,MAAIG,YAAY,GAAGF,UAAnB;;AACA,MAAIhZ,GAAG,CAAC1tC,EAAJ,IAAU0tC,GAAG,CAACH,OAAd,IAAyBiZ,UAAU,CAAC9Y,GAAG,CAAC1tC,EAAL,CAAvC,EAAiD;AAC/C,QAAI6mD,SAAS,GAAGL,UAAU,CAAC9Y,GAAG,CAAC1tC,EAAL,CAAV,CAAmByE,KAAnC;AACA,QAAIqiD,QAAQ,GAAGnnC,WAAW,CAAC3d,IAAD,CAA1B;AACA0rC,IAAAA,GAAG,CAACH,OAAJ,GAAc9kC,wDAAA,YAAoBilC,GAAG,CAACH,OAAxB,QAAoCsZ,SAAS,GAAG,IAAI7kD,IAAI,CAACwd,WAAzD,EAAsEsnC,QAAtE,CAAd;AACApZ,IAAAA,GAAG,CAACjpC,KAAJ,GAAYoiD,SAAZ;AACAnZ,IAAAA,GAAG,CAACnuB,IAAJ,GAAW,IAAX,CAL+C,CAO/C;;AACA,QAAMwlC,QAAQ,GAAGt8C,sEAAA,CAA8BilC,GAAG,CAACH,OAAlC,EAA2CuZ,QAA3C,CAAjB;AACA,QAAM5B,WAAW,GAAGp6C,IAAI,CAACmrB,GAAL,CAAS8uB,QAAQ,CAACrgD,MAAlB,EAA0B1C,IAAI,CAAC0d,cAA/B,CAApB;AACAknC,IAAAA,YAAY,GAAGF,UAAU,GAAGxB,WAA5B;AACAzkD,IAAAA,8CAAA,WAAaykD,WAAb,gBAA8BxX,GAAG,CAACH,OAAlC;AACD;;AACDoZ,EAAAA,SAAS,CAACjZ,GAAD,CAAT;AACA7f,EAAAA,MAAM,CAACi2B,eAAP,CAAuB8C,YAAvB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMn7B,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCgC,EAAAA,IAAI,GAAG6hB,8CAAA,GAAsB/F,QAA7B;AACA,MAAMnB,aAAa,GAAGkH,8CAAA,GAAsBlH,aAA5C,CAFsC,CAGtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AAEAqiB,EAAAA,oEAAA;AACAA,EAAAA,sEAAA,CAAkBtnB,IAAI,CAACud,IAAvB;AACA+J,EAAAA,iEAAA,CAAa/oB,IAAI,GAAG,IAApB;AACAstB,EAAAA,MAAM,CAACq0B,IAAP;AACAzhD,EAAAA,8CAAA,aAAeqE,IAAI,CAACC,SAAL,CAAe/C,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAAf;AAEA,MAAMuqB,OAAO,GACX5P,aAAa,KAAK,SAAlB,GAA8BgP,IAAI,CAACvoB,MAAL,iBAAoBpD,EAApB,SAA9B,GAA4DoD,0CAAM,iBAASpD,EAAT,SADpE,CApBsC,CAuBtC;;AACA,MAAM07C,MAAM,GAAGpyB,wEAAA,EAAf;AACA,MAAMk8B,SAAS,GAAGl8B,2EAAA,EAAlB;AACA,MAAMqyB,QAAQ,GAAGryB,0EAAA,EAAjB;AACA,MAAM1P,KAAK,GAAG0P,uEAAA,EAAd;AAEA,MAAM09B,uBAAuB,GAAGC,0BAA0B,CAACvL,MAAD,EAASC,QAAT,CAA1D;AACA35C,EAAAA,IAAI,CAAC0C,MAAL,GAAcwiD,qBAAqB,CAACxL,MAAD,EAASsL,uBAAT,CAAnC;AAEAz9B,EAAAA,mEAAA,CAA2BgD,OAA3B;AACAhD,EAAAA,mEAAA,CAA2BgD,OAA3B;AACAhD,EAAAA,gEAAA,CAAwBgD,OAAxB;AAEAg5B,EAAAA,UAAU,CAACh5B,OAAD,EAAUmvB,MAAV,EAAkB8J,SAAlB,EAA6B,CAA7B,EAAgCxjD,IAAhC,EAAsC25C,QAAtC,CAAV;AACA,MAAM6K,UAAU,GAAGc,mBAAmB,CAAC3L,QAAD,EAAWD,MAAX,EAAmBsL,uBAAnB,CAAtC,CArCsC,CAuCtC;;AACAz9B,EAAAA,gEAAA,CAAwBgD,OAAxB;AACAhD,EAAAA,qEAAA,CAA6BgD,OAA7B;AACAhD,EAAAA,sEAAA,CAA8BgD,OAA9B;AACAhD,EAAAA,qEAAA,CAA6BgD,OAA7B;AAEA;AACF;AACA;AACA;;AACE,WAASo7B,SAAT,CAAmBja,GAAnB,EAAwBxyB,WAAxB,EAAqC;AACnC,QAAM0sC,cAAc,GAAG/5B,MAAM,CAACq1B,aAAP,CAAqBxV,GAArB,CAAvB;;AACA,QAAIka,cAAc,CAAC5G,MAAf,GAAwB,EAAxB,GAA6B9lC,WAAjC,EAA8C;AAC5C0sC,MAAAA,cAAc,CAAC5G,MAAf,GAAwB9lC,WAAW,GAAG,CAAtC;AACAA,MAAAA,WAAW,IAAI,EAAf;AACD;;AACDqO,IAAAA,+DAAA,CACEgD,OADF,EAEEq7B,cAFF,EAGE1sC,WAHF,EAIElZ,IAJF,EAKE+gD,gBAAgB,CAACrV,GAAG,CAACgP,IAAJ,CAASC,KAAV,CAAhB,CAAiCl7C,MALnC;AAQAosB,IAAAA,MAAM,CAAC5tB,MAAP,CAAc2nD,cAAc,CAAC9G,MAA7B,EAAqC5lC,WAAW,GAAG,EAAnD,EAAuD0sC,cAAc,CAAC7G,KAAtE,EAA6E7lC,WAA7E;AACD,GAhEqC,CAkEtC;;;AACA,MAAIoqC,aAAa,GAAG,CAApB;AACA,MAAIwC,cAAc,GAAG9/C,KAAK,EAA1B;AACA2zC,EAAAA,QAAQ,CAACl5C,OAAT,CAAiB,UAAUirC,GAAV,EAAe;AAC9B,QAAIiU,SAAJ,EAAeE,SAAf,EAA0BD,QAA1B;;AAEA,YAAQlU,GAAG,CAAC58B,IAAZ;AACE,WAAKwY,4EAAL;AACEu4B,QAAAA,SAAS,GAAGnU,GAAG,CAACmU,SAAhB;AACAoC,QAAAA,QAAQ,CAAC13B,OAAD,EAAUs1B,SAAV,CAAR;AACA;;AACF,WAAKv4B,oFAAL;AACEuE,QAAAA,MAAM,CAAC+0B,aAAP,CAAqBlV,GAArB,EAA0BnhB,OAA1B,EAAmCmvB,MAAnC;AACA;;AACF,WAAKpyB,kFAAL;AACEq+B,QAAAA,SAAS,CAACja,GAAD,EAAM7f,MAAM,CAACg2B,cAAP,EAAN,CAAT;AACA;;AACF,WAAKv6B,kFAAL;AACEi9B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB9Y,GAFqB,EAGrB1rC,IAAI,CAACmc,SAHgB,EAIrBnc,IAAI,CAACmc,SAAL,GAAiBnc,IAAI,CAACoc,aAJD,EAKrB,UAACmvB,OAAD;AAAA,iBAAa1f,MAAM,CAAC01B,OAAP,CAAehW,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKjkB,gFAAL;AACEq4B,QAAAA,SAAS,GAAG9zB,MAAM,CAAC21B,OAAP,EAAZ;AACAj6B,QAAAA,yDAAA,CAAiBgD,OAAjB,EAA0Bo1B,SAA1B,EAAqC,MAArC,EAA6C3/C,IAA7C;AACA6rB,QAAAA,MAAM,CAACi2B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBpzB,MAAM,CAACg2B,cAAP,EAAzC;AACAh2B,QAAAA,MAAM,CAACuzB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF,WAAKr4B,kFAAL;AACEi9B,QAAAA,uBAAuB,CAACC,UAAD,EAAa9Y,GAAb,EAAkB1rC,IAAI,CAACmc,SAAvB,EAAkCnc,IAAI,CAACmc,SAAvC,EAAkD,UAACovB,OAAD;AAAA,iBACvE1f,MAAM,CAAC01B,OAAP,CAAev/C,SAAf,EAA0BupC,OAAO,CAACA,OAAlC,CADuE;AAAA,SAAlD,CAAvB;AAGA;;AACF,WAAKjkB,gFAAL;AACEq4B,QAAAA,SAAS,GAAG9zB,MAAM,CAAC21B,OAAP,EAAZ;AACAj6B,QAAAA,mEAAA,CAA2BgD,OAA3B,EAAoCo1B,SAApC;AACA9zB,QAAAA,MAAM,CAACuzB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA9zB,QAAAA,MAAM,CAACi2B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBpzB,MAAM,CAACg2B,cAAP,EAAzC;AACA;;AACF,WAAKv6B,iFAAL;AACEi9B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB9Y,GAFqB,EAGrB1rC,IAAI,CAACmc,SAHgB,EAIrBnc,IAAI,CAACmc,SAAL,GAAiBnc,IAAI,CAACoc,aAJD,EAKrB,UAACmvB,OAAD;AAAA,iBAAa1f,MAAM,CAAC01B,OAAP,CAAehW,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKjkB,+EAAL;AACEq4B,QAAAA,SAAS,GAAG9zB,MAAM,CAAC21B,OAAP,EAAZ;AACAj6B,QAAAA,yDAAA,CAAiBgD,OAAjB,EAA0Bo1B,SAA1B,EAAqC,KAArC,EAA4C3/C,IAA5C;AACA6rB,QAAAA,MAAM,CAACi2B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBpzB,MAAM,CAACg2B,cAAP,EAAzC;AACAh2B,QAAAA,MAAM,CAACuzB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF,WAAKr4B,iFAAL;AACEi9B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB9Y,GAFqB,EAGrB1rC,IAAI,CAACmc,SAHgB,EAIrBnc,IAAI,CAACmc,SAAL,GAAiBnc,IAAI,CAACoc,aAJD,EAKrB,UAACmvB,OAAD;AAAA,iBAAa1f,MAAM,CAAC01B,OAAP,CAAehW,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKjkB,gFAAL;AACEi9B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB9Y,GAFqB,EAGrB1rC,IAAI,CAACmc,SAAL,GAAiBnc,IAAI,CAACoc,aAHD,EAIrBpc,IAAI,CAACmc,SAJgB,EAKrB,UAACovB,OAAD;AAAA,iBAAa1f,MAAM,CAAC61B,gBAAP,CAAwBnW,OAAxB,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKjkB,+EAAL;AACEq4B,QAAAA,SAAS,GAAG9zB,MAAM,CAAC21B,OAAP,EAAZ;AACAj6B,QAAAA,yDAAA,CAAiBgD,OAAjB,EAA0Bo1B,SAA1B,EAAqC,KAArC,EAA4C3/C,IAA5C;AACA6rB,QAAAA,MAAM,CAACi2B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBpzB,MAAM,CAACg2B,cAAP,EAAzC;AACAh2B,QAAAA,MAAM,CAACuzB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF,WAAKr4B,iFAAL;AACEi9B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB9Y,GAFqB,EAGrB1rC,IAAI,CAACmc,SAHgB,EAIrBnc,IAAI,CAACmc,SAAL,GAAiBnc,IAAI,CAACoc,aAJD,EAKrB,UAACmvB,OAAD;AAAA,iBAAa1f,MAAM,CAAC01B,OAAP,CAAehW,OAAf,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKjkB,+EAAL;AACEi9B,QAAAA,uBAAuB,CACrBC,UADqB,EAErB9Y,GAFqB,EAGrB1rC,IAAI,CAACmc,SAAL,GAAiBnc,IAAI,CAACoc,aAHD,EAIrBpc,IAAI,CAACmc,SAJgB,EAKrB,UAACovB,OAAD;AAAA,iBAAa1f,MAAM,CAAC61B,gBAAP,CAAwBnW,OAAxB,CAAb;AAAA,SALqB,CAAvB;AAOA;;AACF,WAAKjkB,+EAAL;AACEq4B,QAAAA,SAAS,GAAG9zB,MAAM,CAAC21B,OAAP,EAAZ;AACAj6B,QAAAA,yDAAA,CAAiBgD,OAAjB,EAA0Bo1B,SAA1B,EAAqC,KAArC,EAA4C3/C,IAA5C;AACA6rB,QAAAA,MAAM,CAACi2B,eAAP,CAAuBnC,SAAS,CAACV,KAAV,GAAkBpzB,MAAM,CAACg2B,cAAP,EAAzC;AACAh2B,QAAAA,MAAM,CAACuzB,MAAP,CAAcM,OAAd,CAAsBC,SAAtB;AACA;;AACF;AACE,YAAI;AACF;AACAC,UAAAA,QAAQ,GAAGlU,GAAG,CAACkU,QAAf;AACAA,UAAAA,QAAQ,CAACZ,MAAT,GAAkBnzB,MAAM,CAACg2B,cAAP,EAAlB;AACAjC,UAAAA,QAAQ,CAAC0D,aAAT,GAAyBA,aAAzB;AACA,cAAIL,UAAU,GAAGJ,YAAY,CAACt4B,OAAD,EAAUq1B,QAAV,CAA7B;AACAkG,UAAAA,cAAc,CAAC9kD,IAAf,CAAoB;AAAEilD,YAAAA,YAAY,EAAErG,QAAhB;AAA0BqD,YAAAA,UAAU,EAAEA;AAAtC,WAApB;AACAp3B,UAAAA,MAAM,CAACuzB,MAAP,CAAcvE,UAAd,CAAyB+E,QAAzB;AACD,SARD,CAQE,OAAOp1C,CAAP,EAAU;AACV/L,UAAAA,8CAAA,CAAU,6BAAV,EAAyC+L,CAAzC;AACD;;AA/GL,KAH8B,CAqH9B;;;AACA,QACE,CACE8c,kFADF,EAEEA,mFAFF,EAGEA,6EAHF,EAIEA,8EAJF,EAKEA,mFALF,EAMEA,oFANF,EAOEA,mFAPF,EAQEA,oFARF,EASE/P,QATF,CASWm0B,GAAG,CAAC58B,IATf,CADF,EAWE;AACAw0C,MAAAA,aAAa;AACd;AACF,GApID;AAsIAwC,EAAAA,cAAc,CAACrlD,OAAf,CAAuB,UAAC+J,CAAD;AAAA,WAAO64C,WAAW,CAAC94B,OAAD,EAAU/f,CAAC,CAACy7C,YAAZ,EAA0Bz7C,CAAC,CAACy4C,UAA5B,CAAlB;AAAA,GAAvB;;AAEA,MAAIjjD,IAAI,CAACwc,YAAT,EAAuB;AACrB;AACAqP,IAAAA,MAAM,CAACi2B,eAAP,CAAuB9hD,IAAI,CAACmc,SAAL,GAAiB,CAAxC;AACAonC,IAAAA,UAAU,CAACh5B,OAAD,EAAUmvB,MAAV,EAAkB8J,SAAlB,EAA6B33B,MAAM,CAACg2B,cAAP,EAA7B,EAAsD7hD,IAAtD,EAA4D25C,QAA5D,CAAV;AACA9tB,IAAAA,MAAM,CAACi2B,eAAP,CAAuB9hD,IAAI,CAACmc,SAA5B;AACAyiC,IAAAA,4DAAkB,CAACr0B,OAAD,EAAUsB,MAAM,CAACg2B,cAAP,EAAV,CAAlB;AACD,GAnNqC,CAqNtC;;;AACA,MAAIqE,eAAe,GAAGlC,eAAe,CAACz5B,OAAD,EAAUmvB,MAAV,EAAkB8J,SAAlB,EAA6Bz5B,GAA7B,CAArC;;AAEA,0BAAwB8B,MAAM,CAACm2B,SAAP,EAAxB;AAAA,MAAgBmE,GAAhB,qBAAQt6B,MAAR,CAxNsC,CA0NtC;;;AACAptB,EAAAA,8CAAA,CAAU,oCAAoCT,EAApC,GAAyC,cAAnD;AACA,MAAMooD,UAAU,GAAGhgC,6CAAS,CAAC,MAAMpoB,EAAN,GAAW,cAAZ,CAA5B;AACAooD,EAAAA,UAAU,CAAC9nD,IAAX,CAAgB,IAAhB,EAAsB6nD,GAAG,CAAClH,KAA1B,EA7NsC,CA+NtC;;AACA,MAAIoH,SAAS,GAAGF,GAAG,CAAClH,KAAJ,GAAYkH,GAAG,CAACnH,MAAhC;;AACA,MAAIqH,SAAS,GAAGH,eAAe,CAACltC,SAAhC,EAA2C;AACzCqtC,IAAAA,SAAS,GAAGH,eAAe,CAACltC,SAA5B;AACD;;AAED,MAAItW,MAAM,GAAG2jD,SAAS,GAAG,IAAIrmD,IAAI,CAACic,cAAlC;;AACA,MAAIjc,IAAI,CAACwc,YAAT,EAAuB;AACrB9Z,IAAAA,MAAM,GAAGA,MAAM,GAAG1C,IAAI,CAACmc,SAAd,GAA0Bnc,IAAI,CAAC0c,eAAxC;AACD,GAxOqC,CA0OtC;;;AACA,MAAI4pC,QAAQ,GAAGH,GAAG,CAACpH,KAAJ,GAAYoH,GAAG,CAACrH,MAA/B;;AACA,MAAIwH,QAAQ,GAAGJ,eAAe,CAACntC,QAA/B,EAAyC;AACvCutC,IAAAA,QAAQ,GAAGJ,eAAe,CAACntC,QAA3B;AACD;;AACD,MAAMtW,KAAK,GAAG6jD,QAAQ,GAAG,IAAItmD,IAAI,CAACgc,cAAlC;;AAEA,MAAIpE,KAAJ,EAAW;AACT2S,IAAAA,OAAO,CACJ3mB,MADH,CACU,MADV,EAEGrF,IAFH,CAEQqZ,KAFR,EAGGtZ,IAHH,CAGQ,GAHR,EAGa,CAAC6nD,GAAG,CAACpH,KAAJ,GAAYoH,GAAG,CAACrH,MAAjB,IAA2B,CAA3B,GAA+B,IAAI9+C,IAAI,CAACgc,cAHrD,EAIG1d,IAJH,CAIQ,GAJR,EAIa,CAAC,EAJd;AAKD;;AAEDqpB,EAAAA,wDAAgB,CAAC4C,OAAD,EAAU7nB,MAAV,EAAkBD,KAAlB,EAAyBzC,IAAI,CAAC4b,WAA9B,CAAhB;AAEA,MAAM2qC,iBAAiB,GAAG3uC,KAAK,GAAG,EAAH,GAAQ,CAAvC;AACA2S,EAAAA,OAAO,CAACjsB,IAAR,CACE,SADF,EAEE6nD,GAAG,CAACrH,MAAJ,GACE9+C,IAAI,CAACgc,cADP,GAEE,IAFF,IAGGhc,IAAI,CAACic,cAAL,GAAsBsqC,iBAHzB,IAIE,GAJF,GAKE9jD,KALF,GAME,GANF,IAOGC,MAAM,GAAG6jD,iBAPZ,CAFF;AAYA1oD,EAAAA,0DAAyB,CAACypB,8DAAD,EAAYiD,OAAZ,EAAqBvsB,EAArB,CAAzB;AACAS,EAAAA,8CAAA,YAAqBotB,MAAM,CAACuzB,MAA5B;AACD,CA1QM;AA4QP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM6F,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAUvL,MAAV,EAAkBC,QAAlB,EAA4B;AAC7D,MAAMqL,uBAAuB,GAAG,EAAhC;AAEArL,EAAAA,QAAQ,CAACl5C,OAAT,CAAiB,UAAUirC,GAAV,EAAe;AAC9B,QAAIgO,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAN,IAAkBvB,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAA5B,EAAwC;AACtC,UAAMC,KAAK,GAAGjB,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAApB,CADsC,CAGtC;;AACA,UAAIvP,GAAG,CAAC+R,SAAJ,KAAkBn2B,+EAAlB,IAAgD,CAACqzB,KAAK,CAAClB,SAA3D,EAAsE;AACpE;AACD,OANqC,CAQtC;;;AACA,UAAI/N,GAAG,CAAC+R,SAAJ,KAAkBn2B,gFAAlB,IAAiD,CAACqzB,KAAK,CAACN,SAA5D,EAAuE;AACrE;AACD;;AAED,UAAMmM,MAAM,GAAG9a,GAAG,CAAC+R,SAAJ,KAAkBz7C,SAAjC;AACA,UAAMykD,SAAS,GAAG,CAACD,MAAnB;AAEA,UAAME,QAAQ,GAAGF,MAAM,GAAG1oC,QAAQ,CAAC9d,IAAD,CAAX,GAAoB2d,WAAW,CAAC3d,IAAD,CAAtD;AACA,UAAI2mD,cAAc,GAAGjb,GAAG,CAACnuB,IAAJ,GACjB9W,wDAAA,CAAgBilC,GAAG,CAACH,OAApB,EAA6BvrC,IAAI,CAACyC,KAAL,GAAa,IAAIzC,IAAI,CAACwd,WAAnD,EAAgEkpC,QAAhE,CADiB,GAEjBhb,GAAG,CAACH,OAFR;AAGA,UAAMqb,iBAAiB,GAAGngD,sEAAA,CAA8BkgD,cAA9B,EAA8CD,QAA9C,CAA1B;AACA,UAAMG,YAAY,GAAGD,iBAAiB,CAACnkD,KAAlB,GAA0B,IAAIzC,IAAI,CAACwd,WAAxD;AAEA;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACM,UAAIipC,SAAS,IAAI/a,GAAG,CAACgP,IAAJ,KAAaC,KAAK,CAACN,SAApC,EAA+C;AAC7C2K,QAAAA,uBAAuB,CAACtZ,GAAG,CAACuP,EAAL,CAAvB,GAAkCnyC,IAAI,CAACmrB,GAAL,CAChC+wB,uBAAuB,CAACtZ,GAAG,CAACuP,EAAL,CAAvB,IAAmC,CADH,EAEhC4L,YAFgC,CAAlC;AAID,OALD,MAKO,IAAIJ,SAAS,IAAI/a,GAAG,CAACgP,IAAJ,KAAaC,KAAK,CAAClB,SAApC,EAA+C;AACpDuL,QAAAA,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,GAAoC5xC,IAAI,CAACmrB,GAAL,CAClC+wB,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,IAAqC,CADH,EAElCmM,YAFkC,CAApC;AAID,OALM,MAKA,IAAIJ,SAAS,IAAI/a,GAAG,CAACgP,IAAJ,KAAahP,GAAG,CAACuP,EAAlC,EAAsC;AAC3C+J,QAAAA,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,GAAoC5xC,IAAI,CAACmrB,GAAL,CAClC+wB,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,IAAqC,CADH,EAElCmM,YAAY,GAAG,CAFmB,CAApC;AAKA7B,QAAAA,uBAAuB,CAACtZ,GAAG,CAACuP,EAAL,CAAvB,GAAkCnyC,IAAI,CAACmrB,GAAL,CAChC+wB,uBAAuB,CAACtZ,GAAG,CAACuP,EAAL,CAAvB,IAAmC,CADH,EAEhC4L,YAAY,GAAG,CAFiB,CAAlC;AAID,OAVM,MAUA,IAAInb,GAAG,CAAC+R,SAAJ,KAAkBn2B,gFAAtB,EAAmD;AACxD09B,QAAAA,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,GAAoC5xC,IAAI,CAACmrB,GAAL,CAClC+wB,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,IAAqC,CADH,EAElCmM,YAFkC,CAApC;AAID,OALM,MAKA,IAAInb,GAAG,CAAC+R,SAAJ,KAAkBn2B,+EAAtB,EAAkD;AACvD09B,QAAAA,uBAAuB,CAACrK,KAAK,CAAClB,SAAP,CAAvB,GAA2C3wC,IAAI,CAACmrB,GAAL,CACzC+wB,uBAAuB,CAACrK,KAAK,CAAClB,SAAP,CAAvB,IAA4C,CADH,EAEzCoN,YAFyC,CAA3C;AAID,OALM,MAKA,IAAInb,GAAG,CAAC+R,SAAJ,KAAkBn2B,6EAAtB,EAAgD;AACrD,YAAIqzB,KAAK,CAAClB,SAAV,EAAqB;AACnBuL,UAAAA,uBAAuB,CAACrK,KAAK,CAAClB,SAAP,CAAvB,GAA2C3wC,IAAI,CAACmrB,GAAL,CACzC+wB,uBAAuB,CAACrK,KAAK,CAAClB,SAAP,CAAvB,IAA4C,CADH,EAEzCoN,YAAY,GAAG,CAF0B,CAA3C;AAID;;AAED,YAAIlM,KAAK,CAACN,SAAV,EAAqB;AACnB2K,UAAAA,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,GAAoC5xC,IAAI,CAACmrB,GAAL,CAClC+wB,uBAAuB,CAACtZ,GAAG,CAACgP,IAAL,CAAvB,IAAqC,CADH,EAElCmM,YAAY,GAAG,CAFmB,CAApC;AAID;AACF;AACF;AACF,GAtFD;AAwFApoD,EAAAA,8CAAA,CAAU,0BAAV,EAAsCumD,uBAAtC;AACA,SAAOA,uBAAP;AACD,CA7FD;;AA+FA,IAAMd,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUvJ,KAAV,EAAiB;AAC7C,MAAImM,kBAAkB,GAAG,CAAzB;AACA,MAAMJ,QAAQ,GAAG3oC,SAAS,CAAC/d,IAAD,CAA1B;;AACA,OAAK,IAAIU,GAAT,IAAgBi6C,KAAK,CAAClc,KAAtB,EAA6B;AAC3B,QAAIsoB,eAAe,GAAGtgD,sEAAA,CAA8B/F,GAA9B,EAAmCgmD,QAAnC,CAAtB;AACA,QAAIM,UAAU,GAAGD,eAAe,CAACtkD,KAAhB,GAAwB,IAAIzC,IAAI,CAACwd,WAAjC,GAA+C,IAAIxd,IAAI,CAACmc,SAAzE;;AACA,QAAI2qC,kBAAkB,GAAGE,UAAzB,EAAqC;AACnCF,MAAAA,kBAAkB,GAAGE,UAArB;AACD;AACF;;AAED,SAAOF,kBAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM5B,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUxL,MAAV,EAAkBuN,mBAAlB,EAAuC;AACnE,MAAIjuC,SAAS,GAAG,CAAhB;AACAna,EAAAA,MAAM,CAAC0B,IAAP,CAAYm5C,MAAZ,EAAoBj5C,OAApB,CAA4B,UAACymD,IAAD,EAAU;AACpC,QAAMvM,KAAK,GAAGjB,MAAM,CAACwN,IAAD,CAApB;;AACA,QAAIvM,KAAK,CAACp9B,IAAV,EAAgB;AACdo9B,MAAAA,KAAK,CAACv8C,WAAN,GAAoBqI,wDAAA,CAClBk0C,KAAK,CAACv8C,WADY,EAElB4B,IAAI,CAACyC,KAAL,GAAa,IAAIzC,IAAI,CAACwd,WAFJ,EAGlBO,SAAS,CAAC/d,IAAD,CAHS,CAApB;AAKD;;AACD,QAAMmnD,OAAO,GAAG1gD,sEAAA,CAA8Bk0C,KAAK,CAACv8C,WAApC,EAAiD2f,SAAS,CAAC/d,IAAD,CAA1D,CAAhB;AACA26C,IAAAA,KAAK,CAACl4C,KAAN,GAAck4C,KAAK,CAACp9B,IAAN,GACVvd,IAAI,CAACyC,KADK,GAEVqG,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAd,EAAqB0kD,OAAO,CAAC1kD,KAAR,GAAgB,IAAIzC,IAAI,CAACwd,WAA9C,CAFJ;AAIAm9B,IAAAA,KAAK,CAACj4C,MAAN,GAAei4C,KAAK,CAACp9B,IAAN,GAAazU,IAAI,CAACmrB,GAAL,CAASkzB,OAAO,CAACzkD,MAAjB,EAAyB1C,IAAI,CAAC0C,MAA9B,CAAb,GAAqD1C,IAAI,CAAC0C,MAAzE;AACAsW,IAAAA,SAAS,GAAGlQ,IAAI,CAACmrB,GAAL,CAASjb,SAAT,EAAoB2hC,KAAK,CAACj4C,MAA1B,CAAZ;AACD,GAhBD;;AAkBA,OAAK,IAAIkhD,QAAT,IAAqBqD,mBAArB,EAA0C;AACxC,QAAMtM,KAAK,GAAGjB,MAAM,CAACkK,QAAD,CAApB;;AAEA,QAAI,CAACjJ,KAAL,EAAY;AACV;AACD;;AAED,QAAMN,SAAS,GAAGX,MAAM,CAACiB,KAAK,CAACN,SAAP,CAAxB,CAPwC,CASxC;;AACA,QAAI,CAACA,SAAL,EAAgB;AACd;AACD;;AAED,QAAMwM,YAAY,GAAGI,mBAAmB,CAACrD,QAAD,CAAxC;AACA,QAAMwD,UAAU,GAAGP,YAAY,GAAG7mD,IAAI,CAACkc,WAApB,GAAkCy+B,KAAK,CAACl4C,KAAN,GAAc,CAAhD,GAAoD43C,SAAS,CAAC53C,KAAV,GAAkB,CAAzF;AAEAk4C,IAAAA,KAAK,CAACvI,MAAN,GAAetpC,IAAI,CAACmrB,GAAL,CAASmzB,UAAT,EAAqBpnD,IAAI,CAACkc,WAA1B,CAAf;AACD;;AAED,SAAOpT,IAAI,CAACmrB,GAAL,CAASjb,SAAT,EAAoBhZ,IAAI,CAAC0C,MAAzB,CAAP;AACD,CAzCD;;AA2CA,IAAM2kD,cAAc,GAAG,SAAjBA,cAAiB,CAAU3b,GAAV,EAAegO,MAAf,EAAuB;AAC5C,MAAIoF,MAAM,GAAGpF,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBv3C,CAA9B;AACA,MAAI47C,KAAK,GAAGrF,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAN,CAAe93C,CAA3B;AACA,MAAImkD,UAAU,GAAG5b,GAAG,CAACnuB,IAAJ,IAAYmuB,GAAG,CAACH,OAAjC;AAEA,MAAIgc,cAAc,GAAG9gD,sEAAA,CACnB6gD,UAAU,GAAG7gD,wDAAA,CAAgBilC,GAAG,CAACH,OAApB,EAA6BvrC,IAAI,CAACyC,KAAlC,EAAyCqb,QAAQ,CAAC9d,IAAD,CAAjD,CAAH,GAA8D0rC,GAAG,CAACH,OADzD,EAEnBztB,QAAQ,CAAC9d,IAAD,CAFW,CAArB;AAIA,MAAI6/C,SAAS,GAAG;AACdp9C,IAAAA,KAAK,EAAE6kD,UAAU,GACbtnD,IAAI,CAACyC,KADQ,GAEbqG,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAd,EAAqB8kD,cAAc,CAAC9kD,KAAf,GAAuB,IAAIzC,IAAI,CAACqc,UAArD,CAHU;AAId3Z,IAAAA,MAAM,EAAE,CAJM;AAKdo8C,IAAAA,MAAM,EAAEpF,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBv3C,CALX;AAMd47C,IAAAA,KAAK,EAAE,CANO;AAOdC,IAAAA,MAAM,EAAE,CAPM;AAQdC,IAAAA,KAAK,EAAE,CARO;AASd1T,IAAAA,OAAO,EAAEG,GAAG,CAACH;AATC,GAAhB;;AAWA,MAAIG,GAAG,CAAC+R,SAAJ,KAAkBn2B,gFAAtB,EAAmD;AACjDu4B,IAAAA,SAAS,CAACp9C,KAAV,GAAkB6kD,UAAU,GACxBx+C,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAd,EAAqB8kD,cAAc,CAAC9kD,KAApC,CADwB,GAExBqG,IAAI,CAACmrB,GAAL,CACEylB,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyB,CAAzB,GAA6Bi3C,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAN,CAAex4C,KAAf,GAAuB,CADtD,EAEE8kD,cAAc,CAAC9kD,KAAf,GAAuB,IAAIzC,IAAI,CAACqc,UAFlC,CAFJ;AAMAwjC,IAAAA,SAAS,CAACf,MAAV,GAAmBA,MAAM,GAAG,CAACpF,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyBzC,IAAI,CAACkc,WAA/B,IAA8C,CAA1E;AACD,GARD,MAQO,IAAIwvB,GAAG,CAAC+R,SAAJ,KAAkBn2B,+EAAtB,EAAkD;AACvDu4B,IAAAA,SAAS,CAACp9C,KAAV,GAAkB6kD,UAAU,GACxBx+C,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAd,EAAqB8kD,cAAc,CAAC9kD,KAAf,GAAuB,IAAIzC,IAAI,CAACqc,UAArD,CADwB,GAExBvT,IAAI,CAACmrB,GAAL,CACEylB,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyB,CAAzB,GAA6Bi3C,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAN,CAAex4C,KAAf,GAAuB,CADtD,EAEE8kD,cAAc,CAAC9kD,KAAf,GAAuB,IAAIzC,IAAI,CAACqc,UAFlC,CAFJ;AAMAwjC,IAAAA,SAAS,CAACf,MAAV,GAAmBA,MAAM,GAAGe,SAAS,CAACp9C,KAAnB,GAA2B,CAACi3C,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyBzC,IAAI,CAACkc,WAA/B,IAA8C,CAA5F;AACD,GARM,MAQA,IAAIwvB,GAAG,CAACuP,EAAJ,KAAWvP,GAAG,CAACgP,IAAnB,EAAyB;AAC9B6M,IAAAA,cAAc,GAAG9gD,sEAAA,CACf6gD,UAAU,GACN7gD,wDAAA,CAAgBilC,GAAG,CAACH,OAApB,EAA6BziC,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAd,EAAqBi3C,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAtC,CAA7B,EAA2Eqb,QAAQ,CAAC9d,IAAD,CAAnF,CADM,GAEN0rC,GAAG,CAACH,OAHO,EAIfztB,QAAQ,CAAC9d,IAAD,CAJO,CAAjB;AAMA6/C,IAAAA,SAAS,CAACp9C,KAAV,GAAkB6kD,UAAU,GACxBx+C,IAAI,CAACmrB,GAAL,CAASj0B,IAAI,CAACyC,KAAd,EAAqBi3C,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAtC,CADwB,GAExBqG,IAAI,CAACmrB,GAAL,CAASylB,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAA1B,EAAiCzC,IAAI,CAACyC,KAAtC,EAA6C8kD,cAAc,CAAC9kD,KAAf,GAAuB,IAAIzC,IAAI,CAACqc,UAA7E,CAFJ;AAGAwjC,IAAAA,SAAS,CAACf,MAAV,GAAmBA,MAAM,GAAG,CAACpF,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyBo9C,SAAS,CAACp9C,KAApC,IAA6C,CAAzE;AACD,GAXM,MAWA;AACLo9C,IAAAA,SAAS,CAACp9C,KAAV,GACEqG,IAAI,CAACC,GAAL,CAAS+1C,MAAM,GAAGpF,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyB,CAAlC,IAAuCs8C,KAAK,GAAGrF,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAN,CAAex4C,KAAf,GAAuB,CAAtE,CAAT,IACAzC,IAAI,CAACkc,WAFP;AAGA2jC,IAAAA,SAAS,CAACf,MAAV,GACEA,MAAM,GAAGC,KAAT,GACID,MAAM,GAAGpF,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAN,CAAiBj4C,KAAjB,GAAyB,CAAlC,GAAsCzC,IAAI,CAACkc,WAAL,GAAmB,CAD7D,GAEI6iC,KAAK,GAAGrF,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAN,CAAex4C,KAAf,GAAuB,CAA/B,GAAmCzC,IAAI,CAACkc,WAAL,GAAmB,CAH5D;AAID;;AACD,MAAIorC,UAAJ,EAAgB;AACdzH,IAAAA,SAAS,CAACtU,OAAV,GAAoB9kC,wDAAA,CAClBilC,GAAG,CAACH,OADc,EAElBsU,SAAS,CAACp9C,KAAV,GAAkB,IAAIzC,IAAI,CAACwd,WAFT,EAGlBM,QAAQ,CAAC9d,IAAD,CAHU,CAApB;AAKD;;AACDvB,EAAAA,8CAAA,eACSohD,SAAS,CAACf,MADnB,cAC6Be,SAAS,CAACd,KADvC,cACgDc,SAAS,CAACb,MAD1D,cACoEa,SAAS,CAACZ,KAD9E,cACuFY,SAAS,CAACp9C,KADjG,cAC0Go9C,SAAS,CAACn9C,MADpH,cAC8HgpC,GAAG,CAACH,OADlI;AAGA,SAAOsU,SAAP;AACD,CAnED;;AAqEA,IAAM2H,iBAAiB,GAAG,SAApBA,iBAAoB,CAAU9b,GAAV,EAAegO,MAAf,EAAuB;AAC/C,MAAI+N,OAAO,GAAG,KAAd;;AACA,MACE,CACEngC,kFADF,EAEEA,mFAFF,EAGEA,6EAHF,EAIEA,8EAJF,EAKEA,mFALF,EAMEA,oFANF,EAOEA,mFAPF,EAQEA,oFARF,EASE/P,QATF,CASWm0B,GAAG,CAAC58B,IATf,CADF,EAWE;AACA24C,IAAAA,OAAO,GAAG,IAAV;AACD;;AACD,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AACD,MAAMtE,UAAU,GAAGkB,gBAAgB,CAAC3Y,GAAG,CAACgP,IAAL,EAAWhB,MAAX,CAAnC;AACA,MAAM0J,QAAQ,GAAGiB,gBAAgB,CAAC3Y,GAAG,CAACuP,EAAL,EAASvB,MAAT,CAAjC;AACA,MAAMgO,OAAO,GAAGvE,UAAU,CAAC,CAAD,CAAV,IAAiBC,QAAQ,CAAC,CAAD,CAAzB,GAA+B,CAA/B,GAAmC,CAAnD;AACA,MAAMuE,KAAK,GAAGxE,UAAU,CAAC,CAAD,CAAV,GAAgBC,QAAQ,CAAC,CAAD,CAAxB,GAA8B,CAA9B,GAAkC,CAAhD;AACA,MAAMwE,SAAS,GAAGzE,UAAU,CAACvvC,MAAX,CAAkBwvC,QAAlB,CAAlB;AACA,MAAMyE,YAAY,GAAG/+C,IAAI,CAACC,GAAL,CAASq6C,QAAQ,CAACuE,KAAD,CAAR,GAAkBxE,UAAU,CAACuE,OAAD,CAArC,CAArB;;AACA,MAAIhc,GAAG,CAACnuB,IAAJ,IAAYmuB,GAAG,CAACH,OAApB,EAA6B;AAC3BG,IAAAA,GAAG,CAACH,OAAJ,GAAc9kC,wDAAA,CACZilC,GAAG,CAACH,OADQ,EAEZziC,IAAI,CAACmrB,GAAL,CAAS4zB,YAAY,GAAG,IAAI7nD,IAAI,CAACwd,WAAjC,EAA8Cxd,IAAI,CAACyC,KAAnD,CAFY,EAGZkb,WAAW,CAAC3d,IAAD,CAHC,CAAd;AAKD;;AACD,MAAM8nD,OAAO,GAAGrhD,sEAAA,CAA8BilC,GAAG,CAACH,OAAlC,EAA2C5tB,WAAW,CAAC3d,IAAD,CAAtD,CAAhB;AAEA,SAAO;AACLyC,IAAAA,KAAK,EAAEqG,IAAI,CAACmrB,GAAL,CACLyX,GAAG,CAACnuB,IAAJ,GAAW,CAAX,GAAeuqC,OAAO,CAACrlD,KAAR,GAAgB,IAAIzC,IAAI,CAACwd,WADnC,EAELqqC,YAAY,GAAG,IAAI7nD,IAAI,CAACwd,WAFnB,EAGLxd,IAAI,CAACyC,KAHA,CADF;AAMLC,IAAAA,MAAM,EAAE,CANH;AAOLo8C,IAAAA,MAAM,EAAEqE,UAAU,CAACuE,OAAD,CAPb;AAQL3I,IAAAA,KAAK,EAAEqE,QAAQ,CAACuE,KAAD,CARV;AASL3I,IAAAA,MAAM,EAAE,CATH;AAULC,IAAAA,KAAK,EAAE,CAVF;AAWL1T,IAAAA,OAAO,EAAEG,GAAG,CAACH,OAXR;AAYLz8B,IAAAA,IAAI,EAAE48B,GAAG,CAAC58B,IAZL;AAaLyO,IAAAA,IAAI,EAAEmuB,GAAG,CAACnuB,IAbL;AAcL4lC,IAAAA,UAAU,EAAEr6C,IAAI,CAAC6I,GAAL,CAASmoB,KAAT,CAAe,IAAf,EAAqB8tB,SAArB,CAdP;AAeLxE,IAAAA,QAAQ,EAAEt6C,IAAI,CAACmrB,GAAL,CAAS6F,KAAT,CAAe,IAAf,EAAqB8tB,SAArB;AAfL,GAAP;AAiBD,CAnDD;;AAqDA,IAAMtC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAU3L,QAAV,EAAoBD,MAApB,EAA4B;AACtD,MAAM4F,KAAK,GAAG,EAAd;AACA,MAAMyI,KAAK,GAAG,EAAd;AACA,MAAIC,OAAJ,EAAanI,SAAb,EAAwBD,QAAxB;AAEAjG,EAAAA,QAAQ,CAACl5C,OAAT,CAAiB,UAAUirC,GAAV,EAAe;AAC9BA,IAAAA,GAAG,CAAC1tC,EAAJ,GAASyI,qDAAA,CAAa;AAAEhH,MAAAA,MAAM,EAAE;AAAV,KAAb,CAAT;;AACA,YAAQisC,GAAG,CAAC58B,IAAZ;AACE,WAAKwY,kFAAL;AACA,WAAKA,iFAAL;AACA,WAAKA,iFAAL;AACA,WAAKA,iFAAL;AACEygC,QAAAA,KAAK,CAAC/mD,IAAN,CAAW;AACThD,UAAAA,EAAE,EAAE0tC,GAAG,CAAC1tC,EADC;AAET0tC,UAAAA,GAAG,EAAEA,GAAG,CAACH,OAFA;AAGTmP,UAAAA,IAAI,EAAElvC,MAAM,CAACy8C,gBAHJ;AAIThN,UAAAA,EAAE,EAAEzvC,MAAM,CAAC08C,gBAJF;AAKTzlD,UAAAA,KAAK,EAAE;AALE,SAAX;AAOA;;AACF,WAAK6kB,gFAAL;AACA,WAAKA,+EAAL;AACE,YAAIokB,GAAG,CAACH,OAAR,EAAiB;AACfyc,UAAAA,OAAO,GAAGD,KAAK,CAACtG,GAAN,EAAV;AACAnC,UAAAA,KAAK,CAAC0I,OAAO,CAAChqD,EAAT,CAAL,GAAoBgqD,OAApB;AACA1I,UAAAA,KAAK,CAAC5T,GAAG,CAAC1tC,EAAL,CAAL,GAAgBgqD,OAAhB;AACAD,UAAAA,KAAK,CAAC/mD,IAAN,CAAWgnD,OAAX;AACD;;AACD;;AACF,WAAK1gC,gFAAL;AACA,WAAKA,+EAAL;AACA,WAAKA,+EAAL;AACA,WAAKA,+EAAL;AACE0gC,QAAAA,OAAO,GAAGD,KAAK,CAACtG,GAAN,EAAV;AACAnC,QAAAA,KAAK,CAAC0I,OAAO,CAAChqD,EAAT,CAAL,GAAoBgqD,OAApB;AACA;;AACF,WAAK1gC,oFAAL;AACE;AACE,cAAMu5B,SAAS,GAAGnH,MAAM,CAAChO,GAAG,CAACgP,IAAJ,GAAWhP,GAAG,CAACgP,IAAJ,CAASC,KAApB,GAA4BjP,GAAG,CAACuP,EAAJ,CAAON,KAApC,CAAxB;AACA,cAAMmG,WAAW,GAAGC,gBAAgB,CAACrV,GAAG,CAACgP,IAAJ,GAAWhP,GAAG,CAACgP,IAAJ,CAASC,KAApB,GAA4BjP,GAAG,CAACuP,EAAJ,CAAON,KAApC,CAAhB,CAA2Dl7C,MAA/E;AACA,cAAM0D,CAAC,GACL09C,SAAS,CAAC19C,CAAV,GAAc09C,SAAS,CAACp+C,KAAV,GAAkB,CAAhC,GAAqC,CAACq+C,WAAW,GAAG,CAAf,IAAoB9gD,IAAI,CAAC+b,eAA1B,GAA6C,CADnF;AAEA,cAAMosC,KAAK,GAAG;AACZrJ,YAAAA,MAAM,EAAE37C,CADI;AAEZ47C,YAAAA,KAAK,EAAE57C,CAAC,GAAGnD,IAAI,CAAC+b,eAFJ;AAGZ4+B,YAAAA,KAAK,EAAEjP,GAAG,CAACgP,IAAJ,CAASC,KAHJ;AAIZyN,YAAAA,OAAO,EAAE;AAJG,WAAd;AAMAv8B,UAAAA,MAAM,CAACszB,WAAP,CAAmBn+C,IAAnB,CAAwBmnD,KAAxB;AACD;AACD;;AACF,WAAK7gC,kFAAL;AACE;AACE,cAAM65B,sBAAsB,GAAGt1B,MAAM,CAACszB,WAAP,CAC5BrpC,GAD4B,CACxB,UAACuZ,CAAD;AAAA,mBAAOA,CAAC,CAACsrB,KAAT;AAAA,WADwB,EAE5B0G,WAF4B,CAEhB3V,GAAG,CAACgP,IAAJ,CAASC,KAFO,CAA/B;AAGA,iBAAO9uB,MAAM,CAACszB,WAAP,CAAmBnS,MAAnB,CAA0BmU,sBAA1B,EAAkD,CAAlD,EAAqD,CAArD,CAAP;AACD;AACD;AAnDJ;;AAqDA,QAAMqF,MAAM,GAAG9a,GAAG,CAAC+R,SAAJ,KAAkBz7C,SAAjC;;AACA,QAAIwkD,MAAJ,EAAY;AACV3G,MAAAA,SAAS,GAAGwH,cAAc,CAAC3b,GAAD,EAAMgO,MAAN,CAA1B;AACAhO,MAAAA,GAAG,CAACmU,SAAJ,GAAgBA,SAAhB;AACAkI,MAAAA,KAAK,CAACtnD,OAAN,CAAc,UAAC4nD,GAAD,EAAS;AACrBL,QAAAA,OAAO,GAAGK,GAAV;AACAL,QAAAA,OAAO,CAACtN,IAAR,GAAe5xC,IAAI,CAAC6I,GAAL,CAASq2C,OAAO,CAACtN,IAAjB,EAAuBmF,SAAS,CAACf,MAAjC,CAAf;AACAkJ,QAAAA,OAAO,CAAC/M,EAAR,GAAanyC,IAAI,CAACmrB,GAAL,CAAS+zB,OAAO,CAAC/M,EAAjB,EAAqB4E,SAAS,CAACf,MAAV,GAAmBe,SAAS,CAACp9C,KAAlD,CAAb;AACAulD,QAAAA,OAAO,CAACvlD,KAAR,GACEqG,IAAI,CAACmrB,GAAL,CAAS+zB,OAAO,CAACvlD,KAAjB,EAAwBqG,IAAI,CAACC,GAAL,CAASi/C,OAAO,CAACtN,IAAR,GAAesN,OAAO,CAAC/M,EAAhC,CAAxB,IAA+Dj7C,IAAI,CAACyd,aADtE;AAED,OAND;AAOD,KAVD,MAUO;AACLmiC,MAAAA,QAAQ,GAAG4H,iBAAiB,CAAC9b,GAAD,EAAMgO,MAAN,CAA5B;AACAhO,MAAAA,GAAG,CAACkU,QAAJ,GAAeA,QAAf;;AACA,UAAIA,QAAQ,CAACd,MAAT,IAAmBc,QAAQ,CAACb,KAA5B,IAAqCgJ,KAAK,CAACtoD,MAAN,GAAe,CAAxD,EAA2D;AACzDsoD,QAAAA,KAAK,CAACtnD,OAAN,CAAc,UAAC4nD,GAAD,EAAS;AACrBL,UAAAA,OAAO,GAAGK,GAAV;;AACA,cAAIzI,QAAQ,CAACd,MAAT,KAAoBc,QAAQ,CAACb,KAAjC,EAAwC;AACtC,gBAAIrE,IAAI,GAAGhB,MAAM,CAAChO,GAAG,CAACgP,IAAL,CAAjB;AACA,gBAAIO,EAAE,GAAGvB,MAAM,CAAChO,GAAG,CAACuP,EAAL,CAAf;AACA+M,YAAAA,OAAO,CAACtN,IAAR,GAAe5xC,IAAI,CAAC6I,GAAL,CACb+oC,IAAI,CAACv3C,CAAL,GAASy8C,QAAQ,CAACn9C,KAAT,GAAiB,CADb,EAEbi4C,IAAI,CAACv3C,CAAL,GAASu3C,IAAI,CAACj4C,KAAL,GAAa,CAFT,EAGbulD,OAAO,CAACtN,IAHK,CAAf;AAKAsN,YAAAA,OAAO,CAAC/M,EAAR,GAAanyC,IAAI,CAACmrB,GAAL,CAASgnB,EAAE,CAAC93C,CAAH,GAAOy8C,QAAQ,CAACn9C,KAAT,GAAiB,CAAjC,EAAoCw4C,EAAE,CAAC93C,CAAH,GAAOu3C,IAAI,CAACj4C,KAAL,GAAa,CAAxD,EAA2DulD,OAAO,CAAC/M,EAAnE,CAAb;AACA+M,YAAAA,OAAO,CAACvlD,KAAR,GACEqG,IAAI,CAACmrB,GAAL,CAAS+zB,OAAO,CAACvlD,KAAjB,EAAwBqG,IAAI,CAACC,GAAL,CAASi/C,OAAO,CAAC/M,EAAR,GAAa+M,OAAO,CAACtN,IAA9B,CAAxB,IAA+D16C,IAAI,CAACyd,aADtE;AAED,WAXD,MAWO;AACLuqC,YAAAA,OAAO,CAACtN,IAAR,GAAe5xC,IAAI,CAAC6I,GAAL,CAASiuC,QAAQ,CAACd,MAAlB,EAA0BkJ,OAAO,CAACtN,IAAlC,CAAf;AACAsN,YAAAA,OAAO,CAAC/M,EAAR,GAAanyC,IAAI,CAACmrB,GAAL,CAAS2rB,QAAQ,CAACb,KAAlB,EAAyBiJ,OAAO,CAAC/M,EAAjC,CAAb;AACA+M,YAAAA,OAAO,CAACvlD,KAAR,GAAgBqG,IAAI,CAACmrB,GAAL,CAAS+zB,OAAO,CAACvlD,KAAjB,EAAwBm9C,QAAQ,CAACn9C,KAAjC,IAA0CzC,IAAI,CAACyd,aAA/D;AACD;AACF,SAlBD;AAmBD;AACF;AACF,GA3FD;AA4FAoO,EAAAA,MAAM,CAACszB,WAAP,GAAqB,EAArB;AACA1gD,EAAAA,8CAAA,CAAU,mBAAV,EAA+B6gD,KAA/B;AACA,SAAOA,KAAP;AACD,CApGD;;AAsGA,iEAAe;AACbzzB,EAAAA,MAAM,EAANA,MADa;AAEb03B,EAAAA,UAAU,EAAVA,UAFa;AAGbS,EAAAA,eAAe,EAAfA,eAHa;AAIbz6B,EAAAA,OAAO,EAAPA,OAJa;AAKbE,EAAAA,IAAI,EAAJA;AALa,CAAf;;;;;;;;;;;;;;;ACluCA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,yCAEJA,OAAO,CAACgoD,WAFJ,0BAGNhoD,OAAO,CAACioD,QAHF,yDAONjoD,OAAO,CAACkoD,cAPF,uEAYJloD,OAAO,CAACmoD,cAZJ,2GAkBJnoD,OAAO,CAACooD,WAlBJ,2GAwBJpoD,OAAO,CAACooD,WAxBJ,sDA4BNpoD,OAAO,CAACooD,WA5BF,4BA6BJpoD,OAAO,CAACooD,WA7BJ,sDAiCNpoD,OAAO,CAACqoD,mBAjCF,sDAqCNroD,OAAO,CAACooD,WArCF,sDAyCNpoD,OAAO,CAACooD,WAzCF,4BA0CJpoD,OAAO,CAACooD,WA1CJ,mDA8CNpoD,OAAO,CAACsoD,eA9CF,4BA+CJtoD,OAAO,CAACsoD,eA/CJ,kDAmDJtoD,OAAO,CAACuoD,mBAnDJ,0BAoDNvoD,OAAO,CAACwoD,gBApDF,qEAwDNxoD,OAAO,CAACyoD,cAxDF,sFA6DNzoD,OAAO,CAAC0oD,aA7DF,0HAoEJ1oD,OAAO,CAACuoD,mBApEJ,0BAqENvoD,OAAO,CAACuoD,mBArEF,sEA0EJvoD,OAAO,CAAC2oD,eA1EJ,0BA2EN3oD,OAAO,CAAC4oD,YA3EF,mEA+EN5oD,OAAO,CAAC6oD,aA/EF,sEAoFN7oD,OAAO,CAAC8oD,kBApFF,4BAqFJ9oD,OAAO,CAAC+oD,qBArFJ,mDAyFN/oD,OAAO,CAAC8oD,kBAzFF,4BA0FJ9oD,OAAO,CAAC+oD,qBA1FJ,mDA8FN/oD,OAAO,CAAC8oD,kBA9FF,4BA+FJ9oD,OAAO,CAAC+oD,qBA/FJ,yIAwGN/oD,OAAO,CAACioD,QAxGF,+JA6GJjoD,OAAO,CAACgoD,WA7GJ,0BA8GNhoD,OAAO,CAACioD,QA9GF,8DAiHJjoD,OAAO,CAACgoD,WAjHJ,0BAkHNhoD,OAAO,CAACioD,QAlHF;AAAA,CAAlB;;AAuHA,iEAAe19B,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AAEO,IAAMu3B,QAAQ,GAAG,SAAXA,QAAW,CAAUn+C,IAAV,EAAgBm2C,QAAhB,EAA0B;AAChD,MAAM+H,QAAQ,GAAGl+C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACAu+C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,GAAd,EAAmB87C,QAAQ,CAACj3C,CAA5B;AACAg/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,GAAd,EAAmB87C,QAAQ,CAACh3C,CAA5B;AACA++C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,MAAd,EAAsB87C,QAAQ,CAAC55B,IAA/B;AACA2hC,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwB87C,QAAQ,CAAC75B,MAAjC;AACA4hC,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,OAAd,EAAuB87C,QAAQ,CAAC33C,KAAhC;AACA0/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwB87C,QAAQ,CAAC13C,MAAjC;AACAy/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,IAAd,EAAoB87C,QAAQ,CAACn3C,EAA7B;AACAk/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,IAAd,EAAoB87C,QAAQ,CAACl3C,EAA7B;;AAEA,MAAI,OAAOk3C,QAAQ,CAACz4C,KAAhB,KAA0B,WAA9B,EAA2C;AACzCwgD,IAAAA,QAAQ,CAAC7jD,IAAT,CAAc,OAAd,EAAuB87C,QAAQ,CAACz4C,KAAhC;AACD;;AAED,SAAOwgD,QAAP;AACD,CAhBM,EAkBP;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMoH,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACvrD,EAAD,EAAKm8C,QAAL,EAAkB;AAC5CmP,EAAAA,2DAAW,CAAC,YAAM;AAChB,QAAMpgB,GAAG,GAAGjkC,QAAQ,CAACglB,gBAAT,CAA0BjsB,EAA1B,CAAZ,CADgB,CAEhB;;AACA,QAAIkrC,GAAG,CAACzpC,MAAJ,KAAe,CAAnB,EAAsB;AACtBypC,IAAAA,GAAG,CAAC,CAAD,CAAH,CAAO5jB,gBAAP,CAAwB,WAAxB,EAAqC,YAAY;AAC/CkkC,MAAAA,eAAe,CAAC,UAAUrP,QAAV,GAAqB,QAAtB,CAAf;AACD,KAFD;AAGAjR,IAAAA,GAAG,CAAC,CAAD,CAAH,CAAO5jB,gBAAP,CAAwB,UAAxB,EAAoC,YAAY;AAC9CmkC,MAAAA,iBAAiB,CAAC,UAAUtP,QAAV,GAAqB,QAAtB,CAAjB;AACD,KAFD;AAGD,GAVU,CAAX;AAWD,CAZD;;AAaO,IAAMiK,SAAS,GAAG,SAAZA,SAAY,CAAUngD,IAAV,EAAgB02C,KAAhB,EAAuBsJ,YAAvB,EAAqCyF,SAArC,EAAgDjtC,UAAhD,EAA4D;AACnF,MAAIk+B,KAAK,CAAClc,KAAN,KAAgBz8B,SAAhB,IAA6B24C,KAAK,CAAClc,KAAN,KAAgB,IAA7C,IAAqD5/B,MAAM,CAAC0B,IAAP,CAAYo6C,KAAK,CAAClc,KAAlB,EAAyBh/B,MAAzB,KAAoC,CAA7F,EAAgG;AAC9F,WAAO;AAAEiD,MAAAA,MAAM,EAAE,CAAV;AAAaD,MAAAA,KAAK,EAAE;AAApB,KAAP;AACD;;AAED,MAAMg8B,KAAK,GAAGkc,KAAK,CAAClc,KAApB;AACA,MAAM0b,QAAQ,GAAGQ,KAAK,CAACR,QAAvB;AACA,MAAMC,QAAQ,GAAGO,KAAK,CAACP,QAAvB;AAEA,MAAIuP,YAAY,GAAG,MAAnB;;AACA,MAAIltC,UAAJ,EAAgB;AACdktC,IAAAA,YAAY,GAAG,kBAAf;AACD;;AAED,MAAM5hC,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;AACAmkB,EAAAA,CAAC,CAACzpB,IAAF,CAAO,IAAP,EAAa,UAAU67C,QAAV,GAAqB,QAAlC;AACApyB,EAAAA,CAAC,CAACzpB,IAAF,CAAO,OAAP,EAAgB,gBAAhB;AACAypB,EAAAA,CAAC,CAACzpB,IAAF,CAAO,SAAP,EAAkBqrD,YAAlB;AACAJ,EAAAA,mBAAmB,CAAC,WAAWpP,QAAX,GAAsB,QAAvB,EAAiCA,QAAjC,CAAnB;AACA,MAAIyP,UAAU,GAAG,EAAjB;;AACA,MAAI,OAAOxP,QAAQ,CAACz4C,KAAhB,KAA0B,WAA9B,EAA2C;AACzCioD,IAAAA,UAAU,GAAG,MAAMxP,QAAQ,CAACz4C,KAA5B;AACD;;AAED,MAAIkoD,SAAS,GAAGzP,QAAQ,CAAC33C,KAAT,GAAiBwhD,YAAjB,GAAgC7J,QAAQ,CAAC33C,KAAzC,GAAiDwhD,YAAjE;AAEA,MAAM9B,QAAQ,GAAGp6B,CAAC,CAACnkB,MAAF,CAAS,MAAT,CAAjB;AACAu+C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,OAAd,EAAuB,wBAAwBsrD,UAA/C;AACAzH,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,GAAd,EAAmB87C,QAAQ,CAACj3C,CAA5B;AACAg/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,GAAd,EAAmB87C,QAAQ,CAAC13C,MAA5B;AACAy/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,MAAd,EAAsB87C,QAAQ,CAAC55B,IAA/B;AACA2hC,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwB87C,QAAQ,CAAC75B,MAAjC;AACA4hC,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,OAAd,EAAuBurD,SAAvB;AACA1H,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwB87C,QAAQ,CAAC13C,MAAjC;AACAy/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,IAAd,EAAoB87C,QAAQ,CAACn3C,EAA7B;AACAk/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,IAAd,EAAoB87C,QAAQ,CAACl3C,EAA7B;;AACA,MAAIu7B,KAAK,IAAI,IAAb,EAAmB;AACjB,QAAIqrB,KAAK,GAAG,EAAZ;;AACA,SAAK,IAAIppD,GAAT,IAAgB+9B,KAAhB,EAAuB;AACrB,UAAIsrB,QAAQ,GAAGhiC,CAAC,CAACnkB,MAAF,CAAS,GAAT,CAAf;AACA,UAAIomD,aAAa,GAAG3rB,oEAAW,CAACI,KAAK,CAAC/9B,GAAD,CAAN,CAA/B;AACAqpD,MAAAA,QAAQ,CAACzrD,IAAT,CAAc,YAAd,EAA4B0rD,aAA5B;AACAD,MAAAA,QAAQ,CAACzrD,IAAT,CAAc,QAAd,EAAwB,QAAxB;;AAEA2rD,MAAAA,8BAA8B,CAACP,SAAD,CAA9B,CACEhpD,GADF,EAEEqpD,QAFF,EAGE3P,QAAQ,CAACj3C,CAAT,GAAa,EAHf,EAIEi3C,QAAQ,CAAC13C,MAAT,GAAkBonD,KAJpB,EAKED,SALF,EAME,EANF,EAOE;AAAEloD,QAAAA,KAAK,EAAE;AAAT,OAPF,EAQE+nD,SARF;;AAWAI,MAAAA,KAAK,IAAI,EAAT;AACD;AACF;;AAED3H,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwBwrD,KAAxB;AAEA,SAAO;AAAEpnD,IAAAA,MAAM,EAAE03C,QAAQ,CAAC13C,MAAT,GAAkBonD,KAA5B;AAAmCrnD,IAAAA,KAAK,EAAEonD;AAA1C,GAAP;AACD,CA9DM;AAgEA,IAAMK,SAAS,GAAG,SAAZA,SAAY,CAAUjmD,IAAV,EAAgBd,CAAhB,EAAmBC,CAAnB,EAAsBqX,IAAtB,EAA4B;AACnD,MAAM0vC,SAAS,GAAGlmD,IAAI,CAACL,MAAL,CAAY,OAAZ,CAAlB;AACAumD,EAAAA,SAAS,CAAC7rD,IAAV,CAAe,GAAf,EAAoB6E,CAApB;AACAgnD,EAAAA,SAAS,CAAC7rD,IAAV,CAAe,GAAf,EAAoB8E,CAApB;AACA,MAAI4mD,aAAa,GAAG3rB,oEAAW,CAAC5jB,IAAD,CAA/B;AACA0vC,EAAAA,SAAS,CAAC7rD,IAAV,CAAe,YAAf,EAA6B0rD,aAA7B;AACD,CANM;AAQA,IAAMI,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUnmD,IAAV,EAAgBd,CAAhB,EAAmBC,CAAnB,EAAsBqX,IAAtB,EAA4B;AAC3D,MAAM0vC,SAAS,GAAGlmD,IAAI,CAACL,MAAL,CAAY,KAAZ,CAAlB;AACAumD,EAAAA,SAAS,CAAC7rD,IAAV,CAAe,GAAf,EAAoB6E,CAApB;AACAgnD,EAAAA,SAAS,CAAC7rD,IAAV,CAAe,GAAf,EAAoB8E,CAApB;AACA,MAAI4mD,aAAa,GAAG3rB,oEAAW,CAAC5jB,IAAD,CAA/B;AACA0vC,EAAAA,SAAS,CAAC7rD,IAAV,CAAe,YAAf,EAA6B,MAAM0rD,aAAnC;AACD,CANM;AAQA,IAAMK,SAAS,GAAG,SAAZA,SAAY,CAAUC,KAAV,EAAiB;AACxC,SACE,uCACAA,KADA,GAEA,qDAHF;AAKD,CANM;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAUD,KAAV,EAAiB;AAC1C,SACE,uCACAA,KADA,GAEA,oDAHF;AAKD,CANM;;AAQP,IAAMd,eAAe,GAAG,SAAlBA,eAAkB,CAAUgB,OAAV,EAAmB;AACzC,MAAIC,EAAE,GAAGxlD,QAAQ,CAACmgC,cAAT,CAAwBolB,OAAxB,CAAT;;AACA,MAAIC,EAAE,IAAI,IAAV,EAAgB;AACdA,IAAAA,EAAE,CAACznD,KAAH,CAAS0nD,OAAT,GAAmB,OAAnB;AACD;AACF,CALD;;AAOA,IAAMjB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUe,OAAV,EAAmB;AAC3C,MAAIC,EAAE,GAAGxlD,QAAQ,CAACmgC,cAAT,CAAwBolB,OAAxB,CAAT;;AACA,MAAIC,EAAE,IAAI,IAAV,EAAgB;AACdA,IAAAA,EAAE,CAACznD,KAAH,CAAS0nD,OAAT,GAAmB,MAAnB;AACD;AACF,CALD;;AAMO,IAAMlc,QAAQ,GAAG,SAAXA,QAAW,CAAUvqC,IAAV,EAAgB0mD,QAAhB,EAA0B;AAChD,MAAIC,cAAc,GAAG,CAArB;AAAA,MACEprC,UAAU,GAAG,CADf;AAEA,MAAMsjC,KAAK,GAAG6H,QAAQ,CAACpsD,IAAT,CAAcwH,KAAd,CAAoB+b,qEAApB,CAAd;AAEA,MAAI+oC,SAAS,GAAG,EAAhB;AACA,MAAI7hD,EAAE,GAAG,CAAT;;AACA,MAAI8hD,KAAK,GAAG;AAAA,WAAMH,QAAQ,CAACvnD,CAAf;AAAA,GAAZ;;AACA,MACE,OAAOunD,QAAQ,CAAClI,MAAhB,KAA2B,WAA3B,IACA,OAAOkI,QAAQ,CAACnI,UAAhB,KAA+B,WAD/B,IAEAmI,QAAQ,CAACnI,UAAT,GAAsB,CAHxB,EAIE;AACA,YAAQmI,QAAQ,CAAClI,MAAjB;AACE,WAAK,KAAL;AACA,WAAK,OAAL;AACEqI,QAAAA,KAAK,GAAG;AAAA,iBAAMhiD,IAAI,CAAC65C,KAAL,CAAWgI,QAAQ,CAACvnD,CAAT,GAAaunD,QAAQ,CAACnI,UAAjC,CAAN;AAAA,SAAR;;AACA;;AACF,WAAK,QAAL;AACA,WAAK,QAAL;AACEsI,QAAAA,KAAK,GAAG;AAAA,iBACNhiD,IAAI,CAAC65C,KAAL,CAAWgI,QAAQ,CAACvnD,CAAT,GAAa,CAACwnD,cAAc,GAAGprC,UAAjB,GAA8BmrC,QAAQ,CAACnI,UAAxC,IAAsD,CAA9E,CADM;AAAA,SAAR;;AAEA;;AACF,WAAK,QAAL;AACA,WAAK,KAAL;AACEsI,QAAAA,KAAK,GAAG;AAAA,iBACNhiD,IAAI,CAAC65C,KAAL,CACEgI,QAAQ,CAACvnD,CAAT,IACGwnD,cAAc,GAAGprC,UAAjB,GAA8B,IAAImrC,QAAQ,CAACnI,UAD9C,IAEEmI,QAAQ,CAACnI,UAHb,CADM;AAAA,SAAR;;AAMA;AAlBJ;AAoBD;;AACD,MACE,OAAOmI,QAAQ,CAACpI,MAAhB,KAA2B,WAA3B,IACA,OAAOoI,QAAQ,CAACnI,UAAhB,KAA+B,WAD/B,IAEA,OAAOmI,QAAQ,CAACloD,KAAhB,KAA0B,WAH5B,EAIE;AACA,YAAQkoD,QAAQ,CAACpI,MAAjB;AACE,WAAK,MAAL;AACA,WAAK,OAAL;AACEoI,QAAAA,QAAQ,CAACxnD,CAAT,GAAa2F,IAAI,CAAC65C,KAAL,CAAWgI,QAAQ,CAACxnD,CAAT,GAAawnD,QAAQ,CAACnI,UAAjC,CAAb;AACAmI,QAAAA,QAAQ,CAACpI,MAAT,GAAkB,OAAlB;AACAoI,QAAAA,QAAQ,CAACI,gBAAT,GAA4B,iBAA5B;AACAJ,QAAAA,QAAQ,CAACK,iBAAT,GAA6B,QAA7B;AACA;;AACF,WAAK,QAAL;AACA,WAAK,QAAL;AACEL,QAAAA,QAAQ,CAACxnD,CAAT,GAAa2F,IAAI,CAAC65C,KAAL,CAAWgI,QAAQ,CAACxnD,CAAT,GAAawnD,QAAQ,CAACloD,KAAT,GAAiB,CAAzC,CAAb;AACAkoD,QAAAA,QAAQ,CAACpI,MAAT,GAAkB,QAAlB;AACAoI,QAAAA,QAAQ,CAACI,gBAAT,GAA4B,QAA5B;AACAJ,QAAAA,QAAQ,CAACK,iBAAT,GAA6B,QAA7B;AACA;;AACF,WAAK,OAAL;AACA,WAAK,KAAL;AACEL,QAAAA,QAAQ,CAACxnD,CAAT,GAAa2F,IAAI,CAAC65C,KAAL,CAAWgI,QAAQ,CAACxnD,CAAT,GAAawnD,QAAQ,CAACloD,KAAtB,GAA8BkoD,QAAQ,CAACnI,UAAlD,CAAb;AACAmI,QAAAA,QAAQ,CAACpI,MAAT,GAAkB,KAAlB;AACAoI,QAAAA,QAAQ,CAACI,gBAAT,GAA4B,kBAA5B;AACAJ,QAAAA,QAAQ,CAACK,iBAAT,GAA6B,QAA7B;AACA;AArBJ;AAuBD;;AACD,OAAK,IAAIxrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsjD,KAAK,CAACrjD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAI+G,IAAI,GAAGu8C,KAAK,CAACtjD,CAAD,CAAhB;;AACA,QACE,OAAOmrD,QAAQ,CAACnI,UAAhB,KAA+B,WAA/B,IACAmI,QAAQ,CAACnI,UAAT,KAAwB,CADxB,IAEA,OAAOmI,QAAQ,CAAC/sC,QAAhB,KAA6B,WAH/B,EAIE;AACA5U,MAAAA,EAAE,GAAGxJ,CAAC,GAAGmrD,QAAQ,CAAC/sC,QAAlB;AACD;;AAED,QAAM8kC,QAAQ,GAAGz+C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA8+C,IAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACxnD,CAA5B;AACAu/C,IAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBwsD,KAAK,EAAxB;;AACA,QAAI,OAAOH,QAAQ,CAACpI,MAAhB,KAA2B,WAA/B,EAA4C;AAC1CG,MAAAA,QAAQ,CACLpkD,IADH,CACQ,aADR,EACuBqsD,QAAQ,CAACpI,MADhC,EAEGjkD,IAFH,CAEQ,mBAFR,EAE6BqsD,QAAQ,CAACI,gBAFtC,EAGGzsD,IAHH,CAGQ,oBAHR,EAG8BqsD,QAAQ,CAACK,iBAHvC;AAID;;AACD,QAAI,OAAOL,QAAQ,CAAC5pD,UAAhB,KAA+B,WAAnC,EAAgD;AAC9C2hD,MAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAAC5pD,UAAvC;AACD;;AACD,QAAI,OAAO4pD,QAAQ,CAAC/sC,QAAhB,KAA6B,WAAjC,EAA8C;AAC5C8kC,MAAAA,QAAQ,CAAC1/C,KAAT,CAAe,WAAf,EAA4B2nD,QAAQ,CAAC/sC,QAArC;AACD;;AACD,QAAI,OAAO+sC,QAAQ,CAAC9sC,UAAhB,KAA+B,WAAnC,EAAgD;AAC9C6kC,MAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAAC9sC,UAAvC;AACD;;AACD,QAAI,OAAO8sC,QAAQ,CAACnqC,IAAhB,KAAyB,WAA7B,EAA0C;AACxCkiC,MAAAA,QAAQ,CAACpkD,IAAT,CAAc,MAAd,EAAsBqsD,QAAQ,CAACnqC,IAA/B;AACD;;AACD,QAAI,OAAOmqC,QAAQ,CAAChpD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC+gD,MAAAA,QAAQ,CAACpkD,IAAT,CAAc,OAAd,EAAuBqsD,QAAQ,CAAChpD,KAAhC;AACD;;AACD,QAAI,OAAOgpD,QAAQ,CAAC3hD,EAAhB,KAAuB,WAA3B,EAAwC;AACtC05C,MAAAA,QAAQ,CAACpkD,IAAT,CAAc,IAAd,EAAoBqsD,QAAQ,CAAC3hD,EAA7B;AACD,KAFD,MAEO,IAAIA,EAAE,KAAK,CAAX,EAAc;AACnB05C,MAAAA,QAAQ,CAACpkD,IAAT,CAAc,IAAd,EAAoB0K,EAApB;AACD;;AAED,QAAI2hD,QAAQ,CAACxkD,KAAb,EAAoB;AAClB,UAAM8kD,IAAI,GAAGvI,QAAQ,CAAC9+C,MAAT,CAAgB,OAAhB,CAAb;AACAqnD,MAAAA,IAAI,CAAC3sD,IAAL,CAAU,GAAV,EAAeqsD,QAAQ,CAACxnD,CAAxB;;AACA,UAAI,OAAOwnD,QAAQ,CAACnqC,IAAhB,KAAyB,WAA7B,EAA0C;AACxCyqC,QAAAA,IAAI,CAAC3sD,IAAL,CAAU,MAAV,EAAkBqsD,QAAQ,CAACnqC,IAA3B;AACD;;AACDyqC,MAAAA,IAAI,CAAC1sD,IAAL,CAAUgI,IAAV;AACD,KAPD,MAOO;AACLm8C,MAAAA,QAAQ,CAACnkD,IAAT,CAAcgI,IAAd;AACD;;AACD,QACE,OAAOokD,QAAQ,CAAClI,MAAhB,KAA2B,WAA3B,IACA,OAAOkI,QAAQ,CAACnI,UAAhB,KAA+B,WAD/B,IAEAmI,QAAQ,CAACnI,UAAT,GAAsB,CAHxB,EAIE;AACAhjC,MAAAA,UAAU,IAAI,CAACkjC,QAAQ,CAACv8B,OAAT,IAAoBu8B,QAArB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCxgD,OAArC,GAA+CQ,MAA7D;AACAkoD,MAAAA,cAAc,GAAGprC,UAAjB;AACD;;AAEDqrC,IAAAA,SAAS,CAAC7pD,IAAV,CAAe0hD,QAAf;AACD;;AAED,SAAOmI,SAAP;AACD,CA9HM;AAgIA,IAAMK,SAAS,GAAG,SAAZA,SAAY,CAAUjnD,IAAV,EAAgBknD,SAAhB,EAA2B;AAClD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASC,SAAT,CAAmBjoD,CAAnB,EAAsBC,CAAtB,EAAyBX,KAAzB,EAAgCC,MAAhC,EAAwC2oD,GAAxC,EAA6C;AAC3C,WACEloD,CAAC,GACD,GADA,GAEAC,CAFA,GAGA,GAHA,IAICD,CAAC,GAAGV,KAJL,IAKA,GALA,GAMAW,CANA,GAOA,GAPA,IAQCD,CAAC,GAAGV,KARL,IASA,GATA,IAUCW,CAAC,GAAGV,MAAJ,GAAa2oD,GAVd,IAWA,GAXA,IAYCloD,CAAC,GAAGV,KAAJ,GAAY4oD,GAAG,GAAG,GAZnB,IAaA,GAbA,IAcCjoD,CAAC,GAAGV,MAdL,IAeA,GAfA,GAgBAS,CAhBA,GAiBA,GAjBA,IAkBCC,CAAC,GAAGV,MAlBL,CADF;AAqBD;;AACD,MAAMyM,OAAO,GAAGlL,IAAI,CAACL,MAAL,CAAY,SAAZ,CAAhB;AACAuL,EAAAA,OAAO,CAAC7Q,IAAR,CAAa,QAAb,EAAuB8sD,SAAS,CAACD,SAAS,CAAChoD,CAAX,EAAcgoD,SAAS,CAAC/nD,CAAxB,EAA2B+nD,SAAS,CAAC1oD,KAArC,EAA4C0oD,SAAS,CAACzoD,MAAtD,EAA8D,CAA9D,CAAhC;AACAyM,EAAAA,OAAO,CAAC7Q,IAAR,CAAa,OAAb,EAAsB,UAAtB;AAEA6sD,EAAAA,SAAS,CAAC/nD,CAAV,GAAc+nD,SAAS,CAAC/nD,CAAV,GAAc+nD,SAAS,CAACzoD,MAAV,GAAmB,CAA/C;AAEA8rC,EAAAA,QAAQ,CAACvqC,IAAD,EAAOknD,SAAP,CAAR;AACA,SAAOh8C,OAAP;AACD,CAxCM;AA0CP,IAAIgrC,QAAQ,GAAG,CAAC,CAAhB;AAEO,IAAMyE,kBAAkB,GAAG,SAArBA,kBAAqB,CAACr0B,OAAD,EAAUsB,MAAV,EAAqB;AACrD,MAAI,CAACtB,OAAO,CAACnE,SAAb,EAAwB;AACxBmE,EAAAA,OAAO,CACJnE,SADH,CACa,aADb,EAEG9nB,IAFH,CAEQ,OAFR,EAEiB,KAFjB,EAGGA,IAHH,CAGQ,IAHR,EAGcutB,MAAM,GAAG,EAHvB;AAID,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMy/B,wBAAwB,GAAG,SAA3BA,wBAA2B,CAAUrnD,IAAV,EAAgB02C,KAAhB,EAAuB36C,IAAvB,EAA6B;AAC5D,MAAMurD,MAAM,GAAG5Q,KAAK,CAACx3C,CAAN,GAAUw3C,KAAK,CAACl4C,KAAN,GAAc,CAAvC;AAEA,MAAM+oD,gBAAgB,GAAGvnD,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAzB;AACA,MAAImkB,CAAC,GAAGyjC,gBAAR;;AAEA,MAAI7Q,KAAK,CAACv3C,CAAN,KAAY,CAAhB,EAAmB;AACjB+2C,IAAAA,QAAQ;AACRpyB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,IADR,EACc,UAAU67C,QADxB,EAEG77C,IAFH,CAEQ,IAFR,EAEcitD,MAFd,EAGGjtD,IAHH,CAGQ,IAHR,EAGc,CAHd,EAIGA,IAJH,CAIQ,IAJR,EAIcitD,MAJd,EAKGjtD,IALH,CAKQ,IALR,EAKc,IALd,EAMGA,IANH,CAMQ,OANR,EAMiB,YANjB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,OAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB;AAUAypB,IAAAA,CAAC,GAAGyjC,gBAAgB,CAAC5nD,MAAjB,CAAwB,GAAxB,CAAJ;AACA+2C,IAAAA,KAAK,CAACR,QAAN,GAAiBA,QAAjB;;AAEA,QAAIQ,KAAK,CAAClc,KAAN,IAAe,IAAnB,EAAyB;AACvB1W,MAAAA,CAAC,CAACzpB,IAAF,CAAO,IAAP,EAAa,UAAU67C,QAAvB;AACAoP,MAAAA,mBAAmB,CAAC,WAAWpP,QAAZ,EAAsBA,QAAtB,CAAnB;AACD;AACF;;AAED,MAAM74C,IAAI,GAAG4gD,WAAW,EAAxB;AACA,MAAIuJ,QAAQ,GAAG,OAAf;;AACA,MAAI9Q,KAAK,CAACT,UAAN,IAAoB,IAApB,IAA4BS,KAAK,CAACT,UAAN,CAAiB,OAAjB,CAAhC,EAA2D;AACzDuR,IAAAA,QAAQ,GAAG9Q,KAAK,CAACT,UAAN,CAAiB,OAAjB,CAAX;AACD,GAFD,MAEO;AACL54C,IAAAA,IAAI,CAACkf,IAAL,GAAY,SAAZ;AACD;;AACDlf,EAAAA,IAAI,CAAC6B,CAAL,GAASw3C,KAAK,CAACx3C,CAAf;AACA7B,EAAAA,IAAI,CAAC8B,CAAL,GAASu3C,KAAK,CAACv3C,CAAf;AACA9B,EAAAA,IAAI,CAACmB,KAAL,GAAak4C,KAAK,CAACl4C,KAAnB;AACAnB,EAAAA,IAAI,CAACoB,MAAL,GAAci4C,KAAK,CAACj4C,MAApB;AACApB,EAAAA,IAAI,CAACK,KAAL,GAAa8pD,QAAb;AACAnqD,EAAAA,IAAI,CAAC2B,EAAL,GAAU,CAAV;AACA3B,EAAAA,IAAI,CAAC4B,EAAL,GAAU,CAAV;AACA,MAAMi/C,QAAQ,GAAGC,QAAQ,CAACr6B,CAAD,EAAIzmB,IAAJ,CAAzB;AACAq5C,EAAAA,KAAK,CAACP,QAAN,GAAiB94C,IAAjB;;AAEA,MAAIq5C,KAAK,CAACT,UAAN,IAAoB,IAApB,IAA4BS,KAAK,CAACT,UAAN,CAAiB,MAAjB,CAAhC,EAA0D;AACxD,QAAMwR,OAAO,GAAG/Q,KAAK,CAACT,UAAN,CAAiB,MAAjB,EAAyB5zC,IAAzB,EAAhB;;AACA,QAAIolD,OAAO,CAACtmC,MAAR,CAAe,CAAf,MAAsB,GAA1B,EAA+B;AAC7BglC,MAAAA,iBAAiB,CAACriC,CAAD,EAAIzmB,IAAI,CAAC6B,CAAL,GAAS7B,IAAI,CAACmB,KAAd,GAAsB,EAA1B,EAA8BnB,IAAI,CAAC8B,CAAL,GAAS,EAAvC,EAA2CsoD,OAAO,CAACrnC,MAAR,CAAe,CAAf,CAA3C,CAAjB;AACD,KAFD,MAEO;AACL6lC,MAAAA,SAAS,CAACniC,CAAD,EAAIzmB,IAAI,CAAC6B,CAAL,GAAS7B,IAAI,CAACmB,KAAd,GAAsB,EAA1B,EAA8BnB,IAAI,CAAC8B,CAAL,GAAS,EAAvC,EAA2CsoD,OAA3C,CAAT;AACD;AACF;;AAEDC,EAAAA,sBAAsB,CAAC3rD,IAAD,CAAtB,CACE26C,KAAK,CAACv8C,WADR,EAEE2pB,CAFF,EAGEzmB,IAAI,CAAC6B,CAHP,EAIE7B,IAAI,CAAC8B,CAJP,EAKE9B,IAAI,CAACmB,KALP,EAMEnB,IAAI,CAACoB,MANP,EAOE;AAAEf,IAAAA,KAAK,EAAE;AAAT,GAPF,EAQE3B,IARF;;AAWA,MAAI0C,MAAM,GAAGi4C,KAAK,CAACj4C,MAAnB;;AACA,MAAIy/C,QAAQ,CAAC3gD,IAAb,EAAmB;AACjB,QAAMqqB,MAAM,GAAGs2B,QAAQ,CAAC3gD,IAAT,GAAgBU,OAAhB,EAAf;AACAy4C,IAAAA,KAAK,CAACj4C,MAAN,GAAempB,MAAM,CAACnpB,MAAtB;AACAA,IAAAA,MAAM,GAAGmpB,MAAM,CAACnpB,MAAhB;AACD;;AAED,SAAOA,MAAP;AACD,CAxED;;AA0EA,IAAMkpD,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU3nD,IAAV,EAAgB02C,KAAhB,EAAuB36C,IAAvB,EAA6B;AACtD,MAAMurD,MAAM,GAAG5Q,KAAK,CAACx3C,CAAN,GAAUw3C,KAAK,CAACl4C,KAAN,GAAc,CAAvC;;AAEA,MAAIk4C,KAAK,CAACv3C,CAAN,KAAY,CAAhB,EAAmB;AACjB+2C,IAAAA,QAAQ;AACRl2C,IAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,UAAU67C,QAFxB,EAGG77C,IAHH,CAGQ,IAHR,EAGcitD,MAHd,EAIGjtD,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKcitD,MALd,EAMGjtD,IANH,CAMQ,IANR,EAMc,IANd,EAOGA,IAPH,CAOQ,OAPR,EAOiB,YAPjB,EAQGA,IARH,CAQQ,cARR,EAQwB,OARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB;AAUD;;AACD,MAAMutD,OAAO,GAAG5nD,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAhB;AACAioD,EAAAA,OAAO,CAACvtD,IAAR,CAAa,OAAb,EAAsB,WAAtB;AAEA,MAAMgD,IAAI,GAAG4gD,WAAW,EAAxB;AACA5gD,EAAAA,IAAI,CAAC6B,CAAL,GAASw3C,KAAK,CAACx3C,CAAf;AACA7B,EAAAA,IAAI,CAAC8B,CAAL,GAASu3C,KAAK,CAACv3C,CAAf;AACA9B,EAAAA,IAAI,CAACkf,IAAL,GAAY,SAAZ;AACAlf,EAAAA,IAAI,CAACmB,KAAL,GAAak4C,KAAK,CAACl4C,KAAnB;AACAnB,EAAAA,IAAI,CAACoB,MAAL,GAAci4C,KAAK,CAACj4C,MAApB;AACApB,EAAAA,IAAI,CAACK,KAAL,GAAa,OAAb;AACAL,EAAAA,IAAI,CAAC2B,EAAL,GAAU,CAAV;AACA3B,EAAAA,IAAI,CAAC4B,EAAL,GAAU,CAAV,CA3BsD,CA4BtD;;AAEA2oD,EAAAA,OAAO,CACJjoD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,oBAAoB67C,QAFlC,EAGG77C,IAHH,CAGQ,IAHR,EAGcitD,MAHd,EAIGjtD,IAJH,CAIQ,IAJR,EAIcq8C,KAAK,CAACv3C,CAAN,GAAU,EAJxB,EAKG9E,IALH,CAKQ,IALR,EAKcitD,MALd,EAMGjtD,IANH,CAMQ,IANR,EAMcq8C,KAAK,CAACv3C,CAAN,GAAU,EANxB;AAQAyoD,EAAAA,OAAO,CACJjoD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,mBAAmB67C,QAFjC,EAGG77C,IAHH,CAGQ,IAHR,EAGcitD,MAAM,GAAG,EAHvB,EAIGjtD,IAJH,CAIQ,IAJR,EAIcq8C,KAAK,CAACv3C,CAAN,GAAU,EAJxB,EAKG9E,IALH,CAKQ,IALR,EAKcitD,MAAM,GAAG,EALvB,EAMGjtD,IANH,CAMQ,IANR,EAMcq8C,KAAK,CAACv3C,CAAN,GAAU,EANxB;AAOAyoD,EAAAA,OAAO,CACJjoD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEcitD,MAAM,GAAG,EAFvB,EAGGjtD,IAHH,CAGQ,IAHR,EAGcq8C,KAAK,CAACv3C,CAAN,GAAU,EAHxB,EAIG9E,IAJH,CAIQ,IAJR,EAIcitD,MAJd,EAKGjtD,IALH,CAKQ,IALR,EAKcq8C,KAAK,CAACv3C,CAAN,GAAU,EALxB;AAMAyoD,EAAAA,OAAO,CACJjoD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEcitD,MAFd,EAGGjtD,IAHH,CAGQ,IAHR,EAGcq8C,KAAK,CAACv3C,CAAN,GAAU,EAHxB,EAIG9E,IAJH,CAIQ,IAJR,EAIcitD,MAAM,GAAG,EAJvB,EAKGjtD,IALH,CAKQ,IALR,EAKcq8C,KAAK,CAACv3C,CAAN,GAAU,EALxB;AAOA,MAAM6L,MAAM,GAAG48C,OAAO,CAACjoD,MAAR,CAAe,QAAf,CAAf;AACAqL,EAAAA,MAAM,CAAC3Q,IAAP,CAAY,IAAZ,EAAkBq8C,KAAK,CAACx3C,CAAN,GAAUw3C,KAAK,CAACl4C,KAAN,GAAc,CAA1C;AACAwM,EAAAA,MAAM,CAAC3Q,IAAP,CAAY,IAAZ,EAAkBq8C,KAAK,CAACv3C,CAAN,GAAU,EAA5B;AACA6L,EAAAA,MAAM,CAAC3Q,IAAP,CAAY,GAAZ,EAAiB,EAAjB;AACA2Q,EAAAA,MAAM,CAAC3Q,IAAP,CAAY,OAAZ,EAAqBq8C,KAAK,CAACl4C,KAA3B;AACAwM,EAAAA,MAAM,CAAC3Q,IAAP,CAAY,QAAZ,EAAsBq8C,KAAK,CAACj4C,MAA5B;AAEA,MAAMmpB,MAAM,GAAGggC,OAAO,CAACrqD,IAAR,GAAeU,OAAf,EAAf;AACAy4C,EAAAA,KAAK,CAACj4C,MAAN,GAAempB,MAAM,CAACnpB,MAAtB;;AAEAipD,EAAAA,sBAAsB,CAAC3rD,IAAD,CAAtB,CACE26C,KAAK,CAACv8C,WADR,EAEEytD,OAFF,EAGEvqD,IAAI,CAAC6B,CAHP,EAIE7B,IAAI,CAAC8B,CAAL,GAAS,EAJX,EAKE9B,IAAI,CAACmB,KALP,EAMEnB,IAAI,CAACoB,MANP,EAOE;AAAEf,IAAAA,KAAK,EAAE;AAAT,GAPF,EAQE3B,IARF;;AAWA,SAAO26C,KAAK,CAACj4C,MAAb;AACD,CAhFD;;AAkFO,IAAMqhD,SAAS,GAAG,SAAZA,SAAY,CAAU9/C,IAAV,EAAgB02C,KAAhB,EAAuB36C,IAAvB,EAA6B;AACpD,UAAQ26C,KAAK,CAAC7rC,IAAd;AACE,SAAK,OAAL;AACE,aAAO88C,kBAAkB,CAAC3nD,IAAD,EAAO02C,KAAP,EAAc36C,IAAd,CAAzB;;AACF,SAAK,aAAL;AACE,aAAOsrD,wBAAwB,CAACrnD,IAAD,EAAO02C,KAAP,EAAc36C,IAAd,CAA/B;AAJJ;AAMD,CAPM;AASA,IAAMihD,aAAa,GAAG,SAAhBA,aAAgB,CAAUh9C,IAAV,EAAgB;AAC3C,SAAOA,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAP;AACD,CAFM;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMiiD,cAAc,GAAG,SAAjBA,cAAiB,CAAU5hD,IAAV,EAAgB4nB,MAAhB,EAAwB3S,WAAxB,EAAqClZ,IAArC,EAA2C+gD,gBAA3C,EAA6D;AACzF,MAAMz/C,IAAI,GAAG4gD,WAAW,EAAxB;AACA,MAAMn6B,CAAC,GAAG8D,MAAM,CAACm1B,QAAjB;AACA1/C,EAAAA,IAAI,CAAC6B,CAAL,GAAS0oB,MAAM,CAACizB,MAAhB;AACAx9C,EAAAA,IAAI,CAAC8B,CAAL,GAASyoB,MAAM,CAACmzB,MAAhB;AACA19C,EAAAA,IAAI,CAACK,KAAL,GAAa,eAAgBo/C,gBAAgB,GAAG,CAAhD,CALyF,CAKrC;;AACpDz/C,EAAAA,IAAI,CAACmB,KAAL,GAAaopB,MAAM,CAACkzB,KAAP,GAAelzB,MAAM,CAACizB,MAAnC;AACAx9C,EAAAA,IAAI,CAACoB,MAAL,GAAcwW,WAAW,GAAG2S,MAAM,CAACmzB,MAAnC;AACAoD,EAAAA,QAAQ,CAACr6B,CAAD,EAAIzmB,IAAJ,CAAR;AACD,CATM;AAWP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMykD,QAAQ,GAAG,SAAXA,QAAW,CAAU9hD,IAAV,EAAgB07C,SAAhB,EAA2B79C,SAA3B,EAAsC9B,IAAtC,EAA4C;AAClE,MACEmc,SADF,GAQInc,IARJ,CACEmc,SADF;AAAA,MAEEC,aAFF,GAQIpc,IARJ,CAEEoc,aAFF;AAAA,MAGEsB,cAHF,GAQI1d,IARJ,CAGE0d,cAHF;AAAA,MAIED,aAJF,GAQIzd,IARJ,CAIEyd,aAJF;AAAA,MAKqB1c,UALrB,GAQIf,IARJ,CAKEqd,iBALF;AAAA,MAMmBO,QANnB,GAQI5d,IARJ,CAMEod,eANF;AAAA,MAOqBS,UAPrB,GAQI7d,IARJ,CAOEsd,iBAPF;AASA,MAAMyK,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;;AACA,MAAMkoD,YAAY,GAAG,SAAfA,YAAe,CAAUhN,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AAC3D,WAAOl3B,CAAC,CACLnkB,MADI,CACG,MADH,EAEJtF,IAFI,CAEC,IAFD,EAEOwgD,MAFP,EAGJxgD,IAHI,CAGC,IAHD,EAGO0gD,MAHP,EAIJ1gD,IAJI,CAIC,IAJD,EAIOygD,KAJP,EAKJzgD,IALI,CAKC,IALD,EAKO2gD,KALP,EAMJ3gD,IANI,CAMC,OAND,EAMU,UANV,CAAP;AAOD,GARD;;AASAwtD,EAAAA,YAAY,CAACnM,SAAS,CAACb,MAAX,EAAmBa,SAAS,CAACX,MAA7B,EAAqCW,SAAS,CAACZ,KAA/C,EAAsDY,SAAS,CAACX,MAAhE,CAAZ;AACA8M,EAAAA,YAAY,CAACnM,SAAS,CAACZ,KAAX,EAAkBY,SAAS,CAACX,MAA5B,EAAoCW,SAAS,CAACZ,KAA9C,EAAqDY,SAAS,CAACV,KAA/D,CAAZ;AACA6M,EAAAA,YAAY,CAACnM,SAAS,CAACb,MAAX,EAAmBa,SAAS,CAACV,KAA7B,EAAoCU,SAAS,CAACZ,KAA9C,EAAqDY,SAAS,CAACV,KAA/D,CAAZ;AACA6M,EAAAA,YAAY,CAACnM,SAAS,CAACb,MAAX,EAAmBa,SAAS,CAACX,MAA7B,EAAqCW,SAAS,CAACb,MAA/C,EAAuDa,SAAS,CAACV,KAAjE,CAAZ;;AACA,MAAI,OAAOU,SAAS,CAACjhB,QAAjB,KAA8B,WAAlC,EAA+C;AAC7CihB,IAAAA,SAAS,CAACjhB,QAAV,CAAmBj+B,OAAnB,CAA2B,UAAU0kB,IAAV,EAAgB;AACzC2mC,MAAAA,YAAY,CAACnM,SAAS,CAACb,MAAX,EAAmB35B,IAAI,CAAC/hB,CAAxB,EAA2Bu8C,SAAS,CAACZ,KAArC,EAA4C55B,IAAI,CAAC/hB,CAAjD,CAAZ,CAAgEJ,KAAhE,CACE,kBADF,EAEE,MAFF;AAID,KALD;AAMD;;AAED,MAAI2B,GAAG,GAAG29C,UAAU,EAApB;AACA39C,EAAAA,GAAG,CAACpG,IAAJ,GAAWuD,SAAX;AACA6C,EAAAA,GAAG,CAACxB,CAAJ,GAAQw8C,SAAS,CAACb,MAAlB;AACAn6C,EAAAA,GAAG,CAACvB,CAAJ,GAAQu8C,SAAS,CAACX,MAAlB;AACAr6C,EAAAA,GAAG,CAAC5D,UAAJ,GAAiBA,UAAjB;AACA4D,EAAAA,GAAG,CAACiZ,QAAJ,GAAeA,QAAf;AACAjZ,EAAAA,GAAG,CAACkZ,UAAJ,GAAiBA,UAAjB;AACAlZ,EAAAA,GAAG,CAAC49C,MAAJ,GAAa,QAAb;AACA59C,EAAAA,GAAG,CAAC89C,MAAJ,GAAa,QAAb;AACA99C,EAAAA,GAAG,CAACwB,KAAJ,GAAY,KAAZ;AACAxB,EAAAA,GAAG,CAAClC,KAAJ,GAAYgb,aAAa,IAAI,EAA7B;AACA9Y,EAAAA,GAAG,CAACjC,MAAJ,GAAagb,cAAc,IAAI,EAA/B;AACA/Y,EAAAA,GAAG,CAAC69C,UAAJ,GAAiBpmC,aAAjB;AACAzX,EAAAA,GAAG,CAAChD,KAAJ,GAAY,WAAZ;AAEAupD,EAAAA,SAAS,CAACnjC,CAAD,EAAIpjB,GAAJ,CAAT;AACAA,EAAAA,GAAG,GAAG29C,UAAU,EAAhB;AACA39C,EAAAA,GAAG,CAACpG,IAAJ,GAAWohD,SAAS,CAAC/nC,KAArB;AACAjT,EAAAA,GAAG,CAACxB,CAAJ,GAAQw8C,SAAS,CAACb,MAAV,GAAmBrhC,aAAa,GAAG,CAAnC,GAAuC,CAACkiC,SAAS,CAACZ,KAAV,GAAkBY,SAAS,CAACb,MAA7B,IAAuC,CAAtF;AACAn6C,EAAAA,GAAG,CAACvB,CAAJ,GAAQu8C,SAAS,CAACX,MAAV,GAAmB7iC,SAAnB,GAA+BC,aAAvC;AACAzX,EAAAA,GAAG,CAAC49C,MAAJ,GAAa,QAAb;AACA59C,EAAAA,GAAG,CAAC89C,MAAJ,GAAa,QAAb;AACA99C,EAAAA,GAAG,CAAC69C,UAAJ,GAAiBpmC,aAAjB;AACAzX,EAAAA,GAAG,CAAChD,KAAJ,GAAY,UAAZ;AACAgD,EAAAA,GAAG,CAAC5D,UAAJ,GAAiBA,UAAjB;AACA4D,EAAAA,GAAG,CAACiZ,QAAJ,GAAeA,QAAf;AACAjZ,EAAAA,GAAG,CAACkZ,UAAJ,GAAiBA,UAAjB;AACAlZ,EAAAA,GAAG,CAAC4Y,IAAJ,GAAW,IAAX;AAEA,MAAImlC,QAAQ,GAAGlU,QAAQ,CAACzmB,CAAD,EAAIpjB,GAAJ,CAAvB;;AAEA,MAAI,OAAOg7C,SAAS,CAACiC,aAAjB,KAAmC,WAAvC,EAAoD;AAClDjC,IAAAA,SAAS,CAACiC,aAAV,CAAwBnhD,OAAxB,CAAgC,UAAU0kB,IAAV,EAAgB4J,GAAhB,EAAqB;AACnD,UAAI5J,IAAI,CAAComB,OAAT,EAAkB;AAChB5mC,QAAAA,GAAG,CAACpG,IAAJ,GAAW4mB,IAAI,CAAComB,OAAhB;AACA5mC,QAAAA,GAAG,CAACxB,CAAJ,GAAQw8C,SAAS,CAACb,MAAV,GAAmB,CAACa,SAAS,CAACZ,KAAV,GAAkBY,SAAS,CAACb,MAA7B,IAAuC,CAAlE;AACAn6C,QAAAA,GAAG,CAACvB,CAAJ,GAAQu8C,SAAS,CAACjhB,QAAV,CAAmB3P,GAAnB,EAAwB3rB,CAAxB,GAA4B+Y,SAA5B,GAAwCC,aAAhD;AACAzX,QAAAA,GAAG,CAAChD,KAAJ,GAAY,UAAZ;AACAgD,QAAAA,GAAG,CAAC49C,MAAJ,GAAa,QAAb;AACA59C,QAAAA,GAAG,CAAC89C,MAAJ,GAAa,QAAb;AACA99C,QAAAA,GAAG,CAACwB,KAAJ,GAAY,KAAZ;AACAxB,QAAAA,GAAG,CAAC5D,UAAJ,GAAiBA,UAAjB;AACA4D,QAAAA,GAAG,CAACiZ,QAAJ,GAAeA,QAAf;AACAjZ,QAAAA,GAAG,CAACkZ,UAAJ,GAAiBA,UAAjB;AACAlZ,QAAAA,GAAG,CAAC4Y,IAAJ,GAAWoiC,SAAS,CAACpiC,IAArB;AACAmlC,QAAAA,QAAQ,GAAGlU,QAAQ,CAACzmB,CAAD,EAAIpjB,GAAJ,CAAnB;AACA,YAAIonD,aAAa,GAAGjjD,IAAI,CAAC65C,KAAL,CAClBD,QAAQ,CACL5sC,GADH,CACO,UAAC2nB,EAAD;AAAA,iBAAQ,CAACA,EAAE,CAACtX,OAAH,IAAcsX,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,EAAyBv7B,OAAzB,GAAmCQ,MAA3C;AAAA,SADP,EAEGif,MAFH,CAEU,UAAC69B,GAAD,EAAMoD,IAAN;AAAA,iBAAepD,GAAG,GAAGoD,IAArB;AAAA,SAFV,CADkB,CAApB;AAKAjD,QAAAA,SAAS,CAACjhB,QAAV,CAAmB3P,GAAnB,EAAwBrsB,MAAxB,IAAkCqpD,aAAa,IAAI5vC,SAAS,GAAGC,aAAhB,CAA/C;AACD;AACF,KArBD;AAsBD;;AAEDujC,EAAAA,SAAS,CAACj9C,MAAV,GAAmBoG,IAAI,CAAC65C,KAAL,CAAWhD,SAAS,CAACV,KAAV,GAAkBU,SAAS,CAACX,MAAvC,CAAnB;AACA,SAAOj3B,CAAP;AACD,CA3FM;AA6FP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMi+B,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU/hD,IAAV,EAAgB4nB,MAAhB,EAAwB;AACxD,MAAMs2B,QAAQ,GAAGC,QAAQ,CAACn+C,IAAD,EAAO;AAC9Bd,IAAAA,CAAC,EAAE0oB,MAAM,CAACizB,MADoB;AAE9B17C,IAAAA,CAAC,EAAEyoB,MAAM,CAACmzB,MAFoB;AAG9Bv8C,IAAAA,KAAK,EAAEopB,MAAM,CAACkzB,KAAP,GAAelzB,MAAM,CAACizB,MAHC;AAI9Bp8C,IAAAA,MAAM,EAAEmpB,MAAM,CAACozB,KAAP,GAAepzB,MAAM,CAACmzB,MAJA;AAK9Bx+B,IAAAA,IAAI,EAAEqL,MAAM,CAACrL,IALiB;AAM9B7e,IAAAA,KAAK,EAAE;AANuB,GAAP,CAAzB;AAQAwgD,EAAAA,QAAQ,CAAC6J,KAAT;AACD,CAVM;AAYA,IAAM5G,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUnhD,IAAV,EAAgB;AAChDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,UAHd,EAIGA,IAJH,CAIQ,WAJR,EAIqB,SAJrB,EAKGA,IALH,CAKQ,WALR,EAKqB,SALrB,EAMGsF,MANH,CAMU,MANV,EAOGtF,IAPH,CAOQ,WAPR,EAOqB,WAPrB,EAQGA,IARH,CASI,GATJ,EAUI,i1ZAVJ;AAYD,CAbM;AAeA,IAAM6mD,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUlhD,IAAV,EAAgB;AAChDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,UAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,IAJjB,EAKGA,IALH,CAKQ,QALR,EAKkB,IALlB,EAMGsF,MANH,CAMU,MANV,EAOGtF,IAPH,CAOQ,WAPR,EAOqB,WAPrB,EAQGA,IARH,CASI,GATJ,EAUI,0JAVJ;AAYD,CAbM;AAeA,IAAM+mD,eAAe,GAAG,SAAlBA,eAAkB,CAAUphD,IAAV,EAAgB;AAC7CA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,OAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,IAJjB,EAKGA,IALH,CAKQ,QALR,EAKkB,IALlB,EAMGsF,MANH,CAMU,MANV,EAOGtF,IAPH,CAOQ,WAPR,EAOqB,WAPrB,EAQGA,IARH,CASI,GATJ,EAUI,2UAVJ;AAYD,CAbM;AAeP;AACA;AACA;AACA;AACA;;AACO,IAAMinD,eAAe,GAAG,SAAlBA,eAAkB,CAAUthD,IAAV,EAAgB;AAC7CA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,WAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,gBANvB,EAOGA,IAPH,CAOQ,aAPR,EAOuB,EAPvB,EAQGA,IARH,CAQQ,cARR,EAQwB,EARxB,EASGA,IATH,CASQ,QATR,EASkB,MATlB,EAUGsF,MAVH,CAUU,MAVV,EAWGtF,IAXH,CAWQ,GAXR,EAWa,uBAXb,EAD6C,CAYN;AACxC,CAbM;AAcP;AACA;AACA;AACA;AACA;;AACO,IAAMmnD,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUxhD,IAAV,EAAgB;AACnDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,aAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,2BAVb;AAWD,CAZM;AAaP;AACA;AACA;AACA;AACA;;AACO,IAAMonD,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAUzhD,IAAV,EAAgB;AAClDA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,gBAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,QATV,EAUGtF,IAVH,CAUQ,IAVR,EAUc,EAVd,EAWGA,IAXH,CAWQ,IAXR,EAWc,EAXd,EAYGA,IAZH,CAYQ,GAZR,EAYa,CAZb,EADkD,CAclD;AACD,CAfM;AAgBP;AACA;AACA;AACA;AACA;;AACO,IAAMknD,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAUvhD,IAAV,EAAgB;AAClD,MAAMgoD,IAAI,GAAGhoD,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAb;AACA,MAAM0mB,MAAM,GAAG2hC,IAAI,CAChBroD,MADY,CACL,QADK,EAEZtF,IAFY,CAEP,IAFO,EAED,WAFC,EAGZA,IAHY,CAGP,aAHO,EAGQ,EAHR,EAIZA,IAJY,CAIP,cAJO,EAIS,CAJT,EAKZA,IALY,CAKP,QALO,EAKG,MALH,EAMZA,IANY,CAMP,MANO,EAMC,EAND,EAOZA,IAPY,CAOP,MAPO,EAOC,CAPD,CAAf,CAFkD,CAWlD;;AACAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,MAFR,EAEgB,OAFhB,EAGGA,IAHH,CAGQ,QAHR,EAGkB,SAHlB,EAIG0E,KAJH,CAIS,kBAJT,EAI6B,MAJ7B,EAKG1E,IALH,CAKQ,cALR,EAKwB,KALxB,EAMGA,IANH,CAMQ,GANR,EAMa,mBANb,EAZkD,CAoBlD;;AACAgsB,EAAAA,MAAM,CACH1mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,MAFR,EAEgB,MAFhB,EAGGA,IAHH,CAGQ,QAHR,EAGkB,SAHlB,EAIG0E,KAJH,CAIS,kBAJT,EAI6B,MAJ7B,EAKG1E,IALH,CAKQ,cALR,EAKwB,KALxB,EAMGA,IANH,CAMQ,GANR,EAMa,yBANb,EArBkD,CA4BlD;AACD,CA7BM;AA+BA,IAAMgkD,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO;AACLn/C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLod,IAAAA,IAAI,EAAExe,SAHD;AAILugD,IAAAA,MAAM,EAAEvgD,SAJH;AAKLgB,IAAAA,KAAK,EAAE,MALF;AAMLP,IAAAA,KAAK,EAAET,SANF;AAOLU,IAAAA,MAAM,EAAEV,SAPH;AAQLwgD,IAAAA,UAAU,EAAE,CARP;AASLv/C,IAAAA,EAAE,EAAE,CATC;AAULC,IAAAA,EAAE,EAAE,CAVC;AAWLiD,IAAAA,KAAK,EAAE,IAXF;AAYLs8C,IAAAA,MAAM,EAAEzgD;AAZH,GAAP;AAcD,CAfM;AAiBA,IAAMkgD,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO;AACL/+C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLod,IAAAA,IAAI,EAAE,SAHD;AAILD,IAAAA,MAAM,EAAE,MAJH;AAKL9d,IAAAA,KAAK,EAAE,GALF;AAML8/C,IAAAA,MAAM,EAAE,OANH;AAOL7/C,IAAAA,MAAM,EAAE,GAPH;AAQLO,IAAAA,EAAE,EAAE,CARC;AASLC,IAAAA,EAAE,EAAE;AATC,GAAP;AAWD,CAZM;;AAcP,IAAMyoD,sBAAsB,GAAI,YAAY;AAC1C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASO,MAAT,CAAgBC,OAAhB,EAAyBpkC,CAAzB,EAA4B5kB,CAA5B,EAA+BC,CAA/B,EAAkCX,KAAlC,EAAyCC,MAAzC,EAAiDgnD,SAAjD,EAA4D;AAC1D,QAAMnrD,IAAI,GAAGwpB,CAAC,CACXnkB,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEA6E,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVnE,IAHU,CAGL,GAHK,EAGA8E,CAAC,GAAGV,MAAM,GAAG,CAAb,GAAiB,CAHjB,EAIVM,KAJU,CAIJ,aAJI,EAIW,QAJX,EAKVzE,IALU,CAKL4tD,OALK,CAAb;;AAMAC,IAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS2C,OAAT,CAAiBF,OAAjB,EAA0BpkC,CAA1B,EAA6B5kB,CAA7B,EAAgCC,CAAhC,EAAmCX,KAAnC,EAA0CC,MAA1C,EAAkDgnD,SAAlD,EAA6D1pD,IAA7D,EAAmE;AACjE,QAAQ6c,aAAR,GAA4D7c,IAA5D,CAAQ6c,aAAR;AAAA,QAAuBC,eAAvB,GAA4D9c,IAA5D,CAAuB8c,eAAvB;AAAA,QAAwCC,eAAxC,GAA4D/c,IAA5D,CAAwC+c,eAAxC;AAEA,QAAM+lC,KAAK,GAAGqJ,OAAO,CAACpmD,KAAR,CAAc+b,qEAAd,CAAd;;AACA,SAAK,IAAItiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsjD,KAAK,CAACrjD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMwJ,EAAE,GAAGxJ,CAAC,GAAGqd,aAAJ,GAAqBA,aAAa,IAAIimC,KAAK,CAACrjD,MAAN,GAAe,CAAnB,CAAd,GAAuC,CAAtE;AACA,UAAMlB,IAAI,GAAGwpB,CAAC,CACXnkB,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEA6E,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVnE,IAHU,CAGL,GAHK,EAGA8E,CAHA,EAIVJ,KAJU,CAIJ,aAJI,EAIW,QAJX,EAKVA,KALU,CAKJ,WALI,EAKS6Z,aALT,EAMV7Z,KANU,CAMJ,aANI,EAMW+Z,eANX,EAOV/Z,KAPU,CAOJ,aAPI,EAOW8Z,eAPX,CAAb;AAQAve,MAAAA,IAAI,CACDqF,MADH,CACU,OADV,EAEGtF,IAFH,CAEQ,GAFR,EAEa6E,CAAC,GAAGV,KAAK,GAAG,CAFzB,EAGGnE,IAHH,CAGQ,IAHR,EAGc0K,EAHd,EAIGzK,IAJH,CAIQukD,KAAK,CAACtjD,CAAD,CAJb;AAMAjB,MAAAA,IAAI,CACDD,IADH,CACQ,GADR,EACa8E,CAAC,GAAGV,MAAM,GAAG,GAD1B,EAEGpE,IAFH,CAEQ,mBAFR,EAE6B,SAF7B,EAGGA,IAHH,CAGQ,oBAHR,EAG8B,SAH9B;;AAKA8tD,MAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS4C,IAAT,CAAcH,OAAd,EAAuBpkC,CAAvB,EAA0B5kB,CAA1B,EAA6BC,CAA7B,EAAgCX,KAAhC,EAAuCC,MAAvC,EAA+CgnD,SAA/C,EAA0D1pD,IAA1D,EAAgE;AAC9D,QAAM0F,CAAC,GAAGqiB,CAAC,CAACnkB,MAAF,CAAS,QAAT,CAAV;AACA,QAAMqS,CAAC,GAAGvQ,CAAC,CACR9B,MADO,CACA,eADA,EAEPtF,IAFO,CAEF,GAFE,EAEG6E,CAFH,EAGP7E,IAHO,CAGF,GAHE,EAGG8E,CAHH,EAIP9E,IAJO,CAIF,OAJE,EAIOmE,KAJP,EAKPnE,IALO,CAKF,QALE,EAKQoE,MALR,CAAV;AAOA,QAAMnE,IAAI,GAAG0X,CAAC,CACXrS,MADU,CACH,WADG,EAEVZ,KAFU,CAEJ,SAFI,EAEO,OAFP,EAGVA,KAHU,CAGJ,QAHI,EAGM,MAHN,EAIVA,KAJU,CAIJ,OAJI,EAIK,MAJL,CAAb;AAMAzE,IAAAA,IAAI,CACDqF,MADH,CACU,KADV,EAEGZ,KAFH,CAES,SAFT,EAEoB,YAFpB,EAGGA,KAHH,CAGS,YAHT,EAGuB,QAHvB,EAIGA,KAJH,CAIS,gBAJT,EAI2B,QAJ3B,EAKGzE,IALH,CAKQ4tD,OALR;AAOAE,IAAAA,OAAO,CAACF,OAAD,EAAUzmD,CAAV,EAAavC,CAAb,EAAgBC,CAAhB,EAAmBX,KAAnB,EAA0BC,MAA1B,EAAkCgnD,SAAlC,EAA6C1pD,IAA7C,CAAP;;AACAosD,IAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;;;AACE,WAAS0C,aAAT,CAAuBG,MAAvB,EAA+BC,iBAA/B,EAAkD;AAChD,SAAK,IAAM9rD,GAAX,IAAkB8rD,iBAAlB,EAAqC;AACnC,UAAIA,iBAAiB,CAAC3yB,cAAlB,CAAiCn5B,GAAjC,CAAJ,EAA2C;AAAE;AAC3C6rD,QAAAA,MAAM,CAACjuD,IAAP,CAAYoC,GAAZ,EAAiB8rD,iBAAiB,CAAC9rD,GAAD,CAAlC;AACD;AACF;AACF;;AAED,SAAO,UAAUV,IAAV,EAAgB;AACrB,WAAOA,IAAI,CAACkf,aAAL,KAAuB,IAAvB,GAA8BotC,IAA9B,GAAqCtsD,IAAI,CAACkf,aAAL,KAAuB,KAAvB,GAA+BgtC,MAA/B,GAAwCG,OAApF;AACD,GAFD;AAGD,CA9G8B,EAA/B;;AAgHA,IAAMpC,8BAA8B,GAAI,YAAY;AAClD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASiC,MAAT,CAAgBC,OAAhB,EAAyBpkC,CAAzB,EAA4B5kB,CAA5B,EAA+BC,CAA/B,EAAkCX,KAAlC,EAAyCC,MAAzC,EAAiDgnD,SAAjD,EAA4D;AAC1D,QAAMnrD,IAAI,GAAGwpB,CAAC,CACXnkB,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEA6E,CAFA,EAGV7E,IAHU,CAGL,GAHK,EAGA8E,CAHA,EAIVJ,KAJU,CAIJ,aAJI,EAIW,OAJX,EAKVzE,IALU,CAKL4tD,OALK,CAAb;;AAMAC,IAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS2C,OAAT,CAAiBF,OAAjB,EAA0BpkC,CAA1B,EAA6B5kB,CAA7B,EAAgCC,CAAhC,EAAmCX,KAAnC,EAA0CC,MAA1C,EAAkDgnD,SAAlD,EAA6D1pD,IAA7D,EAAmE;AACjE,QAAQ6c,aAAR,GAA4D7c,IAA5D,CAAQ6c,aAAR;AAAA,QAAuBC,eAAvB,GAA4D9c,IAA5D,CAAuB8c,eAAvB;AAAA,QAAwCC,eAAxC,GAA4D/c,IAA5D,CAAwC+c,eAAxC;AAEA,QAAM+lC,KAAK,GAAGqJ,OAAO,CAACpmD,KAAR,CAAc+b,qEAAd,CAAd;;AACA,SAAK,IAAItiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsjD,KAAK,CAACrjD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMwJ,EAAE,GAAGxJ,CAAC,GAAGqd,aAAJ,GAAqBA,aAAa,IAAIimC,KAAK,CAACrjD,MAAN,GAAe,CAAnB,CAAd,GAAuC,CAAtE;AACA,UAAMlB,IAAI,GAAGwpB,CAAC,CACXnkB,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEA6E,CAFA,EAGV7E,IAHU,CAGL,GAHK,EAGA8E,CAHA,EAIVJ,KAJU,CAIJ,aAJI,EAIW,OAJX,EAKVA,KALU,CAKJ,WALI,EAKS6Z,aALT,EAMV7Z,KANU,CAMJ,aANI,EAMW+Z,eANX,EAOV/Z,KAPU,CAOJ,aAPI,EAOW8Z,eAPX,CAAb;AAQAve,MAAAA,IAAI,CAACqF,MAAL,CAAY,OAAZ,EAAqBtF,IAArB,CAA0B,GAA1B,EAA+B6E,CAA/B,EAAkC7E,IAAlC,CAAuC,IAAvC,EAA6C0K,EAA7C,EAAiDzK,IAAjD,CAAsDukD,KAAK,CAACtjD,CAAD,CAA3D;AAEAjB,MAAAA,IAAI,CACDD,IADH,CACQ,GADR,EACa8E,CAAC,GAAGV,MAAM,GAAG,GAD1B,EAEGpE,IAFH,CAEQ,mBAFR,EAE6B,SAF7B,EAGGA,IAHH,CAGQ,oBAHR,EAG8B,SAH9B;;AAKA8tD,MAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS4C,IAAT,CAAcH,OAAd,EAAuBpkC,CAAvB,EAA0B5kB,CAA1B,EAA6BC,CAA7B,EAAgCX,KAAhC,EAAuCC,MAAvC,EAA+CgnD,SAA/C,EAA0D1pD,IAA1D,EAAgE;AAC9D,QAAM0F,CAAC,GAAGqiB,CAAC,CAACnkB,MAAF,CAAS,QAAT,CAAV;AACA,QAAMqS,CAAC,GAAGvQ,CAAC,CACR9B,MADO,CACA,eADA,EAEPtF,IAFO,CAEF,GAFE,EAEG6E,CAFH,EAGP7E,IAHO,CAGF,GAHE,EAGG8E,CAHH,EAIP9E,IAJO,CAIF,OAJE,EAIOmE,KAJP,EAKPnE,IALO,CAKF,QALE,EAKQoE,MALR,CAAV;AAOA,QAAMnE,IAAI,GAAG0X,CAAC,CACXrS,MADU,CACH,WADG,EAEVZ,KAFU,CAEJ,SAFI,EAEO,OAFP,EAGVA,KAHU,CAGJ,QAHI,EAGM,MAHN,EAIVA,KAJU,CAIJ,OAJI,EAIK,MAJL,CAAb;AAMAzE,IAAAA,IAAI,CACDqF,MADH,CACU,KADV,EAEGZ,KAFH,CAES,SAFT,EAEoB,YAFpB,EAGGA,KAHH,CAGS,YAHT,EAGuB,QAHvB,EAIGA,KAJH,CAIS,gBAJT,EAI2B,QAJ3B,EAKGzE,IALH,CAKQ4tD,OALR;AAOAE,IAAAA,OAAO,CAACF,OAAD,EAAUzmD,CAAV,EAAavC,CAAb,EAAgBC,CAAhB,EAAmBX,KAAnB,EAA0BC,MAA1B,EAAkCgnD,SAAlC,EAA6C1pD,IAA7C,CAAP;;AACAosD,IAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;;;AACE,WAAS0C,aAAT,CAAuBG,MAAvB,EAA+BC,iBAA/B,EAAkD;AAChD,SAAK,IAAM9rD,GAAX,IAAkB8rD,iBAAlB,EAAqC;AACnC,UAAIA,iBAAiB,CAAC3yB,cAAlB,CAAiCn5B,GAAjC,CAAJ,EAA2C;AAAE;AAC3C6rD,QAAAA,MAAM,CAACjuD,IAAP,CAAYoC,GAAZ,EAAiB8rD,iBAAiB,CAAC9rD,GAAD,CAAlC;AACD;AACF;AACF;;AAED,SAAO,UAAUV,IAAV,EAAgB;AACrB,WAAOA,IAAI,CAACkf,aAAL,KAAuB,IAAvB,GAA8BotC,IAA9B,GAAqCtsD,IAAI,CAACkf,aAAL,KAAuB,KAAvB,GAA+BgtC,MAA/B,GAAwCG,OAApF;AACD,GAFD;AAGD,CA1GsC,EAAvC;;AA4GA,iEAAe;AACbjK,EAAAA,QAAQ,EAARA,QADa;AAEb5T,EAAAA,QAAQ,EAARA,QAFa;AAGb0c,EAAAA,SAAS,EAATA,SAHa;AAIbnH,EAAAA,SAAS,EAATA,SAJa;AAKbK,EAAAA,SAAS,EAATA,SALa;AAMb8F,EAAAA,SAAS,EAATA,SANa;AAObE,EAAAA,iBAAiB,EAAjBA,iBAPa;AAQbnJ,EAAAA,aAAa,EAAbA,aARa;AASb4E,EAAAA,cAAc,EAAdA,cATa;AAUbE,EAAAA,QAAQ,EAARA,QAVa;AAWbC,EAAAA,kBAAkB,EAAlBA,kBAXa;AAYbT,EAAAA,eAAe,EAAfA,eAZa;AAabE,EAAAA,qBAAqB,EAArBA,qBAba;AAcbC,EAAAA,oBAAoB,EAApBA,oBAda;AAebF,EAAAA,oBAAoB,EAApBA,oBAfa;AAgBbJ,EAAAA,kBAAkB,EAAlBA,kBAhBa;AAiBbD,EAAAA,kBAAkB,EAAlBA,kBAjBa;AAkBbE,EAAAA,eAAe,EAAfA,eAlBa;AAmBb/C,EAAAA,UAAU,EAAVA,UAnBa;AAoBbJ,EAAAA,WAAW,EAAXA,WApBa;AAqBbmI,EAAAA,SAAS,EAATA,SArBa;AAsBbE,EAAAA,WAAW,EAAXA,WAtBa;AAuBb3L,EAAAA,kBAAkB,EAAlBA,kBAvBa;AAwBbvgB,EAAAA,WAAW,EAAXA,gEAAWA;AAxBE,CAAf;;;;;;;;;;;;;;;;;;;AC5gCA,IAAMxW,OAAO,GAAG,EAAhB;AAEO,IAAM4kC,GAAG,GAAG,SAANA,GAAM,CAAC/rD,GAAD,EAAMivB,GAAN,EAAc;AAC/B9H,EAAAA,OAAO,CAACnnB,GAAD,CAAP,GAAeivB,GAAf;AACD,CAFM;AAIA,IAAM+8B,GAAG,GAAG,SAANA,GAAM,CAACxiC,CAAD;AAAA,SAAOrC,OAAO,CAACqC,CAAD,CAAd;AAAA,CAAZ;AACA,IAAM3pB,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAM1B,MAAM,CAAC0B,IAAP,CAAYsnB,OAAZ,CAAN;AAAA,CAAb;AACA,IAAM8kC,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAMpsD,IAAI,GAAGd,MAAb;AAAA,CAAb;AAEP,iEAAe;AACbitD,EAAAA,GAAG,EAAHA,GADa;AAEbD,EAAAA,GAAG,EAAHA,GAFa;AAGblsD,EAAAA,IAAI,EAAJA,IAHa;AAIbosD,EAAAA,IAAI,EAAJA;AAJa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACO,IAAME,cAAc,GAAG,SAAjBA,cAAiB,CAAC9kC,CAAD;AAAA,SAC5BA,CAAC,CACEnkB,MADH,CACU,QADV,EAEE;AACA;AAHF,GAIGtF,IAJH,CAIQ,OAJR,EAIiB,aAJjB,EAKGA,IALH,CAKQ,GALR,EAKa+B,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAL/B,EAMGjhB,IANH,CAMQ,IANR,EAMc+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BtC,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAN5D,EAOGjhB,IAPH,CAOQ,IAPR,EAOc+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BtC,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAP5D,CAD4B;AAAA,CAAvB;AAUP;AACA;AACA;AACA;AACA;;AACO,IAAMutC,WAAW,GAAG,SAAdA,WAAc,CAAC/kC,CAAD;AAAA,SACzBA,CAAC,CACEnkB,MADH,CACU,MADV,EAEGZ,KAFH,CAES,QAFT,EAEmB,MAFnB,EAGGA,KAHH,CAGS,kBAHT,EAG6B,GAH7B,EAIG1E,IAJH,CAIQ,IAJR,EAIc+B,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAJhC,EAKGlhB,IALH,CAKQ,OALR,EAKiB,SALjB,EAMGA,IANH,CAMQ,IANR,EAMc+B,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAlB,GAA+B,CAN7C,EAOGlhB,IAPH,CAOQ,IAPR,EAOc,CAPd,EAQGA,IARH,CAQQ,IARR,EAQc,CARd,CADyB;AAAA,CAApB;AAWP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMyuD,eAAe,GAAG,SAAlBA,eAAkB,CAAChlC,CAAD,EAAIilC,QAAJ,EAAiB;AAC9C,MAAM/gD,KAAK,GAAG8b,CAAC,CACZnkB,MADW,CACJ,MADI,EAEXtF,IAFW,CAEN,GAFM,EAED,IAAI+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAFrB,EAGXrE,IAHW,CAGN,GAHM,EAGD+B,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAlB,GAA+B,IAAInf,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAHpD,EAIXrE,IAJW,CAIN,WAJM,EAIO+B,kDAAS,GAAG4L,KAAZ,CAAkB2R,QAJzB,EAKXtf,IALW,CAKN,OALM,EAKG,aALH,EAMXC,IANW,CAMNyuD,QAAQ,CAAChvD,EANH,CAAd;AAQA,MAAMwuB,QAAQ,GAAGvgB,KAAK,CAACzK,IAAN,GAAaU,OAAb,EAAjB;AACA6lB,EAAAA,CAAC,CAAC9pB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGK,IADH,CACQ,GADR,EACa+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAD/B,EAEGrE,IAFH,CAEQ,GAFR,EAEa+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAF/B,EAGGrE,IAHH,CAGQ,OAHR,EAGiBkuB,QAAQ,CAAC/pB,KAAT,GAAiB,IAAIpC,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAHxD,EAIGrE,IAJH,CAIQ,QAJR,EAIkBkuB,QAAQ,CAAC9pB,MAAT,GAAkB,IAAIrC,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAJ1D,EAKGrE,IALH,CAKQ,IALR,EAKc+B,kDAAS,GAAG4L,KAAZ,CAAkBgU,MALhC;AAOA,SAAOhU,KAAP;AACD,CAlBM;AAoBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMghD,cAAc,GAAG,SAAjBA,cAAiB,CAACllC,CAAD,EAAIilC,QAAJ,EAAiB;AAC7C,MAAM5gC,QAAQ,GAAG,SAAXA,QAAW,CAAU4B,MAAV,EAAkBrpB,GAAlB,EAAuBonB,OAAvB,EAAgC;AAC/C,QAAMkC,KAAK,GAAGD,MAAM,CACjBpqB,MADW,CACJ,OADI,EAEXtF,IAFW,CAEN,GAFM,EAED,IAAI+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAFrB,EAGXpE,IAHW,CAGNoG,GAHM,CAAd;;AAIA,QAAI,CAAConB,OAAL,EAAc;AACZkC,MAAAA,KAAK,CAAC3vB,IAAN,CAAW,IAAX,EAAiB+B,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAnC;AACD;AACF,GARD;;AASA,MAAM5H,KAAK,GAAGmQ,CAAC,CACZnkB,MADW,CACJ,MADI,EAEXtF,IAFW,CAEN,GAFM,EAED,IAAI+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAFrB,EAGXrE,IAHW,CAGN,GAHM,EAGD+B,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAlB,GAA+B,MAAMnf,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAHtD,EAIXrE,IAJW,CAIN,WAJM,EAIO+B,kDAAS,GAAG4L,KAAZ,CAAkB2R,QAJzB,EAKXtf,IALW,CAKN,OALM,EAKG,aALH,EAMXC,IANW,CAMNyuD,QAAQ,CAACE,YAAT,CAAsB,CAAtB,CANM,CAAd;AAQA,MAAMp1C,QAAQ,GAAGF,KAAK,CAACpW,IAAN,GAAaU,OAAb,EAAjB;AACA,MAAMgqB,WAAW,GAAGpU,QAAQ,CAACpV,MAA7B;AAEA,MAAMtE,WAAW,GAAG2pB,CAAC,CAClBnkB,MADiB,CACV,MADU,EACF;AADE,GAEjBtF,IAFiB,CAEZ,GAFY,EAEP+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAFX,EAGjBrE,IAHiB,CAIhB,GAJgB,EAKhB4tB,WAAW,GACT7rB,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4B,GAD9B,GAEEtC,kDAAS,GAAG4L,KAAZ,CAAkBqT,aAFpB,GAGEjf,kDAAS,GAAG4L,KAAZ,CAAkBuT,UARJ,EAUjBlhB,IAViB,CAUZ,OAVY,EAUH,mBAVG,CAApB;AAYA,MAAIytB,OAAO,GAAG,IAAd;AACA,MAAIohC,QAAQ,GAAG,IAAf;AACAH,EAAAA,QAAQ,CAACE,YAAT,CAAsBzsD,OAAtB,CAA8B,UAAUsX,KAAV,EAAiB;AAC7C,QAAI,CAACgU,OAAL,EAAc;AACZK,MAAAA,QAAQ,CAAChuB,WAAD,EAAc2Z,KAAd,EAAqBo1C,QAArB,CAAR;AACAA,MAAAA,QAAQ,GAAG,KAAX;AACD;;AACDphC,IAAAA,OAAO,GAAG,KAAV;AACD,GAND;AAQA,MAAMqhC,SAAS,GAAGrlC,CAAC,CAChBnkB,MADe,CACR,MADQ,EACA;AADA,GAEftF,IAFe,CAEV,IAFU,EAEJ+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAFd,EAGfrE,IAHe,CAGV,IAHU,EAGJ+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BupB,WAA5B,GAA0C7rB,kDAAS,GAAG4L,KAAZ,CAAkBqT,aAAlB,GAAkC,CAHxE,EAIfhhB,IAJe,CAIV,IAJU,EAIJ+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BupB,WAA5B,GAA0C7rB,kDAAS,GAAG4L,KAAZ,CAAkBqT,aAAlB,GAAkC,CAJxE,EAKfhhB,IALe,CAKV,OALU,EAKD,eALC,CAAlB;AAMA,MAAM+uD,QAAQ,GAAGjvD,WAAW,CAACoD,IAAZ,GAAmBU,OAAnB,EAAjB;AACA,MAAMO,KAAK,GAAGqG,IAAI,CAACmrB,GAAL,CAASo5B,QAAQ,CAAC5qD,KAAlB,EAAyBqV,QAAQ,CAACrV,KAAlC,CAAd;AAEA2qD,EAAAA,SAAS,CAAC9uD,IAAV,CAAe,IAAf,EAAqBmE,KAAK,GAAG,IAAIpC,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAnD,EApD6C,CAqD7C;;AAEAolB,EAAAA,CAAC,CAAC9pB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGK,IADH,CACQ,GADR,EACa+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAD/B,EAEGrE,IAFH,CAEQ,GAFR,EAEa+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAF/B,EAGGrE,IAHH,CAGQ,OAHR,EAGiBmE,KAAK,GAAG,IAAIpC,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAH/C,EAIGrE,IAJH,CAIQ,QAJR,EAIkB+uD,QAAQ,CAAC3qD,MAAT,GAAkBwpB,WAAlB,GAAgC,IAAI7rB,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAJxE,EAKGrE,IALH,CAKQ,IALR,EAKc+B,kDAAS,GAAG4L,KAAZ,CAAkBgU,MALhC;AAOA,SAAO8H,CAAP;AACD,CA/DM;AAiEP;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMulC,cAAc,GAAG,SAAjBA,cAAiB,CAACvlC,CAAD,EAAIilC,QAAJ,EAAcO,MAAd,EAAyB;AACrD,MAAMC,GAAG,GAAGntD,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAA9B;AACA,MAAM8qD,MAAM,GAAG,IAAIptD,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAArC;AACA,MAAM+qD,MAAM,GAAG3lC,CAAC,CAACvmB,IAAF,GAASU,OAAT,EAAf;AACA,MAAMyrD,QAAQ,GAAGD,MAAM,CAACjrD,KAAxB;AACA,MAAMmrD,IAAI,GAAGF,MAAM,CAACvqD,CAApB;AAEA,MAAMyU,KAAK,GAAGmQ,CAAC,CACZnkB,MADW,CACJ,MADI,EAEXtF,IAFW,CAEN,GAFM,EAED,CAFC,EAGXA,IAHW,CAGN,GAHM,EAGD+B,kDAAS,GAAG4L,KAAZ,CAAkBwT,UAHjB,EAIXnhB,IAJW,CAIN,WAJM,EAIO+B,kDAAS,GAAG4L,KAAZ,CAAkB2R,QAJzB,EAKXtf,IALW,CAKN,OALM,EAKG,aALH,EAMXC,IANW,CAMNyuD,QAAQ,CAAChvD,EANH,CAAd;AAQA,MAAM8Z,QAAQ,GAAGF,KAAK,CAACpW,IAAN,GAAaU,OAAb,EAAjB;AACA,MAAM2rD,UAAU,GAAG/1C,QAAQ,CAACrV,KAAT,GAAiBgrD,MAApC;AACA,MAAIhrD,KAAK,GAAGqG,IAAI,CAACmrB,GAAL,CAAS45B,UAAT,EAAqBF,QAArB,CAAZ,CAjBqD,CAiBT;;AAC5C,MAAIlrD,KAAK,KAAKkrD,QAAd,EAAwB;AACtBlrD,IAAAA,KAAK,GAAGA,KAAK,GAAGgrD,MAAhB;AACD;;AACD,MAAIlmB,MAAJ,CArBqD,CAsBrD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMumB,QAAQ,GAAG/lC,CAAC,CAACvmB,IAAF,GAASU,OAAT,EAAjB,CA9BqD,CA+BrD;;AAEA,MAAI8qD,QAAQ,CAACjjC,GAAb,EAAkB,CAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AAEDwd,EAAAA,MAAM,GAAGqmB,IAAI,GAAGJ,GAAhB;;AACA,MAAIK,UAAU,GAAGF,QAAjB,EAA2B;AACzBpmB,IAAAA,MAAM,GAAG,CAAComB,QAAQ,GAAGlrD,KAAZ,IAAqB,CAArB,GAAyB+qD,GAAlC;AACD;;AACD,MAAI1kD,IAAI,CAACC,GAAL,CAAS6kD,IAAI,GAAGE,QAAQ,CAAC3qD,CAAzB,IAA8BqqD,GAAlC,EAAuC;AACrC,QAAIK,UAAU,GAAGF,QAAjB,EAA2B;AACzBpmB,MAAAA,MAAM,GAAGqmB,IAAI,GAAG,CAACC,UAAU,GAAGF,QAAd,IAA0B,CAA1C;AACD;AACF;;AAED,MAAMnd,KAAK,GAAG,IAAInwC,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAApC,CA3DqD,CA4DrD;;AACAuI,EAAAA,CAAC,CAAC9pB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGK,IADH,CACQ,GADR,EACaipC,MADb,EAEGjpC,IAFH,CAEQ,GAFR,EAEakyC,KAFb,EAGGlyC,IAHH,CAGQ,OAHR,EAGiBivD,MAAM,GAAG,cAAH,GAAoB,UAH3C,EAIGjvD,IAJH,CAIQ,OAJR,EAIiBmE,KAJjB,EAKGnE,IALH,CAMI,QANJ,EAOIwvD,QAAQ,CAACprD,MAAT,GAAkBrC,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAApC,GAAiDnf,kDAAS,GAAG4L,KAAZ,CAAkBwT,UAAnE,GAAgF,CAPpF,EASGnhB,IATH,CASQ,IATR,EASc,GATd;AAWAsZ,EAAAA,KAAK,CAACtZ,IAAN,CAAW,GAAX,EAAgBipC,MAAM,GAAGimB,GAAzB;AACA,MAAIK,UAAU,IAAIF,QAAlB,EAA4B/1C,KAAK,CAACtZ,IAAN,CAAW,GAAX,EAAgBsvD,IAAI,GAAG,CAACnrD,KAAK,GAAGgrD,MAAT,IAAmB,CAA1B,GAA8BI,UAAU,GAAG,CAA3C,GAA+CL,GAA/D,EAzEyB,CA2ErD;;AACAzlC,EAAAA,CAAC,CAAC9pB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGK,IADH,CACQ,GADR,EACaipC,MADb,EAEGjpC,IAFH,CAGI,GAHJ,EAII+B,kDAAS,GAAG4L,KAAZ,CAAkBwT,UAAlB,GAA+Bpf,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAjD,GAA8Dnf,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAJpF,EAMGrE,IANH,CAMQ,OANR,EAMiBmE,KANjB,EAOE;AAPF,GAQGnE,IARH,CAQQ,QARR,EAQkB+B,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAlB,GAA+B,CARjD,EASGlhB,IATH,CASQ,IATR,EASc+B,kDAAS,GAAG4L,KAAZ,CAAkBgU,MAThC,EA5EqD,CAuFrD;;AACA8H,EAAAA,CAAC,CAAC9pB,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGK,IADH,CACQ,GADR,EACaipC,MADb,EAEGjpC,IAFH,CAGI,GAHJ,EAII+B,kDAAS,GAAG4L,KAAZ,CAAkBwT,UAAlB,GAA+Bpf,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAAjD,GAA8Dnf,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAJpF,EAMGrE,IANH,CAMQ,OANR,EAMiBmE,KANjB,EAOGnE,IAPH,CAOQ,QAPR,EAOkBwvD,QAAQ,CAACprD,MAAT,GAAkB,CAAlB,GAAsB,IAAIrC,kDAAS,GAAG4L,KAAZ,CAAkBuT,UAP9D,EAQGlhB,IARH,CAQQ,IARR,EAQc+B,kDAAS,GAAG4L,KAAZ,CAAkBgU,MARhC;AAUA,SAAO8H,CAAP;AACD,CAnGM;;AAqGP,IAAMgmC,YAAY,GAAG,SAAfA,YAAe,CAAChmC,CAAD,EAAO;AAC1BA,EAAAA,CAAC,CAACnkB,MAAF,CAAS,QAAT,EACE;AACA;AAFF,GAGGtF,IAHH,CAGQ,OAHR,EAGiB,iBAHjB,EAIGA,IAJH,CAIQ,GAJR,EAIa+B,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAAlB,GAA6Blf,kDAAS,GAAG4L,KAAZ,CAAkB2T,WAJ5D,EAKGthB,IALH,CAMI,IANJ,EAOI+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BtC,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAA9C,GAAyDlf,kDAAS,GAAG4L,KAAZ,CAAkB2T,WAP/E,EASGthB,IATH,CAUI,IAVJ,EAWI+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BtC,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAA9C,GAAyDlf,kDAAS,GAAG4L,KAAZ,CAAkB2T,WAX/E;AAcA,SACEmI,CAAC,CACEnkB,MADH,CACU,QADV,EAEE;AACA;AAHF,GAIGtF,IAJH,CAIQ,OAJR,EAIiB,iBAJjB,EAKGA,IALH,CAKQ,GALR,EAKa+B,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAL/B,EAMGjhB,IANH,CAMQ,IANR,EAMc+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BtC,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAA9C,GAAyD,CANvE,EAOGjhB,IAPH,CAOQ,IAPR,EAOc+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4BtC,kDAAS,GAAG4L,KAAZ,CAAkBsT,QAA9C,GAAyD,CAPvE,CADF;AAUD,CAzBD;;AA0BA,IAAMyuC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACjmC,CAAD,EAAIilC,QAAJ,EAAiB;AACzC,MAAIvqD,KAAK,GAAGpC,kDAAS,GAAG4L,KAAZ,CAAkByT,SAA9B;AACA,MAAIhd,MAAM,GAAGrC,kDAAS,GAAG4L,KAAZ,CAAkB0T,UAA/B;;AAEA,MAAIqtC,QAAQ,CAACiB,QAAb,EAAuB;AACrB,QAAIC,GAAG,GAAGzrD,KAAV;AACAA,IAAAA,KAAK,GAAGC,MAAR;AACAA,IAAAA,MAAM,GAAGwrD,GAAT;AACD;;AACD,SAAOnmC,CAAC,CACLnkB,MADI,CACG,MADH,EAEJZ,KAFI,CAEE,QAFF,EAEY,OAFZ,EAGJA,KAHI,CAGE,MAHF,EAGU,OAHV,EAIJ1E,IAJI,CAIC,OAJD,EAIUmE,KAJV,EAKJnE,IALI,CAKC,QALD,EAKWoE,MALX,EAMJpE,IANI,CAMC,GAND,EAMM+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OANxB,EAOJrE,IAPI,CAOC,GAPD,EAOM+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAPxB,CAAP;AAQD,CAjBD;;AAmBO,IAAM6rC,QAAQ,GAAG,SAAXA,QAAW,CAAUvqC,IAAV,EAAgB0mD,QAAhB,EAA0B;AAChD;AACA,MAAMwD,KAAK,GAAGxD,QAAQ,CAACpsD,IAAT,CAAckH,OAAd,CAAsBqc,qEAAtB,EAA6C,GAA7C,CAAd;AAEA,MAAM4gC,QAAQ,GAAGz+C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA8+C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACxnD,CAA5B;AACAu/C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACvnD,CAA5B;AACAs/C,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAACpI,MAAvC;AACAG,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,MAAd,EAAsBqsD,QAAQ,CAACnqC,IAA/B;;AACA,MAAI,OAAOmqC,QAAQ,CAAChpD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC+gD,IAAAA,QAAQ,CAACpkD,IAAT,CAAc,OAAd,EAAuBqsD,QAAQ,CAAChpD,KAAhC;AACD;;AAED,MAAMspD,IAAI,GAAGvI,QAAQ,CAAC9+C,MAAT,CAAgB,OAAhB,CAAb;AACAqnD,EAAAA,IAAI,CAAC3sD,IAAL,CAAU,GAAV,EAAeqsD,QAAQ,CAACxnD,CAAT,GAAawnD,QAAQ,CAACnI,UAAT,GAAsB,CAAlD;AACAyI,EAAAA,IAAI,CAAC3sD,IAAL,CAAU,MAAV,EAAkBqsD,QAAQ,CAACnqC,IAA3B;AACAyqC,EAAAA,IAAI,CAAC1sD,IAAL,CAAU4vD,KAAV;AAEA,SAAOzL,QAAP;AACD,CAnBM;;AAqBP,IAAM0L,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQlrD,CAAR,EAAWC,CAAX,EAAc2kB,CAAd,EAAoB;AACxC,MAAIvI,UAAU,GAAG,CAAjB;AAEA,MAAMkjC,QAAQ,GAAG36B,CAAC,CAACnkB,MAAF,CAAS,MAAT,CAAjB;AACA8+C,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B,OAA9B;AACA0/C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,OAAd,EAAuB,UAAvB;;AAEA,MAAIC,IAAI,GAAG8vD,KAAK,CAAC5oD,OAAN,CAAc,OAAd,EAAuB,OAAvB,CAAX;;AACAlH,EAAAA,IAAI,GAAGA,IAAI,CAACkH,OAAL,CAAa,KAAb,EAAoB,OAApB,CAAP;AACA,MAAMq9C,KAAK,GAAGvkD,IAAI,CAACwH,KAAL,CAAW+b,qEAAX,CAAd;AAEA,MAAIwsC,OAAO,GAAG,OAAOjuD,kDAAS,GAAG4L,KAAZ,CAAkBoQ,UAAvC;;AAXwC,6CAYrBymC,KAZqB;AAAA;;AAAA;AAYxC,wDAA0B;AAAA,UAAfv8C,KAAe;;AACxB,UAAM5B,GAAG,GAAG4B,KAAI,CAACD,IAAL,EAAZ;;AAEA,UAAI3B,GAAG,CAAClF,MAAJ,GAAa,CAAjB,EAAoB;AAClB,YAAMwrD,IAAI,GAAGvI,QAAQ,CAAC9+C,MAAT,CAAgB,OAAhB,CAAb;AACAqnD,QAAAA,IAAI,CAAC1sD,IAAL,CAAUoG,GAAV;;AACA,YAAI2pD,OAAO,KAAK,CAAhB,EAAmB;AACjB,cAAMC,UAAU,GAAGtD,IAAI,CAACzpD,IAAL,GAAYU,OAAZ,EAAnB;AACAosD,UAAAA,OAAO,IAAIC,UAAU,CAAC7rD,MAAtB;AACD;;AACD8c,QAAAA,UAAU,IAAI8uC,OAAd;AACArD,QAAAA,IAAI,CAAC3sD,IAAL,CAAU,GAAV,EAAe6E,CAAC,GAAG9C,kDAAS,GAAG4L,KAAZ,CAAkBoQ,UAArC;AACA4uC,QAAAA,IAAI,CAAC3sD,IAAL,CAAU,GAAV,EAAe8E,CAAC,GAAGoc,UAAJ,GAAiB,OAAOnf,kDAAS,GAAG4L,KAAZ,CAAkBoQ,UAAzD;AACD;AACF;AA1BuC;AAAA;AAAA;AAAA;AAAA;;AA2BxC,SAAO;AAAEorB,IAAAA,SAAS,EAAEib,QAAQ,CAAClhD,IAAT,GAAgBU,OAAhB,GAA0BO,KAAvC;AAA8C+c,IAAAA,UAAU,EAAVA;AAA9C,GAAP;AACD,CA5BD;AA8BA;AACA;AACA;AACA;AACA;AACA;;;AAEO,IAAMyiC,QAAQ,GAAG,SAAXA,QAAW,CAAC1jD,IAAD,EAAOwpB,CAAP,EAAa;AACnCA,EAAAA,CAAC,CAACzpB,IAAF,CAAO,OAAP,EAAgB,YAAhB;AACA,MAAMkX,IAAI,GAAGuS,CAAC,CAACnkB,MAAF,CAAS,MAAT,EAAiBtF,IAAjB,CAAsB,GAAtB,EAA2B,CAA3B,EAA8BA,IAA9B,CAAmC,GAAnC,EAAwC+B,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAA1D,CAAb;AACA,MAAMw/C,QAAQ,GAAGp6B,CAAC,CAACnkB,MAAF,CAAS,GAAT,CAAjB;;AAEA,uBAAkCwqD,aAAa,CAAC7vD,IAAD,EAAO,CAAP,EAAU,CAAV,EAAa4jD,QAAb,CAA/C;AAAA,MAAQ1a,SAAR,kBAAQA,SAAR;AAAA,MAAmBjoB,UAAnB,kBAAmBA,UAAnB;;AACAhK,EAAAA,IAAI,CAAClX,IAAL,CAAU,QAAV,EAAoBkhB,UAAU,GAAG,IAAInf,kDAAS,GAAG4L,KAAZ,CAAkBoQ,UAAvD;AACA7G,EAAAA,IAAI,CAAClX,IAAL,CAAU,OAAV,EAAmBmpC,SAAS,GAAGpnC,kDAAS,GAAG4L,KAAZ,CAAkBoQ,UAAlB,GAA+B,CAA9D;AAEA,SAAO7G,IAAP;AACD,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMg5C,SAAS,GAAG,SAAZA,SAAY,CAAUvqD,IAAV,EAAgB+oD,QAAhB,EAA0B;AACjD,MAAMhvD,EAAE,GAAGgvD,QAAQ,CAAChvD,EAApB;AACA,MAAMywD,SAAS,GAAG;AAChBzwD,IAAAA,EAAE,EAAEA,EADY;AAEhB4D,IAAAA,KAAK,EAAEorD,QAAQ,CAAChvD,EAFA;AAGhByE,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,MAAM,EAAE;AAJQ,GAAlB;AAOA,MAAMqlB,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBtF,IAAjB,CAAsB,IAAtB,EAA4BN,EAA5B,EAAgCM,IAAhC,CAAqC,OAArC,EAA8C,YAA9C,CAAV;AAEA,MAAI0uD,QAAQ,CAACl+C,IAAT,KAAkB,OAAtB,EAA+B+9C,cAAc,CAAC9kC,CAAD,CAAd;AAC/B,MAAIilC,QAAQ,CAACl+C,IAAT,KAAkB,KAAtB,EAA6Bi/C,YAAY,CAAChmC,CAAD,CAAZ;AAC7B,MAAIilC,QAAQ,CAACl+C,IAAT,KAAkB,MAAlB,IAA4Bk+C,QAAQ,CAACl+C,IAAT,KAAkB,MAAlD,EAA0Dk/C,iBAAiB,CAACjmC,CAAD,EAAIilC,QAAJ,CAAjB;AAC1D,MAAIA,QAAQ,CAACl+C,IAAT,KAAkB,MAAtB,EAA8BmzC,QAAQ,CAAC+K,QAAQ,CAACx3C,IAAT,CAAcjX,IAAf,EAAqBwpB,CAArB,CAAR;AAC9B,MAAIilC,QAAQ,CAACl+C,IAAT,KAAkB,SAAtB,EAAiCg+C,WAAW,CAAC/kC,CAAD,CAAX;AACjC,MAAIilC,QAAQ,CAACl+C,IAAT,KAAkB,SAAlB,IAA+Bk+C,QAAQ,CAACE,YAAT,CAAsBztD,MAAtB,KAAiC,CAApE,EACEstD,eAAe,CAAChlC,CAAD,EAAIilC,QAAJ,CAAf;AACF,MAAIA,QAAQ,CAACl+C,IAAT,KAAkB,SAAlB,IAA+Bk+C,QAAQ,CAACE,YAAT,CAAsBztD,MAAtB,GAA+B,CAAlE,EAAqEwtD,cAAc,CAACllC,CAAD,EAAIilC,QAAJ,CAAd;AAErE,MAAM0B,QAAQ,GAAG3mC,CAAC,CAACvmB,IAAF,GAASU,OAAT,EAAjB;AACAusD,EAAAA,SAAS,CAAChsD,KAAV,GAAkBisD,QAAQ,CAACjsD,KAAT,GAAiB,IAAIpC,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAzD;AACA8rD,EAAAA,SAAS,CAAC/rD,MAAV,GAAmBgsD,QAAQ,CAAChsD,MAAT,GAAkB,IAAIrC,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAA3D;AAEAklB,EAAAA,wDAAA,CAAY7pB,EAAZ,EAAgBywD,SAAhB,EAxBiD,CAyBjD;;AACA,SAAOA,SAAP;AACD,CA3BM;AA6BP,IAAIvjC,SAAS,GAAG,CAAhB;AACO,IAAMP,QAAQ,GAAG,SAAXA,QAAW,CAAU1mB,IAAV,EAAgBmE,IAAhB,EAAsBgb,QAAtB,EAAgC;AACtD,MAAM+H,eAAe,GAAG,SAAlBA,eAAkB,CAAUrc,IAAV,EAAgB;AACtC,YAAQA,IAAR;AACE,WAAK89C,yEAAL;AACE,eAAO,aAAP;;AACF,WAAKA,uEAAL;AACE,eAAO,WAAP;;AACF,WAAKA,yEAAL;AACE,eAAO,aAAP;;AACF,WAAKA,wEAAL;AACE,eAAO,YAAP;AARJ;AAUD,GAXD;;AAaAxkD,EAAAA,IAAI,CAAC6B,MAAL,GAAc7B,IAAI,CAAC6B,MAAL,CAAYsB,MAAZ,CAAmB,UAACjB,CAAD;AAAA,WAAO,CAACkB,MAAM,CAACC,KAAP,CAAanB,CAAC,CAAClH,CAAf,CAAR;AAAA,GAAnB,CAAd,CAdsD,CAgBtD;;AACA,MAAMkI,QAAQ,GAAGlD,IAAI,CAAC6B,MAAtB,CAjBsD,CAmBtD;;AACA,MAAM0B,YAAY,GAAGpF,wCAAI,GACtBpD,CADkB,CAChB,UAAUzD,CAAV,EAAa;AACd,WAAOA,CAAC,CAACyD,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAU1D,CAAV,EAAa;AACd,WAAOA,CAAC,CAAC0D,CAAT;AACD,GANkB,EAOlBsI,KAPkB,CAOZlF,0CAPY,CAArB;AASA,MAAMuF,OAAO,GAAG9H,IAAI,CACjBL,MADa,CACN,MADM,EAEbtF,IAFa,CAER,GAFQ,EAEHqN,YAAY,CAACL,QAAD,CAFT,EAGbhN,IAHa,CAGR,IAHQ,EAGF,SAAS4sB,SAHP,EAIb5sB,IAJa,CAIR,OAJQ,EAIC,YAJD,CAAhB;AAKA,MAAI0N,GAAG,GAAG,EAAV;;AACA,MAAI3L,kDAAS,GAAG4L,KAAZ,CAAkBC,mBAAtB,EAA2C;AACzCF,IAAAA,GAAG,GACDG,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAR,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAuG,IAAAA,GAAG,GAAGA,GAAG,CAACvG,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAEDsG,EAAAA,OAAO,CAACzN,IAAR,CACE,YADF,EAEE,SAAS0N,GAAT,GAAe,GAAf,GAAqBmf,eAAe,CAACyhC,wEAAD,CAApC,GAAwE,KAAxE,GAAgF,GAFlF;;AAKA,MAAI,OAAOxpC,QAAQ,CAACxL,KAAhB,KAA0B,WAA9B,EAA2C;AACzC,QAAMhW,KAAK,GAAGqC,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiBtF,IAAjB,CAAsB,OAAtB,EAA+B,YAA/B,CAAd;;AAEA,gCAAiBmI,gEAAA,CAAwB2B,IAAI,CAAC6B,MAA7B,CAAjB;AAAA,QAAQ9G,CAAR,yBAAQA,CAAR;AAAA,QAAWC,CAAX,yBAAWA,CAAX;;AAEA,QAAM0C,IAAI,GAAGgc,8DAAA,CAAesB,QAAQ,CAACxL,KAAxB,CAAb;AAEA,QAAIsU,WAAW,GAAG,CAAlB;AACA,QAAMyiC,SAAS,GAAG,EAAlB;AACA,QAAI51C,QAAQ,GAAG,CAAf;AACA,QAAIxH,IAAI,GAAG,CAAX;;AAEA,SAAK,IAAI/R,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIsG,IAAI,CAACrG,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMoY,KAAK,GAAGhW,KAAK,CAChBgC,MADW,CACJ,MADI,EAEXtF,IAFW,CAEN,aAFM,EAES,QAFT,EAGXC,IAHW,CAGNuH,IAAI,CAACtG,CAAD,CAHE,EAIXlB,IAJW,CAIN,GAJM,EAID6E,CAJC,EAKX7E,IALW,CAKN,GALM,EAKD8E,CAAC,GAAG8oB,WALH,CAAd;AAOA,UAAM0iC,SAAS,GAAGh3C,KAAK,CAACpW,IAAN,GAAaU,OAAb,EAAlB;AACA6W,MAAAA,QAAQ,GAAGjQ,IAAI,CAACmrB,GAAL,CAASlb,QAAT,EAAmB61C,SAAS,CAACnsD,KAA7B,CAAX;AACA8O,MAAAA,IAAI,GAAGzI,IAAI,CAAC6I,GAAL,CAASJ,IAAT,EAAeq9C,SAAS,CAACzrD,CAAzB,CAAP;AAEA1E,MAAAA,6CAAA,CAASmwD,SAAS,CAACzrD,CAAnB,EAAsBA,CAAtB,EAAyBC,CAAC,GAAG8oB,WAA7B;;AAEA,UAAIA,WAAW,KAAK,CAApB,EAAuB;AACrB,YAAMpU,QAAQ,GAAGF,KAAK,CAACpW,IAAN,GAAaU,OAAb,EAAjB;AACAgqB,QAAAA,WAAW,GAAGpU,QAAQ,CAACpV,MAAvB;AACAjE,QAAAA,6CAAA,CAAS,cAAT,EAAyBytB,WAAzB,EAAsC9oB,CAAtC;AACD;;AACDurD,MAAAA,SAAS,CAAC3tD,IAAV,CAAe4W,KAAf;AACD;;AAED,QAAIyuC,SAAS,GAAGn6B,WAAW,GAAGpmB,IAAI,CAACrG,MAAnC;;AACA,QAAIqG,IAAI,CAACrG,MAAL,GAAc,CAAlB,EAAqB;AACnB,UAAMovD,SAAS,GAAG,CAAC/oD,IAAI,CAACrG,MAAL,GAAc,CAAf,IAAoBysB,WAApB,GAAkC,GAApD;AAEAyiC,MAAAA,SAAS,CAACluD,OAAV,CAAkB,UAACmX,KAAD,EAAQpY,CAAR;AAAA,eAAcoY,KAAK,CAACtZ,IAAN,CAAW,GAAX,EAAgB8E,CAAC,GAAG5D,CAAC,GAAG0sB,WAAR,GAAsB2iC,SAAtC,CAAd;AAAA,OAAlB;AACAxI,MAAAA,SAAS,GAAGn6B,WAAW,GAAGpmB,IAAI,CAACrG,MAA/B;AACD;;AAED,QAAMosB,MAAM,GAAGjqB,KAAK,CAACJ,IAAN,GAAaU,OAAb,EAAf;AAEAN,IAAAA,KAAK,CACF3D,MADH,CACU,MADV,EACkB,cADlB,EAEGK,IAFH,CAEQ,OAFR,EAEiB,KAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGa6E,CAAC,GAAG4V,QAAQ,GAAG,CAAf,GAAmB1Y,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4B,CAH5D,EAIGrE,IAJH,CAIQ,GAJR,EAIa8E,CAAC,GAAGijD,SAAS,GAAG,CAAhB,GAAoBhmD,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAAlB,GAA4B,CAAhD,GAAoD,GAJjE,EAKGrE,IALH,CAKQ,OALR,EAKiBya,QAAQ,GAAG1Y,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OAL9C,EAMGrE,IANH,CAMQ,QANR,EAMkB+nD,SAAS,GAAGhmD,kDAAS,GAAG4L,KAAZ,CAAkBtJ,OANhD;AAQAlE,IAAAA,6CAAA,CAASotB,MAAT,EApDyC,CAsDzC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;AAEDX,EAAAA,SAAS;AACV,CA7HM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChZP;AACA;AACA;AACA;AACA;;AAEA,IAAMzmB,YAAY,GAAG,SAAfA,YAAe,CAACE,GAAD;AAAA,SAASmd,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAT;AAAA,CAArB;;AAEA,IAAMwmB,KAAK,GAAG,SAARA,KAAQ,CAAC55B,CAAD;AAAA,SAAO3L,IAAI,CAACsL,KAAL,CAAWtL,IAAI,CAACC,SAAL,CAAe0L,CAAf,CAAX,CAAP;AAAA,CAAd;;AACA,IAAIsgD,OAAO,GAAG,EAAd;AAEO,IAAM3sC,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;;AAIP,IAAMkgD,UAAU,GAAG,SAAbA,UAAa,CAACvgD,CAAD,EAAO;AACxBhQ,EAAAA,6CAAA,CAAS,kBAAT,EAA6BgQ,CAA7B,EADwB,CAExB;;AACAsgD,EAAAA,OAAO,GAAGtgD,CAAV;AACD,CAJD;;AAMA,IAAMwgD,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAMF,OAAN;AAAA,CAAnB;;AAEA,IAAMG,aAAa,GAAG,SAAhBA,aAAgB,CAAC3tD,MAAD,EAASC,IAAT,EAAe2tD,KAAf,EAAyB;AAC7C,MAAI3tD,IAAI,CAACo4B,IAAL,KAAc,UAAlB,EAA8B;AAC5Bs1B,IAAAA,aAAa,CAAC3tD,MAAD,EAASC,IAAI,CAAC4tD,MAAd,EAAsB,IAAtB,CAAb;AACAF,IAAAA,aAAa,CAAC3tD,MAAD,EAASC,IAAI,CAAC6tD,MAAd,EAAsB,KAAtB,CAAb;AACD,GAHD,MAGO;AACL,QAAI7tD,IAAI,CAACo4B,IAAL,KAAc,OAAlB,EAA2B;AACzB,UAAIp4B,IAAI,CAACxD,EAAL,KAAY,KAAhB,EAAuB;AACrBwD,QAAAA,IAAI,CAACxD,EAAL,GAAUmxD,KAAK,GAAG5tD,MAAM,CAACvD,EAAP,GAAY,QAAf,GAA0BuD,MAAM,CAACvD,EAAP,GAAY,MAArD;AACAwD,QAAAA,IAAI,CAAC+W,KAAL,GAAa42C,KAAb;AACD;AACF;;AAED,QAAI3tD,IAAI,CAACuoB,GAAT,EAAc;AACZ,UAAMA,GAAG,GAAG,EAAZ,CADY,CAEZ;;AACA,UAAIvqB,CAAC,GAAG,CAAR;AACA,UAAI8vD,UAAU,GAAG,EAAjB;;AACA,WAAK9vD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgC,IAAI,CAACuoB,GAAL,CAAStqB,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,YAAIgC,IAAI,CAACuoB,GAAL,CAASvqB,CAAT,EAAYsP,IAAZ,KAAqB,SAAzB,EAAoC;AAClC;AACA,cAAMygD,OAAO,GAAGlnB,KAAK,CAAC7mC,IAAI,CAACuoB,GAAL,CAASvqB,CAAT,CAAD,CAArB;AACA+vD,UAAAA,OAAO,CAACxlC,GAAR,GAAcse,KAAK,CAACinB,UAAD,CAAnB;AACAvlC,UAAAA,GAAG,CAAC/oB,IAAJ,CAASuuD,OAAT;AACAD,UAAAA,UAAU,GAAG,EAAb;AACD,SAND,MAMO;AACLA,UAAAA,UAAU,CAACtuD,IAAX,CAAgBQ,IAAI,CAACuoB,GAAL,CAASvqB,CAAT,CAAhB;AACD;AACF,OAfW,CAiBZ;;;AACA,UAAIuqB,GAAG,CAACtqB,MAAJ,GAAa,CAAb,IAAkB6vD,UAAU,CAAC7vD,MAAX,GAAoB,CAA1C,EAA6C;AAC3C,YAAM8vD,QAAO,GAAG;AACd31B,UAAAA,IAAI,EAAE,OADQ;AAEd57B,UAAAA,EAAE,EAAE8wD,kDAAU,EAFA;AAGdhgD,UAAAA,IAAI,EAAE,SAHQ;AAIdib,UAAAA,GAAG,EAAEse,KAAK,CAACinB,UAAD;AAJI,SAAhB;AAMAvlC,QAAAA,GAAG,CAAC/oB,IAAJ,CAASqnC,KAAK,CAACknB,QAAD,CAAd;AACA/tD,QAAAA,IAAI,CAACuoB,GAAL,GAAWA,GAAX;AACD;;AAEDvoB,MAAAA,IAAI,CAACuoB,GAAL,CAAStpB,OAAT,CAAiB,UAAC+uD,OAAD;AAAA,eAAaN,aAAa,CAAC1tD,IAAD,EAAOguD,OAAP,EAAgB,IAAhB,CAA1B;AAAA,OAAjB;AACD;AACF;AACF,CA5CD;;AA6CA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBP,EAAAA,aAAa,CAAC;AAAElxD,IAAAA,EAAE,EAAE;AAAN,GAAD,EAAiB;AAAEA,IAAAA,EAAE,EAAE,MAAN;AAAc+rB,IAAAA,GAAG,EAAEglC;AAAnB,GAAjB,EAA+C,IAA/C,CAAb;AACA,SAAO;AAAE/wD,IAAAA,EAAE,EAAE,MAAN;AAAc+rB,IAAAA,GAAG,EAAEglC;AAAnB,GAAP,CAFyB,CAGzB;AACD,CAJD;;AAMA,IAAMW,OAAO,GAAG,SAAVA,OAAU,CAAC7yB,IAAD,EAAU;AACxB;AACA,MAAI9S,GAAJ;;AACA,MAAI8S,IAAI,CAAC9S,GAAT,EAAc;AACZA,IAAAA,GAAG,GAAG8S,IAAI,CAAC9S,GAAX;AACD,GAFD,MAEO;AACLA,IAAAA,GAAG,GAAG8S,IAAN;AACD,GAPuB,CAQxB;AACA;AACA;AACA;;;AACAp+B,EAAAA,6CAAA,CAASsrB,GAAT;AACA1lB,EAAAA,KAAK;AAEL5F,EAAAA,6CAAA,CAAS,SAAT,EAAoBsrB,GAApB;AAEAA,EAAAA,GAAG,CAACtpB,OAAJ,CAAY,UAAC0kB,IAAD,EAAU;AACpB,QAAIA,IAAI,CAACyU,IAAL,KAAc,OAAlB,EAA2B;AACzB+1B,MAAAA,QAAQ,CAACxqC,IAAI,CAACnnB,EAAN,EAAUmnB,IAAI,CAACrW,IAAf,EAAqBqW,IAAI,CAAC4E,GAA1B,EAA+B5E,IAAI,CAAC/mB,WAApC,EAAiD+mB,IAAI,CAAC3P,IAAtD,CAAR;AACD;;AACD,QAAI2P,IAAI,CAACyU,IAAL,KAAc,UAAlB,EAA8B;AAC5BzW,MAAAA,WAAW,CAACgC,IAAI,CAACiqC,MAAL,CAAYpxD,EAAb,EAAiBmnB,IAAI,CAACkqC,MAAL,CAAYrxD,EAA7B,EAAiCmnB,IAAI,CAAC/mB,WAAtC,CAAX;AACD;AACF,GAPD;AAQD,CAzBD;;AA2BA,IAAMwxD,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB,SAAO;AACL3tC,IAAAA,SAAS,EAAE,EADN;AAEL4tC,IAAAA,MAAM,EAAE,EAFH;AAGLC,IAAAA,SAAS,EAAE;AAHN,GAAP;AAKD,CAND;;AAQA,IAAIA,SAAS,GAAG;AACdnmC,EAAAA,IAAI,EAAEimC,MAAM;AADE,CAAhB;AAIA,IAAIG,eAAe,GAAGD,SAAS,CAACnmC,IAAhC;AAEA,IAAIqmC,QAAQ,GAAG,CAAf;AACA,IAAIC,MAAM,GAAG,CAAb,EAAgB;AAChB;;AAEA,IAAIr4C,KAAK,GAAG,eAAZ;AACA,IAAIxZ,WAAW,GAAG,EAAlB;;AAEA,IAAM6oB,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AAC9BiT,EAAAA,KAAK,GAAGnT,YAAY,CAACE,GAAD,CAApB;AACD,CAFD;;AAIA,IAAMxG,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOyZ,KAAP;AACD,CAFD;;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AACvCvG,EAAAA,WAAW,GAAGqG,YAAY,CAACE,GAAD,CAA1B;AACD,CAFD;;AAIA,IAAMtG,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AACpC,SAAOD,WAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMuxD,QAAQ,GAAG,SAAXA,QAAW,CAAU3xD,EAAV,EAAc8Q,IAAd,EAAoBib,GAApB,EAAyBhS,KAAzB,EAAgCvC,IAAhC,EAAsC;AAC5D,MAAI,OAAOu6C,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,CAAP,KAAsC,WAA1C,EAAuD;AACrD+xD,IAAAA,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,IAA6B;AAC3BA,MAAAA,EAAE,EAAEA,EADuB;AAE3BkvD,MAAAA,YAAY,EAAE,EAFa;AAG3Bp+C,MAAAA,IAAI,EAAJA,IAH2B;AAI3Bib,MAAAA,GAAG,EAAHA,GAJ2B;AAK3BvU,MAAAA,IAAI,EAAJA;AAL2B,KAA7B;AAOD,GARD,MAQO;AACL,QAAI,CAACu6C,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2B+rB,GAAhC,EAAqC;AACnCgmC,MAAAA,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2B+rB,GAA3B,GAAiCA,GAAjC;AACD;;AACD,QAAI,CAACgmC,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2B8Q,IAAhC,EAAsC;AACpCihD,MAAAA,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2B8Q,IAA3B,GAAkCA,IAAlC;AACD;AACF;;AACD,MAAIiJ,KAAJ,EAAW;AACTtZ,IAAAA,6CAAA,CAAS,eAAT,EAA0BT,EAA1B,EAA8B+Z,KAA9B;AACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+Bm4C,cAAc,CAAClyD,EAAD,EAAK+Z,KAAK,CAACzR,IAAN,EAAL,CAAd;;AAE/B,QAAI,QAAOyR,KAAP,MAAiB,QAArB,EAA+B;AAC7BA,MAAAA,KAAK,CAACtX,OAAN,CAAc,UAAC0vD,GAAD;AAAA,eAASD,cAAc,CAAClyD,EAAD,EAAKmyD,GAAG,CAAC7pD,IAAJ,EAAL,CAAvB;AAAA,OAAd;AACD;AACF;;AAED,MAAIkP,IAAJ,EAAU;AACRu6C,IAAAA,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2BwX,IAA3B,GAAkCA,IAAlC;AACAu6C,IAAAA,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2BwX,IAA3B,CAAgCjX,IAAhC,GAAuCujB,mEAAA,CACrCiuC,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,EAA2BwX,IAA3B,CAAgCjX,IADK,EAErCsjB,8CAAA,EAFqC,CAAvC;AAID;AACF,CAjCM;AAmCA,IAAMxd,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/ByrD,EAAAA,SAAS,GAAG;AACVnmC,IAAAA,IAAI,EAAEimC,MAAM;AADF,GAAZ;AAGAG,EAAAA,eAAe,GAAGD,SAAS,CAACnmC,IAA5B;AAEAomC,EAAAA,eAAe,GAAGD,SAAS,CAACnmC,IAA5B;AAEAqmC,EAAAA,QAAQ,GAAG,CAAX;AACAC,EAAAA,MAAM,GAAG,CAAT,CAT+B,CASnB;;AACZvsD,EAAAA,OAAO,GAAG,EAAV;AACD,CAXM;AAaA,IAAM0sD,QAAQ,GAAG,SAAXA,QAAW,CAAUpyD,EAAV,EAAc;AACpC,SAAO+xD,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,CAAP;AACD,CAFM;AAIA,IAAMqyD,SAAS,GAAG,SAAZA,SAAY,GAAY;AACnC,SAAON,eAAe,CAACF,MAAvB;AACD,CAFM;AAGA,IAAMS,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC7xD,EAAAA,6CAAA,CAAS,cAAT,EAAyBqxD,SAAzB;AACD,CAFM;AAGA,IAAM5sC,YAAY,GAAG,SAAfA,YAAe,GAAY;AACtC,SAAO6sC,eAAe,CAAC9tC,SAAvB;AACD,CAFM;AAIA,IAAMkB,WAAW,GAAG,SAAdA,WAAc,CAAUotC,IAAV,EAAgBC,IAAhB,EAAsB54C,KAAtB,EAA6B;AACtD,MAAIyL,GAAG,GAAGktC,IAAV;AACA,MAAIjtC,GAAG,GAAGktC,IAAV;AACA,MAAI5nC,KAAK,GAAG,SAAZ;AACA,MAAIC,KAAK,GAAG,SAAZ;;AACA,MAAI0nC,IAAI,KAAK,KAAb,EAAoB;AAClBP,IAAAA,QAAQ;AACR3sC,IAAAA,GAAG,GAAG,UAAU2sC,QAAhB;AACApnC,IAAAA,KAAK,GAAG,OAAR;AACD;;AACD,MAAI4nC,IAAI,KAAK,KAAb,EAAoB;AAClBP,IAAAA,MAAM;AACN3sC,IAAAA,GAAG,GAAG,QAAQ0sC,QAAd;AACAnnC,IAAAA,KAAK,GAAG,KAAR;AACD;;AACD8mC,EAAAA,QAAQ,CAACtsC,GAAD,EAAMuF,KAAN,CAAR;AACA+mC,EAAAA,QAAQ,CAACrsC,GAAD,EAAMuF,KAAN,CAAR;AACAknC,EAAAA,eAAe,CAAC9tC,SAAhB,CAA0BjhB,IAA1B,CAA+B;AAC7BqiB,IAAAA,GAAG,EAAHA,GAD6B;AAE7BC,IAAAA,GAAG,EAAHA,GAF6B;AAG7B1L,IAAAA,KAAK,EAAEkK,mEAAA,CAAoBlK,KAApB,EAA2BiK,8CAAA,EAA3B;AAHsB,GAA/B;AAKD,CAtBM;;AAwBP,IAAMquC,cAAc,GAAG,SAAjBA,cAAiB,CAAUlyD,EAAV,EAAcyyD,MAAd,EAAsB;AAC3C,MAAMC,QAAQ,GAAGX,eAAe,CAACF,MAAhB,CAAuB7xD,EAAvB,CAAjB;AACA,MAAI+Z,KAAK,GAAG04C,MAAZ;;AACA,MAAI14C,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACpBA,IAAAA,KAAK,GAAGA,KAAK,CAACsM,MAAN,CAAa,CAAb,EAAgB/d,IAAhB,EAAR;AACD;;AACDoqD,EAAAA,QAAQ,CAACxD,YAAT,CAAsBlsD,IAAtB,CAA2B8gB,mEAAA,CAAoB/J,KAApB,EAA2B8J,8CAAA,EAA3B,CAA3B;AACD,CAPD;;AASO,IAAMuC,YAAY,GAAG,SAAfA,YAAe,CAAUxiB,KAAV,EAAiB;AAC3C,MAAIA,KAAK,CAACsiB,SAAN,CAAgB,CAAhB,EAAmB,CAAnB,MAA0B,GAA9B,EAAmC;AACjC,WAAOtiB,KAAK,CAACyiB,MAAN,CAAa,CAAb,EAAgB/d,IAAhB,EAAP;AACD,GAFD,MAEO;AACL,WAAO1E,KAAK,CAAC0E,IAAN,EAAP;AACD;AACF,CANM;AAQA,IAAMof,QAAQ,GAAG;AACtBC,EAAAA,IAAI,EAAE,CADgB;AAEtBC,EAAAA,WAAW,EAAE;AAFS,CAAjB;AAKP,IAAI+qC,UAAU,GAAG,CAAjB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBD,EAAAA,UAAU;AACV,SAAO,gBAAgBA,UAAvB;AACD,CAHD;;AAKA,IAAIjtD,OAAO,GAAG,EAAd;;AAEA,IAAMuf,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAMvf,OAAN;AAAA,CAAnB;;AAEA,IAAIojB,SAAS,GAAG,IAAhB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,SAAMD,SAAN;AAAA,CAArB;;AACA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACnZ,GAAD,EAAS;AAC5BiZ,EAAAA,SAAS,GAAGjZ,GAAZ;AACD,CAFD;;AAIO,IAAMgY,YAAY,GAAG;AAC1BC,EAAAA,WAAW,EAAE,CADa;AAE1BC,EAAAA,SAAS,EAAE,CAFe;AAG1BC,EAAAA,WAAW,EAAE,CAHa;AAI1BC,EAAAA,UAAU,EAAE;AAJc,CAArB;;AAOP,IAAM4qC,SAAS,GAAG,SAAZA,SAAY,CAAC/2C,GAAD;AAAA,SAAUA,GAAG,IAAIA,GAAG,CAAC,CAAD,CAAH,KAAW,GAAlB,GAAwBA,GAAG,CAACuK,MAAJ,CAAW,CAAX,EAAc/d,IAAd,EAAxB,GAA+CwT,GAAG,CAACxT,IAAJ,EAAzD;AAAA,CAAlB;;AAEA,iEAAe;AACb8b,EAAAA,cAAc,EAAdA,cADa;AAEb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsB5V,KAA5B;AAAA,GAFE;AAGb0jD,EAAAA,QAAQ,EAARA,QAHa;AAIbtrD,EAAAA,KAAK,EAALA,KAJa;AAKb+rD,EAAAA,QAAQ,EAARA,QALa;AAMbC,EAAAA,SAAS,EAATA,SANa;AAObntC,EAAAA,YAAY,EAAZA,YAPa;AAQbD,EAAAA,UAAU,EAAVA,UARa;AASb8D,EAAAA,YAAY,EAAZA,YATa;AAUb5D,EAAAA,WAAW,EAAXA,WAVa;AAWbytC,EAAAA,YAAY,EAAZA,YAXa;AAYb5pC,EAAAA,YAAY,EAAZA,YAZa;AAab;AACA5C,EAAAA,YAAY,EAAZA,YAda;AAebsB,EAAAA,QAAQ,EAARA,QAfa;AAgBbG,EAAAA,YAAY,EAAZA,YAhBa;AAiBbyqC,EAAAA,YAAY,EAAZA,YAjBa;AAkBbrB,EAAAA,UAAU,EAAVA,UAlBa;AAmBbD,EAAAA,UAAU,EAAVA,UAnBa;AAoBbS,EAAAA,YAAY,EAAZA,YApBa;AAqBbC,EAAAA,OAAO,EAAPA,OArBa;AAsBbmB,EAAAA,SAAS,EAATA,SAtBa;AAuBb1yD,EAAAA,QAAQ,EAARA,QAvBa;AAwBb8oB,EAAAA,QAAQ,EAARA,QAxBa;AAyBb5oB,EAAAA,iBAAiB,EAAjBA,iBAzBa;AA0Bb+oB,EAAAA,iBAAiB,EAAjBA;AA1Ba,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMpnB,IAAI,GAAG,EAAb;AACO,IAAMupB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;;AACA,OAAK,IAAIhqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpCQ,IAAAA,IAAI,CAACO,IAAI,CAACf,CAAD,CAAL,CAAJ,GAAgBgqB,GAAG,CAACjpB,IAAI,CAACf,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP,IAAIsxD,MAAM,GAAG,EAAb;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM7tC,UAAU,GAAG,SAAbA,UAAa,CAAU1kB,IAAV,EAAgB;AACxCE,EAAAA,8CAAA,CAAU,oBAAV;AACAmuD,EAAAA,sDAAA;AACA,MAAMtlC,MAAM,GAAGrb,oEAAf;AACAqb,EAAAA,MAAM,CAACM,EAAP,GAAYglC,gDAAZ,CAJwC,CAMxC;;AACAtlC,EAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb;AACA,SAAOquD,2DAAA,EAAP;AACD,CATM;;AAWP,IAAMmE,SAAS,GAAG,SAAZA,SAAY,CAAChpC,CAAD,EAAIxmB,MAAJ,EAAYC,IAAZ,EAAkBwvD,OAAlB,EAA8B;AAC9C;AACA,MAAIxvD,IAAI,CAACxD,EAAL,KAAY,MAAhB,EAAwB;AACtB,QAAIkG,KAAK,GAAG,MAAZ;;AACA,QAAI1C,IAAI,CAAC+W,KAAL,KAAe,IAAnB,EAAyB;AACvBrU,MAAAA,KAAK,GAAG,OAAR;AACD;;AACD,QAAI1C,IAAI,CAAC+W,KAAL,KAAe,KAAnB,EAA0B;AACxBrU,MAAAA,KAAK,GAAG,KAAR;AACD;;AACD,QAAI1C,IAAI,CAACsN,IAAL,KAAc,SAAlB,EAA6B;AAC3B5K,MAAAA,KAAK,GAAG1C,IAAI,CAACsN,IAAb;AACD;;AAED,QAAI,CAACgiD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAX,EAAsB;AACpB8yD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,GAAkB;AAChBA,QAAAA,EAAE,EAAEwD,IAAI,CAACxD,EADO;AAEhBkG,QAAAA,KAAK,EAALA,KAFgB;AAGhB9F,QAAAA,WAAW,EAAE0jB,mEAAA,CAAoBtgB,IAAI,CAACxD,EAAzB,EAA6BqC,kDAAS,EAAtC,CAHG;AAIhBqD,QAAAA,OAAO,EAAE;AAJO,OAAlB;AAMD,KAnBqB,CAqBtB;;;AACA,QAAIlC,IAAI,CAACpD,WAAT,EAAsB;AACpB,UAAI4H,KAAK,CAACC,OAAN,CAAc6qD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAA9B,CAAJ,EAAgD;AAC9C;AACA0yD,QAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAAhB,GAAwB,eAAxB;AACA4sD,QAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,CAA4B4C,IAA5B,CAAiCQ,IAAI,CAACpD,WAAtC;AACD,OAJD,MAIO;AACL,YAAI0yD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,CAA4BqB,MAA5B,GAAqC,CAAzC,EAA4C;AAC1C;AACAqxD,UAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAAhB,GAAwB,eAAxB;;AACA,cAAI4sD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,KAAgCoD,IAAI,CAACxD,EAAzC,EAA6C;AAC3C;AACA8yD,YAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,GAA8B,CAACoD,IAAI,CAACpD,WAAN,CAA9B;AACD,WAHD,MAGO;AACL0yD,YAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,GAA8B,CAAC0yD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAjB,EAA8BoD,IAAI,CAACpD,WAAnC,CAA9B;AACD;AACF,SATD,MASO;AACL0yD,UAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAAhB,GAAwB,MAAxB;AACA4sD,UAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,GAA8BoD,IAAI,CAACpD,WAAnC;AACD;AACF;;AACD0yD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,GAA8B0jB,0EAAA,CAC5BgvC,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WADY,EAE5BiC,kDAAS,EAFmB,CAA9B;AAID,KA9CqB,CAgDtB;;;AACA,QAAIywD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAAhB,CAA4BqB,MAA5B,KAAuC,CAAvC,IAA4CqxD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAAhB,KAA0B,eAA1E,EAA2F;AACzF4sD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAAhB,GAAwB,MAAxB;AACD,KAnDqB,CAqDtB;AACA;AAEA;;;AACA,QAAI,CAAC4sD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB8Q,IAAjB,IAAyBtN,IAAI,CAACuoB,GAAlC,EAAuC;AACrCtrB,MAAAA,6CAAA,CAAS,sBAAT,EAAiC+C,IAAI,CAACxD,EAAtC,EAA0CizD,MAAM,CAACzvD,IAAD,CAAhD;AACAsvD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB8Q,IAAhB,GAAuB,OAAvB;AACAgiD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB6P,GAAhB,GAAsBojD,MAAM,CAACzvD,IAAD,CAA5B;AACAsvD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAAhB,GAAwB1C,IAAI,CAACsN,IAAL,KAAc,SAAd,GAA0B,SAA1B,GAAsC,kBAA9D;AACAgiD,MAAAA,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB0F,OAAhB,GACEotD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB0F,OAAhB,GACA,GADA,IAECstD,OAAO,GAAG,+CAAH,GAAqD,sBAF7D,CADF;AAID;;AAED,QAAME,QAAQ,GAAG;AACfnvD,MAAAA,UAAU,EAAE,EADG;AAEfmC,MAAAA,KAAK,EAAE4sD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBkG,KAFR;AAGfpC,MAAAA,SAAS,EAAEgvD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgBI,WAHZ;AAIf;AACA;AACA;AACAsF,MAAAA,OAAO,EAAEotD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB0F,OAPV;AAOmB;AAClCV,MAAAA,KAAK,EAAE,EARQ;AAQJ;AACXhF,MAAAA,EAAE,EAAEwD,IAAI,CAACxD,EATM;AAUf6P,MAAAA,GAAG,EAAEijD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB6P,GAVN;AAWfgI,MAAAA,KAAK,EAAE,WAAWrU,IAAI,CAACxD,EAAhB,GAAqB,GAArB,GAA2BsqB,GAXnB;AAYfxZ,MAAAA,IAAI,EAAEgiD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB8Q,IAZP;AAafnM,MAAAA,OAAO,EAAE,EAbM,CAaF;;AAbE,KAAjB;;AAgBA,QAAInB,IAAI,CAACgU,IAAT,EAAe;AACb;AACA,UAAM27C,QAAQ,GAAG;AACfpvD,QAAAA,UAAU,EAAE,EADG;AAEfmC,QAAAA,KAAK,EAAE,MAFQ;AAGfpC,QAAAA,SAAS,EAAEN,IAAI,CAACgU,IAAL,CAAUjX,IAHN;AAIfmF,QAAAA,OAAO,EAAE,mBAJM;AAIe;AAC9BV,QAAAA,KAAK,EAAE,EALQ;AAKJ;AACXhF,QAAAA,EAAE,EAAEwD,IAAI,CAACxD,EAAL,GAAU,WAAV,GAAwBsqB,GANb;AAOfzS,QAAAA,KAAK,EAAE,WAAWrU,IAAI,CAACxD,EAAhB,GAAqB,WAArB,GAAmCsqB,GAP3B;AAQfxZ,QAAAA,IAAI,EAAEgiD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB8Q,IARP;AASfnM,QAAAA,OAAO,EAAE,EATM,CASF;;AATE,OAAjB;AAWA,UAAMyuD,SAAS,GAAG;AAChBrvD,QAAAA,UAAU,EAAE,EADI;AAEhBmC,QAAAA,KAAK,EAAE,WAFS;AAGhBpC,QAAAA,SAAS,EAAEN,IAAI,CAACgU,IAAL,CAAUjX,IAHL;AAIhBmF,QAAAA,OAAO,EAAEotD,MAAM,CAACtvD,IAAI,CAACxD,EAAN,CAAN,CAAgB0F,OAJT;AAIkB;AAClCV,QAAAA,KAAK,EAAE,EALS;AAKL;AACXhF,QAAAA,EAAE,EAAEwD,IAAI,CAACxD,EAAL,GAAU,YANE;AAOhB6X,QAAAA,KAAK,EAAE,WAAWrU,IAAI,CAACxD,EAAhB,GAAqB,aAArB,GAAqCsqB,GAP5B;AAQhBxZ,QAAAA,IAAI,EAAE,OARU;AAShBnM,QAAAA,OAAO,EAAE,CATO,CASJ;;AATI,OAAlB;AAWA2lB,MAAAA,GAAG;AAEHP,MAAAA,CAAC,CAACzZ,OAAF,CAAU9M,IAAI,CAACxD,EAAL,GAAU,YAApB,EAAkCozD,SAAlC;AAEArpC,MAAAA,CAAC,CAACzZ,OAAF,CAAU6iD,QAAQ,CAACnzD,EAAnB,EAAuBmzD,QAAvB;AACAppC,MAAAA,CAAC,CAACzZ,OAAF,CAAU9M,IAAI,CAACxD,EAAf,EAAmBkzD,QAAnB;AAEAnpC,MAAAA,CAAC,CAACxZ,SAAF,CAAY/M,IAAI,CAACxD,EAAjB,EAAqBwD,IAAI,CAACxD,EAAL,GAAU,YAA/B;AACA+pB,MAAAA,CAAC,CAACxZ,SAAF,CAAY4iD,QAAQ,CAACnzD,EAArB,EAAyBwD,IAAI,CAACxD,EAAL,GAAU,YAAnC;AAEA,UAAI08C,IAAI,GAAGl5C,IAAI,CAACxD,EAAhB;AACA,UAAIi9C,EAAE,GAAGkW,QAAQ,CAACnzD,EAAlB;;AAEA,UAAIwD,IAAI,CAACgU,IAAL,CAAU67C,QAAV,KAAuB,SAA3B,EAAsC;AACpC3W,QAAAA,IAAI,GAAGyW,QAAQ,CAACnzD,EAAhB;AACAi9C,QAAAA,EAAE,GAAGz5C,IAAI,CAACxD,EAAV;AACD;;AACD+pB,MAAAA,CAAC,CAACvU,OAAF,CAAUknC,IAAV,EAAgBO,EAAhB,EAAoB;AAClBvyB,QAAAA,SAAS,EAAE,MADO;AAElB4oC,QAAAA,SAAS,EAAE,EAFO;AAGlBtuD,QAAAA,KAAK,EAAE,WAHW;AAIlBjB,QAAAA,UAAU,EAAE,EAJM;AAKlB2B,QAAAA,OAAO,EAAE,sBALS;AAMlBslB,QAAAA,cAAc,EAAE,YANE;AAOlBC,QAAAA,QAAQ,EAAE,GAPQ;AAQlBC,QAAAA,SAAS,EAAE,MARO;AASlBrd,QAAAA,SAAS,EAAE;AATO,OAApB;AAWD,KApDD,MAoDO;AACLkc,MAAAA,CAAC,CAACzZ,OAAF,CAAU9M,IAAI,CAACxD,EAAf,EAAmBkzD,QAAnB;AACD;AACF;;AAED,MAAI3vD,MAAJ,EAAY;AACV,QAAIA,MAAM,CAACvD,EAAP,KAAc,MAAlB,EAA0B;AACxBS,MAAAA,8CAAA,CAAU,eAAV,EAA2B+C,IAAI,CAACxD,EAAhC,EAAoC,6BAApC,EAAmEuD,MAAM,CAACvD,EAA1E;AACA+pB,MAAAA,CAAC,CAACxZ,SAAF,CAAY/M,IAAI,CAACxD,EAAjB,EAAqBuD,MAAM,CAACvD,EAA5B;AACD;AACF;;AACD,MAAIwD,IAAI,CAACuoB,GAAT,EAAc;AACZtrB,IAAAA,8CAAA,CAAU,wBAAV;AACA8yD,IAAAA,QAAQ,CAACxpC,CAAD,EAAIvmB,IAAJ,EAAUA,IAAI,CAACuoB,GAAf,EAAoB,CAACinC,OAArB,CAAR;AACD;AACF,CAzJD;;AA0JA,IAAI1oC,GAAG,GAAG,CAAV;;AACA,IAAMipC,QAAQ,GAAG,SAAXA,QAAW,CAACxpC,CAAD,EAAIxmB,MAAJ,EAAYwoB,GAAZ,EAAiBinC,OAAjB,EAA6B;AAC5C;AACAvyD,EAAAA,8CAAA,CAAU,OAAV,EAAmBsrB,GAAnB;AACAA,EAAAA,GAAG,CAACtpB,OAAJ,CAAY,UAAC0kB,IAAD,EAAU;AACpB,QAAIA,IAAI,CAACyU,IAAL,KAAc,OAAd,IAAyBzU,IAAI,CAACyU,IAAL,KAAc,SAA3C,EAAsD;AACpDm3B,MAAAA,SAAS,CAAChpC,CAAD,EAAIxmB,MAAJ,EAAY4jB,IAAZ,EAAkB6rC,OAAlB,CAAT;AACD,KAFD,MAEO,IAAI7rC,IAAI,CAACyU,IAAL,KAAc,UAAlB,EAA8B;AACnCm3B,MAAAA,SAAS,CAAChpC,CAAD,EAAIxmB,MAAJ,EAAY4jB,IAAI,CAACiqC,MAAjB,EAAyB4B,OAAzB,CAAT;AACAD,MAAAA,SAAS,CAAChpC,CAAD,EAAIxmB,MAAJ,EAAY4jB,IAAI,CAACkqC,MAAjB,EAAyB2B,OAAzB,CAAT;AACA,UAAMvoC,QAAQ,GAAG;AACfzqB,QAAAA,EAAE,EAAE,SAASsqB,GADE;AAEfI,QAAAA,SAAS,EAAE,QAFI;AAGf/f,QAAAA,YAAY,EAAE,YAHC;AAIf3F,QAAAA,KAAK,EAAE,WAJQ;AAKfjB,QAAAA,UAAU,EAAE,EALG;AAMfH,QAAAA,KAAK,EAAEkgB,mEAAA,CAAoBqD,IAAI,CAAC/mB,WAAzB,EAAsCiC,kDAAS,EAA/C,CANQ;AAOf2oB,QAAAA,cAAc,EAAE,YAPD;AAQfC,QAAAA,QAAQ,EAAE,GARK;AASfC,QAAAA,SAAS,EAAE,MATI;AAUfrd,QAAAA,SAAS,EAAE,QAVI;AAWfnI,QAAAA,OAAO,EAAE;AAXM,OAAjB;AAaA,UAAI8tD,OAAO,GAAGrsC,IAAI,CAACiqC,MAAL,CAAYpxD,EAA1B;AACA,UAAIyzD,KAAK,GAAGtsC,IAAI,CAACkqC,MAAL,CAAYrxD,EAAxB;AAEA+pB,MAAAA,CAAC,CAACvU,OAAF,CAAUg+C,OAAV,EAAmBC,KAAnB,EAA0BhpC,QAA1B,EAAoCH,GAApC;AACAA,MAAAA,GAAG;AACJ;AACF,GAzBD;AA0BD,CA7BD;;AA8BA,IAAM2oC,MAAM,GAAG,SAATA,MAAS,CAACljD,KAAD,EAAQ2jD,UAAR,EAAuB;AACpC,MAAI7jD,GAAG,GAAG6jD,UAAU,IAAI,IAAxB;;AACA,MAAI3jD,KAAK,CAACgc,GAAV,EAAe;AACb,SAAK,IAAIvqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuO,KAAK,CAACgc,GAAN,CAAUtqB,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,UAAMgC,IAAI,GAAGuM,KAAK,CAACgc,GAAN,CAAUvqB,CAAV,CAAb;;AACA,UAAIgC,IAAI,CAACo4B,IAAL,KAAc,KAAlB,EAAyB;AACvB/rB,QAAAA,GAAG,GAAGrM,IAAI,CAACyG,KAAX;AACD;AACF;AACF;;AACD,SAAO4F,GAAP;AACD,CAXD;AAYA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM4b,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCS,EAAAA,6CAAA,CAAS,4BAAT,EAAuCT,EAAvC;AACA4uD,EAAAA,sDAAA;AACAkE,EAAAA,MAAM,GAAG,EAAT;AACA,MAAMxpC,MAAM,GAAGrb,oEAAf;AACAqb,EAAAA,MAAM,CAACM,EAAP,GAAYglC,gDAAZ,CALsC,CAOtC;;AACAtlC,EAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb,EARsC,CAUtC;;AACA,MAAIsP,GAAG,GAAG++C,6DAAA,EAAV;;AACA,MAAI,OAAO/+C,GAAP,KAAe,WAAnB,EAAgC;AAC9BA,IAAAA,GAAG,GAAG,IAAN;AACD;;AAED,MAAM7N,IAAI,GAAGK,kDAAS,GAAG4L,KAAzB;AACA,MAAMyP,WAAW,GAAG1b,IAAI,CAAC0b,WAAL,IAAoB,EAAxC;AACA,MAAMC,WAAW,GAAG3b,IAAI,CAAC2b,WAAL,IAAoB,EAAxC;AAEA,MAAMhB,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC;AAEAlc,EAAAA,6CAAA,CAASmuD,6DAAA,EAAT;AACAA,EAAAA,wDAAA,CAAgBA,6DAAA,EAAhB;AACAnuD,EAAAA,6CAAA,CAASmuD,6DAAA,EAAT,EAxBsC,CA0BtC;;AACA,MAAM7kC,CAAC,GAAG,IAAIrb,uDAAJ,CAAmB;AAC3BgI,IAAAA,UAAU,EAAE,IADe;AAE3BC,IAAAA,QAAQ,EAAE;AAFiB,GAAnB,EAIPC,QAJO,CAIE;AACR9G,IAAAA,OAAO,EAAEmjD,MAAM,CAACrE,6DAAA,EAAD,CADP;AAER/3C,IAAAA,OAAO,EAAE6G,WAFD;AAGR5G,IAAAA,OAAO,EAAE6G,WAHD;AAIR5G,IAAAA,OAAO,EAAE,CAJD;AAKRC,IAAAA,OAAO,EAAE;AALD,GAJF,EAWPC,mBAXO,CAWa,YAAY;AAC/B,WAAO,EAAP;AACD,GAbO,CAAV;AAeA87C,EAAAA,SAAS,CAAChpC,CAAD,EAAI/lB,SAAJ,EAAe4qD,6DAAA,EAAf,EAAuC,IAAvC,CAAT,CA1CsC,CA4CtC;;AACA,MAAIljC,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AACA,MAAMlH,GAAG,GAAG4rB,IAAI,CAACvoB,MAAL,iBAAoBpD,EAApB,SAAZ,CAtDsC,CAwDtC;;AAEA,MAAMid,OAAO,GAAG0O,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAN,GAAW,IAAvB,CAAhB;AACA+Q,EAAAA,+DAAM,CAACkM,OAAD,EAAU8M,CAAV,EAAa,CAAC,MAAD,CAAb,EAAuB,cAAvB,EAAuC/pB,EAAvC,CAAN;AAEA,MAAM2E,OAAO,GAAG,CAAhB;AAEA,MAAMkpB,MAAM,GAAG9tB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAf;AAEA,MAAMO,KAAK,GAAGopB,MAAM,CAACppB,KAAP,GAAeE,OAAO,GAAG,CAAvC;AACA,MAAMD,MAAM,GAAGmpB,MAAM,CAACnpB,MAAP,GAAgBC,OAAO,GAAG,CAAzC,CAlEsC,CAoEtC;;AACA5E,EAAAA,GAAG,CAACO,IAAJ,CAAS,OAAT,EAAkB,cAAlB;AAEA,MAAMurB,SAAS,GAAG9rB,GAAG,CAACyD,IAAJ,GAAWU,OAAX,EAAlB;AAEAylB,EAAAA,wDAAgB,CAAC5pB,GAAD,EAAM2E,MAAN,EAAcD,KAAK,GAAG,IAAtB,EAA4BzC,IAAI,CAAC4b,WAAjC,CAAhB,CAzEsC,CA2EtC;;AACA,MAAMgP,IAAI,aAAMf,SAAS,CAAC1mB,CAAV,GAAcR,OAApB,cAA+BknB,SAAS,CAACzmB,CAAV,GAAcT,OAA7C,cAAwDF,KAAxD,cAAiEC,MAAjE,CAAV;AACAjE,EAAAA,8CAAA,mBAAqBmsB,IAArB;AACA7sB,EAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,EAAoBssB,IAApB,EA9EsC,CAgFtC;AACA;;AACA,MAAMZ,MAAM,GAAG/kB,QAAQ,CAACglB,gBAAT,CAA0B,UAAUjsB,EAAV,GAAe,sBAAzC,CAAf;;AACA,OAAK,IAAIksB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACvqB,MAA3B,EAAmCyqB,CAAC,EAApC,EAAwC;AACtC,QAAMtoB,KAAK,GAAGooB,MAAM,CAACE,CAAD,CAApB,CADsC,CAGtC;;AACA,QAAMC,GAAG,GAAGvoB,KAAK,CAACM,OAAN,EAAZ;AAEA,QAAMZ,IAAI,GAAG2D,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAb;AACA5D,IAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,IAAAA,IAAI,CAACuE,YAAL,CAAkB,IAAlB,EAAwB,CAAxB;AACAvE,IAAAA,IAAI,CAACuE,YAAL,CAAkB,OAAlB,EAA2BskB,GAAG,CAAC1nB,KAA/B;AACAnB,IAAAA,IAAI,CAACuE,YAAL,CAAkB,QAAlB,EAA4BskB,GAAG,CAACznB,MAAhC;AAEAd,IAAAA,KAAK,CAACwoB,YAAN,CAAmB9oB,IAAnB,EAAyBM,KAAK,CAACyoB,UAA/B,EAZsC,CAatC;AACD;;AACDxsB,EAAAA,0DAAyB,CAACypB,MAAM,CAACM,EAAR,EAAY7pB,GAAZ,EAAiBC,EAAjB,CAAzB;AACD,CAnGM;AAqGP,iEAAe;AACburB,EAAAA,OAAO,EAAPA,OADa;AAEbtG,EAAAA,UAAU,EAAVA,UAFa;AAGbwG,EAAAA,IAAI,EAAJA;AAHa,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtVA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA;AACA;AACA;AACA;AAEAnC,2DAAA,GAAYslC,gDAAZ,EAEA;;AACA,IAAI5sD,IAAJ;AAEA,IAAM2xD,iBAAiB,GAAG,EAA1B;AAEO,IAAMpoC,OAAO,GAAG,SAAVA,OAAU,GAAY,CAAE,CAA9B;AAEP;AACA;AACA;AACA;AACA;;AACA,IAAM5c,aAAa,GAAG,SAAhBA,aAAgB,CAAU1I,IAAV,EAAgB;AACpCA,EAAAA,IAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,eAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,2BAVb;AAWD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMmrB,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtCgC,EAAAA,IAAI,GAAGK,kDAAS,GAAG4L,KAAnB;AACA,MAAM0O,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CAFsC,CAGtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AAEAqiB,EAAAA,iEAAA;AACAA,EAAAA,8DAAA,CAAa/oB,IAAb;AACAE,EAAAA,8CAAA,CAAU,uBAAuBF,IAAjC,EAhBsC,CAkBtC;;AACA,MAAMgsB,OAAO,GAAGZ,IAAI,CAACvoB,MAAL,gBAAoBpD,EAApB,QAAhB;AACA2O,EAAAA,aAAa,CAAC4d,OAAD,CAAb,CApBsC,CAsBtC;;AACA,MAAM3f,KAAK,GAAG,IAAI8B,uDAAJ,CAAmB;AAC/BgI,IAAAA,UAAU,EAAE,IADmB;AAE/BC,IAAAA,QAAQ,EAAE,IAFqB;AAG/B;AACA7G,IAAAA,OAAO,EAAE,IAJsB,CAK/B;;AAL+B,GAAnB,CAAd,CAvBsC,CA+BtC;;AACAlD,EAAAA,KAAK,CAACqK,mBAAN,CAA0B,YAAY;AACpC,WAAO,EAAP;AACD,GAFD;AAIA,MAAM85C,OAAO,GAAGnC,2DAAA,EAAhB;AACAgF,EAAAA,SAAS,CAAC7C,OAAD,EAAUxkC,OAAV,EAAmBvoB,SAAnB,EAA8B,KAA9B,EAAqC2nB,IAArC,EAA2CI,GAA3C,CAAT;AAEA,MAAMpnB,OAAO,GAAG3C,IAAI,CAAC2C,OAArB;AACA,MAAMkpB,MAAM,GAAGtB,OAAO,CAAC/oB,IAAR,GAAeU,OAAf,EAAf;AAEA,MAAMO,KAAK,GAAGopB,MAAM,CAACppB,KAAP,GAAeE,OAAO,GAAG,CAAvC;AACA,MAAMD,MAAM,GAAGmpB,MAAM,CAACnpB,MAAP,GAAgBC,OAAO,GAAG,CAAzC,CA3CsC,CA6CtC;;AACA,MAAMkvD,QAAQ,GAAGpvD,KAAK,GAAG,IAAzB;AACAklB,EAAAA,wDAAgB,CAAC4C,OAAD,EAAU7nB,MAAV,EAAkBmvD,QAAlB,EAA4B7xD,IAAI,CAAC4b,WAAjC,CAAhB;AAEA2O,EAAAA,OAAO,CAACjsB,IAAR,CACE,SADF,EAEE,UAAGutB,MAAM,CAAC1oB,CAAP,GAAWnD,IAAI,CAAC2C,OAAnB,eAA+BkpB,MAAM,CAACzoB,CAAP,GAAWpD,IAAI,CAAC2C,OAA/C,SAA4DF,KAA5D,GAAoE,GAApE,GAA0EC,MAF5E;AAIA7E,EAAAA,0DAAyB,CAACypB,2DAAD,EAAYiD,OAAZ,EAAqBvsB,EAArB,CAAzB;AACD,CAtDM;;AAuDP,IAAM8zD,aAAa,GAAG,SAAhBA,aAAgB,CAACvzD,IAAD,EAAU;AAC9B,SAAOA,IAAI,GAAGA,IAAI,CAACkB,MAAL,GAAcO,IAAI,CAAC6f,cAAtB,GAAuC,CAAlD;AACD,CAFD;;AAIA,IAAM+xC,SAAS,GAAG,SAAZA,SAAY,CAAC7nC,GAAD,EAAMQ,OAAN,EAAe0jC,QAAf,EAAyBV,MAAzB,EAAiC5jC,IAAjC,EAAuCooC,WAAvC,EAAuD;AACvE;AACA,MAAMnnD,KAAK,GAAG,IAAI8B,uDAAJ,CAAmB;AAC/BiI,IAAAA,QAAQ,EAAE,IADqB;AAE/BD,IAAAA,UAAU,EAAE;AAFmB,GAAnB,CAAd;AAKA,MAAIlV,CAAJ;AACA,MAAIwyD,WAAW,GAAG,IAAlB;;AACA,OAAKxyD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuqB,GAAG,CAACtqB,MAApB,EAA4BD,CAAC,EAA7B,EAAiC;AAC/B,QAAIuqB,GAAG,CAACvqB,CAAD,CAAH,CAAOo6B,IAAP,KAAgB,UAApB,EAAgC;AAC9Bo4B,MAAAA,WAAW,GAAG,KAAd;AACA;AACD;AACF,GAdsE,CAgBvE;;;AACA,MAAI/D,QAAJ,EACErjD,KAAK,CAACgK,QAAN,CAAe;AACb9G,IAAAA,OAAO,EAAE,IADI;AAEb4G,IAAAA,UAAU,EAAE,IAFC;AAGbC,IAAAA,QAAQ,EAAE,IAHG;AAIb;AACAs9C,IAAAA,MAAM,EAAE,YALK;AAMbn9C,IAAAA,OAAO,EAAEk9C,WAAW,GAAG,CAAH,GAAOhyD,IAAI,CAAC+f,gBANnB;AAObmyC,IAAAA,OAAO,EAAEF,WAAW,GAAG,CAAH,GAAO,EAPd;AAQbxnC,IAAAA,YAAY,EAAE,IARD,CASb;AACA;;AAVa,GAAf,EADF,KAaK;AACH5f,IAAAA,KAAK,CAACgK,QAAN,CAAe;AACb9G,MAAAA,OAAO,EAAE,IADI;AAEb4G,MAAAA,UAAU,EAAE,IAFC;AAGbC,MAAAA,QAAQ,EAAE,IAHG;AAIb;AACA;AACA;AACAG,MAAAA,OAAO,EAAEk9C,WAAW,GAAG,CAAH,GAAOhyD,IAAI,CAAC+f,gBAPnB;AAQbmyC,MAAAA,OAAO,EAAEF,WAAW,GAAG,CAAH,GAAO,EARd;AASbC,MAAAA,MAAM,EAAE,YATK;AAUb;AACAznC,MAAAA,YAAY,EAAE;AAXD,KAAf;AAaD,GA5CsE,CA8CvE;;AACA5f,EAAAA,KAAK,CAACqK,mBAAN,CAA0B,YAAY;AACpC,WAAO,EAAP;AACD,GAFD;AAIA23C,EAAAA,wDAAA,CAAgB7iC,GAAhB;AACA,MAAM8lC,MAAM,GAAGjD,0DAAA,EAAf;AACA,MAAM3qC,SAAS,GAAG2qC,6DAAA,EAAlB;AAEA,MAAMrsD,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYsvD,MAAZ,CAAb;AAEA,MAAIV,KAAK,GAAG,IAAZ;;AAEA,OAAK,IAAI3vD,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGe,IAAI,CAACd,MAAzB,EAAiCD,EAAC,EAAlC,EAAsC;AACpC,QAAMwtD,QAAQ,GAAG6C,MAAM,CAACtvD,IAAI,CAACf,EAAD,CAAL,CAAvB;;AAEA,QAAIyuD,QAAJ,EAAc;AACZjB,MAAAA,QAAQ,CAACiB,QAAT,GAAoBA,QAApB;AACD;;AAED,QAAIzsD,IAAI,SAAR;;AACA,QAAIwrD,QAAQ,CAACjjC,GAAb,EAAkB;AAChB,UAAIooC,GAAG,GAAG5nC,OAAO,CAAC3mB,MAAR,CAAe,GAAf,EAAoBtF,IAApB,CAAyB,IAAzB,EAA+B0uD,QAAQ,CAAChvD,EAAxC,EAA4CM,IAA5C,CAAiD,OAAjD,EAA0D,YAA1D,CAAV;AACAkD,MAAAA,IAAI,GAAGowD,SAAS,CAAC5E,QAAQ,CAACjjC,GAAV,EAAeooC,GAAf,EAAoBnF,QAAQ,CAAChvD,EAA7B,EAAiC,CAACuvD,MAAlC,EAA0C5jC,IAA1C,EAAgDooC,WAAhD,CAAhB;;AAEA,UAAI5C,KAAJ,EAAW;AACT;AACAgD,QAAAA,GAAG,GAAG7E,uDAAc,CAAC6E,GAAD,EAAMnF,QAAN,EAAgBO,MAAhB,CAApB;AACA,YAAI6E,SAAS,GAAGD,GAAG,CAAC3wD,IAAJ,GAAWU,OAAX,EAAhB;AACAV,QAAAA,IAAI,CAACiB,KAAL,GAAa2vD,SAAS,CAAC3vD,KAAvB;AACAjB,QAAAA,IAAI,CAACkB,MAAL,GAAc0vD,SAAS,CAAC1vD,MAAV,GAAmB1C,IAAI,CAAC2C,OAAL,GAAe,CAAhD;AACAgvD,QAAAA,iBAAiB,CAAC3E,QAAQ,CAAChvD,EAAV,CAAjB,GAAiC;AAAEoF,UAAAA,CAAC,EAAEpD,IAAI,CAACggB;AAAV,SAAjC;AACD,OAPD,MAOO;AACL;AACA,YAAIoyC,UAAS,GAAGD,GAAG,CAAC3wD,IAAJ,GAAWU,OAAX,EAAhB;;AACAV,QAAAA,IAAI,CAACiB,KAAL,GAAa2vD,UAAS,CAAC3vD,KAAvB;AACAjB,QAAAA,IAAI,CAACkB,MAAL,GAAc0vD,UAAS,CAAC1vD,MAAxB,CAJK,CAKL;AACD;AACF,KAlBD,MAkBO;AACLlB,MAAAA,IAAI,GAAGgtD,kDAAS,CAACjkC,OAAD,EAAUyiC,QAAV,EAAoBpiD,KAApB,CAAhB;AACD;;AAED,QAAIoiD,QAAQ,CAACx3C,IAAb,EAAmB;AACjB;AACA,UAAM68C,OAAO,GAAG;AACdnF,QAAAA,YAAY,EAAE,EADA;AAEdlvD,QAAAA,EAAE,EAAEgvD,QAAQ,CAAChvD,EAAT,GAAc,OAFJ;AAGdwX,QAAAA,IAAI,EAAEw3C,QAAQ,CAACx3C,IAHD;AAId1G,QAAAA,IAAI,EAAE;AAJQ,OAAhB;AAMA,UAAM0G,IAAI,GAAGg5C,kDAAS,CAACjkC,OAAD,EAAU8nC,OAAV,EAAmBznD,KAAnB,CAAtB,CARiB,CAUjB;;AACA,UAAIoiD,QAAQ,CAACx3C,IAAT,CAAc67C,QAAd,KAA2B,SAA/B,EAA0C;AACxCzmD,QAAAA,KAAK,CAAC0D,OAAN,CAAc9M,IAAI,CAACxD,EAAL,GAAU,OAAxB,EAAiCwX,IAAjC;AACA5K,QAAAA,KAAK,CAAC0D,OAAN,CAAc9M,IAAI,CAACxD,EAAnB,EAAuBwD,IAAvB;AACD,OAHD,MAGO;AACLoJ,QAAAA,KAAK,CAAC0D,OAAN,CAAc9M,IAAI,CAACxD,EAAnB,EAAuBwD,IAAvB;AACAoJ,QAAAA,KAAK,CAAC0D,OAAN,CAAc9M,IAAI,CAACxD,EAAL,GAAU,OAAxB,EAAiCwX,IAAjC;AACD,OAjBgB,CAkBjB;;;AACA5K,MAAAA,KAAK,CAAC2D,SAAN,CAAgB/M,IAAI,CAACxD,EAArB,EAAyBwD,IAAI,CAACxD,EAAL,GAAU,QAAnC;AACA4M,MAAAA,KAAK,CAAC2D,SAAN,CAAgB/M,IAAI,CAACxD,EAAL,GAAU,OAA1B,EAAmCwD,IAAI,CAACxD,EAAL,GAAU,QAA7C;AACD,KArBD,MAqBO;AACL;AACA;AACA;AACA4M,MAAAA,KAAK,CAAC0D,OAAN,CAAc9M,IAAI,CAACxD,EAAnB,EAAuBwD,IAAvB;AACD;AACF;;AAED/C,EAAAA,8CAAA,CAAU,QAAV,EAAoBmM,KAAK,CAAC0nD,SAAN,EAApB,EAAuC1nD,KAAvC;AACA,MAAI0d,GAAG,GAAG,CAAV;AACArG,EAAAA,SAAS,CAACxhB,OAAV,CAAkB,UAAU2iB,QAAV,EAAoB;AACpCkF,IAAAA,GAAG;AACH7pB,IAAAA,8CAAA,CAAU,cAAV,EAA0B2kB,QAA1B;AACAxY,IAAAA,KAAK,CAAC4I,OAAN,CACE4P,QAAQ,CAACC,GADX,EAEED,QAAQ,CAACE,GAFX,EAGE;AACEF,MAAAA,QAAQ,EAAEA,QADZ;AAEE3gB,MAAAA,KAAK,EAAEqvD,aAAa,CAAC1uC,QAAQ,CAACxL,KAAV,CAFtB;AAGElV,MAAAA,MAAM,EAAE1C,IAAI,CAAC8f,WAAL,GAAmBgC,+DAAA,CAAesB,QAAQ,CAACxL,KAAxB,EAA+BnY,MAH5D;AAIEwpB,MAAAA,QAAQ,EAAE;AAJZ,KAHF,EASE,OAAOX,GATT;AAWD,GAdD;AAgBA7b,EAAAA,mDAAA,CAAa7B,KAAb;AAEAnM,EAAAA,8CAAA,CAAU,oBAAV,EAAgCmM,KAAK,CAACmD,KAAN,EAAhC;AACA,MAAMwkD,OAAO,GAAGhoC,OAAO,CAAC/oB,IAAR,EAAhB;AAEAoJ,EAAAA,KAAK,CAACmD,KAAN,GAActN,OAAd,CAAsB,UAAUsK,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpEtM,MAAAA,6CAAA,CAAS,UAAUsM,CAAV,GAAc,IAAd,GAAqBjI,IAAI,CAACC,SAAL,CAAe6H,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,CAAf,CAA9B;AACA4e,MAAAA,IAAI,CACDvoB,MADH,CACU,MAAMmxD,OAAO,CAACv0D,EAAd,GAAmB,IAAnB,GAA0B+M,CADpC,EAEGzM,IAFH,CAGI,WAHJ,EAII,gBACGsM,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc5H,CAAd,GAAkByH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAActI,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGmI,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc3H,CAAd,IACEuuD,iBAAiB,CAAC5mD,CAAD,CAAjB,GAAuB4mD,iBAAiB,CAAC5mD,CAAD,CAAjB,CAAqB3H,CAA5C,GAAgD,CADlD,IAECwH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAcrI,MAAd,GAAuB,CAL3B,IAME,IAVN;AAYAinB,MAAAA,IAAI,CACDvoB,MADH,CACU,MAAMmxD,OAAO,CAACv0D,EAAd,GAAmB,IAAnB,GAA0B+M,CADpC,EAEGzM,IAFH,CAEQ,cAFR,EAEwBsM,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAAc5H,CAAd,GAAkByH,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,EAActI,KAAd,GAAsB,CAFhE;AAGA,UAAM+vD,QAAQ,GAAGT,WAAW,CAAC9nC,gBAAZ,CAA6B,MAAMsoC,OAAO,CAACv0D,EAAd,GAAmB,IAAnB,GAA0B+M,CAA1B,GAA8B,WAA3D,CAAjB;AACAynD,MAAAA,QAAQ,CAAC/xD,OAAT,CAAiB,UAACoD,OAAD,EAAa;AAC5B,YAAMtC,MAAM,GAAGsC,OAAO,CAACwhC,aAAvB;AACA,YAAIotB,MAAM,GAAG,CAAb;AACA,YAAIC,MAAM,GAAG,CAAb;;AACA,YAAInxD,MAAJ,EAAY;AACV,cAAIA,MAAM,CAAC8jC,aAAX,EAA0BotB,MAAM,GAAGlxD,MAAM,CAAC8jC,aAAP,CAAqBnjC,OAArB,GAA+BO,KAAxC;AAC1BiwD,UAAAA,MAAM,GAAGhkC,QAAQ,CAACntB,MAAM,CAACoxD,YAAP,CAAoB,cAApB,CAAD,EAAsC,EAAtC,CAAjB;;AACA,cAAInnD,MAAM,CAACC,KAAP,CAAainD,MAAb,CAAJ,EAA0B;AACxBA,YAAAA,MAAM,GAAG,CAAT;AACD;AACF;;AACD7uD,QAAAA,OAAO,CAACgC,YAAR,CAAqB,IAArB,EAA2B,IAAI6sD,MAAJ,GAAa,CAAxC;AACA7uD,QAAAA,OAAO,CAACgC,YAAR,CAAqB,IAArB,EAA2B4sD,MAAM,GAAGC,MAAT,GAAkB,CAA7C;AACD,OAbD;AAcD,KAhCD,MAgCO;AACLj0D,MAAAA,8CAAA,CAAU,aAAasM,CAAb,GAAiB,IAAjB,GAAwBjI,IAAI,CAACC,SAAL,CAAe6H,KAAK,CAACpJ,IAAN,CAAWuJ,CAAX,CAAf,CAAlC;AACD;AACF,GApCD;AAsCA,MAAI2jD,QAAQ,GAAG6D,OAAO,CAACrwD,OAAR,EAAf;AAEA0I,EAAAA,KAAK,CAACoD,KAAN,GAAcvN,OAAd,CAAsB,UAAU+J,CAAV,EAAa;AACjC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOI,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpE/L,MAAAA,8CAAA,CAAU,UAAU+L,CAAC,CAACO,CAAZ,GAAgB,MAAhB,GAAyBP,CAAC,CAACvB,CAA3B,GAA+B,IAA/B,GAAsCnG,IAAI,CAACC,SAAL,CAAe6H,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAf,CAAhD;AACAmgB,MAAAA,iDAAQ,CAACJ,OAAD,EAAU3f,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,CAAV,EAAyBI,KAAK,CAAC/D,IAAN,CAAW2D,CAAX,EAAc4Y,QAAvC,CAAR;AACD;AACF,GALD;AAOAsrC,EAAAA,QAAQ,GAAG6D,OAAO,CAACrwD,OAAR,EAAX;AAEA,MAAMusD,SAAS,GAAG;AAChBzwD,IAAAA,EAAE,EAAEiwD,QAAQ,GAAGA,QAAH,GAAc,MADV;AAEhBrsD,IAAAA,KAAK,EAAEqsD,QAAQ,GAAGA,QAAH,GAAc,MAFb;AAGhBxrD,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,MAAM,EAAE;AAJQ,GAAlB;AAOA+rD,EAAAA,SAAS,CAAChsD,KAAV,GAAkBisD,QAAQ,CAACjsD,KAAT,GAAiB,IAAIzC,IAAI,CAAC2C,OAA5C;AACA8rD,EAAAA,SAAS,CAAC/rD,MAAV,GAAmBgsD,QAAQ,CAAChsD,MAAT,GAAkB,IAAI1C,IAAI,CAAC2C,OAA9C;AAEAlE,EAAAA,8CAAA,CAAU,cAAV,EAA0BgwD,SAA1B,EAAqC7jD,KAArC;AACA,SAAO6jD,SAAP;AACD,CA1MD;;AA4MA,iEAAe;AACbllC,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;ACtTA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,6DAGNA,OAAO,CAACsyD,eAHF,4BAIJtyD,OAAO,CAACsyD,eAJJ,kDAORtyD,OAAO,CAACwqB,UAPA,qFAYRxqB,OAAO,CAACu9B,SAZA,uHAmBRv9B,OAAO,CAACuyD,eAnBA,kDAuBRvyD,OAAO,CAAC0qB,OAvBA,0BAwBN1qB,OAAO,CAACwqB,UAxBF,oDA4BNxqB,OAAO,CAAC2qB,SA5BF,kEAiCN3qB,OAAO,CAACsyD,eAjCF,yFAuCRtyD,OAAO,CAACwyD,UAvCA,8IAiDNxyD,OAAO,CAAC2oD,eAjDF,wBAkDR3oD,OAAO,CAAC4oD,YAlDA,sCAqDN5oD,OAAO,CAAC6oD,aArDF,oIA8DR7oD,OAAO,CAAC0qB,OA9DA,wEAmER1qB,OAAO,CAACyyD,oBAnEA,sEAuERzyD,OAAO,CAAC0yD,oBAAR,IAAgC1yD,OAAO,CAAC2yD,iBAvEhC,qDA0EP3yD,OAAO,CAAC0yD,oBAAR,IAAgC1yD,OAAO,CAAC2yD,iBA1EjC,iDA8ER3yD,OAAO,CAACuyD,eA9EA,mGAoFRvyD,OAAO,CAAC4yD,iBApFA,0BAqFN5yD,OAAO,CAAC4yD,iBArFF,iDAyFR5yD,OAAO,CAAC4yD,iBAzFA,0BA0FN5yD,OAAO,CAAC4yD,iBA1FF,uDA8FR5yD,OAAO,CAAC6yD,kBA9FA,0BA+FN7yD,OAAO,CAACwyD,UA/FF,oEAmGRxyD,OAAO,CAAC8yD,mBAAR,IAA+B9yD,OAAO,CAACwyD,UAnG/B,6BAoGHxyD,OAAO,CAACwyD,UApGL,gEAyGRxyD,OAAO,CAAC+yD,QAAR,IAAoB/yD,OAAO,CAAC0qB,OAzGpB,0BA0GN1qB,OAAO,CAACgzD,WAAR,IAAuBhzD,OAAO,CAACwqB,UA1GzB,kEA8GRxqB,OAAO,CAAC0qB,OA9GA,0BA+GN1qB,OAAO,CAACgzD,WAAR,IAAuBhzD,OAAO,CAACwqB,UA/GzB,2EAmHRxqB,OAAO,CAAC2qB,SAnHA,2DAuHR3qB,OAAO,CAACizD,wBAvHA,0BAwHNjzD,OAAO,CAACgzD,WAAR,IAAuBhzD,OAAO,CAACwqB,UAxHzB,kFA6HPxqB,OAAO,CAACuyD,eA7HD,8HAqINvyD,OAAO,CAACgzD,WAAR,IAAuBhzD,OAAO,CAACwqB,UArIzB,iJA6IRxqB,OAAO,CAAC8yD,mBAAR,IAA+B9yD,OAAO,CAACwyD,UA7I/B,oFAgJRxyD,OAAO,CAACkzD,aAAR,GAAwBlzD,OAAO,CAACkzD,aAAhC,GAAgD,SAhJxC,iNA8JRlzD,OAAO,CAACkzD,aAAR,GAAwBlzD,OAAO,CAACkzD,aAAhC,GAAgD,SA9JxC,mGAsKRlzD,OAAO,CAAC4oD,YAtKA,0BAuKN5oD,OAAO,CAAC2oD,eAvKF,gGA6KR3oD,OAAO,CAAC4oD,YA7KA,0BA8KN5oD,OAAO,CAAC2oD,eA9KF,kGAqLR3oD,OAAO,CAAC6oD,aArLA,+DAyLP7oD,OAAO,CAAC6oD,aAzLD,gEA4LC7oD,OAAO,CAAC6oD,aA5LT,iEAgMR7oD,OAAO,CAAC2qB,SAhMA,0BAiMN3qB,OAAO,CAAC2qB,SAjMF;AAAA,CAAlB;;AAsMA,iEAAeJ,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtMA;AACA;AACA;;AAEA,IAAMpmB,YAAY,GAAG,SAAfA,YAAe,CAACE,GAAD;AAAA,SAASmd,mEAAA,CAAoBnd,GAApB,EAAyBkd,8CAAA,EAAzB,CAAT;AAAA,CAArB;;AAEA,IAAIjK,KAAK,GAAG,EAAZ;AACA,IAAIxZ,WAAW,GAAG,EAAlB;AACA,IAAIwgC,cAAc,GAAG,EAArB;AAEA,IAAMF,QAAQ,GAAG,EAAjB;AACA,IAAMC,KAAK,GAAG,EAAd;AACA,IAAMQ,QAAQ,GAAG,EAAjB;AAEO,IAAM/c,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,SAAV,EAAqBC,OAArB,EAA8BxT,IAA9B,EAAoC;AAChEiT,EAAAA,kEAAA,CAA0B,IAA1B,EAAgCM,SAAhC,EAA2CC,OAA3C,EAAoDxT,IAApD;AACD,CAFM;AAIA,IAAMzK,KAAK,GAAG,SAARA,KAAQ,GAAY;AAC/Bq6B,EAAAA,QAAQ,CAACj/B,MAAT,GAAkB,CAAlB;AACAk/B,EAAAA,KAAK,CAACl/B,MAAN,GAAe,CAAf;AACAm/B,EAAAA,cAAc,GAAG,EAAjB;AACAhnB,EAAAA,KAAK,GAAG,EAAR;AACAxZ,EAAAA,WAAW,GAAG,EAAd;AACA+gC,EAAAA,QAAQ,CAAC1/B,MAAT,GAAkB,CAAlB;AACD,CAPM;;AASP,IAAMwnB,QAAQ,GAAG,SAAXA,QAAW,CAAUtiB,GAAV,EAAe;AAC9BiT,EAAAA,KAAK,GAAGnT,YAAY,CAACE,GAAD,CAApB;AACD,CAFD;;AAIA,IAAMxG,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAC3B,SAAOyZ,KAAP;AACD,CAFD;;AAIA,IAAMwP,iBAAiB,GAAG,SAApBA,iBAAoB,CAAUziB,GAAV,EAAe;AACvCvG,EAAAA,WAAW,GAAGqG,YAAY,CAACE,GAAD,CAA1B;AACD,CAFD;;AAIA,IAAMtG,iBAAiB,GAAG,SAApBA,iBAAoB,GAAY;AACpC,SAAOD,WAAP;AACD,CAFD;;AAIO,IAAMgiC,UAAU,GAAG,SAAbA,UAAa,CAAUz7B,GAAV,EAAe;AACvCi6B,EAAAA,cAAc,GAAGj6B,GAAjB;AACA+5B,EAAAA,QAAQ,CAAC19B,IAAT,CAAc2D,GAAd;AACD,CAHM;AAKA,IAAM07B,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO3B,QAAP;AACD,CAFM;AAIA,IAAM4B,QAAQ,GAAG,SAAXA,QAAW,GAAY;AAClC,MAAImzB,iBAAiB,GAAGjzB,YAAY,EAApC;AACA,MAAMC,QAAQ,GAAG,GAAjB;AACA,MAAIC,cAAc,GAAG,CAArB;;AACA,SAAO,CAAC+yB,iBAAD,IAAsB/yB,cAAc,GAAGD,QAA9C,EAAwD;AACtDgzB,IAAAA,iBAAiB,GAAGjzB,YAAY,EAAhC;AACAE,IAAAA,cAAc;AACf;;AAED/B,EAAAA,KAAK,CAAC39B,IAAN,OAAA29B,KAAK,EAASQ,QAAT,CAAL;AAEA,SAAOR,KAAP;AACD,CAZM;;AAcP,IAAM+0B,YAAY,GAAG,SAAfA,YAAe,GAAY;AAC/B,MAAMC,UAAU,GAAG,EAAnB;AACAh1B,EAAAA,KAAK,CAACl+B,OAAN,CAAc,UAACugC,IAAD,EAAU;AACtB,QAAIA,IAAI,CAAC4yB,MAAT,EAAiB;AACfD,MAAAA,UAAU,CAAC3yD,IAAX,OAAA2yD,UAAU,qBAAS3yB,IAAI,CAAC4yB,MAAd,EAAV;AACD;AACF,GAJD;AAMA,MAAMC,MAAM,GAAG,IAAI98C,GAAJ,CAAQ48C,UAAR,CAAf;AACA,SAAO,mBAAIE,MAAJ,EAAY/hD,IAAZ,EAAP;AACD,CAVD;;AAYO,IAAMuxB,OAAO,GAAG,SAAVA,OAAU,CAAUtrB,KAAV,EAAiB+7C,QAAjB,EAA2B;AAChD,MAAMC,MAAM,GAAGD,QAAQ,CAACzvC,MAAT,CAAgB,CAAhB,EAAmBte,KAAnB,CAAyB,GAAzB,CAAf;AAEA,MAAIiuD,KAAK,GAAG,CAAZ;AACA,MAAIC,KAAK,GAAG,EAAZ;;AACA,MAAIF,MAAM,CAACt0D,MAAP,KAAkB,CAAtB,EAAyB;AACvBu0D,IAAAA,KAAK,GAAGxoD,MAAM,CAACuoD,MAAM,CAAC,CAAD,CAAP,CAAd;AACAE,IAAAA,KAAK,GAAG,EAAR;AACD,GAHD,MAGO;AACLD,IAAAA,KAAK,GAAGxoD,MAAM,CAACuoD,MAAM,CAAC,CAAD,CAAP,CAAd;AACAE,IAAAA,KAAK,GAAGF,MAAM,CAAC,CAAD,CAAN,CAAUhuD,KAAV,CAAgB,GAAhB,CAAR;AACD;;AACD,MAAMmuD,UAAU,GAAGD,KAAK,CAACn+C,GAAN,CAAU,UAACpQ,CAAD;AAAA,WAAOA,CAAC,CAACY,IAAF,EAAP;AAAA,GAAV,CAAnB;AAEA,MAAMg9B,OAAO,GAAG;AACdC,IAAAA,OAAO,EAAE3E,cADK;AAEd9vB,IAAAA,IAAI,EAAE8vB,cAFQ;AAGdg1B,IAAAA,MAAM,EAAEM,UAHM;AAIdlzB,IAAAA,IAAI,EAAEjpB,KAJQ;AAKdi8C,IAAAA,KAAK,EAALA;AALc,GAAhB;AAQA70B,EAAAA,QAAQ,CAACn+B,IAAT,CAAcsiC,OAAd;AACD,CAvBM;AAyBA,IAAMU,UAAU,GAAG,SAAbA,UAAa,CAAUjsB,KAAV,EAAiB;AACzC,MAAMksB,OAAO,GAAG;AACdV,IAAAA,OAAO,EAAE3E,cADK;AAEd9vB,IAAAA,IAAI,EAAE8vB,cAFQ;AAGdxgC,IAAAA,WAAW,EAAE2Z,KAHC;AAIdipB,IAAAA,IAAI,EAAEjpB,KAJQ;AAKdrU,IAAAA,OAAO,EAAE;AALK,GAAhB;AAOAi7B,EAAAA,KAAK,CAAC39B,IAAN,CAAWijC,OAAX;AACD,CATM;;AAWP,IAAMzD,YAAY,GAAG,SAAfA,YAAe,GAAY;AAC/B,MAAM0D,WAAW,GAAG,SAAdA,WAAc,CAAU37B,GAAV,EAAe;AACjC,WAAO42B,QAAQ,CAAC52B,GAAD,CAAR,CAAci7B,SAArB;AACD,GAFD;;AAIA,MAAIW,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAI3kC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2/B,QAAQ,CAAC1/B,MAA7B,EAAqCD,CAAC,EAAtC,EAA0C;AACxC0kC,IAAAA,WAAW,CAAC1kC,CAAD,CAAX;AAEA2kC,IAAAA,YAAY,GAAGA,YAAY,IAAIhF,QAAQ,CAAC3/B,CAAD,CAAR,CAAYgkC,SAA3C;AACD;;AACD,SAAOW,YAAP;AACD,CAZD;;AAcA,IAAMkX,SAAS,GAAG,SAAZA,SAAY,GAAY;AAC5B,SAAOqY,YAAY,EAAnB;AACD,CAFD;;AAIA,iEAAe;AACbtxC,EAAAA,cAAc,EAAdA,cADa;AAEb/hB,EAAAA,SAAS,EAAE;AAAA,WAAMwhB,8CAAA,GAAsBhD,OAA5B;AAAA,GAFE;AAGbxa,EAAAA,KAAK,EAALA,KAHa;AAIb4iB,EAAAA,QAAQ,EAARA,QAJa;AAKb9oB,EAAAA,QAAQ,EAARA,QALa;AAMbipB,EAAAA,iBAAiB,EAAjBA,iBANa;AAOb/oB,EAAAA,iBAAiB,EAAjBA,iBAPa;AAQb+hC,EAAAA,UAAU,EAAVA,UARa;AASbC,EAAAA,WAAW,EAAXA,WATa;AAUbC,EAAAA,QAAQ,EAARA,QAVa;AAWb+C,EAAAA,OAAO,EAAPA,OAXa;AAYbW,EAAAA,UAAU,EAAVA,UAZa;AAabqX,EAAAA,SAAS,EAATA;AAba,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA/zB,sDAAA,GAAY6sC,kDAAZ;AAEO,IAAM5qC,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;AAEAjpB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAY8oB,GAAG,CAAC9oB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP,IAAMg5C,MAAM,GAAG,EAAf;AAEA;;AACA,SAAS0a,eAAT,CAAyB7pC,OAAzB,EAAkC;AAChC,MAAMvqB,IAAI,GAAGK,kDAAS,GAAGwe,OAAzB,CADgC,CAEhC;;AACA,MAAI0e,IAAI,GAAG,EAAX;AACA1+B,EAAAA,MAAM,CAAC0B,IAAP,CAAYm5C,MAAZ,EAAoBj5C,OAApB,CAA4B,UAAC4zD,MAAD,EAAY;AACtC,QAAMC,MAAM,GAAG5a,MAAM,CAAC2a,MAAD,CAAN,CAAehhB,KAA9B;AAEA,QAAMkhB,UAAU,GAAG;AACjBjlD,MAAAA,EAAE,EAAE,EADa;AAEjBC,MAAAA,EAAE,EAAEguB,IAFa;AAGjBh0B,MAAAA,CAAC,EAAE,CAHc;AAIjBiX,MAAAA,IAAI,EAAE8zC,MAJW;AAKjB/zC,MAAAA,MAAM,EAAE,MALS;AAMjBhY,MAAAA,GAAG,EAAEmxC,MAAM,CAAC2a,MAAD,CAAN,CAAehD;AANH,KAAnB;AAQA9pC,IAAAA,2DAAA,CAAmBgD,OAAnB,EAA4BgqC,UAA5B;AAEA,QAAME,SAAS,GAAG;AAChBtxD,MAAAA,CAAC,EAAE,EADa;AAEhBC,MAAAA,CAAC,EAAEm6B,IAAI,GAAG,CAFM;AAGhB/c,MAAAA,IAAI,EAAE,MAHU;AAIhBjiB,MAAAA,IAAI,EAAE81D,MAJU;AAKhB7R,MAAAA,UAAU,EAAExiD,IAAI,CAACoc,aAAL,GAAqB;AALjB,KAAlB;AAOAmL,IAAAA,yDAAA,CAAiBgD,OAAjB,EAA0BkqC,SAA1B;AAEAl3B,IAAAA,IAAI,IAAI,EAAR;AACD,GAvBD;AAwBD;;AACD,IAAMv9B,IAAI,GAAGK,kDAAS,GAAGwe,OAAzB;AACA,IAAM61C,WAAW,GAAGr0D,kDAAS,GAAGwe,OAAZ,CAAoBC,UAAxC;AACO,IAAM2K,IAAI,GAAG,SAAPA,IAAO,CAAUlrB,IAAV,EAAgBP,EAAhB,EAAoB;AACtC,MAAMgC,IAAI,GAAGK,kDAAS,GAAGwe,OAAzB;AACAyI,EAAAA,4DAAA;AACAA,EAAAA,yDAAA,CAAa/oB,IAAI,GAAG,IAApB;AAEA,MAAMoc,aAAa,GAAGta,kDAAS,GAAGsa,aAAlC,CALsC,CAMtC;;AACA,MAAI+O,cAAJ;;AACA,MAAI/O,aAAa,KAAK,SAAtB,EAAiC;AAC/B+O,IAAAA,cAAc,GAAGtoB,0CAAM,CAAC,OAAOpD,EAAR,CAAvB;AACD;;AACD,MAAM2rB,IAAI,GACRhP,aAAa,KAAK,SAAlB,GACIvZ,0CAAM,CAACsoB,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAA1B,CAA0CjD,IAA3C,CADV,GAEIvlB,0CAAM,CAAC,MAAD,CAHZ;AAIA,MAAM2oB,GAAG,GAAGpP,aAAa,KAAK,SAAlB,GAA8B+O,cAAc,CAAC3b,KAAf,GAAuB,CAAvB,EAA0B6b,eAAxD,GAA0E3kB,QAAtF;AAEA4mB,EAAAA,MAAM,CAACq0B,IAAP;AACA,MAAM31B,OAAO,GAAGZ,IAAI,CAACvoB,MAAL,CAAY,MAAMpD,EAAlB,CAAhB;AACAusB,EAAAA,OAAO,CAACjsB,IAAR,CAAa,aAAb,EAA4B,8BAA5B;AAEAipB,EAAAA,6DAAA,CAAqBgD,OAArB;AAEA,MAAMoU,KAAK,GAAGrX,+DAAA,EAAd;AACA,MAAM1P,KAAK,GAAG0P,+DAAA,EAAd;AAEA,MAAMstC,UAAU,GAAGttC,gEAAA,EAAnB;;AACA,OAAK,IAAIzD,MAAT,IAAmB61B,MAAnB;AAA2B,WAAOA,MAAM,CAAC71B,MAAD,CAAb;AAA3B;;AACA,MAAIgxC,QAAQ,GAAG,CAAf;AACAD,EAAAA,UAAU,CAACn0D,OAAX,CAAmB,UAACq0D,SAAD,EAAe;AAChCpb,IAAAA,MAAM,CAACob,SAAD,CAAN,GAAoB;AAClBzhB,MAAAA,KAAK,EAAErzC,IAAI,CAACmf,YAAL,CAAkB01C,QAAQ,GAAG70D,IAAI,CAACmf,YAAL,CAAkB1f,MAA/C,CADW;AAElB4xD,MAAAA,QAAQ,EAAEwD;AAFQ,KAApB;AAIAA,IAAAA,QAAQ;AACT,GAND;AAQAT,EAAAA,eAAe,CAAC7pC,OAAD,CAAf;AACAsB,EAAAA,MAAM,CAAC5tB,MAAP,CAAc,CAAd,EAAiB,CAAjB,EAAoBy2D,WAApB,EAAiC71D,MAAM,CAAC0B,IAAP,CAAYm5C,MAAZ,EAAoBj6C,MAApB,GAA6B,EAA9D;AACAs1D,EAAAA,SAAS,CAACxqC,OAAD,EAAUoU,KAAV,EAAiB,CAAjB,CAAT;AAEA,MAAMwnB,GAAG,GAAGt6B,MAAM,CAACm2B,SAAP,EAAZ;;AACA,MAAIpqC,KAAJ,EAAW;AACT2S,IAAAA,OAAO,CACJ3mB,MADH,CACU,MADV,EAEGrF,IAFH,CAEQqZ,KAFR,EAGGtZ,IAHH,CAGQ,GAHR,EAGao2D,WAHb,EAIGp2D,IAJH,CAIQ,WAJR,EAIqB,KAJrB,EAKGA,IALH,CAKQ,aALR,EAKuB,MALvB,EAMGA,IANH,CAMQ,GANR,EAMa,EANb;AAOD;;AAED,MAAMoE,MAAM,GAAGyjD,GAAG,CAAClH,KAAJ,GAAYkH,GAAG,CAACnH,MAAhB,GAAyB,IAAIh/C,IAAI,CAACic,cAAjD;AACA,MAAMxZ,KAAK,GAAGiyD,WAAW,GAAGvO,GAAG,CAACpH,KAAlB,GAA0B,IAAI/+C,IAAI,CAACgc,cAAjD;AAEA2L,EAAAA,wDAAgB,CAAC4C,OAAD,EAAU7nB,MAAV,EAAkBD,KAAlB,EAAyBzC,IAAI,CAAC4b,WAA9B,CAAhB,CAvDsC,CAyDtC;;AACA2O,EAAAA,OAAO,CACJ3mB,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,IAFR,EAEco2D,WAFd,EAGGp2D,IAHH,CAGQ,IAHR,EAGc0B,IAAI,CAAC0C,MAAL,GAAc,CAH5B,EAG+B;AAH/B,GAIGpE,IAJH,CAIQ,IAJR,EAIcmE,KAAK,GAAGiyD,WAAR,GAAsB,CAJpC,EAIuC;AAJvC,GAKGp2D,IALH,CAKQ,IALR,EAKc0B,IAAI,CAAC0C,MAAL,GAAc,CAL5B,EAMGpE,IANH,CAMQ,cANR,EAMwB,CANxB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,OAPlB,EAQGA,IARH,CAQQ,YARR,EAQsB,iBARtB;AAUA,MAAMioD,iBAAiB,GAAG3uC,KAAK,GAAG,EAAH,GAAQ,CAAvC;AACA2S,EAAAA,OAAO,CAACjsB,IAAR,CAAa,SAAb,YAA2B6nD,GAAG,CAACrH,MAA/B,kBAA6Cr8C,KAA7C,cAAsDC,MAAM,GAAG6jD,iBAA/D;AACAh8B,EAAAA,OAAO,CAACjsB,IAAR,CAAa,qBAAb,EAAoC,eAApC;AACAisB,EAAAA,OAAO,CAACjsB,IAAR,CAAa,QAAb,EAAuBoE,MAAM,GAAG6jD,iBAAT,GAA6B,EAApD;AAEA1oD,EAAAA,0DAAyB,CAACypB,sDAAD,EAAYiD,OAAZ,EAAqBvsB,EAArB,CAAzB;AACD,CA1EM;AA4EA,IAAM6tB,MAAM,GAAG;AACpB1d,EAAAA,IAAI,EAAE;AACJ2wC,IAAAA,MAAM,EAAE98C,SADJ;AAEJ+8C,IAAAA,KAAK,EAAE/8C,SAFH;AAGJg9C,IAAAA,MAAM,EAAEh9C,SAHJ;AAIJi9C,IAAAA,KAAK,EAAEj9C;AAJH,GADc;AAOpBkX,EAAAA,WAAW,EAAE,CAPO;AASpBgmC,EAAAA,aAAa,EAAE,EATK;AAUpBgB,EAAAA,IAAI,EAAE,gBAAY;AAChB,SAAKhB,aAAL,GAAqB,EAArB;AACA,SAAK/wC,IAAL,GAAY;AACV2wC,MAAAA,MAAM,EAAE98C,SADE;AAEV+8C,MAAAA,KAAK,EAAE/8C,SAFG;AAGVg9C,MAAAA,MAAM,EAAEh9C,SAHE;AAIVi9C,MAAAA,KAAK,EAAEj9C;AAJG,KAAZ;AAMA,SAAKkX,WAAL,GAAmB,CAAnB;AACD,GAnBmB;AAoBpBinC,EAAAA,SAAS,EAAE,mBAAU1+B,GAAV,EAAe/gB,GAAf,EAAoBivB,GAApB,EAAyBlK,GAAzB,EAA8B;AACvC,QAAI,OAAOhE,GAAG,CAAC/gB,GAAD,CAAV,KAAoB,WAAxB,EAAqC;AACnC+gB,MAAAA,GAAG,CAAC/gB,GAAD,CAAH,GAAWivB,GAAX;AACD,KAFD,MAEO;AACLlO,MAAAA,GAAG,CAAC/gB,GAAD,CAAH,GAAW+kB,GAAG,CAACkK,GAAD,EAAMlO,GAAG,CAAC/gB,GAAD,CAAT,CAAd;AACD;AACF,GA1BmB;AA2BpB0/C,EAAAA,YAAY,EAAE,sBAAUtB,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AACpD,QAAMj/C,IAAI,GAAGK,kDAAS,GAAGwe,OAAzB;;AACA,QAAMwhC,KAAK,GAAG,IAAd;;AACA,QAAI/3B,GAAG,GAAG,CAAV;AACA;;AACA,aAASg4B,QAAT,CAAkBxxC,IAAlB,EAAwB;AACtB,aAAO,SAASyxC,gBAAT,CAA0Bp7B,IAA1B,EAAgC;AACrCmD,QAAAA,GAAG,GADkC,CAErC;;AACA,YAAMzZ,CAAC,GAAGwxC,KAAK,CAACnB,aAAN,CAAoBz/C,MAApB,GAA6B6oB,GAA7B,GAAmC,CAA7C;;AACA+3B,QAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,QAAtB,EAAgC65B,MAAM,GAAGnwC,CAAC,GAAG7O,IAAI,CAACmc,SAAlD,EAA6DrT,IAAI,CAAC6I,GAAlE;;AACA0uC,QAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,OAAtB,EAA+B85B,KAAK,GAAGpwC,CAAC,GAAG7O,IAAI,CAACmc,SAAhD,EAA2DrT,IAAI,CAACmrB,GAAhE;;AAEAosB,QAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,QAA7B,EAAuC2wC,MAAM,GAAGjwC,CAAC,GAAG7O,IAAI,CAACmc,SAAzD,EAAoErT,IAAI,CAAC6I,GAAzE;;AACA0uC,QAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,OAA7B,EAAsC4wC,KAAK,GAAGlwC,CAAC,GAAG7O,IAAI,CAACmc,SAAvD,EAAkErT,IAAI,CAACmrB,GAAvE;;AAEA,YAAI,EAAEnlB,IAAI,KAAK,YAAX,CAAJ,EAA8B;AAC5BuxC,UAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,QAAtB,EAAgC25B,MAAM,GAAGjwC,CAAC,GAAG7O,IAAI,CAACmc,SAAlD,EAA6DrT,IAAI,CAAC6I,GAAlE;;AACA0uC,UAAAA,KAAK,CAACF,SAAN,CAAgBh7B,IAAhB,EAAsB,OAAtB,EAA+B45B,KAAK,GAAGlwC,CAAC,GAAG7O,IAAI,CAACmc,SAAhD,EAA2DrT,IAAI,CAACmrB,GAAhE;;AAEAosB,UAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,QAA7B,EAAuC6wC,MAAM,GAAGnwC,CAAC,GAAG7O,IAAI,CAACmc,SAAzD,EAAoErT,IAAI,CAAC6I,GAAzE;;AACA0uC,UAAAA,KAAK,CAACF,SAAN,CAAgBt0B,MAAM,CAAC1d,IAAvB,EAA6B,OAA7B,EAAsC8wC,KAAK,GAAGpwC,CAAC,GAAG7O,IAAI,CAACmc,SAAvD,EAAkErT,IAAI,CAACmrB,GAAvE;AACD;AACF,OAjBD;AAkBD;;AAED,SAAKirB,aAAL,CAAmBz+C,OAAnB,CAA2B6/C,QAAQ,EAAnC;AACD,GAtDmB;AAuDpBriD,EAAAA,MAAM,EAAE,gBAAU6gD,MAAV,EAAkBE,MAAlB,EAA0BD,KAA1B,EAAiCE,KAAjC,EAAwC;AAC9C,QAAMuB,OAAO,GAAG13C,IAAI,CAAC6I,GAAL,CAASmtC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG33C,IAAI,CAACmrB,GAAL,CAAS6qB,MAAT,EAAiBC,KAAjB,CAAf;;AACA,QAAM2B,OAAO,GAAG53C,IAAI,CAAC6I,GAAL,CAASqtC,MAAT,EAAiBC,KAAjB,CAAhB;;AACA,QAAM0B,MAAM,GAAG73C,IAAI,CAACmrB,GAAL,CAAS+qB,MAAT,EAAiBC,KAAjB,CAAf;;AAEA,SAAKkB,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,QAA5B,EAAsCqyC,OAAtC,EAA+C13C,IAAI,CAAC6I,GAApD;AACA,SAAKwuC,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,QAA5B,EAAsCuyC,OAAtC,EAA+C53C,IAAI,CAAC6I,GAApD;AACA,SAAKwuC,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,OAA5B,EAAqCsyC,MAArC,EAA6C33C,IAAI,CAACmrB,GAAlD;AACA,SAAKksB,SAAL,CAAet0B,MAAM,CAAC1d,IAAtB,EAA4B,OAA5B,EAAqCwyC,MAArC,EAA6C73C,IAAI,CAACmrB,GAAlD;AAEA,SAAKmsB,YAAL,CAAkBI,OAAlB,EAA2BE,OAA3B,EAAoCD,MAApC,EAA4CE,MAA5C;AACD,GAnEmB;AAoEpBmB,EAAAA,eAAe,EAAE,yBAAUC,IAAV,EAAgB;AAC/B,SAAK7oC,WAAL,GAAmB,KAAKA,WAAL,GAAmB6oC,IAAtC;AACA,SAAK5zC,IAAL,CAAU8wC,KAAV,GAAkB,KAAK/lC,WAAvB;AACD,GAvEmB;AAwEpB2oC,EAAAA,cAAc,EAAE,0BAAY;AAC1B,WAAO,KAAK3oC,WAAZ;AACD,GA1EmB;AA2EpB8oC,EAAAA,SAAS,EAAE,qBAAY;AACrB,WAAO,KAAK7zC,IAAZ;AACD;AA7EmB,CAAf;AAgFP,IAAM6mD,KAAK,GAAGh1D,IAAI,CAACof,YAAnB;AACA,IAAM61C,WAAW,GAAGj1D,IAAI,CAACqf,cAAzB;AAEO,IAAM01C,SAAS,GAAG,SAAZA,SAAY,CAAUxqC,OAAV,EAAmBoU,KAAnB,EAA0BzlB,WAA1B,EAAuC;AAC9D,MAAMlZ,IAAI,GAAGK,kDAAS,GAAGwe,OAAzB;AACA,MAAIq2C,WAAW,GAAG,EAAlB;AACA,MAAMC,cAAc,GAAGn1D,IAAI,CAAC0C,MAAL,GAAc,CAAd,GAAkB1C,IAAI,CAACic,cAA9C;AACA,MAAMm5C,OAAO,GAAGl8C,WAAW,GAAGi8C,cAA9B;AAEA,MAAIE,aAAa,GAAG,CAApB;AACA,MAAI70C,IAAI,GAAG,MAAX;AACA,MAAI8zC,MAAM,GAAG,OAAb;AACA,MAAIzjD,GAAG,GAAG,CAAV,CAT8D,CAW9D;;AACA,OAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm/B,KAAK,CAACl/B,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,QAAIwhC,IAAI,GAAGrC,KAAK,CAACn/B,CAAD,CAAhB;;AACA,QAAI01D,WAAW,KAAKl0B,IAAI,CAACuC,OAAzB,EAAkC;AAChC/iB,MAAAA,IAAI,GAAGw0C,KAAK,CAACK,aAAa,GAAGL,KAAK,CAACv1D,MAAvB,CAAZ;AACAoR,MAAAA,GAAG,GAAGwkD,aAAa,GAAGL,KAAK,CAACv1D,MAA5B;AACA60D,MAAAA,MAAM,GAAGW,WAAW,CAACI,aAAa,GAAGJ,WAAW,CAACx1D,MAA7B,CAApB;AAEA,UAAM8jC,OAAO,GAAG;AACdpgC,QAAAA,CAAC,EAAE3D,CAAC,GAAGQ,IAAI,CAACif,UAAT,GAAsBzf,CAAC,GAAGQ,IAAI,CAACyC,KAA/B,GAAuCiyD,WAD5B;AAEdtxD,QAAAA,CAAC,EAAE,EAFW;AAGd7E,QAAAA,IAAI,EAAEyiC,IAAI,CAACuC,OAHG;AAId/iB,QAAAA,IAAI,EAAJA,IAJc;AAKd3P,QAAAA,GAAG,EAAHA,GALc;AAMdyjD,QAAAA,MAAM,EAANA;AANc,OAAhB;AASA/sC,MAAAA,4DAAA,CAAoBgD,OAApB,EAA6BgZ,OAA7B,EAAsCvjC,IAAtC;AACAk1D,MAAAA,WAAW,GAAGl0B,IAAI,CAACuC,OAAnB;AACA8xB,MAAAA,aAAa;AACd,KAnBoC,CAqBrC;;;AACA,QAAME,UAAU,GAAGv0B,IAAI,CAAC4yB,MAAL,CAAYjyC,MAAZ,CAAmB,UAAC69B,GAAD,EAAMsV,SAAN,EAAoB;AACxD,UAAIpb,MAAM,CAACob,SAAD,CAAV,EAAuB;AACrBtV,QAAAA,GAAG,CAACsV,SAAD,CAAH,GAAiBpb,MAAM,CAACob,SAAD,CAAvB;AACD;;AAED,aAAOtV,GAAP;AACD,KANkB,EAMhB,EANgB,CAAnB,CAtBqC,CA8BrC;;AACAxe,IAAAA,IAAI,CAAC79B,CAAL,GAAS3D,CAAC,GAAGQ,IAAI,CAACif,UAAT,GAAsBzf,CAAC,GAAGQ,IAAI,CAACyC,KAA/B,GAAuCiyD,WAAhD;AACA1zB,IAAAA,IAAI,CAAC59B,CAAL,GAASgyD,OAAT;AACAp0B,IAAAA,IAAI,CAACv+B,KAAL,GAAazC,IAAI,CAACgc,cAAlB;AACAglB,IAAAA,IAAI,CAACt+B,MAAL,GAAc1C,IAAI,CAACic,cAAnB;AACA+kB,IAAAA,IAAI,CAACszB,MAAL,GAAcA,MAAd;AACAtzB,IAAAA,IAAI,CAACxgB,IAAL,GAAYA,IAAZ;AACAwgB,IAAAA,IAAI,CAACnwB,GAAL,GAAWA,GAAX;AACAmwB,IAAAA,IAAI,CAAC0Y,MAAL,GAAc6b,UAAd,CAtCqC,CAwCrC;;AACAhuC,IAAAA,yDAAA,CAAiBgD,OAAjB,EAA0ByW,IAA1B,EAAgChhC,IAAhC;AACA6rB,IAAAA,MAAM,CAAC5tB,MAAP,CAAc+iC,IAAI,CAAC79B,CAAnB,EAAsB69B,IAAI,CAAC59B,CAA3B,EAA8B49B,IAAI,CAAC79B,CAAL,GAAS69B,IAAI,CAACv+B,KAAd,GAAsBzC,IAAI,CAACif,UAAzD,EAAqE,MAAM,IAAI,EAA/E,EA1CqC,CA0C+C;AACrF;AACF,CAxDM;AA0DP,iEAAe;AACbsK,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;AC7QA,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACvqB,OAAD;AAAA,oJAILA,OAAO,CAACu9B,SAJH,iFAWJv9B,OAAO,CAACu9B,SAXJ,6CAeNv9B,OAAO,CAACu9B,SAfF,qFAsBLv9B,OAAO,CAACu9B,SAtBH,qCA0BZv9B,OAAO,CAACm1D,SAAR,mBAA6Bn1D,OAAO,CAACm1D,SAArC,IAAmD,eA1BvC,wIAmCNn1D,OAAO,CAAC0qB,OAnCF,4BAoCJ1qB,OAAO,CAACwqB,UApCJ,+KAgDNxqB,OAAO,CAACy9B,cAhDF,wDAoDJz9B,OAAO,CAAC2qB,SApDJ,kFAyDJ3qB,OAAO,CAAC2qB,SAzDJ,8EA8DM3qB,OAAO,CAAC09B,mBA9Dd,+IAyEN19B,OAAO,CAACw9B,UAzEF,6RAoFAx9B,OAAO,CAACy2B,aApFR,sCAqFMz2B,OAAO,CAAC69B,OArFd,sIA4FZ79B,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAACo1D,SAArC,IAAmD,EA5FvC,6DA+FZp1D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAACq1D,SAArC,IAAmD,EA/FvC,6DAkGZr1D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAACs1D,SAArC,IAAmD,EAlGvC,6DAqGZt1D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAACu1D,SAArC,IAAmD,EArGvC,6DAwGZv1D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAACw1D,SAArC,IAAmD,EAxGvC,6DA2GZx1D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAACy1D,SAArC,IAAmD,EA3GvC,6DA8GZz1D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAAC01D,SAArC,IAAmD,EA9GvC,6DAiHZ11D,OAAO,CAACo1D,SAAR,mBAA6Bp1D,OAAO,CAAC21D,SAArC,IAAmD,EAjHvC,yCAqHZ31D,OAAO,CAAC41D,MAAR,mBAA0B51D,OAAO,CAAC41D,MAAlC,IAA6C,EArHjC,uCAwHZ51D,OAAO,CAAC61D,MAAR,mBAA0B71D,OAAO,CAAC61D,MAAlC,IAA6C,EAxHjC,uCA2HZ71D,OAAO,CAAC81D,MAAR,mBAA0B91D,OAAO,CAAC81D,MAAlC,IAA6C,EA3HjC,uCA8HZ91D,OAAO,CAAC+1D,MAAR,mBAA0B/1D,OAAO,CAAC+1D,MAAlC,IAA6C,EA9HjC,uCAiIZ/1D,OAAO,CAACg2D,MAAR,mBAA0Bh2D,OAAO,CAACg2D,MAAlC,IAA6C,EAjIjC,uCAoIZh2D,OAAO,CAACi2D,MAAR,mBAA0Bj2D,OAAO,CAACi2D,MAAlC,IAA6C,EApIjC;AAAA,CAAlB;;AA0IA,iEAAe1rC,SAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1IA;AAEO,IAAMu3B,QAAQ,GAAG,SAAXA,QAAW,CAAUn+C,IAAV,EAAgBm2C,QAAhB,EAA0B;AAChD,MAAM+H,QAAQ,GAAGl+C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACAu+C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,GAAd,EAAmB87C,QAAQ,CAACj3C,CAA5B;AACAg/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,GAAd,EAAmB87C,QAAQ,CAACh3C,CAA5B;AACA++C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,MAAd,EAAsB87C,QAAQ,CAAC55B,IAA/B;AACA2hC,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwB87C,QAAQ,CAAC75B,MAAjC;AACA4hC,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,OAAd,EAAuB87C,QAAQ,CAAC33C,KAAhC;AACA0/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,QAAd,EAAwB87C,QAAQ,CAAC13C,MAAjC;AACAy/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,IAAd,EAAoB87C,QAAQ,CAACn3C,EAA7B;AACAk/C,EAAAA,QAAQ,CAAC7jD,IAAT,CAAc,IAAd,EAAoB87C,QAAQ,CAACl3C,EAA7B;;AAEA,MAAI,OAAOk3C,QAAQ,CAACz4C,KAAhB,KAA0B,WAA9B,EAA2C;AACzCwgD,IAAAA,QAAQ,CAAC7jD,IAAT,CAAc,OAAd,EAAuB87C,QAAQ,CAACz4C,KAAhC;AACD;;AAED,SAAOwgD,QAAP;AACD,CAhBM;AAkBA,IAAMsU,QAAQ,GAAG,SAAXA,QAAW,CAAUx7C,OAAV,EAAmBy7C,QAAnB,EAA6B;AACnD,MAAMz2C,MAAM,GAAG,EAAf;AACA,MAAM02C,aAAa,GAAG17C,OAAO,CAC1BrX,MADmB,CACZ,QADY,EAEnBtF,IAFmB,CAEd,IAFc,EAERo4D,QAAQ,CAACpnD,EAFD,EAGnBhR,IAHmB,CAGd,IAHc,EAGRo4D,QAAQ,CAACnnD,EAHD,EAInBjR,IAJmB,CAId,OAJc,EAIL,MAJK,EAKnBA,IALmB,CAKd,GALc,EAKT2hB,MALS,EAMnB3hB,IANmB,CAMd,cANc,EAME,CANF,EAOnBA,IAPmB,CAOd,UAPc,EAOF,SAPE,CAAtB;AASA,MAAMs4D,IAAI,GAAG37C,OAAO,CAACrX,MAAR,CAAe,GAAf,CAAb,CAXmD,CAanD;;AACAgzD,EAAAA,IAAI,CACDhzD,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,IAFR,EAEco4D,QAAQ,CAACpnD,EAAT,GAAc2Q,MAAM,GAAG,CAFrC,EAGG3hB,IAHH,CAGQ,IAHR,EAGco4D,QAAQ,CAACnnD,EAAT,GAAc0Q,MAAM,GAAG,CAHrC,EAIG3hB,IAJH,CAIQ,GAJR,EAIa,GAJb,EAKGA,IALH,CAKQ,cALR,EAKwB,CALxB,EAMGA,IANH,CAMQ,MANR,EAMgB,MANhB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,MAPlB,EAdmD,CAuBnD;;AACAs4D,EAAAA,IAAI,CACDhzD,MADH,CACU,QADV,EAEGtF,IAFH,CAEQ,IAFR,EAEco4D,QAAQ,CAACpnD,EAAT,GAAc2Q,MAAM,GAAG,CAFrC,EAGG3hB,IAHH,CAGQ,IAHR,EAGco4D,QAAQ,CAACnnD,EAAT,GAAc0Q,MAAM,GAAG,CAHrC,EAIG3hB,IAJH,CAIQ,GAJR,EAIa,GAJb,EAKGA,IALH,CAKQ,cALR,EAKwB,CALxB,EAMGA,IANH,CAMQ,MANR,EAMgB,MANhB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,MAPlB;AASA;;AACA,WAASu4D,KAAT,CAAeD,IAAf,EAAqB;AACnB,QAAMxmB,GAAG,GAAGomB,uCAAK,GACdM,UADS,CACEhuD,IAAI,CAACiuD,EAAL,GAAU,CADZ,EAETC,QAFS,CAEA,KAAKluD,IAAI,CAACiuD,EAAL,GAAU,CAAf,CAFA,EAGTvjB,WAHS,CAGGvzB,MAAM,GAAG,CAHZ,EAITwzB,WAJS,CAIGxzB,MAAM,GAAG,GAJZ,CAAZ,CADmB,CAMnB;;AACA22C,IAAAA,IAAI,CACDhzD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGa8xC,GAHb,EAIG9xC,IAJH,CAIQ,WAJR,EAIqB,eAAeo4D,QAAQ,CAACpnD,EAAxB,GAA6B,GAA7B,IAAoConD,QAAQ,CAACnnD,EAAT,GAAc,CAAlD,IAAuD,GAJ5E;AAKD;AAED;;;AACA,WAAS0nD,GAAT,CAAaL,IAAb,EAAmB;AACjB,QAAMxmB,GAAG,GAAGomB,uCAAK,GACdM,UADS,CACG,IAAIhuD,IAAI,CAACiuD,EAAV,GAAgB,CADlB,EAETC,QAFS,CAEA,KAAKluD,IAAI,CAACiuD,EAAL,GAAU,CAAf,CAFA,EAGTvjB,WAHS,CAGGvzB,MAAM,GAAG,CAHZ,EAITwzB,WAJS,CAIGxzB,MAAM,GAAG,GAJZ,CAAZ,CADiB,CAMjB;;AACA22C,IAAAA,IAAI,CACDhzD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGa8xC,GAHb,EAIG9xC,IAJH,CAIQ,WAJR,EAIqB,eAAeo4D,QAAQ,CAACpnD,EAAxB,GAA6B,GAA7B,IAAoConD,QAAQ,CAACnnD,EAAT,GAAc,CAAlD,IAAuD,GAJ5E;AAKD;AAED;;;AACA,WAAS2nD,UAAT,CAAoBN,IAApB,EAA0B;AACxBA,IAAAA,IAAI,CACDhzD,MADH,CACU,MADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGGA,IAHH,CAGQ,QAHR,EAGkB,CAHlB,EAIGA,IAJH,CAIQ,IAJR,EAIco4D,QAAQ,CAACpnD,EAAT,GAAc,CAJ5B,EAKGhR,IALH,CAKQ,IALR,EAKco4D,QAAQ,CAACnnD,EAAT,GAAc,CAL5B,EAMGjR,IANH,CAMQ,IANR,EAMco4D,QAAQ,CAACpnD,EAAT,GAAc,CAN5B,EAOGhR,IAPH,CAOQ,IAPR,EAOco4D,QAAQ,CAACnnD,EAAT,GAAc,CAP5B,EAQGjR,IARH,CAQQ,OARR,EAQiB,OARjB,EASGA,IATH,CASQ,cATR,EASwB,KATxB,EAUGA,IAVH,CAUQ,QAVR,EAUkB,MAVlB;AAWD;;AAED,MAAIo4D,QAAQ,CAAC1C,KAAT,GAAiB,CAArB,EAAwB;AACtB6C,IAAAA,KAAK,CAACD,IAAD,CAAL;AACD,GAFD,MAEO,IAAIF,QAAQ,CAAC1C,KAAT,GAAiB,CAArB,EAAwB;AAC7BiD,IAAAA,GAAG,CAACL,IAAD,CAAH;AACD,GAFM,MAEA;AACLM,IAAAA,UAAU,CAACN,IAAD,CAAV;AACD;;AAED,SAAOD,aAAP;AACD,CAvFM;AAyFA,IAAMnC,UAAU,GAAG,SAAbA,UAAa,CAAUv5C,OAAV,EAAmBs5C,UAAnB,EAA+B;AACvD,MAAMoC,aAAa,GAAG17C,OAAO,CAACrX,MAAR,CAAe,QAAf,CAAtB;AACA+yD,EAAAA,aAAa,CAACr4D,IAAd,CAAmB,IAAnB,EAAyBi2D,UAAU,CAACjlD,EAApC;AACAqnD,EAAAA,aAAa,CAACr4D,IAAd,CAAmB,IAAnB,EAAyBi2D,UAAU,CAAChlD,EAApC;AACAonD,EAAAA,aAAa,CAACr4D,IAAd,CAAmB,OAAnB,EAA4B,WAAWi2D,UAAU,CAAChsD,GAAlD;AACAouD,EAAAA,aAAa,CAACr4D,IAAd,CAAmB,MAAnB,EAA2Bi2D,UAAU,CAAC/zC,IAAtC;AACAm2C,EAAAA,aAAa,CAACr4D,IAAd,CAAmB,QAAnB,EAA6Bi2D,UAAU,CAACh0C,MAAxC;AACAo2C,EAAAA,aAAa,CAACr4D,IAAd,CAAmB,GAAnB,EAAwBi2D,UAAU,CAAChrD,CAAnC;;AAEA,MAAI,OAAOotD,aAAa,CAACh1D,KAArB,KAA+B,WAAnC,EAAgD;AAC9Cg1D,IAAAA,aAAa,CAACr4D,IAAd,CAAmB,OAAnB,EAA4Bq4D,aAAa,CAACh1D,KAA1C;AACD;;AAED,MAAI,OAAO4yD,UAAU,CAAC38C,KAAlB,KAA4B,WAAhC,EAA6C;AAC3C++C,IAAAA,aAAa,CAAC/yD,MAAd,CAAqB,OAArB,EAA8BrF,IAA9B,CAAmCg2D,UAAU,CAAC38C,KAA9C;AACD;;AAED,SAAO++C,aAAP;AACD,CAlBM;AAoBA,IAAMnoB,QAAQ,GAAG,SAAXA,QAAW,CAAUvqC,IAAV,EAAgB0mD,QAAhB,EAA0B;AAChD;AACA,MAAMwD,KAAK,GAAGxD,QAAQ,CAACpsD,IAAT,CAAckH,OAAd,CAAsB,cAAtB,EAAsC,GAAtC,CAAd;AAEA,MAAMi9C,QAAQ,GAAGz+C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA8+C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACxnD,CAA5B;AACAu/C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACvnD,CAA5B;AACAs/C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,OAAd,EAAuB,QAAvB;AAEAokD,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAACpI,MAAvC;;AAEA,MAAI,OAAOoI,QAAQ,CAAChpD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC+gD,IAAAA,QAAQ,CAACpkD,IAAT,CAAc,OAAd,EAAuBqsD,QAAQ,CAAChpD,KAAhC;AACD;;AAED,MAAMspD,IAAI,GAAGvI,QAAQ,CAAC9+C,MAAT,CAAgB,OAAhB,CAAb;AACAqnD,EAAAA,IAAI,CAAC3sD,IAAL,CAAU,GAAV,EAAeqsD,QAAQ,CAACxnD,CAAT,GAAawnD,QAAQ,CAACnI,UAAT,GAAsB,CAAlD;AACAyI,EAAAA,IAAI,CAAC1sD,IAAL,CAAU4vD,KAAV;AAEA,SAAOzL,QAAP;AACD,CApBM;AAsBA,IAAMwI,SAAS,GAAG,SAAZA,SAAY,CAAUjnD,IAAV,EAAgBknD,SAAhB,EAA2B;AAClD;AACF;AACA;AACA;AACA;AACA;AACA;AACE,WAASC,SAAT,CAAmBjoD,CAAnB,EAAsBC,CAAtB,EAAyBX,KAAzB,EAAgCC,MAAhC,EAAwC2oD,GAAxC,EAA6C;AAC3C,WACEloD,CAAC,GACD,GADA,GAEAC,CAFA,GAGA,GAHA,IAICD,CAAC,GAAGV,KAJL,IAKA,GALA,GAMAW,CANA,GAOA,GAPA,IAQCD,CAAC,GAAGV,KARL,IASA,GATA,IAUCW,CAAC,GAAGV,MAAJ,GAAa2oD,GAVd,IAWA,GAXA,IAYCloD,CAAC,GAAGV,KAAJ,GAAY4oD,GAAG,GAAG,GAZnB,IAaA,GAbA,IAcCjoD,CAAC,GAAGV,MAdL,IAeA,GAfA,GAgBAS,CAhBA,GAiBA,GAjBA,IAkBCC,CAAC,GAAGV,MAlBL,CADF;AAqBD;;AACD,MAAMyM,OAAO,GAAGlL,IAAI,CAACL,MAAL,CAAY,SAAZ,CAAhB;AACAuL,EAAAA,OAAO,CAAC7Q,IAAR,CAAa,QAAb,EAAuB8sD,SAAS,CAACD,SAAS,CAAChoD,CAAX,EAAcgoD,SAAS,CAAC/nD,CAAxB,EAA2B,EAA3B,EAA+B,EAA/B,EAAmC,CAAnC,CAAhC;AACA+L,EAAAA,OAAO,CAAC7Q,IAAR,CAAa,OAAb,EAAsB,UAAtB;AAEA6sD,EAAAA,SAAS,CAAC/nD,CAAV,GAAc+nD,SAAS,CAAC/nD,CAAV,GAAc+nD,SAAS,CAACgM,WAAtC;AACAhM,EAAAA,SAAS,CAAChoD,CAAV,GAAcgoD,SAAS,CAAChoD,CAAV,GAAc,MAAMgoD,SAAS,CAACgM,WAA5C;AACA3oB,EAAAA,QAAQ,CAACvqC,IAAD,EAAOknD,SAAP,CAAR;AACD,CAtCM;AAwCA,IAAMmK,WAAW,GAAG,SAAdA,WAAc,CAAUrxD,IAAV,EAAgBs/B,OAAhB,EAAyBvjC,IAAzB,EAA+B;AACxD,MAAM+nB,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;AAEA,MAAMtC,IAAI,GAAG4gD,WAAW,EAAxB;AACA5gD,EAAAA,IAAI,CAAC6B,CAAL,GAASogC,OAAO,CAACpgC,CAAjB;AACA7B,EAAAA,IAAI,CAAC8B,CAAL,GAASmgC,OAAO,CAACngC,CAAjB;AACA9B,EAAAA,IAAI,CAACkf,IAAL,GAAY+iB,OAAO,CAAC/iB,IAApB;AACAlf,EAAAA,IAAI,CAACmB,KAAL,GAAazC,IAAI,CAACyC,KAAlB;AACAnB,EAAAA,IAAI,CAACoB,MAAL,GAAc1C,IAAI,CAAC0C,MAAnB;AACApB,EAAAA,IAAI,CAACK,KAAL,GAAa,kCAAkC4hC,OAAO,CAAC1yB,GAAvD;AACAvP,EAAAA,IAAI,CAAC2B,EAAL,GAAU,CAAV;AACA3B,EAAAA,IAAI,CAAC4B,EAAL,GAAU,CAAV;AACAk/C,EAAAA,QAAQ,CAACr6B,CAAD,EAAIzmB,IAAJ,CAAR;;AAEAqqD,EAAAA,sBAAsB,CAAC3rD,IAAD,CAAtB,CACEujC,OAAO,CAAChlC,IADV,EAEEwpB,CAFF,EAGEzmB,IAAI,CAAC6B,CAHP,EAIE7B,IAAI,CAAC8B,CAJP,EAKE9B,IAAI,CAACmB,KALP,EAMEnB,IAAI,CAACoB,MANP,EAOE;AAAEf,IAAAA,KAAK,EAAE,kCAAkC4hC,OAAO,CAAC1yB;AAAnD,GAPF,EAQE7Q,IARF,EASEujC,OAAO,CAAC+wB,MATV;AAWD,CAzBM;AA2BP,IAAI8C,SAAS,GAAG,CAAC,CAAjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM5B,QAAQ,GAAG,SAAXA,QAAW,CAAUvxD,IAAV,EAAgB+8B,IAAhB,EAAsBhhC,IAAtB,EAA4B;AAClD,MAAMurD,MAAM,GAAGvqB,IAAI,CAAC79B,CAAL,GAASnD,IAAI,CAACyC,KAAL,GAAa,CAArC;AACA,MAAMslB,CAAC,GAAG9jB,IAAI,CAACL,MAAL,CAAY,GAAZ,CAAV;AACAwzD,EAAAA,SAAS;AACT,MAAMp+C,SAAS,GAAG,MAAM,IAAI,EAA5B;AACA+O,EAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,IADR,EACc,SAAS84D,SADvB,EAEG94D,IAFH,CAEQ,IAFR,EAEcitD,MAFd,EAGGjtD,IAHH,CAGQ,IAHR,EAGc0iC,IAAI,CAAC59B,CAHnB,EAIG9E,IAJH,CAIQ,IAJR,EAIcitD,MAJd,EAKGjtD,IALH,CAKQ,IALR,EAKc0a,SALd,EAMG1a,IANH,CAMQ,OANR,EAMiB,WANjB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,KAPxB,EAQGA,IARH,CAQQ,kBARR,EAQ4B,KAR5B,EASGA,IATH,CASQ,QATR,EASkB,MATlB;AAWAm4D,EAAAA,QAAQ,CAAC1uC,CAAD,EAAI;AACVzY,IAAAA,EAAE,EAAEi8C,MADM;AAEVh8C,IAAAA,EAAE,EAAE,MAAM,CAAC,IAAIyxB,IAAI,CAACgzB,KAAV,IAAmB,EAFnB;AAGVA,IAAAA,KAAK,EAAEhzB,IAAI,CAACgzB;AAHF,GAAJ,CAAR;AAMA,MAAM1yD,IAAI,GAAG4gD,WAAW,EAAxB;AACA5gD,EAAAA,IAAI,CAAC6B,CAAL,GAAS69B,IAAI,CAAC79B,CAAd;AACA7B,EAAAA,IAAI,CAAC8B,CAAL,GAAS49B,IAAI,CAAC59B,CAAd;AACA9B,EAAAA,IAAI,CAACkf,IAAL,GAAYwgB,IAAI,CAACxgB,IAAjB;AACAlf,EAAAA,IAAI,CAACmB,KAAL,GAAazC,IAAI,CAACyC,KAAlB;AACAnB,EAAAA,IAAI,CAACoB,MAAL,GAAc1C,IAAI,CAAC0C,MAAnB;AACApB,EAAAA,IAAI,CAACK,KAAL,GAAa,oBAAoBq/B,IAAI,CAACnwB,GAAtC;AACAvP,EAAAA,IAAI,CAAC2B,EAAL,GAAU,CAAV;AACA3B,EAAAA,IAAI,CAAC4B,EAAL,GAAU,CAAV;AACAk/C,EAAAA,QAAQ,CAACr6B,CAAD,EAAIzmB,IAAJ,CAAR;AAEA,MAAI+7B,IAAI,GAAG2D,IAAI,CAAC79B,CAAL,GAAS,EAApB;AACA69B,EAAAA,IAAI,CAAC4yB,MAAL,CAAYnzD,OAAZ,CAAoB,UAAC4zD,MAAD,EAAY;AAC9B,QAAMC,MAAM,GAAGtzB,IAAI,CAAC0Y,MAAL,CAAY2a,MAAZ,EAAoBhhB,KAAnC;AAEA,QAAMpkC,MAAM,GAAG;AACbK,MAAAA,EAAE,EAAE+tB,IADS;AAEb9tB,MAAAA,EAAE,EAAEyxB,IAAI,CAAC59B,CAFI;AAGbmG,MAAAA,CAAC,EAAE,CAHU;AAIbiX,MAAAA,IAAI,EAAE8zC,MAJO;AAKb/zC,MAAAA,MAAM,EAAE,MALK;AAMb3I,MAAAA,KAAK,EAAEy8C,MANM;AAOb9rD,MAAAA,GAAG,EAAEy4B,IAAI,CAAC0Y,MAAL,CAAY2a,MAAZ,EAAoBhD;AAPZ,KAAf;AAUAmD,IAAAA,UAAU,CAACzsC,CAAD,EAAI9Y,MAAJ,CAAV;AACAouB,IAAAA,IAAI,IAAI,EAAR;AACD,GAfD;;AAiBAsuB,EAAAA,sBAAsB,CAAC3rD,IAAD,CAAtB,CACEghC,IAAI,CAACA,IADP,EAEEjZ,CAFF,EAGEzmB,IAAI,CAAC6B,CAHP,EAIE7B,IAAI,CAAC8B,CAJP,EAKE9B,IAAI,CAACmB,KALP,EAMEnB,IAAI,CAACoB,MANP,EAOE;AAAEf,IAAAA,KAAK,EAAE;AAAT,GAPF,EAQE3B,IARF,EASEghC,IAAI,CAACszB,MATP;AAWD,CA9DM;AAgEP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMtO,kBAAkB,GAAG,SAArBA,kBAAqB,CAAU/hD,IAAV,EAAgB4nB,MAAhB,EAAwB;AACxD,MAAMs2B,QAAQ,GAAGC,QAAQ,CAACn+C,IAAD,EAAO;AAC9Bd,IAAAA,CAAC,EAAE0oB,MAAM,CAACizB,MADoB;AAE9B17C,IAAAA,CAAC,EAAEyoB,MAAM,CAACmzB,MAFoB;AAG9Bv8C,IAAAA,KAAK,EAAEopB,MAAM,CAACkzB,KAAP,GAAelzB,MAAM,CAACizB,MAHC;AAI9Bp8C,IAAAA,MAAM,EAAEmpB,MAAM,CAACozB,KAAP,GAAepzB,MAAM,CAACmzB,MAJA;AAK9Bx+B,IAAAA,IAAI,EAAEqL,MAAM,CAACrL,IALiB;AAM9B7e,IAAAA,KAAK,EAAE;AANuB,GAAP,CAAzB;AAQAwgD,EAAAA,QAAQ,CAAC6J,KAAT;AACD,CAVM;AAYA,IAAM1J,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO;AACLn/C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLod,IAAAA,IAAI,EAAExe,SAHD;AAIL,mBAAe,OAJV;AAKLS,IAAAA,KAAK,EAAE,GALF;AAMLC,IAAAA,MAAM,EAAE,GANH;AAOL8/C,IAAAA,UAAU,EAAE,CAPP;AAQLv/C,IAAAA,EAAE,EAAE,CARC;AASLC,IAAAA,EAAE,EAAE;AATC,GAAP;AAWD,CAZM;AAcA,IAAMg/C,WAAW,GAAG,SAAdA,WAAc,GAAY;AACrC,SAAO;AACL/+C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLX,IAAAA,KAAK,EAAE,GAHF;AAIL8/C,IAAAA,MAAM,EAAE,OAJH;AAKL7/C,IAAAA,MAAM,EAAE,GALH;AAMLO,IAAAA,EAAE,EAAE,CANC;AAOLC,IAAAA,EAAE,EAAE;AAPC,GAAP;AASD,CAVM;;AAYP,IAAMyoD,sBAAsB,GAAI,YAAY;AAC1C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,WAASO,MAAT,CAAgBC,OAAhB,EAAyBpkC,CAAzB,EAA4B5kB,CAA5B,EAA+BC,CAA/B,EAAkCX,KAAlC,EAAyCC,MAAzC,EAAiDgnD,SAAjD,EAA4D4K,MAA5D,EAAoE;AAClE,QAAM/1D,IAAI,GAAGwpB,CAAC,CACXnkB,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEA6E,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVnE,IAHU,CAGL,GAHK,EAGA8E,CAAC,GAAGV,MAAM,GAAG,CAAb,GAAiB,CAHjB,EAIVM,KAJU,CAIJ,YAJI,EAIUsxD,MAJV,EAKVtxD,KALU,CAKJ,aALI,EAKW,QALX,EAMVzE,IANU,CAML4tD,OANK,CAAb;;AAOAC,IAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS2C,OAAT,CAAiBF,OAAjB,EAA0BpkC,CAA1B,EAA6B5kB,CAA7B,EAAgCC,CAAhC,EAAmCX,KAAnC,EAA0CC,MAA1C,EAAkDgnD,SAAlD,EAA6D1pD,IAA7D,EAAmEs0D,MAAnE,EAA2E;AACzE,QAAQv1C,YAAR,GAAyC/e,IAAzC,CAAQ+e,YAAR;AAAA,QAAsBC,cAAtB,GAAyChf,IAAzC,CAAsBgf,cAAtB;AAEA,QAAM8jC,KAAK,GAAGqJ,OAAO,CAACpmD,KAAR,CAAc,cAAd,CAAd;;AACA,SAAK,IAAIvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsjD,KAAK,CAACrjD,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAMwJ,EAAE,GAAGxJ,CAAC,GAAGuf,YAAJ,GAAoBA,YAAY,IAAI+jC,KAAK,CAACrjD,MAAN,GAAe,CAAnB,CAAb,GAAsC,CAApE;AACA,UAAMlB,IAAI,GAAGwpB,CAAC,CACXnkB,MADU,CACH,MADG,EAEVtF,IAFU,CAEL,GAFK,EAEA6E,CAAC,GAAGV,KAAK,GAAG,CAFZ,EAGVnE,IAHU,CAGL,GAHK,EAGA8E,CAHA,EAIV9E,IAJU,CAIL,MAJK,EAIGg2D,MAJH,EAKVtxD,KALU,CAKJ,aALI,EAKW,QALX,EAMVA,KANU,CAMJ,WANI,EAMS+b,YANT,EAOV/b,KAPU,CAOJ,aAPI,EAOWgc,cAPX,CAAb;AAQAzgB,MAAAA,IAAI,CACDqF,MADH,CACU,OADV,EAEGtF,IAFH,CAEQ,GAFR,EAEa6E,CAAC,GAAGV,KAAK,GAAG,CAFzB,EAGGnE,IAHH,CAGQ,IAHR,EAGc0K,EAHd,EAIGzK,IAJH,CAIQukD,KAAK,CAACtjD,CAAD,CAJb;AAMAjB,MAAAA,IAAI,CACDD,IADH,CACQ,GADR,EACa8E,CAAC,GAAGV,MAAM,GAAG,GAD1B,EAEGpE,IAFH,CAEQ,mBAFR,EAE6B,SAF7B,EAGGA,IAHH,CAGQ,oBAHR,EAG8B,SAH9B;;AAKA8tD,MAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAAS4C,IAAT,CAAcH,OAAd,EAAuBpkC,CAAvB,EAA0B5kB,CAA1B,EAA6BC,CAA7B,EAAgCX,KAAhC,EAAuCC,MAAvC,EAA+CgnD,SAA/C,EAA0D1pD,IAA1D,EAAgE;AAC9D,QAAM2mB,IAAI,GAAGoB,CAAC,CAACnkB,MAAF,CAAS,QAAT,CAAb;AACA,QAAMqS,CAAC,GAAG0Q,IAAI,CACX/iB,MADO,CACA,eADA,EAEPtF,IAFO,CAEF,GAFE,EAEG6E,CAFH,EAGP7E,IAHO,CAGF,GAHE,EAGG8E,CAHH,EAIP9E,IAJO,CAIF,OAJE,EAIOmE,KAJP,EAKPnE,IALO,CAKF,QALE,EAKQoE,MALR,EAMPpE,IANO,CAMF,UANE,EAMU,OANV,CAAV;AAQA,QAAMC,IAAI,GAAG0X,CAAC,CACXrS,MADU,CACH,WADG,EAEVZ,KAFU,CAEJ,SAFI,EAEO,OAFP,EAGVA,KAHU,CAGJ,QAHI,EAGM,MAHN,EAIVA,KAJU,CAIJ,OAJI,EAIK,MAJL,CAAb;AAMAzE,IAAAA,IAAI,CACDqF,MADH,CACU,KADV,EAEGtF,IAFH,CAEQ,OAFR,EAEiB,OAFjB,EAGG0E,KAHH,CAGS,SAHT,EAGoB,YAHpB,EAIGA,KAJH,CAIS,YAJT,EAIuB,QAJvB,EAKGA,KALH,CAKS,gBALT,EAK2B,QAL3B,EAMGzE,IANH,CAMQ4tD,OANR;AAQAE,IAAAA,OAAO,CAACF,OAAD,EAAUxlC,IAAV,EAAgBxjB,CAAhB,EAAmBC,CAAnB,EAAsBX,KAAtB,EAA6BC,MAA7B,EAAqCgnD,SAArC,EAAgD1pD,IAAhD,CAAP;;AACAosD,IAAAA,aAAa,CAAC7tD,IAAD,EAAOmrD,SAAP,CAAb;AACD;AAED;AACF;AACA;AACA;;;AACE,WAAS0C,aAAT,CAAuBG,MAAvB,EAA+BC,iBAA/B,EAAkD;AAChD,SAAK,IAAM9rD,GAAX,IAAkB8rD,iBAAlB,EAAqC;AACnC,UAAI9rD,GAAG,IAAI8rD,iBAAX,EAA8B;AAC5B;AACA;AACAD,QAAAA,MAAM,CAACjuD,IAAP,CAAYoC,GAAZ,EAAiB8rD,iBAAiB,CAAC9rD,GAAD,CAAlC;AACD;AACF;AACF;;AAED,SAAO,UAAUV,IAAV,EAAgB;AACrB,WAAOA,IAAI,CAACkf,aAAL,KAAuB,IAAvB,GAA8BotC,IAA9B,GAAqCtsD,IAAI,CAACkf,aAAL,KAAuB,KAAvB,GAA+BgtC,MAA/B,GAAwCG,OAApF;AACD,GAFD;AAGD,CArH8B,EAA/B;;AAuHA,IAAMsI,YAAY,GAAG,SAAfA,YAAe,CAAU0C,QAAV,EAAoB;AACvCA,EAAAA,QAAQ,CACLzzD,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGGtF,IAHH,CAGQ,IAHR,EAGc,WAHd,EAIGA,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,CANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,CAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGsF,MATH,CASU,MATV,EAUGtF,IAVH,CAUQ,GAVR,EAUa,kBAVb,EADuC,CAWL;AACnC,CAZD;;AAcA,iEAAe;AACb8jD,EAAAA,QAAQ,EAARA,QADa;AAEboS,EAAAA,UAAU,EAAVA,UAFa;AAGbc,EAAAA,WAAW,EAAXA,WAHa;AAIb9mB,EAAAA,QAAQ,EAARA,QAJa;AAKb0c,EAAAA,SAAS,EAATA,SALa;AAMbsK,EAAAA,QAAQ,EAARA,QANa;AAObxP,EAAAA,kBAAkB,EAAlBA,kBAPa;AAQb1D,EAAAA,UAAU,EAAVA,UARa;AASbJ,EAAAA,WAAW,EAAXA,WATa;AAUbyS,EAAAA,YAAY,EAAZA;AAVa,CAAf;;;;;;;;;;;;;;;;;;;;ACndA;AACA;AACA;AAEA,IAAM30D,IAAI,GAAG,EAAb;AAEA;AACA;AACA;AACA;AACA;;AACO,IAAMupB,OAAO,GAAG,SAAVA,OAAU,CAAUC,GAAV,EAAe;AACpC,MAAMjpB,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAYipB,GAAZ,CAAb;AAEAjpB,EAAAA,IAAI,CAACE,OAAL,CAAa,UAAUC,GAAV,EAAe;AAC1BV,IAAAA,IAAI,CAACU,GAAD,CAAJ,GAAY8oB,GAAG,CAAC9oB,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM+oB,IAAI,GAAG,SAAPA,IAAO,CAACzrB,EAAD,EAAKg7B,GAAL,EAAa;AAC/B,MAAI;AACFv6B,IAAAA,8CAAA,CAAU,iCAAV;AAEA,QAAMV,GAAG,GAAGqD,0CAAM,CAAC,MAAMpD,EAAP,CAAlB;AAEA,QAAM+pB,CAAC,GAAGhqB,GAAG,CAAC6F,MAAJ,CAAW,GAAX,CAAV;AAEAmkB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,4kBAJJ;AAOAypB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,6LAJJ;AAOAypB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,8LAJJ;AAOAypB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,6GAJJ;AAOAypB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,kHAJJ;AAOAypB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAGI,GAHJ,EAII,+LAJJ;AAOAypB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EAAiB;AAAjB,KACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,IAFb,EAGGA,IAHH,CAGQ,GAHR,EAGa,GAHb,EAIGA,IAJH,CAIQ,WAJR,EAIqB,OAJrB,EAKG0E,KALH,CAKS,aALT,EAKwB,QALxB,EAMGzE,IANH,CAMQ,uBANR;AAOAwpB,IAAAA,CAAC,CAACnkB,MAAF,CAAS,MAAT,EAAiB;AAAjB,KACGtF,IADH,CACQ,OADR,EACiB,YADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa,IAFb,EAGGA,IAHH,CAGQ,GAHR,EAGa,GAHb,EAIGA,IAJH,CAIQ,WAJR,EAIqB,OAJrB,EAKG0E,KALH,CAKS,aALT,EAKwB,QALxB,EAMGzE,IANH,CAMQ,qBAAqBy6B,GAN7B;AAQAj7B,IAAAA,GAAG,CAACO,IAAJ,CAAS,QAAT,EAAmB,GAAnB;AACAP,IAAAA,GAAG,CAACO,IAAJ,CAAS,OAAT,EAAkB,GAAlB;AACAP,IAAAA,GAAG,CAACO,IAAJ,CAAS,SAAT,EAAoB,eAApB;AACD,GAnED,CAmEE,OAAOkM,CAAP,EAAU;AACV/L,IAAAA,8CAAA,CAAU,oCAAV;AACAA,IAAAA,8CAAA,CAAU+L,CAAC,CAAC+gC,OAAZ;AACD;AACF,CAxEM;AA0EP,iEAAe;AACbhiB,EAAAA,OAAO,EAAPA,OADa;AAEbE,EAAAA,IAAI,EAAJA;AAFa,CAAf;;;;;;;;;;;;;;;;ACnGA,IAAI6tC,oBAAoB,GAAG,EAA3B;AACO,IAAMhO,WAAW,GAAG,SAAdA,WAAc,CAACiO,IAAD,EAAU;AACnCD,EAAAA,oBAAoB,CAACt2D,IAArB,CAA0Bu2D,IAA1B;AACD,CAFM;AAGA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AACnCF,EAAAA,oBAAoB,CAAC72D,OAArB,CAA6B,UAACwV,CAAD,EAAO;AAClCA,IAAAA,CAAC;AACF,GAFD;AAGAqhD,EAAAA,oBAAoB,GAAG,EAAvB;AACD,CALM;;;;;;;;;;;;;;;;;;;ACJP;AAEA;;AAEA;;AACO,IAAMG,MAAM,GAAG;AACpB92D,EAAAA,KAAK,EAAE,CADa;AAEpB4D,EAAAA,IAAI,EAAE,CAFc;AAGpB+E,EAAAA,IAAI,EAAE,CAHc;AAIpBmK,EAAAA,KAAK,EAAE,CAJa;AAKpBikD,EAAAA,KAAK,EAAE;AALa,CAAf;AAQA,IAAMj5D,GAAG,GAAG;AACjBkC,EAAAA,KAAK,EAAE,iBAAM,CAAE,CADE;AAEjB4D,EAAAA,IAAI,EAAE,gBAAM,CAAE,CAFG;AAGjB+E,EAAAA,IAAI,EAAE,gBAAM,CAAE,CAHG;AAIjBmK,EAAAA,KAAK,EAAE,iBAAM,CAAE,CAJE;AAKjBikD,EAAAA,KAAK,EAAE,iBAAM,CAAE;AALE,CAAZ;AAQP;AACA;AACA;AACA;AACA;;AACO,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAA2B;AAAA,MAAjBzoC,KAAiB,uEAAT,OAAS;;AACpD,MAAIzjB,KAAK,CAACyjB,KAAD,CAAT,EAAkB;AAChBA,IAAAA,KAAK,GAAGA,KAAK,CAAC6Q,WAAN,EAAR;;AACA,QAAI03B,MAAM,CAACvoC,KAAD,CAAN,KAAkBltB,SAAtB,EAAiC;AAC/BktB,MAAAA,KAAK,GAAGuoC,MAAM,CAACvoC,KAAD,CAAd;AACD;AACF;;AACDzwB,EAAAA,GAAG,CAACgD,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACAhD,EAAAA,GAAG,CAACkC,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACAlC,EAAAA,GAAG,CAAC8F,IAAJ,GAAW,YAAM,CAAE,CAAnB;;AACA9F,EAAAA,GAAG,CAAC6K,IAAJ,GAAW,YAAM,CAAE,CAAnB;;AACA7K,EAAAA,GAAG,CAACgV,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACAhV,EAAAA,GAAG,CAACi5D,KAAJ,GAAY,YAAM,CAAE,CAApB;;AACA,MAAIxoC,KAAK,IAAIuoC,MAAM,CAACC,KAApB,EAA2B;AACzBj5D,IAAAA,GAAG,CAACi5D,KAAJ,GAAYE,OAAO,CAACnkD,KAAR,GACRmkD,OAAO,CAACnkD,KAAR,CAAcokD,IAAd,CAAmBD,OAAnB,EAA4B/2B,MAAM,CAAC,OAAD,CAAlC,EAA6C,eAA7C,CADQ,GAER+2B,OAAO,CAACn5D,GAAR,CAAYo5D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsC/2B,MAAM,CAAC,OAAD,CAA5C,CAFJ;AAGD;;AACD,MAAI3R,KAAK,IAAIuoC,MAAM,CAAChkD,KAApB,EAA2B;AACzBhV,IAAAA,GAAG,CAACgV,KAAJ,GAAYmkD,OAAO,CAACnkD,KAAR,GACRmkD,OAAO,CAACnkD,KAAR,CAAcokD,IAAd,CAAmBD,OAAnB,EAA4B/2B,MAAM,CAAC,OAAD,CAAlC,EAA6C,eAA7C,CADQ,GAER+2B,OAAO,CAACn5D,GAAR,CAAYo5D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsC/2B,MAAM,CAAC,OAAD,CAA5C,CAFJ;AAGD;;AACD,MAAI3R,KAAK,IAAIuoC,MAAM,CAACnuD,IAApB,EAA0B;AACxB7K,IAAAA,GAAG,CAAC6K,IAAJ,GAAWsuD,OAAO,CAACtuD,IAAR,GACPsuD,OAAO,CAACtuD,IAAR,CAAauuD,IAAb,CAAkBD,OAAlB,EAA2B/2B,MAAM,CAAC,MAAD,CAAjC,EAA2C,eAA3C,CADO,GAEP+2B,OAAO,CAACn5D,GAAR,CAAYo5D,IAAZ,CAAiBD,OAAjB,cAAsC/2B,MAAM,CAAC,MAAD,CAA5C,CAFJ;AAGD;;AACD,MAAI3R,KAAK,IAAIuoC,MAAM,CAAClzD,IAApB,EAA0B;AACxB9F,IAAAA,GAAG,CAAC8F,IAAJ,GAAWqzD,OAAO,CAACrzD,IAAR,CAAa;AAAb,MACPqzD,OAAO,CAACrzD,IAAR,CAAaszD,IAAb,CAAkBD,OAAlB,EAA2B/2B,MAAM,CAAC,MAAD,CAAjC,EAA2C,kBAA3C,CADO,GAEP+2B,OAAO,CAACn5D,GAAR,CAAYo5D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsC/2B,MAAM,CAAC,MAAD,CAA5C,CAFJ;AAGD;;AACD,MAAI3R,KAAK,IAAIuoC,MAAM,CAAC92D,KAApB,EAA2B;AACzBlC,IAAAA,GAAG,CAACkC,KAAJ,GAAYi3D,OAAO,CAACj3D,KAAR,GACRi3D,OAAO,CAACj3D,KAAR,CAAck3D,IAAd,CAAmBD,OAAnB,EAA4B/2B,MAAM,CAAC,OAAD,CAAlC,EAA6C,mBAA7C,CADQ,GAER+2B,OAAO,CAACn5D,GAAR,CAAYo5D,IAAZ,CAAiBD,OAAjB,EAA0B,UAA1B,EAAsC/2B,MAAM,CAAC,OAAD,CAA5C,CAFJ;AAGD;AACF,CAtCM;AAwCP;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAAC3R,KAAD,EAAW;AACxB,MAAM4oC,IAAI,GAAG15B,kDAAM,GAAGyC,MAAT,CAAgB,QAAhB,CAAb;AACA,qBAAYi3B,IAAZ,gBAAsB5oC,KAAtB;AACD,CAHD;;;;;;;;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMgxB,IAAI,GAAG,SAAPA,IAAO,GAAY;AAAA;;AACvB,MAAMlgD,IAAI,GAAG+hB,6DAAA,EAAb,CADuB,CAEvB;;AACA,MAAIhU,KAAJ;;AACA,MAAIgqD,SAAS,CAACt4D,MAAV,IAAoB,CAAxB,EAA2B;AACzB;AACA,QAAI,OAAOs4D,SAAS,CAAC,CAAD,CAAhB,KAAwB,WAA5B,EAAyC;AACvCC,MAAAA,OAAO,CAACC,cAAR,GAAyBF,SAAS,CAAC,CAAD,CAAlC;AACD;;AAEDhqD,IAAAA,KAAK,GAAGgqD,SAAS,CAAC,CAAD,CAAjB;AACD,GAPD,MAOO;AACLhqD,IAAAA,KAAK,GAAGgqD,SAAS,CAAC,CAAD,CAAjB;AACD,GAbsB,CAevB;;;AACA,MAAIG,QAAJ;;AACA,MAAI,OAAOH,SAAS,CAACA,SAAS,CAACt4D,MAAV,GAAmB,CAApB,CAAhB,KAA2C,UAA/C,EAA2D;AACzDy4D,IAAAA,QAAQ,GAAGH,SAAS,CAACA,SAAS,CAACt4D,MAAV,GAAmB,CAApB,CAApB;AACAhB,IAAAA,8CAAA,CAAU,yBAAV;AACD,GAHD,MAGO;AACL,QAAI,OAAOuB,IAAI,CAACg4D,OAAZ,KAAwB,WAA5B,EAAyC;AACvC,UAAI,OAAOh4D,IAAI,CAACg4D,OAAL,CAAaE,QAApB,KAAiC,UAArC,EAAiD;AAC/CA,QAAAA,QAAQ,GAAGl4D,IAAI,CAACg4D,OAAL,CAAaE,QAAxB;AACAz5D,QAAAA,8CAAA,CAAU,yBAAV;AACD,OAHD,MAGO;AACLA,QAAAA,8CAAA,CAAU,4BAAV;AACD;AACF;AACF;;AACDsP,EAAAA,KAAK,GACHA,KAAK,KAAK/L,SAAV,GACIiD,QAAQ,CAACglB,gBAAT,CAA0B,UAA1B,CADJ,GAEI,OAAOlc,KAAP,KAAiB,QAAjB,GACA9I,QAAQ,CAACglB,gBAAT,CAA0Blc,KAA1B,CADA,GAEAA,KAAK,YAAY5B,MAAM,CAACgsD,IAAxB,GACA,CAACpqD,KAAD,CADA,GAEAA,KAPN,CA9BuB,CAqCV;;AAEbtP,EAAAA,8CAAA,CAAU,2BAA2Bu5D,OAAO,CAAC18C,WAA7C;;AACA,MAAI,OAAO08C,OAAO,CAAC18C,WAAf,KAA+B,WAAnC,EAAgD;AAC9C7c,IAAAA,8CAAA,CAAU,0BAA0Bu5D,OAAO,CAAC18C,WAA5C;AACAyG,IAAAA,oEAAA,CAA4B;AAAEzG,MAAAA,WAAW,EAAE08C,OAAO,CAAC18C;AAAvB,KAA5B;AACD;;AAED,MAAI,OAAO08C,OAAO,CAACI,WAAf,KAA+B,WAAnC,EAAgD;AAC9Cr2C,IAAAA,oEAAA,CAA4B;AAAE/D,MAAAA,KAAK,EAAEg6C,OAAO,CAACI;AAAjB,KAA5B;AACD;;AAED,MAAMC,YAAY,GAAG,IAAI5xD,+DAAJ,CAA2BzG,IAAI,CAACub,gBAAhC,EAAkDvb,IAAI,CAACwb,mBAAvD,CAArB;AAEA,MAAI7W,GAAJ;;AAnDuB,6BAqDdnF,CArDc;AAsDrB;AACA,QAAMyb,OAAO,GAAGlN,KAAK,CAACvO,CAAD,CAArB;AAEA;;AACA,QAAI,CAACyb,OAAO,CAAC03C,YAAR,CAAqB,gBAArB,CAAL,EAA6C;AAC3C13C,MAAAA,OAAO,CAACpV,YAAR,CAAqB,gBAArB,EAAuC,IAAvC;AACD,KAFD,MAEO;AACL;AACD;;AAED,QAAM7H,EAAE,qBAAcq6D,YAAY,CAACE,IAAb,EAAd,CAAR,CAhEqB,CAkErB;;AACA5zD,IAAAA,GAAG,GAAGsW,OAAO,CAACijC,SAAd,CAnEqB,CAqErB;;AACAv5C,IAAAA,GAAG,GAAG8B,2DAAA,CACU9B,GADV,EAEH2B,IAFG,GAGHb,OAHG,CAGK,cAHL,EAGqB,OAHrB,CAAN;AAKA,QAAMy6C,IAAI,GAAGz5C,yDAAA,CAAiB9B,GAAjB,CAAb;;AACA,QAAIu7C,IAAJ,EAAU;AACRzhD,MAAAA,8CAAA,CAAU,yBAAV,EAAqCyhD,IAArC;AACD;;AAED,QAAI;AACFn+B,MAAAA,0DAAA,CACE/jB,EADF,EAEE2G,GAFF,EAGE,UAAC+zD,OAAD,EAAUlzC,aAAV,EAA4B;AAC1BvK,QAAAA,OAAO,CAACijC,SAAR,GAAoBwa,OAApB;;AACA,YAAI,OAAOR,QAAP,KAAoB,WAAxB,EAAqC;AACnCA,UAAAA,QAAQ,CAACl6D,EAAD,CAAR;AACD;;AACD,YAAIwnB,aAAJ,EAAmBA,aAAa,CAACvK,OAAD,CAAb;AACpB,OATH,EAUEA,OAVF;AAYD,KAbD,CAaE,OAAOzQ,CAAP,EAAU;AACV/L,MAAAA,6CAAA,CAAS,wBAAT;AACAA,MAAAA,6CAAA,CAAS+L,CAAT;;AACA,UAAI,KAAI,CAACmuD,UAAT,EAAqB;AACnB,aAAI,CAACA,UAAL,CAAgBnuD,CAAhB;AACD;AACF;AAnGoB;;AAqDvB,OAAK,IAAIhL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuO,KAAK,CAACtO,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AAAA,qBAA9BA,CAA8B;;AAAA,6BAQnC;AAuCH;AACF,CArGD;;AAuGA,IAAMo5D,UAAU,GAAG,SAAbA,UAAa,CAAUj6D,MAAV,EAAkB;AACnC;AACA,MAAI,OAAOA,MAAM,CAACq5D,OAAd,KAA0B,WAA9B,EAA2C;AACzC,QAAI,OAAOr5D,MAAM,CAACq5D,OAAP,CAAe18C,WAAtB,KAAsC,WAA1C,EAAuD;AACrD08C,MAAAA,OAAO,CAAC18C,WAAR,GAAsB3c,MAAM,CAACq5D,OAAP,CAAe18C,WAArC;AACD;;AACD,QAAI,OAAO3c,MAAM,CAACq5D,OAAP,CAAe51D,UAAtB,KAAqC,WAAzC,EAAsD;AACpD41D,MAAAA,OAAO,CAAC51D,UAAR,GACEzD,MAAM,CAACq5D,OAAP,CAAe51D,UAAf,KAA8B,OAA9B,IAAyCzD,MAAM,CAACq5D,OAAP,CAAe51D,UAAf,KAA8B,KAAvE,GAA+E,KAA/E,GAAuF,IADzF;AAED;AACF;;AACD2f,EAAAA,8DAAA,CAAsBpjB,MAAtB,EAXmC,CAYnC;AACD,CAbD;AAeA;AACA;AACA;AACA;;;AACA,IAAMk6D,aAAa,GAAG,SAAhBA,aAAgB,GAAY;AAChC,MAAIl6D,MAAJ;;AAEA,MAAIq5D,OAAO,CAAC18C,WAAZ,EAAyB;AACvB;AACA3c,IAAAA,MAAM,GAAGojB,6DAAA,EAAT;;AACA,QAAIpjB,MAAM,CAAC2c,WAAX,EAAwB;AACtB08C,MAAAA,OAAO,CAAC9X,IAAR;AACD;AACF,GAND,MAMO;AACL,QAAI,OAAO8X,OAAO,CAAC18C,WAAf,KAA+B,WAAnC,EAAgD;AAC9C7c,MAAAA,8CAAA,CAAU,qBAAV;AACAE,MAAAA,MAAM,GAAGojB,6DAAA,EAAT;;AACA,UAAIpjB,MAAM,CAAC2c,WAAX,EAAwB;AACtB08C,QAAAA,OAAO,CAAC9X,IAAR;AACD;AACF;AACF;AACF,CAlBD;;AAoBA,IAAI,OAAOj7C,QAAP,KAAoB,WAAxB,EAAqC;AACnC;AACF;AACA;AACEkH,EAAAA,MAAM,CAACmZ,gBAAP,CACE,MADF,EAEE,YAAY;AACVuzC,IAAAA,aAAa;AACd,GAJH,EAKE,KALF;AAOD;;AAED,IAAMb,OAAO,GAAG;AACd18C,EAAAA,WAAW,EAAE,IADC;AAEdlZ,EAAAA,UAAU,EAAE,IAFE;AAId2f,EAAAA,UAAU,EAAVA,mDAJc;AAKd3T,EAAAA,KAAK,EAAE2T,yDALO;AAMdhT,EAAAA,MAAM,EAAEgT,0DANM;AAQdm+B,EAAAA,IAAI,EAAJA,IARc;AASd0Y,EAAAA,UAAU,EAAVA,UATc;AAWdC,EAAAA,aAAa,EAAbA;AAXc,CAAhB;AAcA,iEAAeb,OAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,SAAS5pD,KAAT,CAAe7P,IAAf,EAAqB;AACnB,MAAMirB,GAAG,GAAG3H,8CAAA,EAAZ;AACA,MAAM+4C,SAAS,GAAGn0D,yDAAA,CAAiBlI,IAAjB,EAAuBirB,GAAvB,CAAlB;;AACA,MAAIoxC,SAAJ,EAAe;AACbC,IAAAA,YAAY,CAACD,SAAD,CAAZ;AACAn8D,IAAAA,6CAAA,CAAS,SAAT,EAAoBm8D,SAApB;AACD;;AACD,MAAME,SAAS,GAAGr0D,yDAAA,CAAiBlI,IAAjB,EAAuBirB,GAAvB,CAAlB;AACA,MAAIlC,MAAJ;AAEA7oB,EAAAA,8CAAA,CAAU,UAAUq8D,SAApB;;AACA,UAAQA,SAAR;AACE,SAAK,UAAL;AACExzC,MAAAA,MAAM,GAAG2mB,sEAAT;AACA3mB,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB8xC,iEAAnB;AACApyC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,CAAiBvjB,KAAjB;AACA;;AACF,SAAK,WAAL;AACEs3B,MAAAA,wEAAA;AACArU,MAAAA,MAAM,GAAGiyC,wEAAT;AACAjyC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB+T,kEAAnB;AACA;;AACF,SAAK,cAAL;AACEA,MAAAA,wEAAA;AACArU,MAAAA,MAAM,GAAGiyC,wEAAT;AACAjyC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB+T,kEAAnB;AACA;;AACF,SAAK,UAAL;AACEkjB,MAAAA,2EAAA;AACAv3B,MAAAA,MAAM,GAAG4yC,mFAAT;AACA5yC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBi3B,qEAAnB;AACA;;AACF,SAAK,OAAL;AACEv3B,MAAAA,MAAM,GAAGmyC,sEAAT;AACAnyC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBud,gEAAnB;AACA;;AACF,SAAK,OAAL;AACE7d,MAAAA,MAAM,GAAG6xC,6EAAT;AACA7xC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBP,gEAAnB;AACA;;AACF,SAAK,cAAL;AACEC,MAAAA,MAAM,GAAG6xC,6EAAT;AACA7xC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBP,gEAAnB;AACA;;AACF,SAAK,OAAL;AACEC,MAAAA,MAAM,GAAG8yC,6EAAT;AACA9yC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBglC,gEAAnB;AACA;;AACF,SAAK,cAAL;AACEtlC,MAAAA,MAAM,GAAG8yC,6EAAT;AACA9yC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBglC,gEAAnB;AACA;;AACF,SAAK,MAAL;AACEnuD,MAAAA,8CAAA,CAAU,gBAAV;AACA6oB,MAAAA,MAAM,GAAGoqB,oEAAT;AACApqB,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBgyC,8DAAnB;AACA;;AACF,SAAK,KAAL;AACEn7D,MAAAA,8CAAA,CAAU,KAAV;AACA6oB,MAAAA,MAAM,GAAG6qB,kEAAT;AACA7qB,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBkyC,4DAAnB;AACA;;AACF,SAAK,IAAL;AACEr7D,MAAAA,8CAAA,CAAU,IAAV;AACA6oB,MAAAA,MAAM,GAAG6K,uEAAT;AACA7K,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBsK,0DAAnB;AACA;;AACF,SAAK,SAAL;AACEzzB,MAAAA,8CAAA,CAAU,SAAV;AACA6oB,MAAAA,MAAM,GAAGkzC,+EAAT;AACAlzC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmBusC,yEAAnB;AACA;;AACF,SAAK,aAAL;AACA,SAAK,oBAAL;AACE11D,MAAAA,8CAAA,CAAU,oBAAV;AACA6oB,MAAAA,MAAM,GAAG0yC,yFAAT;AACA1yC,MAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,GAAmB2vB,4EAAnB;AACA;AAlEJ;;AAoEAjwB,EAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,CAAiBkzC,SAAjB,GAA6BA,SAA7B;;AACAxzC,EAAAA,MAAM,CAACA,MAAP,CAAcM,EAAd,CAAiB+wC,UAAjB,GAA8B,UAAC7+C,GAAD,EAAMqvB,IAAN,EAAe;AAC3C,QAAM11B,KAAK,GAAG;AAAEqG,MAAAA,GAAG,EAAHA,GAAF;AAAOqvB,MAAAA,IAAI,EAAJA;AAAP,KAAd;AACA,UAAM11B,KAAN;AACD,GAHD;;AAKA6T,EAAAA,MAAM,CAAClZ,KAAP,CAAa7P,IAAb;AACA,SAAO+oB,MAAP;AACD;;AAEM,IAAM0zC,cAAc,GAAG,SAAjBA,cAAiB,CAAUz8D,IAAV,EAAgB;AAC5C,MAAIoG,GAAG,GAAGpG,IAAV;AAEAoG,EAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,kBAAZ,EAAgC,UAAUC,CAAV,EAAa;AACjD,QAAMu1D,QAAQ,GAAGv1D,CAAC,CAACwe,SAAF,CAAY,CAAZ,EAAexe,CAAC,CAACjG,MAAF,GAAW,CAA1B,CAAjB;AACA,WAAOw7D,QAAP;AACD,GAHK,CAAN;AAIAt2D,EAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,qBAAZ,EAAmC,UAAUC,CAAV,EAAa;AACpD,QAAMu1D,QAAQ,GAAGv1D,CAAC,CAACwe,SAAF,CAAY,CAAZ,EAAexe,CAAC,CAACjG,MAAF,GAAW,CAA1B,CAAjB;AACA,WAAOw7D,QAAP;AACD,GAHK,CAAN;AAKAt2D,EAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,QAAZ,EAAsB,UAAUC,CAAV,EAAa;AACvC,QAAMu1D,QAAQ,GAAGv1D,CAAC,CAACwe,SAAF,CAAY,CAAZ,EAAexe,CAAC,CAACjG,MAAF,GAAW,CAA1B,CAAjB;AAEA,QAAMy7D,KAAK,GAAG,WAAW3rC,IAAX,CAAgB0rC,QAAhB,CAAd;;AACA,QAAIC,KAAJ,EAAW;AACT,aAAO,QAAQD,QAAR,GAAmB,IAA1B;AACD,KAFD,MAEO;AACL,aAAO,OAAOA,QAAP,GAAkB,IAAzB;AACD;AACF,GATK,CAAN;AAWA,SAAOt2D,GAAP;AACD,CAxBM;AA0BA,IAAMoW,cAAc,GAAG,SAAjBA,cAAiB,CAAUxc,IAAV,EAAgB;AAC5C,MAAIoG,GAAG,GAAGpG,IAAV;AAEAoG,EAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,MAAZ,EAAoB,YAAY;AACpC,WAAO,IAAP;AACD,GAFK,CAAN;AAGAd,EAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,KAAZ,EAAmB,YAAY;AACnC,WAAO,GAAP;AACD,GAFK,CAAN;AAGAd,EAAAA,GAAG,GAAGA,GAAG,CAACc,OAAJ,CAAY,KAAZ,EAAmB,YAAY;AACnC,WAAO,GAAP;AACD,GAFK,CAAN;AAIA,SAAOd,GAAP;AACD,CAdM;AAeP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMoK,MAAM,GAAG,SAATA,MAAS,CAAU/Q,EAAV,EAAcm9D,IAAd,EAAoBC,EAApB,EAAwBC,SAAxB,EAAmC;AAChDx5C,EAAAA,0CAAA;AACA,MAAIld,GAAG,GAAGw2D,IAAV;AACA,MAAMP,SAAS,GAAGn0D,yDAAA,CAAiB9B,GAAjB,CAAlB;;AACA,MAAIi2D,SAAJ,EAAe;AACbF,IAAAA,0DAAkB,CAACE,SAAD,CAAlB;AACA/4C,IAAAA,iDAAA,CAAuB+4C,SAAvB;AACD;;AACD,MAAIpxC,GAAG,GAAG3H,8CAAA,EAAV;AAEApjB,EAAAA,8CAAA,CAAU+qB,GAAV,EAVgD,CAYhD;;AACA,MAAI2xC,IAAI,CAAC17D,MAAL,GAAc+pB,GAAG,CAACrO,WAAtB,EAAmC;AACjCxW,IAAAA,GAAG,GAAG,qEAAN;AACD,GAf+C,CAiBhD;;;AACA,MAAIglB,IAAI,GAAGvoB,0CAAM,CAAC,MAAD,CAAjB,CAlBgD,CAoBhD;;AACA,MAAI,OAAOi6D,SAAP,KAAqB,WAAzB,EAAsC;AACpC,QAAI7xC,GAAG,CAAC7O,aAAJ,KAAsB,SAA1B,EAAqC;AACnC;AACA;AACA,UAAM2gD,MAAM,GAAGl6D,0CAAM,CAAC,MAAD,CAAN,CACZwC,MADY,CACL,QADK,EAEZtF,IAFY,CAEP,IAFO,EAED,MAAMN,EAFL,EAGZM,IAHY,CAGP,OAHO,EAGE,4BAHF,EAIZA,IAJY,CAIP,SAJO,EAII,EAJJ,CAAf,CAHmC,CAQnC;;AACAqrB,MAAAA,IAAI,GAAGvoB,0CAAM,CAACk6D,MAAM,CAACvtD,KAAP,GAAe,CAAf,EAAkB6b,eAAlB,CAAkCjD,IAAnC,CAAb;AACAgD,MAAAA,IAAI,CAACnoB,IAAL,GAAYwB,KAAZ,CAAkBovC,MAAlB,GAA2B,CAA3B;AACD,KAZmC,CAcpC;;;AACAipB,IAAAA,SAAS,CAACnd,SAAV,GAAsB,EAAtB;;AAEA,QAAI10B,GAAG,CAAC7O,aAAJ,KAAsB,SAA1B,EAAqC;AACnC;AACA;AACA,UAAM2gD,OAAM,GAAGl6D,0CAAM,CAACi6D,SAAD,CAAN,CACZz3D,MADY,CACL,QADK,EAEZtF,IAFY,CAEP,IAFO,EAED,MAAMN,EAFL,EAGZM,IAHY,CAGP,OAHO,EAGE,4BAHF,EAIZA,IAJY,CAIP,SAJO,EAII,EAJJ,CAAf,CAHmC,CAQnC;;;AACAqrB,MAAAA,IAAI,GAAGvoB,0CAAM,CAACk6D,OAAM,CAACvtD,KAAP,GAAe,CAAf,EAAkB6b,eAAlB,CAAkCjD,IAAnC,CAAb;AACAgD,MAAAA,IAAI,CAACnoB,IAAL,GAAYwB,KAAZ,CAAkBovC,MAAlB,GAA2B,CAA3B;AACD,KAXD,MAWO;AACLzoB,MAAAA,IAAI,GAAGvoB,0CAAM,CAACi6D,SAAD,CAAb;AACD;;AAED1xC,IAAAA,IAAI,CACD/lB,MADH,CACU,KADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,MAAMN,EAFpB,EAGGM,IAHH,CAGQ,OAHR,EAGiB,kBAAkBkrB,GAAG,CAACzoB,UAHvC,EAIG6C,MAJH,CAIU,KAJV,EAKGtF,IALH,CAKQ,IALR,EAKcN,EALd,EAMGM,IANH,CAMQ,OANR,EAMiB,MANjB,EAOGA,IAPH,CAOQ,OAPR,EAOiB,4BAPjB,EAQGsF,MARH,CAQU,GARV;AASD,GAzCD,MAyCO;AACL;AACA;AACA;AACA,QAAM23D,WAAW,GAAGt2D,QAAQ,CAACmgC,cAAT,CAAwBpnC,EAAxB,CAApB;;AACA,QAAIu9D,WAAJ,EAAiB;AACfA,MAAAA,WAAW,CAACC,MAAZ;AACD,KAPI,CASL;;;AACA,QAAIvgD,QAAJ;;AACA,QAAIuO,GAAG,CAAC7O,aAAJ,KAAsB,SAA1B,EAAqC;AACnCM,MAAAA,QAAO,GAAGhW,QAAQ,CAACogB,aAAT,CAAuB,MAAM,GAAN,GAAYrnB,EAAnC,CAAV;AACD,KAFD,MAEO;AACLid,MAAAA,QAAO,GAAGhW,QAAQ,CAACogB,aAAT,CAAuB,MAAM,GAAN,GAAYrnB,EAAnC,CAAV;AACD;;AACD,QAAIid,QAAJ,EAAa;AACXA,MAAAA,QAAO,CAACugD,MAAR;AACD,KAlBI,CAoBL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA,QAAIhyC,GAAG,CAAC7O,aAAJ,KAAsB,SAA1B,EAAqC;AACnC;AACA;AACA,UAAM2gD,QAAM,GAAGl6D,0CAAM,CAAC,MAAD,CAAN,CACZwC,MADY,CACL,QADK,EAEZtF,IAFY,CAEP,IAFO,EAED,MAAMN,EAFL,EAGZM,IAHY,CAGP,OAHO,EAGE,4BAHF,EAIZA,IAJY,CAIP,SAJO,EAII,EAJJ,CAAf,CAHmC,CAQnC;;;AACAqrB,MAAAA,IAAI,GAAGvoB,0CAAM,CAACk6D,QAAM,CAACvtD,KAAP,GAAe,CAAf,EAAkB6b,eAAlB,CAAkCjD,IAAnC,CAAb;AACAgD,MAAAA,IAAI,CAACnoB,IAAL,GAAYwB,KAAZ,CAAkBovC,MAAlB,GAA2B,CAA3B;AACD,KAXD,MAWO;AACLzoB,MAAAA,IAAI,GAAGvoB,0CAAM,CAAC,MAAD,CAAb;AACD,KA7CI,CA+CL;;;AACAuoB,IAAAA,IAAI,CACD/lB,MADH,CACU,KADV,EAEGtF,IAFH,CAEQ,IAFR,EAEc,MAAMN,EAFpB,EAGE;AAHF,KAIG4F,MAJH,CAIU,KAJV,EAKGtF,IALH,CAKQ,IALR,EAKcN,EALd,EAMGM,IANH,CAMQ,OANR,EAMiB,MANjB,EAOGA,IAPH,CAOQ,OAPR,EAOiB,4BAPjB,EAQGsF,MARH,CAQU,GARV;AASD;;AAEDe,EAAAA,GAAG,GAAGq2D,cAAc,CAACr2D,GAAD,CAApB,CAzHgD,CA2HhD;;AACA,MAAMsW,OAAO,GAAG0O,IAAI,CAACvoB,MAAL,CAAY,OAAOpD,EAAnB,EAAuBwD,IAAvB,EAAhB;AACA,MAAMs5D,SAAS,GAAGr0D,yDAAA,CAAiB9B,GAAjB,EAAsB6kB,GAAtB,CAAlB,CA7HgD,CA+HhD;;AACA,MAAMzrB,GAAG,GAAGkd,OAAO,CAACoP,UAApB;AACA,MAAMA,UAAU,GAAGtsB,GAAG,CAACssB,UAAvB;AAEA,MAAIoxC,UAAU,GAAG,EAAjB,CAnIgD,CAoIhD;;AACA,MAAIjyC,GAAG,CAACtO,QAAJ,KAAiBlZ,SAArB,EAAgC;AAC9By5D,IAAAA,UAAU,gBAASjyC,GAAG,CAACtO,QAAb,CAAV;AACD,GAvI+C,CAwIhD;;;AACA,MAAIsO,GAAG,CAACzoB,UAAJ,KAAmBiB,SAAvB,EAAkC;AAChCy5D,IAAAA,UAAU,+CAAwCjyC,GAAG,CAACzoB,UAA5C,MAAV;AACD,GA3I+C,CA4IhD;;;AACA,MAAIyoB,GAAG,CAACkyC,aAAJ,KAAsB15D,SAA1B,EAAqC;AACnCy5D,IAAAA,UAAU,mDAA4CjyC,GAAG,CAACkyC,aAAhD,MAAV;AACD,GA/I+C,CAiJhD;;;AACA,MAAIZ,SAAS,KAAK,WAAd,IAA6BA,SAAS,KAAK,cAA3C,IAA6DA,SAAS,KAAK,OAA/E,EAAwF;AACtF,QAAMp3D,OAAO,GAAG21D,oFAAA,CAAwB10D,GAAxB,CAAhB;AACA,QAAMvC,UAAU,GAAGonB,GAAG,CAACpnB,UAAJ,IAAkBonB,GAAG,CAACrnB,SAAJ,CAAcC,UAAnD;;AACA,SAAK,IAAMqgB,SAAX,IAAwB/e,OAAxB,EAAiC;AAC/B,UAAItB,UAAJ,EAAgB;AACdq5D,QAAAA,UAAU,iBAAUh5C,SAAV,oBAA6B/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACrC,eADqC,CAA7B,mBAAV;AAGA0lD,QAAAA,UAAU,iBAAUh5C,SAAV,qBAA8B/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACtC,eADsC,CAA9B,mBAAV;AAGD,OAPD,MAOO;AACL0lD,QAAAA,UAAU,iBAAUh5C,SAAV,qBAA8B/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACtC,eADsC,CAA9B,mBAAV;AAGA0lD,QAAAA,UAAU,iBAAUh5C,SAAV,qBAA8B/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACtC,eADsC,CAA9B,mBAAV;AAGA0lD,QAAAA,UAAU,iBAAUh5C,SAAV,wBAAiC/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACzC,eADyC,CAAjC,mBAAV;AAGA0lD,QAAAA,UAAU,iBAAUh5C,SAAV,wBAAiC/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACzC,eADyC,CAAjC,mBAAV;AAGA0lD,QAAAA,UAAU,iBAAUh5C,SAAV,uBAAgC/e,OAAO,CAAC+e,SAAD,CAAP,CAAmByF,MAAnB,CAA0BnS,IAA1B,CACxC,eADwC,CAAhC,mBAAV;;AAGA,YAAIrS,OAAO,CAAC+e,SAAD,CAAP,CAAmB+V,UAAvB,EAAmC;AACjCijC,UAAAA,UAAU,iBAAUh5C,SAAV,sBAA+B/e,OAAO,CAAC+e,SAAD,CAAP,CAAmB+V,UAAnB,CAA8BziB,IAA9B,CACvC,eADuC,CAA/B,mBAAV;AAGD;AACF;AACF;AACF,GApL+C,CAsLhD;;;AAEA,MAAM4lD,MAAM,GAAG,SAATA,MAAS,CAACC,QAAD,EAAW1zC,MAAX;AAAA,WAAsB6wC,iDAAS,CAACD,+CAAO,WAAI8C,QAAJ,cAAgB1zC,MAAhB,OAAR,EAAoCnlB,6CAApC,CAA/B;AAAA,GAAf;;AACA,MAAM84D,KAAK,GAAGF,MAAM,YAAK39D,EAAL,GAAW6sB,oDAAS,CAACiwC,SAAD,EAAYW,UAAZ,EAAwBjyC,GAAG,CAAC3pB,cAA5B,CAApB,CAApB;AAEA,MAAMi8D,MAAM,GAAG72D,QAAQ,CAAC+iC,aAAT,CAAuB,OAAvB,CAAf;AACA8zB,EAAAA,MAAM,CAAC5d,SAAP,GAAmB,WAAIlgD,EAAJ,SAAY69D,KAA/B;AACA99D,EAAAA,GAAG,CAACqsB,YAAJ,CAAiB0xC,MAAjB,EAAyBzxC,UAAzB,EA7LgD,CA+LhD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAI;AACF,YAAQywC,SAAR;AACE,WAAK,UAAL;AACE;AACA;AACAnB,QAAAA,4EAAA,CAAsBh1D,GAAtB,EAA2B3G,EAA3B,EAA+B,KAA/B;AACA;;AACF,WAAK,WAAL;AACEwrB,QAAAA,GAAG,CAACrnB,SAAJ,CAAc+J,mBAAd,GAAoCsd,GAAG,CAACtd,mBAAxC;AACAmtD,QAAAA,iFAAA,CAAqB7vC,GAAG,CAACrnB,SAAzB;AACAk3D,QAAAA,8EAAA,CAAkB10D,GAAlB,EAAuB3G,EAAvB,EAA2B,KAA3B;AACA;;AACF,WAAK,cAAL;AACEwrB,QAAAA,GAAG,CAACrnB,SAAJ,CAAc+J,mBAAd,GAAoCsd,GAAG,CAACtd,mBAAxC;AACAotD,QAAAA,oFAAA,CAAuB9vC,GAAG,CAACrnB,SAA3B;AACAm3D,QAAAA,iFAAA,CAAoB30D,GAApB,EAAyB3G,EAAzB,EAA6B,KAA7B;AACA;;AACF,WAAK,UAAL;AACEwrB,QAAAA,GAAG,CAAC1N,QAAJ,CAAa5P,mBAAb,GAAmCsd,GAAG,CAACtd,mBAAvC;;AACA,YAAIsd,GAAG,CAACuyC,eAAR,EAAyB;AACvB;AACA5B,UAAAA,oFAAA,CAAyBt7D,MAAM,CAACuW,MAAP,CAAcoU,GAAG,CAAC1N,QAAlB,EAA4B0N,GAAG,CAACuyC,eAAhC,CAAzB;AACAnE,UAAAA,OAAO,CAACnkD,KAAR,CACE,4GADF;AAGD,SAND,MAMO;AACL0mD,UAAAA,oFAAA,CAAyB3wC,GAAG,CAAC1N,QAA7B;AACD;;AACDq+C,QAAAA,iFAAA,CAAsBx1D,GAAtB,EAA2B3G,EAA3B;AACA;;AACF,WAAK,OAAL;AACEwrB,QAAAA,GAAG,CAACxL,KAAJ,CAAU9R,mBAAV,GAAgCsd,GAAG,CAACtd,mBAApC;AACAstD,QAAAA,8EAAA,CAAsBhwC,GAAG,CAACxL,KAA1B;AACAw7C,QAAAA,2EAAA,CAAmB70D,GAAnB,EAAwB3G,EAAxB;AACA;;AACF,WAAK,OAAL;AACEwrB,QAAAA,GAAG,CAAC7nB,KAAJ,CAAUuK,mBAAV,GAAgCsd,GAAG,CAACtd,mBAApC;AACA+sD,QAAAA,8EAAA,CAAsBzvC,GAAG,CAAC7nB,KAA1B;AACAs3D,QAAAA,2EAAA,CAAmBt0D,GAAnB,EAAwB3G,EAAxB;AACA;;AACF,WAAK,cAAL;AACEwrB,QAAAA,GAAG,CAAC7nB,KAAJ,CAAUuK,mBAAV,GAAgCsd,GAAG,CAACtd,mBAApC;AACAgtD,QAAAA,iFAAA,CAAwB1vC,GAAG,CAAC7nB,KAA5B;AACAu3D,QAAAA,8EAAA,CAAqBv0D,GAArB,EAA0B3G,EAA1B;AACA;;AACF,WAAK,OAAL;AACEwrB,QAAAA,GAAG,CAAC7nB,KAAJ,CAAUuK,mBAAV,GAAgCsd,GAAG,CAACtd,mBAApC;AACAmuD,QAAAA,8EAAA,CAAsB7wC,GAAG,CAACvd,KAA1B;AACAouD,QAAAA,2EAAA,CAAmB11D,GAAnB,EAAwB3G,EAAxB;AACA;;AACF,WAAK,cAAL;AACEwrB,QAAAA,GAAG,CAAC7nB,KAAJ,CAAUuK,mBAAV,GAAgCsd,GAAG,CAACtd,mBAApC;AACAouD,QAAAA,iFAAA,CAAwB9wC,GAAG,CAACvd,KAA5B;AACAquD,QAAAA,8EAAA,CAAqB31D,GAArB,EAA0B3G,EAA1B;AACA;;AACF,WAAK,MAAL;AACEwrB,QAAAA,GAAG,CAAC7nB,KAAJ,CAAUuK,mBAAV,GAAgCsd,GAAG,CAACtd,mBAApC;AACA2tD,QAAAA,4EAAA,CAAqBrwC,GAAG,CAAC7nB,KAAzB;AACAk4D,QAAAA,yEAAA,CAAkBl1D,GAAlB,EAAuB3G,EAAvB,EAA2Bg7D,mDAA3B;AACA;;AACF,WAAK,KAAL;AACE;AACA;AACAe,QAAAA,uEAAA,CAAiBp1D,GAAjB,EAAsB3G,EAAtB,EAA0Bg7D,mDAA1B;AACA;;AACF,WAAK,IAAL;AACEI,QAAAA,wEAAA,CAAmB5vC,GAAG,CAACtJ,EAAvB;AACAk5C,QAAAA,qEAAA,CAAgBz0D,GAAhB,EAAqB3G,EAArB,EAAyBg7D,mDAAzB;AACA;;AACF,WAAK,SAAL;AACEuB,QAAAA,uFAAA,CAAwB/wC,GAAG,CAAC3K,OAA5B;AACA07C,QAAAA,oFAAA,CAAqB51D,GAArB,EAA0B3G,EAA1B,EAA8Bg7D,mDAA9B;AACA;;AACF,WAAK,aAAL;AACEiB,QAAAA,0FAAA,CAA4BzwC,GAAG,CAAC9I,WAAhC;AACAu5C,QAAAA,uFAAA,CAAyBt1D,GAAzB,EAA8B3G,EAA9B,EAAkCg7D,mDAAlC;AACA;AA3EJ;AA6ED,GA9ED,CA8EE,OAAOxuD,CAAP,EAAU;AACV;AACAiwD,IAAAA,4DAAA,CAAmBz8D,EAAnB,EAAuBg7D,mDAAvB;AACA,UAAMxuD,CAAN;AACD;;AAEDmf,EAAAA,IAAI,CACDvoB,MADH,iBACkBpD,EADlB,UAEGooB,SAFH,CAEa,mBAFb,EAGG9nB,IAHH,CAGQ,OAHR,EAGiB,8BAHjB,EA/RgD,CAoShD;;AACA,MAAIo6D,OAAO,GAAG/uC,IAAI,CAACvoB,MAAL,CAAY,OAAOpD,EAAnB,EAAuBwD,IAAvB,GAA8B08C,SAA5C;AAEAz/C,EAAAA,8CAAA,CAAU,yBAAV,EAAqC+qB,GAAG,CAACtd,mBAAzC;;AACA,MACE,CAAC,CAACsd,GAAG,CAACtd,mBAAL,IAA4Bsd,GAAG,CAACtd,mBAAJ,KAA4B,OAAzD,KACAsd,GAAG,CAACtd,mBAAJ,KAA4B,SAF9B,EAGE;AACAwsD,IAAAA,OAAO,GAAGA,OAAO,CAACjzD,OAAR,CAAgB,wBAAhB,EAA0C,mBAA1C,EAA+D,GAA/D,CAAV;AACD;;AAEDizD,EAAAA,OAAO,GAAG39C,cAAc,CAAC29C,OAAD,CAAxB,CA/SgD,CAiThD;;AACAA,EAAAA,OAAO,GAAGA,OAAO,CAACjzD,OAAR,CAAgB,OAAhB,EAAyB,OAAzB,CAAV;;AAEA,MAAI+jB,GAAG,CAAC7O,aAAJ,KAAsB,SAA1B,EAAqC;AACnC,QAAIqhD,KAAK,GAAGryC,IAAI,CAACvoB,MAAL,CAAY,OAAOpD,EAAP,GAAY,MAAxB,EAAgCwD,IAAhC,EAAZ;AACA,QAAIiB,KAAK,GAAG,MAAZ;AACA,QAAIC,MAAM,GAAG,MAAb;;AACA,QAAIs5D,KAAJ,EAAW;AACT;AACAt5D,MAAAA,MAAM,GAAGs5D,KAAK,CAACC,OAAN,CAAc3+B,OAAd,CAAsB56B,MAAtB,GAA+B,IAAxC;AACD;;AACDg2D,IAAAA,OAAO,mCAA2Bj2D,KAA3B,qBAA2CC,MAA3C,+DAAoGw5D,IAAI,CAC7G,4BAA4BxD,OAA5B,GAAsC,SADuE,CAAxG,oJAAP;AAKD;;AAED,MAAI,OAAO0C,EAAP,KAAc,WAAlB,EAA+B;AAC7B,YAAQN,SAAR;AACE,WAAK,WAAL;AACA,WAAK,cAAL;AACEM,QAAAA,EAAE,CAAC1C,OAAD,EAAU/8B,gFAAV,CAAF;AACA;;AACF,WAAK,OAAL;AACEy/B,QAAAA,EAAE,CAAC1C,OAAD,EAAUvzB,8EAAV,CAAF;AACA;;AACF,WAAK,OAAL;AACA,WAAK,cAAL;AACEi2B,QAAAA,EAAE,CAAC1C,OAAD,EAAUrxC,8EAAV,CAAF;AACA;;AACF;AACE+zC,QAAAA,EAAE,CAAC1C,OAAD,CAAF;AAbJ;AAeD,GAhBD,MAgBO;AACLj6D,IAAAA,8CAAA,CAAU,iBAAV;AACD;;AACD+4D,EAAAA,gEAAe;AAEf,MAAM2E,kBAAkB,GAAG3yC,GAAG,CAAC7O,aAAJ,KAAsB,SAAtB,GAAkC,OAAO3c,EAAzC,GAA8C,OAAOA,EAAhF;AACA,MAAMwD,IAAI,GAAGJ,0CAAM,CAAC+6D,kBAAD,CAAN,CAA2B36D,IAA3B,EAAb;;AACA,MAAIA,IAAI,KAAK,IAAT,IAAiB,OAAOA,IAAI,CAACg6D,MAAZ,KAAuB,UAA5C,EAAwD;AACtDp6D,IAAAA,0CAAM,CAAC+6D,kBAAD,CAAN,CAA2B36D,IAA3B,GAAkCg6D,MAAlC;AACD;;AAED,SAAO9C,OAAP;AACD,CA/VD;;AAiWA,IAAI0D,gBAAgB,GAAG,EAAvB;;AAEA,IAAMh6C,cAAc,GAAG,SAAjBA,cAAiB,CAAU9X,CAAV,EAAa+X,SAAb,EAAwBC,OAAxB,EAAiCxT,IAAjC,EAAuC;AAC5D,MAAI;AACF,QAAIuT,SAAS,KAAKrgB,SAAlB,EAA6B;AAC3BqgB,MAAAA,SAAS,GAAGA,SAAS,CAAC/b,IAAV,EAAZ;;AACA,cAAQgc,OAAR;AACE,aAAK,gBAAL;AACE85C,UAAAA,gBAAgB,GAAG,EAAnB;AACA;;AACF,aAAK,gBAAL;AACEA,UAAAA,gBAAgB,CAACttD,IAAjB,GAAwBuT,SAAS,CAAC0d,WAAV,EAAxB;AACA;;AACF,aAAK,eAAL;AACEq8B,UAAAA,gBAAgB,CAACC,IAAjB,GAAwBv5D,IAAI,CAACsL,KAAL,CAAWiU,SAAX,CAAxB;AACA;;AACF,aAAK,iBAAL;AACEi6C,UAAAA,eAAe,CAAChyD,CAAD,EAAI8xD,gBAAJ,EAAsBttD,IAAtB,CAAf;AACAstD,UAAAA,gBAAgB,GAAG,IAAnB;AACA;AAbJ;AAeD;AACF,GAnBD,CAmBE,OAAO3oD,KAAP,EAAc;AACdhV,IAAAA,8CAAA,4DACsD4jB,SADtD,6BACkFC,OADlF;AAGA7jB,IAAAA,8CAAA,CAAUgV,KAAK,CAAC83B,OAAhB;AACD;AACF,CA1BD;;AA4BA,IAAM+wB,eAAe,GAAG,SAAlBA,eAAkB,CAAUhyD,CAAV,EAAaxJ,SAAb,EAAwBgO,IAAxB,EAA8B;AACpDrQ,EAAAA,8CAAA,0BAA4BqC,SAAS,CAACgO,IAAtC,kBAAyDhO,SAAS,CAACu7D,IAAnE;;AACA,UAAQv7D,SAAS,CAACgO,IAAlB;AACE,SAAK,MAAL;AACA,SAAK,YAAL;AAAmB;AACjB,SAAC,QAAD,EAAWrO,OAAX,CAAmB,UAACymD,IAAD,EAAU;AAC3B,cAAI,OAAOpmD,SAAS,CAACu7D,IAAV,CAAenV,IAAf,CAAP,KAAgC,WAApC,EAAiD;AAC/C,gBAAIp4C,IAAI,KAAK,cAAb,EAA6B;AAC3BA,cAAAA,IAAI,GAAG,WAAP;AACD;;AACDhO,YAAAA,SAAS,CAACu7D,IAAV,CAAevtD,IAAf,IAAuBhO,SAAS,CAACu7D,IAAV,CAAenV,IAAf,CAAvB;AACA,mBAAOpmD,SAAS,CAACu7D,IAAV,CAAenV,IAAf,CAAP;AACD;AACF,SARD;AASAzoD,QAAAA,8CAAA,CAAU,6BAAV,EAAyCqC,SAAS,CAACu7D,IAAnD;AACA3B,QAAAA,0DAAkB,CAAC55D,SAAS,CAACu7D,IAAX,CAAlB;AACA59D,QAAAA,8CAAA,CAAU,oCAAV,EAAgDqC,SAAS,CAACu7D,IAA1D;AACAxB,QAAAA,YAAY,CAAC/5D,SAAS,CAACu7D,IAAX,CAAZ;AACAx6C,QAAAA,iDAAA,CAAuB/gB,SAAS,CAACu7D,IAAjC;AACA;AACD;;AACD,SAAK,MAAL;AACA,SAAK,QAAL;AACE,UAAI/xD,CAAC,IAAIA,CAAC,CAAC,SAAD,CAAV,EAAuB;AACrBA,QAAAA,CAAC,CAACmxC,OAAF,CAAU36C,SAAS,CAACgO,IAAV,KAAmB,MAA7B;AACD;;AACD;;AACF,SAAK,UAAL;AACErQ,MAAAA,6CAAA,CAAS,sBAAT;AACA;;AACF;AACEA,MAAAA,6CAAA,4CACsCqC,SAAS,CAACgO,IADhD,eACyDhM,IAAI,CAACC,SAAL,CACrDjC,SAAS,CAACu7D,IAAV,GAAiBv7D,SAAS,CAACu7D,IAA3B,GAAkC,EADmB,CADzD,UAIEv7D,SAJF;AAMA;AAnCJ;AAqCD,CAvCD;AAyCA;;;AACA,SAASy7D,qBAAT,CAA+Bv8D,IAA/B,EAAqC;AACnC;AAEA;AACAq5D,EAAAA,iFAAA,CAAqBr5D,IAAI,CAACmC,SAA1B;AACAm3D,EAAAA,oFAAA,CAAuBt5D,IAAI,CAACmC,SAA5B;;AACA,MAAI,OAAOnC,IAAI,CAAC,iBAAD,CAAX,KAAmC,WAAvC,EAAoD;AAClDm6D,IAAAA,oFAAA,CAAyB37D,uDAAe,CAACwB,IAAI,CAAC8b,QAAN,EAAgB9b,IAAI,CAAC,iBAAD,CAApB,CAAxC;AACD;;AACDm6D,EAAAA,oFAAA,CAAyBn6D,IAAI,CAAC8b,QAA9B;AACA09C,EAAAA,8EAAA,CAAsBx5D,IAAI,CAACge,KAA3B;AACAi7C,EAAAA,8EAAA,CAAsBj5D,IAAI,CAAC2B,KAA3B;AACA04D,EAAAA,8EAAA,CAAsBr6D,IAAI,CAACiM,KAA3B;AACAquD,EAAAA,iFAAA,CAAwBt6D,IAAI,CAACiM,KAA7B;AACA4tD,EAAAA,4EAAA,CAAqB75D,IAAI,CAAC2B,KAA1B,EAdmC,CAenC;;AACAy3D,EAAAA,wEAAA,CAAmBp5D,IAAI,CAACkgB,EAAxB;AACAq6C,EAAAA,uFAAA,CAAwBv6D,IAAI,CAAC6e,OAA7B;AACAo7C,EAAAA,0FAAA,CAA4Bj6D,IAAI,CAAC0gB,WAAjC;AACA+5C,EAAAA,+DAAA,CAAsBz6D,IAAI,CAAC2B,KAA3B;AACD;AAED;;;AACA,SAASk5D,YAAT,GAAwB,CACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;AACA,SAASjC,UAAT,CAAoBt4D,OAApB,EAA6B;AAC3B;AAEA;AACA,MAAIA,OAAO,IAAIA,OAAO,CAACS,UAAvB,EAAmC;AACjC,QAAI,CAACT,OAAO,CAACT,cAAb,EAA6B;AAC3BS,MAAAA,OAAO,CAACT,cAAR,GAAyB;AAAEkB,QAAAA,UAAU,EAAET,OAAO,CAACS;AAAtB,OAAzB;AACD,KAFD,MAEO;AACL,UAAI,CAACT,OAAO,CAACT,cAAR,CAAuBkB,UAA5B,EAAwC;AACtCT,QAAAA,OAAO,CAACT,cAAR,GAAyB;AAAEkB,UAAAA,UAAU,EAAET,OAAO,CAACS;AAAtB,SAAzB;AACD;AACF;AACF,GAZ0B,CAa3B;;;AACA8gB,EAAAA,4DAAA,CAAkCvhB,OAAlC;;AAEA,MAAIA,OAAO,IAAIA,OAAO,CAAC5B,KAAnB,IAA4BA,gDAAK,CAAC4B,OAAO,CAAC5B,KAAT,CAArC,EAAsD;AACpD;AACA4B,IAAAA,OAAO,CAACT,cAAR,GAAyBnB,gDAAK,CAAC4B,OAAO,CAAC5B,KAAT,CAAL,CAAqBoB,iBAArB,CAAuCQ,OAAO,CAACT,cAA/C,CAAzB;AACD,GAHD,MAGO;AACL,QAAIS,OAAJ,EAAaA,OAAO,CAACT,cAAR,GAAyBnB,6EAAA,CAAgC4B,OAAO,CAACT,cAAxC,CAAzB;AACd;;AAED,MAAMlB,MAAM,GACV,QAAO2B,OAAP,MAAmB,QAAnB,GAA8BuhB,kDAAA,CAAwBvhB,OAAxB,CAA9B,GAAiEuhB,kDAAA,EADnE;AAGA06C,EAAAA,qBAAqB,CAAC59D,MAAD,CAArB;AACAg5D,EAAAA,oDAAW,CAACh5D,MAAM,CAAC0c,QAAR,CAAX,CA3B2B,CA4B3B;AACD;;AAED,IAAM0G,UAAU,GAAGljB,MAAM,CAACC,MAAP,CAAc;AAC/BiQ,EAAAA,MAAM,EAANA,MAD+B;AAE/BX,EAAAA,KAAK,EAALA,KAF+B;AAG/BgU,EAAAA,cAAc,EAAdA,cAH+B;AAI/Bw2C,EAAAA,UAAU,EAAVA,UAJ+B;AAK/BiC,EAAAA,YAAY,EAAZA,YAL+B;AAM/Bx6D,EAAAA,SAAS,EAAEwhB,8CANoB;AAO/BzhB,EAAAA,SAAS,EAAEyhB,8CAPoB;AAQ/B1hB,EAAAA,aAAa,EAAE0hB,kDARgB;AAS/B3hB,EAAAA,gBAAgB,EAAE2hB,qDATa;AAU/B5gB,EAAAA,KAAK,EAAE,iBAAM;AACX;AACA4gB,IAAAA,0CAAA,GAFW,CAGX;AACA;AACD,GAf8B;AAgB/B46C,EAAAA,WAAW,EAAE,uBAAM;AACjB56C,IAAAA,0CAAA,CAAgBA,kDAAhB;AACA06C,IAAAA,qBAAqB,CAAC16C,8CAAA,EAAD,CAArB;AACD,GAnB8B;AAoB/BjjB,EAAAA,aAAa,EAAEijB,kDAAuBjjB;AApBP,CAAd,CAAnB;AAuBA+4D,oDAAW,CAAC91C,8CAAA,GAAsBxG,QAAvB,CAAX;AACAwG,0CAAA,CAAgBA,8CAAA,EAAhB;AAEA,iEAAeE,UAAf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM66C,MAAM,GAAG;AACbz6D,EAAAA,SAAS,EAATA,kEADa;AAEb,kBAAgBA,kEAFH;AAGb2Z,EAAAA,QAAQ,EAARA,iEAHa;AAIbkC,EAAAA,KAAK,EAALA,8DAJa;AAKb0+C,EAAAA,YAAY,EAAZA,8DALa;AAMb,qBAAmBA,8DANN;AAOb/6D,EAAAA,KAAK,EAAE+6D,8DAPM;AAQbC,EAAAA,YAAY,EAAZA,8DARa;AASb1wD,EAAAA,KAAK,EAAE0wD,8DATM;AAUbx7C,EAAAA,QAAQ,EAARA,4DAVa;AAWb5c,EAAAA,IAAI,EAAJA,6DAXa;AAYbkc,EAAAA,GAAG,EAAHA,4DAZa;AAabP,EAAAA,EAAE,EAAFA,2DAba;AAcbrB,EAAAA,OAAO,EAAPA,qEAda;AAeb6B,EAAAA,WAAW,EAAXA,qEAAWA;AAfE,CAAf;AAkBO,IAAMm8C,kBAAkB,GAAG,SAArBA,kBAAqB,CAACn+D,KAAD,EAAQo+D,aAAR;AAAA,SAA0Bp+D,KAAK,CAACq+D,UAAN,CAAiBD,aAAjB,CAA1B;AAAA,CAA3B;;AAEP,IAAMjyC,SAAS,GAAG,SAAZA,SAAY,CAAC/b,IAAD,EAAO2sD,UAAP,EAAmBn7D,OAAnB,EAA+B;AAC/C;AACA,wCACiBA,OAAO,CAACS,UADzB,+BAEeT,OAAO,CAACsd,QAFvB,0BAGUtd,OAAO,CAACu9B,SAHlB,iGASUv9B,OAAO,CAAC08D,aATlB,gDAYU18D,OAAO,CAAC28D,cAZlB,4BAaY38D,OAAO,CAAC28D,cAbpB,6UAkCU38D,OAAO,CAAC2qB,SAlClB,4BAmCY3qB,OAAO,CAAC2qB,SAnCpB,oDAsCY3qB,OAAO,CAAC2qB,SAtCpB,iDA0CiB3qB,OAAO,CAACS,UA1CzB,+BA2CeT,OAAO,CAACsd,QA3CvB,yBA8CEg/C,MAAM,CAAC9tD,IAAD,CAAN,CAAaxO,OAAb,CA9CF,mBAgDEm7D,UAhDF;AAkDD,CApDD;;AAsDA,iEAAe5wC,SAAf;;;;;;;;;;;;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AAEA,iEAAe;AACb0yC,EAAAA,IAAI,EAAE;AACJz9D,IAAAA,iBAAiB,EAAEo9D,0DAAkBA;AADjC,GADO;AAIbM,EAAAA,IAAI,EAAE;AACJ19D,IAAAA,iBAAiB,EAAEq9D,0DAAkBA;AADjC,GAJO;AAObX,EAAAA,OAAO,EAAE;AACP18D,IAAAA,iBAAiB,EAAEs9D,6DAAqBA;AADjC,GAPI;AAUbK,EAAAA,MAAM,EAAE;AACN39D,IAAAA,iBAAiB,EAAEu9D,4DAAoBA;AADjC,GAVK;AAabK,EAAAA,OAAO,EAAE;AACP59D,IAAAA,iBAAiB,EAAEw9D,6DAAqBA;AADjC;AAbI,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;;IACMU;AACJ,mBAAc;AAAA;;AACZ;;AACA;AACJ;AACA;AACA;AACI,SAAKlL,UAAL,GAAkB,SAAlB;AACA,SAAK13C,QAAL,GAAgB,KAAhB,CAPY,CASZ;AACA;;AACA,SAAKg2B,YAAL,GAAoB,SAApB,CAXY,CAYZ;AACA;;AAEA,SAAK8X,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,MAArB,CAhBY,CAkBZ;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;AAEA,SAAKpoD,UAAL,GAAkB,4CAAlB;AACA,SAAK6c,QAAL,GAAgB,MAAhB,CAlCY,CAmCZ;AACD;;;;WACD,wBAAe;AACb;;AAEA;AACA,WAAKqgD,gBAAL,GAAwB,KAAKA,gBAAL,KAA0B,KAAK7iD,QAAL,GAAgB,MAAhB,GAAyB,MAAnD,CAAxB,CAJa,CAIuE;;AACpF,WAAK8iD,cAAL,GAAsB,KAAKA,cAAL,IAAuBL,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAnD;AACA,WAAK6tB,aAAL,GAAqB,KAAKA,aAAL,IAAsB8mC,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE;AAAb,OAApB,CAAjD;AAEA,WAAK+yC,kBAAL,GAA0B,KAAKA,kBAAL,IAA2BJ,wDAAQ,CAAC,KAAK3sB,YAAN,EAAoB,KAAKh2B,QAAzB,CAA7D;AACA,WAAKgjD,oBAAL,GACE,KAAKA,oBAAL,IAA6BL,wDAAQ,CAAC,KAAKG,cAAN,EAAsB,KAAK9iD,QAA3B,CADvC;AAEA,WAAKijD,mBAAL,GACE,KAAKA,mBAAL,IAA4BN,wDAAQ,CAAC,KAAKhnC,aAAN,EAAqB,KAAK3b,QAA1B,CADtC;AAEA,WAAK6tC,eAAL,GAAuB,KAAKA,eAAL,IAAwB8U,wDAAQ,CAAC,KAAK7U,YAAN,EAAoB,KAAK9tC,QAAzB,CAAvD;AACA,WAAK8tC,YAAL,GAAoB,KAAKA,YAAL,IAAqB,SAAzC;AACA,WAAKC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,MAA3C;AAEA,WAAKmV,kBAAL,GAA0B,KAAKA,kBAAL,IAA2BR,8CAAM,CAAC,KAAKI,cAAN,CAA3D;AACA,WAAKjL,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B6K,8CAAM,CAAC,KAAK/mC,aAAN,CAAzD;AACA,WAAK9L,SAAL,GAAiB,KAAKA,SAAL,IAAkB6yC,8CAAM,CAAC,KAAKhL,UAAN,CAAzC;AACA,WAAKj1B,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKogC,gBAAxC;AAEA;;AACA,WAAKM,OAAL,GAAe,KAAKA,OAAL,IAAgB,KAAKntB,YAApC;AACA,WAAKpmB,OAAL,GAAe,KAAKA,OAAL,IAAgB,KAAKomB,YAApC;AACA,WAAKtmB,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAKqzC,kBAA1C;AACA,WAAKlgC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAKlH,aAA1C;AACA,WAAKmH,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKmgC,mBAAhD;AACA,WAAKG,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKvzC,SAAtD;AACA,WAAK6S,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAAKm1B,iBAA1C;AACA,WAAKj1B,mBAAL,GACE,KAAKA,mBAAL,KACC,KAAK5iB,QAAL,GAAgBuiD,8CAAM,CAAC,KAAKO,cAAN,EAAsB,EAAtB,CAAtB,GAAkD,KAAKA,cADxD,CADF;AAGA,WAAKtgC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKqgC,gBAAhD;AACA;AAEA;;AACA,WAAK3V,WAAL,GAAmB,KAAKA,WAAL,IAAoB,KAAK6V,kBAA5C;AACA,WAAK5V,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKv9B,OAAtC;AACA,WAAKw9B,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKyV,gBAAlD;AACA,WAAKxV,cAAL,GAAsB,KAAKA,cAAL,IAAuB,MAA7C;AACA,WAAKK,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKP,QAAtD;AACA,WAAKG,WAAL,GAAmB,KAAKA,WAAL,IAAoB,KAAK7qB,SAA5C;AACA,WAAK+qB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK/qB,SAApD;AACA,WAAKgrB,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKP,WAA5D;AACA,WAAKS,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKP,cAAlD;AACA,WAAKQ,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKR,cAAhD;AACA,WAAKa,qBAAL,GAA6B,KAAKA,qBAAL,IAA8BsU,8CAAM,CAAC,KAAKO,cAAN,EAAsB,EAAtB,CAAjE;AACA,WAAK9U,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAK8U,cAA1D;AACA,WAAKvV,mBAAL,GAA2B,KAAKA,mBAAL,IAA4BmV,8CAAM,CAAC,KAAK7yC,SAAN,CAA7D;AAEA;;AAEA,WAAKue,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKzS,aAApD;AACA,WAAK2S,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,OAArD;AACA,WAAKF,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK00B,cAApD;AACA,WAAKz0B,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAK2H,YAAtD;AACA,WAAK7H,eAAL,GAAuB,KAAKA,eAAL,IAAwB,SAA/C;AACA,WAAKW,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKi0B,kBAApD;AACA,WAAKl0B,YAAL,GAAoB,KAAKA,YAAL,IAAqB,KAAKmH,YAA9C;AACA,WAAK/G,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK+G,YAAhE;AACA,WAAKhH,kBAAL,GAA0B,KAAKA,kBAAL,IAA2BwzB,+CAAO,CAAC,KAAKxsB,YAAN,EAAoB,EAApB,CAA5D;AACA,WAAKxH,SAAL,GAAiB,KAAKA,SAAL,IAAkB,WAAnC;AACA,WAAKW,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,WAAjD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,MAAvD;AACA,WAAKE,eAAL,GAAuB,KAAKA,eAAL,IAAwB,SAA/C;AACA,WAAKC,YAAL,GAAoB,KAAKA,YAAL,IAAqB,KAAzC;AACA,WAAKZ,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKG,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKnM,SAAhD;AACA,WAAKsM,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKtM,SAA9D;AACA,WAAK4gC,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAK5gC,SAA1D;AACA,WAAKmM,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKi0B,gBAAhD;AACA,WAAKn0B,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKjM,SAAxD;AACA,WAAKkM,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,SAA7D;AAEA;;AACA,WAAK6oB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKn1B,SAA9D;AACA;;AACA,WAAKg1B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAK4K,gBAArE;AAEA,WAAK5K,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKroC,OAAtC;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAK/7B,aAA/E;AACA,WAAKy8B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKz8B,aAAhD;AACA,WAAKw8B,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKvoC,OAAtE;AACA,WAAK0zC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK5zC,UAApD;AACA,WAAKqoC,kBAAL,GAA0B,KAAKroC,UAA/B;AACA,WAAKkyC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjmC,aAAhD;AACA,WAAKkmC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKhK,iBAAlD;AACA,WAAKL,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA,WAAKioC,iBAAL,GAAyB,KAAKjoC,SAA9B;AAEA;;AACA,WAAKF,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAK8S,SAAxC;AAEA;;AACA,WAAK63B,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKtkB,YAAxC;AACA,WAAKukB,SAAL,GAAiB,KAAKA,SAAL,IAAkB,KAAKuI,cAAxC;AACA,WAAKtI,SAAL,GAAiB,KAAKA,SAAL,IAAkBiI,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAzC;AACA,WAAK2sD,SAAL,GAAiB,KAAKA,SAAL,IAAkBgI,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAzC;AACA,WAAK4sD,SAAL,GAAiB,KAAKA,SAAL,IAAkB+H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAzC;AACA,WAAK6sD,SAAL,GAAiB,KAAKA,SAAL,IAAkB8H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAzC;AACA,WAAK8sD,SAAL,GAAiB,KAAKA,SAAL,IAAkB6H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAzC;AACA,WAAK+sD,SAAL,GAAiB,KAAKA,SAAL,IAAkB4H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAzC;AAEA;;AACA,WAAKupC,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKrB,YAA9B;AACA,WAAKsB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKwrB,cAA9B;AACA,WAAKvrB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK5b,aAA9B;AACA,WAAK6b,IAAL,GAAY,KAAKA,IAAL,IAAairB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEhmB,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKynB,IAAL,GAAY,KAAKA,IAAL,IAAagrB,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAE9yC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAA/B;AACA,WAAK0nB,IAAL,GAAY,KAAKA,IAAL,IAAa+qB,8CAAM,CAAC,KAAK9mC,aAAN,EAAqB;AAAE3L,QAAAA,CAAC,EAAE,CAAC;AAAN,OAArB,CAA/B;AACA,WAAK2nB,IAAL,GAAY,KAAKA,IAAL,IAAa8qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK4nB,IAAL,GAAY,KAAKA,IAAL,IAAa6qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK6nB,IAAL,GAAY,KAAKA,IAAL,IAAa4qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE;AAAb,OAApB,CAA/B;AACA,WAAK8nB,KAAL,GAAa,KAAKA,KAAL,IAAc2qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK+nB,KAAL,GAAa,KAAKA,KAAL,IAAc0qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKgoB,KAAL,GAAa,KAAKA,KAAL,IAAcyqB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK6oB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKpK,iBAAxD;AACA,WAAKsK,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKtW,SAA5D;AACA,WAAKyW,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKvK,iBAA1D;AACA,WAAKgK,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK/H,YAAhE;AACA,WAAKgI,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAK+kB,kBAAlE;AACA,WAAK9kB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK8kB,kBAAhE;AACA,WAAK7kB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAK2kB,gBAA9D;AACA,WAAK/kB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjuB,SAAhD;AACA,WAAKsuB,uBAAL,GACE,KAAKA,uBAAL,KACC,KAAKn+B,QAAL,GAAgBuiD,8CAAM,CAAC,KAAKO,cAAN,EAAsB,EAAtB,CAAtB,GAAkD,KAAKA,cADxD,CADF;AAGA,WAAK1kB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKgP,cAA1D;AAEA;;AACA,WAAKmW,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKvtB,YAA9B;AACA,WAAKwtB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKV,cAA9B;AACA,WAAKW,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK9nC,aAA9B;AACA,WAAK+nC,IAAL,GAAY,KAAKA,IAAL,IAAajB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK61D,IAAL,GAAY,KAAKA,IAAL,IAAalB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK81D,IAAL,GAAY,KAAKA,IAAL,IAAanB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK+1D,IAAL,GAAY,KAAKA,IAAL,IAAapB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKg2D,IAAL,GAAY,KAAKA,IAAL,IAAarB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;;AACA,UAAI,KAAKkS,QAAT,EAAmB;AACjB,aAAKujD,IAAL,GAAYf,+CAAO,CAAC,KAAKe,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYhB,+CAAO,CAAC,KAAKgB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYjB,+CAAO,CAAC,KAAKiB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYlB,+CAAO,CAAC,KAAKkB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYnB,+CAAO,CAAC,KAAKmB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYpB,+CAAO,CAAC,KAAKoB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYrB,+CAAO,CAAC,KAAKqB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYtB,+CAAO,CAAC,KAAKsB,IAAN,EAAY,EAAZ,CAAnB;AACD,OATD,MASO;AACL,aAAKP,IAAL,GAAYhB,8CAAM,CAAC,KAAKgB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYjB,8CAAM,CAAC,KAAKiB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYlB,8CAAM,CAAC,KAAKkB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYnB,8CAAM,CAAC,KAAKmB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYpB,8CAAM,CAAC,KAAKoB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYrB,8CAAM,CAAC,KAAKqB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYtB,8CAAM,CAAC,KAAKsB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYvB,8CAAM,CAAC,KAAKuB,IAAN,EAAY,EAAZ,CAAlB;AACD;;AACD,WAAKC,OAAL,GAAe,KAAKA,OAAL,IAAgBrB,8CAAM,CAAC,KAAKa,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBtB,8CAAM,CAAC,KAAKc,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBvB,8CAAM,CAAC,KAAKe,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBxB,8CAAM,CAAC,KAAKgB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBzB,8CAAM,CAAC,KAAKiB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB1B,8CAAM,CAAC,KAAKkB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB3B,8CAAM,CAAC,KAAKmB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB5B,8CAAM,CAAC,KAAKoB,IAAN,CAArC;AACA,WAAKS,gBAAL,GACE,KAAKA,gBAAL,KAA0B,KAAKvkD,QAAL,GAAgB,OAAhB,GAA0B,KAAK2tC,cAAzD,CADF;AAEA,WAAK6W,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKD,gBAApD;AACA,WAAKE,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKF,gBAApD;AACA,WAAKG,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKH,gBAApD;AACA,WAAKI,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKJ,gBAApD;AACA,WAAKK,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKL,gBAApD;AACA,WAAKM,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKN,gBAApD;AACA,WAAKO,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKP,gBAApD;AACA,WAAKQ,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKR,gBAApD;AAEA,WAAK1uB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKgtB,gBAAhD;AACA,WAAK/sB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKE,YAA1D;AACA,WAAKD,cAAL,GAAsB,KAAKivB,SAAL,IAAkB,KAAKjC,kBAA7C;AACA,WAAKptB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKutB,kBAAtD;AACA,WAAKttB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKktB,cAAhE;AACD;;;WACD,mBAAUmC,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM//D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY8/D,SAAZ,CAAb,CAPmB,CASnB;;AACA9/D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAKo2C,YAAL,GAfmB,CAgBnB;;AACA//D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAMpqB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACygE,aAAD,EAAmB;AAClD,MAAM7hE,KAAK,GAAG,IAAIs/D,KAAJ,EAAd;AACAt/D,EAAAA,KAAK,CAAC8hE,SAAN,CAAgBD,aAAhB;AACA,SAAO7hE,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;AChQP;AACA;;IACMs/D;AACJ,mBAAc;AAAA;;AACZ,SAAKlL,UAAL,GAAkB,MAAlB;AACA,SAAK1hB,YAAL,GAAoB,SAApB;AACA,SAAK8sB,cAAL,GAAsBN,+CAAO,CAAC,KAAKxsB,YAAN,EAAoB,EAApB,CAA7B;AAEA,SAAKra,aAAL,GAAqB8mC,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,MAAAA,CAAC,EAAE,CAAC;AAAN,KAApB,CAA3B;AACA,SAAKi1D,kBAAL,GAA0BL,8CAAM,CAAC,KAAKhL,UAAN,CAAhC;AACA,SAAKsL,oBAAL,GAA4BL,wDAAQ,CAAC,KAAKG,cAAN,EAAsB,KAAK9iD,QAA3B,CAApC;AACA,SAAKijD,mBAAL,GAA2BN,wDAAQ,CAAC,KAAKhnC,aAAN,EAAqB,KAAK3b,QAA1B,CAAnC;AACA,SAAK6iD,gBAAL,GAAwBH,8CAAM,CAAC,KAAK1sB,YAAN,CAA9B;AACA,SAAKktB,kBAAL,GAA0BR,8CAAM,CAAC,KAAKI,cAAN,CAAhC;AACA,SAAKjL,iBAAL,GAAyB6K,8CAAM,CAAC,KAAK/mC,aAAN,CAA/B;AACA,SAAK9L,SAAL,GAAiB6yC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AACA,SAAKj1B,SAAL,GAAiBigC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AAEA,SAAK9nC,OAAL,GAAe,SAAf;AACA,SAAK01C,SAAL,GAAiB,YAAjB;AACA,SAAKC,iBAAL,GAAyB,WAAzB;AACA,SAAKC,aAAL,GAAqBhD,+CAAO,CAACE,8CAAM,CAAC,SAAD,CAAP,EAAoB,EAApB,CAA5B;AACA,SAAK7yC,SAAL,GAAiB,YAAjB;AACA,SAAK41C,OAAL,GAAe,SAAf;AACA,SAAK1iC,OAAL,GAAesiC,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,CAAnB;AACA,SAAK1iC,cAAL,GAAsB,YAAtB;AACA,SAAKh9B,UAAL,GAAkB,4CAAlB;AACA,SAAK6c,QAAL,GAAgB,MAAhB;AACA,SAAKkjD,eAAL,GAAuB,SAAvB;AACA,SAAKjjC,SAAL,GAAiB,MAAjB;AACA;;AAEA,SAAK0gC,OAAL,GAAe,YAAf;AACA,SAAKzzC,UAAL,GAAkB,YAAlB;AACA,SAAKmT,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKsgC,gBAAL,GAAwB,YAAxB;AACA,SAAK1gC,UAAL,GAAkB,SAAlB;AACA,SAAKE,mBAAL,GAA2B,YAA3B;AAEA;;AAEA,SAAKsqB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,WAAL,GAAmB,YAAnB;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAKnf,eAAL,GAAuBm0B,8CAAM,CAAC,SAAD,EAAY,EAAZ,CAA7B;AACA,SAAKj0B,kBAAL,GAA0B,YAA1B;AACA,SAAKD,gBAAL,GAAwB,SAAxB;AACA,SAAKS,eAAL,GAAuBu2B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,EAAhB,CAA3B;AACA,SAAKx2B,YAAL,GAAoB,YAApB;AACA,SAAKD,aAAL,GAAqB,YAArB;AACA,SAAKy0B,kBAAL,GAA0B,YAA1B;AACA,SAAKt0B,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6Bo2B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,EAAhB,CAAjC;AACA,SAAKr2B,kBAAL,GAA0B,SAA1B;AACA,SAAKR,SAAL,GAAiB,YAAjB;AACA,SAAKW,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,MAA3B;AACA,SAAKE,eAAL,GAAuB,SAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKX,iBAAL,GAAyB,YAAzB;AACA,SAAKD,cAAL,GAAsB,SAAtB;AAEA;;AACA,SAAKk3B,UAAL,GAAkB,YAAlB;AAEA,SAAK/D,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,MAAtB;AACD;;;;WACD,wBAAe;AACb,WAAKyD,SAAL,GAAiB9C,+CAAO,CAAC,KAAK5yC,OAAN,EAAe,EAAf,CAAxB;AACA,WAAKC,SAAL,GAAiB,KAAK01C,iBAAtB;AACA,WAAK5iC,cAAL,GAAsB,KAAK4iC,iBAA3B;AACA;;AAEA,WAAKpC,OAAL,GAAe,KAAKvzC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK+1C,OAAvB;AACA,WAAK5iC,UAAL,GAAkB,KAAKyiC,SAAvB;AACA,WAAKxiC,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKqgC,gBAAL,GAAwB,KAAKvzC,SAA7B;AACA,WAAK+S,mBAAL,GAA2B4/B,+CAAO,CAAC,KAAKkD,eAAN,EAAuB,EAAvB,CAAlC;AAEA;;AAEA,WAAKxY,WAAL,GAAmB,KAAKuY,OAAxB;AACA,WAAKtY,QAAL,GAAgB,KAAKv9B,OAArB;AACA,WAAKw9B,cAAL,GAAsB,KAAKmY,iBAA3B;AACA,WAAKlY,cAAL,GAAsB,KAAKkY,iBAA3B;AACA,WAAKjY,WAAL,GAAmB,KAAKiY,iBAAxB;AACA,WAAK/X,eAAL,GAAuB,KAAK+X,iBAA5B;AACA,WAAK7X,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKM,mBAAL,GAA2B,KAAKP,WAAhC;AACA,WAAKS,cAAL,GAAsB,KAAK4X,iBAA3B;AACA,WAAK3X,aAAL,GAAqB,KAAK2X,iBAA1B;AACA,WAAK1X,eAAL,GAAuB,KAAKmV,oBAA5B;AACA,WAAKlV,YAAL,GAAoB,KAAKwX,SAAzB;AACA,WAAKvX,aAAL,GAAqB,KAAKmV,kBAA1B;AACA,WAAKjV,qBAAL,GAA6B,KAAKwX,OAAlC;AACA,WAAKzX,kBAAL,GAA0B,KAAKsX,SAA/B;AAEA;;AAEA,WAAKh3B,kBAAL,GAA0B,KAAKopB,UAA/B;AACA,WAAK7oB,YAAL,GAAoB2zB,+CAAO,CAAC,KAAK5yC,OAAN,EAAe,EAAf,CAA3B;AACA,WAAKgf,aAAL,GAAqB,KAAK42B,aAA1B;AACA,WAAKnC,kBAAL,GAA0B,KAAKkC,iBAA/B;AACA,WAAKx2B,oBAAL,GAA4B,KAAKs0B,kBAAjC;AACA,WAAK70B,SAAL,GAAiB,KAAK+2B,iBAAtB;AACA,WAAKp2B,gBAAL,GAAwB,KAAKo2B,iBAA7B;AACA,WAAK72B,iBAAL,GAAyB,KAAK82B,aAA9B;AAEA;;AACA,WAAKhO,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKn1B,SAA9D;AACA,WAAKg1B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAK4K,gBAArE;AACA,WAAK5K,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKroC,OAAtC;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAK/7B,aAA/E;AACA,WAAKy8B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,MAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKvoC,OAAtE;AACA,WAAK0zC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK5zC,UAApD;AACA,WAAKqoC,kBAAL,GAA0B,KAAKgL,kBAA/B;AACA,WAAKjL,iBAAL,GAAyB,SAAzB,CArDa,CAqDuB;;AAEpC,WAAK8J,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjmC,aAAhD;AACA,WAAKkmC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKhK,iBAAlD;AAEA,WAAKyC,SAAL,GAAiB,KAAKtkB,YAAtB;AACA,WAAKukB,SAAL,GAAiB,KAAKuI,cAAtB;AACA,WAAKtI,SAAL,GAAiBiI,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK2sD,SAAL,GAAiBgI,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAK4sD,SAAL,GAAiB+H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK6sD,SAAL,GAAiB8H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK8sD,SAAL,GAAiB6H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK+sD,SAAL,GAAiB4H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AAEA;;AACA,WAAKupC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,SAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,SAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,SAA3B;AACA,WAAKa,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKpK,iBAAxD;AACA,WAAKsK,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKtW,SAA5D;AACA,WAAKyW,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKvK,iBAA1D;AACA,WAAKgK,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKjpB,SAAL,GAAiB,KAAKkzC,gBAAtB;AAEA;;AACA,WAAK9kB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK/H,YAAhE;AACA,WAAKgI,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAK+kB,kBAAlE;AACA,WAAK9kB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK8kB,kBAAhE;AACA,WAAK7kB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAK2kB,gBAA9D;AACA,WAAK/kB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjuB,SAAhD;AACA,WAAKsuB,uBAAL,GACE,KAAKA,uBAAL,KACC,KAAKn+B,QAAL,GAAgBuiD,8CAAM,CAAC,KAAKO,cAAN,EAAsB,EAAtB,CAAtB,GAAkD,KAAKA,cADxD,CADF;AAGA,WAAK1kB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKgP,cAA1D;AAEA;;AACA,WAAKmW,IAAL,GAAYf,+CAAO,CAAC,KAAKM,cAAN,EAAsB,EAAtB,CAAnB;AACA,WAAKU,IAAL,GAAYhB,+CAAO,CAAC,KAAKlrB,IAAL,IAAa,KAAKwrB,cAAnB,EAAmC,EAAnC,CAAnB;AACA,WAAKW,IAAL,GAAYjB,+CAAO,CAAC,KAAKjrB,IAAL,IAAa,KAAK5b,aAAnB,EAAkC,EAAlC,CAAnB;AACA,WAAK+nC,IAAL,GAAYlB,+CAAO,CAAC,KAAKhrB,IAAL,IAAairB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAApB,EAAqD,EAArD,CAAnB;AACA,WAAK61D,IAAL,GAAYnB,+CAAO,CAAC,KAAK/qB,IAAL,IAAagrB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAApB,EAAqD,EAArD,CAAnB;AACA,WAAK81D,IAAL,GAAYpB,+CAAO,CAAC,KAAK9qB,IAAL,IAAa+qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAApB,EAAqD,EAArD,CAAnB;AACA,WAAK+1D,IAAL,GAAYrB,+CAAO,CAAC,KAAK7qB,IAAL,IAAa8qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAApB,EAAqD,EAArD,CAAnB;AACA,WAAKg2D,IAAL,GAAYtB,+CAAO,CAAC,KAAK5qB,IAAL,IAAa6qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAApB,EAAsD,EAAtD,CAAnB;AACA,WAAKi2D,OAAL,GAAe,KAAKA,OAAL,IAAgBrB,8CAAM,CAAC,KAAKa,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBtB,8CAAM,CAAC,KAAKc,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBvB,8CAAM,CAAC,KAAKe,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBxB,8CAAM,CAAC,KAAKgB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBzB,8CAAM,CAAC,KAAKiB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB1B,8CAAM,CAAC,KAAKkB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB3B,8CAAM,CAAC,KAAKmB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB5B,8CAAM,CAAC,KAAKoB,IAAN,CAArC;AAEA,WAAKjuB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKgtB,gBAAhD;AACA,WAAK/sB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKE,YAA1D;AACA,WAAKD,cAAL,GAAsB,KAAKivB,SAAL,IAAkB,KAAKjC,kBAA7C;AACA,WAAKptB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKutB,kBAAtD;AACA,WAAKttB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKktB,cAAhE;AACD;;;WACD,mBAAUmC,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM//D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY8/D,SAAZ,CAAb,CAPmB,CASnB;;AACA9/D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAKo2C,YAAL,GAfmB,CAgBnB;;AACA//D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAMpqB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACygE,aAAD,EAAmB;AAClD,MAAM7hE,KAAK,GAAG,IAAIs/D,KAAJ,EAAd;AACAt/D,EAAAA,KAAK,CAAC8hE,SAAN,CAAgBD,aAAhB;AACA,SAAO7hE,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;AC7OP;AACA;;IAEMs/D;AACJ,mBAAc;AAAA;;AACZ;AACA,SAAKlL,UAAL,GAAkB,SAAlB;AACA,SAAK1hB,YAAL,GAAoB,SAApB;AAEA,SAAK8sB,cAAL,GAAsBL,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,MAAAA,CAAC,EAAE;AAAL,KAApB,CAA5B;AACA,SAAKg1D,cAAL,GAAsB,SAAtB;AACA,SAAKnnC,aAAL,GAAqB8mC,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,MAAAA,CAAC,EAAE,CAAC;AAAN,KAApB,CAA3B;AACA,SAAKi1D,kBAAL,GAA0BJ,wDAAQ,CAAC,KAAK3sB,YAAN,EAAoB,KAAKh2B,QAAzB,CAAlC;AACA,SAAKgjD,oBAAL,GAA4BL,wDAAQ,CAAC,KAAKG,cAAN,EAAsB,KAAK9iD,QAA3B,CAApC;AACA,SAAKijD,mBAAL,GAA2BN,wDAAQ,CAAC,KAAKhnC,aAAN,EAAqB,KAAK3b,QAA1B,CAAnC,CAVY,CAWZ;;AAEA,SAAK6iD,gBAAL,GAAwBH,8CAAM,CAAC,KAAK1sB,YAAN,CAA9B;AACA,SAAKktB,kBAAL,GAA0BR,8CAAM,CAAC,KAAKI,cAAN,CAAhC;AACA,SAAKjL,iBAAL,GAAyB6K,8CAAM,CAAC,KAAK/mC,aAAN,CAA/B;AACA,SAAK9L,SAAL,GAAiB6yC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AACA,SAAKj1B,SAAL,GAAiBigC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AAEA,SAAKA,UAAL,GAAkB,OAAlB;AACA,SAAK9nC,OAAL,GAAe,SAAf;AACA,SAAK01C,SAAL,GAAiB,SAAjB;AACA,SAAKz1C,SAAL,GAAiB,SAAjB;AACA,SAAK41C,OAAL,GAAe,SAAf;AACA,SAAK1iC,OAAL,GAAe,SAAf;AACA,SAAKJ,cAAL,GAAsB,SAAtB;AACA,SAAKh9B,UAAL,GAAkB,4CAAlB;AACA,SAAK6c,QAAL,GAAgB,MAAhB;AACA,SAAKkjD,eAAL,GAAuB,SAAvB;AACA,SAAKjjC,SAAL,GAAiB,MAAjB;AAEA;;AAEA,SAAK0gC,OAAL,GAAe,YAAf;AACA,SAAKzzC,UAAL,GAAkB,YAAlB;AACA,SAAKmT,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKsgC,gBAAL,GAAwB,YAAxB;AACA,SAAK1gC,UAAL,GAAkB,YAAlB;AACA,SAAKE,mBAAL,GAA2B,YAA3B;AAEA;;AAEA,SAAKsqB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,OAAtB;AACA,SAAKC,cAAL,GAAsB,MAAtB;AACA,SAAKC,WAAL,GAAmB,YAAnB;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,MAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAKnf,eAAL,GAAuB,YAAvB;AACA,SAAKE,kBAAL,GAA0B,YAA1B;AACA,SAAKD,gBAAL,GAAwB,YAAxB;AACA,SAAKF,eAAL,GAAuB,SAAvB;AACA,SAAKW,eAAL,GAAuB,YAAvB;AACA,SAAKD,YAAL,GAAoB,YAApB;AACA,SAAKw0B,kBAAL,GAA0B,YAA1B;AACA,SAAKz0B,aAAL,GAAqB,KAAKy0B,kBAA1B;AACA,SAAK30B,iBAAL,GAAyB,YAAzB;AACA,SAAKK,oBAAL,GAA4B,KAAKL,iBAAjC;AACA,SAAKC,sBAAL,GAA8B,YAA9B;AACA,SAAKM,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKR,SAAL,GAAiB,YAAjB;AACA,SAAKW,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,YAApB;AACA,SAAKZ,cAAL,GAAsB,YAAtB;AAEA,SAAKL,eAAL,GAAuBi3B,4CAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,CAA3B;AACA,SAAK/2B,kBAAL,GAA0B,OAA1B;AACA,SAAKD,gBAAL,GAAwB,SAAxB;AACA,SAAKS,eAAL,GAAuB,SAAvB;AACA,SAAKD,YAAL,GAAoB,SAApB;AACA,SAAKw0B,kBAAL,GAA0B,OAA1B;AACA,SAAKz0B,aAAL,GAAqB,YAArB;AACA,SAAKF,iBAAL,GAAyB,OAAzB;AACA,SAAKK,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6B,SAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKR,SAAL,GAAiB,WAAjB;AACA,SAAKW,gBAAL,GAAwB,WAAxB;AACA,SAAKD,mBAAL,GAA2B,MAA3B;AACA,SAAKE,eAAL,GAAuB,SAAvB;AACA,SAAKC,YAAL,GAAoB,KAApB;AACA,SAAKZ,cAAL,GAAsB,KAAtB;AAEA;;AACA,SAAKk3B,UAAL,GAAkB,OAAlB;AACA,SAAK/D,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,SAAtB;AACA,SAAKqD,YAAL;AACD;;;;WACD,wBAAe;AACb;AAEA,WAAK/B,OAAL,GAAe,KAAKvzC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK+1C,OAAvB,CAJa,CAImB;;AAChC,WAAK5iC,UAAL,GAAkB,KAAKyiC,SAAvB;AACA,WAAKxiC,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKqgC,gBAAL,GAAwB,KAAKvzC,SAA7B;AACA,WAAK6S,UAAL,GAAkB,KAAKD,SAAvB;AACA,WAAKG,mBAAL,GAA2B,KAAK8iC,eAAhC;AAEA;AAEA;;AACA,WAAKxY,WAAL,GAAmBsV,+CAAO,CAAC,KAAKiD,OAAN,EAAe,EAAf,CAA1B;AACA,WAAKtY,QAAL,GAAgB,KAAKv9B,OAArB;AACA,WAAK89B,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKG,WAAL,GAAmB,KAAK7qB,SAAxB;AACA,WAAK+qB,eAAL,GAAuB,KAAK/qB,SAA5B;AACA,WAAKgrB,mBAAL,GAA2B,KAAKP,WAAhC;AACA,WAAKS,cAAL,GAAsB,KAAKP,cAA3B;AACA,WAAKQ,aAAL,GAAqB,KAAKR,cAA1B;AACA,WAAKS,eAAL,GAAuB,KAAK9qB,OAA5B;AACA,WAAKgrB,aAAL,GAAqB,KAAKX,cAA1B;AAEA;;AAEA,WAAKxe,aAAL,GAAqB,KAAKy0B,kBAA1B;AACA,WAAKt0B,oBAAL,GAA4B,KAAKL,iBAAjC;AAEA;;AACA,WAAK8oB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKn1B,SAA9D;AACA,WAAKg1B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAK4K,gBAArE;AAEA,WAAK5K,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKroC,OAAtC;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAK/7B,aAA/E;AACA,WAAKy8B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,SAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKvoC,OAAtE;AACA,WAAK0zC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK5zC,UAApD;AACA,WAAKqoC,kBAAL,GAA0B,KAAKroC,UAA/B;AACA,WAAKooC,iBAAL,GAAyB,KAAKjoC,SAA9B;AAEA,WAAK+xC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjmC,aAAhD;AACA,WAAKkmC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKhK,iBAAlD;AACA,WAAKL,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA;;AACA,WAAKF,SAAL,GAAiB,KAAKkzC,gBAAtB;AACA;;AACA,WAAKvI,SAAL,GAAiB,KAAKtkB,YAAtB;AACA,WAAKukB,SAAL,GAAiB,KAAKuI,cAAtB;AACA,WAAKtI,SAAL,GAAiBiI,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK2sD,SAAL,GAAiBgI,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAK4sD,SAAL,GAAiB+H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK6sD,SAAL,GAAiB8H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK8sD,SAAL,GAAiB6H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK+sD,SAAL,GAAiB4H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AAEA;;AACA,WAAKupC,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKrB,YAA9B;AACA,WAAKsB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKwrB,cAA9B;AACA,WAAKvrB,IAAL,GAAY,KAAKA,IAAL,IAAakrB,8CAAM,CAAC,KAAK9mC,aAAN,EAAqB;AAAE3L,QAAAA,CAAC,EAAE,CAAC;AAAN,OAArB,CAA/B;AACA,WAAKwnB,IAAL,GAAY,KAAKA,IAAL,IAAairB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEhmB,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKynB,IAAL,GAAY,KAAKA,IAAL,IAAagrB,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAE9yC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAA/B;AACA,WAAK0nB,IAAL,GAAY,KAAKA,IAAL,IAAa+qB,8CAAM,CAAC,KAAK9mC,aAAN,EAAqB;AAAE3L,QAAAA,CAAC,EAAE,CAAC;AAAN,OAArB,CAA/B;AACA,WAAK2nB,IAAL,GAAY,KAAKA,IAAL,IAAa8qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK4nB,IAAL,GAAY,KAAKA,IAAL,IAAa6qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK6nB,IAAL,GAAY,KAAKA,IAAL,IAAa4qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK8nB,KAAL,GAAa,KAAKA,KAAL,IAAc2qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK+nB,KAAL,GAAa,KAAKA,KAAL,IAAc0qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKgoB,KAAL,GAAa,KAAKA,KAAL,IAAcyqB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK6oB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKpK,iBAAxD;AACA,WAAKsK,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKtW,SAA5D;AACA,WAAKyW,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKvK,iBAA1D;AACA,WAAKgK,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK/H,YAAhE;AACA,WAAKgI,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAK+kB,kBAAlE;AACA,WAAK9kB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK8kB,kBAAhE;AACA,WAAK7kB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAK2kB,gBAA9D;AACA,WAAK/kB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjuB,SAAhD;AACA,WAAKsuB,uBAAL,GAA+B,KAAKA,uBAAL,IAAgC,KAAKunB,eAApE;AACA,WAAKtnB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKgP,cAA1D;AAEA;;AACA,WAAKmW,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKvtB,YAA9B;AACA,WAAKwtB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKV,cAA9B;AACA,WAAKW,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK9nC,aAA9B;AACA,WAAK+nC,IAAL,GAAY,KAAKA,IAAL,IAAajB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK61D,IAAL,GAAY,KAAKA,IAAL,IAAalB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK81D,IAAL,GAAY,KAAKA,IAAL,IAAanB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK+1D,IAAL,GAAY,KAAKA,IAAL,IAAapB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKg2D,IAAL,GAAY,KAAKA,IAAL,IAAarB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;;AACA,UAAI,KAAKkS,QAAT,EAAmB;AACjB,aAAKujD,IAAL,GAAYf,+CAAO,CAAC,KAAKe,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYhB,+CAAO,CAAC,KAAKgB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYjB,+CAAO,CAAC,KAAKiB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYlB,+CAAO,CAAC,KAAKkB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYnB,+CAAO,CAAC,KAAKmB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYpB,+CAAO,CAAC,KAAKoB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYrB,+CAAO,CAAC,KAAKqB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYtB,+CAAO,CAAC,KAAKsB,IAAN,EAAY,EAAZ,CAAnB;AACD,OATD,MASO;AACL,aAAKP,IAAL,GAAYhB,8CAAM,CAAC,KAAKgB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYjB,8CAAM,CAAC,KAAKiB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYlB,8CAAM,CAAC,KAAKkB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYnB,8CAAM,CAAC,KAAKmB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYpB,8CAAM,CAAC,KAAKoB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYrB,8CAAM,CAAC,KAAKqB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYtB,8CAAM,CAAC,KAAKsB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYvB,8CAAM,CAAC,KAAKuB,IAAN,EAAY,EAAZ,CAAlB;AACD;;AACD,WAAKC,OAAL,GAAe,KAAKA,OAAL,IAAgBxB,8CAAM,CAACG,8CAAM,CAAC,KAAKa,IAAN,CAAP,EAAoB,EAApB,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBtB,8CAAM,CAAC,KAAKc,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBvB,8CAAM,CAAC,KAAKe,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBxB,8CAAM,CAAC,KAAKgB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBzB,8CAAM,CAAC,KAAKiB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB1B,8CAAM,CAAC,KAAKkB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB3B,8CAAM,CAAC,KAAKmB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB5B,8CAAM,CAAC,KAAKoB,IAAN,CAArC;AACA,WAAKU,eAAL,GAAuB,KAAKA,eAAL,IAAwB9B,8CAAM,CAAC,KAAK/U,cAAN,CAArD;AACA,WAAK8W,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK9W,cAApD;AACA,WAAK+W,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK/W,cAApD;AACA,WAAKgX,eAAL,GAAuB,KAAKA,eAAL,IAAwBjC,8CAAM,CAAC,KAAK/U,cAAN,CAArD;AACA,WAAKiX,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKjX,cAApD;AACA,WAAKkX,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKlX,cAApD;AACA,WAAKmX,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKnX,cAApD;AACA,WAAKoX,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKpX,cAApD;AAEA,WAAK9X,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKgtB,gBAAhD;AACA,WAAK/sB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKE,YAA1D;AACA,WAAKD,cAAL,GAAsB,KAAKivB,SAAL,IAAkB,KAAKjC,kBAA7C;AACA,WAAKptB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKutB,kBAAtD;AACA,WAAKttB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKktB,cAAhE;AACD;;;WACD,mBAAUmC,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM//D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY8/D,SAAZ,CAAb,CAPmB,CASnB;;AACA9/D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAKo2C,YAAL,GAfmB,CAgBnB;;AACA//D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAMpqB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACygE,aAAD,EAAmB;AAClD,MAAM7hE,KAAK,GAAG,IAAIs/D,KAAJ,EAAd;AACAt/D,EAAAA,KAAK,CAAC8hE,SAAN,CAAgBD,aAAhB;AACA,SAAO7hE,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;ACpRP;AACA;;IACMs/D;AACJ,mBAAc;AAAA;;AACZ;AACA,SAAKlL,UAAL,GAAkB,SAAlB;AACA,SAAK1hB,YAAL,GAAoB,SAApB;AACA,SAAK8sB,cAAL,GAAsB,SAAtB;AACA,SAAKpL,UAAL,GAAkB,OAAlB;AACA,SAAK9nC,OAAL,GAAe,SAAf;AACA,SAAK01C,SAAL,GAAiB,SAAjB;AACA,SAAKz1C,SAAL,GAAiB,OAAjB;AACA,SAAK41C,OAAL,GAAe,SAAf;AACA,SAAK1iC,OAAL,GAAe,SAAf;AACA,SAAKJ,cAAL,GAAsB,OAAtB;AACA,SAAKh9B,UAAL,GAAkB,4CAAlB;AACA,SAAK6c,QAAL,GAAgB,MAAhB;AAEA,SAAKmZ,aAAL,GAAqB6mC,+CAAO,CAAC,SAAD,EAAY,EAAZ,CAA5B;AACA,SAAKO,kBAAL,GAA0BJ,wDAAQ,CAAC,KAAK3sB,YAAN,EAAoB,KAAKh2B,QAAzB,CAAlC;AACA,SAAKgjD,oBAAL,GAA4BL,wDAAQ,CAAC,KAAKG,cAAN,EAAsB,KAAK9iD,QAA3B,CAApC;AACA,SAAKijD,mBAAL,GAA2BN,wDAAQ,CAAC,KAAKhnC,aAAN,EAAqB,KAAK3b,QAA1B,CAAnC;AACA,SAAK6iD,gBAAL,GAAwBH,8CAAM,CAAC,KAAK1sB,YAAN,CAA9B;AACA,SAAKktB,kBAAL,GAA0BR,8CAAM,CAAC,KAAKI,cAAN,CAAhC;AACA,SAAKjL,iBAAL,GAAyB6K,8CAAM,CAAC,KAAK1sB,YAAN,CAA/B;AACA,SAAKnmB,SAAL,GAAiB6yC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AACA,SAAKj1B,SAAL,GAAiBigC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AAEA;;AACA,SAAKyL,OAAL,GAAe,YAAf;AACA,SAAKzzC,UAAL,GAAkB,YAAlB;AACA,SAAKmT,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKsgC,gBAAL,GAAwB,YAAxB;AACA,SAAK1gC,UAAL,GAAkB,MAAlB;AACA,SAAKE,mBAAL,GAA2B,SAA3B;AAEA;;AAEA,SAAKsqB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,OAAtB;AACA,SAAKC,cAAL,GAAsB,MAAtB;AACA,SAAKC,WAAL,GAAmB,MAAnB;AACA,SAAKE,eAAL,GAAuB,MAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,SAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,SAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,MAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAKnf,eAAL,GAAuB,SAAvB;AACA,SAAKE,kBAAL,GAA0B,OAA1B;AACA,SAAKD,gBAAL,GAAwB,SAAxB;AACA,SAAKF,eAAL,GAAuB,SAAvB;AACA,SAAKW,eAAL,GAAuB,YAAvB;AACA,SAAKD,YAAL,GAAoB,SAApB;AACA,SAAKw0B,kBAAL,GAA0B,OAA1B;AACA,SAAKz0B,aAAL,GAAqB,YAArB;AACA,SAAKF,iBAAL,GAAyB,OAAzB;AACA,SAAKK,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKR,SAAL,GAAiB,WAAjB;AACA,SAAKW,gBAAL,GAAwB,WAAxB;AACA,SAAKD,mBAAL,GAA2B,MAA3B;AACA,SAAKE,eAAL,GAAuB,SAAvB;AACA,SAAKC,YAAL,GAAoB,KAApB;AACA,SAAKZ,cAAL,GAAsB,KAAtB;AAEA;;AACA,SAAKk3B,UAAL,GAAkB,OAAlB;AAEA,SAAK/D,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,SAAtB;AACD;;;;WACD,wBAAe;AACb;AAEA,WAAKsB,OAAL,GAAe,KAAKvzC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK+1C,OAAvB;AACA,WAAK5iC,UAAL,GAAkB,KAAKyiC,SAAvB;AACA,WAAKxiC,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKqgC,gBAAL,GAAwB,KAAKvzC,SAA7B;AAEA;;AAEA,WAAKq9B,WAAL,GAAmBqV,8CAAM,CAAC,KAAK3yC,OAAN,EAAe,EAAf,CAAzB;AACA,WAAKu9B,QAAL,GAAgB,KAAKv9B,OAArB;AACA,WAAK89B,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKQ,cAAL,GAAsB,KAAKP,cAA3B;AACA,WAAKQ,aAAL,GAAqB,KAAKR,cAA1B;AACA,WAAKS,eAAL,GAAuB,KAAK9qB,OAA5B;AACA,WAAKgrB,aAAL,GAAqB,KAAKX,cAA1B;AAEA;;AAEA,WAAKte,eAAL,GAAuB,KAAK22B,OAA5B;AACA,WAAK72B,aAAL,GAAqB,KAAKy0B,kBAA1B;AACA,WAAKt0B,oBAAL,GAA4B,KAAKL,iBAAjC;AACA,WAAKO,qBAAL,GAA6B,KAAKH,eAAlC;AACA,WAAKE,kBAAL,GAA0B,KAAKpf,OAA/B;AAEA;;AACA,WAAK4nC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKn1B,SAA9D;AACA,WAAKg1B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAK4K,gBAArE;AAEA,WAAK5K,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKroC,OAAtC;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAK/7B,aAA/E;AACA,WAAKy8B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,SAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKvoC,OAAtE;AACA,WAAK0zC,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK5zC,UAApD;AACA,WAAKqoC,kBAAL,GAA0B,KAAKgL,kBAA/B;AACA,WAAKjL,iBAAL,GAAyB,KAAKjoC,SAA9B;AAEA,WAAK+xC,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjmC,aAAhD;AACA,WAAKkmC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKhK,iBAAlD;AACA,WAAKL,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAK3nC,SAApD;AACA;;AACA,WAAKF,SAAL,GAAiB,KAAKkzC,gBAAtB;AACA;;AACA,WAAKvI,SAAL,GAAiB,KAAKtkB,YAAtB;AACA,WAAKukB,SAAL,GAAiB,KAAKuI,cAAtB;AACA,WAAKtI,SAAL,GAAiBiI,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK2sD,SAAL,GAAiBgI,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAK4sD,SAAL,GAAiB+H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK6sD,SAAL,GAAiB8H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK8sD,SAAL,GAAiB6H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK+sD,SAAL,GAAiB4H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AAEA;;AACA,WAAKupC,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKrB,YAA9B;AACA,WAAKsB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKwrB,cAA9B;AACA,WAAKvrB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK5b,aAA9B;AACA,WAAK6b,IAAL,GAAY,KAAKA,IAAL,IAAairB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEhmB,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKynB,IAAL,GAAY,KAAKA,IAAL,IAAagrB,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAE9yC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAA/B;AACA,WAAK0nB,IAAL,GAAY,KAAKA,IAAL,IAAa+qB,8CAAM,CAAC,KAAK9mC,aAAN,EAAqB;AAAE7tB,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAArB,CAA/B;AACA,WAAK2nB,IAAL,GAAY,KAAKA,IAAL,IAAa8qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK4nB,IAAL,GAAY,KAAKA,IAAL,IAAa6qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAA/B;AACA,WAAK6nB,IAAL,GAAY,KAAKA,IAAL,IAAa4qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE;AAAb,OAApB,CAA/B;AACA,WAAK8nB,KAAL,GAAa,KAAKA,KAAL,IAAc2qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK+nB,KAAL,GAAa,KAAKA,KAAL,IAAc0qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC,EAAN;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAKgoB,KAAL,GAAa,KAAKA,KAAL,IAAcyqB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,GAAL;AAAUkiB,QAAAA,CAAC,EAAE,CAAC;AAAd,OAApB,CAAjC;AACA,WAAK6oB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKpK,iBAAxD;AACA,WAAKsK,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKtW,SAA5D;AACA,WAAKyW,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKvK,iBAA1D;AACA,WAAKgK,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK/H,YAAhE;AACA,WAAKgI,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAK+kB,kBAAlE;AACA,WAAK9kB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK8kB,kBAAhE;AACA,WAAK7kB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAK2kB,gBAA9D;AACA,WAAK/kB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjuB,SAAhD;AACA,WAAKsuB,uBAAL,GAA+B,KAAKA,uBAAL,IAAgC,KAAKvb,mBAApE;AACA,WAAKwb,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKgP,cAA1D;AAEA;;AACA,WAAKmW,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKvtB,YAA9B;AACA,WAAKwtB,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAKV,cAA9B;AACA,WAAKW,IAAL,GAAY,KAAKA,IAAL,IAAa,KAAK9nC,aAA9B;AACA,WAAK+nC,IAAL,GAAY,KAAKA,IAAL,IAAajB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK61D,IAAL,GAAY,KAAKA,IAAL,IAAalB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK81D,IAAL,GAAY,KAAKA,IAAL,IAAanB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK+1D,IAAL,GAAY,KAAKA,IAAL,IAAapB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKg2D,IAAL,GAAY,KAAKA,IAAL,IAAarB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;;AACA,UAAI,KAAKkS,QAAT,EAAmB;AACjB,aAAKujD,IAAL,GAAYf,+CAAO,CAAC,KAAKe,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYhB,+CAAO,CAAC,KAAKgB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYjB,+CAAO,CAAC,KAAKiB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYlB,+CAAO,CAAC,KAAKkB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYnB,+CAAO,CAAC,KAAKmB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYpB,+CAAO,CAAC,KAAKoB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYrB,+CAAO,CAAC,KAAKqB,IAAN,EAAY,EAAZ,CAAnB;AACA,aAAKC,IAAL,GAAYtB,+CAAO,CAAC,KAAKsB,IAAN,EAAY,EAAZ,CAAnB;AACD,OATD,MASO;AACL,aAAKP,IAAL,GAAYhB,8CAAM,CAAC,KAAKgB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYjB,8CAAM,CAAC,KAAKiB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYlB,8CAAM,CAAC,KAAKkB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYnB,8CAAM,CAAC,KAAKmB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYpB,8CAAM,CAAC,KAAKoB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYrB,8CAAM,CAAC,KAAKqB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYtB,8CAAM,CAAC,KAAKsB,IAAN,EAAY,EAAZ,CAAlB;AACA,aAAKC,IAAL,GAAYvB,8CAAM,CAAC,KAAKuB,IAAN,EAAY,EAAZ,CAAlB;AACD;;AACD,WAAKC,OAAL,GAAe,KAAKA,OAAL,IAAgBrB,8CAAM,CAAC,KAAKa,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBtB,8CAAM,CAAC,KAAKc,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBvB,8CAAM,CAAC,KAAKe,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBxB,8CAAM,CAAC,KAAKgB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBzB,8CAAM,CAAC,KAAKiB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB1B,8CAAM,CAAC,KAAKkB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB3B,8CAAM,CAAC,KAAKmB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB5B,8CAAM,CAAC,KAAKoB,IAAN,CAArC;AAEA,WAAKjuB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKgtB,gBAAhD;AACA,WAAK/sB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKE,YAA1D;AACA,WAAKD,cAAL,GAAsB,KAAKivB,SAAL,IAAkB,KAAKjC,kBAA7C;AACA,WAAKptB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKutB,kBAAtD;AACA,WAAKttB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKktB,cAAhE;AACD;;;WACD,mBAAUmC,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM//D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY8/D,SAAZ,CAAb,CAPmB,CASnB;;AACA9/D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAKo2C,YAAL,GAfmB,CAgBnB;;AACA//D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAMpqB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACygE,aAAD,EAAmB;AAClD,MAAM7hE,KAAK,GAAG,IAAIs/D,KAAJ,EAAd;AACAt/D,EAAAA,KAAK,CAAC8hE,SAAN,CAAgBD,aAAhB;AACA,SAAO7hE,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;AC9OP;AAEO,IAAMq/D,QAAQ,GAAG,SAAXA,QAAW,CAACiD,GAAD,EAAM5lD,QAAN;AAAA,SACtBA,QAAQ,GAAGyiD,8CAAM,CAACmD,GAAD,EAAM;AAAEt7D,IAAAA,CAAC,EAAE,CAAC,EAAN;AAAU0lB,IAAAA,CAAC,EAAE;AAAb,GAAN,CAAT,GAAoCyyC,8CAAM,CAACmD,GAAD,EAAM;AAAEt7D,IAAAA,CAAC,EAAE,CAAC,EAAN;AAAU0lB,IAAAA,CAAC,EAAE,CAAC;AAAd,GAAN,CAD5B;AAAA,CAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;ACFP;CAGA;AACA;;IAEM4yC;AACJ,mBAAc;AAAA;;AACZ,SAAK5sB,YAAL,GAAoB,MAApB;AACA,SAAK6vB,QAAL,GAAgB,SAAhB;AACA,SAAK/C,cAAL,GAAsBN,+CAAO,CAAC,KAAKqD,QAAN,EAAgB,EAAhB,CAA7B;AACA,SAAKnO,UAAL,GAAkB,SAAlB,CAJY,CAMZ;;AACA,SAAK/7B,aAAL,GAAqB8mC,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,MAAAA,CAAC,EAAE,CAAC;AAAN,KAApB,CAA3B;AACA,SAAKi1D,kBAAL,GAA0BJ,wDAAQ,CAAC,KAAK3sB,YAAN,EAAoB,KAAKh2B,QAAzB,CAAlC;AACA,SAAKgjD,oBAAL,GAA4BL,wDAAQ,CAAC,KAAKG,cAAN,EAAsB,KAAK9iD,QAA3B,CAApC;AACA,SAAKijD,mBAAL,GAA2BN,wDAAQ,CAAC,KAAKhnC,aAAN,EAAqB,KAAK3b,QAA1B,CAAnC,CAVY,CAWZ;;AAEA,SAAK6iD,gBAAL,GAAwBH,8CAAM,CAAC,KAAK1sB,YAAN,CAA9B;AACA,SAAKktB,kBAAL,GAA0BR,8CAAM,CAAC,KAAKI,cAAN,CAAhC;AACA,SAAKjL,iBAAL,GAAyB6K,8CAAM,CAAC,KAAK/mC,aAAN,CAA/B;AACA,SAAK9L,SAAL,GAAiB6yC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB;AACA,SAAKj1B,SAAL,GAAiBigC,8CAAM,CAAC,KAAKhL,UAAN,CAAvB,CAjBY,CAmBZ;;AACA,SAAK9nC,OAAL,GAAe,MAAf;AACA,SAAK01C,SAAL,GAAiB,YAAjB;AACA,SAAKz1C,SAAL,GAAiB,MAAjB;AACA,SAAK41C,OAAL,GAAe,MAAf;AACA,SAAK1iC,OAAL,GAAe,YAAf;AACA,SAAK3oB,IAAL,GAAY,MAAZ;AACA,SAAKjX,IAAL,GAAY,MAAZ;AACA,SAAK2iE,QAAL,GAAgB,MAAhB;AACA,SAAKt9B,IAAL,GAAY,MAAZ;AACA,SAAK7F,cAAL,GAAsB,SAAtB;AACA,SAAKh9B,UAAL,GAAkB,4CAAlB;AACA,SAAK6c,QAAL,GAAgB,MAAhB;AAEA;;AAEA,SAAK2gD,OAAL,GAAe,YAAf;AACA,SAAKzzC,UAAL,GAAkB,YAAlB;AACA,SAAKmT,UAAL,GAAkB,YAAlB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKsgC,gBAAL,GAAwB,YAAxB;AACA,SAAK1gC,UAAL,GAAkB,YAAlB;AACA,SAAKE,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAKsqB,WAAL,GAAmB,YAAnB;AACA,SAAKC,QAAL,GAAgB,YAAhB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,cAAL,GAAsB,YAAtB;AACA,SAAKC,WAAL,GAAmB,YAAnB;AACA,SAAKE,eAAL,GAAuB,YAAvB;AACA,SAAKE,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKE,cAAL,GAAsB,YAAtB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKC,eAAL,GAAuB,YAAvB;AACA,SAAKC,YAAL,GAAoB,YAApB;AACA,SAAKC,aAAL,GAAqB,YAArB;AACA,SAAKE,qBAAL,GAA6B,MAA7B;AACA,SAAKD,kBAAL,GAA0B,SAA1B;AACA,SAAKT,mBAAL,GAA2B,OAA3B;AAEA;;AAEA,SAAKnf,eAAL,GAAuB,YAAvB;AACA,SAAKE,kBAAL,GAA0B,OAA1B;AACA,SAAKD,gBAAL,GAAwB,YAAxB;AACA,SAAKF,eAAL,GAAuB,SAAvB;AACA,SAAKW,eAAL,GAAuB,YAAvB;AACA,SAAKD,YAAL,GAAoB,YAApB;AACA,SAAKw0B,kBAAL,GAA0B,OAA1B;AACA,SAAKz0B,aAAL,GAAqB,YAArB;AACA,SAAKF,iBAAL,GAAyB,YAAzB;AACA,SAAKK,oBAAL,GAA4B,YAA5B;AACA,SAAKJ,sBAAL,GAA8B,SAA9B;AACA,SAAKM,qBAAL,GAA6B,YAA7B;AACA,SAAKD,kBAAL,GAA0B,YAA1B;AACA,SAAKR,SAAL,GAAiB,YAAjB;AACA,SAAKW,gBAAL,GAAwB,YAAxB;AACA,SAAKD,mBAAL,GAA2B,YAA3B;AACA,SAAKG,YAAL,GAAoB,YAApB;AACA,SAAKD,eAAL,GAAuB,YAAvB;AACA,SAAKX,cAAL,GAAsB,YAAtB;AAEA;;AACA,SAAKk3B,UAAL,GAAkB,OAAlB;AAEA,SAAK/D,aAAL,GAAqB,SAArB;AACA,SAAKC,cAAL,GAAsB,SAAtB;AACD;;;;WACD,wBAAe;AACb,WAAKyD,SAAL,GAAiB9C,+CAAO,CAAC,KAAKqD,QAAN,EAAgB,EAAhB,CAAxB;AACA,WAAK9iC,OAAL,GAAe,KAAK8iC,QAApB;AAEA;;AAEA,WAAK1C,OAAL,GAAe,KAAKvzC,OAApB;AACA,WAAKF,UAAL,GAAkB,KAAK+1C,OAAvB;AACA,WAAK5iC,UAAL,GAAkB,KAAKyiC,SAAvB;AACA,WAAKxiC,aAAL,GAAqB,KAAKC,OAA1B;AACA,WAAKqgC,gBAAL,GAAwB,KAAKvzC,SAA7B;AACA,WAAK6S,UAAL,GAAkB,KAAKv/B,IAAvB;AAEA;;AAEA,WAAK+pD,WAAL,GAAmBsV,+CAAO,CAAC,KAAKiD,OAAN,EAAe,EAAf,CAA1B;AACA,WAAKtY,QAAL,GAAgB,KAAKv9B,OAArB;AACA,WAAKw9B,cAAL,GAAsB,KAAKjqD,IAA3B;AACA,WAAKkqD,cAAL,GAAsB,KAAKx9B,SAA3B;AACA,WAAKy9B,WAAL,GAAmB,KAAKnqD,IAAxB;AACA,WAAKqqD,eAAL,GAAuB,KAAKrqD,IAA5B;AACA,WAAKuqD,gBAAL,GAAwB,KAAKP,QAA7B;AACA,WAAKM,mBAAL,GAA2B,KAAKP,WAAhC;AACA,WAAKS,cAAL,GAAsB,KAAKxqD,IAA3B;AACA,WAAKyqD,aAAL,GAAqB,KAAKzqD,IAA1B;AACA,WAAK0qD,eAAL,GAAuB,MAAvB;AACA,WAAKC,YAAL,GAAoB,MAApB;AACA,WAAKC,aAAL,GAAqB,MAArB;AAEA;;AAEA,WAAK3f,eAAL,GAAuBo0B,+CAAO,CAAC,KAAKqD,QAAN,EAAgB,EAAhB,CAA9B;AACA,WAAKx3B,gBAAL,GAAwBm0B,+CAAO,CAAC,KAAKqD,QAAN,EAAgB,EAAhB,CAA/B;AAEA,WAAK/2B,eAAL,GAAuByzB,8CAAM,CAAC,KAAKsD,QAAN,EAAgB,EAAhB,CAA7B;AAEA,WAAKh3B,YAAL,GAAoB,KAAKg3B,QAAzB;AACA,WAAKj3B,aAAL,GAAqB,KAAKy0B,kBAA1B;AACA,WAAK30B,iBAAL,GAAyB,KAAKvrC,IAA9B;AACA,WAAK4rC,oBAAL,GAA4B,KAAKL,iBAAjC;AACA,WAAKO,qBAAL,GAA6B,KAAKH,eAAlC;AACA,WAAKE,kBAAL,GAA0B,KAAKpf,OAA/B;AACA,WAAK4e,SAAL,GAAiBg0B,+CAAO,CAAC,KAAKiD,OAAN,EAAe,EAAf,CAAxB;AAEA,WAAKt2B,gBAAL,GAAwB,KAAK3G,IAA7B;AACA,WAAK0G,mBAAL,GAA2B,KAAKrf,SAAhC;AACA,WAAKwf,YAAL,GAAoB,KAAKy2B,QAAzB;AACA,WAAK12B,eAAL,GAAuBmzB,8CAAM,CAAC,KAAKlzB,YAAN,EAAoB,EAApB,CAA7B;AAEA,WAAKZ,cAAL,GAAsB,KAAKY,YAA3B;AAEA;;AACA,WAAKmoB,eAAL,GAAuB,KAAKA,eAAL,IAAwB,MAA/C;AACA,WAAKI,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKn1B,SAA9D;AACA,WAAKg1B,eAAL,GAAuB,KAAKA,eAAL,IAAwB,KAAKQ,QAA7B,IAAyC,KAAK4K,gBAArE;AAEA,WAAK5K,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKroC,OAAtC;AACA,WAAK+nC,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAKM,QAA9D;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKN,UAAjC,IAA+C,KAAK/7B,aAA/E;AACA,WAAKy8B,aAAL,GAAqB,KAAKA,aAAL,IAAsB,SAA3C;AACA,WAAKD,wBAAL,GAAgC,KAAKA,wBAAL,IAAiC,KAAKvoC,OAAtE;AACA,WAAKsoC,WAAL,GAAmB,KAAKA,WAAL,IAAoB,MAAvC;AACA,WAAKH,kBAAL,GAA0B,KAAKgL,kBAA/B;AACA,WAAKjL,iBAAL,GAAyB,MAAzB;AAEA,WAAK8J,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjmC,aAAhD;AACA,WAAKkmC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAAKhK,iBAAlD;AAEA;;AACA,WAAKloC,SAAL,GAAiB,KAAKkzC,gBAAtB;AACA;;AACA,WAAKvI,SAAL,GAAiB,KAAKtkB,YAAtB;AACA,WAAKukB,SAAL,GAAiB,KAAKuI,cAAtB;AACA,WAAKtI,SAAL,GAAiBiI,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK2sD,SAAL,GAAiBgI,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB;AACA,WAAK4sD,SAAL,GAAiB+H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAAvB;AACA,WAAK6sD,SAAL,GAAiB8H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE,CAAC;AAAN,OAAtB,CAAvB;AACA,WAAK8sD,SAAL,GAAiB6H,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE;AAAL,OAApB,CAAvB;AACA,WAAK+sD,SAAL,GAAiB4H,8CAAM,CAAC,KAAKK,cAAN,EAAsB;AAAEh1D,QAAAA,CAAC,EAAE;AAAL,OAAtB,CAAvB,CA9Ea,CAgFb;;AACA,WAAKupC,IAAL,GAAY,KAAKA,IAAL,IAAa,SAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,MAAzB;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,MAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,MAA3B;AACA,WAAKC,KAAL,GAAa,KAAKA,KAAL,IAAc,MAA3B;AACA,WAAKa,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,MAAjD;AACA,WAAKC,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,KAAKpK,iBAAxD;AACA,WAAKsK,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,MAArD;AACA,WAAKD,mBAAL,GAA2B,KAAKA,mBAAL,IAA4B,KAAKtW,SAA5D;AACA,WAAKyW,iBAAL,GAAyB,KAAKA,iBAAL,IAA0B,MAAnD;AACA,WAAKD,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKvK,iBAA1D;AACA,WAAKgK,cAAL,GAAsB,KAAKA,cAAL,IAAuB,OAA7C;AACA,WAAKC,cAAL,GAAsB,KAAKA,cAAL,IAAuB,KAA7C;AACA,WAAKC,UAAL,GAAkB,KAAKA,UAAL,IAAmB,KAArC,CArGa,CAuGb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AACA,WAAKmF,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK/H,YAAhE;AACA,WAAKgI,sBAAL,GAA8B,KAAKA,sBAAL,IAA+B,KAAK+kB,kBAAlE;AACA,WAAK9kB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAK8kB,kBAAhE;AACA,WAAK7kB,oBAAL,GAA4B,KAAKA,oBAAL,IAA6B,KAAK2kB,gBAA9D;AACA,WAAK/kB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKjuB,SAAhD;AACA,WAAKsuB,uBAAL,GAA+B,KAAKA,uBAAL,IAAgC,KAAKvb,mBAApE;AACA,WAAKwb,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKgP,cAA1D;AAEA;;AACA,WAAKmW,IAAL,GAAYhB,8CAAM,CAAC,KAAKlrB,IAAN,EAAY,EAAZ,CAAN,IAAyB,KAAKrB,YAA1C;AACA,WAAKwtB,IAAL,GAAY,KAAKlsB,IAAL,IAAa,KAAKwrB,cAA9B;AACA,WAAKW,IAAL,GAAY,KAAKlsB,IAAL,IAAa,KAAK5b,aAA9B;AACA,WAAK+nC,IAAL,GAAY,KAAKlsB,IAAL,IAAairB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK61D,IAAL,GAAY,KAAKlsB,IAAL,IAAagrB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK81D,IAAL,GAAY,KAAKlsB,IAAL,IAAa+qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAK+1D,IAAL,GAAY,KAAKlsB,IAAL,IAAa8qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AACA,WAAKg2D,IAAL,GAAY,KAAKlsB,IAAL,IAAa6qB,8CAAM,CAAC,KAAKzsB,YAAN,EAAoB;AAAEloC,QAAAA,CAAC,EAAE,CAAC;AAAN,OAApB,CAA/B;AAEA,WAAKi2D,OAAL,GAAe,KAAKA,OAAL,IAAgBrB,8CAAM,CAAC,KAAKa,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBtB,8CAAM,CAAC,KAAKc,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBvB,8CAAM,CAAC,KAAKe,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBxB,8CAAM,CAAC,KAAKgB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgBzB,8CAAM,CAAC,KAAKiB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB1B,8CAAM,CAAC,KAAKkB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB3B,8CAAM,CAAC,KAAKmB,IAAN,CAArC;AACA,WAAKS,OAAL,GAAe,KAAKA,OAAL,IAAgB5B,8CAAM,CAAC,KAAKoB,IAAN,CAArC;AAEA,WAAKS,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAK5W,cAAtD;AACA,WAAK6W,eAAL,GAAuB,KAAKD,gBAA5B;AACA,WAAKE,eAAL,GAAuB,OAAvB;AACA,WAAKC,eAAL,GAAuB,KAAKH,gBAA5B;AACA,WAAKI,eAAL,GAAuB,OAAvB;AACA,WAAKC,eAAL,GAAuB,KAAKL,gBAA5B;AACA,WAAKM,eAAL,GAAuB,KAAKN,gBAA5B;AACA,WAAKO,eAAL,GAAuB,KAAKP,gBAA5B;AACA,WAAKQ,eAAL,GAAuB,KAAKR,gBAA5B;AAEA,WAAK1uB,aAAL,GAAqB,KAAKA,aAAL,IAAsB,KAAKgtB,gBAAhD;AACA,WAAK/sB,kBAAL,GAA0B,KAAKA,kBAAL,IAA2B,KAAKE,YAA1D;AACA,WAAKD,cAAL,GAAsB,KAAKivB,SAAL,IAAkB,KAAKjC,kBAA7C;AACA,WAAKptB,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,KAAKutB,kBAAtD;AACA,WAAKttB,qBAAL,GAA6B,KAAKA,qBAAL,IAA8B,KAAKktB,cAAhE;AACD;;;WACD,mBAAUmC,SAAV,EAAqB;AAAA;;AACnB,UAAI,QAAOA,SAAP,MAAqB,QAAzB,EAAmC;AACjC;AACA,aAAKC,YAAL;AACA;AACD;;AAED,UAAM//D,IAAI,GAAG1B,MAAM,CAAC0B,IAAP,CAAY8/D,SAAZ,CAAb,CAPmB,CASnB;;AACA9/D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD,EAVmB,CAcnB;;AACA,WAAKo2C,YAAL,GAfmB,CAgBnB;;AACA//D,MAAAA,IAAI,CAACE,OAAL,CAAa,UAACypB,CAAD,EAAO;AAClB,aAAI,CAACA,CAAD,CAAJ,GAAUm2C,SAAS,CAACn2C,CAAD,CAAnB;AACD,OAFD;AAGD;;;;;;AAGI,IAAMpqB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACygE,aAAD,EAAmB;AAClD,MAAM7hE,KAAK,GAAG,IAAIs/D,KAAJ,EAAd;AACAt/D,EAAAA,KAAK,CAAC8hE,SAAN,CAAgBD,aAAhB;AACA,SAAO7hE,KAAP;AACD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxRP;AACA;AAcA;AACA;CAGA;;AACA,IAAMkjE,YAAY,GAAG;AACnBp7D,EAAAA,UAAU,EAAEA,0CADO;AAEnB26D,EAAAA,gBAAgB,EAAEA,gDAFC;AAGnBC,EAAAA,cAAc,EAAEA,8CAHG;AAInB55C,EAAAA,WAAW,EAAEA,2CAJM;AAKnB65C,EAAAA,iBAAiB,EAAEA,iDALA;AAMnBC,EAAAA,cAAc,EAAEA,8CANG;AAOnBC,EAAAA,cAAc,EAAEA,8CAPG;AAQnBC,EAAAA,YAAY,EAAEA,4CARK;AASnBC,EAAAA,SAAS,EAAEA,yCATQ;AAUnBC,EAAAA,cAAc,EAAEA,8CAVG;AAWnBC,EAAAA,eAAe,EAAEA,+CAAeA;AAXb,CAArB;AAaA,IAAM7gE,SAAS,GACb,qGADF;AAEA,IAAM+gE,oBAAoB,GACxB,8FADF;AAEA,IAAMC,UAAU,GAAG,aAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMrJ,UAAU,GAAG,SAAbA,UAAa,CAAUl6D,IAAV,EAAgBirB,GAAhB,EAAqB;AAC7C,MAAIu4C,KAAK,GAAGC,eAAe,CAACzjE,IAAD,EAAO,6BAAP,CAA3B;AACA,MAAI0jE,OAAO,GAAG,EAAd;;AAEA,MAAIj8D,KAAK,CAACC,OAAN,CAAc87D,KAAd,CAAJ,EAA0B;AACxB,QAAI1F,IAAI,GAAG0F,KAAK,CAACjsD,GAAN,CAAU,UAACoqC,IAAD;AAAA,aAAUA,IAAI,CAACmc,IAAf;AAAA,KAAV,CAAX;AACA3B,IAAAA,kBAAkB,CAAC2B,IAAD,CAAlB;AAEA4F,IAAAA,OAAO,GAAGzjE,eAAe,CAACyjE,OAAD,qBAAc5F,IAAd,EAAzB;AACD,GALD,MAKO;AACL4F,IAAAA,OAAO,GAAGF,KAAK,CAAC1F,IAAhB;AACD;;AACD,MAAI4F,OAAJ,EAAa;AACX,QAAInzD,IAAI,GAAGisD,UAAU,CAACx8D,IAAD,EAAOirB,GAAP,CAArB;AACA,KAAC,QAAD,EAAW/oB,OAAX,CAAmB,UAACymD,IAAD,EAAU;AAC3B,UAAI,OAAO+a,OAAO,CAAC/a,IAAD,CAAd,KAAyB,WAA7B,EAA0C;AACxC,YAAIp4C,IAAI,KAAK,cAAb,EAA6B;AAC3BA,UAAAA,IAAI,GAAG,WAAP;AACD;;AACDmzD,QAAAA,OAAO,CAACnzD,IAAD,CAAP,GAAgBmzD,OAAO,CAAC/a,IAAD,CAAvB;AACA,eAAO+a,OAAO,CAAC/a,IAAD,CAAd;AACD;AACF,KARD;AASD,GAvB4C,CAyB7C;;;AACA,SAAO+a,OAAP;AACD,CA3BM;AA6BP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMD,eAAe,GAAG,SAAlBA,eAAkB,CAAUzjE,IAAV,EAA6B;AAAA,MAAbuQ,IAAa,uEAAN,IAAM;;AAC1D,MAAI;AACF,QAAMozD,wBAAwB,GAAG,IAAIv9B,MAAJ,uBAChBk9B,oBAAoB,CAACM,MADL,yBAE/B,IAF+B,CAAjC;AAIA5jE,IAAAA,IAAI,GAAGA,IAAI,CAAC+H,IAAL,GAAYb,OAAZ,CAAoBy8D,wBAApB,EAA8C,EAA9C,EAAkDz8D,OAAlD,CAA0D,KAA1D,EAAiE,GAAjE,CAAP;AACAhH,IAAAA,8CAAA,sCACgCqQ,IAAI,KAAK,IAAT,GAAgB,WAAWA,IAA3B,GAAkC,EADlE,gCAC0FvQ,IAD1F;AAGA,QAAIimB,KAAJ;AAAA,QACErP,MAAM,GAAG,EADX;;AAEA,WAAO,CAACqP,KAAK,GAAG1jB,SAAS,CAAC8gC,IAAV,CAAerjC,IAAf,CAAT,MAAmC,IAA1C,EAAgD;AAC9C;AACA,UAAIimB,KAAK,CAACuoB,KAAN,KAAgBjsC,SAAS,CAACshE,SAA9B,EAAyC;AACvCthE,QAAAA,SAAS,CAACshE,SAAV;AACD;;AACD,UACG59C,KAAK,IAAI,CAAC1V,IAAX,IACCA,IAAI,IAAI0V,KAAK,CAAC,CAAD,CAAb,IAAoBA,KAAK,CAAC,CAAD,CAAL,CAASA,KAAT,CAAe1V,IAAf,CADrB,IAECA,IAAI,IAAI0V,KAAK,CAAC,CAAD,CAAb,IAAoBA,KAAK,CAAC,CAAD,CAAL,CAASA,KAAT,CAAe1V,IAAf,CAHvB,EAIE;AACA,YAAIA,KAAI,GAAG0V,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAhB,GAAsBA,KAAK,CAAC,CAAD,CAAtC;;AACA,YAAI63C,IAAI,GAAG73C,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAL,CAASle,IAAT,EAAX,GAA6Bke,KAAK,CAAC,CAAD,CAAL,GAAW1hB,IAAI,CAACsL,KAAL,CAAWoW,KAAK,CAAC,CAAD,CAAL,CAASle,IAAT,EAAX,CAAX,GAAyC,IAAjF;AACA6O,QAAAA,MAAM,CAACnU,IAAP,CAAY;AAAE8N,UAAAA,IAAI,EAAJA,KAAF;AAAQutD,UAAAA,IAAI,EAAJA;AAAR,SAAZ;AACD;AACF;;AACD,QAAIlnD,MAAM,CAAC1V,MAAP,KAAkB,CAAtB,EAAyB;AACvB0V,MAAAA,MAAM,CAACnU,IAAP,CAAY;AAAE8N,QAAAA,IAAI,EAAEvQ,IAAR;AAAc89D,QAAAA,IAAI,EAAE;AAApB,OAAZ;AACD;;AAED,WAAOlnD,MAAM,CAAC1V,MAAP,KAAkB,CAAlB,GAAsB0V,MAAM,CAAC,CAAD,CAA5B,GAAkCA,MAAzC;AACD,GA/BD,CA+BE,OAAO1B,KAAP,EAAc;AACdhV,IAAAA,8CAAA,kBACYgV,KAAK,CAAC83B,OADlB,iDAEIz8B,IAAI,KAAK,IAAT,GAAgB,WAAWA,IAA3B,GAAkC,EAFtC,gCAE8DvQ,IAF9D;AAIA,WAAO;AAAEuQ,MAAAA,IAAI,EAAE,IAAR;AAAcutD,MAAAA,IAAI,EAAE;AAApB,KAAP;AACD;AACF,CAvCM;AAyCP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMtB,UAAU,GAAG,SAAbA,UAAa,CAAUx8D,IAAV,EAAgBirB,GAAhB,EAAqB;AAC7CjrB,EAAAA,IAAI,GAAGA,IAAI,CAACkH,OAAL,CAAa3E,SAAb,EAAwB,EAAxB,EAA4B2E,OAA5B,CAAoCq8D,UAApC,EAAgD,IAAhD,CAAP;;AACA,MAAIvjE,IAAI,CAACimB,KAAL,CAAW,qBAAX,CAAJ,EAAuC;AACrC,WAAO,UAAP;AACD;;AAED,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,WAAX,CAAJ,EAA6B;AAC3B,WAAO,OAAP;AACD;;AACD,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,qBAAX,CAAJ,EAAuC;AACrC,WAAO,cAAP;AACD;;AACD,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,kBAAX,CAAJ,EAAoC;AAClC,QAAIgF,GAAG,IAAIA,GAAG,CAAC7nB,KAAX,IAAoB6nB,GAAG,CAAC7nB,KAAJ,CAAUka,eAAV,KAA8B,eAAtD,EAAuE,OAAO,cAAP;AACvE,WAAO,OAAP;AACD;;AAED,MAAItd,IAAI,CAACimB,KAAL,CAAW,qBAAX,CAAJ,EAAuC;AACrC,WAAO,cAAP;AACD;;AAED,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,kBAAX,CAAJ,EAAoC;AAClC,QAAIgF,GAAG,IAAIA,GAAG,CAAC7nB,KAAX,IAAoB6nB,GAAG,CAACvd,KAAJ,CAAU4P,eAAV,KAA8B,eAAtD,EAAuE,OAAO,cAAP;AACvE,WAAO,OAAP;AACD;;AAED,MAAItd,IAAI,CAACimB,KAAL,CAAW,cAAX,CAAJ,EAAgC;AAC9B,WAAO,UAAP;AACD;;AACD,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,eAAX,CAAJ,EAAiC;AAC/B,WAAO,cAAP;AACD;;AAED,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,UAAX,CAAJ,EAA4B;AAC1B,WAAO,MAAP;AACD;;AACD,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,SAAX,CAAJ,EAA2B;AACzB,WAAO,KAAP;AACD;;AAED,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,eAAX,CAAJ,EAAiC;AAC/B,WAAO,IAAP;AACD;;AAED,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,aAAX,CAAJ,EAA+B;AAC7B,WAAO,SAAP;AACD;;AAED,MAAIjmB,IAAI,CAACimB,KAAL,CAAW,iBAAX,KAAiCjmB,IAAI,CAACimB,KAAL,CAAW,wBAAX,CAArC,EAA2E;AACzE,WAAO,aAAP;AACD;;AACD,MAAIgF,GAAG,IAAIA,GAAG,CAACrnB,SAAX,IAAwBqnB,GAAG,CAACrnB,SAAJ,CAAc0Z,eAAd,KAAkC,eAA9D,EACE,OAAO,cAAP;AAEF,SAAO,WAAP;AACD,CAvDM;AAyDP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMwmD,OAAO,GAAG,SAAVA,OAAU,CAACp3B,EAAD,EAAKq3B,QAAL,EAAkB;AAChC,MAAIC,KAAK,GAAG,EAAZ;AACA,SAAO,YAAa;AAAA,sCAATlG,IAAS;AAATA,MAAAA,IAAS;AAAA;;AAClB,QAAIxtD,CAAC,GAAGyzD,QAAQ,GAAGA,QAAQ,CAACxoC,KAAT,CAAe,KAAf,EAAqBuiC,IAArB,CAAH,GAAgCA,IAAI,CAAC,CAAD,CAApD;;AACA,QAAIxtD,CAAC,IAAI0zD,KAAT,EAAgB;AACd,aAAOA,KAAK,CAAC1zD,CAAD,CAAZ;AACD,KAFD,MAEO;AACL,UAAIsG,MAAM,GAAG81B,EAAE,MAAF,SAAMoxB,IAAN,CAAb;AACAkG,MAAAA,KAAK,CAAC1zD,CAAD,CAAL,GAAWsG,MAAX;AACA,aAAOA,MAAP;AACD;AACF,GATD;AAUD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMojB,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUze,GAAV,EAAeovB,GAAf,EAAoB;AACpD,OAAK,IAAI1pC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0pC,GAAG,CAACzpC,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,QAAI0pC,GAAG,CAAC1pC,CAAD,CAAH,CAAOglB,KAAP,CAAa1K,GAAb,CAAJ,EAAuB,OAAOta,CAAP;AACxB;;AACD,SAAO,CAAC,CAAR;AACD,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMioB,kBAAkB,GAAG,SAArBA,kBAAqB,CAACqB,WAAD,EAAc05C,YAAd,EAA+B;AAC/D,MAAI,CAAC15C,WAAL,EAAkB;AAChB,WAAO05C,YAAP;AACD;;AACD,MAAMC,SAAS,kBAAW35C,WAAW,CAAC1D,MAAZ,CAAmB,CAAnB,EAAsBs9C,WAAtB,KAAsC55C,WAAW,CAAC7d,KAAZ,CAAkB,CAAlB,CAAjD,CAAf;AACA,SAAO22D,YAAY,CAACa,SAAD,CAAZ,IAA2BD,YAAlC;AACD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM59C,SAAS,GAAG,SAAZA,SAAY,CAACD,OAAD,EAAUhmB,MAAV,EAAqB;AAC5C,MAAIqN,GAAG,GAAG2Y,OAAO,CAACre,IAAR,EAAV;;AAEA,MAAI0F,GAAJ,EAAS;AACP,QAAIrN,MAAM,CAACgc,aAAP,KAAyB,OAA7B,EAAsC;AACpC,aAAO0jB,oEAAW,CAACryB,GAAD,CAAlB;AACD;;AAED,WAAOA,GAAP;AACD;AACF,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMuZ,OAAO,GAAG,SAAVA,OAAU,CAACT,YAAD,EAA6B;AAAA;;AAClD,MAAM69C,QAAQ,GAAG79C,YAAY,CAAC/e,KAAb,CAAmB,GAAnB,CAAjB;AAEA,MAAMuwB,GAAG,GAAGqsC,QAAQ,CAACljE,MAAT,GAAkB,CAA9B;AACA,MAAMmjE,MAAM,GAAGD,QAAQ,CAACrsC,GAAD,CAAvB;AAEA,MAAI7U,GAAG,GAAGtV,MAAV;;AACA,OAAK,IAAI3M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG82B,GAApB,EAAyB92B,CAAC,EAA1B,EAA8B;AAC5BiiB,IAAAA,GAAG,GAAGA,GAAG,CAACkhD,QAAQ,CAACnjE,CAAD,CAAT,CAAT;AACA,QAAI,CAACiiB,GAAL,EAAU;AACX;;AAViD,qCAAXohD,MAAW;AAAXA,IAAAA,MAAW;AAAA;;AAYlD,UAAAphD,GAAG,EAACmhD,MAAD,CAAH,aAAeC,MAAf;AACD,CAbM;AAeP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACjzD,EAAD,EAAKC,EAAL;AAAA,SACfD,EAAE,IAAIC,EAAN,GAAWhH,IAAI,CAAC6G,IAAL,CAAU7G,IAAI,CAACi6D,GAAL,CAASjzD,EAAE,CAAC3M,CAAH,GAAO0M,EAAE,CAAC1M,CAAnB,EAAsB,CAAtB,IAA2B2F,IAAI,CAACi6D,GAAL,CAASjzD,EAAE,CAAC1M,CAAH,GAAOyM,EAAE,CAACzM,CAAnB,EAAsB,CAAtB,CAArC,CAAX,GAA4E,CAD7D;AAAA,CAAjB;AAGA;AACA;AACA;AACA;AACA;;;AACA,IAAM4/D,YAAY,GAAG,SAAfA,YAAe,CAAC/4D,MAAD,EAAY;AAC/B,MAAIg5D,SAAJ;AACA,MAAIC,aAAa,GAAG,CAApB;AAEAj5D,EAAAA,MAAM,CAACxJ,OAAP,CAAe,UAAC8C,KAAD,EAAW;AACxB2/D,IAAAA,aAAa,IAAIJ,QAAQ,CAACv/D,KAAD,EAAQ0/D,SAAR,CAAzB;AACAA,IAAAA,SAAS,GAAG1/D,KAAZ;AACD,GAHD,EAJ+B,CAS/B;;AACA,MAAI4/D,iBAAiB,GAAGD,aAAa,GAAG,CAAxC;AACA,MAAI3X,MAAM,GAAGvpD,SAAb;AACAihE,EAAAA,SAAS,GAAGjhE,SAAZ;AACAiI,EAAAA,MAAM,CAACxJ,OAAP,CAAe,UAAC8C,KAAD,EAAW;AACxB,QAAI0/D,SAAS,IAAI,CAAC1X,MAAlB,EAA0B;AACxB,UAAM6X,cAAc,GAAGN,QAAQ,CAACv/D,KAAD,EAAQ0/D,SAAR,CAA/B;;AACA,UAAIG,cAAc,GAAGD,iBAArB,EAAwC;AACtCA,QAAAA,iBAAiB,IAAIC,cAArB;AACD,OAFD,MAEO;AACL;AACA;AACA,YAAMC,aAAa,GAAGF,iBAAiB,GAAGC,cAA1C;AACA,YAAIC,aAAa,IAAI,CAArB,EAAwB9X,MAAM,GAAG0X,SAAT;AACxB,YAAII,aAAa,IAAI,CAArB,EAAwB9X,MAAM,GAAG;AAAEpoD,UAAAA,CAAC,EAAEI,KAAK,CAACJ,CAAX;AAAcC,UAAAA,CAAC,EAAEG,KAAK,CAACH;AAAvB,SAAT;;AACxB,YAAIigE,aAAa,GAAG,CAAhB,IAAqBA,aAAa,GAAG,CAAzC,EAA4C;AAC1C9X,UAAAA,MAAM,GAAG;AACPpoD,YAAAA,CAAC,EAAE,CAAC,IAAIkgE,aAAL,IAAsBJ,SAAS,CAAC9/D,CAAhC,GAAoCkgE,aAAa,GAAG9/D,KAAK,CAACJ,CADtD;AAEPC,YAAAA,CAAC,EAAE,CAAC,IAAIigE,aAAL,IAAsBJ,SAAS,CAAC7/D,CAAhC,GAAoCigE,aAAa,GAAG9/D,KAAK,CAACH;AAFtD,WAAT;AAID;AACF;AACF;;AACD6/D,IAAAA,SAAS,GAAG1/D,KAAZ;AACD,GApBD;AAqBA,SAAOgoD,MAAP;AACD,CAnCD;AAqCA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM/iD,iBAAiB,GAAG,SAApBA,iBAAoB,CAACyB,MAAD,EAAY;AACpC,SAAO+4D,YAAY,CAAC/4D,MAAD,CAAnB;AACD,CAFD;;AAIA,IAAM0hB,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAC23C,qBAAD,EAAwBr5D,MAAxB,EAAgCs5D,eAAhC,EAAoD;AAClF,MAAIN,SAAJ;AACA,MAAIC,aAAa,GAAG,CAApB,CAFkF,CAE3D;;AACvBzkE,EAAAA,6CAAA,CAAS,YAAT,EAAuBwL,MAAvB;;AACA,MAAIA,MAAM,CAAC,CAAD,CAAN,KAAcs5D,eAAlB,EAAmC;AACjCt5D,IAAAA,MAAM,GAAGA,MAAM,CAACoB,OAAP,EAAT;AACD;;AACDpB,EAAAA,MAAM,CAACxJ,OAAP,CAAe,UAAC8C,KAAD,EAAW;AACxB2/D,IAAAA,aAAa,IAAIJ,QAAQ,CAACv/D,KAAD,EAAQ0/D,SAAR,CAAzB;AACAA,IAAAA,SAAS,GAAG1/D,KAAZ;AACD,GAHD,EAPkF,CAYlF;;AACA,MAAMigE,0BAA0B,GAAG,EAAnC;AAEA,MAAIL,iBAAiB,GAAGK,0BAAxB;AACA,MAAIjY,MAAJ;AACA0X,EAAAA,SAAS,GAAGjhE,SAAZ;AACAiI,EAAAA,MAAM,CAACxJ,OAAP,CAAe,UAAC8C,KAAD,EAAW;AACxB,QAAI0/D,SAAS,IAAI,CAAC1X,MAAlB,EAA0B;AACxB,UAAM6X,cAAc,GAAGN,QAAQ,CAACv/D,KAAD,EAAQ0/D,SAAR,CAA/B;;AACA,UAAIG,cAAc,GAAGD,iBAArB,EAAwC;AACtCA,QAAAA,iBAAiB,IAAIC,cAArB;AACD,OAFD,MAEO;AACL;AACA;AACA,YAAMC,aAAa,GAAGF,iBAAiB,GAAGC,cAA1C;AACA,YAAIC,aAAa,IAAI,CAArB,EAAwB9X,MAAM,GAAG0X,SAAT;AACxB,YAAII,aAAa,IAAI,CAArB,EAAwB9X,MAAM,GAAG;AAAEpoD,UAAAA,CAAC,EAAEI,KAAK,CAACJ,CAAX;AAAcC,UAAAA,CAAC,EAAEG,KAAK,CAACH;AAAvB,SAAT;;AACxB,YAAIigE,aAAa,GAAG,CAAhB,IAAqBA,aAAa,GAAG,CAAzC,EAA4C;AAC1C9X,UAAAA,MAAM,GAAG;AACPpoD,YAAAA,CAAC,EAAE,CAAC,IAAIkgE,aAAL,IAAsBJ,SAAS,CAAC9/D,CAAhC,GAAoCkgE,aAAa,GAAG9/D,KAAK,CAACJ,CADtD;AAEPC,YAAAA,CAAC,EAAE,CAAC,IAAIigE,aAAL,IAAsBJ,SAAS,CAAC7/D,CAAhC,GAAoCigE,aAAa,GAAG9/D,KAAK,CAACH;AAFtD,WAAT;AAID;AACF;AACF;;AACD6/D,IAAAA,SAAS,GAAG1/D,KAAZ;AACD,GApBD,EAlBkF,CAuClF;;AACA,MAAI7D,CAAC,GAAG4jE,qBAAqB,GAAG,EAAH,GAAQ,CAArC,CAxCkF,CAyClF;;AACA,MAAIG,KAAK,GAAG36D,IAAI,CAAC46D,KAAL,CAAWz5D,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAhC,EAAmC6G,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAxD,CAAZ;AACA,MAAIwgE,mBAAmB,GAAG;AAAExgE,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAA1B,CA3CkF,CA4ClF;;AACAugE,EAAAA,mBAAmB,CAACxgE,CAApB,GAAwB2F,IAAI,CAAC86D,GAAL,CAASH,KAAT,IAAkB/jE,CAAlB,GAAsB,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAtB,IAA2B,CAAzE;AACAwgE,EAAAA,mBAAmB,CAACvgE,CAApB,GAAwB,CAAC0F,IAAI,CAAC+6D,GAAL,CAASJ,KAAT,CAAD,GAAmB/jE,CAAnB,GAAuB,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAtB,IAA2B,CAA1E;AACA,SAAOugE,mBAAP;AACD,CAhDD;AAkDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMl7D,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACq7D,kBAAD,EAAqBzS,QAArB,EAA+BtnD,OAA/B,EAA2C;AAC3E;AACA,MAAIE,MAAM,GAAGnH,IAAI,CAACsL,KAAL,CAAWtL,IAAI,CAACC,SAAL,CAAegH,OAAf,CAAX,CAAb;AACA,MAAIk5D,SAAJ;AACA,MAAIC,aAAa,GAAG,CAApB,CAJ2E,CAIpD;;AACvBzkE,EAAAA,6CAAA,CAAS,YAAT,EAAuBwL,MAAvB;;AACA,MAAIonD,QAAQ,KAAK,YAAb,IAA6BA,QAAQ,KAAK,aAA9C,EAA6D;AAC3DpnD,IAAAA,MAAM,GAAGA,MAAM,CAACoB,OAAP,EAAT;AACD;;AAEDpB,EAAAA,MAAM,CAACxJ,OAAP,CAAe,UAAC8C,KAAD,EAAW;AACxB2/D,IAAAA,aAAa,IAAIJ,QAAQ,CAACv/D,KAAD,EAAQ0/D,SAAR,CAAzB;AACAA,IAAAA,SAAS,GAAG1/D,KAAZ;AACD,GAHD,EAV2E,CAe3E;;AACA,MAAMigE,0BAA0B,GAAG,KAAKM,kBAAxC;AAEA,MAAIX,iBAAiB,GAAGK,0BAAxB;AACA,MAAIjY,MAAJ;AACA0X,EAAAA,SAAS,GAAGjhE,SAAZ;AACAiI,EAAAA,MAAM,CAACxJ,OAAP,CAAe,UAAC8C,KAAD,EAAW;AACxB,QAAI0/D,SAAS,IAAI,CAAC1X,MAAlB,EAA0B;AACxB,UAAM6X,cAAc,GAAGN,QAAQ,CAACv/D,KAAD,EAAQ0/D,SAAR,CAA/B;;AACA,UAAIG,cAAc,GAAGD,iBAArB,EAAwC;AACtCA,QAAAA,iBAAiB,IAAIC,cAArB;AACD,OAFD,MAEO;AACL;AACA;AACA,YAAMC,aAAa,GAAGF,iBAAiB,GAAGC,cAA1C;AACA,YAAIC,aAAa,IAAI,CAArB,EAAwB9X,MAAM,GAAG0X,SAAT;AACxB,YAAII,aAAa,IAAI,CAArB,EAAwB9X,MAAM,GAAG;AAAEpoD,UAAAA,CAAC,EAAEI,KAAK,CAACJ,CAAX;AAAcC,UAAAA,CAAC,EAAEG,KAAK,CAACH;AAAvB,SAAT;;AACxB,YAAIigE,aAAa,GAAG,CAAhB,IAAqBA,aAAa,GAAG,CAAzC,EAA4C;AAC1C9X,UAAAA,MAAM,GAAG;AACPpoD,YAAAA,CAAC,EAAE,CAAC,IAAIkgE,aAAL,IAAsBJ,SAAS,CAAC9/D,CAAhC,GAAoCkgE,aAAa,GAAG9/D,KAAK,CAACJ,CADtD;AAEPC,YAAAA,CAAC,EAAE,CAAC,IAAIigE,aAAL,IAAsBJ,SAAS,CAAC7/D,CAAhC,GAAoCigE,aAAa,GAAG9/D,KAAK,CAACH;AAFtD,WAAT;AAID;AACF;AACF;;AACD6/D,IAAAA,SAAS,GAAG1/D,KAAZ;AACD,GApBD,EArB2E,CA0C3E;;AACA,MAAI7D,CAAC,GAAG,KAAKokE,kBAAkB,GAAG,GAAlC,CA3C2E,CA4C3E;;AACA,MAAIL,KAAK,GAAG36D,IAAI,CAAC46D,KAAL,CAAWz5D,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAhC,EAAmC6G,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAxD,CAAZ;AAEA,MAAIwgE,mBAAmB,GAAG;AAAExgE,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAA1B,CA/C2E,CAiD3E;;AAEAugE,EAAAA,mBAAmB,CAACxgE,CAApB,GAAwB2F,IAAI,CAAC86D,GAAL,CAASH,KAAT,IAAkB/jE,CAAlB,GAAsB,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAtB,IAA2B,CAAzE;AACAwgE,EAAAA,mBAAmB,CAACvgE,CAApB,GAAwB,CAAC0F,IAAI,CAAC+6D,GAAL,CAASJ,KAAT,CAAD,GAAmB/jE,CAAnB,GAAuB,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAtB,IAA2B,CAA1E;;AACA,MAAIiuD,QAAQ,KAAK,YAAjB,EAA+B;AAC7BsS,IAAAA,mBAAmB,CAACxgE,CAApB,GAAwB2F,IAAI,CAAC86D,GAAL,CAASH,KAAK,GAAG36D,IAAI,CAACiuD,EAAtB,IAA4Br3D,CAA5B,GAAgC,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAtB,IAA2B,CAAnF;AACAwgE,IAAAA,mBAAmB,CAACvgE,CAApB,GAAwB,CAAC0F,IAAI,CAAC+6D,GAAL,CAASJ,KAAK,GAAG36D,IAAI,CAACiuD,EAAtB,CAAD,GAA6Br3D,CAA7B,GAAiC,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAtB,IAA2B,CAApF;AACD;;AACD,MAAIiuD,QAAQ,KAAK,WAAjB,EAA8B;AAC5BsS,IAAAA,mBAAmB,CAACxgE,CAApB,GAAwB2F,IAAI,CAAC86D,GAAL,CAASH,KAAK,GAAG36D,IAAI,CAACiuD,EAAtB,IAA4Br3D,CAA5B,GAAgC,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAtB,IAA2B,CAA3D,GAA+D,CAAvF;AACAwgE,IAAAA,mBAAmB,CAACvgE,CAApB,GAAwB,CAAC0F,IAAI,CAAC+6D,GAAL,CAASJ,KAAK,GAAG36D,IAAI,CAACiuD,EAAtB,CAAD,GAA6Br3D,CAA7B,GAAiC,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAtB,IAA2B,CAA5D,GAAgE,CAAxF;AACD;;AACD,MAAIiuD,QAAQ,KAAK,UAAjB,EAA6B;AAC3BsS,IAAAA,mBAAmB,CAACxgE,CAApB,GAAwB2F,IAAI,CAAC86D,GAAL,CAASH,KAAT,IAAkB/jE,CAAlB,GAAsB,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU9G,CAAV,GAAcooD,MAAM,CAACpoD,CAAtB,IAA2B,CAAjD,GAAqD,CAA7E;AACAwgE,IAAAA,mBAAmB,CAACvgE,CAApB,GAAwB,CAAC0F,IAAI,CAAC+6D,GAAL,CAASJ,KAAT,CAAD,GAAmB/jE,CAAnB,GAAuB,CAACuK,MAAM,CAAC,CAAD,CAAN,CAAU7G,CAAV,GAAcmoD,MAAM,CAACnoD,CAAtB,IAA2B,CAAlD,GAAsD,CAA9E;AACD;;AACD,SAAOugE,mBAAP;AACD,CAlED;AAoEA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMj8C,kBAAkB,GAAG,SAArBA,kBAAqB,CAACwhB,GAAD,EAAS;AACzC,MAAIlmC,KAAK,GAAG,EAAZ;AACA,MAAIjB,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAIvC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0pC,GAAG,CAACzpC,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,QAAI,OAAO0pC,GAAG,CAAC1pC,CAAD,CAAV,KAAkB,WAAtB,EAAmC;AACjC;AACA,UAAI0pC,GAAG,CAAC1pC,CAAD,CAAH,CAAOwkB,UAAP,CAAkB,QAAlB,KAA+BklB,GAAG,CAAC1pC,CAAD,CAAH,CAAOwkB,UAAP,CAAkB,aAAlB,CAAnC,EAAqE;AACnEjiB,QAAAA,UAAU,GAAGA,UAAU,GAAGmnC,GAAG,CAAC1pC,CAAD,CAAhB,GAAsB,GAAnC;AACD,OAFD,MAEO;AACLwD,QAAAA,KAAK,GAAGA,KAAK,GAAGkmC,GAAG,CAAC1pC,CAAD,CAAX,GAAiB,GAAzB;AACD;AACF;AACF;;AAED,SAAO;AAAEwD,IAAAA,KAAK,EAAEA,KAAT;AAAgBjB,IAAAA,UAAU,EAAEA;AAA5B,GAAP;AACD,CAhBM;AAkBP,IAAIumB,GAAG,GAAG,CAAV;AACO,IAAMwmC,UAAU,GAAG,SAAbA,UAAa,GAAM;AAC9BxmC,EAAAA,GAAG;AACH,SAAO,QAAQxf,IAAI,CAAC4hC,MAAL,GAActD,QAAd,CAAuB,EAAvB,EAA2B/iB,MAA3B,CAAkC,CAAlC,EAAqC,EAArC,CAAR,GAAmD,GAAnD,GAAyDiE,GAAhE;AACD,CAHM;AAKP;AACA;AACA;AACA;;AACA,SAASy7C,MAAT,CAAgBtkE,MAAhB,EAAwB;AACtB,MAAI0V,MAAM,GAAG,EAAb;AACA,MAAI6uD,UAAU,GAAG,kBAAjB;AACA,MAAIC,gBAAgB,GAAGD,UAAU,CAACvkE,MAAlC;;AACA,OAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,MAApB,EAA4BD,CAAC,EAA7B,EAAiC;AAC/B2V,IAAAA,MAAM,IAAI6uD,UAAU,CAAC5+C,MAAX,CAAkBtc,IAAI,CAACo7D,KAAL,CAAWp7D,IAAI,CAAC4hC,MAAL,KAAgBu5B,gBAA3B,CAAlB,CAAV;AACD;;AACD,SAAO9uD,MAAP;AACD;;AAEM,IAAMu1B,MAAM,GAAG,SAATA,MAAS,CAACpqC,OAAD,EAAa;AACjC,SAAOyjE,MAAM,CAACzjE,OAAO,CAACb,MAAT,CAAb;AACD,CAFM;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMjB,eAAe,GAAG,SAAlBA,eAAkB,CAAUy4C,GAAV,EAAeD,GAAf,EAAoBr4C,MAApB,EAA4B;AACzD,uBAA2BE,MAAM,CAACuW,MAAP,CAAc;AAAEnB,IAAAA,KAAK,EAAE,CAAT;AAAYkwD,IAAAA,OAAO,EAAE;AAArB,GAAd,EAA4CxlE,MAA5C,CAA3B;AAAA,MAAQsV,KAAR,kBAAQA,KAAR;AAAA,MAAekwD,OAAf,kBAAeA,OAAf;;AACA,MAAIn+D,KAAK,CAACC,OAAN,CAAc+wC,GAAd,KAAsB,CAAChxC,KAAK,CAACC,OAAN,CAAcgxC,GAAd,CAA3B,EAA+C;AAC7CD,IAAAA,GAAG,CAACv2C,OAAJ,CAAY,UAACiF,CAAD;AAAA,aAAOlH,eAAe,CAACy4C,GAAD,EAAMvxC,CAAN,EAAS/G,MAAT,CAAtB;AAAA,KAAZ;AACA,WAAOs4C,GAAP;AACD,GAHD,MAGO,IAAIjxC,KAAK,CAACC,OAAN,CAAc+wC,GAAd,KAAsBhxC,KAAK,CAACC,OAAN,CAAcgxC,GAAd,CAA1B,EAA8C;AACnDD,IAAAA,GAAG,CAACv2C,OAAJ,CAAY,UAACiF,CAAD,EAAO;AACjB,UAAIuxC,GAAG,CAACr2C,OAAJ,CAAY8E,CAAZ,MAAmB,CAAC,CAAxB,EAA2B;AACzBuxC,QAAAA,GAAG,CAACj2C,IAAJ,CAAS0E,CAAT;AACD;AACF,KAJD;AAKA,WAAOuxC,GAAP;AACD;;AACD,MAAI,OAAOA,GAAP,KAAe,WAAf,IAA8BhjC,KAAK,IAAI,CAA3C,EAA8C;AAC5C,QAAIgjC,GAAG,KAAKj1C,SAAR,IAAqBi1C,GAAG,KAAK,IAA7B,IAAqC,QAAOA,GAAP,MAAe,QAApD,IAAgE,QAAOD,GAAP,MAAe,QAAnF,EAA6F;AAC3F,aAAOn4C,MAAM,CAACuW,MAAP,CAAc6hC,GAAd,EAAmBD,GAAnB,CAAP;AACD,KAFD,MAEO;AACL,aAAOA,GAAP;AACD;AACF;;AACD,MAAI,OAAOA,GAAP,KAAe,WAAf,IAA8B,QAAOC,GAAP,MAAe,QAA7C,IAAyD,QAAOD,GAAP,MAAe,QAA5E,EAAsF;AACpFn4C,IAAAA,MAAM,CAAC0B,IAAP,CAAYy2C,GAAZ,EAAiBv2C,OAAjB,CAAyB,UAACC,GAAD,EAAS;AAChC,UACE,QAAOs2C,GAAG,CAACt2C,GAAD,CAAV,MAAoB,QAApB,KACCu2C,GAAG,CAACv2C,GAAD,CAAH,KAAasB,SAAb,IAA0B,QAAOi1C,GAAG,CAACv2C,GAAD,CAAV,MAAoB,QAD/C,CADF,EAGE;AACA,YAAIu2C,GAAG,CAACv2C,GAAD,CAAH,KAAasB,SAAjB,EAA4B;AAC1Bi1C,UAAAA,GAAG,CAACv2C,GAAD,CAAH,GAAWsF,KAAK,CAACC,OAAN,CAAc+wC,GAAG,CAACt2C,GAAD,CAAjB,IAA0B,EAA1B,GAA+B,EAA1C;AACD;;AACDu2C,QAAAA,GAAG,CAACv2C,GAAD,CAAH,GAAWlC,eAAe,CAACy4C,GAAG,CAACv2C,GAAD,CAAJ,EAAWs2C,GAAG,CAACt2C,GAAD,CAAd,EAAqB;AAAEuT,UAAAA,KAAK,EAAEA,KAAK,GAAG,CAAjB;AAAoBkwD,UAAAA,OAAO,EAAPA;AAApB,SAArB,CAA1B;AACD,OARD,MAQO,IAAIA,OAAO,IAAK,QAAOltB,GAAG,CAACv2C,GAAD,CAAV,MAAoB,QAApB,IAAgC,QAAOs2C,GAAG,CAACt2C,GAAD,CAAV,MAAoB,QAApE,EAA+E;AACpFu2C,QAAAA,GAAG,CAACv2C,GAAD,CAAH,GAAWs2C,GAAG,CAACt2C,GAAD,CAAd;AACD;AACF,KAZD;AAaD;;AACD,SAAOu2C,GAAP;AACD,CApCM;AAsCA,IAAMqL,UAAU,GAAG,SAAbA,UAAa,GAAY;AACpC,SAAO;AACLn/C,IAAAA,CAAC,EAAE,CADE;AAELC,IAAAA,CAAC,EAAE,CAFE;AAGLod,IAAAA,IAAI,EAAExe,SAHD;AAILugD,IAAAA,MAAM,EAAE,OAJH;AAKLv/C,IAAAA,KAAK,EAAE,MALF;AAMLP,IAAAA,KAAK,EAAE,GANF;AAOLC,IAAAA,MAAM,EAAE,GAPH;AAQL8/C,IAAAA,UAAU,EAAE,CARP;AASLv/C,IAAAA,EAAE,EAAE,CATC;AAULC,IAAAA,EAAE,EAAE,CAVC;AAWLu/C,IAAAA,MAAM,EAAEzgD;AAXH,GAAP;AAaD,CAdM;AAgBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMoiE,cAAc,GAAG,SAAjBA,cAAiB,CAAUngE,IAAV,EAAgB0mD,QAAhB,EAA0B;AACtD;AACA,MAAMwD,KAAK,GAAGxD,QAAQ,CAACpsD,IAAT,CAAckH,OAAd,CAAsBqc,8EAAtB,EAA6C,GAA7C,CAAd;AAEA,MAAM4gC,QAAQ,GAAGz+C,IAAI,CAACL,MAAL,CAAY,MAAZ,CAAjB;AACA8+C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACxnD,CAA5B;AACAu/C,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,GAAd,EAAmBqsD,QAAQ,CAACvnD,CAA5B;AACAs/C,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAACpI,MAAvC;AACAG,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAAC5pD,UAAvC;AACA2hD,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,WAAf,EAA4B2nD,QAAQ,CAAC/sC,QAArC;AACA8kC,EAAAA,QAAQ,CAAC1/C,KAAT,CAAe,aAAf,EAA8B2nD,QAAQ,CAAC9sC,UAAvC;AACA6kC,EAAAA,QAAQ,CAACpkD,IAAT,CAAc,MAAd,EAAsBqsD,QAAQ,CAACnqC,IAA/B;;AACA,MAAI,OAAOmqC,QAAQ,CAAChpD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC+gD,IAAAA,QAAQ,CAACpkD,IAAT,CAAc,OAAd,EAAuBqsD,QAAQ,CAAChpD,KAAhC;AACD;;AAED,MAAMspD,IAAI,GAAGvI,QAAQ,CAAC9+C,MAAT,CAAgB,OAAhB,CAAb;AACAqnD,EAAAA,IAAI,CAAC3sD,IAAL,CAAU,GAAV,EAAeqsD,QAAQ,CAACxnD,CAAT,GAAawnD,QAAQ,CAACnI,UAAT,GAAsB,CAAlD;AACAyI,EAAAA,IAAI,CAAC3sD,IAAL,CAAU,MAAV,EAAkBqsD,QAAQ,CAACnqC,IAA3B;AACAyqC,EAAAA,IAAI,CAAC1sD,IAAL,CAAU4vD,KAAV;AAEA,SAAOzL,QAAP;AACD,CAtBM;AAwBA,IAAMqC,SAAS,GAAGsd,OAAO,CAC9B,UAACzgE,KAAD,EAAQmX,QAAR,EAAkBpa,MAAlB,EAA6B;AAC3B,MAAI,CAACiD,KAAL,EAAY;AACV,WAAOA,KAAP;AACD;;AACDjD,EAAAA,MAAM,GAAGE,MAAM,CAACuW,MAAP,CACP;AAAEwI,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC9c,IAAAA,UAAU,EAAE,OAA7C;AAAsDsjE,IAAAA,QAAQ,EAAE;AAAhE,GADO,EAEP1lE,MAFO,CAAT;;AAIA,MAAImjB,mFAAA,CAA2BlgB,KAA3B,CAAJ,EAAuC;AACrC,WAAOA,KAAP;AACD;;AACD,MAAM0iE,KAAK,GAAG1iE,KAAK,CAACmE,KAAN,CAAY,GAAZ,CAAd;AACA,MAAMw+D,cAAc,GAAG,EAAvB;AACA,MAAIC,QAAQ,GAAG,EAAf;AACAF,EAAAA,KAAK,CAAC7jE,OAAN,CAAc,UAAC6oC,IAAD,EAAOyD,KAAP,EAAiB;AAC7B,QAAM03B,UAAU,GAAGC,kBAAkB,WAAIp7B,IAAJ,QAAa3qC,MAAb,CAArC;AACA,QAAMgmE,cAAc,GAAGD,kBAAkB,CAACF,QAAD,EAAW7lE,MAAX,CAAzC;;AACA,QAAI8lE,UAAU,GAAG1rD,QAAjB,EAA2B;AACzB,yBAA6C6rD,WAAW,CAACt7B,IAAD,EAAOvwB,QAAP,EAAiB,GAAjB,EAAsBpa,MAAtB,CAAxD;AAAA,UAAQkmE,iBAAR,gBAAQA,iBAAR;AAAA,UAA2BC,aAA3B,gBAA2BA,aAA3B;;AACAP,MAAAA,cAAc,CAACvjE,IAAf,OAAAujE,cAAc,GAAMC,QAAN,4BAAmBK,iBAAnB,GAAd;AACAL,MAAAA,QAAQ,GAAGM,aAAX;AACD,KAJD,MAIO,IAAIH,cAAc,GAAGF,UAAjB,IAA+B1rD,QAAnC,EAA6C;AAClDwrD,MAAAA,cAAc,CAACvjE,IAAf,CAAoBwjE,QAApB;AACAA,MAAAA,QAAQ,GAAGl7B,IAAX;AACD,KAHM,MAGA;AACLk7B,MAAAA,QAAQ,GAAG,CAACA,QAAD,EAAWl7B,IAAX,EAAiB/9B,MAAjB,CAAwBw5D,OAAxB,EAAiChvD,IAAjC,CAAsC,GAAtC,CAAX;AACD;;AACD,QAAMivD,WAAW,GAAGj4B,KAAK,GAAG,CAA5B;AACA,QAAMk4B,UAAU,GAAGD,WAAW,KAAKV,KAAK,CAAC7kE,MAAzC;;AACA,QAAIwlE,UAAJ,EAAgB;AACdV,MAAAA,cAAc,CAACvjE,IAAf,CAAoBwjE,QAApB;AACD;AACF,GAlBD;AAmBA,SAAOD,cAAc,CAACh5D,MAAf,CAAsB,UAAChF,IAAD;AAAA,WAAUA,IAAI,KAAK,EAAnB;AAAA,GAAtB,EAA6CwP,IAA7C,CAAkDpX,MAAM,CAAC0lE,QAAzD,CAAP;AACD,CAnC6B,EAoC9B,UAACziE,KAAD,EAAQmX,QAAR,EAAkBpa,MAAlB;AAAA,mBACKiD,KADL,cACcmX,QADd,cAC0Bpa,MAAM,CAACif,QADjC,cAC6Cjf,MAAM,CAACkf,UADpD,cACkElf,MAAM,CAACoC,UADzE,cACuFpC,MAAM,CAAC0lE,QAD9F;AAAA,CApC8B,CAAzB;AAwCP,IAAMO,WAAW,GAAGvC,OAAO,CACzB,UAAC/4B,IAAD,EAAOvwB,QAAP,EAAmD;AAAA,MAAlCmsD,eAAkC,uEAAhB,GAAgB;AAAA,MAAXvmE,MAAW;AACjDA,EAAAA,MAAM,GAAGE,MAAM,CAACuW,MAAP,CACP;AAAEwI,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC9c,IAAAA,UAAU,EAAE,OAA7C;AAAsDqxC,IAAAA,MAAM,EAAE;AAA9D,GADO,EAEPzzC,MAFO,CAAT;AAIA,MAAMqlE,UAAU,GAAG16B,IAAI,CAACvjC,KAAL,CAAW,EAAX,CAAnB;AACA,MAAM+8C,KAAK,GAAG,EAAd;AACA,MAAIqiB,WAAW,GAAG,EAAlB;AACAnB,EAAAA,UAAU,CAACvjE,OAAX,CAAmB,UAAC2kE,SAAD,EAAYr4B,KAAZ,EAAsB;AACvC,QAAMy3B,QAAQ,aAAMW,WAAN,SAAoBC,SAApB,CAAd;AACA,QAAMC,SAAS,GAAGX,kBAAkB,CAACF,QAAD,EAAW7lE,MAAX,CAApC;;AACA,QAAI0mE,SAAS,IAAItsD,QAAjB,EAA2B;AACzB,UAAMusD,gBAAgB,GAAGv4B,KAAK,GAAG,CAAjC;AACA,UAAMw4B,UAAU,GAAGvB,UAAU,CAACvkE,MAAX,KAAsB6lE,gBAAzC;AACA,UAAME,kBAAkB,aAAMhB,QAAN,SAAiBU,eAAjB,CAAxB;AACApiB,MAAAA,KAAK,CAAC9hD,IAAN,CAAWukE,UAAU,GAAGf,QAAH,GAAcgB,kBAAnC;AACAL,MAAAA,WAAW,GAAG,EAAd;AACD,KAND,MAMO;AACLA,MAAAA,WAAW,GAAGX,QAAd;AACD;AACF,GAZD;AAaA,SAAO;AAAEK,IAAAA,iBAAiB,EAAE/hB,KAArB;AAA4BgiB,IAAAA,aAAa,EAAEK;AAA3C,GAAP;AACD,CAvBwB,EAwBzB,UAAC77B,IAAD,EAAOvwB,QAAP;AAAA,MAAiBmsD,eAAjB,uEAAmC,GAAnC;AAAA,MAAwCvmE,MAAxC;AAAA,mBACK2qC,IADL,cACavwB,QADb,cACyBmsD,eADzB,cAC4CvmE,MAAM,CAACif,QADnD,cAC+Djf,MAAM,CAACkf,UADtE,cACoFlf,MAAM,CAACoC,UAD3F;AAAA,CAxByB,CAA3B;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM0kE,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAUlnE,IAAV,EAAgBI,MAAhB,EAAwB;AACzDA,EAAAA,MAAM,GAAGE,MAAM,CAACuW,MAAP,CACP;AAAEwI,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC9c,IAAAA,UAAU,EAAE,OAA7C;AAAsDqxC,IAAAA,MAAM,EAAE;AAA9D,GADO,EAEPzzC,MAFO,CAAT;AAIA,SAAOqkD,uBAAuB,CAACzkD,IAAD,EAAOI,MAAP,CAAvB,CAAsC+D,MAA7C;AACD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMgiE,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUnmE,IAAV,EAAgBI,MAAhB,EAAwB;AACxDA,EAAAA,MAAM,GAAGE,MAAM,CAACuW,MAAP,CAAc;AAAEwI,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC9c,IAAAA,UAAU,EAAE;AAA7C,GAAd,EAAsEpC,MAAtE,CAAT;AACA,SAAOqkD,uBAAuB,CAACzkD,IAAD,EAAOI,MAAP,CAAvB,CAAsC8D,KAA7C;AACD,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMugD,uBAAuB,GAAGqf,OAAO,CAC5C,UAAU9jE,IAAV,EAAgBI,MAAhB,EAAwB;AACtBA,EAAAA,MAAM,GAAGE,MAAM,CAACuW,MAAP,CAAc;AAAEwI,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE,GAA5B;AAAiC9c,IAAAA,UAAU,EAAE;AAA7C,GAAd,EAAsEpC,MAAtE,CAAT;AACA,gBAA6CA,MAA7C;AAAA,MAAQif,QAAR,WAAQA,QAAR;AAAA,MAAkB7c,UAAlB,WAAkBA,UAAlB;AAAA,MAA8B8c,UAA9B,WAA8BA,UAA9B;;AACA,MAAI,CAACtf,IAAL,EAAW;AACT,WAAO;AAAEkE,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE;AAApB,KAAP;AACD,GALqB,CAOtB;AACA;AACA;;;AACA,MAAMgjE,YAAY,GAAG,CAAC,YAAD,EAAe3kE,UAAf,CAArB;AACA,MAAM+hD,KAAK,GAAGvkD,IAAI,CAACwH,KAAL,CAAW+b,8EAAX,CAAd;AACA,MAAI6jD,IAAI,GAAG,EAAX;AAEA,MAAMh/C,IAAI,GAAGvlB,0CAAM,CAAC,MAAD,CAAnB,CAdsB,CAetB;AACA;;AACA,MAAI,CAACulB,IAAI,CAAC60C,MAAV,EAAkB;AAChB,WAAO;AAAE/4D,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE,CAApB;AAAuBkW,MAAAA,UAAU,EAAE;AAAnC,KAAP;AACD;;AAED,MAAMmP,CAAC,GAAGpB,IAAI,CAAC/iB,MAAL,CAAY,KAAZ,CAAV;;AAEA,mCAAuB8hE,YAAvB,mCAAqC;AAAhC,QAAI3kE,WAAU,oBAAd;AACH,QAAI6kE,OAAO,GAAG,CAAd;AACA,QAAIz7C,GAAG,GAAG;AAAE1nB,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE,CAApB;AAAuBkW,MAAAA,UAAU,EAAE;AAAnC,KAAV;;AAFmC,+CAGlBkqC,KAHkB;AAAA;;AAAA;AAGnC,0DAAwB;AAAA,YAAfv8C,IAAe;AACtB,YAAM87C,OAAO,GAAGC,UAAU,EAA1B;AACAD,QAAAA,OAAO,CAAC9jD,IAAR,GAAegI,IAAf;AACA,YAAMm8C,QAAQ,GAAG0hB,cAAc,CAACr8C,CAAD,EAAIs6B,OAAJ,CAAd,CACdr/C,KADc,CACR,WADQ,EACK4a,QADL,EAEd5a,KAFc,CAER,aAFQ,EAEO6a,UAFP,EAGd7a,KAHc,CAGR,aAHQ,EAGOjC,WAHP,CAAjB;AAKA,YAAI0zB,IAAI,GAAG,CAACiuB,QAAQ,CAACv8B,OAAT,IAAoBu8B,QAArB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCxgD,OAArC,EAAX;AACAioB,QAAAA,GAAG,CAAC1nB,KAAJ,GAAYqG,IAAI,CAAC65C,KAAL,CAAW75C,IAAI,CAACmrB,GAAL,CAAS9J,GAAG,CAAC1nB,KAAb,EAAoBgyB,IAAI,CAAChyB,KAAzB,CAAX,CAAZ;AACAmjE,QAAAA,OAAO,GAAG98D,IAAI,CAAC65C,KAAL,CAAWluB,IAAI,CAAC/xB,MAAhB,CAAV;AACAynB,QAAAA,GAAG,CAACznB,MAAJ,IAAckjE,OAAd;AACAz7C,QAAAA,GAAG,CAACvR,UAAJ,GAAiB9P,IAAI,CAAC65C,KAAL,CAAW75C,IAAI,CAACmrB,GAAL,CAAS9J,GAAG,CAACvR,UAAb,EAAyBgtD,OAAzB,CAAX,CAAjB;AACD;AAhBkC;AAAA;AAAA;AAAA;AAAA;;AAiBnCD,IAAAA,IAAI,CAAC3kE,IAAL,CAAUmpB,GAAV;AACD;;AAEDpC,EAAAA,CAAC,CAACyzC,MAAF;AAEA,MAAIzuB,KAAK,GACPthC,KAAK,CAACk6D,IAAI,CAAC,CAAD,CAAJ,CAAQjjE,MAAT,CAAL,IACA+I,KAAK,CAACk6D,IAAI,CAAC,CAAD,CAAJ,CAAQljE,KAAT,CADL,IAEAgJ,KAAK,CAACk6D,IAAI,CAAC,CAAD,CAAJ,CAAQ/sD,UAAT,CAFL,IAGC+sD,IAAI,CAAC,CAAD,CAAJ,CAAQjjE,MAAR,GAAiBijE,IAAI,CAAC,CAAD,CAAJ,CAAQjjE,MAAzB,IACCijE,IAAI,CAAC,CAAD,CAAJ,CAAQljE,KAAR,GAAgBkjE,IAAI,CAAC,CAAD,CAAJ,CAAQljE,KADzB,IAECkjE,IAAI,CAAC,CAAD,CAAJ,CAAQ/sD,UAAR,GAAqB+sD,IAAI,CAAC,CAAD,CAAJ,CAAQ/sD,UAL/B,GAMI,CANJ,GAOI,CARN;AASA,SAAO+sD,IAAI,CAAC54B,KAAD,CAAX;AACD,CAxD2C,EAyD5C,UAACxuC,IAAD,EAAOI,MAAP;AAAA,mBAAqBJ,IAArB,cAA6BI,MAAM,CAACif,QAApC,cAAgDjf,MAAM,CAACkf,UAAvD,cAAqElf,MAAM,CAACoC,UAA5E;AAAA,CAzD4C,CAAvC;AA4DP;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM8kE,OAAO,GAAG,SAAVA,OAAU,CAAUC,MAAV,EAAkBC,KAAlB,EAAyB;AAAA,8CACtBA,KADsB;AAAA;;AAAA;AACvC,2DAAwB;AAAA,UAAfznE,IAAe;AACtBwnE,MAAAA,MAAM,CAACxnE,IAAP,CAAYA,IAAI,CAAC,CAAD,CAAhB,EAAqBA,IAAI,CAAC,CAAD,CAAzB;AACD;AAHsC;AAAA;AAAA;AAAA;AAAA;AAIxC,CAJD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAM0nE,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAUtjE,MAAV,EAAkBD,KAAlB,EAAyBmZ,WAAzB,EAAsC;AACzE,MAAImqD,KAAK,GAAG,IAAIE,GAAJ,EAAZ;AACAF,EAAAA,KAAK,CAACtZ,GAAN,CAAU,QAAV,EAAoB/pD,MAApB;;AACA,MAAIkZ,WAAJ,EAAiB;AACfmqD,IAAAA,KAAK,CAACtZ,GAAN,CAAU,OAAV,EAAmB,MAAnB;AACAsZ,IAAAA,KAAK,CAACtZ,GAAN,CAAU,OAAV,uBAAiChqD,KAAjC;AACD,GAHD,MAGO;AACLsjE,IAAAA,KAAK,CAACtZ,GAAN,CAAU,OAAV,EAAmBhqD,KAAnB;AACD;;AACD,SAAOsjE,KAAP;AACD,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMp+C,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAU4qC,OAAV,EAAmB7vD,MAAnB,EAA2BD,KAA3B,EAAkCmZ,WAAlC,EAA+C;AAC7E,MAAMmqD,KAAK,GAAGC,qBAAqB,CAACtjE,MAAD,EAASD,KAAT,EAAgBmZ,WAAhB,CAAnC;AACAiqD,EAAAA,OAAO,CAACtT,OAAD,EAAUwT,KAAV,CAAP;AACD,CAHM;AAKA,IAAMzN,gBAAgB;AAC3B,oBAAY4N,aAAZ,EAA2BC,IAA3B,EAAiC;AAAA;;AAC/B,SAAKD,aAAL,GAAqBA,aAArB;AACA,SAAKC,IAAL,GAAYA,IAAZ;AAEA,SAAK7rC,KAAL,GAAa6rC,IAAI,GAAGA,IAAI,CAAC1mE,MAAR,GAAiB,CAAlC;AACD;;AAN0B;AAAA;AAAA,WAQ3B,gBAAO;AACL,UAAI,CAAC,KAAKymE,aAAV,EAAyB,OAAOlkC,IAAI,CAACokC,GAAL,EAAP;AAEzB,aAAO,KAAK9rC,KAAL,EAAP;AACD;AAZ0B;;AAAA;AAAA,GAAtB;AAeP,IAAI+rC,OAAJ;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM7N,YAAY,GAAG,SAAfA,YAAe,CAAUnzD,IAAV,EAAgB;AAC1CghE,EAAAA,OAAO,GAAGA,OAAO,IAAIphE,QAAQ,CAAC+iC,aAAT,CAAuB,KAAvB,CAArB,CAD0C,CAE1C;;AACA3iC,EAAAA,IAAI,GAAGihE,MAAM,CAACjhE,IAAD,CAAN,CAAaI,OAAb,CAAqB,MAArB,EAA6B,GAA7B,EAAkCA,OAAlC,CAA0C,MAA1C,EAAkD,GAAlD,EAAuDA,OAAvD,CAA+D,MAA/D,EAAuE,GAAvE,CAAP,CAH0C,CAI1C;;AACA4gE,EAAAA,OAAO,CAACnoB,SAAR,GAAoB74C,IAApB;AACA,SAAOkhE,QAAQ,CAACF,OAAO,CAAChgE,WAAT,CAAf;AACD,CAPM;AASP;AACA;AACA;AACA;AACA;;AACO,IAAMq0D,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC2B,IAAD,EAAU;AAC1C59D,EAAAA,8CAAA,CAAU,gCAAV,EAA4C49D,IAA5C;;AACA,MAAI,QAAOA,IAAP,MAAgB,QAApB,EAA8B;AAC5B;AACA,QAAIA,IAAI,CAAC58D,MAAT,EAAiB;AACf48D,MAAAA,IAAI,CAAC57D,OAAL,CAAa,UAAC+lE,GAAD;AAAA,eAAS9L,kBAAkB,CAAC8L,GAAD,CAA3B;AAAA,OAAb;AACD,KAFD,MAEO;AACL;AACA3nE,MAAAA,MAAM,CAAC0B,IAAP,CAAY87D,IAAZ,EAAkB57D,OAAlB,CAA0B,UAACC,GAAD,EAAS;AACjCjC,QAAAA,8CAAA,CAAU,cAAV,EAA0BiC,GAA1B;;AACA,YAAIA,GAAG,CAACE,OAAJ,CAAY,IAAZ,MAAsB,CAA1B,EAA6B;AAC3BnC,UAAAA,8CAAA,CAAU,6BAAV,EAAyCiC,GAAzC;AACA,iBAAO27D,IAAI,CAAC37D,GAAD,CAAX;AACD;;AAED,YAAIA,GAAG,CAACE,OAAJ,CAAY,OAAZ,KAAwB,CAA5B,EAA+B;AAC7BnC,UAAAA,8CAAA,CAAU,gCAAV,EAA4CiC,GAA5C;AACA,iBAAO27D,IAAI,CAAC37D,GAAD,CAAX;AACD;;AAED,YAAIA,GAAG,CAACE,OAAJ,CAAY,QAAZ,KAAyB,CAA7B,EAAgC;AAC9BnC,UAAAA,8CAAA,CAAU,iCAAV,EAA6CiC,GAA7C;AACA,iBAAO27D,IAAI,CAAC37D,GAAD,CAAX;AACD;;AAED,YAAIA,GAAG,CAACE,OAAJ,CAAY,UAAZ,KAA2B,CAA/B,EAAkC;AAChCnC,UAAAA,8CAAA,CAAU,4BAAV;AACA49D,UAAAA,IAAI,CAAC37D,GAAD,CAAJ,GAAYi6D,WAAW,CAAC0B,IAAI,CAAC37D,GAAD,CAAL,CAAvB;AACD;;AACD,YAAIkhB,8DAAA,CAAmBlhB,GAAnB,IAA0B,CAA9B,EAAiC;AAC/BjC,UAAAA,8CAAA,CAAU,0BAAV,EAAsCiC,GAAtC;AACA,iBAAO27D,IAAI,CAAC37D,GAAD,CAAX;AACD,SAHD,MAGO;AACL,cAAI,QAAO27D,IAAI,CAAC37D,GAAD,CAAX,MAAqB,QAAzB,EAAmC;AACjCjC,YAAAA,8CAAA,CAAU,0BAAV,EAAsCiC,GAAtC;AACAg6D,YAAAA,kBAAkB,CAAC2B,IAAI,CAAC37D,GAAD,CAAL,CAAlB;AACD;AACF;AACF,OA9BD;AA+BD;AACF;AACF,CAzCM;AA0CA,IAAMi6D,WAAW,GAAG,SAAdA,WAAc,CAAC7gD,GAAD,EAAS;AAClC,MAAM2sD,YAAY,GAAG,GAArB;AACA,MAAMzW,QAAQ,GAAG,CAACl2C,GAAG,CAAC0K,KAAJ,CAAU,KAAV,KAAoB,EAArB,EAAyB/kB,MAA1C;AACA,MAAMwwD,MAAM,GAAG,CAACn2C,GAAG,CAAC0K,KAAJ,CAAU,KAAV,KAAoB,EAArB,EAAyB/kB,MAAxC;;AACA,MAAIuwD,QAAQ,KAAKC,MAAjB,EAAyB;AACvB,WAAO,iCAAP;AACD,GANiC,CAOlC;;;AACA,SAAOn2C,GAAP;AACD,CATM;AAWP,iEAAe;AACbtb,EAAAA,eAAe,EAAfA,eADa;AAEbumD,EAAAA,SAAS,EAATA,SAFa;AAGb0gB,EAAAA,mBAAmB,EAAnBA,mBAHa;AAIbf,EAAAA,kBAAkB,EAAlBA,kBAJa;AAKb1hB,EAAAA,uBAAuB,EAAvBA,uBALa;AAMbgjB,EAAAA,qBAAqB,EAArBA,qBANa;AAObr+C,EAAAA,gBAAgB,EAAhBA,gBAPa;AAQb8wC,EAAAA,UAAU,EAAVA,UARa;AASbuJ,EAAAA,eAAe,EAAfA,eATa;AAUbjH,EAAAA,UAAU,EAAVA,UAVa;AAWbxiC,EAAAA,kBAAkB,EAAlBA,kBAXa;AAYb9Q,EAAAA,kBAAkB,EAAlBA,kBAZa;AAabjf,EAAAA,iBAAiB,EAAjBA,iBAba;AAcbmjB,EAAAA,uBAAuB,EAAvBA,uBAda;AAebljB,EAAAA,yBAAyB,EAAzBA,yBAfa;AAgBbmc,EAAAA,SAAS,EAATA,SAhBa;AAiBb8C,EAAAA,kBAAkB,EAAlBA,kBAjBa;AAkBbonC,EAAAA,UAAU,EAAVA,UAlBa;AAmBbpkB,EAAAA,MAAM,EAANA,MAnBa;AAoBb23B,EAAAA,OAAO,EAAPA,OApBa;AAqBb98C,EAAAA,OAAO,EAAPA,OArBa;AAsBbizC,EAAAA,YAAY,EAAZA,YAtBa;AAuBbF,EAAAA,gBAAgB,EAAhBA,gBAvBa;AAwBboC,EAAAA,kBAAkB,EAAlBA,kBAxBa;AAyBbC,EAAAA,WAAW,EAAXA;AAzBa,CAAf;;;;;;;;;;;AC7+BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AChhBA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;UEJA;UACA;UACA;UACA","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/accessibility.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/external commonjs \"@braintree/sanitize-url\"","webpack://mermaid/external commonjs \"d3\"","webpack://mermaid/external commonjs \"dagre\"","webpack://mermaid/external commonjs \"dagre-d3\"","webpack://mermaid/external commonjs \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external commonjs \"dompurify\"","webpack://mermaid/external commonjs \"graphlib\"","webpack://mermaid/external commonjs \"khroma\"","webpack://mermaid/external commonjs \"moment-mini\"","webpack://mermaid/external commonjs \"stylis\"","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/class/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/er/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/flowchart/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/gantt/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/git/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/info/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/pie/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/requirement/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/sequence/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/state/parser|fs","webpack://mermaid/ignored|/home/saiansh/mermaid/src/diagrams/user-journey/parser|fs","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/before-startup","webpack://mermaid/webpack/startup","webpack://mermaid/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, () => {\nreturn ","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,10],$V5=[1,13],$V6=[1,12],$V7=[1,16,25],$V8=[1,20],$V9=[1,31],$Va=[1,32],$Vb=[1,34],$Vc=[1,37],$Vd=[1,35],$Ve=[1,36],$Vf=[1,38],$Vg=[1,39],$Vh=[1,40],$Vi=[1,41],$Vj=[1,44],$Vk=[1,45],$Vl=[1,46],$Vm=[1,47],$Vn=[16,25],$Vo=[1,59],$Vp=[1,60],$Vq=[1,61],$Vr=[1,62],$Vs=[1,63],$Vt=[1,64],$Vu=[16,25,32,41,42,50,53,54,55,56,57,58,63,65],$Vv=[16,25,30,32,41,42,46,50,53,54,55,56,57,58,63,65,80,81,82,83],$Vw=[5,8,9,10,11,16,19,23,25],$Vx=[50,80,81,82,83],$Vy=[50,57,58,80,81,82,83],$Vz=[50,53,54,55,56,80,81,82,83],$VA=[16,25,32],$VB=[1,96];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"statments\":5,\"direction\":6,\"directive\":7,\"direction_tb\":8,\"direction_bt\":9,\"direction_rl\":10,\"direction_lr\":11,\"graphConfig\":12,\"openDirective\":13,\"typeDirective\":14,\"closeDirective\":15,\"NEWLINE\":16,\":\":17,\"argDirective\":18,\"open_directive\":19,\"type_directive\":20,\"arg_directive\":21,\"close_directive\":22,\"CLASS_DIAGRAM\":23,\"statements\":24,\"EOF\":25,\"statement\":26,\"className\":27,\"alphaNumToken\":28,\"classLiteralName\":29,\"GENERICTYPE\":30,\"relationStatement\":31,\"LABEL\":32,\"classStatement\":33,\"methodStatement\":34,\"annotationStatement\":35,\"clickStatement\":36,\"cssClassStatement\":37,\"title\":38,\"accDescription\":39,\"CLASS\":40,\"STYLE_SEPARATOR\":41,\"STRUCT_START\":42,\"members\":43,\"STRUCT_STOP\":44,\"ANNOTATION_START\":45,\"ANNOTATION_END\":46,\"MEMBER\":47,\"SEPARATOR\":48,\"relation\":49,\"STR\":50,\"relationType\":51,\"lineType\":52,\"AGGREGATION\":53,\"EXTENSION\":54,\"COMPOSITION\":55,\"DEPENDENCY\":56,\"LINE\":57,\"DOTTED_LINE\":58,\"CALLBACK\":59,\"LINK\":60,\"LINK_TARGET\":61,\"CLICK\":62,\"CALLBACK_NAME\":63,\"CALLBACK_ARGS\":64,\"HREF\":65,\"CSSCLASS\":66,\"commentToken\":67,\"textToken\":68,\"graphCodeTokens\":69,\"textNoTagsToken\":70,\"TAGSTART\":71,\"TAGEND\":72,\"==\":73,\"--\":74,\"PCT\":75,\"DEFAULT\":76,\"SPACE\":77,\"MINUS\":78,\"keywords\":79,\"UNICODE_TEXT\":80,\"NUM\":81,\"ALPHA\":82,\"BQUOTE_STR\":83,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"statments\",8:\"direction_tb\",9:\"direction_bt\",10:\"direction_rl\",11:\"direction_lr\",16:\"NEWLINE\",17:\":\",19:\"open_directive\",20:\"type_directive\",21:\"arg_directive\",22:\"close_directive\",23:\"CLASS_DIAGRAM\",25:\"EOF\",30:\"GENERICTYPE\",32:\"LABEL\",38:\"title\",39:\"accDescription\",40:\"CLASS\",41:\"STYLE_SEPARATOR\",42:\"STRUCT_START\",44:\"STRUCT_STOP\",45:\"ANNOTATION_START\",46:\"ANNOTATION_END\",47:\"MEMBER\",48:\"SEPARATOR\",50:\"STR\",53:\"AGGREGATION\",54:\"EXTENSION\",55:\"COMPOSITION\",56:\"DEPENDENCY\",57:\"LINE\",58:\"DOTTED_LINE\",59:\"CALLBACK\",60:\"LINK\",61:\"LINK_TARGET\",62:\"CLICK\",63:\"CALLBACK_NAME\",64:\"CALLBACK_ARGS\",65:\"HREF\",66:\"CSSCLASS\",69:\"graphCodeTokens\",71:\"TAGSTART\",72:\"TAGEND\",73:\"==\",74:\"--\",75:\"PCT\",76:\"DEFAULT\",77:\"SPACE\",78:\"MINUS\",79:\"keywords\",80:\"UNICODE_TEXT\",81:\"NUM\",82:\"ALPHA\",83:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[43,1],[43,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[49,3],[49,2],[49,2],[49,1],[51,1],[51,1],[51,1],[51,1],[52,1],[52,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[67,1],[67,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[70,1],[70,1],[70,1],[70,1],[28,1],[28,1],[28,1],[29,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.setDirection('TB');\nbreak;\ncase 6:\n yy.setDirection('BT');\nbreak;\ncase 7:\n yy.setDirection('RL');\nbreak;\ncase 8:\n yy.setDirection('LR');\nbreak;\ncase 12:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 13:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 14:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 15:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 20: case 21:\n this.$=$$[$0]; \nbreak;\ncase 22:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 23: case 24:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 25:\n yy.addRelation($$[$0]); \nbreak;\ncase 26:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 34:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 35:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 36:\nyy.addClass($$[$0]);\nbreak;\ncase 37:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 38:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 39:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 40:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 41:\n this.$ = [$$[$0]]; \nbreak;\ncase 42:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 43:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 44:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 45:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 46:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 47:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 48:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 49:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 50:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 51:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 52:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 53:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 54:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 55:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 56:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 57:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 58:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 59:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 60:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 61: case 67:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 62: case 68:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 63: case 71:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 65: case 73:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 66: case 74:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 70:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 72:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 75:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,6:4,7:5,8:$V1,9:$V2,10:$V3,11:$V4,12:6,13:11,19:$V5,23:$V6},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:$V0,6:4,7:5,8:$V1,9:$V2,10:$V3,11:$V4,12:6,13:11,19:$V5,23:$V6},{1:[2,9]},o($V7,[2,5]),o($V7,[2,6]),o($V7,[2,7]),o($V7,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:$V8},o([17,22],[2,13]),{6:30,7:29,8:$V1,9:$V2,10:$V3,11:$V4,13:11,19:$V5,24:21,26:22,27:33,28:42,29:43,31:23,33:24,34:25,35:26,36:27,37:28,38:$V9,39:$Va,40:$Vb,45:$Vc,47:$Vd,48:$Ve,59:$Vf,60:$Vg,62:$Vh,66:$Vi,80:$Vj,81:$Vk,82:$Vl,83:$Vm},{16:[1,48]},{18:49,21:[1,50]},{16:[2,15]},{25:[1,51]},{16:[1,52],25:[2,17]},o($Vn,[2,25],{32:[1,53]}),o($Vn,[2,27]),o($Vn,[2,28]),o($Vn,[2,29]),o($Vn,[2,30]),o($Vn,[2,31]),o($Vn,[2,32]),o($Vn,[2,33]),o($Vn,[2,34]),o($Vn,[2,35]),o($Vn,[2,43],{49:54,51:57,52:58,32:[1,56],50:[1,55],53:$Vo,54:$Vp,55:$Vq,56:$Vr,57:$Vs,58:$Vt}),{27:65,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},o($Vn,[2,45]),o($Vn,[2,46]),{28:66,80:$Vj,81:$Vk,82:$Vl},{27:67,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},{27:68,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},{27:69,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},{50:[1,70]},o($Vu,[2,20],{28:42,29:43,27:71,30:[1,72],80:$Vj,81:$Vk,82:$Vl,83:$Vm}),o($Vu,[2,21],{30:[1,73]}),o($Vv,[2,89]),o($Vv,[2,90]),o($Vv,[2,91]),o([16,25,30,32,41,42,50,53,54,55,56,57,58,63,65],[2,92]),o($Vw,[2,10]),{15:74,22:$V8},{22:[2,14]},{1:[2,16]},{6:30,7:29,8:$V1,9:$V2,10:$V3,11:$V4,13:11,19:$V5,24:75,25:[2,18],26:22,27:33,28:42,29:43,31:23,33:24,34:25,35:26,36:27,37:28,38:$V9,39:$Va,40:$Vb,45:$Vc,47:$Vd,48:$Ve,59:$Vf,60:$Vg,62:$Vh,66:$Vi,80:$Vj,81:$Vk,82:$Vl,83:$Vm},o($Vn,[2,26]),{27:76,28:42,29:43,50:[1,77],80:$Vj,81:$Vk,82:$Vl,83:$Vm},{49:78,51:57,52:58,53:$Vo,54:$Vp,55:$Vq,56:$Vr,57:$Vs,58:$Vt},o($Vn,[2,44]),{52:79,57:$Vs,58:$Vt},o($Vx,[2,54],{51:80,53:$Vo,54:$Vp,55:$Vq,56:$Vr}),o($Vy,[2,55]),o($Vy,[2,56]),o($Vy,[2,57]),o($Vy,[2,58]),o($Vz,[2,59]),o($Vz,[2,60]),o($Vn,[2,36],{41:[1,81],42:[1,82]}),{46:[1,83]},{50:[1,84]},{50:[1,85]},{63:[1,86],65:[1,87]},{28:88,80:$Vj,81:$Vk,82:$Vl},o($Vu,[2,22]),o($Vu,[2,23]),o($Vu,[2,24]),{16:[1,89]},{25:[2,19]},o($VA,[2,47]),{27:90,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},{27:91,28:42,29:43,50:[1,92],80:$Vj,81:$Vk,82:$Vl,83:$Vm},o($Vx,[2,53],{51:93,53:$Vo,54:$Vp,55:$Vq,56:$Vr}),o($Vx,[2,52]),{28:94,80:$Vj,81:$Vk,82:$Vl},{43:95,47:$VB},{27:97,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},o($Vn,[2,61],{50:[1,98]}),o($Vn,[2,63],{50:[1,100],61:[1,99]}),o($Vn,[2,67],{50:[1,101],64:[1,102]}),o($Vn,[2,71],{50:[1,104],61:[1,103]}),o($Vn,[2,75]),o($Vw,[2,11]),o($VA,[2,49]),o($VA,[2,48]),{27:105,28:42,29:43,80:$Vj,81:$Vk,82:$Vl,83:$Vm},o($Vx,[2,51]),o($Vn,[2,37],{42:[1,106]}),{44:[1,107]},{43:108,44:[2,41],47:$VB},o($Vn,[2,40]),o($Vn,[2,62]),o($Vn,[2,64]),o($Vn,[2,65],{61:[1,109]}),o($Vn,[2,68]),o($Vn,[2,69],{50:[1,110]}),o($Vn,[2,72]),o($Vn,[2,73],{61:[1,111]}),o($VA,[2,50]),{43:112,47:$VB},o($Vn,[2,38]),{44:[2,42]},o($Vn,[2,66]),o($Vn,[2,70]),o($Vn,[2,74]),{44:[1,113]},o($Vn,[2,39])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],50:[2,14],51:[2,16],75:[2,19],108:[2,42]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 19; \nbreak;\ncase 1:return 8;\nbreak;\ncase 2:return 9;\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 11;\nbreak;\ncase 5: this.begin('type_directive'); return 20; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 17; \nbreak;\ncase 7: this.popState(); this.popState(); return 22; \nbreak;\ncase 8:return 21;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 38;\nbreak;\ncase 12:return 39;\nbreak;\ncase 13:return 16;\nbreak;\ncase 14:/* skip whitespace */\nbreak;\ncase 15:return 23;\nbreak;\ncase 16:return 23;\nbreak;\ncase 17: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 42;\nbreak;\ncase 18:return \"EOF_IN_STRUCT\";\nbreak;\ncase 19:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 20: /*console.log('Ending struct');*/this.popState(); return 44;\nbreak;\ncase 21:/* nothing */\nbreak;\ncase 22: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 66;\nbreak;\ncase 25:return 59;\nbreak;\ncase 26:return 60;\nbreak;\ncase 27:return 62;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:this.begin(\"generic\");\nbreak;\ncase 31:this.popState();\nbreak;\ncase 32:return \"GENERICTYPE\";\nbreak;\ncase 33:this.begin(\"string\");\nbreak;\ncase 34:this.popState();\nbreak;\ncase 35:return \"STR\";\nbreak;\ncase 36:this.begin(\"bqstring\");\nbreak;\ncase 37:this.popState();\nbreak;\ncase 38:return \"BQUOTE_STR\";\nbreak;\ncase 39:this.begin(\"href\");\nbreak;\ncase 40:this.popState();\nbreak;\ncase 41:return 65;\nbreak;\ncase 42:this.begin(\"callback_name\");\nbreak;\ncase 43:this.popState();\nbreak;\ncase 44:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 45:return 63;\nbreak;\ncase 46:this.popState();\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 61;\nbreak;\ncase 49:return 61;\nbreak;\ncase 50:return 61;\nbreak;\ncase 51:return 61;\nbreak;\ncase 52:return 54;\nbreak;\ncase 53:return 54;\nbreak;\ncase 54:return 56;\nbreak;\ncase 55:return 56;\nbreak;\ncase 56:return 55;\nbreak;\ncase 57:return 53;\nbreak;\ncase 58:return 57;\nbreak;\ncase 59:return 58;\nbreak;\ncase 60:return 32;\nbreak;\ncase 61:return 41;\nbreak;\ncase 62:return 78;\nbreak;\ncase 63:return 'DOT';\nbreak;\ncase 64:return 'PLUS';\nbreak;\ncase 65:return 75;\nbreak;\ncase 66:return 'EQUALS';\nbreak;\ncase 67:return 'EQUALS';\nbreak;\ncase 68:return 82;\nbreak;\ncase 69:return 'PUNCTUATION';\nbreak;\ncase 70:return 81;\nbreak;\ncase 71:return 80;\nbreak;\ncase 72:return 77;\nbreak;\ncase 73:return 25;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:title\\s[^#\\n;]+)/,/^(?:accDescription\\s[^#\\n;]+)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[46,47],\"inclusive\":false},\"callback_name\":{\"rules\":[43,44,45],\"inclusive\":false},\"href\":{\"rules\":[40,41],\"inclusive\":false},\"struct\":{\"rules\":[18,19,20,21,22],\"inclusive\":false},\"generic\":{\"rules\":[31,32],\"inclusive\":false},\"bqstring\":{\"rules\":[37,38],\"inclusive\":false},\"string\":{\"rules\":[34,35],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,13,14,15,16,17,23,24,25,26,27,28,29,30,33,36,39,42,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,25,27,45],$V3=[1,17],$V4=[1,18],$V5=[1,19],$V6=[1,22],$V7=[1,27],$V8=[1,28],$V9=[1,29],$Va=[1,30],$Vb=[1,41],$Vc=[27,42,43],$Vd=[4,6,9,11,23,25,27,45],$Ve=[38,39,40,41],$Vf=[22,33],$Vg=[1,59];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"title\":23,\"title_value\":24,\"accDescription\":25,\"description_value\":26,\"ALPHANUM\":27,\"attribute\":28,\"attributeType\":29,\"attributeName\":30,\"attributeKeyType\":31,\"attributeComment\":32,\"ATTRIBUTE_WORD\":33,\"ATTRIBUTE_KEY\":34,\"COMMENT\":35,\"cardinality\":36,\"relType\":37,\"ZERO_OR_ONE\":38,\"ZERO_OR_MORE\":39,\"ONE_OR_MORE\":40,\"ONLY_ONE\":41,\"NON_IDENTIFYING\":42,\"IDENTIFYING\":43,\"WORD\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"title\",24:\"title_value\",25:\"accDescription\",26:\"description_value\",27:\"ALPHANUM\",33:\"ATTRIBUTE_WORD\",34:\"ATTRIBUTE_KEY\",35:\"COMMENT\",38:\"ZERO_OR_ONE\",39:\"ZERO_OR_MORE\",40:\"ONE_OR_MORE\",41:\"ONLY_ONE\",42:\"NON_IDENTIFYING\",43:\"IDENTIFYING\",44:\"WORD\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[17,1],[21,1],[21,2],[28,2],[28,3],[28,3],[28,4],[29,1],[30,1],[31,1],[32,1],[18,3],[36,1],[36,1],[36,1],[36,1],[37,1],[37,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 19:\n this.$ = [$$[$0]]; \nbreak;\ncase 20:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 23:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 24:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 25: case 26: case 27:\n this.$=$$[$0]; \nbreak;\ncase 28:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 29:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 31:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 32:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 33:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 34:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 35:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 36:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 37:\n this.$ = $$[$0]; \nbreak;\ncase 38:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 39:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 40:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 41:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,45:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,45:$V1},{13:8,46:[1,9]},{46:[2,38]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},{1:[2,2]},{14:20,15:[1,21],48:$V6},o([15,48],[2,39]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:23,12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:24,36:26,20:[1,25],38:$V7,39:$V8,40:$V9,41:$Va}),{24:[1,31]},{26:[1,32]},o([6,9,11,15,20,23,25,27,38,39,40,41,45],[2,18]),{11:[1,33]},{16:34,47:[1,35]},{11:[2,41]},o($V2,[2,5]),{17:36,27:$V5},{21:37,22:[1,38],28:39,29:40,33:$Vb},{37:42,42:[1,43],43:[1,44]},o($Vc,[2,30]),o($Vc,[2,31]),o($Vc,[2,32]),o($Vc,[2,33]),o($V2,[2,16]),o($V2,[2,17]),o($Vd,[2,9]),{14:45,48:$V6},{48:[2,40]},{15:[1,46]},{22:[1,47]},o($V2,[2,14]),{21:48,22:[2,19],28:39,29:40,33:$Vb},{30:49,33:[1,50]},{33:[2,25]},{36:51,38:$V7,39:$V8,40:$V9,41:$Va},o($Ve,[2,34]),o($Ve,[2,35]),{11:[1,52]},{19:53,27:[1,55],44:[1,54]},o($V2,[2,13]),{22:[2,20]},o($Vf,[2,21],{31:56,32:57,34:[1,58],35:$Vg}),o([22,33,34,35],[2,26]),{27:[2,29]},o($Vd,[2,10]),o($V2,[2,12]),o($V2,[2,36]),o($V2,[2,37]),o($Vf,[2,22],{32:60,35:$Vg}),o($Vf,[2,23]),o([22,33,35],[2,27]),o($Vf,[2,28]),o($Vf,[2,24])],\ndefaultActions: {5:[2,38],7:[2,2],22:[2,41],35:[2,40],41:[2,25],48:[2,20],51:[2,29]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin(\"title\");return 23; \nbreak;\ncase 1: this.popState(); return \"title_value\"; \nbreak;\ncase 2: this.begin(\"accDescription\");return 25; \nbreak;\ncase 3: this.popState(); return \"description_value\"; \nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 11;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 9;\nbreak;\ncase 14:return 44;\nbreak;\ncase 15:return 4;\nbreak;\ncase 16: this.begin(\"block\"); return 20; \nbreak;\ncase 17:/* skip whitespace in block */\nbreak;\ncase 18:return 34\nbreak;\ncase 19:return 33\nbreak;\ncase 20:return 35;\nbreak;\ncase 21:/* nothing */\nbreak;\ncase 22: this.popState(); return 22; \nbreak;\ncase 23:return yy_.yytext[0];\nbreak;\ncase 24:return 38;\nbreak;\ncase 25:return 39;\nbreak;\ncase 26:return 40;\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 38;\nbreak;\ncase 29:return 39;\nbreak;\ncase 30:return 40;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 42;\nbreak;\ncase 35:return 27;\nbreak;\ncase 36:return yy_.yytext[0];\nbreak;\ncase 37:return 6;\nbreak;\n}\n},\nrules: [/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"accDescription\":{\"rules\":[3],\"inclusive\":false},\"title\":{\"rules\":[1],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"block\":{\"rules\":[17,18,19,20,21,22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30,31,32,33,34,35,36,37],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,44,46,51,65,66,85,86,87,88,89,90,94,104,105,108,110,111,117,118,119,120,121,122,123,124,125,126],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,32],$Vc=[1,33],$Vd=[1,61],$Ve=[1,47],$Vf=[1,51],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,55],$Vm=[1,62],$Vn=[1,50],$Vo=[1,52],$Vp=[1,54],$Vq=[1,58],$Vr=[1,59],$Vs=[1,40],$Vt=[1,41],$Vu=[1,42],$Vv=[1,43],$Vw=[1,60],$Vx=[1,49],$Vy=[1,53],$Vz=[1,56],$VA=[1,57],$VB=[1,48],$VC=[1,65],$VD=[1,70],$VE=[1,20,21,22,23,38,42,44,46,51,65,66,85,86,87,88,89,90,94,104,105,108,110,111,117,118,119,120,121,122,123,124,125,126],$VF=[1,74],$VG=[1,73],$VH=[1,75],$VI=[20,21,23,80,81],$VJ=[1,98],$VK=[1,103],$VL=[1,106],$VM=[1,107],$VN=[1,100],$VO=[1,105],$VP=[1,108],$VQ=[1,101],$VR=[1,113],$VS=[1,112],$VT=[1,102],$VU=[1,104],$VV=[1,109],$VW=[1,110],$VX=[1,111],$VY=[1,114],$VZ=[20,21,22,23,80,81],$V_=[20,21,22,23,52,80,81],$V$=[20,21,22,23,40,51,52,54,56,58,60,62,64,65,66,68,70,72,73,75,80,81,90,94,104,105,108,110,111,121,122,123,124,125,126],$V01=[20,21,23],$V11=[20,21,23,51,65,66,80,81,90,94,104,105,108,110,111,121,122,123,124,125,126],$V21=[1,12,20,21,22,23,24,38,42,44,46,51,65,66,85,86,87,88,89,90,94,104,105,108,110,111,117,118,119,120,121,122,123,124,125,126],$V31=[51,65,66,90,94,104,105,108,110,111,121,122,123,124,125,126],$V41=[1,148],$V51=[1,156],$V61=[1,157],$V71=[1,158],$V81=[1,159],$V91=[1,143],$Va1=[1,144],$Vb1=[1,140],$Vc1=[1,151],$Vd1=[1,152],$Ve1=[1,153],$Vf1=[1,154],$Vg1=[1,155],$Vh1=[1,160],$Vi1=[1,161],$Vj1=[1,146],$Vk1=[1,149],$Vl1=[1,145],$Vm1=[1,142],$Vn1=[20,21,22,23,38,42,44,46,51,65,66,85,86,87,88,89,90,94,104,105,108,110,111,117,118,119,120,121,122,123,124,125,126],$Vo1=[1,164],$Vp1=[20,21,22,23,26,51,65,66,90,104,105,108,110,111,121,122,123,124,125,126],$Vq1=[20,21,22,23,24,26,38,40,41,42,51,55,57,59,61,63,65,66,67,69,71,72,74,76,80,81,85,86,87,88,89,90,91,94,104,105,108,110,111,112,113,121,122,123,124,125,126],$Vr1=[12,21,22,24],$Vs1=[22,105],$Vt1=[1,249],$Vu1=[1,244],$Vv1=[1,245],$Vw1=[1,253],$Vx1=[1,250],$Vy1=[1,247],$Vz1=[1,246],$VA1=[1,248],$VB1=[1,251],$VC1=[1,252],$VD1=[1,254],$VE1=[1,272],$VF1=[20,21,23,105],$VG1=[20,21,22,23,65,66,85,101,104,105,108,109,110,111,112];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"title\":44,\"title_value\":45,\"accDescription\":46,\"description_value\":47,\"link\":48,\"node\":49,\"vertex\":50,\"AMP\":51,\"STYLE_SEPARATOR\":52,\"idString\":53,\"DOUBLECIRCLESTART\":54,\"DOUBLECIRCLEEND\":55,\"PS\":56,\"PE\":57,\"(-\":58,\"-)\":59,\"STADIUMSTART\":60,\"STADIUMEND\":61,\"SUBROUTINESTART\":62,\"SUBROUTINEEND\":63,\"VERTEX_WITH_PROPS_START\":64,\"ALPHA\":65,\"COLON\":66,\"PIPE\":67,\"CYLINDERSTART\":68,\"CYLINDEREND\":69,\"DIAMOND_START\":70,\"DIAMOND_STOP\":71,\"TAGEND\":72,\"TRAPSTART\":73,\"TRAPEND\":74,\"INVTRAPSTART\":75,\"INVTRAPEND\":76,\"linkStatement\":77,\"arrowText\":78,\"TESTSTR\":79,\"START_LINK\":80,\"LINK\":81,\"textToken\":82,\"STR\":83,\"keywords\":84,\"STYLE\":85,\"LINKSTYLE\":86,\"CLASSDEF\":87,\"CLASS\":88,\"CLICK\":89,\"DOWN\":90,\"UP\":91,\"textNoTags\":92,\"textNoTagsToken\":93,\"DEFAULT\":94,\"stylesOpt\":95,\"alphaNum\":96,\"CALLBACKNAME\":97,\"CALLBACKARGS\":98,\"HREF\":99,\"LINK_TARGET\":100,\"HEX\":101,\"numList\":102,\"INTERPOLATE\":103,\"NUM\":104,\"COMMA\":105,\"style\":106,\"styleComponent\":107,\"MINUS\":108,\"UNIT\":109,\"BRKT\":110,\"DOT\":111,\"PCT\":112,\"TAGSTART\":113,\"alphaNumToken\":114,\"idStringToken\":115,\"alphaNumStatement\":116,\"direction_tb\":117,\"direction_bt\":118,\"direction_rl\":119,\"direction_lr\":120,\"PUNCTUATION\":121,\"UNICODE_TEXT\":122,\"PLUS\":123,\"EQUALS\":124,\"MULT\":125,\"UNDERSCORE\":126,\"graphCodeTokens\":127,\"ARROW_CROSS\":128,\"ARROW_POINT\":129,\"ARROW_CIRCLE\":130,\"ARROW_OPEN\":131,\"QUOTE\":132,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",44:\"title\",45:\"title_value\",46:\"accDescription\",47:\"description_value\",51:\"AMP\",52:\"STYLE_SEPARATOR\",54:\"DOUBLECIRCLESTART\",55:\"DOUBLECIRCLEEND\",56:\"PS\",57:\"PE\",58:\"(-\",59:\"-)\",60:\"STADIUMSTART\",61:\"STADIUMEND\",62:\"SUBROUTINESTART\",63:\"SUBROUTINEEND\",64:\"VERTEX_WITH_PROPS_START\",65:\"ALPHA\",66:\"COLON\",67:\"PIPE\",68:\"CYLINDERSTART\",69:\"CYLINDEREND\",70:\"DIAMOND_START\",71:\"DIAMOND_STOP\",72:\"TAGEND\",73:\"TRAPSTART\",74:\"TRAPEND\",75:\"INVTRAPSTART\",76:\"INVTRAPEND\",79:\"TESTSTR\",80:\"START_LINK\",81:\"LINK\",83:\"STR\",85:\"STYLE\",86:\"LINKSTYLE\",87:\"CLASSDEF\",88:\"CLASS\",89:\"CLICK\",90:\"DOWN\",91:\"UP\",94:\"DEFAULT\",97:\"CALLBACKNAME\",98:\"CALLBACKARGS\",99:\"HREF\",100:\"LINK_TARGET\",101:\"HEX\",103:\"INTERPOLATE\",104:\"NUM\",105:\"COMMA\",108:\"MINUS\",109:\"UNIT\",110:\"BRKT\",111:\"DOT\",112:\"PCT\",113:\"TAGSTART\",117:\"direction_tb\",118:\"direction_bt\",119:\"direction_rl\",120:\"direction_lr\",121:\"PUNCTUATION\",122:\"UNICODE_TEXT\",123:\"PLUS\",124:\"EQUALS\",125:\"MULT\",126:\"UNDERSCORE\",128:\"ARROW_CROSS\",129:\"ARROW_POINT\",130:\"ARROW_CIRCLE\",131:\"ARROW_OPEN\",132:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[49,1],[49,5],[49,3],[50,4],[50,4],[50,6],[50,4],[50,4],[50,4],[50,8],[50,4],[50,4],[50,4],[50,6],[50,4],[50,4],[50,4],[50,4],[50,4],[50,1],[48,2],[48,3],[48,3],[48,1],[48,3],[77,1],[78,3],[39,1],[39,2],[39,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[92,1],[92,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[102,1],[102,3],[95,1],[95,3],[106,1],[106,2],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[93,1],[93,1],[93,1],[93,1],[53,1],[53,2],[96,1],[96,2],[116,1],[116,1],[116,1],[116,1],[43,1],[43,1],[43,1],[43,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 81: case 83: case 95: case 151: case 153: case 154:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 45:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 46:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 50:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 51:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 52:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 53:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 54:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 55:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 56:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 59:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 63:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 67:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 71:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 72:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 73:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 74:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 75: case 76:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 77:\nthis.$ = $$[$0];\nbreak;\ncase 78:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 79:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 80:\nthis.$ = $$[$0-1];\nbreak;\ncase 82: case 96: case 152:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 97: case 98:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 99:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 100: case 108:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 101: case 109:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 102:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 103:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 104: case 110:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 105: case 111:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 106: case 112:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 107: case 113:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 114:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 115: case 117:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 120:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 121:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 122: case 124:\nthis.$ = [$$[$0]]\nbreak;\ncase 123: case 125:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 127:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 149:\nthis.$=$$[$0]\nbreak;\ncase 150:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 155:\nthis.$='v';\nbreak;\ncase 156:\nthis.$='-';\nbreak;\ncase 157:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 158:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 159:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 160:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,44:$Vb,46:$Vc,49:34,50:44,51:$Vd,53:45,65:$Ve,66:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,117:$Vs,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},{8:63,10:[1,64],15:$VC},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,67],21:[1,68],22:$VD,27:66,30:69},o($VE,[2,11]),o($VE,[2,12]),o($VE,[2,13]),o($VE,[2,14]),o($VE,[2,15]),o($VE,[2,16]),{9:71,20:$VF,21:$VG,23:$VH,48:72,77:76,80:[1,77],81:[1,78]},{9:79,20:$VF,21:$VG,23:$VH},{9:80,20:$VF,21:$VG,23:$VH},{9:81,20:$VF,21:$VG,23:$VH},{9:82,20:$VF,21:$VG,23:$VH},{9:83,20:$VF,21:$VG,23:$VH},{9:85,20:$VF,21:$VG,22:[1,84],23:$VH},o($VE,[2,44]),{45:[1,86]},{47:[1,87]},o($VI,[2,53],{30:88,22:$VD}),{22:[1,89]},{22:[1,90]},{22:[1,91]},{22:[1,92]},{26:$VJ,51:$VK,65:$VL,66:$VM,83:[1,96],90:$VN,96:95,97:[1,93],99:[1,94],104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($VE,[2,157]),o($VE,[2,158]),o($VE,[2,159]),o($VE,[2,160]),o($VZ,[2,54],{52:[1,115]}),o($V_,[2,73],{115:128,40:[1,116],51:$Vd,54:[1,117],56:[1,118],58:[1,119],60:[1,120],62:[1,121],64:[1,122],65:$Ve,66:$Vf,68:[1,123],70:[1,124],72:[1,125],73:[1,126],75:[1,127],90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB}),o($V$,[2,149]),o($V$,[2,174]),o($V$,[2,175]),o($V$,[2,176]),o($V$,[2,177]),o($V$,[2,178]),o($V$,[2,179]),o($V$,[2,180]),o($V$,[2,181]),o($V$,[2,182]),o($V$,[2,183]),o($V$,[2,184]),o($V$,[2,185]),o($V$,[2,186]),o($V$,[2,187]),o($V$,[2,188]),o($V$,[2,189]),{9:129,20:$VF,21:$VG,23:$VH},{11:130,14:[1,131]},o($V01,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,132]},o($V11,[2,34],{30:133,22:$VD}),o($VE,[2,35]),{49:134,50:44,51:$Vd,53:45,65:$Ve,66:$Vf,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},o($V21,[2,47]),o($V21,[2,48]),o($V21,[2,49]),o($V31,[2,77],{78:135,67:[1,137],79:[1,136]}),{22:$V41,24:$V51,26:$V61,38:$V71,39:138,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o([51,65,66,67,79,90,94,104,105,108,110,111,121,122,123,124,125,126],[2,79]),o($VE,[2,36]),o($VE,[2,37]),o($VE,[2,38]),o($VE,[2,39]),o($VE,[2,40]),{22:$V41,24:$V51,26:$V61,38:$V71,39:162,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($Vn1,$V5,{17:163}),o($VE,[2,45]),o($VE,[2,46]),o($VI,[2,52],{51:$Vo1}),{26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,96:165,101:[1,166],104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{94:[1,167],102:168,104:[1,169]},{26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,94:[1,170],96:171,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,96:172,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V01,[2,100],{22:[1,173],98:[1,174]}),o($V01,[2,104],{22:[1,175]}),o($V01,[2,108],{114:99,116:177,22:[1,176],26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY}),o($V01,[2,110],{22:[1,178]}),o($Vp1,[2,151]),o($Vp1,[2,153]),o($Vp1,[2,154]),o($Vp1,[2,155]),o($Vp1,[2,156]),o($Vq1,[2,161]),o($Vq1,[2,162]),o($Vq1,[2,163]),o($Vq1,[2,164]),o($Vq1,[2,165]),o($Vq1,[2,166]),o($Vq1,[2,167]),o($Vq1,[2,168]),o($Vq1,[2,169]),o($Vq1,[2,170]),o($Vq1,[2,171]),o($Vq1,[2,172]),o($Vq1,[2,173]),{51:$Vd,53:179,65:$Ve,66:$Vf,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},{22:$V41,24:$V51,26:$V61,38:$V71,39:180,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:181,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:183,42:$V81,51:$VK,56:[1,182],65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:184,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:185,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:186,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{65:[1,187]},{22:$V41,24:$V51,26:$V61,38:$V71,39:188,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:189,42:$V81,51:$VK,65:$VL,66:$VM,70:[1,190],72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:191,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:192,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:193,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V$,[2,150]),o($Vr1,[2,3]),{8:194,15:$VC},{15:[2,7]},o($V4,[2,28]),o($V11,[2,33]),o($VI,[2,50],{30:195,22:$VD}),o($V31,[2,74],{22:[1,196]}),{22:[1,197]},{22:$V41,24:$V51,26:$V61,38:$V71,39:198,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,81:[1,199],82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($Vq1,[2,81]),o($Vq1,[2,83]),o($Vq1,[2,139]),o($Vq1,[2,140]),o($Vq1,[2,141]),o($Vq1,[2,142]),o($Vq1,[2,143]),o($Vq1,[2,144]),o($Vq1,[2,145]),o($Vq1,[2,146]),o($Vq1,[2,147]),o($Vq1,[2,148]),o($Vq1,[2,84]),o($Vq1,[2,85]),o($Vq1,[2,86]),o($Vq1,[2,87]),o($Vq1,[2,88]),o($Vq1,[2,89]),o($Vq1,[2,90]),o($Vq1,[2,91]),o($Vq1,[2,92]),o($Vq1,[2,93]),o($Vq1,[2,94]),{9:202,20:$VF,21:$VG,22:$V41,23:$VH,24:$V51,26:$V61,38:$V71,40:[1,201],42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,203],43:31,44:$Vb,46:$Vc,49:34,50:44,51:$Vd,53:45,65:$Ve,66:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,117:$Vs,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},{22:$VD,30:204},{22:[1,205],26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:177,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:[1,206]},{22:[1,207]},{22:[1,208],105:[1,209]},o($Vs1,[2,122]),{22:[1,210]},{22:[1,211],26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:177,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:[1,212],26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:177,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{83:[1,213]},o($V01,[2,102],{22:[1,214]}),{83:[1,215],100:[1,216]},{83:[1,217]},o($Vp1,[2,152]),{83:[1,218],100:[1,219]},o($VZ,[2,56],{115:128,51:$Vd,65:$Ve,66:$Vf,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB}),{22:$V41,24:$V51,26:$V61,38:$V71,41:[1,220],42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,55:[1,221],65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:222,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,57:[1,223],65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,59:[1,224],65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,61:[1,225],65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,63:[1,226],65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{66:[1,227]},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,69:[1,228],72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,71:[1,229],72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,39:230,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,41:[1,231],42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,74:[1,232],76:[1,233],80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,74:[1,235],76:[1,234],80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{9:236,20:$VF,21:$VG,23:$VH},o($VI,[2,51],{51:$Vo1}),o($V31,[2,76]),o($V31,[2,75]),{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,67:[1,237],72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V31,[2,78]),o($Vq1,[2,82]),{22:$V41,24:$V51,26:$V61,38:$V71,39:238,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($Vn1,$V5,{17:239}),o($VE,[2,43]),{50:240,51:$Vd,53:45,65:$Ve,66:$Vf,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:241,101:$Vx1,104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:255,101:$Vx1,104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:256,101:$Vx1,103:[1,257],104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:258,101:$Vx1,103:[1,259],104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{104:[1,260]},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:261,101:$Vx1,104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:262,101:$Vx1,104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,96:263,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V01,[2,101]),{83:[1,264]},o($V01,[2,105],{22:[1,265]}),o($V01,[2,106]),o($V01,[2,109]),o($V01,[2,111],{22:[1,266]}),o($V01,[2,112]),o($V_,[2,57]),o($V_,[2,58]),{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,57:[1,267],65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V_,[2,65]),o($V_,[2,60]),o($V_,[2,61]),o($V_,[2,62]),{65:[1,268]},o($V_,[2,64]),o($V_,[2,66]),{22:$V41,24:$V51,26:$V61,38:$V71,42:$V81,51:$VK,65:$VL,66:$VM,71:[1,269],72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V_,[2,68]),o($V_,[2,69]),o($V_,[2,71]),o($V_,[2,70]),o($V_,[2,72]),o($Vr1,[2,4]),o([22,51,65,66,90,94,104,105,108,110,111,121,122,123,124,125,126],[2,80]),{22:$V41,24:$V51,26:$V61,38:$V71,41:[1,270],42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,271],43:31,44:$Vb,46:$Vc,49:34,50:44,51:$Vd,53:45,65:$Ve,66:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,117:$Vs,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},o($VZ,[2,55]),o($V01,[2,114],{105:$VE1}),o($VF1,[2,124],{107:273,22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,101:$Vx1,104:$Vy1,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1}),o($VG1,[2,126]),o($VG1,[2,128]),o($VG1,[2,129]),o($VG1,[2,130]),o($VG1,[2,131]),o($VG1,[2,132]),o($VG1,[2,133]),o($VG1,[2,134]),o($VG1,[2,135]),o($VG1,[2,136]),o($VG1,[2,137]),o($VG1,[2,138]),o($V01,[2,115],{105:$VE1}),o($V01,[2,116],{105:$VE1}),{22:[1,274]},o($V01,[2,117],{105:$VE1}),{22:[1,275]},o($Vs1,[2,123]),o($V01,[2,97],{105:$VE1}),o($V01,[2,98],{105:$VE1}),o($V01,[2,99],{114:99,116:177,26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY}),o($V01,[2,103]),{100:[1,276]},{100:[1,277]},{57:[1,278]},{67:[1,279]},{71:[1,280]},{9:281,20:$VF,21:$VG,23:$VH},o($VE,[2,42]),{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,101:$Vx1,104:$Vy1,106:282,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},o($VG1,[2,127]),{26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,96:283,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,96:284,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,114:99,116:97,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V01,[2,107]),o($V01,[2,113]),o($V_,[2,59]),{22:$V41,24:$V51,26:$V61,38:$V71,39:285,42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:139,83:$Vb1,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},o($V_,[2,67]),o($Vn1,$V5,{17:286}),o($VF1,[2,125],{107:273,22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,101:$Vx1,104:$Vy1,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1}),o($V01,[2,120],{114:99,116:177,22:[1,287],26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY}),o($V01,[2,121],{114:99,116:177,22:[1,288],26:$VJ,51:$VK,65:$VL,66:$VM,90:$VN,104:$VO,105:$VP,108:$VQ,110:$VR,111:$VS,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY}),{22:$V41,24:$V51,26:$V61,38:$V71,41:[1,289],42:$V81,51:$VK,65:$VL,66:$VM,72:$V91,80:$Va1,82:200,84:150,85:$Vc1,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,93:141,94:$Vj1,104:$VO,105:$VP,108:$Vk1,110:$VR,111:$VS,112:$Vl1,113:$Vm1,114:147,121:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,290],43:31,44:$Vb,46:$Vc,49:34,50:44,51:$Vd,53:45,65:$Ve,66:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,94:$Vm,104:$Vn,105:$Vo,108:$Vp,110:$Vq,111:$Vr,115:46,117:$Vs,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:291,101:$Vx1,104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},{22:$Vt1,65:$Vu1,66:$Vv1,85:$Vw1,95:292,101:$Vx1,104:$Vy1,106:242,107:243,108:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1},o($V_,[2,63]),o($VE,[2,41]),o($V01,[2,118],{105:$VE1}),o($V01,[2,119],{105:$VE1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],131:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7: this.begin(\"title\");return 44; \nbreak;\ncase 8: this.popState(); return \"title_value\"; \nbreak;\ncase 9: this.begin(\"accDescription\");return 46; \nbreak;\ncase 10: this.popState(); return \"description_value\"; \nbreak;\ncase 11:this.begin(\"string\");\nbreak;\ncase 12:this.popState();\nbreak;\ncase 13:return \"STR\";\nbreak;\ncase 14:return 85;\nbreak;\ncase 15:return 94;\nbreak;\ncase 16:return 86;\nbreak;\ncase 17:return 103;\nbreak;\ncase 18:return 87;\nbreak;\ncase 19:return 88;\nbreak;\ncase 20:this.begin(\"href\");\nbreak;\ncase 21:this.popState();\nbreak;\ncase 22:return 99;\nbreak;\ncase 23:this.begin(\"callbackname\");\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 26:return 97;\nbreak;\ncase 27:this.popState();\nbreak;\ncase 28:return 98;\nbreak;\ncase 29:this.begin(\"click\");\nbreak;\ncase 30:this.popState();\nbreak;\ncase 31:return 89;\nbreak;\ncase 32:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 33:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 34:return 38;\nbreak;\ncase 35:return 42;\nbreak;\ncase 36:return 100;\nbreak;\ncase 37:return 100;\nbreak;\ncase 38:return 100;\nbreak;\ncase 39:return 100;\nbreak;\ncase 40: this.popState(); return 25; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47: this.popState(); return 26; \nbreak;\ncase 48: this.popState(); return 26; \nbreak;\ncase 49: this.popState(); return 26; \nbreak;\ncase 50: this.popState(); return 26; \nbreak;\ncase 51:return 117;\nbreak;\ncase 52:return 118;\nbreak;\ncase 53:return 119;\nbreak;\ncase 54:return 120;\nbreak;\ncase 55: return 104;\nbreak;\ncase 56:return 110;\nbreak;\ncase 57:return 52;\nbreak;\ncase 58:return 66;\nbreak;\ncase 59:return 51;\nbreak;\ncase 60:return 20;\nbreak;\ncase 61:return 105;\nbreak;\ncase 62:return 125;\nbreak;\ncase 63:return 81;\nbreak;\ncase 64:return 81;\nbreak;\ncase 65:return 81;\nbreak;\ncase 66:return 80;\nbreak;\ncase 67:return 80;\nbreak;\ncase 68:return 80;\nbreak;\ncase 69:return 58;\nbreak;\ncase 70:return 59;\nbreak;\ncase 71:return 60;\nbreak;\ncase 72:return 61;\nbreak;\ncase 73:return 62;\nbreak;\ncase 74:return 63;\nbreak;\ncase 75:return 64;\nbreak;\ncase 76:return 68;\nbreak;\ncase 77:return 69;\nbreak;\ncase 78:return 54;\nbreak;\ncase 79:return 55;\nbreak;\ncase 80:return 108;\nbreak;\ncase 81:return 111;\nbreak;\ncase 82:return 126;\nbreak;\ncase 83:return 123;\nbreak;\ncase 84:return 112;\nbreak;\ncase 85:return 124;\nbreak;\ncase 86:return 124;\nbreak;\ncase 87:return 113;\nbreak;\ncase 88:return 72;\nbreak;\ncase 89:return 91;\nbreak;\ncase 90:return 'SEP';\nbreak;\ncase 91:return 90;\nbreak;\ncase 92:return 65;\nbreak;\ncase 93:return 74;\nbreak;\ncase 94:return 73;\nbreak;\ncase 95:return 76;\nbreak;\ncase 96:return 75;\nbreak;\ncase 97:return 121;\nbreak;\ncase 98:return 122;\nbreak;\ncase 99:return 67;\nbreak;\ncase 100:return 56;\nbreak;\ncase 101:return 57;\nbreak;\ncase 102:return 40;\nbreak;\ncase 103:return 41;\nbreak;\ncase 104:return 70\nbreak;\ncase 105:return 71\nbreak;\ncase 106:return 132;\nbreak;\ncase 107:return 21;\nbreak;\ncase 108:return 22;\nbreak;\ncase 109:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:title\\b)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescription\\b)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:\\(\\(\\()/,/^(?:\\)\\)\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[27,28],\"inclusive\":false},\"callbackname\":{\"rules\":[24,25,26],\"inclusive\":false},\"href\":{\"rules\":[21,22],\"inclusive\":false},\"click\":{\"rules\":[30,31],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[40,41,42,43,44,45,46,47,48,49,50],\"inclusive\":false},\"accDescription\":{\"rules\":[10],\"inclusive\":false},\"title\":{\"rules\":[8],\"inclusive\":false},\"string\":{\"rules\":[12,13],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,9,11,14,15,16,17,18,19,20,23,29,32,33,34,35,36,37,38,39,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,30,35],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,24],$Vd=[1,26],$Ve=[1,28],$Vf=[1,31],$Vg=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,30,35];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"accDescription\":20,\"section\":21,\"clickStatement\":22,\"taskTxt\":23,\"taskData\":24,\"openDirective\":25,\"typeDirective\":26,\"closeDirective\":27,\":\":28,\"argDirective\":29,\"click\":30,\"callbackname\":31,\"callbackargs\":32,\"href\":33,\"clickStatementDebug\":34,\"open_directive\":35,\"type_directive\":36,\"arg_directive\":37,\"close_directive\":38,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"accDescription\",21:\"section\",23:\"taskTxt\",24:\"taskData\",28:\":\",30:\"click\",31:\"callbackname\",32:\"callbackargs\",33:\"href\",35:\"open_directive\",36:\"type_directive\",37:\"arg_directive\",38:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[22,2],[22,3],[22,3],[22,4],[22,3],[22,4],[22,2],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[25,1],[26,1],[29,1],[27,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\nyy.setAccDescription($$[$0].substr(15));this.$=$$[$0].substr(15);\nbreak;\ncase 18:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 20:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 24:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 25:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 27:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 28:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 29:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 30:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 31: case 37:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 32: case 33: case 35:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 34: case 36:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 38:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 39:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 40:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 41:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,25:4,35:$V1},{1:[3]},{3:6,4:2,5:$V0,25:4,35:$V1},o($V2,[2,3],{6:7}),{26:8,36:[1,9]},{36:[2,38]},{1:[2,1]},{4:27,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:$Vc,22:25,23:$Vd,25:4,30:$Ve,35:$V1},{27:29,28:[1,30],38:$Vf},o([28,38],[2,39]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:27,10:32,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:$Vc,22:25,23:$Vd,25:4,30:$Ve,35:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),o($V2,[2,19]),{24:[1,33]},o($V2,[2,21]),{31:[1,34],33:[1,35]},{11:[1,36]},{29:37,37:[1,38]},{11:[2,41]},o($V2,[2,5]),o($V2,[2,20]),o($V2,[2,24],{32:[1,39],33:[1,40]}),o($V2,[2,30],{31:[1,41]}),o($Vg,[2,22]),{27:42,38:$Vf},{38:[2,40]},o($V2,[2,25],{33:[1,43]}),o($V2,[2,26]),o($V2,[2,28],{32:[1,44]}),{11:[1,45]},o($V2,[2,27]),o($V2,[2,29]),o($Vg,[2,23])],\ndefaultActions: {5:[2,38],6:[2,1],31:[2,41],38:[2,40]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 35; \nbreak;\ncase 1: this.begin('type_directive'); return 36; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 28; \nbreak;\ncase 3: this.popState(); this.popState(); return 38; \nbreak;\ncase 4:return 37;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 33;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 31;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 32;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 30;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 17;\nbreak;\ncase 30:return 16;\nbreak;\ncase 31:return 18;\nbreak;\ncase 32:return 'date';\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 20\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 23;\nbreak;\ncase 37:return 24;\nbreak;\ncase 38:return 28;\nbreak;\ncase 39:return 7;\nbreak;\ncase 40:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,7],$V2=[1,5],$V3=[1,9],$V4=[1,6],$V5=[2,6],$V6=[1,16],$V7=[6,8,14,18,20,21,22,37,41],$V8=[8,14,18,20,21,22],$V9=[8,13,14,18,20,21,22],$Va=[1,26],$Vb=[6,8,14,37,41],$Vc=[8,14,41],$Vd=[1,53],$Ve=[1,54],$Vf=[1,55],$Vg=[8,14,24,28,29,41];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"GG\":6,\"document\":7,\"EOF\":8,\":\":9,\"DIR\":10,\"options\":11,\"body\":12,\"OPT\":13,\"NL\":14,\"line\":15,\"statement\":16,\"commitStatement\":17,\"BRANCH\":18,\"ID\":19,\"CHECKOUT\":20,\"MERGE\":21,\"COMMIT\":22,\"commit_arg\":23,\"COMMIT_TAG\":24,\"STR\":25,\"COMMIT_TYPE\":26,\"commitType\":27,\"COMMIT_ID\":28,\"COMMIT_MSG\":29,\"NORMAL\":30,\"REVERSE\":31,\"HIGHLIGHT\":32,\"openDirective\":33,\"typeDirective\":34,\"closeDirective\":35,\"argDirective\":36,\"open_directive\":37,\"type_directive\":38,\"arg_directive\":39,\"close_directive\":40,\";\":41,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"GG\",8:\"EOF\",9:\":\",10:\"DIR\",13:\"OPT\",14:\"NL\",18:\"BRANCH\",19:\"ID\",20:\"CHECKOUT\",21:\"MERGE\",22:\"COMMIT\",24:\"COMMIT_TAG\",25:\"STR\",26:\"COMMIT_TYPE\",28:\"COMMIT_ID\",29:\"COMMIT_MSG\",30:\"NORMAL\",31:\"REVERSE\",32:\"HIGHLIGHT\",37:\"open_directive\",38:\"type_directive\",39:\"arg_directive\",40:\"close_directive\",41:\";\"},\nproductions_: [0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,2],[16,2],[16,2],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[23,0],[23,1],[27,1],[27,1],[27,1],[5,3],[5,5],[33,1],[34,1],[36,1],[35,1],[4,1],[4,1],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n return $$[$0]; \nbreak;\ncase 4:\n return $$[$0-1]; \nbreak;\ncase 5:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 7:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 8:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 10:\nthis.$ = []\nbreak;\ncase 11:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$ =$$[$0-1]\nbreak;\ncase 15:\nyy.branch($$[$0])\nbreak;\ncase 16:\nyy.checkout($$[$0])\nbreak;\ncase 17:\nyy.merge($$[$0])\nbreak;\ncase 18:\nyy.commit($$[$0])\nbreak;\ncase 19:\nyy.commit('','',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 20:\nyy.commit('','',$$[$0],'')\nbreak;\ncase 21:\nyy.commit('','',$$[$0],$$[$0-2])\nbreak;\ncase 22:\nyy.commit('','',$$[$0-2],$$[$0])\nbreak;\ncase 23:\nyy.commit('',$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 24:\nyy.commit('',$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 25:\nyy.commit('',$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 26:\nyy.commit('',$$[$0-2],$$[$0],'')\nbreak;\ncase 27:\nyy.commit('',$$[$0],$$[$0-2],'')\nbreak;\ncase 28:\nyy.commit('',$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 29:\nyy.commit('',$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 30:\nyy.commit('',$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 31:\nyy.commit('',$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 32:\nyy.commit('',$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 33:\nyy.commit('',$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 34:\nyy.commit($$[$0],'',yy.commitType.NORMAL,'')\nbreak;\ncase 35:\nyy.commit($$[$0],'',yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 36:\nyy.commit($$[$0-2],'',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 37:\nyy.commit($$[$0-2],'',$$[$0],'')\nbreak;\ncase 38:\nyy.commit($$[$0],'',$$[$0-2],'')\nbreak;\ncase 39:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,'')\nbreak;\ncase 40:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 41:\nyy.commit($$[$0-4],'',$$[$0-2],$$[$0])\nbreak;\ncase 42:\nyy.commit($$[$0-4],'',$$[$0],$$[$0-2])\nbreak;\ncase 43:\nyy.commit($$[$0-2],'',$$[$0-4],$$[$0])\nbreak;\ncase 44:\nyy.commit($$[$0],'',$$[$0-4],$$[$0-2])\nbreak;\ncase 45:\nyy.commit($$[$0],'',$$[$0-2],$$[$0-4])\nbreak;\ncase 46:\nyy.commit($$[$0-2],'',$$[$0],$$[$0-4])\nbreak;\ncase 47:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],'')\nbreak;\ncase 48:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],'')\nbreak;\ncase 49:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],'')\nbreak;\ncase 50:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],'')\nbreak;\ncase 51:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],'')\nbreak;\ncase 52:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],'')\nbreak;\ncase 53:\nyy.commit($$[$0-4],$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 54:\nyy.commit($$[$0-4],$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 55:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 56:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 57:\nyy.commit($$[$0],$$[$0-4],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 58:\nyy.commit($$[$0-2],$$[$0-4],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 59:\nyy.commit($$[$0-6],$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 60:\nyy.commit($$[$0-6],$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 61:\nyy.commit($$[$0-6],$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 62:\nyy.commit($$[$0-6],$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 63:\nyy.commit($$[$0-6],$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 64:\nyy.commit($$[$0-6],$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 65:\nyy.commit($$[$0-4],$$[$0-6],$$[$0-2],$$[$0])\nbreak;\ncase 66:\nyy.commit($$[$0-4],$$[$0-6],$$[$0],$$[$0-2])\nbreak;\ncase 67:\nyy.commit($$[$0-2],$$[$0-6],$$[$0-4],$$[$0])\nbreak;\ncase 68:\nyy.commit($$[$0],$$[$0-6],$$[$0-4],$$[$0-2])\nbreak;\ncase 69:\nyy.commit($$[$0-2],$$[$0-6],$$[$0],$$[$0-4])\nbreak;\ncase 70:\nyy.commit($$[$0],$$[$0-6],$$[$0-2],$$[$0-4])\nbreak;\ncase 71:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],$$[$0-6])\nbreak;\ncase 72:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],$$[$0-6])\nbreak;\ncase 73:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],$$[$0-6])\nbreak;\ncase 74:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],$$[$0-6])\nbreak;\ncase 75:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],$$[$0-6])\nbreak;\ncase 76:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],$$[$0-6])\nbreak;\ncase 77:\nyy.commit($$[$0-2],$$[$0-4],$$[$0-6],$$[$0])\nbreak;\ncase 78:\nyy.commit($$[$0],$$[$0-4],$$[$0-6],$$[$0-2])\nbreak;\ncase 79:\nyy.commit($$[$0-2],$$[$0],$$[$0-6],$$[$0-4])\nbreak;\ncase 80:\nyy.commit($$[$0],$$[$0-2],$$[$0-6],$$[$0-4])\nbreak;\ncase 81:\nyy.commit($$[$0-4],$$[$0-2],$$[$0-6],$$[$0])\nbreak;\ncase 82:\nyy.commit($$[$0-4],$$[$0],$$[$0-6],$$[$0-2])\nbreak;\ncase 83:\nthis.$ = \"\"\nbreak;\ncase 84:\nthis.$=$$[$0]\nbreak;\ncase 85:\n this.$=yy.commitType.NORMAL;\nbreak;\ncase 86:\n this.$=yy.commitType.REVERSE;\nbreak;\ncase 87:\n this.$=yy.commitType.HIGHLIGHT;\nbreak;\ncase 90:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 91:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 92:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 93:\n yy.parseDirective('}%%', 'close_directive', 'gitGraph'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{3:11,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{7:12,8:$V5,9:[1,13],10:[1,14],11:15,14:$V6},o($V7,[2,94]),o($V7,[2,95]),o($V7,[2,96]),{34:17,38:[1,18]},{38:[2,90]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:$V5,11:15,14:$V6},{9:[1,21]},o($V8,[2,10],{12:22,13:[1,23]}),o($V9,[2,9]),{9:[1,25],35:24,40:$Va},o([9,40],[2,91]),{1:[2,3]},{8:[1,27]},{7:28,8:$V5,11:15,14:$V6},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:[1,33],20:[1,34],21:[1,35],22:[1,36]},o($V9,[2,8]),o($Vb,[2,88]),{36:37,39:[1,38]},o($Vb,[2,93]),{1:[2,4]},{8:[1,39]},o($V8,[2,11]),{4:40,8:$V1,14:$V2,41:$V4},o($V8,[2,13]),o($Vc,[2,14]),{19:[1,41]},{19:[1,42]},{19:[1,43]},o($Vc,[2,83],{23:44,24:[1,45],25:[1,49],26:[1,46],28:[1,47],29:[1,48]}),{35:50,40:$Va},{40:[2,92]},{1:[2,5]},o($V8,[2,12]),o($Vc,[2,15]),o($Vc,[2,16]),o($Vc,[2,17]),o($Vc,[2,18]),{25:[1,51]},{27:52,30:$Vd,31:$Ve,32:$Vf},{25:[1,56]},{25:[1,57]},o($Vc,[2,84]),o($Vb,[2,89]),o($Vc,[2,19],{26:[1,58],28:[1,59],29:[1,60]}),o($Vc,[2,20],{24:[1,61],28:[1,62],29:[1,63]}),o($Vg,[2,85]),o($Vg,[2,86]),o($Vg,[2,87]),o($Vc,[2,23],{24:[1,64],26:[1,65],29:[1,66]}),o($Vc,[2,34],{24:[1,67],26:[1,68],28:[1,69]}),{27:70,30:$Vd,31:$Ve,32:$Vf},{25:[1,71]},{25:[1,72]},{25:[1,73]},{25:[1,74]},{25:[1,75]},{25:[1,76]},{27:77,30:$Vd,31:$Ve,32:$Vf},{25:[1,78]},{25:[1,79]},{27:80,30:$Vd,31:$Ve,32:$Vf},{25:[1,81]},o($Vc,[2,21],{28:[1,82],29:[1,83]}),o($Vc,[2,25],{26:[1,84],29:[1,85]}),o($Vc,[2,35],{26:[1,86],28:[1,87]}),o($Vc,[2,22],{28:[1,88],29:[1,89]}),o($Vc,[2,27],{24:[1,90],29:[1,91]}),o($Vc,[2,38],{24:[1,92],28:[1,93]}),o($Vc,[2,24],{26:[1,94],29:[1,95]}),o($Vc,[2,26],{24:[1,96],29:[1,97]}),o($Vc,[2,39],{24:[1,99],26:[1,98]}),o($Vc,[2,36],{26:[1,100],28:[1,101]}),o($Vc,[2,37],{24:[1,102],28:[1,103]}),o($Vc,[2,40],{24:[1,105],26:[1,104]}),{25:[1,106]},{25:[1,107]},{27:108,30:$Vd,31:$Ve,32:$Vf},{25:[1,109]},{27:110,30:$Vd,31:$Ve,32:$Vf},{25:[1,111]},{25:[1,112]},{25:[1,113]},{25:[1,114]},{25:[1,115]},{25:[1,116]},{25:[1,117]},{27:118,30:$Vd,31:$Ve,32:$Vf},{25:[1,119]},{25:[1,120]},{25:[1,121]},{27:122,30:$Vd,31:$Ve,32:$Vf},{25:[1,123]},{27:124,30:$Vd,31:$Ve,32:$Vf},{25:[1,125]},{25:[1,126]},{25:[1,127]},{27:128,30:$Vd,31:$Ve,32:$Vf},{25:[1,129]},o($Vc,[2,32],{29:[1,130]}),o($Vc,[2,45],{28:[1,131]}),o($Vc,[2,33],{29:[1,132]}),o($Vc,[2,56],{26:[1,133]}),o($Vc,[2,46],{28:[1,134]}),o($Vc,[2,55],{26:[1,135]}),o($Vc,[2,31],{29:[1,136]}),o($Vc,[2,44],{28:[1,137]}),o($Vc,[2,30],{29:[1,138]}),o($Vc,[2,50],{24:[1,139]}),o($Vc,[2,43],{28:[1,140]}),o($Vc,[2,49],{24:[1,141]}),o($Vc,[2,29],{29:[1,142]}),o($Vc,[2,57],{26:[1,143]}),o($Vc,[2,28],{29:[1,144]}),o($Vc,[2,51],{24:[1,145]}),o($Vc,[2,52],{24:[1,146]}),o($Vc,[2,58],{26:[1,147]}),o($Vc,[2,42],{28:[1,148]}),o($Vc,[2,53],{26:[1,149]}),o($Vc,[2,41],{28:[1,150]}),o($Vc,[2,47],{24:[1,151]}),o($Vc,[2,48],{24:[1,152]}),o($Vc,[2,54],{26:[1,153]}),{25:[1,154]},{25:[1,155]},{25:[1,156]},{27:157,30:$Vd,31:$Ve,32:$Vf},{25:[1,158]},{27:159,30:$Vd,31:$Ve,32:$Vf},{25:[1,160]},{25:[1,161]},{25:[1,162]},{25:[1,163]},{25:[1,164]},{25:[1,165]},{25:[1,166]},{27:167,30:$Vd,31:$Ve,32:$Vf},{25:[1,168]},{25:[1,169]},{25:[1,170]},{27:171,30:$Vd,31:$Ve,32:$Vf},{25:[1,172]},{27:173,30:$Vd,31:$Ve,32:$Vf},{25:[1,174]},{25:[1,175]},{25:[1,176]},{27:177,30:$Vd,31:$Ve,32:$Vf},o($Vc,[2,73]),o($Vc,[2,74]),o($Vc,[2,71]),o($Vc,[2,72]),o($Vc,[2,76]),o($Vc,[2,75]),o($Vc,[2,80]),o($Vc,[2,79]),o($Vc,[2,78]),o($Vc,[2,77]),o($Vc,[2,82]),o($Vc,[2,81]),o($Vc,[2,70]),o($Vc,[2,69]),o($Vc,[2,68]),o($Vc,[2,67]),o($Vc,[2,65]),o($Vc,[2,66]),o($Vc,[2,64]),o($Vc,[2,63]),o($Vc,[2,62]),o($Vc,[2,61]),o($Vc,[2,59]),o($Vc,[2,60])],\ndefaultActions: {9:[2,90],10:[2,1],11:[2,2],19:[2,3],27:[2,4],38:[2,92],39:[2,5]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 37; \nbreak;\ncase 1: this.begin('type_directive'); return 38; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 9; \nbreak;\ncase 3: this.popState(); this.popState(); return 40; \nbreak;\ncase 4:return 39;\nbreak;\ncase 5:/*{console.log('New line');return 14;}*/ return 14;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 6;\nbreak;\ncase 10:return 22;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 26;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 30;\nbreak;\ncase 15:return 31;\nbreak;\ncase 16:return 32;\nbreak;\ncase 17:return 24;\nbreak;\ncase 18:return 18;\nbreak;\ncase 19:return 21;\nbreak;\ncase 20:return 20;\nbreak;\ncase 21:return 10;\nbreak;\ncase 22:return 10;\nbreak;\ncase 23:return 9;\nbreak;\ncase 24:return 'CARET'\nbreak;\ncase 25:this.begin(\"options\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 13;\nbreak;\ncase 28:this.begin(\"string\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 19;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\\b)/i,/^(?:REVERSE\\b)/i,/^(?:HIGHLIGHT\\b)/i,/^(?:tag:)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"options\":{\"rules\":[26,27],\"inclusive\":false},\"string\":{\"rules\":[29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,31,32],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,15,22,23,24,25],$V6=[2,5],$V7=[1,6,11,13,15,22,23,24,25],$V8=[22,23,24],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,25],$Ve=[6,22,23,24,25];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"accDescription\":15,\"description_value\":16,\"openDirective\":17,\"typeDirective\":18,\"closeDirective\":19,\":\":20,\"argDirective\":21,\"NEWLINE\":22,\";\":23,\"EOF\":24,\"open_directive\":25,\"type_directive\":26,\"arg_directive\":27,\"close_directive\":28,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",15:\"accDescription\",16:\"description_value\",20:\":\",22:\"NEWLINE\",23:\";\",24:\"EOF\",25:\"open_directive\",26:\"type_directive\",27:\"arg_directive\",28:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[17,1],[18,1],[21,1],[19,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 11:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 19:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 20:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 21:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{3:11,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,15]),o($V7,[2,16]),o($V7,[2,17]),{18:14,26:[1,15]},{26:[2,18]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,3],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($V5,$V6,{7:22}),{19:23,20:[1,24],28:$Vd},o([20,28],[2,19]),o($V5,[2,6]),{4:26,22:$V1,23:$V2,24:$V3},{12:[1,27]},{14:[1,28]},{16:[1,29]},o($V8,[2,12]),o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,4],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($Ve,[2,13]),{21:30,27:[1,31]},o($Ve,[2,21]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),{19:32,28:$Vd},{28:[2,20]},o($Ve,[2,14])],\ndefaultActions: {9:[2,18],10:[2,1],11:[2,2],31:[2,20]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 25; \nbreak;\ncase 1: this.begin('type_directive'); return 26; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 20; \nbreak;\ncase 3: this.popState(); this.popState(); return 28; \nbreak;\ncase 4:return 27;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 22;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"accDescription\");return 15; \nbreak;\ncase 13: this.popState(); return \"description_value\"; \nbreak;\ncase 14: this.begin(\"string\"); \nbreak;\ncase 15: this.popState(); \nbreak;\ncase 16: return \"txt\"; \nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 8;\nbreak;\ncase 19:return \"value\";\nbreak;\ncase 20:return 24;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"accDescription\":{\"rules\":[13],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[15,16],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,14,17,18,19,20],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[5,6,8,14,15,16,37,38,39,40,41,42,50,68,69],$V5=[1,19],$V6=[2,12],$V7=[1,23],$V8=[1,24],$V9=[1,25],$Va=[1,26],$Vb=[1,27],$Vc=[1,28],$Vd=[1,21],$Ve=[1,29],$Vf=[1,30],$Vg=[1,33],$Vh=[68,69],$Vi=[5,8,14,15,16,37,38,39,40,41,42,50,57,59,68,69],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[1,56],$Vn=[1,57],$Vo=[1,58],$Vp=[1,59],$Vq=[59,60],$Vr=[1,71],$Vs=[1,67],$Vt=[1,68],$Vu=[1,69],$Vv=[1,70],$Vw=[1,72],$Vx=[1,76],$Vy=[1,77],$Vz=[1,74],$VA=[1,75],$VB=[5,8,14,15,16,37,38,39,40,41,42,50,68,69];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"title\":14,\"accDescription\":15,\"open_directive\":16,\"type_directive\":17,\"arg_directive\":18,\"close_directive\":19,\"requirementDef\":20,\"elementDef\":21,\"relationshipDef\":22,\"requirementType\":23,\"requirementName\":24,\"STRUCT_START\":25,\"requirementBody\":26,\"ID\":27,\"COLONSEP\":28,\"id\":29,\"TEXT\":30,\"text\":31,\"RISK\":32,\"riskLevel\":33,\"VERIFYMTHD\":34,\"verifyType\":35,\"STRUCT_STOP\":36,\"REQUIREMENT\":37,\"FUNCTIONAL_REQUIREMENT\":38,\"INTERFACE_REQUIREMENT\":39,\"PERFORMANCE_REQUIREMENT\":40,\"PHYSICAL_REQUIREMENT\":41,\"DESIGN_CONSTRAINT\":42,\"LOW_RISK\":43,\"MED_RISK\":44,\"HIGH_RISK\":45,\"VERIFY_ANALYSIS\":46,\"VERIFY_DEMONSTRATION\":47,\"VERIFY_INSPECTION\":48,\"VERIFY_TEST\":49,\"ELEMENT\":50,\"elementName\":51,\"elementBody\":52,\"TYPE\":53,\"type\":54,\"DOCREF\":55,\"ref\":56,\"END_ARROW_L\":57,\"relationship\":58,\"LINE\":59,\"END_ARROW_R\":60,\"CONTAINS\":61,\"COPIES\":62,\"DERIVES\":63,\"SATISFIES\":64,\"VERIFIES\":65,\"REFINES\":66,\"TRACES\":67,\"unqString\":68,\"qString\":69,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"title\",15:\"accDescription\",16:\"open_directive\",17:\"type_directive\",18:\"arg_directive\",19:\"close_directive\",25:\"STRUCT_START\",27:\"ID\",28:\"COLONSEP\",30:\"TEXT\",32:\"RISK\",34:\"VERIFYMTHD\",36:\"STRUCT_STOP\",37:\"REQUIREMENT\",38:\"FUNCTIONAL_REQUIREMENT\",39:\"INTERFACE_REQUIREMENT\",40:\"PERFORMANCE_REQUIREMENT\",41:\"PHYSICAL_REQUIREMENT\",42:\"DESIGN_CONSTRAINT\",43:\"LOW_RISK\",44:\"MED_RISK\",45:\"HIGH_RISK\",46:\"VERIFY_ANALYSIS\",47:\"VERIFY_DEMONSTRATION\",48:\"VERIFY_INSPECTION\",49:\"VERIFY_TEST\",50:\"ELEMENT\",53:\"TYPE\",55:\"DOCREF\",57:\"END_ARROW_L\",59:\"LINE\",60:\"END_ARROW_R\",61:\"CONTAINS\",62:\"COPIES\",63:\"DERIVES\",64:\"SATISFIES\",65:\"VERIFIES\",66:\"REFINES\",67:\"TRACES\",68:\"unqString\",69:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,1],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[20,5],[26,5],[26,5],[26,5],[26,5],[26,2],[26,1],[23,1],[23,1],[23,1],[23,1],[23,1],[23,1],[33,1],[33,1],[33,1],[35,1],[35,1],[35,1],[35,1],[21,5],[52,5],[52,5],[52,2],[52,1],[22,5],[22,5],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[24,1],[24,1],[29,1],[29,1],[31,1],[31,1],[51,1],[51,1],[54,1],[54,1],[56,1],[56,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 7:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 8:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 9:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 10:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 11:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 12:\n this.$ = [] \nbreak;\ncase 18:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 19:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 20:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 21:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 22:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 25:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 29:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 30:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 31:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 32:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 33:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 34:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 36:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 37:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 38:\n yy.addElement($$[$0-3]) \nbreak;\ncase 39:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 40:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 43:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 44:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 45:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 46:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 47:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 48:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 49:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 50:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 51:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1,15:$V2,16:$V3},{1:[3]},{3:9,4:2,5:[1,8],6:$V0,9:4,14:$V1,15:$V2,16:$V3},{5:[1,10]},{10:11,17:[1,12]},o($V4,[2,6]),o($V4,[2,7]),{17:[2,8]},{3:13,4:2,6:$V0,9:4,14:$V1,15:$V2,16:$V3},{1:[2,2]},{4:18,5:$V5,7:14,8:$V6,9:4,14:$V1,15:$V2,16:$V3,20:15,21:16,22:17,23:20,29:22,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,42:$Vc,50:$Vd,68:$Ve,69:$Vf},{11:31,12:[1,32],19:$Vg},o([12,19],[2,9]),{1:[2,1]},{8:[1,34]},{4:18,5:$V5,7:35,8:$V6,9:4,14:$V1,15:$V2,16:$V3,20:15,21:16,22:17,23:20,29:22,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,42:$Vc,50:$Vd,68:$Ve,69:$Vf},{4:18,5:$V5,7:36,8:$V6,9:4,14:$V1,15:$V2,16:$V3,20:15,21:16,22:17,23:20,29:22,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,42:$Vc,50:$Vd,68:$Ve,69:$Vf},{4:18,5:$V5,7:37,8:$V6,9:4,14:$V1,15:$V2,16:$V3,20:15,21:16,22:17,23:20,29:22,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,42:$Vc,50:$Vd,68:$Ve,69:$Vf},{4:18,5:$V5,7:38,8:$V6,9:4,14:$V1,15:$V2,16:$V3,20:15,21:16,22:17,23:20,29:22,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,42:$Vc,50:$Vd,68:$Ve,69:$Vf},{4:18,5:$V5,7:39,8:$V6,9:4,14:$V1,15:$V2,16:$V3,20:15,21:16,22:17,23:20,29:22,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,42:$Vc,50:$Vd,68:$Ve,69:$Vf},{24:40,68:[1,41],69:[1,42]},{51:43,68:[1,44],69:[1,45]},{57:[1,46],59:[1,47]},o($Vh,[2,25]),o($Vh,[2,26]),o($Vh,[2,27]),o($Vh,[2,28]),o($Vh,[2,29]),o($Vh,[2,30]),o($Vi,[2,54]),o($Vi,[2,55]),o($V4,[2,4]),{13:48,18:[1,49]},o($V4,[2,11]),{1:[2,3]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{25:[1,50]},{25:[2,52]},{25:[2,53]},{25:[1,51]},{25:[2,58]},{25:[2,59]},{58:52,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn,66:$Vo,67:$Vp},{58:60,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn,66:$Vo,67:$Vp},{11:61,19:$Vg},{19:[2,10]},{5:[1,62]},{5:[1,63]},{59:[1,64]},o($Vq,[2,45]),o($Vq,[2,46]),o($Vq,[2,47]),o($Vq,[2,48]),o($Vq,[2,49]),o($Vq,[2,50]),o($Vq,[2,51]),{60:[1,65]},o($V4,[2,5]),{5:$Vr,26:66,27:$Vs,30:$Vt,32:$Vu,34:$Vv,36:$Vw},{5:$Vx,36:$Vy,52:73,53:$Vz,55:$VA},{29:78,68:$Ve,69:$Vf},{29:79,68:$Ve,69:$Vf},o($VB,[2,18]),{28:[1,80]},{28:[1,81]},{28:[1,82]},{28:[1,83]},{5:$Vr,26:84,27:$Vs,30:$Vt,32:$Vu,34:$Vv,36:$Vw},o($VB,[2,24]),o($VB,[2,38]),{28:[1,85]},{28:[1,86]},{5:$Vx,36:$Vy,52:87,53:$Vz,55:$VA},o($VB,[2,42]),o($VB,[2,43]),o($VB,[2,44]),{29:88,68:$Ve,69:$Vf},{31:89,68:[1,90],69:[1,91]},{33:92,43:[1,93],44:[1,94],45:[1,95]},{35:96,46:[1,97],47:[1,98],48:[1,99],49:[1,100]},o($VB,[2,23]),{54:101,68:[1,102],69:[1,103]},{56:104,68:[1,105],69:[1,106]},o($VB,[2,41]),{5:[1,107]},{5:[1,108]},{5:[2,56]},{5:[2,57]},{5:[1,109]},{5:[2,31]},{5:[2,32]},{5:[2,33]},{5:[1,110]},{5:[2,34]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,111]},{5:[2,60]},{5:[2,61]},{5:[1,112]},{5:[2,62]},{5:[2,63]},{5:$Vr,26:113,27:$Vs,30:$Vt,32:$Vu,34:$Vv,36:$Vw},{5:$Vr,26:114,27:$Vs,30:$Vt,32:$Vu,34:$Vv,36:$Vw},{5:$Vr,26:115,27:$Vs,30:$Vt,32:$Vu,34:$Vv,36:$Vw},{5:$Vr,26:116,27:$Vs,30:$Vt,32:$Vu,34:$Vv,36:$Vw},{5:$Vx,36:$Vy,52:117,53:$Vz,55:$VA},{5:$Vx,36:$Vy,52:118,53:$Vz,55:$VA},o($VB,[2,19]),o($VB,[2,20]),o($VB,[2,21]),o($VB,[2,22]),o($VB,[2,39]),o($VB,[2,40])],\ndefaultActions: {7:[2,8],9:[2,2],13:[2,1],34:[2,3],35:[2,13],36:[2,14],37:[2,15],38:[2,16],39:[2,17],41:[2,52],42:[2,53],44:[2,58],45:[2,59],49:[2,10],90:[2,56],91:[2,57],93:[2,31],94:[2,32],95:[2,33],97:[2,34],98:[2,35],99:[2,36],100:[2,37],102:[2,60],103:[2,61],105:[2,62],106:[2,63]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 16; \nbreak;\ncase 1: this.begin('type_directive'); return 17; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 19; \nbreak;\ncase 4:return 18;\nbreak;\ncase 5:return 14;\nbreak;\ncase 6:return 15;\nbreak;\ncase 7:return 5;\nbreak;\ncase 8:/* skip all whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 6;\nbreak;\ncase 13:return 25;\nbreak;\ncase 14:return 36;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 27;\nbreak;\ncase 17:return 30;\nbreak;\ncase 18:return 32;\nbreak;\ncase 19:return 34;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 49;\nbreak;\ncase 33:return 50;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 66;\nbreak;\ncase 40:return 67;\nbreak;\ncase 41:return 53;\nbreak;\ncase 42:return 55;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44:return 60;\nbreak;\ncase 45:return 59;\nbreak;\ncase 46: this.begin(\"string\"); \nbreak;\ncase 47: this.popState(); \nbreak;\ncase 48: return \"qString\"; \nbreak;\ncase 49: yy_.yytext = yy_.yytext.trim(); return 68;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[47,48],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,49],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,35],$Vj=[1,36],$Vk=[1,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,43],$Vp=[1,44],$Vq=[1,47],$Vr=[1,4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69],$Vs=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,43,48,49,50,51,59,69],$Vt=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,42,43,48,49,50,51,59,69],$Vu=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,43,48,49,50,51,59,69],$Vv=[57,58,59],$Vw=[1,104],$Vx=[1,4,5,7,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"activate\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"legacy_title\":31,\"accDescription\":32,\"loop\":33,\"end\":34,\"rect\":35,\"opt\":36,\"alt\":37,\"else_sections\":38,\"par\":39,\"par_sections\":40,\"and\":41,\"else\":42,\"note\":43,\"placement\":44,\"text2\":45,\"over\":46,\"actor_pair\":47,\"links\":48,\"link\":49,\"properties\":50,\"details\":51,\"spaceList\":52,\",\":53,\"left_of\":54,\"right_of\":55,\"signaltype\":56,\"+\":57,\"-\":58,\"ACTOR\":59,\"SOLID_OPEN_ARROW\":60,\"DOTTED_OPEN_ARROW\":61,\"SOLID_ARROW\":62,\"DOTTED_ARROW\":63,\"SOLID_CROSS\":64,\"DOTTED_CROSS\":65,\"SOLID_POINT\":66,\"DOTTED_POINT\":67,\"TXT\":68,\"open_directive\":69,\"type_directive\":70,\"arg_directive\":71,\"close_directive\":72,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"activate\",24:\"deactivate\",30:\"title\",31:\"legacy_title\",32:\"accDescription\",33:\"loop\",34:\"end\",35:\"rect\",36:\"opt\",37:\"alt\",39:\"par\",41:\"and\",42:\"else\",43:\"note\",46:\"over\",48:\"links\",49:\"link\",50:\"properties\",51:\"details\",53:\",\",54:\"left_of\",55:\"right_of\",57:\"+\",58:\"-\",59:\"ACTOR\",60:\"SOLID_OPEN_ARROW\",61:\"DOTTED_OPEN_ARROW\",62:\"SOLID_ARROW\",63:\"DOTTED_ARROW\",64:\"SOLID_CROSS\",65:\"DOTTED_CROSS\",66:\"SOLID_POINT\",67:\"DOTTED_POINT\",68:\"TXT\",69:\"open_directive\",70:\"type_directive\",71:\"arg_directive\",72:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[40,1],[40,4],[38,1],[38,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[52,2],[52,1],[47,3],[47,1],[44,1],[44,1],[21,5],[21,5],[21,4],[17,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[45,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\nyy.enableSequenceNumbers()\nbreak;\ncase 18:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 25:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 26:\nyy.setTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 27:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 28:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 29:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 30:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 31:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 32:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 35:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 37:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 38:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 39:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 40:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 41:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 42:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 43:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 46:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 47:\n this.$ = $$[$0]; \nbreak;\ncase 48:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 49:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 50:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 51:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 52:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 53:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 60:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 61:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 62:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 63:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 64:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 65:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 66:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},o([1,4,5,16,20,22,23,24,30,31,32,33,35,36,37,39,43,48,49,50,51,59,69],$V4,{8:11}),{12:12,70:[1,13]},{70:[2,63]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{13:45,14:[1,46],72:$Vq},o([14,72],[2,64]),o($Vr,[2,6]),{6:37,10:48,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},o($Vr,[2,8]),o($Vr,[2,9]),{17:49,59:$Vp},{17:50,59:$Vp},{5:[1,51]},o($Vr,[2,17]),{17:52,59:$Vp},{17:53,59:$Vp},{5:[1,54]},{5:[1,55]},{5:[1,56]},{5:[1,57]},{5:[1,58]},o($Vr,[2,25]),o($Vr,[2,26]),o($Vr,[2,27]),{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vr,[2,33]),{56:64,60:[1,65],61:[1,66],62:[1,67],63:[1,68],64:[1,69],65:[1,70],66:[1,71],67:[1,72]},{44:73,46:[1,74],54:[1,75],55:[1,76]},{17:77,59:$Vp},{17:78,59:$Vp},{17:79,59:$Vp},{17:80,59:$Vp},o([5,18,53,60,61,62,63,64,65,66,67,68],[2,53]),{5:[1,81]},{15:82,71:[1,83]},{5:[2,66]},o($Vr,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vr,[2,16]),{5:[1,88]},{5:[1,89]},o($Vr,[2,20]),o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),o($Vr,[2,24]),o($Vs,$V4,{8:90}),o($Vs,$V4,{8:91}),o($Vs,$V4,{8:92}),o($Vt,$V4,{38:93,8:94}),o($Vu,$V4,{40:95,8:96}),{17:99,57:[1,97],58:[1,98],59:$Vp},o($Vv,[2,54]),o($Vv,[2,55]),o($Vv,[2,56]),o($Vv,[2,57]),o($Vv,[2,58]),o($Vv,[2,59]),o($Vv,[2,60]),o($Vv,[2,61]),{17:100,59:$Vp},{17:102,47:101,59:$Vp},{59:[2,48]},{59:[2,49]},{45:103,68:$Vw},{45:105,68:$Vw},{45:106,68:$Vw},{45:107,68:$Vw},o($Vx,[2,10]),{13:108,72:$Vq},{72:[2,65]},{19:[1,109]},o($Vr,[2,13]),{19:[1,110]},o($Vr,[2,15]),o($Vr,[2,18]),o($Vr,[2,19]),{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,111],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,112],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,113],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,114]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,36],35:$Vg,36:$Vh,37:$Vi,39:$Vj,42:[1,115],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,116]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,34],35:$Vg,36:$Vh,37:$Vi,39:$Vj,41:[1,117],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{17:118,59:$Vp},{17:119,59:$Vp},{45:120,68:$Vw},{45:121,68:$Vw},{45:122,68:$Vw},{53:[1,123],68:[2,47]},{5:[2,40]},{5:[2,62]},{5:[2,41]},{5:[2,42]},{5:[2,43]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vr,[2,28]),o($Vr,[2,29]),o($Vr,[2,30]),o($Vr,[2,31]),{19:[1,127]},o($Vr,[2,32]),{19:[1,128]},{45:129,68:$Vw},{45:130,68:$Vw},{5:[2,52]},{5:[2,38]},{5:[2,39]},{17:131,59:$Vp},o($Vx,[2,11]),o($Vr,[2,12]),o($Vr,[2,14]),o($Vt,$V4,{8:94,38:132}),o($Vu,$V4,{8:96,40:133}),{5:[2,50]},{5:[2,51]},{68:[2,46]},{34:[2,37]},{34:[2,35]}],\ndefaultActions: {7:[2,63],8:[2,1],9:[2,2],10:[2,3],47:[2,66],75:[2,48],76:[2,49],83:[2,65],103:[2,40],104:[2,62],105:[2,41],106:[2,42],107:[2,43],120:[2,52],121:[2,38],122:[2,39],129:[2,50],130:[2,51],131:[2,46],132:[2,37],133:[2,35]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 69; \nbreak;\ncase 1: this.begin('type_directive'); return 70; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 72; \nbreak;\ncase 4:return 71;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: this.begin('ID'); return 20; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 59; \nbreak;\ncase 14: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 15: this.popState(); this.popState(); return 5; \nbreak;\ncase 16: this.begin('LINE'); return 33; \nbreak;\ncase 17: this.begin('LINE'); return 35; \nbreak;\ncase 18: this.begin('LINE'); return 36; \nbreak;\ncase 19: this.begin('LINE'); return 37; \nbreak;\ncase 20: this.begin('LINE'); return 42; \nbreak;\ncase 21: this.begin('LINE'); return 39; \nbreak;\ncase 22: this.begin('LINE'); return 41; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 34;\nbreak;\ncase 25:return 54;\nbreak;\ncase 26:return 55;\nbreak;\ncase 27:return 48;\nbreak;\ncase 28:return 49;\nbreak;\ncase 29:return 50;\nbreak;\ncase 30:return 51;\nbreak;\ncase 31:return 46;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33: this.begin('ID'); return 23; \nbreak;\ncase 34: this.begin('ID'); return 24; \nbreak;\ncase 35:return 30;\nbreak;\ncase 36:return 31;\nbreak;\ncase 37:return 32;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 22;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 5;\nbreak;\ncase 42: yy_.yytext = yy_.yytext.trim(); return 59; \nbreak;\ncase 43:return 62;\nbreak;\ncase 44:return 63;\nbreak;\ncase 45:return 60;\nbreak;\ncase 46:return 61;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 67;\nbreak;\ncase 51:return 68;\nbreak;\ncase 52:return 57;\nbreak;\ncase 53:return 58;\nbreak;\ncase 54:return 5;\nbreak;\ncase 55:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,13],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,14,15],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,32],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,30],$Vi=[1,31],$Vj=[1,34],$Vk=[1,35],$Vl=[1,36],$Vm=[1,37],$Vn=[1,33],$Vo=[1,40],$Vp=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,40,41,42,43,46,49],$Vq=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,31,33,40,41,42,43,46,49],$Vr=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,31,33,40,41,42,43,46,49],$Vs=[4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,40,41,42,43,46,49];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"title\":31,\"title_value\":32,\"accDescription\":33,\"description_value\":34,\"openDirective\":35,\"typeDirective\":36,\"closeDirective\":37,\":\":38,\"argDirective\":39,\"direction_tb\":40,\"direction_bt\":41,\"direction_rl\":42,\"direction_lr\":43,\"eol\":44,\";\":45,\"EDGE_STATE\":46,\"left_of\":47,\"right_of\":48,\"open_directive\":49,\"type_directive\":50,\"arg_directive\":51,\"close_directive\":52,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",31:\"title\",32:\"title_value\",33:\"accDescription\",34:\"description_value\",38:\":\",40:\"direction_tb\",41:\"direction_bt\",42:\"direction_rl\",43:\"direction_lr\",45:\";\",46:\"EDGE_STATE\",47:\"left_of\",48:\"right_of\",49:\"open_directive\",50:\"type_directive\",51:\"arg_directive\",52:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[44,1],[44,1],[11,1],[11,1],[28,1],[28,1],[35,1],[36,1],[39,1],[37,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 17:\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 24:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 28:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 29:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 32:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 33:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 34:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 35:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 38: case 39:\nthis.$=$$[$0];\nbreak;\ncase 42:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 43:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 44:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 45:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,35:6,49:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,35:6,49:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,35:6,49:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,35:6,49:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,31,33,40,41,42,43,46,49],$V4,{8:11}),{36:12,50:[1,13]},{50:[2,42]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:6,40:$Vj,41:$Vk,42:$Vl,43:$Vm,46:$Vn,49:$V3},{37:38,38:[1,39],52:$Vo},o([38,52],[2,43]),o($Vp,[2,6]),{6:28,10:41,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:6,40:$Vj,41:$Vk,42:$Vl,43:$Vm,46:$Vn,49:$V3},o($Vp,[2,8]),o($Vp,[2,9]),o($Vp,[2,10],{12:[1,42],13:[1,43]}),o($Vp,[2,14]),{16:[1,44]},o($Vp,[2,16],{18:[1,45]}),{21:[1,46]},o($Vp,[2,20]),o($Vp,[2,21]),o($Vp,[2,22]),o($Vp,[2,23]),{28:47,29:[1,48],47:[1,49],48:[1,50]},o($Vp,[2,26]),o($Vp,[2,27]),{32:[1,51]},{34:[1,52]},o($Vq,[2,38]),o($Vq,[2,39]),o($Vp,[2,32]),o($Vp,[2,33]),o($Vp,[2,34]),o($Vp,[2,35]),o($Vr,[2,30]),{39:53,51:[1,54]},o($Vr,[2,45]),o($Vp,[2,7]),o($Vp,[2,11]),{11:55,22:$Vb,46:$Vn},o($Vp,[2,15]),o($Vs,$V4,{8:56}),{22:[1,57]},{22:[1,58]},{21:[1,59]},{22:[2,40]},{22:[2,41]},o($Vp,[2,28]),o($Vp,[2,29]),{37:60,52:$Vo},{52:[2,44]},o($Vp,[2,12],{12:[1,61]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,62],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:6,40:$Vj,41:$Vk,42:$Vl,43:$Vm,46:$Vn,49:$V3},o($Vp,[2,18],{18:[1,63]}),{29:[1,64]},{22:[1,65]},o($Vr,[2,31]),o($Vp,[2,13]),o($Vp,[2,17]),o($Vs,$V4,{8:66}),o($Vp,[2,24]),o($Vp,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,67],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:6,40:$Vj,41:$Vk,42:$Vl,43:$Vm,46:$Vn,49:$V3},o($Vp,[2,19])],\ndefaultActions: {7:[2,42],8:[2,1],9:[2,2],10:[2,3],49:[2,40],50:[2,41],54:[2,44]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 40;\nbreak;\ncase 1:return 41;\nbreak;\ncase 2:return 42;\nbreak;\ncase 3:return 43;\nbreak;\ncase 4: this.begin('open_directive'); return 49; \nbreak;\ncase 5: this.begin('type_directive'); return 50; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 38; \nbreak;\ncase 7: this.popState(); this.popState(); return 52; \nbreak;\ncase 8:return 51;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: this.begin(\"title\");return 31; \nbreak;\ncase 20: this.popState(); return \"title_value\"; \nbreak;\ncase 21: this.begin(\"accDescription\");return 33; \nbreak;\ncase 22: this.popState(); return \"description_value\"; \nbreak;\ncase 23: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 24:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 25:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 26:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 27:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 28:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 29:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 30: return 40;\nbreak;\ncase 31: return 41;\nbreak;\ncase 32: return 42;\nbreak;\ncase 33: return 43;\nbreak;\ncase 34: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 35:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 36:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 37:this.popState();\nbreak;\ncase 38: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 39:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 40:this.popState();\nbreak;\ncase 41:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 42: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 43:/* nothing */\nbreak;\ncase 44: this.begin('NOTE'); return 27; \nbreak;\ncase 45: this.popState();this.pushState('NOTE_ID');return 47;\nbreak;\ncase 46: this.popState();this.pushState('NOTE_ID');return 48;\nbreak;\ncase 47: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 48:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 49:/**/\nbreak;\ncase 50: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 51:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 52: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 53: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 54: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 55: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 56: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 57: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 58: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 46;\nbreak;\ncase 59: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 60: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 61:return 13;\nbreak;\ncase 62:return 26;\nbreak;\ncase 63:return 5;\nbreak;\ncase 64:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:state\\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,23,30,31,32,33,42,43,44,58,59,60,61,62],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[51],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[48,49,50],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[53,54],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[52],\"inclusive\":false},\"NOTE\":{\"rules\":[45,46,47],\"inclusive\":false},\"accDescription\":{\"rules\":[22],\"inclusive\":false},\"title\":{\"rules\":[20],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[36],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[37,38],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,24,25,26,27,28,29,34,35,39,40,41],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,21,23,41,44,55,56,57,58,59,60,61,63,64],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,19,20,22],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,22],$V8=[4,6,9,11,17,18,19,20,22];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"accDescription\":18,\"section\":19,\"taskName\":20,\"taskData\":21,\"open_directive\":22,\"type_directive\":23,\"arg_directive\":24,\"close_directive\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"accDescription\",19:\"section\",20:\"taskName\",21:\"taskData\",22:\"open_directive\",23:\"type_directive\",24:\"arg_directive\",25:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 13:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 14:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 16:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 17:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 18:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 19:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,22:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,22:$V1},{13:8,23:[1,9]},{23:[2,16]},{6:[1,10],7:19,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,20:$V6,22:$V1},{1:[2,2]},{14:20,15:[1,21],25:$V7},o([15,25],[2,17]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:19,10:23,12:4,17:$V3,18:$V4,19:$V5,20:$V6,22:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),{21:[1,24]},o($V2,[2,15]),{11:[1,25]},{16:26,24:[1,27]},{11:[2,19]},o($V2,[2,5]),o($V2,[2,14]),o($V8,[2,9]),{14:28,25:$V7},{25:[2,18]},{11:[1,29]},o($V8,[2,10])],\ndefaultActions: {5:[2,16],7:[2,2],22:[2,19],27:[2,18]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 22; \nbreak;\ncase 1: this.begin('type_directive'); return 23; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 25; \nbreak;\ncase 4:return 24;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 21;\nbreak;\ncase 16:return 15;\nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/**\n * This method will add a basic title and description element to a chart. The yy parser will need to\n * respond to getTitle and getAccDescription, where the title is the title element on the chart,\n * which is generally not displayed and the accDescription is the description element on the chart,\n * which is never displayed.\n *\n * The following charts display their title as a visual and accessibility element: gantt\n *\n * @param yy_parser\n * @param svg\n * @param id\n */\nexport default function addSVGAccessibilityFields(yy_parser, svg, id) {\n if (typeof svg.insert === 'undefined') {\n return;\n }\n\n let title_string = yy_parser.getTitle();\n let description = yy_parser.getAccDescription();\n svg.attr('role', 'img').attr('aria-labelledby', 'chart-title-' + id + ' chart-desc-' + id);\n svg\n .insert('desc', ':first-child')\n .attr('id', 'chart-desc-' + id)\n .text(description);\n svg\n .insert('title', ':first-child')\n .attr('id', 'chart-title-' + id)\n .text(title_string);\n}\n","import { assignWithDepth } from './utils';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\n\n// debugger;\n\nexport const defaultConfig = Object.freeze(config);\n\nlet siteConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg, _directives) => {\n // start with config beeing the siteConfig\n let cfg = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives = {};\n for (let i = 0; i < _directives.length; i++) {\n const d = _directives[i];\n sanitize(d);\n\n // Apply the data from the directive where the the overrides the themeVaraibles\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n\n currentConfig = cfg;\n return cfg;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns {object} - The siteConfig\n */\nexport const setSiteConfig = (conf) => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n if (conf.theme) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n currentConfig = updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitilize = (conf) => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns {object} - The siteConfig\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param {any} conf - The potential currentConfig\n * @returns {any} - The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf) => {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns {any} - The currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param {any} options - The potential setConfig parameter\n */\nexport const sanitize = (options) => {\n // Checking that options are not in the list of excluded options\n Object.keys(siteConfig.secure).forEach((key) => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svgs with inline script tags\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'string') {\n if (\n options[key].indexOf('<') > -1 ||\n options[key].indexOf('>') > -1 ||\n options[key].indexOf('url(data:') > -1\n ) {\n delete options[key];\n }\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param {object} directive The directive to push in\n */\nexport const addDirective = (directive) => {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n }\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig coul be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n */\nexport const reset = () => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(siteConfig, directives);\n};\n","import intersectRect from './intersect/intersect-rect';\nimport { log } from '../logger';\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\nimport { evaluate } from '../diagrams/common/common';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - width / 2)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 + node.padding / 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y -\n node.height / 2 -\n node.padding / 3 +\n (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = (node) => {\n log.info('Position cluster (' + node.id + ', ' + node.x + ', ' + node.y + ')');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { getConfig } from '../config';\nimport { sanitizeText, evaluate } from '../diagrams/common/common';\n\nconst sanitizeTxt = (txt) => sanitizeText(txt, getConfig());\n\n/**\n * @param dom\n * @param styleFn\n */\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n/**\n * @param {any} node\n * @returns {SVGForeignObjectElement} Node\n */\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html(\n '' +\n label +\n ''\n );\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') vertexText = vertexText[0];\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n log.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace('fill:', 'color:'),\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import { log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\nimport { evaluate } from '../diagrams/common/common';\n\nlet edgeLabels = {};\nlet terminalLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // // debugger;\n const pos = utils.calcLabelPosition(path);\n log.info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ') abc78');\n // x = pos.x;\n // y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // log.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n // const dy = Math.abs(y - insidePoint.y);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n // const edges = {\n // x1: x - w,\n // x2: x + w,\n // y1: y - h,\n // y2: y + h\n // };\n\n // if (\n // outsidePoint.x === edges.x1 ||\n // outsidePoint.x === edges.x2 ||\n // outsidePoint.y === edges.y1 ||\n // outsidePoint.y === edges.y2\n // ) {\n // log.warn('abc89 calc equals on edge', outsidePoint, edges);\n // return outsidePoint;\n // }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n/**\n * This function will page a path and node where the last point(s) in the path is inside the node\n * and return an update path ending by the border of the node.\n *\n * @param {Array} _points\n * @param {any} boundryNode\n * @returns {Array} Points\n */\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n // const node = clusterDb[edge.toCluster].node;\n log.info('abc88 checking point', point, boundryNode);\n\n // check if point is inside the boundry rect\n if (!outsideNode(boundryNode, point) && !isInside) {\n // First point inside the rect found\n // Calc the intersection coord between the point anf the last opint ouside the rect\n const inter = intersection(boundryNode, lastPointOutside, point);\n log.warn('abc88 inside', point, lastPointOutside, inter);\n log.warn('abc88 intersection', inter);\n\n // // Check case where the intersection is the same as the last point\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // // if (!pointPresent) {\n if (!points.find((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n // points.push(inter);\n isInside = true;\n } else {\n // Outside\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n // points.push(point);\n if (!isInside) points.push(point);\n }\n });\n log.warn('abc88 returning points', points);\n return points;\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n log.info('abc88 InsertEdge: ', edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n // log.trace('edge', edge);\n // points = [];\n // let lastPointOutside; // = edge.points[0];\n // let isInside = false;\n // edge.points.forEach(point => {\n // const node = clusterDb[edge.toCluster].node;\n // log.warn('checking from', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // points.push(inter);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // isInside = true;\n // } else {\n // // outtside\n // lastPointOutside = point;\n // if (!isInside) points.push(point);\n // }\n // });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.info('from cluster abc88', clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n // log.warn('edge', edge);\n // log.warn('from cluster', clusterDb[edge.fromCluster], points);\n // const updatedPoints = [];\n // let lastPointOutside = edge.points[edge.points.length - 1];\n // let isInside = false;\n // for (let i = points.length - 1; i >= 0; i--) {\n // const point = points[i];\n // const node = clusterDb[edge.fromCluster].node;\n // log.warn('checking to', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.warn('inside', edge.fromCluster, point, node);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n // log.warn('intersect', intersection(node, lastPointOutside, point));\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // updatedPoints.unshift(inter);\n // log.warn('Adding point -updated = ', updatedPoints);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // // points.push(insterection);\n // isInside = true;\n // } else {\n // // at the outside\n // // if (!isInside) updatedPoints.unshift(point);\n // updatedPoints.unshift(point);\n // log.warn('Outside point', point, updatedPoints);\n // }\n // lastPointOutside = point;\n // }\n // points = updatedPoints;\n // points = edge.points;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n let curve;\n // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n if (diagramType === 'graph' || diagramType === 'flowchart') {\n curve = edge.curve || curveBasis;\n } else {\n curve = curveBasis;\n }\n // curve = curveLinear;\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curve);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edge.style);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild,\n sortNodesByHierarchy,\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render XXX', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function (v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node.width, graph.node(v));\n const o = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info('Node bounds (abc123)', v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete ', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path XXX', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function (e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function (v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, paths);\n });\n\n graph.nodes().forEach(function (v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === 'group') {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph at first:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n","import intersectEllipse from './intersect-ellipse';\n\n/**\n * @param node\n * @param rx\n * @param point\n */\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","/**\n * @param node\n * @param rx\n * @param ry\n * @param point\n */\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n *\n * @param p1\n * @param p2\n * @param q1\n * @param q2\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\n/**\n * @param r1\n * @param r2\n */\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","module.exports = intersectNode;\n\n/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n *\n * @param node\n * @param polyPoints\n * @param point\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","const intersectRect = (node, point) => {\r\n var x = node.x;\r\n var y = node.y;\r\n\r\n // Rectangle intersection algorithm from:\r\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\r\n var dx = point.x - x;\r\n var dy = point.y - y;\r\n var w = node.width / 2;\r\n var h = node.height / 2;\r\n\r\n var sx, sy;\r\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\r\n // Intersection is top or bottom of rect.\r\n if (dy < 0) {\r\n h = -h;\r\n }\r\n sx = dy === 0 ? 0 : (h * dx) / dy;\r\n sy = h;\r\n } else {\r\n // Intersection is left or right of rect.\r\n if (dx < 0) {\r\n w = -w;\r\n }\r\n sx = w;\r\n sy = dx === 0 ? 0 : (w * dy) / dx;\r\n }\r\n\r\n return { x: x + sx, y: y + sy };\r\n};\r\n\r\nexport default intersectRect;\r\n","/** Setup arrow head and define the marker. The result is appended to the svg. */\n\nimport { log } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n","/** Decorates with functions required by mermaids dagre-wrapper. */\nimport { log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.trace(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach((edge) => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n *\n * @param graph\n */\nexport const validate = (graph) => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n *\n * @param {Finds a} id\n * @param {any} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach((edge) => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.warn('Edge: ', edge, ' leaves cluster ', id);\n log.warn('Decendants of XXX ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug('Not a cluster ', id, decendants);\n }\n });\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.warn(\n 'Fix XXX',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translateing: ',\n clusterDb[e.v],\n ' --- ',\n clusterDb[e.w]\n );\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n extractor(graph, 0);\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n // !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.warn(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\n if (clusterDb[node]) {\n if (clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir);\n }\n }\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir, // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n log.warn('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph,\n });\n log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.warn(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.warn('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.warn(' Now next level', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) return [];\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = result.concat(sorted);\n });\n\n return result;\n};\n\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\nimport { parseMember } from '../diagrams/class/svgDraw';\nimport { evaluate, sanitizeText as sanitize } from '../diagrams/common/common';\n\nconst sanitizeText = (txt) => sanitize(txt, getConfig());\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n log.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n updateNodeBounds(node, questionElem);\n\n node.intersect = function (point) {\n log.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst choice = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n // center the circle around its coordinate\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n updateNodeBounds(node, hex);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('style', node.style)\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect\n .attr('class', 'basic label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * @param rect\n * @param borders\n * @param totalWidth\n * @param totalHeight\n */\nfunction applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length);\n strokeDashArray.push(0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0);\n strokeDashArray.push(length);\n };\n if (borders.includes('t')) {\n log.debug('add top border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('r')) {\n log.debug('add right border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes('b')) {\n log.debug('add bottom border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('l')) {\n log.debug('add left border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect.attr('stroke-dasharray', strokeDashArray.join(' '));\n}\n\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\n\n let title = '';\n if (typeof text2 === 'object') {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\n\n const text = label.node().appendChild(createLabel(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(\n createLabel(textRows.join ? textRows.join('
') : textRows, node.labelStyle, true, true)\n );\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // log.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('style', node.style)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst doublecircle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const gap = 5;\n const circleGroup = shapeSvg.insert('g', ':first-child');\n const outerCircle = circleGroup.insert('circle');\n const innerCircle = circleGroup.insert('circle');\n\n // center the circle around its coordinate\n outerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding + gap)\n .attr('width', bbox.width + node.padding + gap * 2)\n .attr('height', bbox.height + node.padding + gap * 2);\n\n innerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('DoubleCircle main');\n\n updateNodeBounds(node, outerCircle);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, bbox.width / 2 + halfPadding + gap, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabelText = node.classData.annotations[0]\n ? '«' + node.classData.annotations[0] + '»'\n : '';\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n let classTitleString = node.classData.id;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += '<' + node.classData.type + '>';\n } else {\n classTitleString += '<' + node.classData.type + '>';\n }\n }\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr('class', 'classTitle');\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr('width', classTitleBBox.width);\n dv.attr('height', classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = parseMember(str);\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, '>');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = parseMember(str);\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, '>');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n let diffX = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n verticalPos += lineHeight;\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n // let bbox;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = interfaceLabel.children[0];\n // const dv = select(interfaceLabel);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // bbox = labelContainer.getBBox();\n\n // log.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // log.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box,\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n let newEl;\n let el;\n\n // Add link when appropriate\n if (node.link) {\n let target;\n if (getConfig().securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', target);\n el = shapes[node.shape](newEl, node, dir);\n } else {\n el = shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { log } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { decodeEntities } from '../../mermaidAPI';\nimport { select } from 'd3';\nimport { evaluate, sanitizeText } from '../../diagrams/common/common';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n const labelText = typeof node.labelText === 'string' ? node.labelText : node.labelText[0];\n\n const text = label\n .node()\n .appendChild(\n createLabel(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","import theme from './themes';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\n * here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**
 mermaid.initialize({ flowchart:{ htmlLabels: false } }); 
\n *\n * **Example 2:**
  
\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /**\n * Theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".
 \"theme\": \"forest\",\n   * \"themeCSS\": \".node rect { fill: red; }\" 
\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 50000,\n darkMode: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | ------------- |\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 1, 2, 3, 4, 5 |\n *\n * **Notes:**\n *\n * - Debug: 1\n * - Info: 2\n * - Warn: 3\n * - Error: 4\n * - Fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------- |\n * | securitylevel | Level of trust for parsed diagram | string | Required | 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click\n * functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n *\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * deterministic. This is the default behaviour.\n *\n * **Notes**:\n *\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless\n * content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /** The object containing configurations specific for flowcharts */\n flowchart: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n * vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n * spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-d3',\n },\n\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n mirrorActors: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:** Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n * **Notes:** **Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: \"'Open Sans\", sans-serif'\n */\n actorFontFamily: '\"Open Sans\", sans-serif',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:** Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:** Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:** Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:** Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 20.\n */\n labelBoxHeight: 20,\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n\n /** The object containing configurations specific for gantt diagrams */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ------------------ |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | --------------------------- | ---- | -------- | ---------------- |\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ----------- |\n * | topAxis | See notes | Boolean | 4 | True, False |\n *\n * **Notes:** when this flag is set date labels will be added to the top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /** The object containing configurations specific for journey diagrams */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n },\n class: {\n arrowMarkerAbsolute: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes**:\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for entity relationship diagrams */\n er: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:** Expressed in pixels. Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Expressed in pixels Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------------------------------------------- | ------- | -------- | ------------------ |\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding betweentext in an entity box and the enclosing box borders,\n * expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for pie diagrams */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for req diagrams */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20,\n },\n gitGraph: {\n diagramPadding: 8,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0,\n },\n mainBranchName: 'main',\n showCommitLabel: true,\n showBranches: true,\n },\n};\n\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n\nconst keyify = (obj, prefix = '') =>\n Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys = keyify(config, '');\nexport default config;\n","import { select } from 'd3';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst splitClassNameAndType = function (id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n\n genericType = common.sanitizeText(split[1], configApi.getConfig());\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n *\n * @param id\n * @public\n */\nexport const addClass = function (id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,\n };\n\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n *\n * @param id\n * @public\n */\nexport const lookUpDomId = function (id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function () {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n};\n\nexport const getClass = function (id) {\n return classes[id];\n};\nexport const getClasses = function () {\n return classes;\n};\n\nexport const getRelations = function () {\n return relations;\n};\n\nexport const addRelation = function (relation) {\n log.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relation.relationTitle1 = common.sanitizeText(\n relation.relationTitle1.trim(),\n configApi.getConfig()\n );\n\n relation.relationTitle2 = common.sanitizeText(\n relation.relationTitle2.trim(),\n configApi.getConfig()\n );\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class Annotations mark special properties of the given type\n * (like 'interface' or 'service')\n *\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function (className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n *\n * @param className The class name\n * @param member The full name of the member. If the member is enclosed in <> it is\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\n * method Otherwise the member will be treated as a normal property\n * @public\n */\nexport const addMember = function (className, member) {\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n const memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // Remove leading and trailing brackets\n // theClass.annotations.push(memberString.substring(2, memberString.length - 2));\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(')') > 0) {\n theClass.methods.push(sanitizeText(memberString));\n } else if (memberString) {\n theClass.members.push(sanitizeText(memberString));\n }\n }\n};\n\nexport const addMembers = function (className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return common.sanitizeText(label.substr(1).trim(), configApi.getConfig());\n } else {\n return sanitizeText(label.trim());\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setCssClass = function (ids, className) {\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].cssClasses.push(className);\n }\n });\n};\n\n/**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param tooltip Tooltip to add\n */\nconst setTooltip = function (ids, tooltip) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n classes[id].tooltip = common.sanitizeText(tooltip, config);\n }\n });\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\nexport const setLink = function (ids, linkStr, target) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === 'sandbox') {\n classes[id].linkTarget = '_top';\n } else if (typeof target === 'string') {\n classes[id].linkTarget = sanitizeText(target);\n } else {\n classes[id].linkTarget = '_blank';\n }\n }\n });\n setCssClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, 'clickable');\n};\n\nconst setClickFunc = function (domId, functionName, functionArgs) {\n const config = configApi.getConfig();\n let id = domId;\n let elemId = lookUpDomId(id);\n\n if (config.securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof classes[id] !== 'undefined') {\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(elemId);\n }\n\n funs.push(function () {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function () {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1,\n};\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n};\n\nconst setupToolTips = function (element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function () {\n const el = select(this);\n const title = el.attr('title');\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\nlet direction = 'TB';\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\n\nlet title = '';\n\nexport const setTitle = function (txt) {\n let sanitizedText = sanitizeText(txt, configApi.getConfig());\n title = sanitizedText;\n};\n\nexport const getTitle = function () {\n return title;\n};\n\nlet accDescription = '';\n\nexport const setAccDescription = function (txt) {\n let sanitizedText = sanitizeText(txt, configApi.getConfig());\n accDescription = sanitizedText;\n};\n\nexport const getAccDescription = function () {\n return accDescription;\n};\n\nexport default {\n parseDirective,\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => configApi.getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n addAnnotation,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n setTooltip,\n lookUpDomId,\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { getConfig } from '../../config';\nimport { render } from '../../dagre-wrapper/index.js';\n// import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { curveLinear } from 'd3';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport common from '../common/common';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n *\n * @param {Object<\n * string,\n * { cssClasses: string[]; text: string; id: string; type: string; domId: string }\n * >} classes\n * Object containing the vertices.\n * @param {SVGGElement} g The graph that is to be drawn.\n */\nexport const addClasses = function (classes, g) {\n // const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(classes);\n log.info('keys:', keys);\n log.info(classes);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = classes[id];\n\n /**\n * Variable for storing the classes for the vertex\n *\n * @type {string}\n */\n let cssClassStr = '';\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\n }\n // if (vertex.classes.length > 0) {\n // classStr = vertex.classes.join(' ');\n // }\n\n const styles = { labelStyle: '' }; //getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n // let vertexNode;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const node = {\n // label: vertexText.replace(\n // /fa[lrsb]?:fa-[\\w-]+/g,\n // s => ``\n // )\n // };\n // vertexNode = addHtmlLabel(svg, node).node();\n // vertexNode.parentNode.removeChild(vertexNode);\n // } else {\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n // const rows = vertexText.split(common.lineBreakRegex);\n\n // for (let j = 0; j < rows.length; j++) {\n // const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n // tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n // tspan.setAttribute('dy', '1em');\n // tspan.setAttribute('x', '1');\n // tspan.textContent = rows[j];\n // svgLabel.appendChild(tspan);\n // }\n // vertexNode = svgLabel;\n // }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'class':\n _shape = 'class_box';\n break;\n default:\n _shape = 'class_box';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n domId: vertex.domId,\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n\n log.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n *\n * @param relations\n * @param {object} g The graph object\n */\nexport const addRelations = function (relations, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n // if (typeof relations.defaultStyle !== 'undefined') {\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\n // defaultStyle = defaultStyles.style;\n // defaultLabelStyle = defaultStyles.labelStyle;\n // }\n\n relations.forEach(function (edge) {\n cnt++;\n const edgeData = {};\n //Set relationship style and line type\n edgeData.classes = 'relation';\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\n\n edgeData.id = 'id' + cnt;\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n log.info(edgeData, edge);\n //Set edge extra labels\n //edgeData.startLabelLeft = edge.relationTitle1;\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2;\n //edgeData.endLabelRight = edge.relationTitle2;\n\n //Set relation arrow types\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(relations.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n edge.text = edge.title;\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = '' + edge.text + '';\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n log.info('Drawing class - ', id);\n classDb.clear();\n // const parser = classDb.parser;\n // parser.yy = classDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // log.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n //let dir = 'TD';\n\n const conf = getConfig().flowchart;\n const securityLevel = getConfig().securityLevel;\n log.info('config:', conf);\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: classDb.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n // let subG;\n // const subGraphs = flowDb.getSubGraphs();\n // log.info('Subgraphs - ', subGraphs);\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n // log.info('Subgraph - ', subG);\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n // }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const classes = classDb.getClasses();\n const relations = classDb.getRelations();\n\n log.info(relations);\n // let i = 0;\n // for (i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n\n // selectAll('cluster').append('text');\n\n // for (let j = 0; j < subG.nodes.length; j++) {\n // g.setParent(subG.nodes[j], subG.id);\n // }\n // }\n addClasses(classes, g, id);\n addRelations(relations, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const svg = root.select(`[id=\"${id}\"]`);\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n // Run the renderer. This is what draws the final graph.\n const element = root.select('#' + id + ' g');\n render(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id);\n\n // element.selectAll('g.node').attr('title', function() {\n // return flowDb.getTooltip(this.id);\n // });\n\n const padding = 8;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n log.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n // flowDb.indexNodes('subGraph' + i);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n addSVGAccessibilityFields(parser.yy, svg, id);\n // If node has a link, wrap it in an anchor SVG object.\n // const keys = Object.keys(classes);\n // keys.forEach(function(key) {\n // const vertex = classes[key];\n\n // if (vertex.link) {\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\n // if (node) {\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n // const linkNode = node.insert(function() {\n // return link;\n // }, ':first-child');\n\n // const shape = node.select('.label-container');\n // if (shape) {\n // linkNode.append(function() {\n // return shape.node();\n // });\n // }\n\n // const label = node.select('.label');\n // if (label) {\n // linkNode.append(function() {\n // return label.node();\n // });\n // }\n // }\n // }\n // });\n};\n\n/**\n * Gets the arrow marker for a type index\n *\n * @param {number} type The type to look for\n * @returns {'aggregation' | 'extension' | 'composition' | 'dependency'} The arrow marker\n */\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n case 1:\n marker = 'extension';\n break;\n case 2:\n marker = 'composition';\n break;\n case 3:\n marker = 'dependency';\n break;\n default:\n marker = 'none';\n }\n return marker;\n}\n\nexport default {\n setConf,\n draw,\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { configureSvgSize } from '../../utils';\nimport { getConfig } from '../../config';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {SVGSVGElement} elem The SVG element to append to\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n idCache = {};\n parser.yy.clear();\n parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true,\n });\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true,\n });\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const classes = classDb.getClasses();\n const keys = Object.keys(classes);\n\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]];\n const node = svgDraw.drawClass(diagram, classDef, conf);\n idCache[node.id] = node;\n\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n g.setNode(node.id, node);\n\n log.info('Org height: ' + node.height);\n }\n\n const relations = classDb.getRelations();\n relations.forEach(function (relation) {\n log.info(\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation: relation,\n },\n relation.title || 'DEFAULT'\n );\n });\n\n dagre.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n root\n .select('#' + lookUpDomId(v))\n .attr(\n 'transform',\n 'translate(' +\n (g.node(v).x - g.node(v).width / 2) +\n ',' +\n (g.node(v).y - g.node(v).height / 2) +\n ' )'\n );\n }\n });\n\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n\n const svgBounds = diagram.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram.attr('viewBox', vBox);\n addSVGAccessibilityFields(parser.yy, diagram, id);\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n`;\n\nexport default getStyles;\n","import { line, curveBasis } from 'd3';\nimport { lookUpDomId, relationType } from './classDb';\nimport utils from '../../utils';\nimport { log } from '../../logger';\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation, conf) {\n const getRelationType = function (type) {\n switch (type) {\n case relationType.AGGREGATION:\n return 'aggregation';\n case relationType.EXTENSION:\n return 'extension';\n case relationType.COMPOSITION:\n return 'composition';\n case relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'relation');\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n if (relation.relation.lineType == 1) {\n svgPath.attr('class', 'relation dashed-line');\n }\n if (relation.relation.type1 !== 'none') {\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')'\n );\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')'\n );\n }\n\n let x, y;\n const l = path.points.length;\n // Calculate Label position\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== 'none',\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== 'none',\n path.points,\n path.points[l - 1]\n );\n\n log.debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\n log.debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\n\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g').attr('class', 'classLabel');\n const label = g\n .append('text')\n .attr('class', 'label')\n .attr('x', x)\n .attr('y', y)\n .attr('fill', 'red')\n .attr('text-anchor', 'middle')\n .text(relation.title);\n\n window.label = label;\n const bounds = label.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', bounds.x - conf.padding / 2)\n .attr('y', bounds.y - conf.padding / 2)\n .attr('width', bounds.width + conf.padding)\n .attr('height', bounds.height + conf.padding);\n }\n\n log.info('Rendering relation ' + JSON.stringify(relation));\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type1')\n .attr('x', p1_card_x)\n .attr('y', p1_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle1);\n }\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type2')\n .attr('x', p2_card_x)\n .attr('y', p2_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle2);\n }\n\n edgeCount++;\n};\n\n/**\n * Renders a class diagram\n *\n * @param {SVGSVGElement} elem The element to draw it into\n * @param classDef\n * @param conf\n * @todo Add more information in the JSDOC here\n */\nexport const drawClass = function (elem, classDef, conf) {\n log.info('Rendering class ' + classDef);\n\n const id = classDef.id;\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0,\n };\n\n // add class group\n const g = elem.append('g').attr('id', lookUpDomId(id)).attr('class', 'classGroup');\n\n // add title\n let title;\n if (classDef.link) {\n title = g\n .append('svg:a')\n .attr('xlink:href', classDef.link)\n .attr('target', classDef.linkTarget)\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n } else {\n title = g\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n }\n\n // add annotations\n let isFirst = true;\n classDef.annotations.forEach(function (member) {\n const titleText2 = title.append('tspan').text('«' + member + '»');\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\n isFirst = false;\n });\n\n let classTitleString = classDef.id;\n\n if (classDef.type !== undefined && classDef.type !== '') {\n classTitleString += '<' + classDef.type + '>';\n }\n\n const classTitle = title.append('tspan').text(classTitleString).attr('class', 'title');\n\n // If class has annotations the title needs to have an offset of the text height\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\n\n const titleHeight = title.node().getBBox().height;\n\n const membersLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);\n\n const members = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + conf.dividerMargin + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText');\n\n isFirst = true;\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n\n const membersBox = members.node().getBBox();\n\n const methodsLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n\n const methods = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText');\n\n isFirst = true;\n\n classDef.methods.forEach(function (method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n\n const classBox = g.node().getBBox();\n var cssClassStr = ' ';\n\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\n }\n\n const rect = g\n .insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', classBox.width + 2 * conf.padding)\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\n .attr('class', cssClassStr);\n\n const rectWidth = rect.node().getBBox().width;\n\n // Center title\n // We subtract the width of each text element from the class box width and divide it by 2\n title.node().childNodes.forEach(function (x) {\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\n });\n\n if (classDef.tooltip) {\n title.insert('title').text(classDef.tooltip);\n }\n\n membersLine.attr('x2', rectWidth);\n methodsLine.attr('x2', rectWidth);\n\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n\n return classInfo;\n};\n\nexport const parseMember = function (text) {\n const fieldRegEx = /^(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+) *(\\*|\\$)?$/;\n const methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\n\n let fieldMatch = text.match(fieldRegEx);\n let methodMatch = text.match(methodRegEx);\n\n if (fieldMatch && !methodMatch) {\n return buildFieldDisplay(fieldMatch);\n } else if (methodMatch) {\n return buildMethodDisplay(methodMatch);\n } else {\n return buildLegacyDisplay(text);\n }\n};\n\nconst buildFieldDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let fieldType = parsedText[2] ? parsedText[2].trim() : '';\n let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let fieldName = parsedText[4] ? parsedText[4].trim() : '';\n let classifier = parsedText[5] ? parsedText[5].trim() : '';\n\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildMethodDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let methodName = parsedText[2] ? parsedText[2].trim() : '';\n let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let classifier = parsedText[4] ? parsedText[4].trim() : '';\n let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\n\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildLegacyDisplay = function (text) {\n // if for some reason we dont have any match, use old format to parse text\n let displayText = '';\n let cssStyle = '';\n let memberText = '';\n let returnType = '';\n let methodStart = text.indexOf('(');\n let methodEnd = text.indexOf(')');\n\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\n let visibility = '';\n let methodName = '';\n\n let firstChar = text.substring(0, 1);\n if (firstChar.match(/\\w/)) {\n methodName = text.substring(0, methodStart).trim();\n } else {\n if (firstChar.match(/\\+|-|~|#/)) {\n visibility = firstChar;\n }\n\n methodName = text.substring(1, methodStart).trim();\n }\n\n let parameters = text.substring(methodStart + 1, methodEnd);\n let classifier = text.substring(methodEnd + 1, 1);\n cssStyle = parseClassifier(classifier);\n\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\n\n if (methodEnd < memberText.length) {\n returnType = text.substring(methodEnd + 2).trim();\n if (returnType !== '') {\n returnType = ' : ' + parseGenericTypes(returnType);\n }\n }\n } else {\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\n displayText = parseGenericTypes(text);\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\n/**\n * Adds a for a member in a diagram\n *\n * @param {SVGElement} textEl The element to append to\n * @param {string} txt The member\n * @param {boolean} isFirst\n * @param {{ padding: string; textHeight: string }} conf The configuration for the member\n */\nconst addTspan = function (textEl, txt, isFirst, conf) {\n let member = parseMember(txt);\n\n const tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\n\n if (member.cssStyle !== '') {\n tSpan.attr('style', member.cssStyle);\n }\n\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight);\n }\n};\n\n/**\n * Makes generics in typescript syntax\n *\n * @example Array of array of strings in typescript syntax\n * // returns \"Array>\"\n * parseGenericTypes('Array~Array~string~~');\n *\n * @param {string} text The text to convert\n * @returns {string} The converted string\n */\nconst parseGenericTypes = function (text) {\n let cleanedText = text;\n\n if (text.indexOf('~') != -1) {\n cleanedText = cleanedText.replace('~', '<');\n cleanedText = cleanedText.replace('~', '>');\n\n return parseGenericTypes(cleanedText);\n } else {\n return cleanedText;\n }\n};\n\n/**\n * Gives the styles for a classifier\n *\n * @param {'+' | '-' | '#' | '~' | '*' | '$'} classifier The classifier string\n * @returns {string} Styling for the classifier\n */\nconst parseClassifier = function (classifier) {\n switch (classifier) {\n case '*':\n return 'font-style:italic;';\n case '$':\n return 'text-decoration:underline;';\n default:\n return '';\n }\n};\n\nexport default {\n drawClass,\n drawEdge,\n parseMember,\n};\n","import DOMPurify from 'dompurify';\n\n/**\n * Gets the number of lines in a string\n *\n * @param {string | undefined} s The string to check the lines for\n * @returns {number} The number of lines in that string\n */\nexport const getRows = (s) => {\n if (!s) return 1;\n let str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nexport const removeEscapes = (text) => {\n let newStr = text.replace(/\\\\u[\\dA-F]{4}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n });\n\n newStr = newStr.replace(/\\\\x([0-9a-f]{2})/gi, (_, c) => String.fromCharCode(parseInt(c, 16)));\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{3}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{2}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n\n return newStr;\n};\n\n/**\n * Removes script tags from a text\n *\n * @param {string} txt The text to sanitize\n * @returns {string} The safer text\n */\nexport const removeScript = (txt) => {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('= 0) {\n rs += txt.substr(0, idx);\n txt = txt.substr(idx + 1);\n\n idx = txt.indexOf('');\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n let decodedText = removeEscapes(rs);\n decodedText = decodedText.replace(/script>/gi, '#');\n decodedText = decodedText.replace(/javascript:/gi, '#');\n decodedText = decodedText.replace(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replace(/`;\n }\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n case 'classDiagram':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n log.debug('CB = undefined!');\n }\n attachFunctions();\n\n const tmpElementSelector = cnf.securityLevel === 'sandbox' ? '#i' + id : '#d' + id;\n const node = select(tmpElementSelector).node();\n if (node !== null && typeof node.remove === 'function') {\n select(tmpElementSelector).node().remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function (p, statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(p, currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n log.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n log.error(error.message);\n }\n};\n\nconst handleDirective = function (p, directive, type) {\n log.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach((prop) => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n log.debug('sanitize in handleDirective', directive.args);\n directiveSanitizer(directive.args);\n log.debug('sanitize in handleDirective (done)', directive.args);\n reinitialize(directive.args);\n configApi.addDirective(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n if (p && p['setWrap']) {\n p.setWrap(directive.type === 'wrap');\n }\n break;\n case 'themeCss':\n log.warn('themeCss encountered');\n break;\n default:\n log.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\n/** @param {any} conf */\nfunction updateRendererConfigs(conf) {\n // Todo remove, all diagrams should get config on demoand from the config object, no need for this\n\n // gitGraphRenderer.setConf(conf.git); // Todo Remove all of these\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n // pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n requirementRenderer.setConf(conf.requirement);\n errorRenderer.setConf(conf.class);\n}\n\n/** To be removed */\nfunction reinitialize() {\n // `mermaidAPI.reinitialize: v${pkg.version}`,\n // JSON.stringify(options),\n // options.themeVariables.primaryColor;\n // // if (options.theme && theme[options.theme]) {\n // // options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n // // }\n // // Set default options\n // const config =\n // typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();\n // updateRendererConfigs(config);\n // setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.reinitialize: ', config);\n}\n\n/** @param {any} options */\nfunction initialize(options) {\n // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);\n\n // Handle legacy location of font-family configuration\n if (options && options.fontFamily) {\n if (!options.themeVariables) {\n options.themeVariables = { fontFamily: options.fontFamily };\n } else {\n if (!options.themeVariables.fontFamily) {\n options.themeVariables = { fontFamily: options.fontFamily };\n }\n }\n }\n // Set default options\n configApi.saveConfigFromInitilize(options);\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n\n const config =\n typeof options === 'object' ? configApi.setSiteConfig(options) : configApi.getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.initialize: ', config);\n}\n\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig: configApi.getConfig,\n setConfig: configApi.setConfig,\n getSiteConfig: configApi.getSiteConfig,\n updateSiteConfig: configApi.updateSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n // const siteConfig = configApi.getSiteConfig();\n // updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(configApi.getConfig());\n },\n defaultConfig: configApi.defaultConfig,\n});\n\nsetLogLevel(configApi.getConfig().logLevel);\nconfigApi.reset(configApi.getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n *\n * ```html\n * \n * ```\n */\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport gitGraph from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport requirement from './diagrams/requirement/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n classDiagram,\n 'classDiagram-v2': classDiagram,\n class: classDiagram,\n stateDiagram,\n state: stateDiagram,\n gitGraph,\n info,\n pie,\n er,\n journey,\n requirement,\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n //console.warn('options in styles: ', options);\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n`;\n};\n\nexport default getStyles;\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for istance line color. Defaulr value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n this.darkMode = false;\n\n // this.background = '#0c0c0c';\n // this.darkMode = true;\n this.primaryColor = '#fff4dd';\n // this.background = '#0c0c0c';\n // this.primaryColor = '#1f1f00';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n // dark\n\n // this.primaryColor = '#034694';\n // this.primaryColor = '#f2ee7e';\n // this.primaryColor = '#9f33be';\n // this.primaryColor = '#f0fff0';\n // this.primaryColor = '#fa255e';\n // this.primaryColor = '#ECECFF';\n\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.secondaryColor = '#dfdfde';\n // this.tertiaryColor = '#CCCCFF';\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n // this.updateColors();\n }\n updateColors() {\n // The || is to make sure that if the variable has been defiend by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || 'grey';\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the tstates*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || '#0b0000';\n this.pie2 = this.pie2 || '#4d1037';\n this.pie3 = this.pie3 || '#3f5258';\n this.pie4 = this.pie4 || '#4f2f1b';\n this.pie5 = this.pie5 || '#6e0a0a';\n this.pie6 = this.pie6 || '#3b0048';\n this.pie7 = this.pie7 || '#995a01';\n this.pie8 = this.pie8 || '#154706';\n this.pie9 = this.pie9 || '#161722';\n this.pie10 = this.pie10 || '#00296f';\n this.pie11 = this.pie11 || '#01629c';\n this.pie12 = this.pie12 || '#010029';\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, rgba, adjust, darken } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { adjust } from 'khroma';\r\n\r\nexport const mkBorder = (col, darkMode) =>\r\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\r\n","import { invert, darken, lighten, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n this.pie1 = this.pie1 || '#F4F4F4';\n this.pie2 = this.pie2 || '#555';\n this.pie3 = this.pie3 || '#BBB';\n this.pie4 = this.pie4 || '#777';\n this.pie5 = this.pie5 || '#999';\n this.pie6 = this.pie6 || '#DDD';\n this.pie7 = this.pie7 || '#FFF';\n this.pie8 = this.pie8 || '#DDD';\n this.pie9 = this.pie9 || '#BBB';\n this.pie10 = this.pie10 || '#999';\n this.pie11 = this.pie11 || '#777';\n this.pie12 = this.pie12 || '#555';\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n // this.pie1 = this.pie1 || '#212529';\n // this.pie2 = this.pie2 || '#343A40';\n // this.pie3 = this.pie3 || '#495057';\n // this.pie4 = this.pie4 || '#6C757D';\n // this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n // this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n // this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n // this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n // this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n // this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n // this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n // this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = 'white';\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = 'white';\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { sanitizeUrl } from '@braintree/sanitize-url';\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select,\n} from 'd3';\nimport common from './diagrams/common/common';\nimport { configKeys } from './defaultConfig';\nimport { log } from './logger';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore,\n};\nconst directive =\n /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen =\n /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit Detects the init config object from the text\n *\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * Or\n *\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {any} cnf\n * @returns {object} The json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function (text, cnf) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n\n if (Array.isArray(inits)) {\n let args = inits.map((init) => init.args);\n directiveSanitizer(args);\n\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text, cnf);\n ['config'].forEach((prop) => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n\n // Todo: refactor this, these results are never used\n return results;\n};\n\n/**\n * @function detectDirective Detects the directive from the text. Text can be single line or\n * multiline. If type is null or omitted the first directive encountered in text will be returned\n *\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {string | RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args:\n * object|null } matched by the input type if a single directive was found, that directive object\n * will be returned.\n */\nexport const detectDirective = function (text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${error.message} - Unable to parse directive\n ${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType Detects the type of the graph text. Takes into consideration the possible\n * existence of an %%init directive\n *\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {{\n * class: { defaultRenderer: string } | undefined;\n * state: { defaultRenderer: string } | undefined;\n * flowchart: { defaultRenderer: string } | undefined;\n * }} [cnf]\n * @returns {string} A graph definition key\n */\nexport const detectType = function (text, cnf) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n if (cnf && cnf.class && cnf.class.defaultRenderer === 'dagre-wrapper') return 'classDiagram';\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n if (cnf && cnf.class && cnf.state.defaultRenderer === 'dagre-wrapper') return 'stateDiagram';\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'gitGraph';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n if (text.match(/^\\s*requirement/) || text.match(/^\\s*requirementDiagram/)) {\n return 'requirement';\n }\n if (cnf && cnf.flowchart && cnf.flowchart.defaultRenderer === 'dagre-wrapper')\n return 'flowchart-v2';\n\n return 'flowchart';\n};\n\n/**\n * Caches results of functions based on input\n *\n * @param {Function} fn Function to run\n * @param {Function} resolver Function that resolves to an ID given arguments the `fn` takes\n * @returns {Function} An optimized caching function\n */\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {Array} arr The array to search\n * @returns {number} The array index containing the substring or -1 if not present\n */\nexport const isSubstringInArray = function (str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\n/**\n * Returns a d3 curve given a curve name\n *\n * @param {string | undefined} interpolate The interpolation name\n * @param {any} defaultCurve The default curve to return\n * @returns {import('d3-shape').CurveFactory} The curve factory to use\n */\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\n/**\n * Formats a URL string\n *\n * @param {string} linkStr String of the URL\n * @param {{ securityLevel: string }} config Configuration passed to MermaidJS\n * @returns {string | undefined} The formatted URL\n */\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\n/**\n * Runs a function\n *\n * @param {string} functionName A dot seperated path to the function relative to the `window`\n * @param {...any} params Parameters to pass to the function\n */\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\n/**\n * @typedef {object} Point A (x, y) point\n * @property {number} x The x value\n * @property {number} y The y value\n */\n\n/**\n * Finds the distance between two points using the Distance Formula\n *\n * @param {Point} p1 The first point\n * @param {Point} p2 The second point\n * @returns {number} The distance\n */\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\n/**\n * @param {Point[]} points List of points\n * @returns {Point}\n * @todo Give this a description\n */\nconst traverseEdge = (points) => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\n/**\n * Alias for `traverseEdge`\n *\n * @param {Point[]} points List of points\n * @returns {Point} Return result of `transverseEdge`\n */\nconst calcLabelPosition = (points) => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n log.info('our points', points);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\n/**\n * Position ['start_left', 'start_right', 'end_left', 'end_right']\n *\n * @param {any} terminalMarkerSize\n * @param {any} position\n * @param {any} _points\n * @returns {any}\n */\nconst calcTerminalLabelPosition = (terminalMarkerSize, position, _points) => {\n // Todo looking to faster cloning method\n let points = JSON.parse(JSON.stringify(_points));\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n log.info('our points', points);\n if (position !== 'start_left' && position !== 'start_right') {\n points = points.reverse();\n }\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = 10 + terminalMarkerSize * 0.5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n\n let cardinalityPosition = { x: 0, y: 0 };\n\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n if (position === 'start_left') {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n }\n if (position === 'end_right') {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n }\n if (position === 'end_left') {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n }\n return cardinalityPosition;\n};\n\n/**\n * Gets styles from an array of declarations\n *\n * @param {string[]} arr Declarations\n * @returns {{ style: string; labelStyle: string }} The styles grouped as strings\n */\nexport const getStylesFromArray = (arr) => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\n/**\n * @param {any} length\n * @returns {any}\n */\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = (options) => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and\n * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```js\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param dst\n * @param src\n * @param config\n * @param dst\n * @param src\n * @param config\n * @param dst\n * @param src\n * @param config\n * @param {any} dst - The destination of the merge\n * @param {any} src - The source object(s) to merge into destination\n * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth\n * to traverse within src and dst for merging - clobber: should dissimilar types clobber (default:\n * { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }`\n * @returns {any}\n */\nexport const assignWithDepth = function (dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined,\n };\n};\n\n/**\n * Adds text to an element\n *\n * @param {SVGElement} elem Element to add text to\n * @param {{\n * text: string;\n * x: number;\n * y: number;\n * anchor: 'start' | 'middle' | 'end';\n * fontFamily: string;\n * fontSize: string | number;\n * fontWeight: string | number;\n * fill: string;\n * class: string | undefined;\n * textMargin: number;\n * }} textData\n * @returns {SVGTextElement} Text element with given styling and content\n */\nexport const drawSimpleText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and both the statically\n * configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's value won't overflow.\n *\n * @param {any} text The text to measure\n * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n * @returns {any} - The height for the given text\n */\nexport const calculateTextHeight = function (text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @param {any} text - The text to calculate the width of\n * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n * @returns {any} - The width for the given text\n */\nexport const calculateTextWidth = function (text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @param {any} text - The text to calculate the width of\n * @param {any} config - The config for fontSize, fontFamily, fontWeight, and margin all impacting\n * the resulting size\n * @returns - The width for the given text\n */\nexport const calculateTextDimensions = memoize(\n function (text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * Applys d3 attributes\n *\n * @param {any} d3Elem D3 Element to apply the attributes onto\n * @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes\n */\nconst d3Attrs = function (d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\n\n/**\n * Gives attributes for an SVG's size given arguments\n *\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n * @returns {Map<'height' | 'width' | 'style', string>} Attributes for the SVG\n */\nexport const calculateSvgSizeAttrs = function (height, width, useMaxWidth) {\n let attrs = new Map();\n attrs.set('height', height);\n if (useMaxWidth) {\n attrs.set('width', '100%');\n attrs.set('style', `max-width: ${width}px;`);\n } else {\n attrs.set('width', width);\n }\n return attrs;\n};\n\n/**\n * Applies attributes from `calculateSvgSizeAttrs`\n *\n * @param {SVGSVGElement} svgElem The SVG Element to configure\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n */\nexport const configureSvgSize = function (svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\n\nexport const initIdGeneratior = class iterator {\n constructor(deterministic, seed) {\n this.deterministic = deterministic;\n this.seed = seed;\n\n this.count = seed ? seed.length : 0;\n }\n\n next() {\n if (!this.deterministic) return Date.now();\n\n return this.count++;\n }\n};\n\nlet decoder;\n\n/**\n * Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js}\n *\n * @param {string} html HTML as a string\n * @returns Unescaped HTML\n */\nexport const entityDecode = function (html) {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g, '&').replace(/%23/g, '#').replace(/%3B/g, ';');\n // decoding\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\n\n/**\n * Sanitizes directive objects\n *\n * @param {object} args Directive's JSON\n */\nexport const directiveSanitizer = (args) => {\n log.debug('directiveSanitizer called with', args);\n if (typeof args === 'object') {\n // check for array\n if (args.length) {\n args.forEach((arg) => directiveSanitizer(arg));\n } else {\n // This is an object\n Object.keys(args).forEach((key) => {\n log.debug('Checking key', key);\n if (key.indexOf('__') === 0) {\n log.debug('sanitize deleting __ option', key);\n delete args[key];\n }\n\n if (key.indexOf('proto') >= 0) {\n log.debug('sanitize deleting proto option', key);\n delete args[key];\n }\n\n if (key.indexOf('constr') >= 0) {\n log.debug('sanitize deleting constr option', key);\n delete args[key];\n }\n\n if (key.indexOf('themeCSS') >= 0) {\n log.debug('sanitizing themeCss option');\n args[key] = sanitizeCss(args[key]);\n }\n if (configKeys.indexOf(key) < 0) {\n log.debug('sanitize deleting option', key);\n delete args[key];\n } else {\n if (typeof args[key] === 'object') {\n log.debug('sanitize deleting object', key);\n directiveSanitizer(args[key]);\n }\n }\n });\n }\n }\n};\nexport const sanitizeCss = (str) => {\n const stringsearch = 'o';\n const startCnt = (str.match(/\\{/g) || []).length;\n const endCnt = (str.match(/\\}/g) || []).length;\n if (startCnt !== endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n // Todo add more checks here\n return str;\n};\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n calculateSvgSizeAttrs,\n configureSvgSize,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc,\n entityDecode,\n initIdGeneratior,\n directiveSanitizer,\n sanitizeCss,\n};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","module.exports = require(\"@braintree/sanitize-url\");","module.exports = require(\"d3\");","module.exports = require(\"dagre\");","module.exports = require(\"dagre-d3\");","module.exports = require(\"dagre-d3/lib/label/add-html-label.js\");","module.exports = require(\"dompurify\");","module.exports = require(\"graphlib\");","module.exports = require(\"khroma\");","module.exports = require(\"moment-mini\");","module.exports = require(\"stylis\");","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n",""],"names":["addSVGAccessibilityFields","yy_parser","svg","id","insert","title_string","getTitle","description","getAccDescription","attr","text","assignWithDepth","log","theme","config","defaultConfig","Object","freeze","siteConfig","configFromInitialize","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","cfg","sumOfDirectives","i","length","d","sanitize","tmpConfigFromInitialize","themeVariables","getThemeVariables","setSiteConfig","conf","saveConfigFromInitilize","updateSiteConfig","getSiteConfig","setConfig","getConfig","options","keys","secure","forEach","key","debug","indexOf","addDirective","directive","fontFamily","push","reset","intersectRect","createLabel","select","evaluate","rect","parent","node","trace","shapeSvg","class","label","appendChild","labelText","labelStyle","undefined","bbox","getBBox","flowchart","htmlLabels","div","children","dv","getBoundingClientRect","width","height","padding","halfPadding","diff","JSON","stringify","style","rx","ry","x","y","rectBox","intersect","point","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","sanitizeText","sanitizeTxt","txt","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","tspan","setAttributeNS","textContent","trim","line","curveBasis","utils","edgeLabels","terminalLabels","insertEdgeLabel","edge","labelElement","edgeLabel","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","setTerminalWidth","startLabelRight","startEdgeLabelRight","startRight","endLabelLeft","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","value","positionEdgeLabel","paths","path","updatedPath","originalPath","pos","calcLabelPosition","calcTerminalLabelPosition","arrowTypeStart","arrowTypeEnd","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","warn","r","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundryNode","points","lastPointOutside","isInside","inter","pointPresent","p","find","e","insertEdge","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","toCluster","fromCluster","reverse","lineData","filter","Number","isNaN","curve","lineFunction","strokeClasses","thickness","pattern","svgPath","url","state","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","dagre","graphlib","insertMarkers","updateNodeBounds","clearGraphlib","adjustClustersAndEdges","findNonClusterChild","sortNodesByHierarchy","insertNode","positionNode","clearNodes","setNodeElem","clearClusters","clearEdges","recursiveRender","_elem","diagramtype","parentCluster","json","write","dir","rankdir","nodes","edges","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","o","newEl","name","layout","n","type","render","markers","circle","ellipse","polygon","intersectEllipse","intersectCircle","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","intersectPolygon","polyPoints","x1","y1","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","removeEdge","extractor","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","sorter","result","assign","sorted","labelHelper","insertPolygonShape","note","parseMember","question","questionElem","choice","domId","map","join","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","totalWidth","totalHeight","props","propKeys","Set","borders","applyNodePropertyBorders","delete","propKey","strokeDashArray","addBorder","skipBorder","includes","rectWithTitle","innerLine","text2","flat","title","textRows","titleBox","descr","stadium","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","end","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","members","str","parsedInfo","parsedText","displayText","lbl","cssStyle","classMethods","methods","diffX","fork","nodeElems","link","target","securityLevel","linkTarget","tooltip","haveCallback","decodeEntities","_classes","element","themeCSS","maxTextSize","darkMode","logLevel","startOnLoad","deterministicIds","deterministicIDSeed","diagramPadding","nodeSpacing","rankSpacing","useMaxWidth","defaultRenderer","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","forceMenus","bottomMarginAdj","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","rightPadding","leftPadding","gridLineStartPadding","sectionFontSize","numberSectionStyles","axisFormat","topAxis","useWidth","journey","leftMargin","taskFontSize","taskFontFamily","taskMargin","textPlacement","actorColours","sectionFills","sectionColours","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","pie","requirement","rect_fill","text_color","rect_border_size","rect_border_color","rect_min_width","rect_min_height","rect_padding","line_height","gitGraph","nodeLabel","mainBranchName","showCommitLabel","showBranches","keyify","obj","prefix","reduce","configKeys","configApi","common","mermaidAPI","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","parseDirective","statement","context","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","relationTitle1","relationTitle2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","cleanupLabel","substr","setCssClass","ids","match","setTooltip","setLink","linkStr","formatUrl","setClickEvent","functionName","functionArgs","setClickFunc","elemId","argList","item","charAt","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","selectAll","on","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","direction","getDirection","setDirection","setTitle","sanitizedText","accDescription","setAccDescription","classDb","parser","svgDraw","curveLinear","interpolateToCurve","getStylesFromArray","configureSvgSize","yy","idCache","addClasses","g","vertex","cssClassStr","styles","radious","_shape","addRelations","cnt","defaultStyle","defaultLabelStyle","edgeData","arrowhead","getArrowMarker","type1","type2","interpolate","defaultInterpolate","arrowheadStyle","labelpos","labelType","lineBreakRegex","getGraphId","foundEntry","entries","setConf","cnf","draw","sandboxElement","root","contentDocument","svgBounds","_label","doc","labels","querySelectorAll","k","dim","insertBefore","firstChild","marker","diagram","isMultiGraph","classDef","drawClass","drawEdge","vBox","getStyles","nodeBorder","classText","mainBkg","lineColor","edgeCount","getRelationType","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","classInfo","isFirst","titleText2","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","visibility","fieldType","parseGenericTypes","fieldName","classifier","parseClassifier","err","methodName","parameters","returnType","memberText","methodStart","methodEnd","firstChar","textEl","tSpan","cleanedText","DOMPurify","getRows","breakToPlaceholder","removeEscapes","newStr","String","fromCharCode","parseInt","_","c","removeScript","rs","idx","decodedText","sanitizeMore","level","placeholderToBreak","sanitizeTextOrArray","a","hasBreaks","test","splitBreaks","getUrl","useAbsolute","val","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","attributes","getEntities","addAttributes","entityName","attribs","entity","attributeName","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","erDb","erParser","erMarkers","drawAttributes","groupNode","entityTextNode","heightPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","attributeKeyType","attributeComment","attrPrefix","nodeHeight","typeNode","attributeType","nameNode","attributeNode","tn","nn","typeBBox","nameBBox","max","keyTypeNode","kn","keyTypeBBox","commentNode","cn","commentNodeBBox","widthPaddingFactor","bBox","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","parseFloat","nameRect","keyTypeAndCommentXOffset","keyTypeRect","drawEntities","svgNode","firstOne","textId","textNode","entityWidth","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","cardA","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","directed","edgesep","firstEntity","tertiaryColor","dagreD3","addToRender","addToRenderV2","addShape","vertexCounter","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","version","veritceKeys","addVertex","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","updateLink","isSubstringInArray","textStyles","newStyle1","newStyle2","setClass","setClickFun","getTooltip","getVertices","getEdges","ver","setGen","addSubGraph","list","_title","uniq","prims","boolean","number","string","objs","nodeList","stmt","hasOwnProperty","apply","nl","subGraph","makeUniq","getPosForId","secCount","posCrossRef","indexNodes2","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","countChar","char","destructEndLink","dots","destructLink","_startStr","startInfo","exists","allSgs","sg","allSubgraphs","lex","flowDb","flow","addVertices","vert","svgId","classStr","parentNode","addEdges","linkIdCnt","defaultStyles","linkIdBase","linkId","linkNameStart","linkNameEnd","minlen","subG","linkNode","flowChartShapes","_doc","Render","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","yPos","cluster","te","classList","add","nodeTextColor","textColor","titleColor","arrowheadColor","edgeLabelBackground","clusterBkg","clusterBorder","border2","moment","sanitizeUrl","dateFormat","todayMarker","excludes","links","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getDateFormat","setIncludes","toLowerCase","getIncludes","setExcludes","getExcludes","getLinks","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","format","isoWeekday","checkTaskDates","task","manualEndTime","startTime","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","compileTask","allProcessed","_linkStr","pushFun","open","callbackFunction","matchFound","t","regex","RegExp","shift","scaleTime","scaleLinear","interpolateHcl","axisBottom","axisTop","timeFormat","ganttDb","getElementById","parentElement","offsetWidth","taskArray","timeScale","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","colorScale","range","drawExcludeDays","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","each","taskRect","taskText","oldParent","Link","createElement","minTime","maxTime","excludeRanges","valueOf","clone","renderEnd","bottomXAxis","tickSize","tickFormat","call","topXAxis","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","prototype","getCounts","word","excludeBkgColor","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","ganttFontSize","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","random","commits","branches","curBranch","seq","getId","uniqBy","fn","recordMap","create","out","setOptions","rawOptString","message","getOptions","commit","msg","tag","commitType","NORMAL","branch","checkout","Error","token","loc","first_line","last_line","first_column","last_column","expected","merge","otherBranch","currentCommit","otherCommit","MERGE","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","newCommit","nextCommit","prettyPrint","getCommitsArray","mainBranch","getBranchesAsObjArray","branchArr","getBranches","getCommits","getCurrentBranch","getHead","REVERSE","HIGHLIGHT","db","gitGraphParser","allCommitsDict","branchNum","branchPos","commitPos","lanes","maxPos","drawText","drawCommits","modifyGraph","gitGraphConfig","gBullets","gLabels","sortedKeys","typeClass","circle2","labelBkg","hole","tagBbox","h2","ly","hasOverlappingCommits","commit1","commit2","allCommits","commit1Pos","commit2Pos","overlappingComits","findLane","y2","_depth","candidate","ok","drawArrow","overlappingCommits","arc","arc2","colorClassNum","lineDef","lineY","arrow","drawArrows","gArrows","drawBranches","bkg","branchLabel","commitLabelColor","commitLabelBackground","tagLabelColor","tagLabelBackground","tagLabelBorder","primaryColor","setMessage","getMessage","setInfo","inf","getInfo","infoParser","showData","setShowData","toggle","getShowData","cleanupValue","scaleOrdinal","d3pie","pieData","pieParser","margin","legendRectSize","legendSpacing","sum","myGeneratedColors","pie1","pie2","pie3","pie4","pie5","pie6","pie7","pie8","pie9","pie10","pie11","pie12","color","dataReady","arcGenerator","innerRadius","outerRadius","toFixed","centroid","legend","horz","pieStrokeColor","pieStrokeWidth","pieOpacity","pieTitleTextSize","pieTitleTextColor","pieSectionTextColor","pieSectionTextSize","pieLegendTextColor","pieLegendTextSize","latestRequirement","requirements","latestElement","elements","RequirementType","REQUIREMENT","FUNCTIONAL_REQUIREMENT","INTERFACE_REQUIREMENT","PERFORMANCE_REQUIREMENT","PHYSICAL_REQUIREMENT","DESIGN_CONSTRAINT","RiskLevel","LOW_RISK","MED_RISK","HIGH_RISK","VerifyType","VERIFY_ANALYSIS","VERIFY_DEMONSTRATION","VERIFY_INSPECTION","VERIFY_TEST","Relationships","CONTAINS","COPIES","DERIVES","SATISFIES","VERIFIES","REFINES","TRACES","addRequirement","risk","verifyMethod","getRequirements","setNewReqId","setNewReqText","setNewReqRisk","setNewReqVerifyMethod","addElement","docRef","getElements","setNewElementType","setNewElementDocRef","src","dst","req","ReqMarkers","ARROW","insertLineEndings","containsNode","requirementDb","newRectNode","newTitleNode","txts","textStr","yPadding","linePadding","totalY","titleNode","newBodyNode","yStart","currentRow","charLimit","wrappedTxts","currentTextLen","firstPart","lastStr","addEdgeLabel","elementString","drawReqs","reqs","reqName","titleNodeInfo","bodyNode","drawElements","els","elName","relationColor","requirementBackground","requirementBorderColor","requirementBorderSize","requirementTextColor","relationLabelBackground","relationLabelColor","prevActor","actors","messages","notes","sequenceNumbersEnabled","wrapEnabled","addActor","old","autoWrap","properties","actorCnt","rectData","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","getMessages","getActors","getActor","getActorKeys","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","SOLID_POINT","DOTTED_POINT","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","addLinks","actorId","insertLinks","addALink","sep","addProperties","insertProperties","addDetails","innerHTML","details","getActorProperty","param","signalType","loopText","optText","altText","parText","description_lex","fixLifeLineHeights","sequenceDb","startx","stopx","starty","stopy","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","updateBounds","_self","updateFn","updateItemBounds","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","round","curr","boundMessage","lines","textDims","calculateTextDimensions","lineStarty","totalOffset","fromBounds","toBounds","drawMessage","sequenceIndex","drawActors","actorKeys","configuration","hideUnusedParticipants","newActors","actorKey","prevWidth","prevMargin","drawActor","drawActorsPopup","minMenuWidth","getRequiredPopupWidth","menuDimensions","drawPopup","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","insertComputerIcon","insertDatabaseIcon","insertClockIcon","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertArrowFilledHead","insertSequenceNumber","activeEnd","activationData","drawActivation","messagesToDraw","drawLoop","drawBackgroundRect","messageModel","requiredBoxSize","box","actorLines","boxHeight","boxWidth","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","requiredPopupWidth","labelDimensions","labelWidth","actorToMessageWidth","prop","actDims","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","actorBorder","actorBkg","actorTextColor","actorLineColor","signalColor","sequenceNumberColor","signalTextColor","labelBoxBorderColor","labelBoxBkgColor","labelTextColor","loopTextColor","noteBorderColor","noteBkgColor","noteTextColor","activationBkgColor","activationBorderColor","addFunction","addPopupInteraction","popupMenuUpFunc","popupMenuDownFunc","textAttrs","displayValue","actorClass","menuWidth","linkY","linkElem","sanitizedLink","_drawMenuItemTextCandidateFunc","drawImage","imageElem","drawEmbeddedImage","popupMenu","popid","popdownMenu","popupId","pu","display","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","drawActorTypeParticipant","center","boxpluslineGroup","cssclass","iconSrc","_drawTextCandidateFunc","drawActorTypeActor","actElem","drawLoopLine","sectionHeight","lower","defs","byText","content","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","set","get","size","stateDb","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","titleRows","boundstmp","heightAdj","generateId","rootDoc","setRootDoc","getRootDoc","docTranslator","first","state1","state2","currentDoc","newNode","docNode","getRootDocV2","extract","addState","newDoc","states","documents","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","getDir","nodeData","noteData","groupData","position","arrowType","setupDoc","startId","endId","defaultDir","transformationLog","renderDoc","svgWidth","getLabelWidth","domDocument","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","transitionColor","stateLabelColor","background","labelBackgroundColor","transitionLabelColor","tertiaryTextColor","specialStateColor","innerEndBackground","compositeBackground","stateBkg","stateBorder","compositeTitleBackground","altBackground","allItemsProcessed","updateActors","tempActors","people","unique","taskData","pieces","score","peeps","peopleList","journeyDb","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","faceColor","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","actor0","actor1","actor2","actor3","actor4","actor5","d3arc","drawFace","faceData","circleElement","face","smile","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","interactionFunctions","func","attachFunctions","LEVELS","fatal","setLogLevel","console","bind","time","arguments","mermaid","sequenceConfig","callback","Node","ganttConfig","idGeneratior","initIdGeneratior","next","entityDecode","detectInit","svgCode","parseError","initialize","contentLoaded","compile","serialize","pkg","classRenderer","classRendererV2","classParser","erRenderer","flowRenderer","flowRendererV2","flowParser","ganttRenderer","ganttParser","gitGraphAst","gitGraphRenderer","infoDb","infoRenderer","pieDb","pieRenderer","requirementParser","requirementRenderer","sequenceParser","sequenceRenderer","stateParser","stateRenderer","stateRendererV2","journeyRenderer","journeyParser","errorRenderer","directiveSanitizer","sanitizeCss","graphInit","reinitialize","graphType","detectType","encodeEntities","innerTxt","isInt","_txt","cb","container","iframe","existingSvg","remove","userStyles","altFontFamily","stylis","selector","rules","style1","sequenceDiagram","svgEl","viewBox","btoa","tmpElementSelector","currentDirective","args","handleDirective","updateRendererConfigs","default","globalReset","classDiagram","stateDiagram","themes","calcThemeVariables","userOverRides","calcColors","errorBkgColor","errorTextColor","baseThemeVariables","darkThemeVariables","defaultThemeVariables","forestThemeVariables","neutralThemeVariables","base","dark","forest","neutral","darken","lighten","adjust","invert","mkBorder","Theme","primaryTextColor","secondaryColor","primaryBorderColor","secondaryBorderColor","tertiaryBorderColor","secondaryTextColor","nodeBkg","defaultLinkColor","taskTextLightColor","compositeBorder","git0","git1","git2","git3","git4","git5","git6","git7","gitInv0","gitInv1","gitInv2","gitInv3","gitInv4","gitInv5","gitInv6","gitInv7","branchLabelColor","gitBranchLabel0","gitBranchLabel1","gitBranchLabel2","gitBranchLabel3","gitBranchLabel4","gitBranchLabel5","gitBranchLabel6","gitBranchLabel7","tagBorder","overrides","updateColors","userOverrides","calculate","rgba","secondBkg","mainContrastColor","darkTextColor","border1","labelBackground","labelColor","col","contrast","critical","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","d3CurveTypes","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","terminalMarkerSize","makeid","characters","charactersLength","floor","clobber","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","d3Attrs","d3Elem","attrs","calculateSvgSizeAttrs","Map","deterministic","seed","now","decoder","escape","unescape","arg","stringsearch"],"sourceRoot":""}