@quartz-community/obsidian-plugin-excalidraw 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/lz-string/libs/lz-string.js","../node_modules/@quartz-community/utils/src/path.ts","../src/parser.ts","../node_modules/html-void-elements/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/zwitch/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/index.js","../node_modules/roughjs/bundled/rough.esm.js","../node_modules/perfect-freehand/src/constants.ts","../node_modules/perfect-freehand/src/getStrokeRadius.ts","../node_modules/perfect-freehand/src/simulatePressure.ts","../node_modules/perfect-freehand/src/vec.ts","../node_modules/perfect-freehand/src/getStrokeOutlinePoints.ts","../node_modules/perfect-freehand/src/getStrokePoints.ts","../node_modules/perfect-freehand/src/getStroke.ts","../src/renderer.ts","../src/components/styles/excalidraw.scss","../src/components/scripts/excalidraw.inline.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../src/components/ExcalidrawBody.tsx","../src/pageType.ts","../src/frames/ExcalidrawFrame.tsx"],"names":["LZString","f","i","a","c","w","s","slug","x","_","afterFence","fenceEnd","d","key","html","svg","own","one","all","_2","_3","stringify","increment","siblings","body","tbody","head","child","y","emptyChildren","t","e","n","o","h","r","l","u","p","g","M","k","b","m","P","v","S","O","L","T","D","A","C","E","j","N","re","F","I","R","z","B","V","H","U","W","G","K","q","J","Y","X","Z","Q","$","x2","y2","dash","options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","isStaticChildren","__source","__self","ref","normalizedProps","__k","__b","__v","__i","__u","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0CAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AASA,IAAA,IAAIA,aAAY,WAAW;AAG3B,MAAA,IAAIC,KAAI,MAAA,CAAO,YAAA;AACf,MAAA,IAAI,YAAA,GAAe,mEAAA;AACnB,MAAA,IAAI,aAAA,GAAgB,mEAAA;AACpB,MAAA,IAAI,iBAAiB,EAAC;AAEtB,MAAA,SAAS,YAAA,CAAa,UAAU,SAAA,EAAW;AACzC,QAAA,IAAI,CAAC,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7B,UAAA,cAAA,CAAe,QAAQ,IAAI,EAAC;AAC5B,UAAA,KAAA,IAASC,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,QAAA,CAAS,QAASA,EAAAA,EAAAA,EAAK;AACtC,YAAA,cAAA,CAAe,QAAQ,CAAA,CAAE,QAAA,CAAS,MAAA,CAAOA,EAAC,CAAC,CAAA,GAAIA,EAAAA;AAAA,UACjD;AAAA,QACF;AACA,QAAA,OAAO,cAAA,CAAe,QAAQ,CAAA,CAAE,SAAS,CAAA;AAAA,MAC3C;AAEA,MAAA,IAAIF,SAAAA,GAAW;AAAA,QACb,gBAAA,EAAmB,SAAU,KAAA,EAAO;AAClC,UAAA,IAAI,KAAA,IAAS,MAAM,OAAO,EAAA;AAC1B,UAAA,IAAI,MAAMA,SAAAA,CAAS,SAAA,CAAU,KAAA,EAAO,CAAA,EAAG,SAASG,EAAAA,EAAE;AAAC,YAAA,OAAO,YAAA,CAAa,OAAOA,EAAC,CAAA;AAAA,UAAE,CAAC,CAAA;AAClF,UAAA,QAAQ,GAAA,CAAI,SAAS,CAAA;AAAG;AAAA,YACxB;AAAA;AAAA,YACA,KAAK,CAAA;AAAI,cAAA,OAAO,GAAA;AAAA,YAChB,KAAK,CAAA;AAAI,cAAA,OAAO,GAAA,GAAI,KAAA;AAAA,YACpB,KAAK,CAAA;AAAI,cAAA,OAAO,GAAA,GAAI,IAAA;AAAA,YACpB,KAAK,CAAA;AAAI,cAAA,OAAO,GAAA,GAAI,GAAA;AAAA;AACpB,QACF,CAAA;AAAA,QAEA,oBAAA,EAAuB,SAAU,KAAA,EAAO;AACtC,UAAA,IAAI,KAAA,IAAS,MAAM,OAAO,EAAA;AAC1B,UAAA,IAAI,KAAA,IAAS,IAAI,OAAO,IAAA;AACxB,UAAA,OAAOH,UAAS,WAAA,CAAY,KAAA,CAAM,MAAA,EAAQ,EAAA,EAAI,SAAS,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,YAAA,EAAc,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,UAAG,CAAC,CAAA;AAAA,QAC3H,CAAA;AAAA,QAEA,eAAA,EAAkB,SAAU,KAAA,EAAO;AACjC,UAAA,IAAI,KAAA,IAAS,MAAM,OAAO,EAAA;AAC1B,UAAA,OAAOA,SAAAA,CAAS,SAAA,CAAU,KAAA,EAAO,EAAA,EAAI,SAASG,EAAAA,EAAE;AAAC,YAAA,OAAOF,EAAAA,CAAEE,KAAE,EAAE,CAAA;AAAA,UAAE,CAAC,CAAA,GAAI,GAAA;AAAA,QACvE,CAAA;AAAA,QAEA,mBAAA,EAAqB,SAAU,UAAA,EAAY;AACzC,UAAA,IAAI,UAAA,IAAc,MAAM,OAAO,EAAA;AAC/B,UAAA,IAAI,UAAA,IAAc,IAAI,OAAO,IAAA;AAC7B,UAAA,OAAOH,UAAS,WAAA,CAAY,UAAA,CAAW,MAAA,EAAQ,KAAA,EAAO,SAAS,KAAA,EAAO;AAAE,YAAA,OAAO,UAAA,CAAW,UAAA,CAAW,KAAK,CAAA,GAAI,EAAA;AAAA,UAAI,CAAC,CAAA;AAAA,QACrH,CAAA;AAAA;AAAA,QAGA,oBAAA,EAAsB,SAAU,YAAA,EAAc;AAC5C,UAAA,IAAI,UAAA,GAAaA,SAAAA,CAAS,QAAA,CAAS,YAAY,CAAA;AAC/C,UAAA,IAAI,GAAA,GAAI,IAAI,UAAA,CAAW,UAAA,CAAW,SAAO,CAAC,CAAA;AAE1C,UAAA,KAAA,IAASE,KAAE,CAAA,EAAG,QAAA,GAAS,WAAW,MAAA,EAAQA,EAAAA,GAAE,UAAUA,EAAAA,EAAAA,EAAK;AACzD,YAAA,IAAI,aAAA,GAAgB,UAAA,CAAW,UAAA,CAAWA,EAAC,CAAA;AAC3C,YAAA,GAAA,CAAIA,EAAAA,GAAE,CAAC,CAAA,GAAI,aAAA,KAAkB,CAAA;AAC7B,YAAA,GAAA,CAAIA,EAAAA,GAAE,CAAA,GAAE,CAAC,CAAA,GAAI,aAAA,GAAgB,GAAA;AAAA,UAC/B;AACA,UAAA,OAAO,GAAA;AAAA,QACT,CAAA;AAAA;AAAA,QAGA,wBAAA,EAAyB,SAAU,UAAA,EAAY;AAC7C,UAAA,IAAI,UAAA,KAAa,IAAA,IAAQ,UAAA,KAAa,MAAA,EAAU;AAC5C,YAAA,OAAOF,SAAAA,CAAS,WAAW,UAAU,CAAA;AAAA,UACzC,CAAA,MAAO;AACH,YAAA,IAAI,GAAA,GAAI,IAAI,KAAA,CAAM,UAAA,CAAW,SAAO,CAAC,CAAA;AACrC,YAAA,KAAA,IAASE,KAAE,CAAA,EAAG,QAAA,GAAS,IAAI,MAAA,EAAQA,EAAAA,GAAE,UAAUA,EAAAA,EAAAA,EAAK;AAClD,cAAA,GAAA,CAAIA,EAAC,CAAA,GAAE,UAAA,CAAWA,EAAAA,GAAE,CAAC,IAAE,GAAA,GAAI,UAAA,CAAWA,EAAAA,GAAE,CAAA,GAAE,CAAC,CAAA;AAAA,YAC7C;AAEA,YAAA,IAAI,SAAS,EAAC;AACd,YAAA,GAAA,CAAI,OAAA,CAAQ,SAAUE,EAAAA,EAAG;AACvB,cAAA,MAAA,CAAO,IAAA,CAAKH,EAAAA,CAAEG,EAAC,CAAC,CAAA;AAAA,YAClB,CAAC,CAAA;AACD,YAAA,OAAOJ,SAAAA,CAAS,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,UAE9C;AAAA,QAEF,CAAA;AAAA;AAAA,QAIA,6BAAA,EAA+B,SAAU,KAAA,EAAO;AAC9C,UAAA,IAAI,KAAA,IAAS,MAAM,OAAO,EAAA;AAC1B,UAAA,OAAOA,SAAAA,CAAS,SAAA,CAAU,KAAA,EAAO,CAAA,EAAG,SAASG,EAAAA,EAAE;AAAC,YAAA,OAAO,aAAA,CAAc,OAAOA,EAAC,CAAA;AAAA,UAAE,CAAC,CAAA;AAAA,QAClF,CAAA;AAAA;AAAA,QAGA,iCAAA,EAAkC,SAAU,KAAA,EAAO;AACjD,UAAA,IAAI,KAAA,IAAS,MAAM,OAAO,EAAA;AAC1B,UAAA,IAAI,KAAA,IAAS,IAAI,OAAO,IAAA;AACxB,UAAA,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA;AAC/B,UAAA,OAAOH,UAAS,WAAA,CAAY,KAAA,CAAM,MAAA,EAAQ,EAAA,EAAI,SAAS,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,aAAA,EAAe,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,UAAG,CAAC,CAAA;AAAA,QAC5H,CAAA;AAAA,QAEA,QAAA,EAAU,SAAU,YAAA,EAAc;AAChC,UAAA,OAAOA,SAAAA,CAAS,SAAA,CAAU,YAAA,EAAc,EAAA,EAAI,SAASG,EAAAA,EAAE;AAAC,YAAA,OAAOF,GAAEE,EAAC,CAAA;AAAA,UAAE,CAAC,CAAA;AAAA,QACvE,CAAA;AAAA,QACA,SAAA,EAAW,SAAU,YAAA,EAAc,WAAA,EAAa,cAAA,EAAgB;AAC9D,UAAA,IAAI,YAAA,IAAgB,MAAM,OAAO,EAAA;AACjC,UAAA,IAAID,EAAAA,EAAG,KAAA,EACH,kBAAA,GAAoB,EAAC,EACrB,0BAAA,GAA4B,EAAC,EAC7B,SAAA,GAAU,EAAA,EACV,UAAA,GAAW,EAAA,EACX,SAAA,GAAU,IACV,iBAAA,GAAmB,CAAA,EACnB,gBAAA,GAAkB,CAAA,EAClB,eAAA,GAAiB,CAAA,EACjB,YAAA,GAAa,EAAC,EACd,gBAAA,GAAiB,CAAA,EACjB,qBAAA,GAAsB,CAAA,EACtB,EAAA;AAEJ,UAAA,KAAK,KAAK,CAAA,EAAG,EAAA,GAAK,YAAA,CAAa,MAAA,EAAQ,MAAM,CAAA,EAAG;AAC9C,YAAA,SAAA,GAAY,YAAA,CAAa,OAAO,EAAE,CAAA;AAClC,YAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,kBAAA,EAAmB,SAAS,CAAA,EAAG;AACvE,cAAA,kBAAA,CAAmB,SAAS,CAAA,GAAI,gBAAA,EAAA;AAChC,cAAA,0BAAA,CAA2B,SAAS,CAAA,GAAI,IAAA;AAAA,YAC1C;AAEA,YAAA,UAAA,GAAa,SAAA,GAAY,SAAA;AACzB,YAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,kBAAA,EAAmB,UAAU,CAAA,EAAG;AACvE,cAAA,SAAA,GAAY,UAAA;AAAA,YACd,CAAA,MAAO;AACL,cAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,0BAAA,EAA2B,SAAS,CAAA,EAAG;AAC9E,gBAAA,IAAI,SAAA,CAAU,UAAA,CAAW,CAAC,CAAA,GAAE,GAAA,EAAK;AAC/B,kBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,oBAAA,gBAAA,GAAoB,gBAAA,IAAoB,CAAA;AACxC,oBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,sBAAA,qBAAA,GAAwB,CAAA;AACxB,sBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,sBAAA,gBAAA,GAAmB,CAAA;AAAA,oBACrB,CAAA,MAAO;AACL,sBAAA,qBAAA,EAAA;AAAA,oBACF;AAAA,kBACF;AACA,kBAAA,KAAA,GAAQ,SAAA,CAAU,WAAW,CAAC,CAAA;AAC9B,kBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,EAAAA,EAAK;AACpB,oBAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,oBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,sBAAA,qBAAA,GAAwB,CAAA;AACxB,sBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,sBAAA,gBAAA,GAAmB,CAAA;AAAA,oBACrB,CAAA,MAAO;AACL,sBAAA,qBAAA,EAAA;AAAA,oBACF;AACA,oBAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,kBACnB;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,KAAA,GAAQ,CAAA;AACR,kBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,oBAAA,gBAAA,GAAoB,oBAAoB,CAAA,GAAK,KAAA;AAC7C,oBAAA,IAAI,qBAAA,IAAwB,cAAY,CAAA,EAAG;AACzC,sBAAA,qBAAA,GAAwB,CAAA;AACxB,sBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,sBAAA,gBAAA,GAAmB,CAAA;AAAA,oBACrB,CAAA,MAAO;AACL,sBAAA,qBAAA,EAAA;AAAA,oBACF;AACA,oBAAA,KAAA,GAAQ,CAAA;AAAA,kBACV;AACA,kBAAA,KAAA,GAAQ,SAAA,CAAU,WAAW,CAAC,CAAA;AAC9B,kBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,EAAA,EAAKA,EAAAA,EAAAA,EAAK;AACrB,oBAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,oBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,sBAAA,qBAAA,GAAwB,CAAA;AACxB,sBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,sBAAA,gBAAA,GAAmB,CAAA;AAAA,oBACrB,CAAA,MAAO;AACL,sBAAA,qBAAA,EAAA;AAAA,oBACF;AACA,oBAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,kBACnB;AAAA,gBACF;AACA,gBAAA,iBAAA,EAAA;AACA,gBAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,kBAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,eAAe,CAAA;AAC/C,kBAAA,eAAA,EAAA;AAAA,gBACF;AACA,gBAAA,OAAO,2BAA2B,SAAS,CAAA;AAAA,cAC7C,CAAA,MAAO;AACL,gBAAA,KAAA,GAAQ,mBAAmB,SAAS,CAAA;AACpC,gBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,kBAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,kBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,oBAAA,qBAAA,GAAwB,CAAA;AACxB,oBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,oBAAA,gBAAA,GAAmB,CAAA;AAAA,kBACrB,CAAA,MAAO;AACL,oBAAA,qBAAA,EAAA;AAAA,kBACF;AACA,kBAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,gBACnB;AAAA,cAGF;AACA,cAAA,iBAAA,EAAA;AACA,cAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,gBAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,eAAe,CAAA;AAC/C,gBAAA,eAAA,EAAA;AAAA,cACF;AAEA,cAAA,kBAAA,CAAmB,UAAU,CAAA,GAAI,gBAAA,EAAA;AACjC,cAAA,SAAA,GAAY,OAAO,SAAS,CAAA;AAAA,YAC9B;AAAA,UACF;AAGA,UAAA,IAAI,cAAc,EAAA,EAAI;AACpB,YAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,0BAAA,EAA2B,SAAS,CAAA,EAAG;AAC9E,cAAA,IAAI,SAAA,CAAU,UAAA,CAAW,CAAC,CAAA,GAAE,GAAA,EAAK;AAC/B,gBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,kBAAA,gBAAA,GAAoB,gBAAA,IAAoB,CAAA;AACxC,kBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,oBAAA,qBAAA,GAAwB,CAAA;AACxB,oBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,oBAAA,gBAAA,GAAmB,CAAA;AAAA,kBACrB,CAAA,MAAO;AACL,oBAAA,qBAAA,EAAA;AAAA,kBACF;AAAA,gBACF;AACA,gBAAA,KAAA,GAAQ,SAAA,CAAU,WAAW,CAAC,CAAA;AAC9B,gBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,EAAAA,EAAK;AACpB,kBAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,kBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,oBAAA,qBAAA,GAAwB,CAAA;AACxB,oBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,oBAAA,gBAAA,GAAmB,CAAA;AAAA,kBACrB,CAAA,MAAO;AACL,oBAAA,qBAAA,EAAA;AAAA,kBACF;AACA,kBAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,gBACnB;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,KAAA,GAAQ,CAAA;AACR,gBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,kBAAA,gBAAA,GAAoB,oBAAoB,CAAA,GAAK,KAAA;AAC7C,kBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,oBAAA,qBAAA,GAAwB,CAAA;AACxB,oBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,oBAAA,gBAAA,GAAmB,CAAA;AAAA,kBACrB,CAAA,MAAO;AACL,oBAAA,qBAAA,EAAA;AAAA,kBACF;AACA,kBAAA,KAAA,GAAQ,CAAA;AAAA,gBACV;AACA,gBAAA,KAAA,GAAQ,SAAA,CAAU,WAAW,CAAC,CAAA;AAC9B,gBAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,EAAA,EAAKA,EAAAA,EAAAA,EAAK;AACrB,kBAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,kBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,oBAAA,qBAAA,GAAwB,CAAA;AACxB,oBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,oBAAA,gBAAA,GAAmB,CAAA;AAAA,kBACrB,CAAA,MAAO;AACL,oBAAA,qBAAA,EAAA;AAAA,kBACF;AACA,kBAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,gBACnB;AAAA,cACF;AACA,cAAA,iBAAA,EAAA;AACA,cAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,gBAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,eAAe,CAAA;AAC/C,gBAAA,eAAA,EAAA;AAAA,cACF;AACA,cAAA,OAAO,2BAA2B,SAAS,CAAA;AAAA,YAC7C,CAAA,MAAO;AACL,cAAA,KAAA,GAAQ,mBAAmB,SAAS,CAAA;AACpC,cAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,gBAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,gBAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,kBAAA,qBAAA,GAAwB,CAAA;AACxB,kBAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,kBAAA,gBAAA,GAAmB,CAAA;AAAA,gBACrB,CAAA,MAAO;AACL,kBAAA,qBAAA,EAAA;AAAA,gBACF;AACA,gBAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,cACnB;AAAA,YAGF;AACA,YAAA,iBAAA,EAAA;AACA,YAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,cAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,eAAe,CAAA;AAC/C,cAAA,eAAA,EAAA;AAAA,YACF;AAAA,UACF;AAGA,UAAA,KAAA,GAAQ,CAAA;AACR,UAAA,KAAKA,EAAAA,GAAE,CAAA,EAAIA,EAAAA,GAAE,eAAA,EAAkBA,EAAAA,EAAAA,EAAK;AAClC,YAAA,gBAAA,GAAoB,gBAAA,IAAoB,IAAM,KAAA,GAAM,CAAA;AACpD,YAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,cAAA,qBAAA,GAAwB,CAAA;AACxB,cAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,cAAA,gBAAA,GAAmB,CAAA;AAAA,YACrB,CAAA,MAAO;AACL,cAAA,qBAAA,EAAA;AAAA,YACF;AACA,YAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AAAA,UACnB;AAGA,UAAA,OAAO,IAAA,EAAM;AACX,YAAA,gBAAA,GAAoB,gBAAA,IAAoB,CAAA;AACxC,YAAA,IAAI,qBAAA,IAAyB,cAAY,CAAA,EAAG;AAC1C,cAAA,YAAA,CAAa,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAC,CAAA;AAClD,cAAA;AAAA,YACF,CAAA,MACK,qBAAA,EAAA;AAAA,UACP;AACA,UAAA,OAAO,YAAA,CAAa,KAAK,EAAE,CAAA;AAAA,QAC7B,CAAA;AAAA,QAEA,UAAA,EAAY,SAAU,UAAA,EAAY;AAChC,UAAA,IAAI,UAAA,IAAc,MAAM,OAAO,EAAA;AAC/B,UAAA,IAAI,UAAA,IAAc,IAAI,OAAO,IAAA;AAC7B,UAAA,OAAOF,UAAS,WAAA,CAAY,UAAA,CAAW,MAAA,EAAQ,KAAA,EAAO,SAAS,KAAA,EAAO;AAAE,YAAA,OAAO,UAAA,CAAW,WAAW,KAAK,CAAA;AAAA,UAAG,CAAC,CAAA;AAAA,QAChH,CAAA;AAAA,QAEA,WAAA,EAAa,SAAU,MAAA,EAAQ,UAAA,EAAY,YAAA,EAAc;AACvD,UAAA,IAAI,UAAA,GAAa,EAAC,CAAA,CAEd,SAAA,GAAY,CAAA,CAAA,CACZ,QAAA,GAAW,CAAA,CAAA,CACX,OAAA,GAAU,CAAA,CAAA,CACV,KAAA,GAAQ,EAAA,CAAA,CACR,SAAS,EAAC,CAAA,CACVE,EAAAA,CAAAA,CACAG,EAAAA,CAAAA,CACA,IAAA,CAAA,CAAM,IAAA,CAAA,CAAM,QAAA,CAAA,CAAU,KAAA,CAAA,CACtBD,IACA,IAAA,GAAO,EAAC,GAAA,EAAI,YAAA,CAAa,CAAC,CAAA,EAAG,QAAA,EAAS,UAAA,EAAY,OAAM,CAAA;AAE5D,UAAA,KAAKF,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,CAAA,EAAGA,MAAK,CAAA,EAAG;AACzB,YAAA,UAAA,CAAWA,EAAC,CAAA,GAAIA,EAAAA;AAAA,UAClB;AAEA,UAAA,IAAA,GAAO,CAAA;AACP,UAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,CAAC,CAAA;AACvB,UAAA,KAAA,GAAM,CAAA;AACN,UAAA,OAAO,SAAO,QAAA,EAAU;AACtB,YAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,QAAA;AACvB,YAAA,IAAA,CAAK,QAAA,KAAa,CAAA;AAClB,YAAA,IAAI,IAAA,CAAK,YAAY,CAAA,EAAG;AACtB,cAAA,IAAA,CAAK,QAAA,GAAW,UAAA;AAChB,cAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,YACtC;AACA,YAAA,IAAA,IAAA,CAAS,IAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,KAAA;AAC3B,YAAA,KAAA,KAAU,CAAA;AAAA,UACZ;AAEA,UAAA,QAAe,IAAA;AAAM,YACnB,KAAK,CAAA;AACD,cAAA,IAAA,GAAO,CAAA;AACP,cAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,CAAC,CAAA;AACvB,cAAA,KAAA,GAAM,CAAA;AACN,cAAA,OAAO,SAAO,QAAA,EAAU;AACtB,gBAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,QAAA;AACvB,gBAAA,IAAA,CAAK,QAAA,KAAa,CAAA;AAClB,gBAAA,IAAI,IAAA,CAAK,YAAY,CAAA,EAAG;AACtB,kBAAA,IAAA,CAAK,QAAA,GAAW,UAAA;AAChB,kBAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,gBACtC;AACA,gBAAA,IAAA,IAAA,CAAS,IAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,KAAA;AAC3B,gBAAA,KAAA,KAAU,CAAA;AAAA,cACZ;AACF,cAAAE,EAAAA,GAAIH,GAAE,IAAI,CAAA;AACV,cAAA;AAAA,YACF,KAAK,CAAA;AACD,cAAA,IAAA,GAAO,CAAA;AACP,cAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,EAAE,CAAA;AACxB,cAAA,KAAA,GAAM,CAAA;AACN,cAAA,OAAO,SAAO,QAAA,EAAU;AACtB,gBAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,QAAA;AACvB,gBAAA,IAAA,CAAK,QAAA,KAAa,CAAA;AAClB,gBAAA,IAAI,IAAA,CAAK,YAAY,CAAA,EAAG;AACtB,kBAAA,IAAA,CAAK,QAAA,GAAW,UAAA;AAChB,kBAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,gBACtC;AACA,gBAAA,IAAA,IAAA,CAAS,IAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,KAAA;AAC3B,gBAAA,KAAA,KAAU,CAAA;AAAA,cACZ;AACF,cAAAG,EAAAA,GAAIH,GAAE,IAAI,CAAA;AACV,cAAA;AAAA,YACF,KAAK,CAAA;AACH,cAAA,OAAO,EAAA;AAAA;AAEX,UAAA,UAAA,CAAW,CAAC,CAAA,GAAIG,EAAAA;AAChB,UAAAC,EAAAA,GAAID,EAAAA;AACJ,UAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AACb,UAAA,OAAO,IAAA,EAAM;AACX,YAAA,IAAI,IAAA,CAAK,QAAQ,MAAA,EAAQ;AACvB,cAAA,OAAO,EAAA;AAAA,YACT;AAEA,YAAA,IAAA,GAAO,CAAA;AACP,YAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,OAAO,CAAA;AAC7B,YAAA,KAAA,GAAM,CAAA;AACN,YAAA,OAAO,SAAO,QAAA,EAAU;AACtB,cAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,QAAA;AACvB,cAAA,IAAA,CAAK,QAAA,KAAa,CAAA;AAClB,cAAA,IAAI,IAAA,CAAK,YAAY,CAAA,EAAG;AACtB,gBAAA,IAAA,CAAK,QAAA,GAAW,UAAA;AAChB,gBAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,cACtC;AACA,cAAA,IAAA,IAAA,CAAS,IAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,KAAA;AAC3B,cAAA,KAAA,KAAU,CAAA;AAAA,YACZ;AAEA,YAAA,QAAQA,KAAI,IAAA;AAAM,cAChB,KAAK,CAAA;AACH,gBAAA,IAAA,GAAO,CAAA;AACP,gBAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,CAAC,CAAA;AACvB,gBAAA,KAAA,GAAM,CAAA;AACN,gBAAA,OAAO,SAAO,QAAA,EAAU;AACtB,kBAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,QAAA;AACvB,kBAAA,IAAA,CAAK,QAAA,KAAa,CAAA;AAClB,kBAAA,IAAI,IAAA,CAAK,YAAY,CAAA,EAAG;AACtB,oBAAA,IAAA,CAAK,QAAA,GAAW,UAAA;AAChB,oBAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,kBACtC;AACA,kBAAA,IAAA,IAAA,CAAS,IAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,KAAA;AAC3B,kBAAA,KAAA,KAAU,CAAA;AAAA,gBACZ;AAEA,gBAAA,UAAA,CAAW,QAAA,EAAU,CAAA,GAAIH,EAAAA,CAAE,IAAI,CAAA;AAC/B,gBAAAG,KAAI,QAAA,GAAS,CAAA;AACb,gBAAA,SAAA,EAAA;AACA,gBAAA;AAAA,cACF,KAAK,CAAA;AACH,gBAAA,IAAA,GAAO,CAAA;AACP,gBAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,EAAE,CAAA;AACxB,gBAAA,KAAA,GAAM,CAAA;AACN,gBAAA,OAAO,SAAO,QAAA,EAAU;AACtB,kBAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,QAAA;AACvB,kBAAA,IAAA,CAAK,QAAA,KAAa,CAAA;AAClB,kBAAA,IAAI,IAAA,CAAK,YAAY,CAAA,EAAG;AACtB,oBAAA,IAAA,CAAK,QAAA,GAAW,UAAA;AAChB,oBAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,kBACtC;AACA,kBAAA,IAAA,IAAA,CAAS,IAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,KAAA;AAC3B,kBAAA,KAAA,KAAU,CAAA;AAAA,gBACZ;AACA,gBAAA,UAAA,CAAW,QAAA,EAAU,CAAA,GAAIH,EAAAA,CAAE,IAAI,CAAA;AAC/B,gBAAAG,KAAI,QAAA,GAAS,CAAA;AACb,gBAAA,SAAA,EAAA;AACA,gBAAA;AAAA,cACF,KAAK,CAAA;AACH,gBAAA,OAAO,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA;AAGzB,YAAA,IAAI,aAAa,CAAA,EAAG;AAClB,cAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,CAAA;AAC/B,cAAA,OAAA,EAAA;AAAA,YACF;AAEA,YAAA,IAAI,UAAA,CAAWA,EAAC,CAAA,EAAG;AACjB,cAAA,KAAA,GAAQ,WAAWA,EAAC,CAAA;AAAA,YACtB,CAAA,MAAO;AACL,cAAA,IAAIA,OAAM,QAAA,EAAU;AAClB,gBAAA,KAAA,GAAQC,EAAAA,GAAIA,EAAAA,CAAE,MAAA,CAAO,CAAC,CAAA;AAAA,cACxB,CAAA,MAAO;AACL,gBAAA,OAAO,IAAA;AAAA,cACT;AAAA,YACF;AACA,YAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAGjB,YAAA,UAAA,CAAW,QAAA,EAAU,CAAA,GAAIA,EAAAA,GAAI,KAAA,CAAM,OAAO,CAAC,CAAA;AAC3C,YAAA,SAAA,EAAA;AAEA,YAAAA,EAAAA,GAAI,KAAA;AAEJ,YAAA,IAAI,aAAa,CAAA,EAAG;AAClB,cAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,CAAA;AAC/B,cAAA,OAAA,EAAA;AAAA,YACF;AAAA,UAEF;AAAA,QACF;AAAA,OACF;AACE,MAAA,OAAOL,SAAAA;AAAA,IACT,CAAA,GAAG;AAEH,IAAA,IAAI,OAAO,MAAA,KAAW,UAAA,IAAc,MAAA,CAAO,GAAA,EAAK;AAC9C,MAAA,MAAA,CAAO,WAAY;AAAE,QAAA,OAAOA,SAAAA;AAAA,MAAU,CAAC,CAAA;AAAA,IACzC,CAAA,MAAA,IAAW,OAAO,MAAA,KAAW,WAAA,IAAe,UAAU,IAAA,EAAO;AAC3D,MAAA,MAAA,CAAO,OAAA,GAAUA,SAAAA;AAAA,IACnB,CAAA,MAAA,IAAW,OAAO,OAAA,KAAY,WAAA,IAAe,WAAW,IAAA,EAAO;AAC7D,MAAA,OAAA,CAAQ,OAAO,UAAA,EAAY,EAAE,CAAA,CAC5B,OAAA,CAAQ,YAAY,WAAY;AAC/B,QAAA,OAAOA,SAAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvdO,SAAS,cAAcM,EAAAA,EAA6B;AACzD,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,IAAA,CAAKA,EAAC,CAAA;AACpC,EAAA,MAAM,WAAA,GAAc,CAAC,QAAA,CAASA,EAAAA,EAAG,OAAO,CAAA;AACxC,EAAA,OAAO,UAAA,IAAc,WAAA,IAAe,CAAC,CAAC,KAAA,EAAO,OAAO,CAAA,CAAE,QAAA,CAAS,gBAAA,CAAiBA,EAAC,CAAA,IAAK,EAAE,CAAA;AAC1F;AAWO,SAAS,aAAa,EAAA,EAAmC;AAC9D,EAAA,MAAM,MAAM,YAAA,CAAa,UAAA,CAAW,EAAA,EAAI,OAAO,GAAG,IAAI,CAAA;AACtD,EAAA,OAAQ,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,GAAA;AACnC;AAcO,SAAS,eAAA,CAAgB,IAAc,UAAA,EAAgC;AAC5E,EAAA,EAAA,GAAK,aAAa,EAAE,CAAA;AACpB,EAAA,MAAM,GAAA,GAAM,iBAAiB,EAAE,CAAA;AAC/B,EAAA,MAAM,cAAA,GAAiB,GAAG,OAAA,CAAQ,IAAI,OAAO,GAAA,GAAM,GAAG,GAAG,EAAE,CAAA;AAC3D,EAAA,MAAM,QAAA,GAAyB,CAAC,KAAA,EAAO,OAAA,EAAS,MAAS,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,GAAI,EAAA,GAAK,GAAA;AAEhF,EAAA,IAAIC,KAAAA,GAAO,UAAU,cAAc,CAAA;AAEnC,EAAA,IAAI,QAAA,CAASA,KAAAA,EAAM,QAAQ,CAAA,EAAG;AAC5B,IAAAA,KAAAA,GAAOA,KAAAA,CAAK,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA;AACxC,EAAA;AASA,EAAA,MAAM,QAAA,GAAWA,KAAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC/B,EAAA,IAAI,QAAA,CAAS,MAAA,IAAU,CAAA,IAAK,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,KAAM,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,EAAG;AAC3F,IAAA,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,GAAI,OAAA;AAChC,IAAAA,KAAAA,GAAO,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AAC1B,EAAA;AAEA,EAAA,OAAQA,SAAQ,QAAA,IAAY,EAAA,CAAA;AAC9B;AAEO,SAAS,gBAAgB,IAAA,EAAwB;AACtD,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,EAAA;AACT,EAAA;AAEA,EAAA,IAAI,SAAS,IAAA,CACV,MAAA,CAAO,CAAC,OAAA,KAAY,OAAA,KAAY,MAAM,OAAA,KAAY,GAAG,CAAA,CACrD,GAAA,CAAI,CAAC,OAAA,KAAY,YAAA,CAAa,OAAO,CAAC,CAAA,CACtC,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAEjC,EAAA,IAAI,KAAA,EAAO,UAAA,CAAW,GAAG,CAAA,EAAG;AAC1B,IAAA,MAAA,GAAS,GAAA,GAAM,MAAA;AACjB,EAAA;AAEA,EAAA,IAAI,IAAA,EAAM,QAAA,CAAS,GAAG,CAAA,EAAG;AACvB,IAAA,MAAA,GAAS,MAAA,GAAS,GAAA;AACpB,EAAA;AAEA,EAAA,OAAO,MAAA;AACT;AAsBO,SAAS,QAAA,CAASD,IAAW,MAAA,EAAyB;AAC3D,EAAA,OAAOA,EAAAA,KAAM,MAAA,IAAUA,EAAAA,CAAE,QAAA,CAAS,MAAM,MAAM,CAAA;AAChD;AAEO,SAAS,UAAA,CAAWA,IAAW,MAAA,EAAwB;AAC5D,EAAA,IAAI,QAAA,CAASA,EAAAA,EAAG,MAAM,CAAA,EAAG;AACvB,IAAAA,KAAIA,EAAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,OAAO,MAAM,CAAA;AAC/B,EAAA;AACA,EAAA,OAAOA,EAAAA;AACT;AAEO,SAAS,YAAA,CAAaA,IAAW,eAAA,EAAmC;AACzE,EAAA,IAAIA,EAAAA,CAAE,UAAA,CAAW,GAAG,CAAA,EAAG;AACrB,IAAAA,EAAAA,GAAIA,EAAAA,CAAE,SAAA,CAAU,CAAC,CAAA;AACnB,EAAA;AAEA,EAAA,IAAI,CAAC,eAAA,IAAmBA,EAAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AACvC,IAAAA,EAAAA,GAAIA,EAAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACnB,EAAA;AAEA,EAAA,OAAOA,EAAAA;AACT;AAEO,SAAS,iBAAiBA,EAAAA,EAA+B;AAC9D,EAAA,OAAOA,EAAAA,CAAE,KAAA,CAAM,iBAAiB,CAAA,GAAI,CAAC,CAAA;AACvC;AAoBO,SAAS,WAAWC,KAAAA,EAA6B;AACtD,EAAA,IAAI,QAAA,GAAWA,MACZ,KAAA,CAAM,GAAG,EACT,MAAA,CAAO,CAACC,OAAMA,EAAAA,KAAM,EAAE,EACtB,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CACX,GAAA,CAAI,CAACC,EAAAA,KAAM,IAAI,CAAA,CACf,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,QAAA,GAAW,GAAA;AACb,EAAA;AAEA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,eAAA,CAAgB,SAAmB,MAAA,EAA4C;AAC7F,EAAA,MAAM,MAAM,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA,EAAG,YAAA,CAAa,MAAkB,CAAC,CAAA;AAC9E,EAAA,OAAO,GAAA;AACT;AA8FO,SAAS,YAAYH,EAAAA,EAAmB;AAC7C,EAAA,OAAOA,EAAAA,CACJ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA;IAAI,CAAC,OAAA,KACJ,OAAA,CACG,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,CAClB,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,CACrB,OAAA,CAAQ,IAAA,EAAM,UAAU,EACxB,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CACjB,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA,CAChB,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA,CACvB,WAAA;AAAY,GAAA,CAEhB,IAAA,CAAK,GAAG,CAAA,CACR,OAAA,CAAQ,OAAO,EAAE,CAAA;AACtB;AAeO,SAAS,oBAAA,CACd,KAAA,EACA,OAAA,EACA,OAAA,EACG;AACH,EAAA,MAAM,EAAA,GAAK,gBAAgB,KAAK,CAAA;AAChC,EAAA,kBAAA,CAAmB,EAAA,EAAI,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AAC9C,EAAA,kBAAA,CAAmB,EAAA,EAAI,MAAA,EAAQ,OAAA,EAAS,OAAO,CAAA;AAC/C,EAAA,IAAI,GAAG,QAAA,EAAU;AACf,IAAA,EAAA,CAAG,QAAA,GAAW,GAAG,QAAA,CAAS,GAAA;MAAI,CAAC,KAAA,KAC7B,MAAM,IAAA,KAAS,SAAA,GACV,qBAAqB,KAAA,EAAsB,OAAA,EAAS,OAAO,CAAA,GAC5D;AAAA,KAAA;AAER,EAAA;AACA,EAAA,OAAO,EAAA;AACT;AAGA,SAAS,kBAAA,CACP,EAAA,EACA,IAAA,EACA,OAAA,EACA,OAAA,EACM;AACN,EAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,UAAA,GAAa,IAAI,CAAA;AAClC,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAC3C,EAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA;AACzB,EAAA,IAAI,CAAC,aAAA,CAAc,IAAI,CAAA,EAAG;AAC1B,EAAA,EAAA,CAAG,UAAA,CAAY,IAAI,CAAA,GAAI,YAAA,CAAa,gBAAgB,OAAA,EAAS,OAAO,CAAA,EAAG,IAAA,EAAM,IAAI,CAAA;AACnF;AAGA,SAAS,UAAUA,EAAAA,EAAmB;AACpC,EAAA,OAAO,YAAYA,EAAC,CAAA;AACtB;;;ACxWA,IAAA,gBAAA,GAAqB,OAAA,CAAA,iBAAA,EAAA,CAAA;AAGrB,IAAM,iBAAA,GAAoB;AAAA,EACxB,mBAAA,EAAqB,SAAA;AAAA,EACrB,gBAAA,EAAkB,IAAA;AAAA,EAClB,kBAAA,EAAoB;AACtB,CAAA;AAEO,SAAS,eAAA,CAAgB,SAAiB,QAAA,EAAyC;AACxF,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,gBAAgB,CAAA,EAAG;AACvC,IAAA,OAAO,kBAAkB,OAAO,CAAA;AAAA,EAClC;AACA,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,EAAG;AACpC,IAAA,OAAO,oBAAoB,OAAO,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,oBAAoB,OAAA,EAAwC;AAC1E,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAC/B,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,YAAA,EAAc,OAAO,IAAA;AACvC,IAAA,OAAO,cAAc,IAAI,CAAA;AAAA,EAC3B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEO,SAAS,kBAAkB,OAAA,EAAwC;AACxE,EAAA,MAAM,IAAA,GAAO,kBAAkB,OAAO,CAAA;AACtC,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI;AACF,IAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EACxB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,IAAA,KAAS,YAAA,EAAc,OAAO,IAAA;AAEvC,EAAA,MAAM,aAAA,GAAgB,0BAA0B,OAAO,CAAA;AACvD,EAAA,MAAM,UAAA,GAAa,cAAc,IAAI,CAAA;AACrC,EAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AAExB,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,SAAS,CAAA,EAAG;AACzC,IAAA,UAAA,CAAW,aAAA,GAAgB,aAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,kBAAkB,OAAA,EAAgC;AAEzD,EAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,OAAA,CAAQ,WAAW,CAAA;AACpD,EAAA,IAAI,qBAAqB,EAAA,EAAI;AAE3B,IAAA,OAAO,gCAAgC,OAAO,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,gBAAgB,CAAA;AAClD,EAAA,OAAO,+BAAA,CAAgC,WAAW,CAAA,IAAK,oBAAA,CAAqB,WAAW,CAAA;AACzF;AAEA,SAAS,gCAAgC,OAAA,EAAgC;AACvE,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AACrC,EAAA,IAAI,QAAA,KAAa,IAAI,OAAO,IAAA;AAE5B,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA;AACjD,EAAA,MAAM,oBAAA,GAAuB,OAAA,CAAQ,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA;AACzD,EAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,OAAA,CAAQ,IAAI,CAAA;AACnD,EAAA,IAAI,SAAA,KAAc,IAAI,OAAO,IAAA;AAE7B,EAAA,MAAM,QAAQ,oBAAA,CAAqB,KAAA,CAAM,CAAA,EAAG,SAAS,EAAE,IAAA,EAAK;AAC5D,EAAA,OAAO,oBAAA,CAAqB,KAAK,CAAA,IAAK,cAAA,CAAe,KAAK,CAAA;AAC5D;AAEA,SAAS,qBAAqB,KAAA,EAA8B;AAC1D,EAAA,MAAM,oBAAA,GAAuB,KAAA,CAAM,OAAA,CAAQ,oBAAoB,CAAA;AAC/D,EAAA,IAAI,yBAAyB,EAAA,EAAI;AAC/B,IAAA,MAAMI,WAAAA,GAAa,KAAA,CAAM,KAAA,CAAM,oBAAA,GAAuB,qBAAqB,MAAM,CAAA;AACjF,IAAA,MAAMC,SAAAA,GAAWD,WAAAA,CAAW,OAAA,CAAQ,KAAK,CAAA;AACzC,IAAA,IAAIC,SAAAA,KAAa,IAAI,OAAO,IAAA;AAC5B,IAAA,MAAM,iBAAA,GAAoBD,YAAW,KAAA,CAAMA,WAAAA,CAAW,QAAQ,IAAI,CAAA,GAAI,GAAGC,SAAQ,CAAA;AACjF,IAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AACvD,IAAA,MAAM,YAAA,GAAe,gBAAA,CAAAX,OAAAA,CAAS,oBAAA,CAAqB,OAAO,CAAA;AAC1D,IAAA,OAAO,YAAA,IAAgB,IAAA;AAAA,EACzB;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA;AAC1C,EAAA,IAAI,eAAe,EAAA,EAAI;AACrB,IAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AACzC,IAAA,IAAI,aAAA,KAAkB,IAAI,OAAO,IAAA;AACjC,IAAA,MAAMU,WAAAA,GAAa,KAAA,CAAM,KAAA,CAAM,aAAA,GAAgB,CAAC,CAAA;AAChD,IAAA,MAAMC,SAAAA,GAAWD,WAAAA,CAAW,OAAA,CAAQ,KAAK,CAAA;AACzC,IAAA,IAAIC,SAAAA,KAAa,IAAI,OAAO,IAAA;AAC5B,IAAA,OAAOD,WAAAA,CAAW,MAAMA,WAAAA,CAAW,OAAA,CAAQ,IAAI,CAAA,GAAI,CAAA,EAAGC,SAAQ,CAAA,CAAE,IAAA,EAAK;AAAA,EACvE;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAA;AACzC,EAAA,IAAI,QAAA,KAAa,IAAI,OAAO,IAAA;AAC5B,EAAA,OAAO,UAAA,CAAW,MAAM,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA,GAAI,CAAA,EAAG,QAAQ,CAAA,CAAE,IAAA,EAAK;AACvE;AAEA,SAAS,eAAe,KAAA,EAA8B;AAEpD,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,SAAA,CAAU,CAAC,IAAA,KAAS,KAAK,SAAA,EAAU,CAAE,UAAA,CAAW,GAAG,CAAC,CAAA;AAC5E,EAAA,IAAI,SAAA,KAAc,IAAI,OAAO,IAAA;AAG7B,EAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,SAAS,EAAE,IAAA,CAAK,IAAI,EAAE,IAAA,EAAK;AAE3D,EAAA,IAAI,YAAY,UAAA,CAAW,GAAG,KAAK,WAAA,CAAY,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5D,IAAA,OAAO,WAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,0BAA0B,OAAA,EAAyC;AAC1E,EAAA,MAAM,SAAiC,EAAC;AACxC,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,KAAA,CAAM,kCAAkC,CAAA;AACrE,EAAA,IAAI,CAAC,cAAc,OAAO,MAAA;AAC1B,EAAA,MAAM,aAAa,YAAA,CAAa,KAAA;AAEhC,EAAA,MAAM,eAAe,OAAA,CAAQ,KAAA,CAAM,aAAa,YAAA,CAAa,CAAC,EAAE,MAAM,CAAA;AACtE,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA;AACxC,EAAA,MAAM,UAAU,MAAA,KAAW,EAAA,GAAK,eAAe,YAAA,CAAa,KAAA,CAAM,GAAG,MAAM,CAAA;AAE3E,EAAA,MAAM,OAAA,GAAU,qCAAA;AAChB,EAAA,IAAI,KAAA;AACJ,EAAA,OAAA,CAAQ,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,OAAO,OAAO,IAAA,EAAM;AAC/C,IAAA,MAAA,CAAO,KAAA,CAAM,CAAC,CAAE,CAAA,GAAI,MAAM,CAAC,CAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAc,IAAA,EAAsC;AAC3D,EAAA,MAAMC,EAAAA,GAAI,IAAA;AACV,EAAA,IAAI,OAAOA,EAAAA,KAAM,QAAA,IAAYA,EAAAA,KAAM,MAAM,OAAO,IAAA;AAEhD,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQA,EAAAA,CAAE,QAAQ,CAAA,GACpCA,EAAAA,CAAE,QAAA,CAAwC,MAAA,CAAO,CAAC,EAAA,KAAO,CAAC,EAAA,CAAG,SAAS,IACvE,EAAC;AAEL,EAAA,MAAM,QAAA,GACJ,OAAOA,EAAAA,CAAE,QAAA,KAAa,QAAA,IAAYA,GAAE,QAAA,KAAa,IAAA,GAC5CA,EAAAA,CAAE,QAAA,GACH,EAAC;AAEP,EAAA,MAAM,KAAA,GACJ,OAAOA,EAAAA,CAAE,KAAA,KAAU,QAAA,IAAYA,GAAE,KAAA,KAAU,IAAA,GAAQA,EAAAA,CAAE,KAAA,GAAoC,EAAC;AAE5F,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,SAAS,OAAOA,EAAAA,CAAE,OAAA,KAAY,QAAA,GAAWA,GAAE,OAAA,GAAU,CAAA;AAAA,IACrD,QAAQ,OAAOA,EAAAA,CAAE,MAAA,KAAW,QAAA,GAAWA,GAAE,MAAA,GAAS,MAAA;AAAA,IAClD,QAAA;AAAA,IACA,QAAA,EAAU,EAAE,GAAG,iBAAA,EAAmB,GAAG,QAAA,EAAS;AAAA,IAC9C;AAAA,GACF;AACF;;;AC/JO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA;;;ACrBO,IAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWlB,WAAA,CAAY,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO;AACnC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAEhB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,IACf;AAAA,EACF;AACF,CAAA;AAEA,MAAA,CAAO,SAAA,CAAU,SAAS,EAAC;AAC3B,MAAA,CAAO,SAAA,CAAU,WAAW,EAAC;AAC7B,MAAA,CAAO,UAAU,KAAA,GAAQ,MAAA;;;ACdlB,SAAS,KAAA,CAAM,aAAa,KAAA,EAAO;AAExC,EAAA,MAAM,WAAW,EAAC;AAElB,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,IAAA,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,UAAA,CAAW,QAAQ,CAAA;AAC3C,IAAA,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,EACzC;AAEA,EAAA,OAAO,IAAI,MAAA,CAAO,QAAA,EAAU,MAAA,EAAQ,KAAK,CAAA;AAC3C;;;ACjBO,SAAS,UAAU,KAAA,EAAO;AAC/B,EAAA,OAAO,MAAM,WAAA,EAAY;AAC3B;;;ACNO,IAAM,OAAN,MAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,WAAA,CAAY,UAAU,SAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AACF,CAAA;AAEA,IAAA,CAAK,UAAU,SAAA,GAAY,EAAA;AAC3B,IAAA,CAAK,UAAU,UAAA,GAAa,KAAA;AAC5B,IAAA,CAAK,UAAU,OAAA,GAAU,KAAA;AACzB,IAAA,CAAK,UAAU,qBAAA,GAAwB,KAAA;AACvC,IAAA,CAAK,UAAU,cAAA,GAAiB,KAAA;AAChC,IAAA,CAAK,UAAU,OAAA,GAAU,KAAA;AACzB,IAAA,CAAK,UAAU,eAAA,GAAkB,KAAA;AACjC,IAAA,CAAK,UAAU,MAAA,GAAS,KAAA;AACxB,IAAA,CAAK,UAAU,iBAAA,GAAoB,KAAA;AACnC,IAAA,CAAK,UAAU,QAAA,GAAW,EAAA;AAC1B,IAAA,CAAK,UAAU,cAAA,GAAiB,KAAA;AAChC,IAAA,CAAK,UAAU,KAAA,GAAQ,MAAA;;;AC/BvB,IAAA,aAAA,GAAA,EAAA;AAAA,QAAA,CAAA,aAAA,EAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAI,MAAA,GAAS,CAAA;AAEN,IAAM,UAAU,SAAA,EAAU;AAC1B,IAAM,aAAa,SAAA,EAAU;AAC7B,IAAM,oBAAoB,SAAA,EAAU;AACpC,IAAM,SAAS,SAAA,EAAU;AACzB,IAAM,iBAAiB,SAAA,EAAU;AACjC,IAAM,iBAAiB,SAAA,EAAU;AACjC,IAAM,wBAAwB,SAAA,EAAU;AAE/C,SAAS,SAAA,GAAY;AACnB,EAAA,OAAO,KAAK,EAAE,MAAA;AAChB;;;ACLA,IAAM,MAAA;AAAA;AAAA,EACJ,MAAA,CAAO,KAAK,aAAK;AAAA,CAAA;AAGZ,IAAM,WAAA,GAAN,cAA0B,IAAA,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcpC,WAAA,CAAY,QAAA,EAAU,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO;AAC5C,IAAA,IAAI,KAAA,GAAQ,EAAA;AAEZ,IAAA,KAAA,CAAM,UAAU,SAAS,CAAA;AAEzB,IAAA,IAAA,CAAK,IAAA,EAAM,SAAS,KAAK,CAAA;AAEzB,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,OAAO,EAAE,KAAA,GAAQ,MAAA,CAAO,MAAA,EAAQ;AAC9B,QAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,QAAA,IAAA,CAAK,IAAA,EAAM,MAAA,CAAO,KAAK,CAAA,EAAA,CAAI,IAAA,GAAO,cAAM,KAAK,CAAA,MAAO,aAAA,CAAM,KAAK,CAAC,CAAA;AAAA,MAClE;AAAA,IACF;AAAA,EACF;AACF,CAAA;AAEA,WAAA,CAAY,UAAU,OAAA,GAAU,IAAA;AAchC,SAAS,IAAA,CAAK,MAAA,EAAQC,IAAAA,EAAK,KAAA,EAAO;AAChC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAA,CAAOA,IAAG,CAAA,GAAI,KAAA;AAAA,EAChB;AACF;;;ACnBO,SAAS,OAAO,UAAA,EAAY;AAEjC,EAAA,MAAM,aAAa,EAAC;AAEpB,EAAA,MAAM,UAAU,EAAC;AAEjB,EAAA,KAAA,MAAW,CAAC,UAAU,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,UAAA,CAAW,UAAU,CAAA,EAAG;AACrE,IAAA,MAAM,OAAO,IAAI,WAAA;AAAA,MACf,QAAA;AAAA,MACA,WAAW,SAAA,CAAU,UAAA,CAAW,UAAA,IAAc,IAAI,QAAQ,CAAA;AAAA,MAC1D,KAAA;AAAA,MACA,UAAA,CAAW;AAAA,KACb;AAEA,IAAA,IACE,WAAW,eAAA,IACX,UAAA,CAAW,eAAA,CAAgB,QAAA,CAAS,QAAQ,CAAA,EAC5C;AACA,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAAA,IACzB;AAEA,IAAA,UAAA,CAAW,QAAQ,CAAA,GAAI,IAAA;AAEvB,IAAA,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAC,CAAA,GAAI,QAAA;AAC/B,IAAA,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,SAAS,CAAC,CAAA,GAAI,QAAA;AAAA,EACvC;AAEA,EAAA,OAAO,IAAI,MAAA,CAAO,UAAA,EAAY,OAAA,EAAS,WAAW,KAAK,CAAA;AACzD;;;ACjEO,IAAM,OAAO,MAAA,CAAO;AAAA,EACzB,UAAA,EAAY;AAAA,IACV,oBAAA,EAAsB,IAAA;AAAA,IACtB,UAAA,EAAY,UAAA;AAAA,IACZ,gBAAA,EAAkB,IAAA;AAAA,IAClB,QAAA,EAAU,UAAA;AAAA,IACV,WAAA,EAAa,UAAA;AAAA,IACb,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc,MAAA;AAAA,IACd,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,IAAA;AAAA,IACb,eAAA,EAAiB,cAAA;AAAA,IACjB,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,UAAA;AAAA,IACd,cAAA,EAAgB,cAAA;AAAA,IAChB,gBAAA,EAAkB,IAAA;AAAA,IAClB,YAAA,EAAc,UAAA;AAAA,IACd,UAAA,EAAY,cAAA;AAAA,IACZ,WAAA,EAAa,UAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,UAAA,EAAY,UAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,gBAAA,EAAkB,IAAA;AAAA,IAClB,SAAA,EAAW,IAAA;AAAA,IACX,cAAA,EAAgB,cAAA;AAAA,IAChB,SAAA,EAAW,MAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,UAAA;AAAA,IACX,aAAA,EAAe,UAAA;AAAA,IACf,mBAAA,EAAqB,UAAA;AAAA,IACrB,eAAA,EAAiB,IAAA;AAAA,IACjB,QAAA,EAAU,cAAA;AAAA,IACV,eAAA,EAAiB,IAAA;AAAA,IACjB,YAAA,EAAc,MAAA;AAAA,IACd,WAAA,EAAa,UAAA;AAAA,IACb,YAAA,EAAc,UAAA;AAAA,IACd,YAAA,EAAc,IAAA;AAAA,IACd,YAAA,EAAc,UAAA;AAAA,IACd,mBAAA,EAAqB,cAAA;AAAA,IACrB,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc,MAAA;AAAA,IACd,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,UAAA;AAAA,IACd,WAAA,EAAa,MAAA;AAAA,IACb,QAAA,EAAU,IAAA;AAAA,IACV,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc,MAAA;AAAA,IACd,aAAA,EAAe,IAAA;AAAA,IACf,IAAA,EAAM;AAAA,GACR;AAAA,EACA,SAAA,CAAUJ,IAAG,QAAA,EAAU;AACrB,IAAA,OAAO,QAAA,KAAa,SAChB,QAAA,GACA,OAAA,GAAU,SAAS,KAAA,CAAM,CAAC,EAAE,WAAA,EAAY;AAAA,EAC9C;AACF,CAAC,CAAA;;;ACpDM,SAAS,sBAAA,CAAuB,YAAY,SAAA,EAAW;AAC5D,EAAA,OAAO,SAAA,IAAa,UAAA,GAAa,UAAA,CAAW,SAAS,CAAA,GAAI,SAAA;AAC3D;;;ACAO,SAAS,wBAAA,CAAyB,YAAY,QAAA,EAAU;AAC7D,EAAA,OAAO,sBAAA,CAAuB,UAAA,EAAY,QAAA,CAAS,WAAA,EAAa,CAAA;AAClE;;;ACDO,IAAM,OAAO,MAAA,CAAO;AAAA,EACzB,UAAA,EAAY;AAAA,IACV,aAAA,EAAe,gBAAA;AAAA,IACf,SAAA,EAAW,OAAA;AAAA,IACX,OAAA,EAAS,KAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,eAAA,EAAiB,CAAC,SAAA,EAAW,UAAA,EAAY,SAAS,UAAU,CAAA;AAAA,EAC5D,UAAA,EAAY;AAAA;AAAA,IAEV,IAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAQ,cAAA;AAAA,IACR,aAAA,EAAe,cAAA;AAAA,IACf,SAAA,EAAW,cAAA;AAAA,IACX,MAAA,EAAQ,IAAA;AAAA,IACR,KAAA,EAAO,IAAA;AAAA,IACP,eAAA,EAAiB,OAAA;AAAA,IACjB,mBAAA,EAAqB,OAAA;AAAA,IACrB,cAAA,EAAgB,OAAA;AAAA,IAChB,KAAA,EAAO,OAAA;AAAA,IACP,GAAA,EAAK,IAAA;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,OAAA;AAAA,IACP,cAAA,EAAgB,IAAA;AAAA,IAChB,YAAA,EAAc,cAAA;AAAA,IACd,SAAA,EAAW,OAAA;AAAA,IACX,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,cAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,OAAA;AAAA,IACT,IAAA,EAAM,IAAA;AAAA,IACN,SAAA,EAAW,cAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,eAAA,EAAiB,UAAA;AAAA,IACjB,QAAA,EAAU,OAAA;AAAA,IACV,YAAA,EAAc,cAAA;AAAA,IACd,QAAQ,MAAA,GAAS,cAAA;AAAA,IACjB,WAAA,EAAa,IAAA;AAAA,IACb,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,OAAA;AAAA,IACP,GAAA,EAAK,IAAA;AAAA,IACL,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,iBAAA;AAAA,IACV,SAAA,EAAW,UAAA;AAAA,IACX,OAAA,EAAS,IAAA;AAAA,IACT,YAAA,EAAc,IAAA;AAAA,IACd,aAAA,EAAe,IAAA;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,OAAA;AAAA,IAChB,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,cAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,iBAAA;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,cAAA;AAAA,IACT,SAAA,EAAW,cAAA;AAAA,IACX,EAAA,EAAI,IAAA;AAAA,IACJ,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,KAAA,EAAO,OAAA;AAAA,IACP,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,OAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,cAAA;AAAA,IACV,OAAA,EAAS,cAAA;AAAA,IACT,SAAA,EAAW,OAAA;AAAA,IACX,QAAA,EAAU,cAAA;AAAA,IACV,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA,IACV,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,IAAA,EAAM,OAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,QAAA,EAAU,IAAA;AAAA,IACV,GAAA,EAAK,IAAA;AAAA,IACL,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,GAAA,EAAK,IAAA;AAAA,IACL,SAAA,EAAW,MAAA;AAAA,IACX,QAAA,EAAU,OAAA;AAAA,IACV,KAAA,EAAO,OAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,UAAA,EAAY,OAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,YAAA,EAAc,IAAA;AAAA,IACd,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,IAAA;AAAA,IACf,cAAA,EAAgB,IAAA;AAAA,IAChB,cAAA,EAAgB,IAAA;AAAA,IAChB,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,gBAAA,EAAkB,IAAA;AAAA,IAClB,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,IAAA;AAAA,IACf,iBAAA,EAAmB,IAAA;AAAA,IACnB,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,IAAA;AAAA,IACb,KAAA,EAAO,IAAA;AAAA,IACP,UAAA,EAAY,IAAA;AAAA,IACZ,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,gBAAA,EAAkB,IAAA;AAAA,IAClB,SAAA,EAAW,IAAA;AAAA,IACX,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,IAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,gBAAA,EAAkB,IAAA;AAAA,IAClB,MAAA,EAAQ,IAAA;AAAA,IACR,YAAA,EAAc,IAAA;AAAA,IACd,gBAAA,EAAkB,IAAA;AAAA,IAClB,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,YAAA,EAAc,IAAA;AAAA,IACd,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,kBAAA,EAAoB,IAAA;AAAA,IACpB,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA,IACV,WAAA,EAAa,IAAA;AAAA,IACb,yBAAA,EAA2B,IAAA;AAAA,IAC3B,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,IAAA;AAAA,IACV,oBAAA,EAAsB,IAAA;AAAA,IACtB,QAAA,EAAU,IAAA;AAAA,IACV,cAAA,EAAgB,IAAA;AAAA,IAChB,SAAA,EAAW,IAAA;AAAA,IACX,OAAA,EAAS,IAAA;AAAA,IACT,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,WAAA,EAAa,IAAA;AAAA,IACb,WAAA,EAAa,OAAA;AAAA,IACb,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,mBAAA,EAAqB,IAAA;AAAA,IACrB,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,OAAA;AAAA,IACV,cAAA,EAAgB,IAAA;AAAA,IAChB,GAAA,EAAK,cAAA;AAAA,IACL,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS,cAAA;AAAA,IACT,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,OAAA;AAAA,IACR,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,OAAA;AAAA,IACV,kBAAA,EAAoB,OAAA;AAAA,IACpB,+BAAA,EAAiC,OAAA;AAAA,IACjC,wBAAA,EAA0B,OAAA;AAAA,IAC1B,cAAA,EAAgB,IAAA;AAAA,IAChB,sBAAA,EAAwB,OAAA;AAAA,IACxB,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,UAAA,EAAY,UAAA;AAAA,IACZ,GAAA,EAAK,IAAA;AAAA,IACL,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,KAAA,EAAO,MAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,QAAA,EAAU,MAAA;AAAA,IACV,MAAA,EAAQ,IAAA;AAAA,IACR,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW,IAAA;AAAA,IACX,IAAA,EAAM,IAAA;AAAA,IACN,aAAA,EAAe,OAAA;AAAA,IACf,MAAA,EAAQ,IAAA;AAAA,IACR,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,kBAAA,EAAoB,IAAA;AAAA;AAAA;AAAA,IAIpB,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,OAAA,EAAS,cAAA;AAAA;AAAA,IACT,IAAA,EAAM,IAAA;AAAA;AAAA,IACN,UAAA,EAAY,IAAA;AAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA;AAAA,IACR,WAAA,EAAa,IAAA;AAAA;AAAA,IACb,YAAA,EAAc,MAAA;AAAA;AAAA,IACd,WAAA,EAAa,IAAA;AAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA;AAAA,IACb,IAAA,EAAM,IAAA;AAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA;AAAA,IACV,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,OAAA,EAAS,OAAA;AAAA;AAAA,IACT,OAAA,EAAS,OAAA;AAAA;AAAA,IACT,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,WAAA,EAAa,IAAA;AAAA;AAAA,IACb,MAAA,EAAQ,MAAA;AAAA;AAAA,IACR,UAAA,EAAY,MAAA;AAAA;AAAA,IACZ,IAAA,EAAM,IAAA;AAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA;AAAA,IACV,MAAA,EAAQ,IAAA;AAAA;AAAA,IACR,YAAA,EAAc,MAAA;AAAA;AAAA,IACd,WAAA,EAAa,MAAA;AAAA;AAAA,IACb,QAAA,EAAU,OAAA;AAAA;AAAA,IACV,MAAA,EAAQ,OAAA;AAAA;AAAA,IACR,OAAA,EAAS,OAAA;AAAA;AAAA,IACT,MAAA,EAAQ,OAAA;AAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA;AAAA,IACR,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA;AAAA,IACR,GAAA,EAAK,IAAA;AAAA;AAAA,IACL,WAAA,EAAa,MAAA;AAAA;AAAA,IACb,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA;AAAA,IACR,SAAA,EAAW,UAAA;AAAA;AAAA,IACX,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,IAAA,EAAM,IAAA;AAAA;AAAA,IACN,SAAA,EAAW,MAAA;AAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA;AAAA,IACX,OAAA,EAAS,IAAA;AAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA;AAAA,IACR,KAAA,EAAO,IAAA;AAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA;AAAA;AAAA,IAGR,iBAAA,EAAmB,IAAA;AAAA,IACnB,WAAA,EAAa,IAAA;AAAA,IACb,QAAA,EAAU,IAAA;AAAA,IACV,cAAA,EAAgB,OAAA;AAAA,IAChB,uBAAA,EAAyB,OAAA;AAAA,IACzB,qBAAA,EAAuB,OAAA;AAAA,IACvB,WAAA,EAAa,cAAA;AAAA,IACb,IAAA,EAAM,cAAA;AAAA,IACN,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO,MAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAC,CAAA;;;ACjUM,IAAM,MAAM,MAAA,CAAO;AAAA,EACxB,UAAA,EAAY;AAAA,IACV,YAAA,EAAc,eAAA;AAAA,IACd,iBAAA,EAAmB,oBAAA;AAAA,IACnB,UAAA,EAAY,aAAA;AAAA,IACZ,aAAA,EAAe,gBAAA;AAAA,IACf,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,OAAA;AAAA,IACX,QAAA,EAAU,WAAA;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,kBAAA,EAAoB,qBAAA;AAAA,IACpB,yBAAA,EAA2B,6BAAA;AAAA,IAC3B,YAAA,EAAc,eAAA;AAAA,IACd,cAAA,EAAgB,iBAAA;AAAA,IAChB,WAAA,EAAa,aAAA;AAAA,IACb,QAAA,EAAU,UAAA;AAAA,IACV,gBAAA,EAAkB,mBAAA;AAAA,IAClB,gBAAA,EAAkB,mBAAA;AAAA,IAClB,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,WAAA;AAAA,IACV,UAAA,EAAY,aAAA;AAAA,IACZ,YAAA,EAAc,eAAA;AAAA,IACd,UAAA,EAAY,aAAA;AAAA,IACZ,QAAA,EAAU,WAAA;AAAA,IACV,cAAA,EAAgB,kBAAA;AAAA,IAChB,WAAA,EAAa,cAAA;AAAA,IACb,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa,cAAA;AAAA,IACb,UAAA,EAAY,aAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,0BAAA,EAA4B,8BAAA;AAAA,IAC5B,wBAAA,EAA0B,4BAAA;AAAA,IAC1B,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,aAAA;AAAA,IACX,YAAA,EAAc,gBAAA;AAAA,IACd,YAAA,EAAc,gBAAA;AAAA,IACd,cAAA,EAAgB,iBAAA;AAAA,IAChB,aAAA,EAAe,gBAAA;AAAA,IACf,aAAA,EAAe,gBAAA;AAAA,IACf,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,WAAA;AAAA,IACV,OAAA,EAAS,UAAA;AAAA,IACT,WAAA,EAAa,eAAA;AAAA,IACb,YAAA,EAAc,gBAAA;AAAA,IACd,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,UAAA;AAAA,IACT,QAAA,EAAU,WAAA;AAAA,IACV,KAAA,EAAO,QAAA;AAAA,IACP,SAAA,EAAW,aAAA;AAAA,IACX,UAAA,EAAY,cAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,aAAA,EAAe,eAAA;AAAA,IACf,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,WAAA;AAAA,IACX,gBAAA,EAAkB,kBAAA;AAAA,IAClB,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,QAAA;AAAA,IACR,WAAA,EAAa,aAAA;AAAA,IACb,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY,YAAA;AAAA,IACZ,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,WAAA;AAAA,IACX,WAAA,EAAa,aAAA;AAAA,IACb,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,MAAA,EAAQ,QAAA;AAAA,IACR,gBAAA,EAAkB,kBAAA;AAAA,IAClB,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,OAAA;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,WAAA;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,WAAA;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,QAAA;AAAA,IACR,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAA;AAAA,IAClB,WAAA,EAAa,aAAA;AAAA,IACb,SAAA,EAAW,WAAA;AAAA,IACX,WAAA,EAAa,aAAA;AAAA,IACb,YAAA,EAAc,cAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,aAAA;AAAA,IACb,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,SAAA,EAAW,WAAA;AAAA,IACX,YAAA,EAAc,cAAA;AAAA,IACd,SAAA,EAAW,WAAA;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,WAAA;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,WAAA;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,WAAA;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,WAAA;AAAA,IACX,YAAA,EAAc,cAAA;AAAA,IACd,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,cAAA,EAAgB,gBAAA;AAAA,IAChB,SAAA,EAAW,WAAA;AAAA,IACX,MAAA,EAAQ,QAAA;AAAA,IACR,gBAAA,EAAkB,mBAAA;AAAA,IAClB,iBAAA,EAAmB,oBAAA;AAAA,IACnB,UAAA,EAAY,aAAA;AAAA,IACZ,OAAA,EAAS,UAAA;AAAA,IACT,aAAA,EAAe,gBAAA;AAAA,IACf,cAAA,EAAgB,gBAAA;AAAA,IAChB,eAAA,EAAiB,kBAAA;AAAA,IACjB,cAAA,EAAgB,iBAAA;AAAA,IAChB,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa,cAAA;AAAA,IACb,qBAAA,EAAuB,wBAAA;AAAA,IACvB,sBAAA,EAAwB,yBAAA;AAAA,IACxB,eAAA,EAAiB,kBAAA;AAAA,IACjB,gBAAA,EAAkB,mBAAA;AAAA,IAClB,aAAA,EAAe,gBAAA;AAAA,IACf,cAAA,EAAgB,iBAAA;AAAA,IAChB,gBAAA,EAAkB,mBAAA;AAAA,IAClB,aAAA,EAAe,gBAAA;AAAA,IACf,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,aAAA;AAAA,IACZ,cAAA,EAAgB,iBAAA;AAAA,IAChB,aAAA,EAAe,gBAAA;AAAA,IACf,eAAA,EAAiB,kBAAA;AAAA,IACjB,MAAA,EAAQ,QAAA;AAAA,IACR,iBAAA,EAAmB,oBAAA;AAAA,IACnB,kBAAA,EAAoB,qBAAA;AAAA,IACpB,WAAA,EAAa,cAAA;AAAA,IACb,YAAA,EAAc,eAAA;AAAA,IACd,UAAA,EAAY,cAAA;AAAA,IACZ,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,WAAA;AAAA,IACV,YAAA,EAAc,eAAA;AAAA,IACd,aAAA,EAAe,gBAAA;AAAA,IACf,YAAA,EAAc,eAAA;AAAA,IACd,QAAA,EAAU,YAAA;AAAA,IACV,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,OAAA,EAAS,UAAA;AAAA;AAAA,IAET,aAAA,EAAe,eAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,qBAAA;AAAA,IACP,YAAA,EAAc,MAAA;AAAA,IACd,UAAA,EAAY,IAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,MAAA,EAAQ,MAAA;AAAA,IACR,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,IAAA;AAAA,IACf,OAAA,EAAS,MAAA;AAAA,IACT,SAAA,EAAW,IAAA;AAAA,IACX,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,IAAA;AAAA,IACf,WAAA,EAAa,IAAA;AAAA,IACb,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,EAAA,EAAI,IAAA;AAAA,IACJ,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,cAAA;AAAA,IACX,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA,IACV,aAAA,EAAe,IAAA;AAAA,IACf,QAAA,EAAU,IAAA;AAAA,IACV,KAAA,EAAO,IAAA;AAAA,IACP,kBAAA,EAAoB,IAAA;AAAA,IACpB,yBAAA,EAA2B,IAAA;AAAA,IAC3B,YAAA,EAAc,IAAA;AAAA,IACd,cAAA,EAAgB,IAAA;AAAA,IAChB,OAAA,EAAS,IAAA;AAAA,IACT,iBAAA,EAAmB,IAAA;AAAA,IACnB,gBAAA,EAAkB,IAAA;AAAA,IAClB,WAAA,EAAa,IAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,CAAA,EAAG,IAAA;AAAA,IACH,QAAA,EAAU,IAAA;AAAA,IACV,aAAA,EAAe,IAAA;AAAA,IACf,OAAA,EAAS,MAAA;AAAA,IACT,eAAA,EAAiB,MAAA;AAAA,IACjB,SAAA,EAAW,IAAA;AAAA,IACX,OAAA,EAAS,IAAA;AAAA,IACT,GAAA,EAAK,IAAA;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,gBAAA,EAAkB,IAAA;AAAA,IAClB,QAAA,EAAU,OAAA;AAAA,IACV,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,MAAA;AAAA,IACX,gBAAA,EAAkB,IAAA;AAAA,IAClB,GAAA,EAAK,IAAA;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,QAAA,EAAU,MAAA;AAAA,IACV,yBAAA,EAA2B,IAAA;AAAA,IAC3B,IAAA,EAAM,IAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,QAAA,EAAU,IAAA;AAAA,IACV,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW,IAAA;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,UAAA,EAAY,IAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA,IACV,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,MAAA,EAAQ,IAAA;AAAA,IACR,EAAA,EAAI,IAAA;AAAA,IACJ,IAAA,EAAM,IAAA;AAAA,IACN,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,cAAA;AAAA,IACJ,EAAA,EAAI,cAAA;AAAA,IACJ,SAAA,EAAW,cAAA;AAAA,IACX,0BAAA,EAA4B,IAAA;AAAA,IAC5B,wBAAA,EAA0B,IAAA;AAAA,IAC1B,QAAA,EAAU,IAAA;AAAA,IACV,iBAAA,EAAmB,IAAA;AAAA,IACnB,aAAA,EAAe,IAAA;AAAA,IACf,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,iBAAA,EAAmB,IAAA;AAAA,IACnB,UAAA,EAAY,IAAA;AAAA,IACZ,MAAA,EAAQ,IAAA;AAAA,IACR,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,MAAA;AAAA,IACX,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc,MAAA;AAAA,IACd,EAAA,EAAI,IAAA;AAAA,IACJ,WAAA,EAAa,MAAA;AAAA,IACb,cAAA,EAAgB,IAAA;AAAA,IAChB,iBAAA,EAAmB,IAAA;AAAA,IACnB,EAAA,EAAI,IAAA;AAAA,IACJ,GAAA,EAAK,IAAA;AAAA,IACL,SAAA,EAAW,MAAA;AAAA,IACX,CAAA,EAAG,MAAA;AAAA,IACH,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,YAAA,EAAc,qBAAA;AAAA,IACd,gBAAA,EAAkB,IAAA;AAAA,IAClB,SAAA,EAAW,IAAA;AAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,IAAA,EAAM,IAAA;AAAA,IACN,YAAA,EAAc,IAAA;AAAA,IACd,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,IAAA;AAAA,IACf,iBAAA,EAAmB,MAAA;AAAA,IACnB,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,WAAA,EAAa,IAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,IAAA,EAAM,IAAA;AAAA,IACN,gBAAA,EAAkB,IAAA;AAAA,IAClB,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,YAAA,EAAc,IAAA;AAAA,IACd,GAAA,EAAK,IAAA;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,sBAAA,EAAwB,IAAA;AAAA,IACxB,qBAAA,EAAuB,IAAA;AAAA,IACvB,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,MAAA,EAAQ,IAAA;AAAA,IACR,GAAA,EAAK,IAAA;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA,IACV,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,IAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,aAAA,EAAe,IAAA;AAAA,IACf,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,gBAAA,EAAkB,IAAA;AAAA,IAClB,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,IAAA;AAAA,IACb,KAAA,EAAO,IAAA;AAAA,IACP,UAAA,EAAY,IAAA;AAAA,IACZ,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,gBAAA,EAAkB,IAAA;AAAA,IAClB,SAAA,EAAW,IAAA;AAAA,IACX,KAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,YAAA,EAAc,IAAA;AAAA,IACd,gBAAA,EAAkB,IAAA;AAAA,IAClB,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,YAAA,EAAc,IAAA;AAAA,IACd,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,IAAA;AAAA,IACZ,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,IAAA;AAAA,IACX,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,IAAA;AAAA,IACV,cAAA,EAAgB,IAAA;AAAA,IAChB,SAAA,EAAW,IAAA;AAAA,IACX,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,IAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,gBAAA,EAAkB,MAAA;AAAA,IAClB,iBAAA,EAAmB,MAAA;AAAA,IACnB,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,IAAA;AAAA,IACT,IAAA,EAAM,IAAA;AAAA,IACN,UAAA,EAAY,MAAA;AAAA,IACZ,mBAAA,EAAqB,IAAA;AAAA,IACrB,gBAAA,EAAkB,IAAA;AAAA,IAClB,YAAA,EAAc,IAAA;AAAA,IACd,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,IAAA;AAAA,IACf,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,MAAA;AAAA,IACX,aAAA,EAAe,IAAA;AAAA,IACf,mBAAA,EAAqB,IAAA;AAAA,IACrB,cAAA,EAAgB,IAAA;AAAA,IAChB,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU,qBAAA;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,MAAA,EAAQ,IAAA;AAAA,IACR,cAAA,EAAgB,IAAA;AAAA,IAChB,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,GAAA,EAAK,qBAAA;AAAA,IACL,GAAA,EAAK,qBAAA;AAAA,IACL,eAAA,EAAiB,IAAA;AAAA,IACjB,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,kBAAA,EAAoB,qBAAA;AAAA,IACpB,gBAAA,EAAkB,qBAAA;AAAA,IAClB,aAAA,EAAe,qBAAA;AAAA,IACf,eAAA,EAAiB,qBAAA;AAAA,IACjB,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,cAAA,EAAgB,IAAA;AAAA,IAChB,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,YAAA,EAAc,IAAA;AAAA,IACd,gBAAA,EAAkB,MAAA;AAAA,IAClB,gBAAA,EAAkB,MAAA;AAAA,IAClB,YAAA,EAAc,IAAA;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,IAAA;AAAA,IACP,WAAA,EAAa,IAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,qBAAA,EAAuB,MAAA;AAAA,IACvB,sBAAA,EAAwB,MAAA;AAAA,IACxB,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,eAAA,EAAiB,qBAAA;AAAA,IACjB,gBAAA,EAAkB,IAAA;AAAA,IAClB,aAAA,EAAe,IAAA;AAAA,IACf,cAAA,EAAgB,IAAA;AAAA,IAChB,gBAAA,EAAkB,MAAA;AAAA,IAClB,aAAA,EAAe,MAAA;AAAA,IACf,WAAA,EAAa,IAAA;AAAA,IACb,KAAA,EAAO,IAAA;AAAA,IACP,YAAA,EAAc,MAAA;AAAA,IACd,YAAA,EAAc,IAAA;AAAA,IACd,mBAAA,EAAqB,IAAA;AAAA,IACrB,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe,IAAA;AAAA,IACf,oBAAA,EAAsB,IAAA;AAAA,IACtB,cAAA,EAAgB,qBAAA;AAAA,IAChB,QAAA,EAAU,MAAA;AAAA,IACV,WAAA,EAAa,IAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,IAAA;AAAA,IACZ,cAAA,EAAgB,IAAA;AAAA,IAChB,aAAA,EAAe,IAAA;AAAA,IACf,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe,IAAA;AAAA,IACf,KAAA,EAAO,IAAA;AAAA,IACP,iBAAA,EAAmB,IAAA;AAAA,IACnB,IAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAQ,qBAAA;AAAA,IACR,EAAA,EAAI,IAAA;AAAA,IACJ,SAAA,EAAW,IAAA;AAAA,IACX,eAAA,EAAiB,IAAA;AAAA,IACjB,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,iBAAA,EAAmB,MAAA;AAAA,IACnB,kBAAA,EAAoB,MAAA;AAAA,IACpB,OAAA,EAAS,IAAA;AAAA,IACT,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,UAAA,EAAY,MAAA;AAAA,IACZ,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,MAAA;AAAA,IACb,aAAA,EAAe,MAAA;AAAA,IACf,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,MAAA;AAAA,IACV,YAAA,EAAc,MAAA;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,MAAA;AAAA,IACV,WAAA,EAAa,MAAA;AAAA,IACb,WAAA,EAAa,MAAA;AAAA,IACb,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,IAAA;AAAA,IACb,WAAA,EAAa,IAAA;AAAA,IACb,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,gBAAA,EAAkB,IAAA;AAAA,IAClB,OAAA,EAAS,MAAA;AAAA,IACT,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,gBAAA,EAAkB,IAAA;AAAA,IAClB,CAAA,EAAG,IAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO,KAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAC,CAAA;;;ACtjBM,IAAM,QAAQ,MAAA,CAAO;AAAA,EAC1B,UAAA,EAAY;AAAA,IACV,YAAA,EAAc,IAAA;AAAA,IACd,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO,OAAA;AAAA,EACP,SAAA,CAAUA,IAAG,QAAA,EAAU;AACrB,IAAA,OAAO,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,CAAC,EAAE,WAAA,EAAY;AAAA,EAClD;AACF,CAAC,CAAA;;;ACbM,IAAM,QAAQ,MAAA,CAAO;AAAA,EAC1B,UAAA,EAAY,EAAC,UAAA,EAAY,aAAA,EAAa;AAAA,EACtC,UAAA,EAAY,EAAC,UAAA,EAAY,IAAA,EAAM,OAAO,IAAA,EAAI;AAAA,EAC1C,KAAA,EAAO,OAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAC,CAAA;;;ACNM,IAAM,MAAM,MAAA,CAAO;AAAA,EACxB,YAAY,EAAC,OAAA,EAAS,MAAM,OAAA,EAAS,IAAA,EAAM,UAAU,IAAA,EAAI;AAAA,EACzD,KAAA,EAAO,KAAA;AAAA,EACP,SAAA,CAAUA,IAAG,QAAA,EAAU;AACrB,IAAA,OAAO,MAAA,GAAS,QAAA,CAAS,KAAA,CAAM,CAAC,EAAE,WAAA,EAAY;AAAA,EAChD;AACF,CAAC,CAAA;;;ACAD,IAAM,GAAA,GAAM,QAAA;AACZ,IAAM,IAAA,GAAO,SAAA;AACb,IAAM,KAAA,GAAQ,iBAAA;AAgCP,SAAS,IAAA,CAAK,QAAQ,KAAA,EAAO;AAClC,EAAA,MAAM,MAAA,GAAS,UAAU,KAAK,CAAA;AAC9B,EAAA,IAAI,QAAA,GAAW,KAAA;AACf,EAAA,IAAI,IAAA,GAAO,IAAA;AAEX,EAAA,IAAI,MAAA,IAAU,OAAO,MAAA,EAAQ;AAC3B,IAAA,OAAO,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EAC9C;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,KAAM,MAAA,IAAU,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,EAAG;AAE3E,IAAA,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AAE3B,MAAA,MAAM,OAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,SAAS,CAAA;AACnD,MAAA,QAAA,GAAW,MAAA,GAAS,KAAK,MAAA,CAAO,CAAC,EAAE,WAAA,EAAY,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAAA,IACjE,CAAA,MAAO;AAEL,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAE1B,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACpB,QAAA,IAAI,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK,KAAK,CAAA;AAEpC,QAAA,IAAI,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AAC5B,UAAA,MAAA,GAAS,GAAA,GAAM,MAAA;AAAA,QACjB;AAEA,QAAA,KAAA,GAAQ,MAAA,GAAS,MAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,IAAA,GAAO,WAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAI,IAAA,CAAK,QAAA,EAAU,KAAK,CAAA;AACjC;AAQA,SAAS,MAAM,EAAA,EAAI;AACjB,EAAA,OAAO,GAAA,GAAM,GAAG,WAAA,EAAY;AAC9B;AAQA,SAAS,UAAU,EAAA,EAAI;AACrB,EAAA,OAAO,EAAA,CAAG,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY;AAClC;;;ACrFO,IAAMK,KAAAA,GAAO,MAAM,CAAC,IAAA,EAAM,MAAU,KAAA,EAAO,KAAA,EAAO,GAAG,CAAA,EAAG,MAAM,CAAA;AAK9D,IAAMC,IAAAA,GAAM,MAAM,CAAC,IAAA,EAAM,KAAS,KAAA,EAAO,KAAA,EAAO,GAAG,CAAA,EAAG,KAAK,CAAA;;;ACiClE,IAAMC,IAAAA,GAAM,EAAC,CAAE,cAAA;AAcR,SAAS,MAAA,CAAOH,MAAK,OAAA,EAAS;AACnC,EAAA,MAAM,QAAA,GAAW,WAAW,EAAC;AA8B7B,EAAA,SAASI,IAAAA,CAAI,UAAU,UAAA,EAAY;AAEjC,IAAA,IAAI,KAAKA,IAAAA,CAAI,OAAA;AACb,IAAA,MAAM,WAAWA,IAAAA,CAAI,QAAA;AAErB,IAAA,IAAI,KAAA,IAASD,IAAAA,CAAI,IAAA,CAAK,KAAA,EAAOH,IAAG,CAAA,EAAG;AAEjC,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,KAAA,CAAMA,IAAG,CAAC,CAAA;AAE5B,MAAA,EAAA,GAAKG,IAAAA,CAAI,KAAK,QAAA,EAAU,EAAE,IAAI,QAAA,CAAS,EAAE,IAAIC,IAAAA,CAAI,OAAA;AAAA,IACnD;AAEA,IAAA,IAAI,EAAA,EAAI;AACN,MAAA,OAAO,EAAA,CAAG,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,GAAG,UAAU,CAAA;AAAA,IAC3C;AAAA,EACF;AAEA,EAAAA,IAAAA,CAAI,QAAA,GAAW,QAAA,CAAS,QAAA,IAAY,EAAC;AACrC,EAAAA,IAAAA,CAAI,UAAU,QAAA,CAAS,OAAA;AACvB,EAAAA,IAAAA,CAAI,UAAU,QAAA,CAAS,OAAA;AAGvB,EAAA,OAAOA,IAAAA;AACT;;;ACtGA,IAAM,kBAAA,GAAqB,WAAA;AAC3B,IAAM,mBAAA,GAAsB,iCAAA;AAC5B,IAAM,sBAAA;AAAA;AAAA,EAEJ;AAAA,CAAA;AACF,IAAM,gBAAA,GAAmB,qBAAA;AAGzB,IAAM,kBAAA,uBAAyB,OAAA,EAAQ;AAShC,SAAS,IAAA,CAAK,OAAO,OAAA,EAAS;AACnC,EAAA,KAAA,GAAQ,KAAA,CAAM,OAAA;AAAA,IACZ,OAAA,CAAQ,MAAA,GACJ,4BAAA,CAA6B,OAAA,CAAQ,MAAM,CAAA,GAC3C,kBAAA;AAAA,IACJ;AAAA,GACF;AAEA,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,UAAA,EAAY;AACxC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OACE,MAEG,OAAA,CAAQ,mBAAA,EAAqB,SAAS,CAAA,CAGtC,OAAA,CAAQ,wBAAwB,KAAK,CAAA;AAQ1C,EAAA,SAAS,SAAA,CAAU,IAAA,EAAM,KAAA,EAAOC,IAAAA,EAAK;AACnC,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MAAA,CACZ,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,GAAI,KAAA,IAAU,OAC9B,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,GACjB,KAAA,GACA,KAAA;AAAA,MACFA,IAAAA,CAAI,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAA;AAAA,MACxB;AAAA,KACF;AAAA,EACF;AAOA,EAAA,SAAS,KAAA,CAAM,SAAA,EAAW,KAAA,EAAOA,IAAAA,EAAK;AACpC,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MACb,SAAA,CAAU,WAAW,CAAC,CAAA;AAAA,MACtBA,IAAAA,CAAI,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAA;AAAA,MACxB;AAAA,KACF;AAAA,EACF;AACF;AAUA,SAAS,6BAA6B,MAAA,EAAQ;AAC5C,EAAA,IAAI,MAAA,GAAS,kBAAA,CAAmB,GAAA,CAAI,MAAM,CAAA;AAE1C,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAA,GAAS,uBAAuB,MAAM,CAAA;AACtC,IAAA,kBAAA,CAAmB,GAAA,CAAI,QAAQ,MAAM,CAAA;AAAA,EACvC;AAEA,EAAA,OAAO,MAAA;AACT;AAMA,SAAS,uBAAuB,MAAA,EAAQ;AAEtC,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,IAAI,KAAA,GAAQ,EAAA;AAEZ,EAAA,OAAO,EAAE,KAAA,GAAQ,MAAA,CAAO,MAAA,EAAQ;AAC9B,IAAA,MAAA,CAAO,KAAK,MAAA,CAAO,KAAK,EAAE,OAAA,CAAQ,gBAAA,EAAkB,MAAM,CAAC,CAAA;AAAA,EAC7D;AAEA,EAAA,OAAO,IAAI,OAAO,KAAA,GAAQ,MAAA,CAAO,KAAK,GAAG,CAAA,GAAI,KAAK,GAAG,CAAA;AACvD;;;ACpHA,IAAM,gBAAA,GAAmB,YAAA;AAUlB,SAAS,aAAA,CAAc,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM;AAC9C,EAAA,MAAM,QAAQ,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,EAAE,EAAE,WAAA,EAAY;AACpD,EAAA,OAAO,IAAA,IAAQ,IAAA,IAAQ,CAAC,gBAAA,CAAiB,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa,IAAI,CAAC,CAAA,GACnE,KAAA,GACA,KAAA,GAAQ,GAAA;AACd;;;ACfA,IAAM,YAAA,GAAe,IAAA;AAUd,SAAS,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM;AAC1C,EAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA;AAChC,EAAA,OAAO,IAAA,IAAQ,IAAA,IAAQ,CAAC,YAAA,CAAa,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa,IAAI,CAAC,CAAA,GAC/D,KAAA,GACA,KAAA,GAAQ,GAAA;AACd;;;ACVO,IAAM,uBAAA,GAA0B;AAAA,EACrC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA;;;AC3GO,IAAM,sBAAA,GAAyB;AAAA,EACpC,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,GAAA,EAAK,MAAA;AAAA,EACL,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,MAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,MAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,MAAA;AAAA,EACL,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,MAAA;AAAA,EACL,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,MAAA;AAAA,EACL,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,OAAA,EAAS,QAAA;AAAA,EACT,EAAA,EAAI,QAAA;AAAA,EACJ,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA,EACL,OAAA,EAAS,QAAA;AAAA,EACT,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,OAAA,EAAS,QAAA;AAAA,EACT,EAAA,EAAI,QAAA;AAAA,EACJ,GAAA,EAAK,QAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA,EACL,OAAA,EAAS,QAAA;AAAA,EACT,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,QAAA,EAAU,QAAA;AAAA,EACV,KAAA,EAAO,QAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA,EACL,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,EAAA,EAAI,QAAA;AAAA,EACJ,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,EAAA,EAAI,QAAA;AAAA,EACJ,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,QAAA;AAAA,EACL,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,EAAA,EAAI,QAAA;AAAA,EACJ,KAAA,EAAO,QAAA;AAAA,EACP,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,QAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,GAAA;AAAA,EACN,GAAA,EAAK,GAAA;AAAA,EACL,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM;AACR,CAAA;;;AC5PO,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA;;;ACXA,IAAMF,IAAAA,GAAM,EAAC,CAAE,cAAA;AAOf,IAAM,aAAa,EAAC;AAGpB,IAAI,GAAA;AAEJ,KAAK,OAAO,sBAAA,EAAwB;AAClC,EAAA,IAAIA,IAAAA,CAAI,IAAA,CAAK,sBAAA,EAAwB,GAAG,CAAA,EAAG;AACzC,IAAA,UAAA,CAAW,sBAAA,CAAuB,GAAG,CAAC,CAAA,GAAI,GAAA;AAAA,EAC5C;AACF;AAEA,IAAM,oBAAA,GAAuB,aAAA;AAWtB,SAAS,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW;AACnD,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,YAAA,CAAa,IAAI,CAAA;AAE1C,EAAA,IAAIA,IAAAA,CAAI,IAAA,CAAK,UAAA,EAAY,SAAS,CAAA,EAAG;AACnC,IAAA,MAAM,IAAA,GAAO,WAAW,SAAS,CAAA;AACjC,IAAA,MAAM,QAAQ,GAAA,GAAM,IAAA;AAEpB,IAAA,IACE,IAAA,IACA,wBAAwB,QAAA,CAAS,IAAI,KACrC,CAAC,SAAA,CAAU,SAAS,IAAI,CAAA,KACvB,CAAC,SAAA,IACC,IAAA,IACC,SAAS,EAAA,IACT,oBAAA,CAAqB,KAAK,MAAA,CAAO,YAAA,CAAa,IAAI,CAAC,CAAA,CAAA,EACvD;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,KAAA,GAAQ,GAAA;AAAA,EACjB;AAEA,EAAA,OAAO,EAAA;AACT;;;AC3BO,SAAS,WAAA,CAAY,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS;AAC/C,EAAA,IAAI,OAAA,GAAU,aAAA,CAAc,IAAA,EAAM,IAAA,EAAM,QAAQ,sBAAsB,CAAA;AAEtE,EAAA,IAAI,KAAA;AAEJ,EAAA,IAAI,OAAA,CAAQ,kBAAA,IAAsB,OAAA,CAAQ,qBAAA,EAAuB;AAC/D,IAAA,KAAA,GAAQ,OAAA;AAAA,MACN,IAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA,CAAQ,sBAAA;AAAA,MACR,OAAA,CAAQ;AAAA,KACV;AAAA,EACF;AAYA,EAAA,IAAA,CACG,OAAA,CAAQ,qBAAA,IAAyB,CAAC,KAAA,KACnC,QAAQ,qBAAA,EACR;AACA,IAAA,MAAM,OAAA,GAAU,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,QAAQ,sBAAsB,CAAA;AAEpE,IAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,MAAA,EAAQ;AACnC,MAAA,OAAA,GAAU,OAAA;AAAA,IACZ;AAAA,EACF;AAEA,EAAA,OAAO,KAAA,KACJ,CAAC,OAAA,CAAQ,qBAAA,IAAyB,MAAM,MAAA,GAAS,OAAA,CAAQ,UACxD,KAAA,GACA,OAAA;AACN;;;ACjDO,SAAS,iBAAA,CAAkB,OAAO,OAAA,EAAS;AAChD,EAAA,OAAO,IAAA,CAAK,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,MAAA,EAAQ,WAAA,EAAW,EAAG,OAAO,CAAC,CAAA;AAClE;;;ACdA,IAAM,gBAAA,GAAmB,4BAAA;AAGzB,IAAM,wBAAA,GAA2B,CAAC,GAAG,CAAA;AACrC,IAAM,mBAAA,GAAsB,CAAC,GAAA,EAAK,GAAG,CAAA;AAgB9B,SAAS,OAAA,CAAQ,IAAA,EAAM,EAAA,EAAIG,GAAAA,EAAI,KAAA,EAAO;AAE3C,EAAA,OAAO,KAAA,CAAM,QAAA,CAAS,aAAA,GAClB,IAAA,GACE,iBAAA;AAAA,IACE,IAAA,CAAK,KAAA;AAAA,IACL,OAAO,MAAA,CAAO,EAAC,EAAG,KAAA,CAAM,SAAS,mBAAA,EAAqB;AAAA,MACpD,MAAA,EAAQ;AAAA,KACT;AAAA,GACH,GACA,MACF,MAAA,GAAS,IAAA,CAAK,MAAM,OAAA,CAAQ,gBAAA,EAAkB,MAAM,CAAA,GAAI,KAAA;AAK5D,EAAA,SAAS,OAAO,EAAA,EAAI;AAClB,IAAA,OAAO,iBAAA;AAAA,MACL,EAAA;AAAA,MACA,OAAO,MAAA,CAAO,EAAC,EAAG,KAAA,CAAM,SAAS,mBAAA,EAAqB;AAAA,QACpD,MAAA,EAAQ;AAAA,OACT;AAAA,KACH;AAAA,EACF;AACF;;;AChCO,SAAS,OAAA,CAAQ,EAAA,EAAIA,GAAAA,EAAIC,GAAAA,EAAI,KAAA,EAAO;AACzC,EAAA,OACE,IAAA,IACC,KAAA,CAAM,QAAA,CAAS,YAAA,GAAe,SAAA,GAAY,cAC1C,KAAA,CAAM,QAAA,CAAS,YAAA,GAAe,EAAA,GAAK,GAAA,CAAA,GACpC,OAAA;AAEJ;;;AChBO,SAAS,MAAA,CAAO,OAAO,SAAA,EAAW;AACvC,EAAA,MAAM,MAAA,GAAS,OAAO,KAAK,CAAA;AAE3B,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,MAAM,IAAI,UAAU,oBAAoB,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA;AAEpC,EAAA,OAAO,UAAU,EAAA,EAAI;AACnB,IAAA,KAAA,EAAA;AACA,IAAA,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,KAAA,GAAQ,UAAU,MAAM,CAAA;AAAA,EAC5D;AAEA,EAAA,OAAO,KAAA;AACT;;;ACkCO,SAAS,SAAA,CAAU,QAAQ,OAAA,EAAS;AACzC,EAAA,MAAM,QAAA,GAAW,WAAW,EAAC;AAG7B,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,KAAM,EAAA,GAAK,CAAC,GAAG,MAAA,EAAQ,EAAE,CAAA,GAAI,MAAA;AAEnE,EAAA,OAAO,KAAA,CACJ,IAAA;AAAA,IAAA,CACE,QAAA,CAAS,WAAW,GAAA,GAAM,EAAA,IACzB,OACC,QAAA,CAAS,OAAA,KAAY,QAAQ,EAAA,GAAK,GAAA;AAAA,IAEtC,IAAA,EAAK;AACV;;;ACpDO,SAASC,WAAU,MAAA,EAAQ;AAChC,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAE,IAAA,EAAK;AAC/B;;;ACjBA,IAAM,EAAA,GAAK,cAAA;AAaJ,SAAS,WAAW,KAAA,EAAO;AAChC,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GACpB,KAAA,CAAM,IAAA,KAAS,MAAA,GACb,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA,GACjB,KAAA,GACF,KAAA,CAAM,KAAK,CAAA;AACjB;AAMA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,EAAA,EAAI,EAAE,CAAA,KAAM,EAAA;AACnC;;;AC3BO,IAAM,YAAA,GAAe,SAAS,CAAC,CAAA;AAC/B,IAAM,aAAA,GAAgB,SAAS,EAAE,CAAA;AAGxC,IAAM,gBAAgB,EAAC;AAOvB,SAAS,SAASC,UAAAA,EAAW;AAC3B,EAAA,OAAO,OAAA;AAgBP,EAAA,SAAS,OAAA,CAAQ,MAAA,EAAQ,KAAA,EAAO,iBAAA,EAAmB;AACjD,IAAA,MAAMC,SAAAA,GAAW,MAAA,GAAS,MAAA,CAAO,QAAA,GAAW,aAAA;AAC5C,IAAA,IAAI,MAAA,GAAA,CAAU,SAAS,CAAA,IAAKD,UAAAA;AAC5B,IAAA,IAAI,IAAA,GAAOC,UAAS,MAAM,CAAA;AAE1B,IAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,MAAA,OAAO,IAAA,IAAQ,UAAA,CAAW,IAAI,CAAA,EAAG;AAC/B,QAAA,MAAA,IAAUD,UAAAA;AACV,QAAA,IAAA,GAAOC,UAAS,MAAM,CAAA;AAAA,MACxB;AAAA,IACF;AAGA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;AC/BA,IAAMP,IAAAA,GAAM,EAAC,CAAE,cAAA;AAWR,SAAS,SAAS,QAAA,EAAU;AACjC,EAAA,OAAO,IAAA;AAOP,EAAA,SAAS,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ;AACjC,IAAA,OACEA,IAAAA,CAAI,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA,IAC/B,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AAAA,EAE9C;AACF;;;ACnCO,IAAM,UAAU,QAAA,CAAS;AAAA,EAC9B,IAAA;AAAA,EACA,OAAA,EAAS,uBAAA;AAAA,EACT,QAAA,EAAU,uBAAA;AAAA,EACV,EAAA;AAAA,EACA,EAAA;AAAA,EACA,IAAA,EAAM,uBAAA;AAAA,EACN,IAAA,EAAAF,KAAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,CAAA;AAAA,EACA,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,KAAA;AAAA,EACA,EAAA,EAAI,KAAA;AAAA,EACJ,KAAA;AAAA,EACA,EAAA,EAAI,KAAA;AAAA,EACJ,KAAA;AAAA,EACA;AACF,CAAC,CAAA;AAcD,SAAS,uBAAA,CAAwBL,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AACjD,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAA,EAAO,IAAI,CAAA;AAC7C,EAAA,OACE,CAAC,IAAA,IACA,IAAA,CAAK,IAAA,KAAS,aACb,EAAE,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,UAAA,CAAW,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AAE/D;AAcA,SAASK,KAAAA,CAAKL,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC9B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,SAAA;AAChC;AAcA,SAAS,IAAA,CAAKA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC9B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,SAAA;AAChC;AAcA,SAAS,CAAA,CAAEA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC3B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,IAAA,GACH,KAAK,IAAA,KAAS,SAAA,KACX,KAAK,OAAA,KAAY,SAAA,IAChB,KAAK,OAAA,KAAY,SAAA,IACjB,KAAK,OAAA,KAAY,OAAA,IACjB,KAAK,OAAA,KAAY,YAAA,IACjB,KAAK,OAAA,KAAY,SAAA,IACjB,KAAK,OAAA,KAAY,KAAA,IACjB,KAAK,OAAA,KAAY,IAAA,IACjB,KAAK,OAAA,KAAY,UAAA,IACjB,KAAK,OAAA,KAAY,YAAA,IACjB,KAAK,OAAA,KAAY,QAAA,IACjB,KAAK,OAAA,KAAY,QAAA,IACjB,KAAK,OAAA,KAAY,MAAA,IACjB,KAAK,OAAA,KAAY,IAAA,IACjB,IAAA,CAAK,OAAA,KAAY,IAAA,IACjB,IAAA,CAAK,YAAY,IAAA,IACjB,IAAA,CAAK,YAAY,IAAA,IACjB,IAAA,CAAK,YAAY,IAAA,IACjB,IAAA,CAAK,YAAY,IAAA,IACjB,IAAA,CAAK,YAAY,QAAA,IACjB,IAAA,CAAK,YAAY,QAAA,IACjB,IAAA,CAAK,YAAY,IAAA,IACjB,IAAA,CAAK,YAAY,MAAA,IACjB,IAAA,CAAK,YAAY,MAAA,IACjB,IAAA,CAAK,YAAY,KAAA,IACjB,IAAA,CAAK,YAAY,IAAA,IACjB,IAAA,CAAK,YAAY,GAAA,IACjB,IAAA,CAAK,YAAY,KAAA,IACjB,IAAA,CAAK,YAAY,SAAA,IACjB,IAAA,CAAK,YAAY,OAAA,IACjB,IAAA,CAAK,OAAA,KAAY,IAAA,CAAA,GACrB,CAAC,MAAA;AAAA,EAEC,EACE,OAAO,IAAA,KAAS,SAAA,KACf,OAAO,OAAA,KAAY,GAAA,IAClB,MAAA,CAAO,OAAA,KAAY,OAAA,IACnB,MAAA,CAAO,YAAY,KAAA,IACnB,MAAA,CAAO,OAAA,KAAY,KAAA,IACnB,MAAA,CAAO,OAAA,KAAY,SACnB,MAAA,CAAO,OAAA,KAAY,UAAA,IACnB,MAAA,CAAO,OAAA,KAAY,OAAA,CAAA,CAAA;AAE/B;AAcA,SAAS,EAAA,CAAGA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC5B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,CAAC,IAAA,IAAS,IAAA,CAAK,IAAA,KAAS,SAAA,IAAa,KAAK,OAAA,KAAY,IAAA;AAC/D;AAcA,SAAS,EAAA,CAAGA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC5B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,OAAA;AAAA,IACL,IAAA,IACE,KAAK,IAAA,KAAS,SAAA,KACb,KAAK,OAAA,KAAY,IAAA,IAAQ,KAAK,OAAA,KAAY,IAAA;AAAA,GAC/C;AACF;AAcA,SAAS,EAAA,CAAGA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC5B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OACE,CAAC,QACA,IAAA,CAAK,IAAA,KAAS,cACZ,IAAA,CAAK,OAAA,KAAY,IAAA,IAAQ,IAAA,CAAK,OAAA,KAAY,IAAA,CAAA;AAEjD;AAcA,SAAS,WAAA,CAAYA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AACrC,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OACE,CAAC,QACA,IAAA,CAAK,IAAA,KAAS,cACZ,IAAA,CAAK,OAAA,KAAY,IAAA,IAAQ,IAAA,CAAK,OAAA,KAAY,IAAA,CAAA;AAEjD;AAcA,SAAS,QAAA,CAASA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAClC,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,CAAC,IAAA,IAAS,IAAA,CAAK,IAAA,KAAS,SAAA,IAAa,KAAK,OAAA,KAAY,UAAA;AAC/D;AAcA,SAAS,MAAA,CAAOA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAChC,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OACE,CAAC,QACA,IAAA,CAAK,IAAA,KAAS,cACZ,IAAA,CAAK,OAAA,KAAY,QAAA,IAAY,IAAA,CAAK,OAAA,KAAY,UAAA,CAAA;AAErD;AAcA,SAAS,KAAA,CAAMA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,OAAA;AAAA,IACL,IAAA,IACE,KAAK,IAAA,KAAS,SAAA,KACb,KAAK,OAAA,KAAY,OAAA,IAAW,KAAK,OAAA,KAAY,OAAA;AAAA,GAClD;AACF;AAcA,SAAS,KAAA,CAAMA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OACE,CAAC,QACA,IAAA,CAAK,IAAA,KAAS,cACZ,IAAA,CAAK,OAAA,KAAY,OAAA,IAAW,IAAA,CAAK,OAAA,KAAY,OAAA,CAAA;AAEpD;AAcA,SAAS,KAAA,CAAMA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC/B,EAAA,OAAO,CAAC,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACpC;AAcA,SAAS,EAAA,CAAGA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC5B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OAAO,CAAC,IAAA,IAAS,IAAA,CAAK,IAAA,KAAS,SAAA,IAAa,KAAK,OAAA,KAAY,IAAA;AAC/D;AAcA,SAAS,KAAA,CAAMA,EAAAA,EAAG,KAAA,EAAO,MAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,OACE,CAAC,QACA,IAAA,CAAK,IAAA,KAAS,cACZ,IAAA,CAAK,OAAA,KAAY,IAAA,IAAQ,IAAA,CAAK,OAAA,KAAY,IAAA,CAAA;AAEjD;;;AC5VO,IAAM,UAAU,QAAA,CAAS;AAAA,EAC9B,IAAA,EAAAe,KAAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,EAAAV,KAAAA;AAAA,EACA,KAAA,EAAAW;AACF,CAAC,CAAA;AAUD,SAASX,MAAK,IAAA,EAAM;AAClB,EAAA,MAAMY,KAAAA,GAAO,YAAA,CAAa,IAAA,EAAM,EAAE,CAAA;AAClC,EAAA,OAAO,CAACA,KAAAA,IAAQA,KAAAA,CAAK,IAAA,KAAS,SAAA;AAChC;AAUA,SAAS,KAAK,IAAA,EAAM;AAElB,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAI;AAIrB,EAAA,KAAA,MAAWC,MAAAA,IAAS,KAAK,QAAA,EAAU;AACjC,IAAA,IACEA,MAAAA,CAAM,SAAS,SAAA,KACdA,MAAAA,CAAM,YAAY,MAAA,IAAUA,MAAAA,CAAM,YAAY,OAAA,CAAA,EAC/C;AACA,MAAA,IAAI,IAAA,CAAK,GAAA,CAAIA,MAAAA,CAAM,OAAO,GAAG,OAAO,KAAA;AACpC,MAAA,IAAA,CAAK,GAAA,CAAIA,OAAM,OAAO,CAAA;AAAA,IACxB;AAAA,EACF;AAIA,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA;AAC7B,EAAA,OAAO,CAAC,KAAA,IAAS,KAAA,CAAM,IAAA,KAAS,SAAA;AAClC;AAUA,SAASH,MAAK,IAAA,EAAM;AAClB,EAAA,MAAME,KAAAA,GAAO,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,IAAI,CAAA;AAExC,EAAA,OACE,CAACA,KAAAA,IACAA,KAAAA,CAAK,IAAA,KAAS,aACb,EAAEA,KAAAA,CAAK,IAAA,KAAS,MAAA,IAAU,UAAA,CAAWA,KAAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA,IACzD,EACEA,KAAAA,CAAK,IAAA,KAAS,SAAA,KACbA,KAAAA,CAAK,OAAA,KAAY,UAChBA,KAAAA,CAAK,OAAA,KAAY,MAAA,IACjBA,KAAAA,CAAK,YAAY,QAAA,IACjBA,KAAAA,CAAK,OAAA,KAAY,OAAA,IACjBA,MAAK,OAAA,KAAY,UAAA,CAAA,CAAA;AAG3B;AAiBA,SAAS,QAAA,CAAS,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ;AACrC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,MAAA,EAAQ,KAAK,CAAA;AAC5C,EAAA,MAAMA,KAAAA,GAAO,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,IAAI,CAAA;AAGxC,EAAA,IACE,UACA,QAAA,IACA,QAAA,CAAS,IAAA,KAAS,SAAA,IAClB,SAAS,OAAA,KAAY,UAAA,IACrB,OAAA,CAAQ,QAAA,EAAU,OAAO,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,EAAG,MAAM,CAAA,EAC3D;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,QAAQA,KAAAA,IAAQA,KAAAA,CAAK,SAAS,SAAA,IAAaA,KAAAA,CAAK,YAAY,KAAK,CAAA;AAC1E;AAcA,SAASD,MAAAA,CAAM,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ;AAClC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,MAAA,EAAQ,KAAK,CAAA;AAC5C,EAAA,MAAMC,KAAAA,GAAO,YAAA,CAAa,IAAA,EAAM,EAAE,CAAA;AAGlC,EAAA,IACE,UACA,QAAA,IACA,QAAA,CAAS,SAAS,SAAA,KACjB,QAAA,CAAS,YAAY,OAAA,IAAW,QAAA,CAAS,YAAY,OAAA,CAAA,IACtD,OAAA,CAAQ,UAAU,MAAA,CAAO,QAAA,CAAS,QAAQ,QAAQ,CAAA,EAAG,MAAM,CAAA,EAC3D;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,QAAQA,KAAAA,IAAQA,KAAAA,CAAK,SAAS,SAAA,IAAaA,KAAAA,CAAK,YAAY,IAAI,CAAA;AACzE;;;AC7HA,IAAM,SAAA,GAAY;AAAA;AAAA,EAEhB,IAAA,EAAM;AAAA,IACJ,CAAC,eAAgB,KAAA,CAAM,EAAE,GAAG,kBAAA,CAAoB,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAAA,YAAA,CAAA,CAAsB,MAAM,EAAE,CAAA,EAAG,qBAAA,CAAuB,KAAA,CAAM,EAAE,CAAC;AAAA,GACpE;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,CAAC,aAAc,KAAA,CAAM,EAAE,GAAG,oBAAA,CAAsB,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,IACzD,CAAC,qBAAsB,KAAA,CAAM,EAAE,GAAG,oBAAA,CAAsB,KAAA,CAAM,EAAE,CAAC;AAAA,GACnE;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,CAAC,KAAK,KAAA,CAAM,EAAE,GAAG,OAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,IAClC,CAAC,OAAO,KAAA,CAAM,EAAE,GAAG,SAAA,CAAU,KAAA,CAAM,EAAE,CAAC;AAAA,GACxC;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,CAAC,KAAK,KAAA,CAAM,EAAE,GAAG,OAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,IAClC,CAAC,OAAO,KAAA,CAAM,EAAE,GAAG,SAAA,CAAU,KAAA,CAAM,EAAE,CAAC;AAAA;AAE1C,CAAA;AAgBO,SAAS,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO;AAClD,EAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,EAAA,MAAM,OAAO,MAAA,CAAO,KAAA,KAAU,KAAA,GAAQ,KAAA,GAAQ,MAAM,QAAA,CAAS,gBAAA;AAC7D,EAAA,IAAI,WAAA,GACF,MAAA,CAAO,KAAA,KAAU,KAAA,GACb,MAAM,QAAA,CAAS,kBAAA,GACf,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAA;AAE9D,EAAA,MAAM,QAAQ,EAAC;AAEf,EAAA,IAAI,IAAA;AAEJ,EAAA,IAAI,MAAA,CAAO,KAAA,KAAU,MAAA,IAAU,IAAA,CAAK,YAAY,KAAA,EAAO;AACrD,IAAA,KAAA,CAAM,MAAA,GAASX,IAAAA;AAAA,EACjB;AAEA,EAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,KAAA,EAAO,IAAA,CAAK,UAAU,CAAA;AAE7D,EAAA,MAAM,UAAU,KAAA,CAAM,GAAA;AAAA,IACpB,OAAO,KAAA,KAAU,MAAA,IAAU,KAAK,OAAA,KAAY,UAAA,GAAa,KAAK,OAAA,GAAU;AAAA,GAC1E;AAEA,EAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAQf,EAAA,IAAI,SAAS,WAAA,GAAc,KAAA;AAE3B,EAAA,IAAI,UAAA,IAAc,CAAC,IAAA,IAAQ,CAAC,QAAQ,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA,EAAG;AACxD,IAAA,KAAA,CAAM,KAAK,GAAA,EAAK,IAAA,CAAK,SAAS,UAAA,GAAa,GAAA,GAAM,aAAa,EAAE,CAAA;AAEhE,IAAA,IACE,gBACC,MAAA,CAAO,KAAA,KAAU,KAAA,IAAS,KAAA,CAAM,SAAS,gBAAA,CAAA,EAC1C;AACA,MAAA,IAAA,GAAO,UAAA,CAAW,MAAA,CAAO,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAC9C,MAAA,IACE,CAAC,KAAA,CAAM,QAAA,CAAS,gBAAA,IAChB,IAAA,KAAS,OACR,IAAA,IAAQ,IAAA,KAAS,GAAA,IAAO,IAAA,KAAS,GAAA,EAClC;AACA,QAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,MAChB;AAEA,MAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,IAChB;AAEA,IAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,EAChB;AAEA,EAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAElB,EAAA,IAAI,CAAC,gBAAgB,CAAC,IAAA,IAAQ,CAAC,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA,CAAA,EAAI;AAC5D,IAAA,KAAA,CAAM,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,OAAA,GAAU,GAAG,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,CAAA;AACtB;AAOA,SAAS,mBAAA,CAAoB,OAAO,UAAA,EAAY;AAE9C,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,IAAI,KAAA,GAAQ,EAAA;AAEZ,EAAA,IAAIF,IAAAA;AAEJ,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,KAAKA,QAAO,UAAA,EAAY;AACtB,MAAA,IAAI,WAAWA,IAAG,CAAA,KAAM,QAAQ,UAAA,CAAWA,IAAG,MAAM,MAAA,EAAW;AAC7D,QAAA,MAAM,QAAQ,kBAAA,CAAmB,KAAA,EAAOA,IAAAA,EAAK,UAAA,CAAWA,IAAG,CAAC,CAAA;AAC5D,QAAA,IAAI,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,KAAA,GAAQ,MAAA,CAAO,MAAA,EAAQ;AAC9B,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,eAAA,GACxB,MAAA,CAAO,KAAK,CAAA,CAAE,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,MAAA,GAAS,CAAC,CAAA,GAC7C,MAAA;AAGJ,IAAA,IAAI,UAAU,MAAA,CAAO,MAAA,GAAS,KAAK,IAAA,KAAS,GAAA,IAAO,SAAS,GAAA,EAAK;AAC/D,MAAA,MAAA,CAAO,KAAK,CAAA,IAAK,GAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA,CAAO,KAAK,EAAE,CAAA;AACvB;AAQA,SAAS,kBAAA,CAAmB,KAAA,EAAOA,IAAAA,EAAK,KAAA,EAAO;AAC7C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQA,IAAG,CAAA;AACnC,EAAA,MAAML,EAAAA,GACJ,MAAM,QAAA,CAAS,gBAAA,IAAoB,MAAM,MAAA,CAAO,KAAA,KAAU,SAAS,CAAA,GAAI,CAAA;AACzE,EAAA,MAAMoB,EAAAA,GAAI,KAAA,CAAM,QAAA,CAAS,wBAAA,GAA2B,CAAA,GAAI,CAAA;AACxD,EAAA,IAAI,QAAQ,KAAA,CAAM,KAAA;AAElB,EAAA,IAAI,MAAA;AAEJ,EAAA,IAAI,KAAK,iBAAA,KAAsB,KAAA,KAAU,IAAA,CAAK,SAAA,IAAa,UAAU,EAAA,CAAA,EAAK;AACxE,IAAA,KAAA,GAAQ,IAAA;AAAA,EACV,CAAA,MAAA,IAAA,CACG,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,iBAAA,MACrB,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,CAAK,SAAA,IAAa,KAAA,KAAU,EAAA,CAAA,EACpE;AACA,IAAA,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAAA,EACvB;AAEA,EAAA,IACE,KAAA,KAAU,IAAA,IACV,KAAA,KAAU,MAAA,IACV,KAAA,KAAU,KAAA,IACT,OAAO,KAAA,KAAU,QAAA,IAAY,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAChD;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GAAO,iBAAA;AAAA,IACX,IAAA,CAAK,SAAA;AAAA,IACL,OAAO,MAAA,CAAO,EAAC,EAAG,KAAA,CAAM,SAAS,mBAAA,EAAqB;AAAA;AAAA,MAEpD,MAAA,EAAQ,SAAA,CAAU,IAAA,CAAKpB,EAAC,EAAEoB,EAAC;AAAA,KAC5B;AAAA,GACH;AAmBA,EAAA,IAAI,KAAA,KAAU,MAAM,OAAO,IAAA;AAI3B,EAAA,KAAA,GAAQ,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAA,CACtB,KAAK,cAAA,GAAiB,SAAA,GAASP,YAAQ,KAAA,EAAO;AAAA,IAC7C,OAAA,EAAS,CAAC,KAAA,CAAM,QAAA,CAAS;AAAA,GAC1B,CAAA,GACD,MAAA,CAAO,KAAK,CAAA;AAEhB,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,uBAAA,IAA2B,CAAC,OAAO,OAAO,IAAA;AAG7D,EAAA,IAAI,KAAA,CAAM,SAAS,cAAA,EAAgB;AACjC,IAAA,MAAA,GAAS,iBAAA;AAAA,MACP,KAAA;AAAA,MACA,OAAO,MAAA,CAAO,EAAC,EAAG,KAAA,CAAM,SAAS,mBAAA,EAAqB;AAAA,QACpD,SAAA,EAAW,IAAA;AAAA,QACX,MAAA,EAAQ,SAAA,CAAU,QAAA,CAASb,EAAC,EAAEoB,EAAC;AAAA,OAChC;AAAA,KACH;AAAA,EACF;AAIA,EAAA,IAAI,WAAW,KAAA,EAAO;AAEpB,IAAA,IACE,KAAA,CAAM,QAAA,CAAS,UAAA,IACf,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,GAAI,MAAA,CAAO,KAAA,EAAO,KAAA,CAAM,WAAW,CAAA,EACtD;AACA,MAAA,KAAA,GAAQ,KAAA,CAAM,WAAA;AAAA,IAChB;AAEA,IAAA,MAAA,GACE,KAAA,GACA,iBAAA;AAAA,MACE,KAAA;AAAA,MACA,OAAO,MAAA,CAAO,EAAC,EAAG,KAAA,CAAM,SAAS,mBAAA,EAAqB;AAAA;AAAA,QAEpD,MAAA,EAAA,CAAS,UAAU,GAAA,GAAM,SAAA,CAAU,SAAS,SAAA,CAAU,MAAA,EAAQpB,EAAC,CAAA,CAAEoB,EAAC,CAAA;AAAA,QAClE,SAAA,EAAW;AAAA,OACZ;AAAA,KACH,GACA,KAAA;AAAA,EACJ;AAGA,EAAA,OAAO,IAAA,IAAQ,MAAA,GAAS,GAAA,GAAM,MAAA,GAAS,MAAA,CAAA;AACzC;;;AC/PA,IAAM,gBAAA,GAAmB,CAAC,GAAA,EAAK,GAAG,CAAA;AAgB3B,SAAS,IAAA,CAAK,IAAA,EAAMnB,EAAAA,EAAG,MAAA,EAAQ,KAAA,EAAO;AAE3C,EAAA,OAAO,MAAA,IACL,MAAA,CAAO,IAAA,KAAS,SAAA,KACf,MAAA,CAAO,OAAA,KAAY,QAAA,IAAY,MAAA,CAAO,OAAA,KAAY,OAAA,CAAA,GACjD,IAAA,CAAK,KAAA,GACL,iBAAA;AAAA,IACE,IAAA,CAAK,KAAA;AAAA,IACL,OAAO,MAAA,CAAO,EAAC,EAAG,KAAA,CAAM,SAAS,mBAAA,EAAqB;AAAA,MACpD,MAAA,EAAQ;AAAA,KACT;AAAA,GACH;AACN;;;ACfO,SAAS,GAAA,CAAI,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO;AAC9C,EAAA,OAAO,KAAA,CAAM,SAAS,kBAAA,GAClB,IAAA,CAAK,QACL,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,KAAK,CAAA;AACrC;;;ACPO,SAAS,IAAA,CAAK,IAAA,EAAM,EAAA,EAAIU,GAAAA,EAAI,KAAA,EAAO;AACxC,EAAA,OAAO,KAAA,CAAM,IAAI,IAAI,CAAA;AACvB;;;ACLO,IAAM,MAAA,GAAS,OAAO,MAAA,EAAQ;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAU,EAAC,OAAA,EAAS,SAAS,OAAA,EAAS,GAAA,EAAK,MAAM,IAAA;AACnD,CAAC,CAAA;AAUD,SAAS,QAAQ,IAAA,EAAM;AACrB,EAAA,MAAM,IAAI,KAAA,CAAM,sBAAA,GAAyB,IAAA,GAAO,GAAG,CAAA;AACrD;AAUA,SAAS,QAAQ,KAAA,EAAO;AAEtB,EAAA,MAAM,IAAA;AAAA;AAAA,IAA6B;AAAA,GAAA;AACnC,EAAA,MAAM,IAAI,KAAA,CAAM,+BAAA,GAAkC,IAAA,CAAK,OAAO,GAAG,CAAA;AACnE;;;AC6GA,IAAM,eAAe,EAAC;AAGtB,IAAM,2BAA2B,EAAC;AAGlC,IAAMU,iBAAgB,EAAC;AAYhB,SAAS,MAAA,CAAO,MAAM,OAAA,EAAS;AACpC,EAAA,MAAM,WAAW,OAAA,IAAW,YAAA;AAC5B,EAAA,MAAM,KAAA,GAAQ,SAAS,KAAA,IAAS,GAAA;AAChC,EAAA,MAAM,WAAA,GAAc,KAAA,KAAU,GAAA,GAAM,GAAA,GAAM,GAAA;AAE1C,EAAA,IAAI,KAAA,KAAU,GAAA,IAAO,KAAA,KAAU,GAAA,EAAK;AAClC,IAAA,MAAM,IAAI,KAAA,CAAM,iBAAA,GAAoB,KAAA,GAAQ,yBAAyB,CAAA;AAAA,EACvE;AAGA,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAA;AAAA,IACA,GAAA;AAAA,IACA,QAAA,EAAU;AAAA,MACR,gBAAA,EAAkB,SAAS,gBAAA,IAAoB,KAAA;AAAA,MAC/C,gBAAA,EAAkB,SAAS,gBAAA,IAAoB,KAAA;AAAA,MAC/C,wBAAA,EAA0B,SAAS,wBAAA,IAA4B,KAAA;AAAA,MAC/D,UAAA,EAAY,SAAS,UAAA,IAAc,KAAA;AAAA,MACnC,cAAA,EAAgB,SAAS,cAAA,IAAkB,KAAA;AAAA,MAC3C,eAAA,EAAiB,SAAS,eAAA,IAAmB,KAAA;AAAA,MAC7C,YAAA,EAAc,SAAS,YAAA,IAAgB,KAAA;AAAA,MACvC,YAAA,EAAc,SAAS,YAAA,IAAgB,KAAA;AAAA,MACvC,aAAA,EAAe,SAAS,aAAA,IAAiB,KAAA;AAAA,MACzC,wBAAA,EAA0B,SAAS,wBAAA,IAA4B,KAAA;AAAA,MAC/D,gBAAA,EAAkB,SAAS,gBAAA,IAAoB,KAAA;AAAA,MAC/C,uBAAA,EAAyB,SAAS,uBAAA,IAA2B,KAAA;AAAA,MAC7D,kBAAA,EAAoB,SAAS,kBAAA,IAAsB,KAAA;AAAA,MACnD,KAAA,EAAO,SAAS,KAAA,IAAS,gBAAA;AAAA,MACzB,mBAAA,EACE,SAAS,mBAAA,IAAuB,wBAAA;AAAA,MAClC,gBAAA,EAAkB,SAAS,gBAAA,IAAoB,KAAA;AAAA,MAC/C,kBAAA,EAAoB,SAAS,kBAAA,IAAsB;AAAA,KACrD;AAAA,IACA,MAAA,EAAQ,QAAA,CAAS,KAAA,KAAU,KAAA,GAAQd,IAAAA,GAAMD,KAAAA;AAAA,IACzC,KAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO,KAAA,CAAM,GAAA;AAAA,IACX,KAAA,CAAM,QAAQ,IAAI,CAAA,GAAI,EAAC,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAI,GAAI,IAAA;AAAA,IACvD,MAAA;AAAA,IACA;AAAA,GACF;AACF;AAgBA,SAAS,GAAA,CAAI,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ;AAChC,EAAA,OAAO,MAAA,CAAO,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AACzC;AAWO,SAAS,IAAI,MAAA,EAAQ;AAE1B,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,MAAM,QAAA,GAAY,MAAA,IAAU,MAAA,CAAO,QAAA,IAAae,cAAAA;AAChD,EAAA,IAAI,KAAA,GAAQ,EAAA;AAEZ,EAAA,OAAO,EAAE,KAAA,GAAQ,QAAA,CAAS,MAAA,EAAQ;AAChC,IAAA,OAAA,CAAQ,KAAK,IAAI,IAAA,CAAK,GAAA,CAAI,SAAS,KAAK,CAAA,EAAG,OAAO,MAAM,CAAA;AAAA,EAC1D;AAEA,EAAA,OAAO,OAAA,CAAQ,KAAK,EAAE,CAAA;AACxB;;;AChQA,SAAS,CAAA,CAAEC,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,IAAGwB,EAAAA,IAAGA,GAAE,MAAA,EAAO;AAAC,IAAA,MAAK,CAACE,EAAAA,EAAEC,EAAC,IAAEF,EAAAA,EAAE5B,EAAAA,GAAE,KAAK,EAAA,GAAG,GAAA,GAAIG,EAAAA,EAAE4B,EAAAA,GAAE,KAAK,GAAA,CAAI/B,EAAC,GAAEgC,EAAAA,GAAE,IAAA,CAAK,IAAIhC,EAAC,CAAA;AAAE,IAAA,KAAA,MAAU4B,MAAKD,EAAAA,EAAE;AAAC,MAAA,MAAK,CAACA,EAAAA,EAAExB,EAAC,CAAA,GAAEyB,EAAAA;AAAE,MAAAA,GAAE,CAAC,CAAA,GAAA,CAAGD,KAAEE,EAAAA,IAAGE,EAAAA,GAAAA,CAAG5B,KAAE2B,EAAAA,IAAGE,EAAAA,GAAEH,EAAAA,EAAED,EAAAA,CAAE,CAAC,CAAA,GAAA,CAAGD,EAAAA,GAAEE,MAAGG,EAAAA,GAAAA,CAAG7B,EAAAA,GAAE2B,MAAGC,EAAAA,GAAED,EAAAA;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEH,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAOD,EAAAA,CAAE,CAAC,CAAA,KAAIC,EAAAA,CAAE,CAAC,KAAGD,EAAAA,CAAE,CAAC,CAAA,KAAIC,EAAAA,CAAE,CAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,EAAAA,EAAE9B,KAAE,CAAA,EAAE;AAAC,EAAA,MAAM+B,EAAAA,GAAED,EAAAA,EAAEE,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIH,EAAAA,EAAE,GAAE,CAAA,EAAE9B,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,IAAGA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,QAAA,IAAU,OAAOA,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,GAAE,CAACA,EAAC,CAAA,GAAEA,EAAAA,EAAEF,EAAAA,GAAE,CAAC,GAAE,CAAC,CAAA;AAAE,EAAA,IAAG8B,IAAE,KAAA,MAAUH,EAAAA,IAAK7B,IAAE,CAAA,CAAE6B,EAAAA,EAAE3B,IAAE8B,EAAC,CAAA;AAAE,EAAA,MAAME,EAAAA,GAAAA,CAAE,SAASN,EAAAA,EAAExB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,IAAA,MAAMC,KAAE,EAAC;AAAE,IAAA,KAAA,MAAU3B,MAAKwB,EAAAA,EAAE;AAAC,MAAA,MAAMA,EAAAA,GAAE,CAAC,GAAGxB,EAAC,CAAA;AAAE,MAAA,CAAA,CAAEwB,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAEA,EAAAA,CAAE,MAAA,GAAO,CAAC,CAAC,CAAA,IAAGA,EAAAA,CAAE,IAAA,CAAK,CAACA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA,EAAEA,EAAAA,CAAE,MAAA,GAAO,CAAA,IAAGG,EAAAA,CAAE,KAAKH,EAAC,CAAA;AAAA,IAAC;AAAC,IAAA,MAAM3B,KAAE,EAAC;AAAE,IAAAG,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIA,EAAAA,EAAE,GAAE,CAAA;AAAE,IAAA,MAAM4B,KAAE,EAAC;AAAE,IAAA,KAAA,MAAUJ,EAAAA,IAAKG,IAAE,KAAA,IAAQF,EAAAA,GAAE,GAAEA,EAAAA,GAAED,EAAAA,CAAE,MAAA,GAAO,CAAA,EAAEC,EAAAA,EAAAA,EAAI;AAAC,MAAA,MAAMzB,KAAEwB,EAAAA,CAAEC,EAAC,GAAEC,EAAAA,GAAEF,EAAAA,CAAEC,KAAE,CAAC,CAAA;AAAE,MAAA,IAAGzB,EAAAA,CAAE,CAAC,CAAA,KAAI0B,EAAAA,CAAE,CAAC,CAAA,EAAE;AAAC,QAAA,MAAMF,EAAAA,GAAE,KAAK,GAAA,CAAIxB,EAAAA,CAAE,CAAC,CAAA,EAAE0B,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAE,QAAAE,GAAE,IAAA,CAAK,EAAC,IAAA,EAAKJ,EAAAA,EAAE,MAAK,IAAA,CAAK,GAAA,CAAIxB,EAAAA,CAAE,CAAC,GAAE0B,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE,CAAA,EAAEF,OAAIxB,EAAAA,CAAE,CAAC,CAAA,GAAEA,EAAAA,CAAE,CAAC,CAAA,GAAE0B,EAAAA,CAAE,CAAC,CAAA,EAAE,MAAA,EAAA,CAAQA,GAAE,CAAC,CAAA,GAAE1B,EAAAA,CAAE,CAAC,MAAI0B,EAAAA,CAAE,CAAC,IAAE1B,EAAAA,CAAE,CAAC,IAAG,CAAA;AAAA,MAAC;AAAA,IAAC;AAAC,IAAA,IAAG4B,EAAAA,CAAE,MAAM,CAACJ,EAAAA,EAAEC,OAAID,EAAAA,CAAE,IAAA,GAAKC,GAAE,IAAA,GAAK,EAAA,GAAGD,GAAE,IAAA,GAAKC,EAAAA,CAAE,OAAK,CAAA,GAAED,EAAAA,CAAE,IAAEC,EAAAA,CAAE,CAAA,GAAE,KAAGD,EAAAA,CAAE,CAAA,GAAEC,GAAE,CAAA,GAAE,CAAA,GAAED,GAAE,IAAA,KAAOC,EAAAA,CAAE,OAAK,CAAA,GAAA,CAAGD,EAAAA,CAAE,OAAKC,EAAAA,CAAE,IAAA,IAAM,KAAK,GAAA,CAAID,EAAAA,CAAE,OAAKC,EAAAA,CAAE,IAAI,GAAE,EAAE,CAACG,EAAAA,CAAE,MAAA,EAAO,OAAO/B,EAAAA;AAAE,IAAA,IAAIgC,EAAAA,GAAE,EAAC,EAAEjC,EAAAA,GAAEgC,GAAE,CAAC,CAAA,CAAE,MAAK9B,EAAAA,GAAE,CAAA;AAAE,IAAA,OAAK+B,EAAAA,CAAE,MAAA,IAAQD,EAAAA,CAAE,MAAA,IAAQ;AAAC,MAAA,IAAGA,GAAE,MAAA,EAAO;AAAC,QAAA,IAAIJ,EAAAA,GAAE,EAAA;AAAG,QAAA,KAAA,IAAQC,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEG,EAAAA,CAAE,MAAA,IAAQ,EAAEA,EAAAA,CAAEH,EAAC,CAAA,CAAE,IAAA,GAAK7B,EAAAA,CAAAA,EAAG6B,EAAAA,EAAAA,EAAID,EAAAA,GAAEC,EAAAA;AAAE,QAAAG,EAAAA,CAAE,OAAO,CAAA,EAAEJ,EAAAA,GAAE,CAAC,CAAA,CAAE,OAAA,EAAS,CAAAA,EAAAA,KAAG;AAAC,UAAAK,GAAE,IAAA,CAAK,EAAC,GAAEjC,EAAAA,EAAE,IAAA,EAAK4B,IAAE,CAAA;AAAA,QAAC,CAAA,EAAE;AAAA,MAAC;AAAC,MAAA,IAAGK,EAAAA,GAAEA,EAAAA,CAAE,MAAA,EAAQ,CAAAL,EAAAA,KAAG,EAAEA,EAAAA,CAAE,IAAA,CAAK,IAAA,IAAM5B,EAAAA,CAAAA,EAAG,EAAEiC,EAAAA,CAAE,MAAM,CAACL,EAAAA,EAAEC,EAAAA,KAAID,EAAAA,CAAE,IAAA,CAAK,CAAA,KAAIC,EAAAA,CAAE,IAAA,CAAK,CAAA,GAAE,CAAA,GAAA,CAAGD,EAAAA,CAAE,IAAA,CAAK,CAAA,GAAEC,EAAAA,CAAE,KAAK,CAAA,IAAG,IAAA,CAAK,GAAA,CAAID,EAAAA,CAAE,IAAA,CAAK,CAAA,GAAEC,GAAE,IAAA,CAAK,CAAC,CAAA,EAAE,EAAA,CAAG,CAAA,KAAIC,EAAAA,IAAG5B,KAAEE,EAAAA,IAAG,CAAA,KAAI6B,EAAAA,CAAE,MAAA,GAAO,CAAA,EAAE,KAAA,IAAQL,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEK,EAAAA,CAAE,MAAA,EAAOL,EAAAA,IAAG,CAAA,EAAE;AAAC,QAAA,MAAMC,KAAED,EAAAA,GAAE,CAAA;AAAE,QAAA,IAAGC,EAAAA,IAAGI,GAAE,MAAA,EAAO;AAAM,QAAA,MAAM7B,EAAAA,GAAE6B,GAAEL,EAAC,CAAA,CAAE,MAAKE,EAAAA,GAAEG,EAAAA,CAAEJ,EAAC,CAAA,CAAE,IAAA;AAAK,QAAA5B,GAAE,IAAA,CAAK,CAAC,CAAC,IAAA,CAAK,KAAA,CAAMG,GAAE,CAAC,CAAA,EAAEJ,EAAC,CAAA,EAAE,CAAC,KAAK,KAAA,CAAM8B,EAAAA,CAAE,CAAC,CAAA,EAAE9B,EAAC,CAAC,CAAC,CAAA;AAAA,MAAC;AAAC,MAAAA,EAAAA,IAAG8B,EAAAA,EAAEG,EAAAA,CAAE,OAAA,EAAS,CAAAL,EAAAA,KAAG;AAAC,QAAAA,EAAAA,CAAE,KAAK,CAAA,GAAEA,EAAAA,CAAE,KAAK,CAAA,GAAEE,EAAAA,GAAEF,GAAE,IAAA,CAAK,MAAA;AAAA,MAAM,GAAE,EAAE1B,EAAAA,EAAAA;AAAA,IAAG;AAAC,IAAA,OAAOD,EAAAA;AAAA,EAAC,CAAA,EAAED,EAAAA,EAAEiC,EAAAA,EAAEhC,EAAC,CAAA;AAAE,EAAA,IAAG+B,EAAAA,EAAE;AAAC,IAAA,KAAA,MAAUH,MAAK7B,EAAAA,EAAE,CAAA,CAAE6B,EAAAA,EAAE3B,EAAAA,EAAE,CAAC8B,EAAC,CAAA;AAAE,IAAA,CAAA,CAAC,SAASH,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,MAAA,MAAMC,KAAE,EAAC;AAAE,MAAAF,EAAAA,CAAE,OAAA,EAAS,CAAAD,EAAAA,KAAGG,EAAAA,CAAE,IAAA,CAAK,GAAGH,EAAC,CAAA,EAAE,EAAE,CAAA,CAAEG,EAAAA,EAAE3B,IAAE0B,EAAC,CAAA;AAAA,IAAC,CAAA,EAAEI,EAAAA,EAAEhC,EAAAA,EAAE,CAAC8B,EAAC,CAAA;AAAA,EAAC;AAAC,EAAA,OAAOE,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAEN,IAAEC,EAAAA,EAAE;AAAC,EAAA,IAAIC,EAAAA;AAAE,EAAA,MAAMC,EAAAA,GAAEF,GAAE,YAAA,GAAa,EAAA;AAAG,EAAA,IAAI5B,KAAE4B,EAAAA,CAAE,UAAA;AAAW,EAAA5B,EAAAA,GAAE,CAAA,KAAIA,EAAAA,GAAE,CAAA,GAAE4B,EAAAA,CAAE,WAAA,CAAA,EAAa5B,EAAAA,GAAE,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAIA,EAAAA,EAAE,GAAE,CAAC,CAAA;AAAE,EAAA,IAAI+B,EAAAA,GAAE,CAAA;AAAE,EAAA,OAAOH,EAAAA,CAAE,SAAA,IAAW,CAAA,IAAA,CAAA,CAAK,IAAA,MAAQC,EAAAA,GAAED,GAAE,UAAA,CAAA,IAAa,MAAA,KAASC,EAAAA,GAAE,MAAA,GAAOA,EAAAA,CAAE,IAAA,OAAS,IAAA,CAAK,MAAA,EAAO,IAAG,GAAA,KAAKE,EAAAA,GAAE/B,EAAAA,CAAAA,EAAG,EAAE2B,EAAAA,EAAE3B,EAAAA,EAAE8B,EAAAA,EAAEC,EAAAA,IAAG,CAAC,CAAA;AAAC;AAAC,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYJ,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,MAAA,GAAOA,EAAAA;AAAA,EAAC;AAAA,EAAC,YAAA,CAAaA,IAAEC,EAAAA,EAAE;AAAC,IAAA,OAAO,IAAA,CAAK,aAAA,CAAcD,EAAAA,EAAEC,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,aAAA,CAAcD,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,CAAA,CAAEwB,EAAAA,EAAEC,EAAC,CAAA;AAAE,IAAA,OAAM,EAAC,MAAK,YAAA,EAAa,GAAA,EAAI,KAAK,WAAA,CAAYzB,EAAAA,EAAEyB,EAAC,CAAA,EAAC;AAAA,EAAC;AAAA,EAAC,WAAA,CAAYD,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,KAAE,EAAC;AAAE,IAAA,KAAA,MAAU0B,EAAAA,IAAKF,EAAAA,EAAExB,EAAAA,CAAE,IAAA,CAAK,GAAG,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc0B,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAED,EAAC,CAAC,CAAA;AAAE,IAAA,OAAOzB,EAAAA;AAAA,EAAC;AAAC,CAAA;AAAC,SAAS,EAAEwB,EAAAA,EAAE;AAAC,EAAA,MAAMC,KAAED,EAAAA,CAAE,CAAC,CAAA,EAAExB,EAAAA,GAAEwB,GAAE,CAAC,CAAA;AAAE,EAAA,OAAO,IAAA,CAAK,KAAK,IAAA,CAAK,GAAA,CAAIC,GAAE,CAAC,CAAA,GAAEzB,GAAE,CAAC,CAAA,EAAE,CAAC,CAAA,GAAE,IAAA,CAAK,IAAIyB,EAAAA,CAAE,CAAC,IAAEzB,EAAAA,CAAE,CAAC,CAAA,EAAE,CAAC,CAAC,CAAA;AAAC;AAAC,IAAM,CAAA,GAAN,cAAgB,CAAA,CAAC;AAAA,EAAC,YAAA,CAAawB,IAAEC,EAAAA,EAAE;AAAC,IAAA,IAAIzB,KAAEyB,EAAAA,CAAE,UAAA;AAAW,IAAAzB,EAAAA,GAAE,CAAA,KAAIA,EAAAA,GAAE,CAAA,GAAEyB,EAAAA,CAAE,cAAazB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIA,EAAAA,EAAE,GAAE,CAAA;AAAE,IAAA,MAAM2B,EAAAA,GAAE,CAAA,CAAEH,EAAAA,EAAE,MAAA,CAAO,OAAO,EAAC,EAAEC,EAAAA,EAAE,EAAC,YAAWzB,EAAAA,EAAE,CAAC,CAAA,EAAE4B,KAAE,IAAA,CAAK,EAAA,GAAG,GAAA,GAAIH,EAAAA,CAAE,cAAaI,EAAAA,GAAE,EAAC,EAAEjC,EAAAA,GAAE,MAAGI,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI4B,EAAC,GAAE9B,EAAAA,GAAE,GAAA,GAAGE,EAAAA,GAAE,IAAA,CAAK,IAAI4B,EAAC,CAAA;AAAE,IAAA,KAAA,MAAS,CAACJ,IAAEC,EAAC,CAAA,IAAIE,IAAE,CAAA,CAAE,CAACH,IAAEC,EAAC,CAAC,KAAGI,EAAAA,CAAE,IAAA,CAAK,CAAC,CAACL,EAAAA,CAAE,CAAC,CAAA,GAAE5B,EAAAA,EAAE4B,GAAE,CAAC,CAAA,GAAE1B,EAAC,CAAA,EAAE,CAAC,GAAG2B,EAAC,CAAC,GAAE,CAAC,CAACD,GAAE,CAAC,CAAA,GAAE5B,IAAE4B,EAAAA,CAAE,CAAC,IAAE1B,EAAC,CAAA,EAAE,CAAC,GAAG2B,EAAC,CAAC,CAAC,CAAA;AAAE,IAAA,OAAM,EAAC,MAAK,YAAA,EAAa,GAAA,EAAI,KAAK,WAAA,CAAYI,EAAAA,EAAEJ,EAAC,CAAA,EAAC;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,CAAA,GAAN,cAAgB,CAAA,CAAC;AAAA,EAAC,YAAA,CAAaD,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,KAAK,aAAA,CAAcwB,EAAAA,EAAEC,EAAC,CAAA,EAAEC,EAAAA,GAAE,MAAA,CAAO,MAAA,CAAO,EAAC,EAAED,IAAE,EAAC,YAAA,EAAaA,EAAAA,CAAE,YAAA,GAAa,EAAA,EAAG,GAAEE,EAAAA,GAAE,IAAA,CAAK,aAAA,CAAcH,EAAAA,EAAEE,EAAC,CAAA;AAAE,IAAA,OAAO1B,GAAE,GAAA,GAAIA,EAAAA,CAAE,IAAI,MAAA,CAAO2B,EAAAA,CAAE,GAAG,CAAA,EAAE3B,EAAAA;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYwB,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,MAAA,GAAOA,EAAAA;AAAA,EAAC;AAAA,EAAC,YAAA,CAAaA,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,GAAE,MAAA,CAAO,MAAA,CAAO,EAAC,EAAEA,EAAAA,EAAE,EAAC,YAAA,EAAa,CAAA,EAAE,CAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,WAAA,CAAYzB,EAAAA,EAAEyB,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,WAAA,CAAYD,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,KAAE,EAAC;AAAE,IAAA,IAAI0B,KAAED,EAAAA,CAAE,UAAA;AAAW,IAAAC,EAAAA,GAAE,CAAA,KAAIA,EAAAA,GAAE,CAAA,GAAED,EAAAA,CAAE,cAAaC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIA,EAAAA,EAAE,GAAE,CAAA;AAAE,IAAA,IAAIC,KAAEF,EAAAA,CAAE,UAAA;AAAW,IAAAE,EAAAA,GAAE,CAAA,KAAIA,EAAAA,GAAEF,EAAAA,CAAE,WAAA,GAAY,CAAA,CAAA;AAAG,IAAA,MAAMG,KAAEF,EAAAA,GAAE,CAAA;AAAE,IAAA,KAAA,MAAUG,MAAKL,EAAAA,EAAE;AAAC,MAAA,MAAMA,KAAE,CAAA,CAAEK,EAAC,GAAEjC,EAAAA,GAAE4B,EAAAA,GAAEE,IAAE5B,EAAAA,GAAE,IAAA,CAAK,KAAKF,EAAC,CAAA,GAAE,GAAEkC,EAAAA,GAAEN,EAAAA,GAAE1B,KAAE4B,EAAAA,EAAEK,EAAAA,GAAAA,CAAGF,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,KAAG,CAAA,GAAEH,EAAAA,GAAE,GAAEM,EAAAA,GAAE,IAAA,CAAK,IAAIH,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AAAE,MAAA,KAAA,IAAQL,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAE1B,EAAAA,EAAE0B,EAAAA,EAAAA,EAAI;AAAC,QAAA,MAAM3B,EAAAA,GAAEmC,EAAAA,GAAEF,EAAAA,GAAEN,EAAAA,GAAEE,EAAAA,EAAEG,EAAAA,GAAEE,EAAAA,GAAEH,EAAAA,GAAE,CAAA,GAAE,IAAA,CAAK,MAAA,EAAO,GAAEA,EAAAA,EAAEhC,EAAAA,GAAEC,EAAAA,GAAE+B,EAAAA,GAAE,CAAA,GAAE,IAAA,CAAK,MAAA,EAAO,GAAEA,EAAAA,EAAE9B,EAAAA,GAAE,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ+B,EAAAA,EAAEjC,EAAAA,EAAE+B,EAAAA,EAAEA,IAAEF,EAAC,CAAA;AAAE,QAAAzB,EAAAA,CAAE,IAAA,CAAK,GAAGF,EAAAA,CAAE,GAAG,CAAA;AAAA,MAAC;AAAA,IAAC;AAAC,IAAA,OAAM,EAAC,IAAA,EAAK,YAAA,EAAa,GAAA,EAAIE,EAAAA,EAAC;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYwB,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,MAAA,GAAOA,EAAAA;AAAA,EAAC;AAAA,EAAC,YAAA,CAAaA,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,CAAA,CAAEwB,EAAAA,EAAEC,EAAC,CAAA;AAAE,IAAA,OAAM,EAAC,MAAK,YAAA,EAAa,GAAA,EAAI,KAAK,UAAA,CAAWzB,EAAAA,EAAEyB,EAAC,CAAA,EAAC;AAAA,EAAC;AAAA,EAAC,UAAA,CAAWD,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAEyB,EAAAA,CAAE,UAAA,GAAW,CAAA,GAAEA,EAAAA,CAAE,UAAA,GAAW,CAAA,GAAE,CAAA,GAAEA,EAAAA,CAAE,WAAA,GAAYA,EAAAA,CAAE,UAAA,GAAWA,EAAAA,CAAE,UAAA,EAAWC,EAAAA,GAAED,EAAAA,CAAE,OAAA,GAAQ,CAAA,GAAEA,EAAAA,CAAE,UAAA,GAAW,CAAA,GAAE,CAAA,GAAEA,EAAAA,CAAE,WAAA,GAAYA,EAAAA,CAAE,UAAA,GAAWA,EAAAA,CAAE,OAAA,EAAQE,KAAE,EAAC;AAAE,IAAA,OAAOH,EAAAA,CAAE,OAAA,EAAS,CAAAA,EAAAA,KAAG;AAAC,MAAA,MAAMI,KAAE,CAAA,CAAEJ,EAAC,CAAA,EAAEK,EAAAA,GAAE,KAAK,KAAA,CAAMD,EAAAA,IAAG5B,EAAAA,GAAE0B,EAAAA,CAAE,GAAE9B,EAAAA,GAAAA,CAAGgC,EAAAA,GAAEF,EAAAA,GAAEG,EAAAA,IAAG7B,KAAE0B,EAAAA,CAAAA,IAAI,CAAA;AAAE,MAAA,IAAI5B,KAAE0B,EAAAA,CAAE,CAAC,CAAA,EAAEM,EAAAA,GAAEN,GAAE,CAAC,CAAA;AAAE,MAAA1B,EAAAA,CAAE,CAAC,CAAA,GAAEgC,EAAAA,CAAE,CAAC,CAAA,KAAIhC,EAAAA,GAAE0B,EAAAA,CAAE,CAAC,CAAA,EAAEM,EAAAA,GAAEN,EAAAA,CAAE,CAAC,CAAA,CAAA;AAAG,MAAA,MAAMO,EAAAA,GAAE,IAAA,CAAK,IAAA,CAAA,CAAMD,EAAAA,CAAE,CAAC,CAAA,GAAEhC,EAAAA,CAAE,CAAC,CAAA,KAAIgC,EAAAA,CAAE,CAAC,CAAA,GAAEhC,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAA;AAAE,MAAA,KAAA,IAAQ0B,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEK,EAAAA,EAAEL,EAAAA,EAAAA,EAAI;AAAC,QAAA,MAAM3B,EAAAA,GAAE2B,EAAAA,IAAGxB,EAAAA,GAAE0B,EAAAA,CAAAA,EAAGE,EAAAA,GAAE/B,EAAAA,GAAEG,EAAAA,EAAE6B,EAAAA,GAAE,CAAC/B,EAAAA,CAAE,CAAC,CAAA,GAAED,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIkC,EAAC,CAAA,GAAEnC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAImC,EAAC,CAAA,EAAEjC,EAAAA,CAAE,CAAC,CAAA,GAAED,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIkC,EAAC,CAAA,GAAEnC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAImC,EAAC,CAAC,CAAA,EAAED,EAAAA,GAAE,CAAChC,EAAAA,CAAE,CAAC,CAAA,GAAE8B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIG,EAAC,IAAEnC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAImC,EAAC,CAAA,EAAEjC,EAAAA,CAAE,CAAC,CAAA,GAAE8B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIG,EAAC,CAAA,GAAEnC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAImC,EAAC,CAAC,CAAA;AAAE,QAAAJ,GAAE,IAAA,CAAK,GAAG,KAAK,MAAA,CAAO,aAAA,CAAcE,GAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAEC,GAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAEL,EAAC,CAAC,CAAA;AAAA,MAAC;AAAA,IAAC,GAAE,EAAEE,EAAAA;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYH,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,MAAA,GAAOA,EAAAA;AAAA,EAAC;AAAA,EAAC,YAAA,CAAaA,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAEyB,EAAAA,CAAE,UAAA,GAAW,CAAA,GAAE,CAAA,GAAEA,EAAAA,CAAE,WAAA,GAAYA,EAAAA,CAAE,UAAA,EAAWE,EAAAA,GAAEF,EAAAA,CAAE,YAAA,GAAa,IAAEzB,EAAAA,GAAEyB,EAAAA,CAAE,YAAA,EAAa5B,EAAAA,GAAE,CAAA,CAAE2B,EAAAA,EAAEC,EAAAA,GAAE,MAAA,CAAO,MAAA,CAAO,EAAC,EAAEA,EAAAA,EAAE,EAAC,UAAA,EAAWzB,EAAAA,GAAE2B,EAAAA,EAAE,CAAC,CAAA;AAAE,IAAA,OAAM,EAAC,MAAK,YAAA,EAAa,GAAA,EAAI,KAAK,WAAA,CAAY9B,EAAAA,EAAE8B,EAAAA,EAAEF,EAAC,CAAA,EAAC;AAAA,EAAC;AAAA,EAAC,WAAA,CAAYD,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,IAAA,MAAM0B,KAAE,EAAC;AAAE,IAAA,OAAOF,EAAAA,CAAE,OAAA,EAAS,CAAAA,EAAAA,KAAG;AAAC,MAAA,MAAMG,EAAAA,GAAE,EAAEH,EAAC,CAAA,EAAEI,KAAE,IAAA,CAAK,KAAA,CAAMD,EAAAA,IAAG,CAAA,GAAEF,EAAAA,CAAE,CAAA;AAAE,MAAA,IAAII,KAAEL,EAAAA,CAAE,CAAC,CAAA,EAAE5B,EAAAA,GAAE4B,GAAE,CAAC,CAAA;AAAE,MAAAK,EAAAA,CAAE,CAAC,CAAA,GAAEjC,EAAAA,CAAE,CAAC,CAAA,KAAIiC,EAAAA,GAAEL,EAAAA,CAAE,CAAC,CAAA,EAAE5B,EAAAA,GAAE4B,EAAAA,CAAE,CAAC,CAAA,CAAA;AAAG,MAAA,MAAM1B,EAAAA,GAAE,IAAA,CAAK,IAAA,CAAA,CAAMF,EAAAA,CAAE,CAAC,CAAA,GAAEiC,EAAAA,CAAE,CAAC,CAAA,KAAIjC,EAAAA,CAAE,CAAC,CAAA,GAAEiC,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAA;AAAE,MAAA,KAAA,IAAQL,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEI,EAAAA,EAAEJ,EAAAA,EAAAA,EAAI;AAAC,QAAA,MAAMG,KAAE,CAAA,GAAEH,EAAAA,GAAEC,EAAAA,EAAE5B,EAAAA,GAAE,KAAG2B,EAAAA,GAAE,CAAA,CAAA,GAAGC,EAAAA,EAAEG,EAAAA,GAAE,KAAK,IAAA,CAAK,CAAA,GAAE,KAAK,GAAA,CAAIH,EAAAA,EAAE,CAAC,CAAC,CAAA,EAAE7B,EAAAA,GAAE,CAACiC,GAAE,CAAC,CAAA,GAAEF,EAAAA,GAAE,IAAA,CAAK,IAAI7B,EAAC,CAAA,EAAE+B,EAAAA,CAAE,CAAC,IAAEF,EAAAA,GAAE,IAAA,CAAK,IAAI7B,EAAC,CAAC,GAAEgC,EAAAA,GAAE,CAACD,EAAAA,CAAE,CAAC,IAAEhC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIC,EAAC,GAAE+B,EAAAA,CAAE,CAAC,CAAA,GAAEhC,EAAAA,GAAE,KAAK,GAAA,CAAIC,EAAC,CAAC,CAAA,EAAEiC,EAAAA,GAAE,CAACnC,EAAAA,CAAE,CAAC,CAAA,GAAEgC,EAAAA,GAAE,KAAK,GAAA,CAAI9B,EAAAA,GAAE,IAAA,CAAK,EAAA,GAAG,CAAC,CAAA,EAAEF,EAAAA,CAAE,CAAC,CAAA,GAAEgC,KAAE,IAAA,CAAK,GAAA,CAAI9B,KAAE,IAAA,CAAK,EAAA,GAAG,CAAC,CAAC,CAAA;AAAE,QAAA4B,GAAE,IAAA,CAAK,GAAG,IAAA,CAAK,MAAA,CAAO,cAAc9B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEmC,EAAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAE/B,EAAC,CAAA,EAAE,GAAG,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc+B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAED,GAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAE9B,EAAC,CAAC,CAAA;AAAA,MAAC;AAAA,IAAC,GAAE,EAAE0B,EAAAA;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,IAAE,EAAC;AAAE,IAAMM,KAAN,MAAO;AAAA,EAAC,YAAYR,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,IAAA,GAAKA,EAAAA;AAAA,EAAC;AAAA,EAAC,IAAA,GAAM;AAAC,IAAA,OAAO,KAAK,IAAA,GAAA,CAAM,CAAA,IAAG,EAAA,GAAG,CAAA,IAAG,KAAK,IAAA,GAAK,IAAA,CAAK,IAAA,CAAK,KAAA,EAAM,KAAK,IAAI,CAAA,CAAA,IAAI,CAAA,IAAG,EAAA,GAAG,KAAK,MAAA,EAAO;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,CAAA,GAAE,CAAA;AAAR,IAAU,CAAA,GAAE,CAAA;AAAZ,IAAc,CAAA,GAAE,CAAA;AAAhB,IAAkB,IAAE,EAAC,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAE,CAAA,EAAE,GAAE,CAAA,EAAC;AAAE,SAAS,CAAA,CAAEA,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAOD,GAAE,IAAA,KAAOC,EAAAA;AAAC;AAAC,SAAS,EAAED,EAAAA,EAAE;AAAC,EAAA,MAAMC,EAAAA,GAAE,EAAC,EAAEzB,EAAAA,GAAAA,CAAE,SAASwB,EAAAA,EAAE;AAAC,IAAA,MAAMC,KAAE,IAAI,KAAA,EAAA;AAAM,IAAA,OAAK,EAAA,KAAKD,EAAAA,IAAG,IAAGA,EAAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA,EAAEA,EAAAA,GAAEA,EAAAA,CAAE,MAAA,CAAO,MAAA,CAAO,GAAG,MAAM,CAAA;AAAA,SAAA,IAAUA,EAAAA,CAAE,MAAM,2BAA2B,CAAA,EAAEC,EAAAA,CAAEA,EAAAA,CAAE,MAAM,CAAA,GAAE,EAAC,MAAK,CAAA,EAAE,IAAA,EAAK,OAAO,EAAA,EAAE,EAAED,KAAEA,EAAAA,CAAE,MAAA,CAAO,MAAA,CAAO,EAAA,CAAG,MAAM,CAAA;AAAA,SAAM;AAAC,MAAA,IAAG,CAACA,EAAAA,CAAE,KAAA,CAAM,6DAA6D,CAAA,SAAQ,EAAC;AAAE,MAAAC,EAAAA,CAAEA,GAAE,MAAM,CAAA,GAAE,EAAC,IAAA,EAAK,CAAA,EAAE,MAAK,CAAA,EAAG,UAAA,CAAW,OAAO,EAAE,CAAC,IAAE,EAAED,EAAAA,GAAEA,GAAE,MAAA,CAAO,MAAA,CAAO,GAAG,MAAM,CAAA;AAAA,IAAC;AAAC,IAAA,OAAOC,EAAAA,CAAEA,GAAE,MAAM,CAAA,GAAE,EAAC,IAAA,EAAK,CAAA,EAAE,IAAA,EAAK,EAAA,EAAE,EAAEA,EAAAA;AAAA,EAAC,GAAED,EAAC,CAAA;AAAE,EAAA,IAAIE,KAAE,KAAA,EAAMC,EAAAA,GAAE,CAAA,EAAE9B,EAAAA,GAAEG,GAAE2B,EAAC,CAAA;AAAE,EAAA,OAAK,CAAC,CAAA,CAAE9B,EAAAA,EAAE,CAAC,CAAA,IAAG;AAAC,IAAA,IAAI+B,EAAAA,GAAE,CAAA;AAAE,IAAA,MAAMC,KAAE,EAAC;AAAE,IAAA,IAAG,UAAQH,EAAAA,EAAE;AAAC,MAAA,IAAG,GAAA,KAAM7B,GAAE,IAAA,IAAM,GAAA,KAAMA,GAAE,IAAA,EAAK,OAAO,CAAA,CAAE,MAAA,GAAO2B,EAAC,CAAA;AAAE,MAAAG,MAAIC,EAAAA,GAAE,CAAA,CAAE/B,GAAE,IAAI,CAAA,EAAE6B,KAAE7B,EAAAA,CAAE,IAAA;AAAA,IAAI,OAAM,CAAA,CAAEA,EAAAA,EAAE,CAAC,CAAA,GAAE+B,KAAE,CAAA,CAAEF,EAAC,CAAA,IAAGC,EAAAA,EAAAA,EAAIC,KAAE,CAAA,CAAE/B,EAAAA,CAAE,IAAI,CAAA,EAAE6B,KAAE7B,EAAAA,CAAE,IAAA,CAAA;AAAM,IAAA,IAAG,EAAE8B,KAAEC,EAAAA,GAAE5B,EAAAA,CAAE,SAAQ,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAE,IAAA,KAAA,IAAQwB,EAAAA,GAAEG,EAAAA,EAAEH,EAAAA,GAAEG,EAAAA,GAAEC,IAAEJ,EAAAA,EAAAA,EAAI;AAAC,MAAA,MAAMC,EAAAA,GAAEzB,GAAEwB,EAAC,CAAA;AAAE,MAAA,IAAG,CAAC,CAAA,CAAEC,EAAAA,EAAE,CAAC,CAAA,EAAE,MAAM,IAAI,KAAA,CAAM,sBAAA,GAAuBC,EAAAA,GAAE,GAAA,GAAID,EAAAA,CAAE,IAAI,CAAA;AAAE,MAAAI,EAAAA,CAAEA,EAAAA,CAAE,MAAM,CAAA,GAAE,CAACJ,EAAAA,CAAE,IAAA;AAAA,IAAI;AAAC,IAAA,IAAG,QAAA,IAAU,OAAO,CAAA,CAAEC,EAAC,GAAE,MAAM,IAAI,KAAA,CAAM,eAAA,GAAgBA,EAAC,CAAA;AAAE,IAAA;AAAC,MAAA,MAAMF,EAAAA,GAAE,EAAC,GAAA,EAAIE,EAAAA,EAAE,MAAKG,EAAAA,EAAC;AAAE,MAAAJ,GAAE,IAAA,CAAKD,EAAC,CAAA,EAAEG,EAAAA,IAAGC,IAAE/B,EAAAA,GAAEG,EAAAA,CAAE2B,EAAC,CAAA,EAAE,QAAMD,EAAAA,KAAIA,EAAAA,GAAE,GAAA,CAAA,EAAK,GAAA,KAAMA,OAAIA,EAAAA,GAAE,GAAA,CAAA;AAAA,IAAI;AAAA,EAAC;AAAC,EAAA,OAAOD,EAAAA;AAAC;AAAC,SAAS,EAAED,EAAAA,EAAE;AAAC,EAAA,IAAIC,KAAE,CAAA,EAAEzB,EAAAA,GAAE,CAAA,EAAE0B,EAAAA,GAAE,GAAEC,EAAAA,GAAE,CAAA;AAAE,EAAA,MAAM9B,KAAE,EAAC;AAAE,EAAA,KAAA,MAAS,EAAC,KAAI+B,EAAAA,EAAE,IAAA,EAAKC,IAAC,IAAIL,EAAAA,UAASI,EAAAA;AAAE,IAAC,KAAI,GAAA;AAAI,MAAA/B,EAAAA,CAAE,KAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,CAAA,EAAE,CAACJ,IAAEzB,EAAC,CAAA,GAAE6B,IAAE,CAACH,EAAAA,EAAEC,EAAC,CAAA,GAAEE,EAAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAJ,EAAAA,IAAGI,GAAE,CAAC,CAAA,EAAE7B,MAAG6B,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC4B,EAAAA,EAAEzB,EAAC,GAAE,CAAA,EAAE0B,EAAAA,GAAED,EAAAA,EAAEE,EAAAA,GAAE3B,EAAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAH,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,GAAE,CAAA,EAAE,CAACJ,EAAAA,EAAEzB,EAAC,CAAA,GAAE6B,EAAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAJ,MAAGI,EAAAA,CAAE,CAAC,GAAE7B,EAAAA,IAAG6B,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC4B,EAAAA,EAAEzB,EAAC,GAAE,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAH,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,GAAEJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAE7B,EAAAA,GAAE6B,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA,EAAI;AAAC,MAAA,MAAML,EAAAA,GAAEK,EAAAA,CAAE,GAAA,EAAK,CAACL,EAAAA,EAAEE,EAAAA,KAAIA,EAAAA,GAAE,CAAA,GAAEF,EAAAA,GAAExB,EAAAA,GAAEwB,EAAAA,GAAEC,EAAAA,EAAE;AAAE,MAAA5B,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK2B,EAAAA,EAAE,CAAA,EAAEC,KAAED,EAAAA,CAAE,CAAC,CAAA,EAAExB,EAAAA,GAAEwB,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAK;AAAA,IAAC,KAAI,GAAA;AAAI,MAAA3B,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,GAAEJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAE7B,EAAAA,GAAE6B,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA,EAAI;AAAC,MAAA,MAAML,EAAAA,GAAEK,EAAAA,CAAE,GAAA,EAAK,CAACL,EAAAA,EAAEE,EAAAA,KAAIA,EAAAA,GAAE,CAAA,GAAEF,EAAAA,GAAExB,EAAAA,GAAEwB,EAAAA,GAAEC,EAAAA,EAAE;AAAE,MAAA5B,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK2B,EAAAA,EAAE,CAAA,EAAEC,KAAED,EAAAA,CAAE,CAAC,CAAA,EAAExB,EAAAA,GAAEwB,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAK;AAAA,IAAC,KAAI,GAAA;AAAI,MAAA3B,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,GAAEJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAE7B,EAAAA,GAAE6B,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAJ,EAAAA,IAAGI,EAAAA,CAAE,CAAC,CAAA,EAAE7B,MAAG6B,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,MAAK,CAACgC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAEJ,EAAAA,EAAEzB,EAAC,GAAE,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAH,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,CAAA,EAAEJ,EAAAA,GAAEI,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAJ,EAAAA,IAAGI,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,CAAC4B,EAAC,GAAE,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAA5B,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,CAAA,EAAE7B,EAAAA,GAAE6B,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAA7B,EAAAA,IAAG6B,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,CAACG,EAAC,GAAE,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAH,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,GAAEJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAE7B,EAAAA,GAAE6B,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA,EAAI;AAAC,MAAA,MAAML,EAAAA,GAAEK,EAAAA,CAAE,GAAA,EAAK,CAACL,EAAAA,EAAEE,EAAAA,KAAIA,EAAAA,GAAE,CAAA,GAAEF,EAAAA,GAAExB,EAAAA,GAAEwB,EAAAA,GAAEC,EAAAA,EAAE;AAAE,MAAA5B,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK2B,EAAAA,EAAE,CAAA,EAAEC,KAAED,EAAAA,CAAE,CAAC,CAAA,EAAExB,EAAAA,GAAEwB,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAK;AAAA,IAAC,KAAI,GAAA;AAAI,MAAA3B,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC,GAAGgC,EAAC,CAAA,EAAE,GAAEJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAE7B,EAAAA,GAAE6B,GAAE,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAJ,MAAGI,EAAAA,CAAE,CAAC,GAAE7B,EAAAA,IAAG6B,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAAC4B,EAAAA,EAAEzB,EAAC,GAAE,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAA,IAAI,KAAI,GAAA;AAAI,MAAAH,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,EAAC,EAAE,CAAA,EAAE4B,EAAAA,GAAEC,EAAAA,EAAE1B,EAAAA,GAAE2B,EAAAA;AAAA;AAAE,EAAA,OAAO9B,EAAAA;AAAC;AAAC,SAAS,EAAE2B,EAAAA,EAAE;AAAC,EAAA,MAAMC,KAAE,EAAC;AAAE,EAAA,IAAIzB,EAAAA,GAAE,EAAA,EAAG0B,EAAAA,GAAE,CAAA,EAAEC,EAAAA,GAAE,CAAA,EAAE9B,EAAAA,GAAE,CAAA,EAAE+B,EAAAA,GAAE,CAAA,EAAEC,EAAAA,GAAE,CAAA,EAAEjC,EAAAA,GAAE,CAAA;AAAE,EAAA,KAAA,MAAS,EAAC,GAAA,EAAIE,EAAAA,EAAE,IAAA,EAAKgC,EAAAA,MAAKN,EAAAA,EAAE;AAAC,IAAA,QAAO1B,EAAAA;AAAE,MAAC,KAAI,GAAA;AAAI,QAAA2B,EAAAA,CAAE,KAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC,GAAGK,EAAC,CAAA,EAAE,CAAA,EAAE,CAACJ,IAAEC,EAAC,CAAA,GAAEG,IAAE,CAACjC,EAAAA,EAAE+B,EAAC,CAAA,GAAEE,EAAAA;AAAE,QAAA;AAAA,MAAM,KAAI,GAAA;AAAI,QAAAL,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,CAAC,GAAGK,EAAC,CAAA,EAAE,CAAA,EAAEJ,EAAAA,GAAEI,GAAE,CAAC,CAAA,EAAEH,EAAAA,GAAEG,EAAAA,CAAE,CAAC,CAAA,EAAED,EAAAA,GAAEC,EAAAA,CAAE,CAAC,CAAA,EAAElC,EAAAA,GAAEkC,EAAAA,CAAE,CAAC,CAAA;AAAE,QAAA;AAAA,MAAM,KAAI,GAAA;AAAI,QAAAL,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC,GAAGK,EAAC,GAAE,CAAA,EAAE,CAACJ,EAAAA,EAAEC,EAAC,CAAA,GAAEG,EAAAA;AAAE,QAAA;AAAA,MAAM,KAAI,GAAA;AAAI,QAAAJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAEL,GAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,CAACC,EAAAA,EAAEC,EAAC,GAAE,CAAA;AAAE,QAAA;AAAA,MAAM,KAAI,GAAA;AAAI,QAAAA,EAAAA,GAAEG,EAAAA,CAAE,CAAC,CAAA,EAAEL,GAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,CAACC,EAAAA,EAAEC,EAAC,GAAE,CAAA;AAAE,QAAA;AAAA,MAAM,KAAI,GAAA,EAAI;AAAC,QAAA,IAAIH,EAAAA,GAAE,GAAE3B,EAAAA,GAAE,CAAA;AAAE,QAAA,GAAA,KAAMG,MAAG,GAAA,KAAMA,EAAAA,IAAGwB,KAAEE,EAAAA,IAAGA,EAAAA,GAAEG,KAAGhC,EAAAA,GAAE8B,EAAAA,IAAGA,KAAE/B,EAAAA,CAAAA,KAAK4B,EAAAA,GAAEE,IAAE7B,EAAAA,GAAE8B,EAAAA,CAAAA,EAAGF,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAK,CAACD,EAAAA,EAAE3B,EAAAA,EAAE,GAAGiC,EAAC,CAAA,EAAE,CAAA,EAAED,EAAAA,GAAEC,GAAE,CAAC,CAAA,EAAElC,KAAEkC,EAAAA,CAAE,CAAC,GAAEJ,EAAAA,GAAEI,EAAAA,CAAE,CAAC,CAAA,EAAEH,EAAAA,GAAEG,GAAE,CAAC,CAAA;AAAE,QAAA;AAAA,MAAK;AAAA,MAAC,KAAI,GAAA,EAAI;AAAC,QAAA,MAAK,CAACN,EAAAA,EAAE3B,EAAC,CAAA,GAAEiC,EAAAA;AAAE,QAAA,IAAIF,EAAAA,GAAE,GAAE9B,EAAAA,GAAE,CAAA;AAAE,QAAA,GAAA,KAAME,EAAAA,IAAG,GAAA,KAAMA,EAAAA,IAAG4B,EAAAA,GAAEF,EAAAA,IAAGA,EAAAA,GAAEG,EAAAA,CAAAA,EAAG/B,EAAAA,GAAE6B,EAAAA,IAAGA,EAAAA,GAAE/B,EAAAA,CAAAA,KAAKgC,EAAAA,GAAEF,IAAE5B,EAAAA,GAAE6B,EAAAA,CAAAA;AAAG,QAAA,MAAMI,EAAAA,GAAEL,KAAE,CAAA,IAAGE,EAAAA,GAAEF,MAAG,CAAA,EAAEM,EAAAA,GAAEL,EAAAA,GAAE,CAAA,IAAG7B,EAAAA,GAAE6B,EAAAA,CAAAA,GAAG,GAAEhC,EAAAA,GAAE6B,EAAAA,GAAE,KAAGI,EAAAA,GAAEJ,EAAAA,CAAAA,GAAG,GAAElB,EAAAA,GAAET,EAAAA,GAAE,CAAA,IAAGC,EAAAA,GAAED,EAAAA,CAAAA,GAAG,CAAA;AAAE,QAAA4B,EAAAA,CAAE,KAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAACM,EAAAA,EAAEC,EAAAA,EAAErC,EAAAA,EAAEW,EAAAA,EAAEkB,IAAE3B,EAAC,CAAA,EAAE,CAAA,EAAEgC,EAAAA,GAAED,IAAEhC,EAAAA,GAAEE,EAAAA,EAAE4B,EAAAA,GAAEF,EAAAA,EAAEG,EAAAA,GAAE9B,EAAAA;AAAE,QAAA;AAAA,MAAK;AAAA,MAAC,KAAI,GAAA,EAAI;AAAC,QAAA,MAAK,CAAC2B,EAAAA,EAAExB,EAAAA,EAAEH,EAAAA,EAAE+B,EAAC,CAAA,GAAEE,EAAAA,EAAEhC,EAAAA,GAAE4B,EAAAA,GAAE,CAAA,IAAGF,EAAAA,GAAEE,EAAAA,CAAAA,GAAG,CAAA,EAAEK,EAAAA,GAAEJ,EAAAA,GAAE,CAAA,IAAG3B,EAAAA,GAAE2B,EAAAA,CAAAA,GAAG,CAAA,EAAEK,EAAAA,GAAEnC,EAAAA,GAAE,CAAA,IAAG2B,EAAAA,GAAE3B,EAAAA,CAAAA,GAAG,CAAA,EAAEF,EAAAA,GAAEiC,EAAAA,GAAE,CAAA,IAAG5B,KAAE4B,EAAAA,CAAAA,GAAG,CAAA;AAAE,QAAAH,EAAAA,CAAE,KAAK,EAAC,GAAA,EAAI,KAAI,IAAA,EAAK,CAAC3B,EAAAA,EAAEiC,EAAAA,EAAEC,EAAAA,EAAErC,EAAAA,EAAEE,IAAE+B,EAAC,CAAA,EAAE,CAAA,EAAEC,EAAAA,GAAEL,IAAE5B,EAAAA,GAAEI,EAAAA,EAAE0B,EAAAA,GAAE7B,EAAAA,EAAE8B,EAAAA,GAAEC,EAAAA;AAAE,QAAA;AAAA,MAAK;AAAA,MAAC,KAAI,GAAA,EAAI;AAAC,QAAA,MAAMJ,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIM,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE9B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI8B,EAAAA,CAAE,CAAC,CAAC,GAAEjC,EAAAA,GAAEiC,EAAAA,CAAE,CAAC,CAAA,EAAEF,EAAAA,GAAEE,EAAAA,CAAE,CAAC,CAAA,EAAED,KAAEC,EAAAA,CAAE,CAAC,CAAA,EAAElC,EAAAA,GAAEkC,EAAAA,CAAE,CAAC,CAAA,EAAEhC,EAAAA,GAAEgC,GAAE,CAAC,CAAA;AAAE,QAAA,IAAG,CAAA,KAAIN,MAAG,CAAA,KAAIxB,EAAAA,EAAEyB,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,CAACC,EAAAA,EAAEC,EAAAA,EAAE/B,EAAAA,EAAEE,EAAAA,EAAEF,EAAAA,EAAEE,EAAC,GAAE,CAAA,EAAE4B,EAAAA,GAAE9B,EAAAA,EAAE+B,EAAAA,GAAE7B,EAAAA;AAAA,aAAA,IAAU4B,EAAAA,KAAI9B,EAAAA,IAAG+B,EAAAA,KAAI7B,EAAAA,EAAE;AAAC,UAAA,CAAA,CAAE4B,EAAAA,EAAEC,EAAAA,EAAE/B,EAAAA,EAAEE,EAAAA,EAAE0B,EAAAA,EAAExB,EAAAA,EAAEH,EAAAA,EAAE+B,EAAAA,EAAEC,EAAC,CAAA,CAAE,OAAA,EAAS,SAASL,EAAAA,EAAE;AAAC,YAAAC,GAAE,IAAA,CAAK,EAAC,KAAI,GAAA,EAAI,IAAA,EAAKD,IAAE,CAAA;AAAA,UAAC,CAAA,EAAE,EAAEE,EAAAA,GAAE9B,EAAAA,EAAE+B,EAAAA,GAAE7B,EAAAA;AAAA,QAAC;AAAC,QAAA;AAAA,MAAK;AAAA,MAAC,KAAI,GAAA;AAAI,QAAA2B,EAAAA,CAAE,IAAA,CAAK,EAAC,GAAA,EAAI,GAAA,EAAI,IAAA,EAAK,EAAC,EAAE,CAAA,EAAEC,EAAAA,GAAE7B,EAAAA,EAAE8B,EAAAA,GAAEC,EAAAA;AAAA;AAAE,IAAA5B,EAAAA,GAAEF,EAAAA;AAAA,EAAC;AAAC,EAAA,OAAO2B,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAED,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,OAAM,CAACwB,KAAE,IAAA,CAAK,GAAA,CAAIxB,EAAC,CAAA,GAAEyB,EAAAA,GAAE,KAAK,GAAA,CAAIzB,EAAC,GAAEwB,EAAAA,GAAE,IAAA,CAAK,IAAIxB,EAAC,CAAA,GAAEyB,KAAE,IAAA,CAAK,GAAA,CAAIzB,EAAC,CAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,IAAE9B,EAAAA,EAAE+B,EAAAA,EAAEC,EAAAA,EAAEjC,EAAAA,EAAEE,EAAAA,EAAE;AAAC,EAAA,MAAMgC,EAAAA,IAAGC,EAAAA,GAAEH,EAAAA,EAAE,IAAA,CAAK,KAAGG,EAAAA,GAAE,GAAA,CAAA;AAAK,EAAA,IAAIA,EAAAA;AAAE,EAAA,IAAIC,EAAAA,GAAE,EAAC,EAAErC,EAAAA,GAAE,GAAEW,EAAAA,GAAE,CAAA,EAAE2B,EAAAA,GAAE,CAAA,EAAEC,EAAAA,GAAE,CAAA;AAAE,EAAA,IAAGpC,IAAE,CAACH,EAAAA,EAAEW,EAAAA,EAAE2B,EAAAA,EAAEC,EAAC,CAAA,GAAEpC,EAAAA;AAAA,OAAM;AAAC,IAAA,CAAC0B,IAAEC,EAAC,CAAA,GAAE,CAAA,CAAED,EAAAA,EAAEC,IAAE,CAACK,EAAC,CAAA,EAAE,CAAC9B,IAAE0B,EAAC,CAAA,GAAE,EAAE1B,EAAAA,EAAE0B,EAAAA,EAAE,CAACI,EAAC,CAAA;AAAE,IAAA,MAAMF,MAAGJ,EAAAA,GAAExB,EAAAA,IAAG,CAAA,EAAEF,EAAAA,GAAAA,CAAG2B,KAAEC,EAAAA,IAAG,CAAA;AAAE,IAAA,IAAIK,KAAEH,EAAAA,GAAEA,EAAAA,IAAGD,KAAEA,EAAAA,CAAAA,GAAG7B,EAAAA,GAAEA,MAAGD,EAAAA,GAAEA,EAAAA,CAAAA;AAAG,IAAAkC,EAAAA,GAAE,MAAIA,EAAAA,GAAE,IAAA,CAAK,KAAKA,EAAC,CAAA,EAAEJ,EAAAA,IAAGI,EAAAA,EAAElC,EAAAA,IAAGkC,EAAAA,CAAAA;AAAG,IAAA,MAAMC,EAAAA,GAAEL,EAAAA,GAAEA,EAAAA,EAAEQ,EAAAA,GAAEtC,KAAEA,EAAAA,EAAEuC,EAAAA,GAAEJ,EAAAA,GAAEG,EAAAA,GAAEH,EAAAA,GAAElC,EAAAA,GAAEA,EAAAA,GAAEqC,EAAAA,GAAEP,KAAEA,EAAAA,EAAEN,EAAAA,GAAEU,EAAAA,GAAElC,EAAAA,GAAEA,EAAAA,GAAEqC,EAAAA,GAAEP,EAAAA,GAAEA,EAAAA,EAAES,MAAGR,EAAAA,KAAIjC,EAAAA,GAAE,EAAA,GAAG,CAAA,IAAG,KAAK,IAAA,CAAK,IAAA,CAAK,GAAA,CAAIwC,EAAAA,GAAEd,EAAC,CAAC,CAAA;AAAE,IAAAW,KAAEI,EAAAA,GAAEV,EAAAA,GAAE7B,EAAAA,GAAED,EAAAA,GAAAA,CAAG2B,KAAExB,EAAAA,IAAG,CAAA,EAAEkC,EAAAA,GAAEG,EAAAA,GAAE,CAACxC,EAAAA,GAAE+B,EAAAA,GAAED,MAAGF,EAAAA,GAAEC,EAAAA,IAAG,GAAE/B,EAAAA,GAAE,IAAA,CAAK,IAAA,CAAK,UAAA,CAAA,CAAA,CAAa8B,KAAES,EAAAA,IAAGrC,EAAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA,EAAES,EAAAA,GAAE,IAAA,CAAK,KAAK,UAAA,CAAA,CAAA,CAAaoB,EAAAA,GAAEQ,MAAGrC,EAAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA,EAAE2B,EAAAA,GAAES,OAAItC,EAAAA,GAAE,IAAA,CAAK,EAAA,GAAGA,EAAAA,CAAAA,EAAGK,KAAEiC,EAAAA,KAAI3B,EAAAA,GAAE,IAAA,CAAK,EAAA,GAAGA,KAAGX,EAAAA,GAAE,CAAA,KAAIA,KAAE,CAAA,GAAE,IAAA,CAAK,KAAGA,EAAAA,CAAAA,EAAGW,EAAAA,GAAE,CAAA,KAAIA,EAAAA,GAAE,IAAE,IAAA,CAAK,EAAA,GAAGA,EAAAA,CAAAA,EAAGV,EAAAA,IAAGD,KAAEW,EAAAA,KAAIX,EAAAA,IAAG,CAAA,GAAE,IAAA,CAAK,KAAI,CAACC,EAAAA,IAAGU,KAAEX,EAAAA,KAAIW,EAAAA,IAAG,IAAE,IAAA,CAAK,EAAA,CAAA;AAAA,EAAG;AAAC,EAAA,IAAI6B,KAAE7B,EAAAA,GAAEX,EAAAA;AAAE,EAAA,IAAG,KAAK,GAAA,CAAIwC,EAAC,IAAE,GAAA,GAAI,IAAA,CAAK,KAAG,GAAA,EAAI;AAAC,IAAA,MAAMX,EAAAA,GAAElB,EAAAA,EAAEmB,EAAAA,GAAEzB,EAAAA,EAAE6B,EAAAA,GAAEH,EAAAA;AAAE,IAAApB,EAAAA,GAAEV,MAAGU,EAAAA,GAAEX,EAAAA,GAAEA,KAAE,GAAA,GAAI,IAAA,CAAK,KAAG,GAAA,GAAI,CAAA,GAAEA,KAAE,GAAA,GAAI,IAAA,CAAK,KAAG,GAAA,GAAI,EAAA,EAAGqC,KAAE,CAAA,CAAEhC,EAAAA,GAAEiC,KAAEN,EAAAA,GAAE,IAAA,CAAK,IAAIrB,EAAC,CAAA,EAAEoB,KAAEQ,EAAAA,GAAErC,EAAAA,GAAE,KAAK,GAAA,CAAIS,EAAC,GAAEmB,EAAAA,EAAEI,EAAAA,EAAEF,IAAE9B,EAAAA,EAAE+B,EAAAA,EAAE,GAAEhC,EAAAA,EAAE,CAACU,IAAEkB,EAAAA,EAAES,EAAAA,EAAEC,EAAC,CAAC,CAAA;AAAA,EAAC;AAAC,EAAAC,KAAE7B,EAAAA,GAAEX,EAAAA;AAAE,EAAA,MAAMyC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIzC,EAAC,CAAA,EAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI3B,EAAC,CAAA,EAAE0C,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI/B,EAAC,CAAA,EAAEgC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIhC,EAAC,CAAA,EAAEiC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIJ,EAAAA,GAAE,CAAC,CAAA,EAAEK,EAAAA,GAAE,CAAA,GAAE,IAAEb,EAAAA,GAAEY,EAAAA,EAAEE,EAAAA,GAAE,CAAA,GAAE,CAAA,GAAE5C,EAAAA,GAAE0C,EAAAA,EAAEG,EAAAA,GAAE,CAAClB,EAAAA,EAAEC,EAAC,CAAA,EAAEkB,EAAAA,GAAE,CAACnB,EAAAA,GAAEgB,EAAAA,GAAElB,EAAAA,EAAEG,EAAAA,GAAEgB,EAAAA,GAAEL,EAAC,CAAA,EAAEQ,EAAAA,GAAE,CAAC5C,EAAAA,GAAEwC,EAAAA,GAAEF,EAAAA,EAAEZ,EAAAA,GAAEe,EAAAA,GAAEJ,EAAC,CAAA,EAAEQ,EAAAA,GAAE,CAAC7C,IAAE0B,EAAC,CAAA;AAAE,EAAA,IAAGiB,EAAAA,CAAE,CAAC,CAAA,GAAE,CAAA,GAAED,EAAAA,CAAE,CAAC,CAAA,GAAEC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,GAAE,CAAA,GAAED,EAAAA,CAAE,CAAC,CAAA,GAAEC,EAAAA,CAAE,CAAC,CAAA,EAAE7C,EAAAA,EAAE,OAAM,CAAC6C,EAAAA,EAAEC,EAAAA,EAAEC,EAAC,CAAA,CAAE,MAAA,CAAOb,EAAC,CAAA;AAAE,EAAA;AAAC,IAAAA,KAAE,CAACW,EAAAA,EAAEC,IAAEC,EAAC,CAAA,CAAE,OAAOb,EAAC,CAAA;AAAE,IAAA,MAAMR,KAAE,EAAC;AAAE,IAAA,KAAA,IAAQC,KAAE,CAAA,EAAEA,EAAAA,GAAEO,EAAAA,CAAE,MAAA,EAAOP,MAAG,CAAA,EAAE;AAAC,MAAA,MAAMzB,EAAAA,GAAE,EAAEgC,EAAAA,CAAEP,EAAC,EAAE,CAAC,CAAA,EAAEO,GAAEP,EAAC,CAAA,CAAE,CAAC,CAAA,EAAEK,EAAC,GAAEJ,EAAAA,GAAE,CAAA,CAAEM,GAAEP,EAAAA,GAAE,CAAC,EAAE,CAAC,CAAA,EAAEO,GAAEP,EAAAA,GAAE,CAAC,EAAE,CAAC,CAAA,EAAEK,EAAC,CAAA,EAAEH,EAAAA,GAAE,EAAEK,EAAAA,CAAEP,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,GAAEO,EAAAA,CAAEP,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,GAAEK,EAAC,CAAA;AAAE,MAAAN,EAAAA,CAAE,KAAK,CAACxB,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAE0B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA,IAAC;AAAC,IAAA,OAAOH,EAAAA;AAAA,EAAC;AAAC;AAAC,IAAM,CAAA,GAAE,EAAC,UAAA,EAAW,SAASA,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAO,CAAA,CAAED,IAAEC,EAAC,CAAA;AAAC,CAAA,EAAE,mBAAA,EAAoB,SAASD,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,OAAO,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAC,CAAA;AAAC,CAAA,EAAE,SAAQ,SAASwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,EAAA,MAAM9B,EAAAA,GAAE,CAAA,CAAEG,EAAAA,EAAE0B,EAAAA,EAAEC,EAAC,CAAA;AAAE,EAAA,OAAO,CAAA,CAAEH,EAAAA,EAAEC,EAAAA,EAAEE,EAAAA,EAAE9B,EAAC,CAAA,CAAE,KAAA;AAAK,CAAA,EAAE,eAAc,SAAS2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAO,EAAEH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,IAAE,IAAE,CAAA;AAAC,CAAA,EAAC;AAAE,SAAS,CAAA,CAAEH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAM,EAAC,IAAA,EAAK,MAAA,EAAO,GAAA,EAAI,CAAA,CAAEH,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,EAAC,CAAA,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,MAAM0B,EAAAA,GAAAA,CAAGF,EAAAA,IAAG,EAAC,EAAG,MAAA;AAAO,EAAA,IAAGE,KAAE,CAAA,EAAE;AAAC,IAAA,MAAMC,KAAE,EAAC;AAAE,IAAA,KAAA,IAAQF,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEC,EAAAA,GAAE,GAAED,EAAAA,EAAAA,EAAIE,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAEH,EAAAA,CAAEC,EAAC,CAAA,CAAE,CAAC,CAAA,EAAED,EAAAA,CAAEC,EAAC,CAAA,CAAE,CAAC,CAAA,EAAED,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAED,EAAAA,CAAEC,KAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEzB,EAAC,CAAC,CAAA;AAAE,IAAA,OAAOyB,EAAAA,IAAGE,EAAAA,CAAE,IAAA,CAAK,GAAG,EAAEH,EAAAA,CAAEE,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEF,EAAAA,CAAEE,EAAAA,GAAE,CAAC,EAAE,CAAC,CAAA,EAAEF,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAExB,EAAC,CAAC,CAAA,EAAE,EAAC,IAAA,EAAK,MAAA,EAAO,KAAI2B,EAAAA,EAAC;AAAA,EAAC;AAAC,EAAA,OAAO,CAAA,KAAID,EAAAA,GAAE,CAAA,CAAEF,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,GAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAExB,EAAC,CAAA,GAAE,EAAC,IAAA,EAAK,MAAA,EAAO,GAAA,EAAI,EAAC,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAA,CAAO,SAASH,IAAEC,EAAAA,EAAE;AAAC,IAAA,OAAO,CAAA,CAAED,EAAAA,EAAE,IAAA,EAAGC,EAAC,CAAA;AAAA,EAAC,CAAA,EAAE,CAAC,CAACD,EAAAA,EAAEC,EAAC,CAAA,EAAE,CAACD,EAAAA,GAAExB,EAAAA,EAAEyB,EAAC,CAAA,EAAE,CAACD,EAAAA,GAAExB,EAAAA,EAAEyB,EAAAA,GAAEC,EAAC,CAAA,EAAE,CAACF,IAAEC,EAAAA,GAAEC,EAAC,CAAC,CAAA,EAAEC,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEH,IAAEC,EAAAA,EAAE;AAAC,EAAA,IAAGD,GAAE,MAAA,EAAO;AAAC,IAAA,MAAMxB,KAAE,QAAA,IAAU,OAAOwB,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAACA,EAAC,CAAA,GAAEA,IAAEE,EAAAA,GAAE,CAAA,CAAE1B,GAAE,CAAC,CAAA,EAAE,KAAG,CAAA,GAAE,GAAA,GAAGyB,EAAAA,CAAE,SAAA,CAAA,EAAWA,EAAC,CAAA,EAAEE,EAAAA,GAAEF,GAAE,kBAAA,GAAmB,KAAG,CAAA,CAAEzB,EAAAA,CAAE,CAAC,CAAA,EAAE,OAAK,CAAA,GAAE,IAAA,GAAIyB,GAAE,SAAA,CAAA,EAAW,CAAA,CAAEA,EAAC,CAAC,CAAA;AAAE,IAAA,KAAA,IAAQD,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAExB,EAAAA,CAAE,QAAOwB,EAAAA,EAAAA,EAAI;AAAC,MAAA,MAAM3B,EAAAA,GAAEG,GAAEwB,EAAC,CAAA;AAAE,MAAA,IAAG3B,GAAE,MAAA,EAAO;AAAC,QAAA,MAAM2B,EAAAA,GAAE,CAAA,CAAE3B,EAAAA,EAAE,CAAA,IAAG,CAAA,GAAE,MAAG4B,EAAAA,CAAE,SAAA,CAAA,EAAWA,EAAC,CAAA,EAAEzB,EAAAA,GAAEyB,EAAAA,CAAE,qBAAmB,EAAC,GAAE,CAAA,CAAE5B,EAAAA,EAAE,GAAA,IAAK,CAAA,GAAE,OAAI4B,EAAAA,CAAE,SAAA,CAAA,EAAW,CAAA,CAAEA,EAAC,CAAC,CAAA;AAAE,QAAA,KAAA,MAAUA,MAAKD,EAAAA,EAAE,MAAA,KAASC,GAAE,EAAA,IAAIC,EAAAA,CAAE,KAAKD,EAAC,CAAA;AAAE,QAAA,KAAA,MAAUD,MAAKxB,EAAAA,EAAE,MAAA,KAASwB,GAAE,EAAA,IAAIG,EAAAA,CAAE,KAAKH,EAAC,CAAA;AAAA,MAAC;AAAA,IAAC;AAAC,IAAA,OAAM,EAAC,IAAA,EAAK,MAAA,EAAO,KAAIE,EAAAA,CAAE,MAAA,CAAOC,EAAC,CAAA,EAAC;AAAA,EAAC;AAAC,EAAA,OAAM,EAAC,IAAA,EAAK,MAAA,EAAO,GAAA,EAAI,EAAC,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,MAAM0B,KAAE,IAAA,CAAK,IAAA,CAAK,IAAE,IAAA,CAAK,EAAA,GAAG,KAAK,IAAA,CAAA,CAAM,IAAA,CAAK,IAAIF,EAAAA,GAAE,CAAA,EAAE,CAAC,CAAA,GAAE,IAAA,CAAK,IAAIC,EAAAA,GAAE,CAAA,EAAE,CAAC,CAAA,IAAG,CAAC,CAAC,CAAA,EAAEE,KAAE,IAAA,CAAK,IAAA,CAAK,KAAK,GAAA,CAAI3B,EAAAA,CAAE,gBAAeA,EAAAA,CAAE,cAAA,GAAe,KAAK,IAAA,CAAK,GAAG,IAAE0B,EAAC,CAAC,GAAE7B,EAAAA,GAAE,CAAA,GAAE,KAAK,EAAA,GAAG8B,EAAAA;AAAE,EAAA,IAAIC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIJ,EAAAA,GAAE,CAAC,GAAEK,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIJ,EAAAA,GAAE,CAAC,CAAA;AAAE,EAAA,MAAM7B,EAAAA,GAAE,IAAEI,EAAAA,CAAE,YAAA;AAAa,EAAA,OAAO4B,MAAG,CAAA,CAAEA,EAAAA,GAAEhC,IAAEI,EAAC,CAAA,EAAE6B,MAAG,CAAA,CAAEA,EAAAA,GAAEjC,EAAAA,EAAEI,EAAC,GAAE,EAAC,SAAA,EAAUH,IAAE,EAAA,EAAG+B,EAAAA,EAAE,IAAGC,EAAAA,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEL,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,EAAA,MAAK,CAACC,EAAAA,EAAE9B,EAAC,CAAA,GAAE,CAAA,CAAE6B,GAAE,SAAA,EAAUF,EAAAA,EAAEC,EAAAA,EAAEC,EAAAA,CAAE,EAAA,EAAGA,EAAAA,CAAE,IAAG,CAAA,EAAEA,EAAAA,CAAE,SAAA,GAAU,CAAA,CAAE,GAAA,EAAG,CAAA,CAAE,GAAA,EAAG,CAAA,EAAE1B,EAAC,CAAA,EAAEA,EAAC,CAAA,EAAEA,EAAC,CAAA;AAAE,EAAA,IAAI4B,EAAAA,GAAE,CAAA,CAAED,EAAAA,EAAE,IAAA,EAAK3B,EAAC,CAAA;AAAE,EAAA,IAAG,CAACA,EAAAA,CAAE,kBAAA,IAAoB,CAAA,KAAIA,GAAE,SAAA,EAAU;AAAC,IAAA,MAAK,CAAC2B,EAAC,CAAA,GAAE,CAAA,CAAED,GAAE,SAAA,EAAUF,EAAAA,EAAEC,IAAEC,EAAAA,CAAE,EAAA,EAAGA,GAAE,EAAA,EAAG,GAAA,EAAI,GAAE1B,EAAC,CAAA,EAAEH,KAAE,CAAA,CAAE8B,EAAAA,EAAE,MAAK3B,EAAC,CAAA;AAAE,IAAA4B,EAAAA,GAAEA,EAAAA,CAAE,MAAA,CAAO/B,EAAC,CAAA;AAAA,EAAC;AAAC,EAAA,OAAM,EAAC,iBAAgBA,EAAAA,EAAE,KAAA,EAAM,EAAC,IAAA,EAAK,MAAA,EAAO,GAAA,EAAI+B,EAAAA,EAAC,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEJ,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,EAAEC,EAAAA,EAAEjC,EAAAA,EAAE;AAAC,EAAA,MAAME,EAAAA,GAAE0B,IAAEM,EAAAA,GAAEL,EAAAA;AAAE,EAAA,IAAIM,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI/B,EAAAA,GAAE,CAAC,GAAEgC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIN,EAAAA,GAAE,CAAC,CAAA;AAAE,EAAAK,EAAAA,IAAG,CAAA,CAAE,IAAA,GAAIA,EAAAA,EAAEnC,EAAC,GAAEoC,EAAAA,IAAG,CAAA,CAAE,IAAA,GAAIA,EAAAA,EAAEpC,EAAC,CAAA;AAAE,EAAA,IAAID,EAAAA,GAAEgC,IAAErB,EAAAA,GAAET,EAAAA;AAAE,EAAA,OAAKF,EAAAA,GAAE,KAAGA,EAAAA,IAAG,IAAE,IAAA,CAAK,EAAA,EAAGW,EAAAA,IAAG,CAAA,GAAE,IAAA,CAAK,EAAA;AAAG,EAAAA,EAAAA,GAAEX,KAAE,CAAA,GAAE,IAAA,CAAK,OAAKA,EAAAA,GAAE,CAAA,EAAEW,EAAAA,GAAE,CAAA,GAAE,IAAA,CAAK,EAAA,CAAA;AAAI,EAAA,MAAM2B,EAAAA,GAAE,CAAA,GAAE,IAAA,CAAK,EAAA,GAAGrC,EAAAA,CAAE,gBAAesC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAID,EAAAA,GAAE,CAAA,EAAA,CAAG3B,EAAAA,GAAEX,MAAG,CAAC,CAAA,EAAEwC,EAAAA,GAAE,CAAA,CAAED,EAAAA,EAAEpC,EAAAA,EAAEgC,EAAAA,EAAEC,EAAAA,EAAEC,EAAAA,EAAErC,EAAAA,EAAEW,EAAAA,EAAE,CAAA,EAAEV,EAAC,CAAA;AAAE,EAAA,IAAG,CAACA,GAAE,kBAAA,EAAmB;AAAC,IAAA,MAAM4B,EAAAA,GAAE,CAAA,CAAEU,EAAAA,EAAEpC,EAAAA,EAAEgC,EAAAA,EAAEC,IAAEC,EAAAA,EAAErC,EAAAA,EAAEW,EAAAA,EAAE,GAAA,EAAIV,EAAC,CAAA;AAAE,IAAAuC,EAAAA,CAAE,IAAA,CAAK,GAAGX,EAAC,CAAA;AAAA,EAAC;AAAC,EAAA,OAAOI,OAAIC,EAAAA,GAAEM,EAAAA,CAAE,IAAA,CAAK,GAAG,EAAErC,EAAAA,EAAEgC,EAAAA,EAAEhC,EAAAA,GAAEiC,EAAAA,GAAE,KAAK,GAAA,CAAIpC,EAAC,CAAA,EAAEmC,EAAAA,GAAEE,KAAE,IAAA,CAAK,GAAA,CAAIrC,EAAC,CAAA,EAAEC,EAAC,CAAA,EAAE,GAAG,CAAA,CAAEE,EAAAA,EAAEgC,IAAEhC,EAAAA,GAAEiC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIzB,EAAC,CAAA,EAAEwB,EAAAA,GAAEE,EAAAA,GAAE,IAAA,CAAK,IAAI1B,EAAC,CAAA,EAAEV,EAAC,CAAC,IAAEuC,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,UAAS,IAAA,EAAK,CAACrC,EAAAA,EAAEgC,EAAC,GAAC,EAAE,EAAC,EAAA,EAAG,QAAA,EAAS,MAAK,CAAChC,EAAAA,GAAEiC,EAAAA,GAAE,IAAA,CAAK,IAAIpC,EAAC,CAAA,EAAEmC,EAAAA,GAAEE,EAAAA,GAAE,KAAK,GAAA,CAAIrC,EAAC,CAAC,CAAA,EAAE,CAAA,CAAA,EAAG,EAAC,IAAA,EAAK,MAAA,EAAO,KAAIwC,EAAAA,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEX,IAAEC,EAAAA,EAAE;AAAC,EAAA,MAAMzB,EAAAA,GAAE,EAAE,CAAA,CAAE,CAAA,CAAEwB,EAAC,CAAC,CAAC,CAAA,EAAEE,EAAAA,GAAE,EAAC;AAAE,EAAA,IAAIC,EAAAA,GAAE,CAAC,CAAA,EAAE,CAAC,GAAE9B,EAAAA,GAAE,CAAC,GAAE,CAAC,CAAA;AAAE,EAAA,KAAA,MAAS,EAAC,KAAI2B,EAAAA,EAAE,IAAA,EAAKI,IAAC,IAAI5B,EAAAA,UAASwB,EAAAA;AAAE,IAAC,KAAI,GAAA;AAAI,MAAA3B,KAAE,CAAC+B,EAAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAC,CAAA,EAAED,EAAAA,GAAE,CAACC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA;AAAI,MAAAF,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAE7B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAE+B,EAAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAEH,EAAC,CAAC,CAAA,EAAE5B,EAAAA,GAAE,CAAC+B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAE,MAAA;AAAA,IAAM,KAAI,GAAA,EAAI;AAAC,MAAA,MAAK,CAACJ,EAAAA,EAAExB,EAAAA,EAAE2B,IAAEE,EAAAA,EAAEjC,EAAAA,EAAEE,EAAC,CAAA,GAAE8B,EAAAA;AAAE,MAAAF,GAAE,IAAA,CAAK,GAAG,CAAA,CAAEF,EAAAA,EAAExB,IAAE2B,EAAAA,EAAEE,EAAAA,EAAEjC,EAAAA,EAAEE,EAAAA,EAAED,IAAE4B,EAAC,CAAC,GAAE5B,EAAAA,GAAE,CAACD,IAAEE,EAAC,CAAA;AAAE,MAAA;AAAA,IAAK;AAAA,IAAC,KAAI,GAAA;AAAI,MAAA4B,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAE7B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAE8B,EAAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAEF,EAAC,CAAC,CAAA,EAAE5B,EAAAA,GAAE,CAAC8B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAA;AAAE,EAAA,OAAM,EAAC,IAAA,EAAK,MAAA,EAAO,GAAA,EAAID,EAAAA,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEF,IAAEC,EAAAA,EAAE;AAAC,EAAA,MAAMzB,KAAE,EAAC;AAAE,EAAA,KAAA,MAAU0B,EAAAA,IAAKF,EAAAA,EAAE,IAAGE,EAAAA,CAAE,MAAA,EAAO;AAAC,IAAA,MAAMF,EAAAA,GAAEC,EAAAA,CAAE,mBAAA,IAAqB,CAAA,EAAEE,KAAED,EAAAA,CAAE,MAAA;AAAO,IAAA,IAAGC,KAAE,CAAA,EAAE;AAAC,MAAA3B,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,MAAA,EAAO,IAAA,EAAK,CAAC0B,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,CAAEF,IAAEC,EAAC,CAAA,EAAEC,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,CAAEF,EAAAA,EAAEC,EAAC,CAAC,CAAA,EAAE,CAAA;AAAE,MAAA,KAAA,IAAQ5B,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAE8B,EAAAA,EAAE9B,MAAIG,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,QAAA,EAAS,IAAA,EAAK,CAAC0B,GAAE7B,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,CAAE2B,EAAAA,EAAEC,EAAC,CAAA,EAAEC,GAAE7B,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,CAAE2B,EAAAA,EAAEC,EAAC,CAAC,GAAE,CAAA;AAAA,IAAC;AAAA,EAAC;AAAC,EAAA,OAAM,EAAC,IAAA,EAAK,UAAA,EAAW,GAAA,EAAIzB,EAAAA,EAAC;AAAC;AAAC,SAAS,CAAA,CAAEwB,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAA,CAAO,SAASD,IAAEC,EAAAA,EAAE;AAAC,IAAA,IAAIzB,EAAAA,GAAEwB,GAAE,SAAA,IAAW,SAAA;AAAU,IAAA,IAAG,CAAC,CAAA,CAAExB,EAAC,CAAA,UAASA,EAAAA;AAAE,MAAC,KAAI,QAAA;AAAS,QAAA,CAAA,CAAEA,EAAC,CAAA,KAAI,CAAA,CAAEA,EAAC,CAAA,GAAE,IAAI,EAAEyB,EAAC,CAAA,CAAA;AAAG,QAAA;AAAA,MAAM,KAAI,aAAA;AAAc,QAAA,CAAA,CAAEzB,EAAC,CAAA,KAAI,CAAA,CAAEA,EAAC,CAAA,GAAE,IAAI,EAAEyB,EAAC,CAAA,CAAA;AAAG,QAAA;AAAA,MAAM,KAAI,MAAA;AAAO,QAAA,CAAA,CAAEzB,EAAC,CAAA,KAAI,CAAA,CAAEA,EAAC,CAAA,GAAE,IAAI,EAAEyB,EAAC,CAAA,CAAA;AAAG,QAAA;AAAA,MAAM,KAAI,QAAA;AAAS,QAAA,CAAA,CAAEzB,EAAC,CAAA,KAAI,CAAA,CAAEA,EAAC,CAAA,GAAE,IAAI,EAAEyB,EAAC,CAAA,CAAA;AAAG,QAAA;AAAA,MAAM,KAAI,aAAA;AAAc,QAAA,CAAA,CAAEzB,EAAC,CAAA,KAAI,CAAA,CAAEA,EAAC,CAAA,GAAE,IAAI,EAAEyB,EAAC,CAAA,CAAA;AAAG,QAAA;AAAA,MAAM;AAAQ,QAAAzB,EAAAA,GAAE,SAAA,EAAU,CAAA,CAAEA,EAAC,CAAA,KAAI,EAAEA,EAAC,CAAA,GAAE,IAAI,CAAA,CAAEyB,EAAC,CAAA,CAAA;AAAA;AAAG,IAAA,OAAO,EAAEzB,EAAC,CAAA;AAAA,EAAC,GAAEyB,EAAAA,EAAE,CAAC,CAAA,CAAE,YAAA,CAAaD,IAAEC,EAAC,CAAA;AAAC;AAAC,SAAS,EAAED,EAAAA,EAAE;AAAC,EAAA,MAAMC,EAAAA,GAAE,MAAA,CAAO,MAAA,CAAO,IAAGD,EAAC,CAAA;AAAE,EAAA,OAAOC,EAAAA,CAAE,aAAW,MAAA,EAAOD,EAAAA,CAAE,SAAOC,EAAAA,CAAE,IAAA,GAAKD,EAAAA,CAAE,IAAA,GAAK,CAAA,CAAA,EAAGC,EAAAA;AAAC;AAAC,SAAS,EAAED,EAAAA,EAAE;AAAC,EAAA,OAAOA,EAAAA,CAAE,UAAA,KAAaA,EAAAA,CAAE,UAAA,GAAW,IAAIQ,EAAAA,CAAER,EAAAA,CAAE,IAAA,IAAM,CAAC,CAAA,CAAA,EAAGA,EAAAA,CAAE,UAAA,CAAW,IAAA,EAAK;AAAC;AAAC,SAAS,CAAA,CAAEA,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,KAAE,CAAA,EAAE;AAAC,EAAA,OAAO1B,GAAE,SAAA,GAAU0B,EAAAA,IAAG,EAAE1B,EAAC,CAAA,IAAGyB,KAAED,EAAAA,CAAAA,GAAGA,EAAAA,CAAAA;AAAE;AAAC,SAAS,CAAA,CAAEA,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,GAAE,CAAA,EAAE;AAAC,EAAA,OAAO,CAAA,CAAE,CAACwB,EAAAA,EAAEA,EAAAA,EAAEC,IAAEzB,EAAC,CAAA;AAAC;AAAC,SAAS,EAAEwB,EAAAA,EAAEC,EAAAA,EAAEzB,IAAE0B,EAAAA,EAAEC,EAAAA,EAAE9B,KAAE,KAAA,EAAG;AAAC,EAAA,MAAM+B,EAAAA,GAAE/B,EAAAA,GAAE8B,EAAAA,CAAE,sBAAA,GAAuBA,GAAE,kBAAA,EAAmBE,EAAAA,GAAE,CAAA,CAAEL,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,EAAAA,EAAE,MAAG,KAAE,CAAA;AAAE,EAAA,IAAGC,IAAE,OAAOC,EAAAA;AAAE,EAAA,MAAMjC,EAAAA,GAAE,EAAE4B,EAAAA,EAAEC,EAAAA,EAAEzB,IAAE0B,EAAAA,EAAEC,EAAAA,EAAE,MAAG,IAAE,CAAA;AAAE,EAAA,OAAOE,EAAAA,CAAE,OAAOjC,EAAC,CAAA;AAAC;AAAC,SAAS,EAAE4B,EAAAA,EAAEC,EAAAA,EAAEzB,IAAE0B,EAAAA,EAAEC,EAAAA,EAAE9B,IAAE+B,EAAAA,EAAE;AAAC,EAAA,MAAMC,KAAE,IAAA,CAAK,GAAA,CAAIL,EAAAA,GAAExB,EAAAA,EAAE,CAAC,CAAA,GAAE,IAAA,CAAK,GAAA,CAAIyB,EAAAA,GAAEC,IAAE,CAAC,CAAA,EAAE9B,EAAAA,GAAE,IAAA,CAAK,KAAKiC,EAAC,CAAA;AAAE,EAAA,IAAI/B,EAAAA,GAAE,CAAA;AAAE,EAAAA,EAAAA,GAAEF,KAAE,GAAA,GAAI,CAAA,GAAEA,KAAE,GAAA,GAAI,GAAA,GAAG,YAAUA,EAAAA,GAAE,QAAA;AAAS,EAAA,IAAIkC,EAAAA,GAAEH,GAAE,mBAAA,IAAqB,CAAA;AAAE,EAAAG,EAAAA,GAAEA,EAAAA,GAAE,GAAA,GAAID,EAAAA,KAAIC,KAAElC,EAAAA,GAAE,EAAA,CAAA;AAAI,EAAA,MAAMmC,KAAED,EAAAA,GAAE,CAAA,EAAEE,KAAE,GAAA,GAAG,GAAA,GAAG,EAAEL,EAAC,CAAA;AAAE,EAAA,IAAIhC,EAAAA,GAAEgC,EAAAA,CAAE,MAAA,GAAOA,EAAAA,CAAE,uBAAqBD,EAAAA,GAAED,EAAAA,CAAAA,GAAG,GAAA,EAAInB,EAAAA,GAAEqB,EAAAA,CAAE,MAAA,GAAOA,EAAAA,CAAE,mBAAA,IAAqBH,KAAExB,EAAAA,CAAAA,GAAG,GAAA;AAAI,EAAAL,EAAAA,GAAE,CAAA,CAAEA,EAAAA,EAAEgC,EAAAA,EAAE7B,EAAC,GAAEQ,EAAAA,GAAE,CAAA,CAAEA,EAAAA,EAAEqB,EAAAA,EAAE7B,EAAC,CAAA;AAAE,EAAA,MAAMmC,KAAE,EAAC,EAAEC,KAAE,MAAI,CAAA,CAAEH,IAAEJ,EAAAA,EAAE7B,EAAC,CAAA,EAAEqC,EAAAA,GAAE,MAAI,CAAA,CAAEL,EAAAA,EAAEH,IAAE7B,EAAC,CAAA,EAAEsC,KAAET,EAAAA,CAAE,gBAAA;AAAiB,EAAA,OAAO9B,CAAI+B,EAAAA,GAAEK,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,MAAA,EAAO,IAAA,EAAK,CAACT,MAAGY,EAAAA,GAAE,CAAA,GAAEF,EAAAA,EAAE,CAAA,EAAGT,MAAGW,EAAAA,GAAE,CAAA,GAAEF,EAAAA,EAAE,CAAE,CAAA,EAAE,CAAA,GAAED,EAAAA,CAAE,KAAK,EAAC,EAAA,EAAG,MAAA,EAAO,IAAA,EAAK,CAACT,EAAAA,IAAGY,EAAAA,GAAE,CAAA,GAAE,CAAA,CAAEN,IAAEH,EAAAA,EAAE7B,EAAC,CAAA,CAAA,EAAG2B,EAAAA,IAAGW,EAAAA,GAAE,CAAA,GAAE,CAAA,CAAEN,EAAAA,EAAEH,IAAE7B,EAAC,CAAA,CAAE,CAAA,EAAE,IAAG8B,EAAAA,GAAEK,EAAAA,CAAE,IAAA,CAAK,EAAC,IAAG,UAAA,EAAW,IAAA,EAAK,CAACtC,EAAAA,GAAE6B,EAAAA,GAAAA,CAAGxB,EAAAA,GAAEwB,EAAAA,IAAGQ,EAAAA,GAAEE,IAAE,EAAE5B,EAAAA,GAAEmB,EAAAA,GAAAA,CAAGC,EAAAA,GAAED,MAAGO,EAAAA,GAAEE,EAAAA,EAAE,EAAEvC,EAAAA,GAAE6B,KAAE,CAAA,IAAGxB,EAAAA,GAAEwB,EAAAA,CAAAA,GAAGQ,EAAAA,GAAEE,EAAAA,EAAE,EAAE5B,EAAAA,GAAEmB,EAAAA,GAAE,KAAGC,EAAAA,GAAED,EAAAA,CAAAA,GAAGO,EAAAA,GAAEE,EAAAA,IAAIlC,EAAAA,IAAGoC,EAAAA,GAAE,CAAA,GAAEF,EAAAA,KAAKR,EAAAA,IAAGU,EAAAA,GAAE,CAAA,GAAEF,EAAAA,EAAE,CAAE,CAAA,EAAE,CAAA,GAAED,GAAE,IAAA,CAAK,EAAC,EAAA,EAAG,UAAA,EAAW,MAAK,CAACtC,EAAAA,GAAE6B,EAAAA,GAAAA,CAAGxB,EAAAA,GAAEwB,MAAGQ,EAAAA,GAAEG,EAAAA,EAAE,EAAE7B,EAAAA,GAAEmB,EAAAA,GAAAA,CAAGC,EAAAA,GAAED,EAAAA,IAAGO,EAAAA,GAAEG,IAAE,EAAExC,EAAAA,GAAE6B,EAAAA,GAAE,CAAA,IAAGxB,KAAEwB,EAAAA,CAAAA,GAAGQ,EAAAA,GAAEG,EAAAA,EAAE,EAAE7B,KAAEmB,EAAAA,GAAE,CAAA,IAAGC,EAAAA,GAAED,EAAAA,CAAAA,GAAGO,EAAAA,GAAEG,EAAAA,EAAE,EAAEnC,EAAAA,IAAGoC,KAAE,CAAA,GAAED,EAAAA,EAAE,CAAA,EAAGT,EAAAA,IAAGU,KAAE,CAAA,GAAED,EAAAA,EAAE,CAAE,CAAA,EAAE,CAAA,EAAEF,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAET,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,IAAG,CAACwB,EAAAA,CAAE,MAAA,EAAO,OAAM,EAAC;AAAE,EAAA,MAAME,KAAE,EAAC;AAAE,EAAAA,EAAAA,CAAE,KAAK,CAACF,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,IAAE,CAAA,CAAEC,EAAAA,EAAEzB,EAAC,CAAA,EAAEwB,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,IAAE,CAAA,CAAEC,EAAAA,EAAEzB,EAAC,CAAC,CAAC,GAAE0B,EAAAA,CAAE,IAAA,CAAK,CAACF,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,GAAE,EAAEC,EAAAA,EAAEzB,EAAC,GAAEwB,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,GAAE,EAAEC,EAAAA,EAAEzB,EAAC,CAAC,CAAC,CAAA;AAAE,EAAA,KAAA,IAAQ2B,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEH,EAAAA,CAAE,MAAA,EAAOG,MAAID,EAAAA,CAAE,IAAA,CAAK,CAACF,EAAAA,CAAEG,EAAC,EAAE,CAAC,CAAA,GAAE,CAAA,CAAEF,EAAAA,EAAEzB,EAAC,CAAA,EAAEwB,EAAAA,CAAEG,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,CAAEF,EAAAA,EAAEzB,EAAC,CAAC,CAAC,CAAA,EAAE2B,EAAAA,KAAIH,EAAAA,CAAE,MAAA,GAAO,CAAA,IAAGE,EAAAA,CAAE,IAAA,CAAK,CAACF,EAAAA,CAAEG,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE,EAAEF,EAAAA,EAAEzB,EAAC,CAAA,EAAEwB,EAAAA,CAAEG,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE,CAAA,CAAEF,EAAAA,EAAEzB,EAAC,CAAC,CAAC,CAAA;AAAE,EAAA,OAAO,CAAA,CAAE0B,EAAAA,EAAE,IAAA,EAAK1B,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,MAAM0B,EAAAA,GAAEF,EAAAA,CAAE,MAAA,EAAOG,EAAAA,GAAE,EAAC;AAAE,EAAA,IAAGD,KAAE,CAAA,EAAE;AAAC,IAAA,MAAM7B,EAAAA,GAAE,EAAC,EAAE+B,EAAAA,GAAE,IAAE5B,EAAAA,CAAE,cAAA;AAAe,IAAA2B,GAAE,IAAA,CAAK,EAAC,IAAG,MAAA,EAAO,IAAA,EAAK,CAACH,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,GAAEA,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAC,GAAE,CAAA;AAAE,IAAA,KAAA,IAAQC,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAE,CAAA,GAAEC,IAAED,EAAAA,EAAAA,EAAI;AAAC,MAAA,MAAMzB,EAAAA,GAAEwB,GAAEC,EAAC,CAAA;AAAE,MAAA5B,EAAAA,CAAE,CAAC,CAAA,GAAE,CAACG,GAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAEH,EAAAA,CAAE,CAAC,CAAA,GAAE,CAACG,EAAAA,CAAE,CAAC,CAAA,GAAA,CAAG4B,EAAAA,GAAEJ,GAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,IAAEG,EAAAA,GAAEJ,EAAAA,CAAEC,EAAAA,GAAE,CAAC,EAAE,CAAC,CAAA,IAAG,CAAA,EAAEzB,EAAAA,CAAE,CAAC,CAAA,GAAA,CAAG4B,EAAAA,GAAEJ,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAEG,KAAEJ,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,CAAC,CAAA,EAAE5B,EAAAA,CAAE,CAAC,CAAA,GAAE,CAAC2B,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAA,CAAGG,EAAAA,GAAEJ,GAAEC,EAAC,CAAA,CAAE,CAAC,CAAA,GAAEG,KAAEJ,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,CAAA,EAAED,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAA,CAAGG,KAAEJ,EAAAA,CAAEC,EAAC,CAAA,CAAE,CAAC,IAAEG,EAAAA,GAAEJ,EAAAA,CAAEC,EAAAA,GAAE,CAAC,EAAE,CAAC,CAAA,IAAG,CAAC,CAAA,EAAE5B,GAAE,CAAC,CAAA,GAAE,CAAC2B,EAAAA,CAAEC,KAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAED,GAAEC,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,EAAEE,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,UAAA,EAAW,IAAA,EAAK,CAAC9B,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAC,GAAE,CAAA;AAAA,IAAC;AAAuG,EAAC,CAAA,YAAU6B,EAAAA,IAAGC,EAAAA,CAAE,KAAK,EAAC,EAAA,EAAG,QAAO,IAAA,EAAK,CAACH,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE,GAAEG,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,UAAA,EAAW,MAAK,CAACH,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,GAAEA,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,GAAEA,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE,CAAA,IAAG,CAAA,KAAIE,MAAGC,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAEH,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,GAAEA,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,CAAE,CAAC,GAAExB,EAAAA,EAAE,IAAA,EAAG,IAAE,CAAC,CAAA;AAAE,EAAA,OAAO2B,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAEH,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,IAAEC,EAAAA,EAAE;AAAC,EAAA,MAAMjC,EAAAA,GAAE,EAAC,EAAEE,EAAAA,GAAE,EAAC;AAAE,EAAA,IAAG,CAAA,KAAI+B,GAAE,SAAA,EAAU;AAAC,IAAAL,MAAG,CAAA,EAAE1B,EAAAA,CAAE,KAAK,CAAC2B,EAAAA,GAAEC,KAAE,IAAA,CAAK,GAAA,CAAI,CAACF,EAAC,CAAA,EAAExB,KAAE2B,EAAAA,GAAE,IAAA,CAAK,IAAI,CAACH,EAAC,CAAC,CAAC,CAAA;AAAE,IAAA,KAAA,IAAQ3B,KAAE,CAAA,EAAEA,EAAAA,IAAG,IAAE,IAAA,CAAK,EAAA,EAAGA,MAAG2B,EAAAA,EAAE;AAAC,MAAA,MAAMA,EAAAA,GAAE,CAACC,EAAAA,GAAEC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI7B,EAAC,CAAA,EAAEG,EAAAA,GAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI9B,EAAC,CAAC,CAAA;AAAE,MAAAD,GAAE,IAAA,CAAK4B,EAAC,CAAA,EAAE1B,EAAAA,CAAE,KAAK0B,EAAC,CAAA;AAAA,IAAC;AAAC,IAAA1B,EAAAA,CAAE,IAAA,CAAK,CAAC2B,EAAAA,GAAEC,KAAE,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAE1B,EAAAA,GAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA,EAAE7B,EAAAA,CAAE,IAAA,CAAK,CAAC2B,EAAAA,GAAEC,EAAAA,GAAE,KAAK,GAAA,CAAIF,EAAC,CAAA,EAAExB,EAAAA,GAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIH,EAAC,CAAC,CAAC,CAAA;AAAA,EAAC,CAAA,MAAK;AAAC,IAAA,MAAMM,KAAE,CAAA,CAAE,GAAA,EAAGD,EAAC,CAAA,GAAE,KAAK,EAAA,GAAG,CAAA;AAAE,IAAA/B,EAAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAED,EAAAA,EAAEgC,EAAC,CAAA,GAAEJ,EAAAA,GAAE,GAAA,GAAGC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAII,EAAAA,GAAEN,EAAC,CAAA,EAAE,CAAA,CAAE3B,EAAAA,EAAEgC,EAAC,CAAA,GAAE7B,EAAAA,GAAE,GAAA,GAAG2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIG,EAAAA,GAAEN,EAAC,CAAC,CAAC,CAAA;AAAE,IAAA,MAAMO,EAAAA,GAAE,CAAA,GAAE,IAAA,CAAK,EAAA,GAAGD,EAAAA,GAAE,IAAA;AAAI,IAAA,KAAA,IAAQF,EAAAA,GAAEE,EAAAA,EAAEF,EAAAA,GAAEG,EAAAA,EAAEH,MAAGJ,EAAAA,EAAE;AAAC,MAAA,MAAMA,EAAAA,GAAE,CAAC,CAAA,CAAE3B,EAAAA,EAAEgC,EAAC,CAAA,GAAEJ,EAAAA,GAAEC,KAAE,IAAA,CAAK,GAAA,CAAIE,EAAC,CAAA,EAAE,CAAA,CAAE/B,IAAEgC,EAAC,CAAA,GAAE7B,KAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIC,EAAC,CAAC,CAAA;AAAE,MAAAhC,GAAE,IAAA,CAAK4B,EAAC,CAAA,EAAE1B,EAAAA,CAAE,KAAK0B,EAAC,CAAA;AAAA,IAAC;AAAC,IAAA1B,EAAAA,CAAE,KAAK,CAAC,CAAA,CAAED,IAAEgC,EAAC,CAAA,GAAEJ,KAAEC,EAAAA,GAAE,IAAA,CAAK,IAAII,EAAAA,GAAE,CAAA,GAAE,KAAK,EAAA,GAAG,GAAA,GAAGF,EAAC,CAAA,EAAE,CAAA,CAAE/B,IAAEgC,EAAC,CAAA,GAAE7B,KAAE2B,EAAAA,GAAE,IAAA,CAAK,IAAIG,EAAAA,GAAE,CAAA,GAAE,KAAK,EAAA,GAAG,GAAA,GAAGF,EAAC,CAAC,CAAC,GAAE9B,EAAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAED,EAAAA,EAAEgC,EAAC,CAAA,GAAEJ,EAAAA,GAAE,OAAIC,EAAAA,GAAE,IAAA,CAAK,IAAII,EAAAA,GAAEF,EAAC,GAAE,CAAA,CAAE/B,EAAAA,EAAEgC,EAAC,CAAA,GAAE7B,EAAAA,GAAE,OAAI2B,EAAAA,GAAE,IAAA,CAAK,IAAIG,EAAAA,GAAEF,EAAC,CAAC,CAAC,CAAA,EAAE9B,GAAE,IAAA,CAAK,CAAC,EAAED,EAAAA,EAAEgC,EAAC,IAAEJ,EAAAA,GAAE,GAAA,GAAGC,KAAE,IAAA,CAAK,GAAA,CAAII,KAAE,GAAA,GAAGF,EAAC,GAAE,CAAA,CAAE/B,EAAAA,EAAEgC,EAAC,CAAA,GAAE7B,EAAAA,GAAE,MAAG2B,EAAAA,GAAE,IAAA,CAAK,IAAIG,EAAAA,GAAE,GAAA,GAAGF,EAAC,CAAC,CAAC,CAAA;AAAA,EAAC;AAAC,EAAA,OAAM,CAAC9B,IAAEF,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAE4B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,EAAEC,EAAAA,EAAEjC,EAAAA,EAAE;AAAC,EAAA,MAAME,KAAED,EAAAA,GAAE,CAAA,CAAE,KAAGD,EAAC,CAAA,EAAEkC,KAAE,EAAC;AAAE,EAAAA,EAAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAED,EAAAA,EAAEjC,EAAC,CAAA,GAAE6B,EAAAA,GAAE,GAAA,GAAGC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI5B,EAAAA,GAAE0B,EAAC,CAAA,EAAE,CAAA,CAAEK,EAAAA,EAAEjC,EAAC,CAAA,GAAEI,EAAAA,GAAE,GAAA,GAAG2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI7B,EAAAA,GAAE0B,EAAC,CAAC,CAAC,CAAA;AAAE,EAAA,KAAA,IAAQ3B,EAAAA,GAAEC,EAAAA,EAAED,EAAAA,IAAG+B,EAAAA,EAAE/B,EAAAA,IAAG2B,EAAAA,EAAEM,EAAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAED,EAAAA,EAAEjC,EAAC,CAAA,GAAE6B,EAAAA,GAAEC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI7B,EAAC,CAAA,EAAE,CAAA,CAAEgC,EAAAA,EAAEjC,EAAC,CAAA,GAAEI,EAAAA,GAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI9B,EAAC,CAAC,CAAC,CAAA;AAAE,EAAA,OAAOiC,GAAE,IAAA,CAAK,CAACL,EAAAA,GAAEC,EAAAA,GAAE,KAAK,GAAA,CAAIE,EAAC,CAAA,EAAE5B,EAAAA,GAAE2B,KAAE,IAAA,CAAK,GAAA,CAAIC,EAAC,CAAC,CAAC,CAAA,EAAEE,EAAAA,CAAE,IAAA,CAAK,CAACL,KAAEC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIE,EAAC,GAAE5B,EAAAA,GAAE2B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIC,EAAC,CAAC,CAAC,GAAE,CAAA,CAAEE,EAAAA,EAAE,MAAKlC,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAE4B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,IAAEC,EAAAA,EAAE;AAAC,EAAA,MAAMjC,EAAAA,GAAE,EAAC,EAAEE,EAAAA,GAAE,CAAC+B,EAAAA,CAAE,mBAAA,IAAqB,CAAA,EAAA,CAAGA,EAAAA,CAAE,mBAAA,IAAqB,CAAA,IAAG,GAAE,CAAA;AAAE,EAAA,IAAIC,EAAAA,GAAE,CAAC,CAAA,EAAE,CAAC,CAAA;AAAE,EAAA,MAAMC,KAAEF,EAAAA,CAAE,kBAAA,GAAmB,CAAA,GAAE,CAAA,EAAEG,KAAEH,EAAAA,CAAE,gBAAA;AAAiB,EAAA,KAAA,IAAQlC,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAEoC,EAAAA,EAAEpC,EAAAA,EAAAA,EAAI,CAAA,KAAIA,EAAAA,GAAEC,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,MAAA,EAAO,IAAA,EAAK,CAACgC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE,CAAA,GAAEhC,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,MAAA,EAAO,MAAK,CAACgC,EAAAA,CAAE,CAAC,CAAA,IAAGI,EAAAA,GAAE,CAAA,GAAE,CAAA,CAAElC,EAAAA,CAAE,CAAC,CAAA,EAAE+B,EAAC,CAAA,CAAA,EAAGD,EAAAA,CAAE,CAAC,CAAA,IAAGI,EAAAA,GAAE,CAAA,GAAE,CAAA,CAAElC,EAAAA,CAAE,CAAC,CAAA,EAAE+B,EAAC,CAAA,CAAE,CAAA,EAAE,CAAA,EAAEC,EAAAA,GAAEE,EAAAA,GAAE,CAACL,EAAAA,EAAE9B,EAAC,CAAA,GAAE,CAAC8B,EAAAA,GAAE,CAAA,CAAE7B,EAAAA,CAAEH,EAAC,CAAA,EAAEkC,EAAC,CAAA,EAAEhC,EAAAA,GAAE,CAAA,CAAEC,EAAAA,CAAEH,EAAC,CAAA,EAAEkC,EAAC,CAAC,CAAA,EAAEjC,EAAAA,CAAE,IAAA,CAAK,EAAC,EAAA,EAAG,UAAA,EAAW,IAAA,EAAK,CAAC4B,EAAAA,GAAE,CAAA,CAAE1B,EAAAA,CAAEH,EAAC,CAAA,EAAEkC,EAAC,GAAEJ,EAAAA,GAAE,CAAA,CAAE3B,EAAAA,CAAEH,EAAC,CAAA,EAAEkC,EAAC,CAAA,EAAE7B,EAAAA,GAAE,CAAA,CAAEF,EAAAA,CAAEH,EAAC,CAAA,EAAEkC,EAAC,CAAA,EAAEH,EAAAA,GAAE,CAAA,CAAE5B,EAAAA,CAAEH,EAAC,CAAA,EAAEkC,EAAC,CAAA,EAAEC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE,CAAA;AAAE,EAAA,OAAOlC,EAAAA;AAAC;AAAC,SAAS,EAAE4B,EAAAA,EAAE;AAAC,EAAA,OAAM,CAAC,GAAGA,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEA,EAAAA,EAAEC,EAAAA,GAAE,CAAA,EAAE;AAAC,EAAA,MAAMzB,KAAEwB,EAAAA,CAAE,MAAA;AAAO,EAAA,IAAGxB,EAAAA,GAAE,CAAA,EAAE,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAAE,EAAA,MAAM0B,KAAE,EAAC;AAAE,EAAA,IAAG,CAAA,KAAI1B,EAAAA,EAAE0B,EAAAA,CAAE,IAAA,CAAK,EAAEF,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE,CAAA,CAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE,CAAA,CAAEA,EAAAA,CAAE,CAAC,CAAC,GAAE,CAAA,CAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA,OAAM;AAAC,IAAA,MAAMxB,KAAE,EAAC;AAAE,IAAAA,GAAE,IAAA,CAAKwB,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAE,IAAA,KAAA,IAAQC,EAAAA,GAAE,GAAEA,EAAAA,GAAED,EAAAA,CAAE,QAAOC,EAAAA,EAAAA,EAAIzB,GAAE,IAAA,CAAKwB,EAAAA,CAAEC,EAAC,CAAC,CAAA,EAAEA,OAAID,EAAAA,CAAE,MAAA,GAAO,KAAGxB,EAAAA,CAAE,IAAA,CAAKwB,EAAAA,CAAEC,EAAC,CAAC,CAAA;AAAE,IAAA,MAAME,EAAAA,GAAE,EAAC,EAAE9B,EAAAA,GAAE,CAAA,GAAE4B,EAAAA;AAAE,IAAAC,GAAE,IAAA,CAAK,CAAA,CAAE1B,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAE,IAAA,KAAA,IAAQwB,KAAE,CAAA,EAAEA,EAAAA,GAAE,CAAA,GAAExB,EAAAA,CAAE,QAAOwB,EAAAA,EAAAA,EAAI;AAAC,MAAA,MAAMC,EAAAA,GAAEzB,GAAEwB,EAAC,CAAA;AAAE,MAAAG,EAAAA,CAAE,CAAC,CAAA,GAAE,CAACF,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAEE,EAAAA,CAAE,CAAC,CAAA,GAAE,CAACF,EAAAA,CAAE,CAAC,CAAA,GAAA,CAAG5B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAE3B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,CAAA,EAAEC,EAAAA,CAAE,CAAC,CAAA,GAAA,CAAG5B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAE3B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,CAAC,CAAA,EAAEG,EAAAA,CAAE,CAAC,CAAA,GAAE,CAAC3B,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAA,CAAG3B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE3B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,CAAA,EAAExB,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,GAAA,CAAG3B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAC,CAAA,CAAE,CAAC,CAAA,GAAE3B,EAAAA,GAAEG,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,IAAG,CAAC,CAAA,EAAEG,EAAAA,CAAE,CAAC,CAAA,GAAE,CAAC3B,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAA,EAAExB,EAAAA,CAAEwB,EAAAA,GAAE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,EAAEE,EAAAA,CAAE,IAAA,CAAKC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAA,IAAC;AAAA,EAAC;AAAC,EAAA,OAAOD,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAEF,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAO,KAAK,GAAA,CAAID,EAAAA,CAAE,CAAC,CAAA,GAAEC,EAAAA,CAAE,CAAC,CAAA,EAAE,CAAC,CAAA,GAAE,IAAA,CAAK,IAAID,EAAAA,CAAE,CAAC,IAAEC,EAAAA,CAAE,CAAC,GAAE,CAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAED,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,MAAM0B,EAAAA,GAAE,CAAA,CAAED,EAAAA,EAAEzB,EAAC,CAAA;AAAE,EAAA,IAAG,CAAA,KAAI0B,EAAAA,EAAE,OAAO,CAAA,CAAEF,IAAEC,EAAC,CAAA;AAAE,EAAA,IAAIE,EAAAA,GAAAA,CAAAA,CAAIH,EAAAA,CAAE,CAAC,CAAA,GAAEC,EAAAA,CAAE,CAAC,CAAA,KAAIzB,EAAAA,CAAE,CAAC,CAAA,GAAEyB,EAAAA,CAAE,CAAC,MAAID,EAAAA,CAAE,CAAC,CAAA,GAAEC,EAAAA,CAAE,CAAC,CAAA,KAAIzB,GAAE,CAAC,CAAA,GAAEyB,EAAAA,CAAE,CAAC,CAAA,CAAA,IAAIC,EAAAA;AAAE,EAAA,OAAOC,KAAE,IAAA,CAAK,GAAA,CAAI,CAAA,EAAE,IAAA,CAAK,IAAI,CAAA,EAAEA,EAAC,CAAC,CAAA,EAAE,EAAEH,EAAAA,EAAE,CAAA,CAAEC,EAAAA,EAAEzB,EAAAA,EAAE2B,EAAC,CAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,EAAA,OAAM,CAACwB,GAAE,CAAC,CAAA,GAAA,CAAGC,GAAE,CAAC,CAAA,GAAED,GAAE,CAAC,CAAA,IAAGxB,IAAEwB,EAAAA,CAAE,CAAC,KAAGC,EAAAA,CAAE,CAAC,IAAED,EAAAA,CAAE,CAAC,KAAGxB,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,EAAA,MAAMC,EAAAA,GAAED,MAAG,EAAC;AAAE,EAAA,IAAA,CAAG,SAASF,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,KAAEwB,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,EAAEC,EAAAA,GAAEF,GAAEC,EAAAA,GAAE,CAAC,CAAA,EAAEE,EAAAA,GAAEH,GAAEC,EAAAA,GAAE,CAAC,GAAE5B,EAAAA,GAAE2B,EAAAA,CAAEC,KAAE,CAAC,CAAA;AAAE,IAAA,IAAIG,EAAAA,GAAE,CAAA,GAAEF,EAAAA,CAAE,CAAC,CAAA,GAAE,IAAE1B,EAAAA,CAAE,CAAC,CAAA,GAAEH,EAAAA,CAAE,CAAC,CAAA;AAAE,IAAA+B,EAAAA,IAAGA,EAAAA;AAAE,IAAA,IAAIC,EAAAA,GAAE,CAAA,GAAEH,EAAAA,CAAE,CAAC,CAAA,GAAE,IAAE1B,EAAAA,CAAE,CAAC,CAAA,GAAEH,EAAAA,CAAE,CAAC,CAAA;AAAE,IAAAgC,EAAAA,IAAGA,EAAAA;AAAE,IAAA,IAAIjC,EAAAA,GAAE,CAAA,GAAE+B,EAAAA,CAAE,CAAC,CAAA,GAAE,IAAE9B,EAAAA,CAAE,CAAC,CAAA,GAAEG,EAAAA,CAAE,CAAC,CAAA;AAAE,IAAAJ,EAAAA,IAAGA,EAAAA;AAAE,IAAA,IAAIE,EAAAA,GAAE,CAAA,GAAE6B,EAAAA,CAAE,CAAC,CAAA,GAAE,IAAE9B,EAAAA,CAAE,CAAC,CAAA,GAAEG,EAAAA,CAAE,CAAC,CAAA;AAAE,IAAA,OAAOF,EAAAA,IAAGA,EAAAA,EAAE8B,EAAAA,GAAEhC,EAAAA,KAAIgC,EAAAA,GAAEhC,KAAGiC,EAAAA,GAAE/B,EAAAA,KAAI+B,EAAAA,GAAE/B,EAAAA,CAAAA,EAAG8B,EAAAA,GAAEC,EAAAA;AAAA,EAAC,CAAA,EAAEL,EAAAA,EAAEC,EAAC,CAAA,GAAEzB,EAAAA,EAAE;AAAC,IAAA,MAAMA,EAAAA,GAAEwB,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA;AAAE,IAAA,IAAGE,GAAE,MAAA,EAAO;AAAC,MAAA,CAAC9B,KAAE8B,EAAAA,CAAEA,EAAAA,CAAE,SAAO,CAAC,CAAA,EAAEC,KAAE5B,EAAAA,EAAE,IAAA,CAAK,IAAA,CAAK,CAAA,CAAEH,IAAE+B,EAAC,CAAC,KAAG,CAAA,IAAGD,EAAAA,CAAE,KAAK3B,EAAC,CAAA;AAAA,IAAC,CAAA,MAAM2B,EAAAA,CAAE,IAAA,CAAK3B,EAAC,CAAA;AAAE,IAAA2B,EAAAA,CAAE,IAAA,CAAKH,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAC,CAAA;AAAA,EAAC,CAAA,MAAK;AAAC,IAAA,MAAMC,EAAAA,GAAE,GAAA,EAAG7B,EAAAA,GAAE2B,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,EAAEG,EAAAA,GAAEJ,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,EAAEI,EAAAA,GAAEL,GAAEC,EAAAA,GAAE,CAAC,CAAA,EAAE7B,EAAAA,GAAE4B,EAAAA,CAAEC,EAAAA,GAAE,CAAC,CAAA,EAAE3B,EAAAA,GAAE,CAAA,CAAED,EAAAA,EAAE+B,EAAAA,EAAEF,EAAC,CAAA,EAAEI,KAAE,CAAA,CAAEF,EAAAA,EAAEC,EAAAA,EAAEH,EAAC,CAAA,EAAEK,EAAAA,GAAE,CAAA,CAAEF,EAAAA,EAAEjC,EAAAA,EAAE8B,EAAC,CAAA,EAAEM,EAAAA,GAAE,CAAA,CAAElC,EAAAA,EAAEgC,IAAEJ,EAAC,CAAA,EAAE/B,EAAAA,GAAE,CAAA,CAAEmC,EAAAA,EAAEC,EAAAA,EAAEL,EAAC,CAAA,EAAEpB,EAAAA,GAAE,CAAA,CAAE0B,EAAAA,EAAErC,EAAAA,EAAE+B,EAAC,CAAA;AAAE,IAAA,CAAA,CAAE,CAAC7B,EAAAA,EAAEC,EAAAA,EAAEkC,IAAE1B,EAAC,CAAA,EAAE,GAAEN,EAAAA,EAAE2B,EAAC,GAAE,CAAA,CAAE,CAACrB,IAAEX,EAAAA,EAAEoC,EAAAA,EAAEnC,EAAC,CAAA,EAAE,CAAA,EAAEI,IAAE2B,EAAC,CAAA;AAAA,EAAC;AAAC,EAAA,IAAI9B,EAAAA,EAAE+B,EAAAA;AAAE,EAAA,OAAOD,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAEH,IAAEC,EAAAA,EAAE;AAAC,EAAA,OAAO,CAAA,CAAED,EAAAA,EAAE,CAAA,EAAEA,EAAAA,CAAE,QAAOC,EAAC,CAAA;AAAC;AAAC,SAAS,CAAA,CAAED,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,EAAA,MAAM9B,EAAAA,GAAE8B,EAAAA,IAAG,EAAC,EAAEC,EAAAA,GAAEJ,EAAAA,CAAEC,EAAC,CAAA,EAAEI,EAAAA,GAAEL,EAAAA,CAAExB,EAAAA,GAAE,CAAC,CAAA;AAAE,EAAA,IAAIJ,EAAAA,GAAE,GAAEE,EAAAA,GAAE,CAAA;AAAE,EAAA,KAAA,IAAQ4B,KAAED,EAAAA,GAAE,CAAA,EAAEC,KAAE1B,EAAAA,GAAE,CAAA,EAAE,EAAE0B,EAAAA,EAAE;AAAC,IAAA,MAAMD,KAAE,CAAA,CAAED,EAAAA,CAAEE,EAAC,CAAA,EAAEE,IAAEC,EAAC,CAAA;AAAE,IAAAJ,EAAAA,GAAE7B,EAAAA,KAAIA,EAAAA,GAAE6B,EAAAA,EAAE3B,EAAAA,GAAE4B,EAAAA,CAAAA;AAAA,EAAE;AAAC,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK9B,EAAC,CAAA,GAAE8B,EAAAA,IAAG,CAAA,CAAEF,EAAAA,EAAEC,EAAAA,EAAE3B,EAAAA,GAAE,CAAA,EAAE4B,EAAAA,EAAE7B,EAAC,CAAA,EAAE,CAAA,CAAE2B,EAAAA,EAAE1B,EAAAA,EAAEE,EAAAA,EAAE0B,EAAAA,EAAE7B,EAAC,CAAA,KAAIA,EAAAA,CAAE,MAAA,IAAQA,EAAAA,CAAE,IAAA,CAAK+B,EAAC,CAAA,EAAE/B,EAAAA,CAAE,IAAA,CAAKgC,EAAC,CAAA,CAAA,EAAGhC,EAAAA;AAAC;AAAC,SAAS,CAAA,CAAE2B,EAAAA,EAAEC,EAAAA,GAAE,IAAA,EAAIzB,EAAAA,EAAE;AAAC,EAAA,MAAM0B,KAAE,EAAC,EAAEC,EAAAA,GAAAA,CAAGH,EAAAA,CAAE,SAAO,CAAA,IAAG,CAAA;AAAE,EAAA,KAAA,IAAQxB,EAAAA,GAAE,CAAA,EAAEA,EAAAA,GAAE2B,EAAAA,EAAE3B,EAAAA,EAAAA,EAAI;AAAC,IAAA,CAAA,CAAEwB,EAAAA,EAAE,CAAA,GAAExB,EAAAA,EAAEyB,EAAAA,EAAEC,EAAC,CAAA;AAAA,EAAC;AAAC,EAAA,OAAO1B,EAAAA,IAAGA,KAAE,CAAA,GAAE,CAAA,CAAE0B,IAAE,CAAA,EAAEA,EAAAA,CAAE,MAAA,EAAO1B,EAAC,CAAA,GAAE0B,EAAAA;AAAC;AAAC,IAAM,EAAA,GAAG,MAAA;AAAO,IAAM,KAAN,MAAQ;AAAA,EAAC,YAAYF,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,cAAA,GAAe,EAAC,mBAAA,EAAoB,CAAA,EAAE,SAAA,EAAU,CAAA,EAAE,MAAA,EAAO,CAAA,EAAE,MAAA,EAAO,MAAA,EAAO,WAAA,EAAY,CAAA,EAAE,cAAA,EAAe,GAAE,YAAA,EAAa,IAAA,EAAI,cAAA,EAAe,CAAA,EAAE,SAAA,EAAU,SAAA,EAAU,UAAA,EAAW,EAAA,EAAG,YAAA,EAAa,GAAA,EAAI,UAAA,EAAW,EAAA,EAAG,UAAA,EAAW,EAAA,EAAG,SAAQ,EAAA,EAAG,YAAA,EAAa,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,kBAAA,EAAmB,KAAA,EAAG,sBAAA,EAAuB,KAAA,EAAG,gBAAA,EAAiB,KAAA,EAAG,sBAAA,EAAuB,GAAA,EAAE,EAAE,IAAA,CAAK,MAAA,GAAOA,EAAAA,IAAG,EAAC,EAAE,IAAA,CAAK,MAAA,CAAO,OAAA,KAAU,IAAA,CAAK,cAAA,GAAe,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,EAAE;AAAA,EAAC,OAAO,OAAA,GAAS;AAAC,IAAA,OAAO,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,GAAE,KAAG,EAAE,CAAA;AAAA,EAAC;AAAA,EAAC,GAAGA,EAAAA,EAAE;AAAC,IAAA,OAAOA,EAAAA,GAAE,OAAO,MAAA,CAAO,IAAG,IAAA,CAAK,cAAA,EAAeA,EAAC,CAAA,GAAE,IAAA,CAAK,cAAA;AAAA,EAAc;AAAA,EAAC,EAAA,CAAGA,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,IAAA,OAAM,EAAC,KAAA,EAAMwB,EAAAA,EAAE,IAAA,EAAKC,EAAAA,IAAG,EAAC,EAAE,OAAA,EAAQzB,EAAAA,IAAG,IAAA,CAAK,cAAA,EAAc;AAAA,EAAC;AAAA,EAAC,IAAA,CAAKwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,IAAA,CAAK,EAAA,CAAG8B,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,EAAA,CAAG,MAAA,EAAO,CAAC,CAAA,CAAEH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE7B,EAAC,CAAC,CAAA,EAAEA,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,SAAA,CAAU2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,IAAA,CAAK,EAAA,CAAG8B,EAAC,GAAEC,EAAAA,GAAE,EAAC,EAAEC,EAAAA,GAAE,CAAA,CAAEL,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAE7B,EAAC,CAAA;AAAE,IAAA,IAAGA,GAAE,IAAA,EAAK;AAAC,MAAA,MAAM8B,EAAAA,GAAE,CAAC,CAACH,EAAAA,EAAEC,EAAC,CAAA,EAAE,CAACD,KAAExB,EAAAA,EAAEyB,EAAC,GAAE,CAACD,EAAAA,GAAExB,IAAEyB,EAAAA,GAAEC,EAAC,GAAE,CAACF,EAAAA,EAAEC,EAAAA,GAAEC,EAAC,CAAC,CAAA;AAAE,MAAA,OAAA,KAAU7B,GAAE,SAAA,GAAU+B,EAAAA,CAAE,KAAK,CAAA,CAAE,CAACD,EAAC,CAAA,EAAE9B,EAAC,CAAC,CAAA,GAAE+B,GAAE,IAAA,CAAK,CAAA,CAAE,CAACD,EAAC,CAAA,EAAE9B,EAAC,CAAC,CAAA;AAAA,IAAC;AAAC,IAAA,OAAOA,EAAAA,CAAE,MAAA,KAAS,EAAA,IAAI+B,EAAAA,CAAE,IAAA,CAAKC,EAAC,CAAA,EAAE,IAAA,CAAK,EAAA,CAAG,WAAA,EAAYD,EAAAA,EAAE/B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,OAAA,CAAQ2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,KAAE,IAAA,CAAK,EAAA,CAAG8B,EAAC,CAAA,EAAEC,EAAAA,GAAE,EAAC,EAAEC,EAAAA,GAAE,EAAE7B,EAAAA,EAAE0B,EAAAA,EAAE7B,EAAC,CAAA,EAAED,EAAAA,GAAE,EAAE4B,EAAAA,EAAEC,EAAAA,EAAE5B,IAAEgC,EAAC,CAAA;AAAE,IAAA,IAAGhC,EAAAA,CAAE,IAAA,EAAK,IAAG,OAAA,KAAUA,GAAE,SAAA,EAAU;AAAC,MAAA,MAAMG,KAAE,CAAA,CAAEwB,EAAAA,EAAEC,EAAAA,EAAE5B,EAAAA,EAAEgC,EAAC,CAAA,CAAE,KAAA;AAAM,MAAA7B,EAAAA,CAAE,IAAA,GAAK,UAAA,EAAW4B,EAAAA,CAAE,KAAK5B,EAAC,CAAA;AAAA,IAAC,CAAA,MAAM4B,EAAAA,CAAE,IAAA,CAAK,CAAA,CAAE,CAAChC,EAAAA,CAAE,eAAe,CAAA,EAAEC,EAAC,CAAC,CAAA;AAAE,IAAA,OAAOA,EAAAA,CAAE,MAAA,KAAS,EAAA,IAAI+B,EAAAA,CAAE,IAAA,CAAKhC,EAAAA,CAAE,KAAK,CAAA,EAAE,IAAA,CAAK,EAAA,CAAG,SAAA,EAAUgC,EAAAA,EAAE/B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,MAAA,CAAO2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,IAAA,MAAMC,KAAE,IAAA,CAAK,OAAA,CAAQH,IAAEC,EAAAA,EAAEzB,EAAAA,EAAEA,IAAE0B,EAAC,CAAA;AAAE,IAAA,OAAOC,EAAAA,CAAE,QAAM,QAAA,EAASA,EAAAA;AAAA,EAAC;AAAA,EAAC,UAAA,CAAWH,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,EAAA,CAAGyB,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,EAAA,CAAG,YAAA,EAAa,CAAC,CAAA,CAAED,IAAE,KAAA,EAAGxB,EAAC,CAAC,CAAA,EAAEA,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,GAAA,CAAIwB,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,GAAE,KAAA,EAAGC,EAAAA,EAAE;AAAC,IAAA,MAAMjC,KAAE,IAAA,CAAK,EAAA,CAAGiC,EAAC,CAAA,EAAE/B,EAAAA,GAAE,EAAC,EAAEgC,EAAAA,GAAE,CAAA,CAAEN,EAAAA,EAAEC,IAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,IAAE9B,EAAAA,EAAE+B,EAAAA,EAAE,MAAGhC,EAAC,CAAA;AAAE,IAAA,IAAGgC,MAAGhC,EAAAA,CAAE,IAAA,EAAK,IAAG,OAAA,KAAUA,GAAE,SAAA,EAAU;AAAC,MAAA,MAAMgC,EAAAA,GAAE,MAAA,CAAO,MAAA,CAAO,IAAGhC,EAAC,CAAA;AAAE,MAAAgC,GAAE,kBAAA,GAAmB,IAAA;AAAG,MAAA,MAAMC,EAAAA,GAAE,CAAA,CAAEL,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE,IAAA,EAAG,KAAA,EAAG+B,EAAC,CAAA;AAAE,MAAAC,EAAAA,CAAE,IAAA,GAAK,UAAA,EAAW/B,EAAAA,CAAE,KAAK+B,EAAC,CAAA;AAAA,IAAC,CAAA,MAAM/B,EAAAA,CAAE,IAAA,CAAA,CAAK,SAAS0B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,EAAE;AAAC,MAAA,MAAMC,EAAAA,GAAEL,IAAE5B,EAAAA,GAAE6B,EAAAA;AAAE,MAAA,IAAI3B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIE,EAAAA,GAAE,CAAC,GAAE8B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIJ,EAAAA,GAAE,CAAC,CAAA;AAAE,MAAA5B,EAAAA,IAAG,CAAA,CAAE,IAAA,GAAIA,EAAAA,EAAE8B,EAAC,GAAEE,EAAAA,IAAG,CAAA,CAAE,IAAA,GAAIA,EAAAA,EAAEF,EAAC,CAAA;AAAE,MAAA,IAAIG,EAAAA,GAAEJ,IAAEK,EAAAA,GAAEnC,EAAAA;AAAE,MAAA,OAAKkC,EAAAA,GAAE,KAAGA,EAAAA,IAAG,IAAE,IAAA,CAAK,EAAA,EAAGC,EAAAA,IAAG,CAAA,GAAE,IAAA,CAAK,EAAA;AAAG,MAAAA,EAAAA,GAAED,KAAE,CAAA,GAAE,IAAA,CAAK,OAAKA,EAAAA,GAAE,CAAA,EAAEC,EAAAA,GAAE,CAAA,GAAE,IAAA,CAAK,EAAA,CAAA;AAAI,MAAA,MAAMrC,MAAGqC,EAAAA,GAAED,EAAAA,IAAGH,EAAAA,CAAE,cAAA,EAAetB,KAAE,EAAC;AAAE,MAAA,KAAA,IAAQkB,EAAAA,GAAEO,IAAEP,EAAAA,IAAGQ,EAAAA,EAAER,MAAG7B,EAAAA,EAAEW,EAAAA,CAAE,IAAA,CAAK,CAACuB,EAAAA,GAAE/B,KAAE,IAAA,CAAK,GAAA,CAAI0B,EAAC,CAAA,EAAE5B,EAAAA,GAAEkC,KAAE,IAAA,CAAK,GAAA,CAAIN,EAAC,CAAC,CAAC,CAAA;AAAE,MAAA,OAAOlB,EAAAA,CAAE,IAAA,CAAK,CAACuB,EAAAA,GAAE/B,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIkC,EAAC,CAAA,EAAEpC,EAAAA,GAAEkC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAIE,EAAC,CAAC,CAAC,CAAA,EAAE1B,EAAAA,CAAE,IAAA,CAAK,CAACuB,EAAAA,EAAEjC,EAAC,CAAC,CAAA,EAAE,CAAA,CAAE,CAACU,EAAC,CAAA,EAAEsB,EAAC,CAAA;AAAA,IAAC,CAAA,EAAEJ,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAED,EAAC,CAAC,CAAA;AAAE,IAAA,OAAOA,EAAAA,CAAE,MAAA,KAAS,EAAA,IAAIE,EAAAA,CAAE,IAAA,CAAKgC,EAAC,CAAA,EAAE,IAAA,CAAK,EAAA,CAAG,KAAA,EAAMhC,EAAAA,EAAEF,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,KAAA,CAAM4B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,EAAA,CAAGyB,EAAC,CAAA,EAAEC,EAAAA,GAAE,EAAC,EAAEC,EAAAA,GAAE,CAAA,CAAEH,EAAAA,EAAExB,EAAC,CAAA;AAAE,IAAA,IAAGA,EAAAA,CAAE,QAAMA,EAAAA,CAAE,IAAA,KAAO,IAAG,IAAG,OAAA,KAAUA,GAAE,SAAA,EAAU;AAAC,MAAA,MAAMyB,EAAAA,GAAE,EAAED,EAAAA,EAAE,MAAA,CAAO,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,EAAExB,EAAC,CAAA,EAAE,EAAC,kBAAA,EAAmB,IAAA,EAAG,SAAA,EAAUA,EAAAA,CAAE,SAAA,GAAUA,EAAAA,CAAE,YAAUA,EAAAA,CAAE,sBAAA,GAAuB,CAAA,EAAE,CAAC,CAAA;AAAE,MAAA0B,EAAAA,CAAE,IAAA,CAAK,EAAC,IAAA,EAAK,UAAA,EAAW,GAAA,EAAI,IAAA,CAAK,YAAA,CAAaD,EAAAA,CAAE,GAAG,CAAA,EAAE,CAAA;AAAA,IAAC,CAAA,MAAK;AAAC,MAAA,MAAMA,EAAAA,GAAE,EAAC,EAAEE,EAAAA,GAAEH,EAAAA;AAAE,MAAA,IAAGG,GAAE,MAAA,EAAO;AAAC,QAAA,MAAMH,EAAAA,GAAE,QAAA,IAAU,OAAOG,EAAAA,CAAE,CAAC,EAAE,CAAC,CAAA,GAAE,CAACA,EAAC,CAAA,GAAEA,EAAAA;AAAE,QAAA,KAAA,MAAUD,EAAAA,IAAKF,EAAAA,EAAEE,EAAAA,CAAE,MAAA,GAAO,IAAED,EAAAA,CAAE,IAAA,CAAK,GAAGC,EAAC,CAAA,GAAE,CAAA,KAAIA,GAAE,MAAA,GAAOD,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAE,CAAA,CAAE,CAACC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,GAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,GAAE,EAAA,EAAA,CAAI,CAAA,GAAE1B,EAAAA,CAAE,SAAA,IAAW,CAAC,CAAC,IAAEyB,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAE,CAAA,CAAEC,EAAC,CAAA,EAAE,EAAA,EAAA,CAAI,CAAA,GAAE1B,EAAAA,CAAE,SAAA,IAAW,CAAC,CAAC,CAAA;AAAA,MAAC;AAAC,MAAAyB,EAAAA,CAAE,UAAQC,EAAAA,CAAE,IAAA,CAAK,EAAE,CAACD,EAAC,CAAA,EAAEzB,EAAC,CAAC,CAAA;AAAA,IAAC;AAAC,IAAA,OAAOA,EAAAA,CAAE,MAAA,KAAS,EAAA,IAAI0B,EAAAA,CAAE,IAAA,CAAKC,EAAC,CAAA,EAAE,IAAA,CAAK,EAAA,CAAG,OAAA,EAAQD,EAAAA,EAAE1B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,OAAA,CAAQwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,EAAA,CAAGyB,EAAC,CAAA,EAAEC,EAAAA,GAAE,EAAC,EAAEC,EAAAA,GAAE,CAAA,CAAEH,EAAAA,EAAE,IAAA,EAAGxB,EAAC,CAAA;AAAE,IAAA,OAAOA,EAAAA,CAAE,IAAA,KAAO,OAAA,KAAUA,EAAAA,CAAE,YAAU0B,EAAAA,CAAE,IAAA,CAAK,CAAA,CAAE,CAACF,EAAC,CAAA,EAAExB,EAAC,CAAC,CAAA,GAAE0B,GAAE,IAAA,CAAK,CAAA,CAAE,CAACF,EAAC,CAAA,EAAExB,EAAC,CAAC,CAAA,CAAA,EAAGA,GAAE,MAAA,KAAS,EAAA,IAAI0B,EAAAA,CAAE,IAAA,CAAKC,EAAC,CAAA,EAAE,IAAA,CAAK,EAAA,CAAG,SAAA,EAAUD,IAAE1B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,IAAA,CAAKwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,KAAE,IAAA,CAAK,EAAA,CAAGyB,EAAC,CAAA,EAAEC,KAAE,EAAC;AAAE,IAAA,IAAG,CAACF,EAAAA,EAAE,OAAO,KAAK,EAAA,CAAG,MAAA,EAAOE,IAAE1B,EAAC,CAAA;AAAE,IAAAwB,EAAAA,GAAAA,CAAGA,EAAAA,IAAG,EAAA,EAAI,OAAA,CAAQ,KAAA,EAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,QAAA,EAAS,GAAG,CAAA,CAAE,OAAA,CAAQ,WAAU,GAAG,CAAA;AAAE,IAAA,MAAMG,EAAAA,GAAE3B,EAAAA,CAAE,IAAA,IAAM,aAAA,KAAgBA,EAAAA,CAAE,QAAMA,EAAAA,CAAE,IAAA,KAAO,EAAA,EAAGH,EAAAA,GAAEG,EAAAA,CAAE,MAAA,KAAS,IAAG4B,EAAAA,GAAE,CAAC,EAAE5B,EAAAA,CAAE,cAAA,IAAgBA,EAAAA,CAAE,cAAA,GAAe,CAAA,CAAA,EAAG6B,EAAAA,GAAAA,CAAE,SAASL,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,MAAA,MAAM0B,EAAAA,GAAE,EAAE,CAAA,CAAE,CAAA,CAAEF,EAAC,CAAC,CAAC,CAAA,EAAEG,EAAAA,GAAE,EAAC;AAAE,MAAA,IAAI9B,EAAAA,GAAE,EAAC,EAAE+B,EAAAA,GAAE,CAAC,CAAA,EAAE,CAAC,CAAA,EAAEC,EAAAA,GAAE,EAAC;AAAE,MAAA,MAAMjC,KAAE,MAAI;AAAC,QAAAiC,EAAAA,CAAE,MAAA,IAAQ,CAAA,IAAGhC,EAAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAEgC,EAAAA,EAAEJ,EAAC,CAAC,CAAA,EAAEI,EAAAA,GAAE,EAAC;AAAA,MAAC,CAAA,EAAE/B,KAAE,MAAI;AAAC,QAAAF,EAAAA,IAAIC,EAAAA,CAAE,MAAA,KAAS8B,GAAE,IAAA,CAAK9B,EAAC,CAAA,EAAEA,EAAAA,GAAE,EAAC,CAAA;AAAA,MAAE,CAAA;AAAE,MAAA,KAAA,MAAS,EAAC,KAAI2B,EAAAA,EAAE,IAAA,EAAKC,IAAC,IAAIC,EAAAA,UAASF,EAAAA;AAAE,QAAC,KAAI,GAAA;AAAI,UAAA1B,EAAAA,EAAE,EAAE8B,EAAAA,GAAE,CAACH,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAE5B,EAAAA,CAAE,KAAK+B,EAAC,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,GAAA;AAAI,UAAAhC,EAAAA,EAAE,EAAEC,EAAAA,CAAE,IAAA,CAAK,CAAC4B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,GAAA;AAAI,UAAA,IAAG,CAACI,GAAE,MAAA,EAAO;AAAC,YAAA,MAAML,KAAE3B,EAAAA,CAAE,MAAA,GAAOA,GAAEA,EAAAA,CAAE,MAAA,GAAO,CAAC,CAAA,GAAE+B,EAAAA;AAAE,YAAAC,EAAAA,CAAE,KAAK,CAACL,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA,UAAC;AAAC,UAAAK,EAAAA,CAAE,IAAA,CAAK,CAACJ,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA,EAAEI,EAAAA,CAAE,KAAK,CAACJ,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,GAAEI,EAAAA,CAAE,IAAA,CAAK,CAACJ,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,GAAA;AAAI,UAAA7B,EAAAA,EAAE,EAAEC,EAAAA,CAAE,IAAA,CAAK,CAAC+B,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA;AAAE,MAAA,IAAG9B,EAAAA,EAAE,EAAE,CAACE,EAAAA,EAAE,OAAO2B,EAAAA;AAAE,MAAA,MAAMG,KAAE,EAAC;AAAE,MAAA,KAAA,MAAUN,MAAKG,EAAAA,EAAE;AAAC,QAAA,MAAMF,EAAAA,GAAE,CAAA,CAAED,EAAAA,EAAExB,EAAC,CAAA;AAAE,QAAAyB,EAAAA,CAAE,MAAA,IAAQK,EAAAA,CAAE,IAAA,CAAKL,EAAC,CAAA;AAAA,MAAC;AAAC,MAAA,OAAOK,EAAAA;AAAA,IAAC,GAAEN,EAAAA,EAAE,CAAA,EAAEI,EAAAA,GAAE,CAAA,GAAE,KAAG5B,EAAAA,CAAE,cAAA,IAAgB,CAAA,CAAA,GAAA,CAAI,CAAA,GAAEA,GAAE,SAAA,IAAW,CAAC,GAAEJ,EAAAA,GAAE,CAAA,CAAE4B,IAAExB,EAAC,CAAA;AAAE,IAAA,IAAG2B,EAAAA,MAAK,OAAA,KAAU3B,EAAAA,CAAE,WAAU,IAAG,CAAA,KAAI6B,GAAE,MAAA,EAAO;AAAC,MAAA,MAAMJ,EAAAA,GAAE,EAAED,EAAAA,EAAE,MAAA,CAAO,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,EAAExB,EAAC,CAAA,EAAE,EAAC,kBAAA,EAAmB,IAAA,EAAG,SAAA,EAAUA,EAAAA,CAAE,SAAA,GAAUA,EAAAA,CAAE,YAAUA,EAAAA,CAAE,sBAAA,GAAuB,CAAA,EAAE,CAAC,CAAA;AAAE,MAAA0B,EAAAA,CAAE,IAAA,CAAK,EAAC,IAAA,EAAK,UAAA,EAAW,GAAA,EAAI,IAAA,CAAK,YAAA,CAAaD,EAAAA,CAAE,GAAG,CAAA,EAAE,CAAA;AAAA,IAAC,OAAMC,EAAAA,CAAE,KAAK,CAAA,CAAEG,EAAAA,EAAE7B,EAAC,CAAC,CAAA;AAAA,SAAO0B,EAAAA,CAAE,IAAA,CAAK,CAAA,CAAEG,EAAAA,EAAE7B,EAAC,CAAC,CAAA;AAAE,IAAA,OAAOH,EAAAA,KAAI+B,EAAAA,GAAEC,EAAAA,CAAE,OAAA,EAAS,CAAAL,EAAAA,KAAG;AAAC,MAAAE,GAAE,IAAA,CAAK,CAAA,CAAEF,EAAAA,EAAE,KAAA,EAAGxB,EAAC,CAAC,CAAA;AAAA,IAAC,CAAA,EAAE,GAAE0B,EAAAA,CAAE,IAAA,CAAK9B,EAAC,IAAG,IAAA,CAAK,EAAA,CAAG,MAAA,EAAO8B,EAAAA,EAAE1B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,SAAA,CAAUwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,IAAIzB,EAAAA,GAAE,EAAA;AAAG,IAAA,KAAA,MAAU0B,EAAAA,IAAKF,GAAE,GAAA,EAAI;AAAC,MAAA,MAAMA,KAAE,QAAA,IAAU,OAAOC,EAAAA,IAAGA,EAAAA,IAAG,IAAEC,EAAAA,CAAE,IAAA,CAAK,GAAA,EAAK,CAAAF,OAAG,CAACA,EAAAA,CAAE,QAAQC,EAAC,CAAA,KAAIC,EAAAA,CAAE,IAAA;AAAK,MAAA,QAAOA,GAAE,EAAA;AAAG,QAAC,KAAI,MAAA;AAAO,UAAA1B,EAAAA,IAAG,IAAIwB,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,CAAA;AAAI,UAAA;AAAA,QAAM,KAAI,UAAA;AAAW,UAAAxB,EAAAA,IAAG,CAAA,CAAA,EAAIwB,EAAAA,CAAE,CAAC,CAAC,IAAIA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAA,EAAKA,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAC,CAAA,EAAA,EAAKA,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,CAAA;AAAI,UAAA;AAAA,QAAM,KAAI,QAAA;AAAS,UAAAxB,EAAAA,IAAG,IAAIwB,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA;AAAG,IAAC;AAAC,IAAA,OAAOxB,GAAE,IAAA,EAAK;AAAA,EAAC;AAAA,EAAC,QAAQwB,EAAAA,EAAE;AAAC,IAAA,MAAMC,EAAAA,GAAED,EAAAA,CAAE,IAAA,IAAM,EAAC,EAAExB,EAAAA,GAAEwB,EAAAA,CAAE,OAAA,IAAS,IAAA,CAAK,cAAA,EAAeE,EAAAA,GAAE,EAAC;AAAE,IAAA,KAAA,MAAUF,MAAKC,EAAAA,EAAE;AAAC,MAAA,IAAIA,EAAAA,GAAE,IAAA;AAAK,MAAA,QAAOD,GAAE,IAAA;AAAK,QAAC,KAAI,MAAA;AAAO,UAAAC,EAAAA,GAAE,EAAC,CAAA,EAAE,IAAA,CAAK,UAAUD,EAAC,CAAA,EAAE,MAAA,EAAOxB,EAAAA,CAAE,MAAA,EAAO,WAAA,EAAYA,EAAAA,CAAE,WAAA,EAAY,MAAK,EAAA,EAAE;AAAE,UAAA;AAAA,QAAM,KAAI,UAAA;AAAW,UAAAyB,EAAAA,GAAE,EAAC,CAAA,EAAE,IAAA,CAAK,UAAUD,EAAC,CAAA,EAAE,MAAA,EAAO,EAAA,EAAG,WAAA,EAAY,CAAA,EAAE,IAAA,EAAKxB,EAAAA,CAAE,QAAM,EAAA,EAAE;AAAE,UAAA;AAAA,QAAM,KAAI,YAAA;AAAa,UAAAyB,EAAAA,GAAE,IAAA,CAAK,UAAA,CAAWD,EAAAA,EAAExB,EAAC,CAAA;AAAA;AAAE,MAAAyB,EAAAA,IAAGC,EAAAA,CAAE,IAAA,CAAKD,EAAC,CAAA;AAAA,IAAC;AAAC,IAAA,OAAOC,EAAAA;AAAA,EAAC;AAAA,EAAC,UAAA,CAAWF,IAAEC,EAAAA,EAAE;AAAC,IAAA,IAAIzB,KAAEyB,EAAAA,CAAE,UAAA;AAAW,IAAA,OAAOzB,KAAE,CAAA,KAAIA,EAAAA,GAAEyB,GAAE,WAAA,GAAY,CAAA,CAAA,EAAG,EAAC,CAAA,EAAE,IAAA,CAAK,UAAUD,EAAC,CAAA,EAAE,QAAOC,EAAAA,CAAE,IAAA,IAAM,IAAG,WAAA,EAAYzB,EAAAA,EAAE,MAAK,EAAA,EAAE;AAAA,EAAC;AAAA,EAAC,aAAawB,EAAAA,EAAE;AAAC,IAAA,OAAOA,EAAAA,CAAE,QAAQ,CAACA,EAAAA,EAAEC,OAAI,CAAA,KAAIA,EAAAA,IAAG,MAAA,KAASD,EAAAA,CAAE,EAAA,EAAG;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,KAAN,MAAQ;AAAA,EAAC,WAAA,CAAYA,IAAEC,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,MAAA,GAAOD,EAAAA,EAAE,IAAA,CAAK,GAAA,GAAI,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA,EAAE,IAAA,CAAK,GAAA,GAAI,IAAI,GAAGC,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,KAAKD,EAAAA,EAAE;AAAC,IAAA,MAAMC,KAAED,EAAAA,CAAE,IAAA,IAAM,EAAC,EAAExB,KAAEwB,EAAAA,CAAE,OAAA,IAAS,IAAA,CAAK,iBAAA,IAAoBE,EAAAA,GAAE,IAAA,CAAK,GAAA,EAAIC,EAAAA,GAAEH,GAAE,OAAA,CAAQ,uBAAA;AAAwB,IAAA,KAAA,MAAU3B,EAAAA,IAAK4B,EAAAA,EAAE,QAAO5B,EAAAA,CAAE,IAAA;AAAK,MAAC,KAAI,MAAA;AAAO,QAAA6B,EAAAA,CAAE,IAAA,EAAK,EAAEA,EAAAA,CAAE,cAAY,MAAA,KAAS1B,EAAAA,CAAE,MAAA,GAAO,aAAA,GAAcA,GAAE,MAAA,EAAO0B,EAAAA,CAAE,SAAA,GAAU1B,EAAAA,CAAE,aAAYA,EAAAA,CAAE,cAAA,IAAgB0B,EAAAA,CAAE,WAAA,CAAY1B,GAAE,cAAc,CAAA,EAAEA,EAAAA,CAAE,oBAAA,KAAuB0B,GAAE,cAAA,GAAe1B,EAAAA,CAAE,oBAAA,CAAA,EAAsB,IAAA,CAAK,eAAe0B,EAAAA,EAAE7B,EAAAA,EAAE8B,EAAC,CAAA,EAAED,GAAE,OAAA,EAAQ;AAAE,QAAA;AAAA,MAAM,KAAI,UAAA,EAAW;AAAC,QAAAA,GAAE,IAAA,EAAK,EAAEA,EAAAA,CAAE,SAAA,GAAU1B,GAAE,IAAA,IAAM,EAAA;AAAG,QAAA,MAAMyB,EAAAA,GAAE,OAAA,KAAUD,EAAAA,CAAE,KAAA,IAAO,SAAA,KAAYA,GAAE,KAAA,IAAO,MAAA,KAASA,EAAAA,CAAE,KAAA,GAAM,SAAA,GAAU,SAAA;AAAU,QAAA,IAAA,CAAK,eAAeE,EAAAA,EAAE7B,EAAAA,EAAE8B,IAAEF,EAAC,CAAA,EAAEC,GAAE,OAAA,EAAQ;AAAE,QAAA;AAAA,MAAK;AAAA,MAAC,KAAI,YAAA;AAAa,QAAA,IAAA,CAAK,UAAA,CAAWA,EAAAA,EAAE7B,EAAAA,EAAEG,EAAC,CAAA;AAAA;AAAC,EAAC;AAAA,EAAC,UAAA,CAAWwB,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,IAAA,IAAI0B,KAAE1B,EAAAA,CAAE,UAAA;AAAW,IAAA0B,KAAE,CAAA,KAAIA,EAAAA,GAAE1B,EAAAA,CAAE,WAAA,GAAY,IAAGwB,EAAAA,CAAE,IAAA,EAAK,EAAExB,EAAAA,CAAE,gBAAcwB,EAAAA,CAAE,WAAA,CAAYxB,GAAE,YAAY,CAAA,EAAEA,GAAE,kBAAA,KAAqBwB,EAAAA,CAAE,cAAA,GAAexB,EAAAA,CAAE,qBAAoBwB,EAAAA,CAAE,WAAA,GAAYxB,EAAAA,CAAE,IAAA,IAAM,IAAGwB,EAAAA,CAAE,SAAA,GAAUE,EAAAA,EAAE,IAAA,CAAK,eAAeF,EAAAA,EAAEC,EAAAA,EAAEzB,GAAE,uBAAuB,CAAA,EAAEwB,GAAE,OAAA,EAAQ;AAAA,EAAC;AAAA,EAAC,cAAA,CAAeA,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,KAAE,SAAA,EAAU;AAAC,IAAAF,GAAE,SAAA,EAAU;AAAE,IAAA,KAAA,MAAUE,EAAAA,IAAKD,GAAE,GAAA,EAAI;AAAC,MAAA,MAAMA,KAAE,QAAA,IAAU,OAAOzB,EAAAA,IAAGA,EAAAA,IAAG,IAAE0B,EAAAA,CAAE,IAAA,CAAK,GAAA,EAAK,CAAAF,OAAG,CAACA,EAAAA,CAAE,QAAQxB,EAAC,CAAA,KAAI0B,EAAAA,CAAE,IAAA;AAAK,MAAA,QAAOA,GAAE,EAAA;AAAG,QAAC,KAAI,MAAA;AAAO,UAAAF,GAAE,MAAA,CAAOC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,UAAA;AAAW,UAAAD,GAAE,aAAA,CAAcC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,QAAA;AAAS,UAAAD,GAAE,MAAA,CAAOC,EAAAA,CAAE,CAAC,CAAA,EAAEA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAAA;AAAC,IAAC;AAAC,IAAA,UAAA,KAAaA,GAAE,IAAA,GAAKD,EAAAA,CAAE,KAAKE,EAAC,CAAA,GAAEF,GAAE,MAAA,EAAO;AAAA,EAAC;AAAA,EAAC,IAAI,SAAA,GAAW;AAAC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EAAG;AAAA,EAAC,iBAAA,GAAmB;AAAC,IAAA,OAAO,KAAK,GAAA,CAAI,cAAA;AAAA,EAAc;AAAA,EAAC,IAAA,CAAKA,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,KAAK,GAAA,CAAI,IAAA,CAAK2B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK9B,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,SAAA,CAAU2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,KAAK,GAAA,CAAI,SAAA,CAAU2B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK9B,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,OAAA,CAAQ2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,KAAK,GAAA,CAAI,OAAA,CAAQ2B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK9B,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,MAAA,CAAO2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,IAAA,MAAMC,KAAE,IAAA,CAAK,GAAA,CAAI,OAAOH,EAAAA,EAAEC,EAAAA,EAAEzB,IAAE0B,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAKC,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,UAAA,CAAWH,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,UAAA,CAAWwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAKzB,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,OAAA,CAAQwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAKzB,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,GAAA,CAAIwB,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,GAAE,KAAA,EAAGC,EAAAA,EAAE;AAAC,IAAA,MAAMjC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI4B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,EAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAKjC,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,KAAA,CAAM4B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,KAAA,CAAMwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAKzB,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAA,EAAC,IAAA,CAAKwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,IAAA,CAAKwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,IAAA,CAAKzB,EAAC,CAAA,EAAEA,EAAAA;AAAA,EAAC;AAAC,CAAA;AAAC,IAAM,EAAA,GAAG,4BAAA;AAA6B,IAAM,KAAN,MAAQ;AAAA,EAAC,WAAA,CAAYwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,IAAA,CAAK,MAAID,EAAAA,EAAE,IAAA,CAAK,GAAA,GAAI,IAAI,GAAGC,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,KAAKD,EAAAA,EAAE;AAAC,IAAA,MAAMC,EAAAA,GAAED,EAAAA,CAAE,IAAA,IAAM,EAAC,EAAExB,KAAEwB,EAAAA,CAAE,OAAA,IAAS,IAAA,CAAK,iBAAA,EAAkB,EAAEE,EAAAA,GAAE,KAAK,GAAA,CAAI,aAAA,IAAe,MAAA,CAAO,QAAA,EAASC,EAAAA,GAAED,EAAAA,CAAE,eAAA,CAAgB,EAAA,EAAG,GAAG,CAAA,EAAE7B,EAAAA,GAAE2B,EAAAA,CAAE,OAAA,CAAQ,uBAAA;AAAwB,IAAA,KAAA,MAAUI,MAAKH,EAAAA,EAAE;AAAC,MAAA,IAAIA,EAAAA,GAAE,IAAA;AAAK,MAAA,QAAOG,GAAE,IAAA;AAAK,QAAC,KAAI,MAAA;AAAO,UAAAH,EAAAA,GAAEC,EAAAA,CAAE,eAAA,CAAgB,EAAA,EAAG,MAAM,GAAED,EAAAA,CAAE,YAAA,CAAa,GAAA,EAAI,IAAA,CAAK,SAAA,CAAUG,EAAAA,EAAE/B,EAAC,CAAC,CAAA,EAAE4B,EAAAA,CAAE,YAAA,CAAa,QAAA,EAASzB,EAAAA,CAAE,MAAM,CAAA,EAAEyB,EAAAA,CAAE,YAAA,CAAa,cAAA,EAAezB,EAAAA,CAAE,WAAA,GAAY,EAAE,GAAEyB,EAAAA,CAAE,YAAA,CAAa,MAAA,EAAO,MAAM,CAAA,EAAEzB,EAAAA,CAAE,kBAAgByB,EAAAA,CAAE,YAAA,CAAa,kBAAA,EAAmBzB,EAAAA,CAAE,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA,CAAE,IAAA,EAAM,CAAA,EAAEA,EAAAA,CAAE,oBAAA,IAAsByB,EAAAA,CAAE,YAAA,CAAa,mBAAA,EAAoB,CAAA,EAAGzB,EAAAA,CAAE,oBAAoB,CAAA,CAAE,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,UAAA;AAAW,UAAAyB,KAAEC,EAAAA,CAAE,eAAA,CAAgB,IAAG,MAAM,CAAA,EAAED,GAAE,YAAA,CAAa,GAAA,EAAI,IAAA,CAAK,SAAA,CAAUG,IAAE/B,EAAC,CAAC,GAAE4B,EAAAA,CAAE,YAAA,CAAa,UAAS,MAAM,CAAA,EAAEA,EAAAA,CAAE,YAAA,CAAa,gBAAe,GAAG,CAAA,EAAEA,GAAE,YAAA,CAAa,MAAA,EAAOzB,GAAE,IAAA,IAAM,EAAE,GAAE,OAAA,KAAUwB,EAAAA,CAAE,SAAO,SAAA,KAAYA,EAAAA,CAAE,SAAOC,EAAAA,CAAE,YAAA,CAAa,aAAY,SAAS,CAAA;AAAE,UAAA;AAAA,QAAM,KAAI,YAAA;AAAa,UAAAA,EAAAA,GAAE,IAAA,CAAK,UAAA,CAAWC,EAAAA,EAAEE,IAAE5B,EAAC,CAAA;AAAA;AAAE,MAAAyB,EAAAA,IAAGE,EAAAA,CAAE,WAAA,CAAYF,EAAC,CAAA;AAAA,IAAC;AAAC,IAAA,OAAOE,EAAAA;AAAA,EAAC;AAAA,EAAC,UAAA,CAAWH,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE;AAAC,IAAA,IAAI0B,KAAE1B,EAAAA,CAAE,UAAA;AAAW,IAAA0B,EAAAA,GAAE,CAAA,KAAIA,EAAAA,GAAE1B,EAAAA,CAAE,WAAA,GAAY,CAAA,CAAA;AAAG,IAAA,MAAM2B,EAAAA,GAAEH,EAAAA,CAAE,eAAA,CAAgB,EAAA,EAAG,MAAM,CAAA;AAAE,IAAA,OAAOG,EAAAA,CAAE,aAAa,GAAA,EAAI,IAAA,CAAK,UAAUF,EAAAA,EAAEzB,EAAAA,CAAE,uBAAuB,CAAC,CAAA,EAAE2B,EAAAA,CAAE,aAAa,QAAA,EAAS3B,EAAAA,CAAE,IAAA,IAAM,EAAE,CAAA,EAAE2B,EAAAA,CAAE,aAAa,cAAA,EAAeD,EAAAA,GAAE,EAAE,CAAA,EAAEC,EAAAA,CAAE,YAAA,CAAa,QAAO,MAAM,CAAA,EAAE3B,GAAE,YAAA,IAAc2B,EAAAA,CAAE,aAAa,kBAAA,EAAmB3B,EAAAA,CAAE,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA,CAAE,MAAM,CAAA,EAAEA,EAAAA,CAAE,kBAAA,IAAoB2B,EAAAA,CAAE,YAAA,CAAa,qBAAoB,CAAA,EAAG3B,EAAAA,CAAE,kBAAkB,CAAA,CAAE,CAAA,EAAE2B,EAAAA;AAAA,EAAC;AAAA,EAAC,IAAI,SAAA,GAAW;AAAC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EAAG;AAAA,EAAC,iBAAA,GAAmB;AAAC,IAAA,OAAO,KAAK,GAAA,CAAI,cAAA;AAAA,EAAc;AAAA,EAAC,SAAA,CAAUH,IAAEC,EAAAA,EAAE;AAAC,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,SAAA,CAAUD,EAAAA,EAAEC,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,IAAA,CAAKD,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,KAAK,GAAA,CAAI,IAAA,CAAK2B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAK9B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,SAAA,CAAU2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,KAAK,GAAA,CAAI,SAAA,CAAU2B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAK9B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,OAAA,CAAQ2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAM9B,EAAAA,GAAE,KAAK,GAAA,CAAI,OAAA,CAAQ2B,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAK9B,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,MAAA,CAAO2B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAE;AAAC,IAAA,MAAMC,KAAE,IAAA,CAAK,GAAA,CAAI,OAAOH,EAAAA,EAAEC,EAAAA,EAAEzB,IAAE0B,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAKC,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,UAAA,CAAWH,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,UAAA,CAAWwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAKzB,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,OAAA,CAAQwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAKzB,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,GAAA,CAAIwB,IAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,IAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,GAAE,KAAA,EAAGC,EAAAA,EAAE;AAAC,IAAA,MAAMjC,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI4B,EAAAA,EAAEC,EAAAA,EAAEzB,EAAAA,EAAE0B,EAAAA,EAAEC,EAAAA,EAAE9B,EAAAA,EAAE+B,EAAAA,EAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAKjC,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,KAAA,CAAM4B,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,KAAA,CAAMwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAKzB,EAAC,CAAA;AAAA,EAAC;AAAA,EAAC,IAAA,CAAKwB,IAAEC,EAAAA,EAAE;AAAC,IAAA,MAAMzB,EAAAA,GAAE,IAAA,CAAK,GAAA,CAAI,IAAA,CAAKwB,IAAEC,EAAC,CAAA;AAAE,IAAA,OAAO,IAAA,CAAK,KAAKzB,EAAC,CAAA;AAAA,EAAC;AAAC,CAAA;AAAC,IAAI,EAAA,GAAG,EAAC,MAAA,EAAO,CAACwB,EAAAA,EAAEC,EAAAA,KAAI,IAAI,EAAA,CAAGD,EAAAA,EAAEC,EAAC,CAAA,EAAE,GAAA,EAAI,CAACD,EAAAA,EAAEC,EAAAA,KAAI,IAAI,EAAA,CAAGD,EAAAA,EAAEC,EAAC,CAAA,EAAE,SAAA,EAAU,CAAAD,EAAAA,KAAG,IAAI,EAAA,CAAGA,EAAC,CAAA,EAAE,OAAA,EAAQ,MAAI,EAAA,CAAG,SAAQ,EAAC;;;ACK3k2B,IAAM,EAAE,EAAA,EAAAC,EAAAA,EAAA,GAAO,IAAA;AAAf,IAaaD,KAAWC,EAAAA,GAAK,IAAA;AAb7B,IA+DaC,EAAAA,GAAmB,GAAA;AA/DhC,IAqEaG,EAAAA,GAAgC,CAAC,CAAA,EAAG,CAAA,CAAA;AClEjD,SAAgBjC,GACd6B,EAAAA,EACAD,EAAAA,EACAE,IACAG,EAAAA,GAAiC,CAAAJ,OAAMA,EAAAA,EACvC;AACA,EAAA,OAAOA,EAAAA,GAAOI,EAAAA,CAAO,GAAA,GAAML,EAAAA,IAAY,MAAME,EAAAA,CAAA,CAAA;AAAU;ACZzD,IAAM,EAAE,GAAA,EAAA7B,EAAAA,EAAA,GAAQ,IAAA;AAYhB,SAAgB8B,EAAAA,CACdF,EAAAA,EACAD,EAAAA,EACAE,EAAAA,EACQ;AAER,EAAA,IAAMG,EAAAA,GAAKhC,EAAAA,CAAI,CAAA,EAAG2B,EAAAA,GAAWE,EAAA,CAAA;AAI7B,EAAA,OAAO7B,EAAAA,CACL,CAAA,EACA4B,EAAAA,GAAAA,CAJS5B,EAAAA,CAAI,CAAA,EAAG,IAAIgC,EAAA,CAAA,GAICJ,EAAAA,KAAiBI,EAAAA,GAAK,KAAA,CAAA,CAAA;AAC5C;ACpBH,SAAgB7B,GAAIyB,EAAAA,EAAe;AACjC,EAAA,OAAO,CAAC,CAACA,EAAAA,CAAE,CAAA,GAAI,CAACA,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AASvB,SAAgB3B,EAAAA,CAAI2B,IAASD,EAAAA,EAAe;AAC1C,EAAA,OAAO,CAACC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,EAAIC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AAUnC,SAAgBM,EAAAA,CAAQL,EAAAA,EAAWD,EAAAA,EAASE,EAAAA,EAAe;AAGzD,EAAA,OAFAD,GAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,IAAKE,EAAAA,CAAE,CAAA,CAAA,EAClBD,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,GAAKE,EAAAA,CAAE,CAAA,CAAA,EACXD,EAAAA;AAAA;AAST,SAAgBM,EAAAA,CAAIN,IAASD,EAAAA,EAAe;AAC1C,EAAA,OAAO,CAACC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,EAAIC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AAUnC,SAAgBlB,EAAAA,CAAQmB,EAAAA,EAAWD,EAAAA,EAASE,EAAAA,EAAe;AAGzD,EAAA,OAFAD,GAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,IAAKE,EAAAA,CAAE,CAAA,CAAA,EAClBD,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,GAAKE,EAAAA,CAAE,CAAA,CAAA,EACXD,EAAAA;AAAA;AAST,SAAgB9B,EAAAA,CAAI8B,IAASD,EAAAA,EAAiB;AAC5C,EAAA,OAAO,CAACC,GAAE,CAAA,CAAA,GAAKD,IAAGC,EAAAA,CAAE,CAAA,IAAKD,EAAA,CAAA;AAAE;AAU7B,SAAgBQ,EAAAA,CAAQP,EAAAA,EAAWD,EAAAA,EAASE,EAAAA,EAAiB;AAG3D,EAAA,OAFAD,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,GAAKE,EAAAA,EAChBD,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,IAAKE,EAAAA,EACTD,EAAAA;AAAA;AAST,SAAgBY,EAAAA,CAAIZ,IAASD,EAAAA,EAAiB;AAC5C,EAAA,OAAO,CAACC,GAAE,CAAA,CAAA,GAAKD,IAAGC,EAAAA,CAAE,CAAA,IAAKD,EAAA,CAAA;AAAE;AAQ7B,SAAgBI,GAAIH,EAAAA,EAAe;AACjC,EAAA,OAAO,CAACA,EAAAA,CAAE,CAAA,GAAI,CAACA,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AAStB,SAAgBQ,EAAAA,CAAQR,IAAWD,EAAAA,EAAe;AAChD,EAAA,IAAME,EAAAA,GAAOF,GAAE,CAAA,CAAA;AAGf,EAAA,OAFAC,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,GACXC,EAAAA,CAAI,CAAA,CAAA,GAAK,CAACC,EAAAA,EACHD,EAAAA;AAAA;AAST,SAAgB,EAAA,CAAIA,IAASD,EAAAA,EAAiB;AAC5C,EAAA,OAAOC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,IAAKC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA;AAAA;AAShC,SAAgBrB,EAAAA,CAAQsB,IAASD,EAAAA,EAAkB;AACjD,EAAA,OAAOC,EAAAA,CAAE,CAAA,CAAA,KAAOD,EAAAA,CAAE,CAAA,KAAMC,EAAAA,CAAE,CAAA,CAAA,KAAOD,EAAAA,CAAE,CAAA,CAAA;AAAA;AAQrC,SAAgBe,GAAId,EAAAA,EAAiB;AACnC,EAAA,OAAO,KAAK,KAAA,CAAMA,EAAAA,CAAE,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AAkB/B,SAAgBH,EAAAA,CAAMG,IAASD,EAAAA,EAAiB;AAC9C,EAAA,IAAME,EAAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,EACdK,EAAAA,GAAKJ,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA;AACpB,EAAA,OAAOE,EAAAA,GAAKA,KAAKG,EAAAA,GAAKA,EAAAA;AAAA;AAQxB,SAAgBO,GAAIX,EAAAA,EAAe;AACjC,EAAA,OAAOY,EAAAA,CAAIZ,EAAAA,EAAGc,EAAAA,CAAId,EAAA,CAAE,CAAA;AAAC;AASvB,SAAgBvB,EAAAA,CAAKuB,IAASD,EAAAA,EAAiB;AAC7C,EAAA,OAAO,IAAA,CAAK,KAAA,CAAMC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,EAAIC,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AAoB7C,SAAgBgB,EAAAA,CAAUf,EAAAA,EAASD,EAAAA,EAASE,EAAAA,EAAiB;AAC3D,EAAA,IAAMG,EAAAA,GAAI,IAAA,CAAK,GAAA,CAAIH,EAAA,GACb9B,EAAAA,GAAI,IAAA,CAAK,GAAA,CAAI8B,EAAA,CAAA,EAEb7B,EAAAA,GAAK4B,EAAAA,CAAE,CAAA,IAAKD,EAAAA,CAAE,CAAA,CAAA,EACdG,EAAAA,GAAKF,EAAAA,CAAE,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,EAEdxB,EAAAA,GAAKH,EAAAA,GAAKD,EAAAA,GAAI+B,EAAAA,GAAKE,EAAAA,EACnB/B,EAAAA,GAAKD,EAAAA,GAAKgC,KAAIF,EAAAA,GAAK/B,EAAAA;AAEzB,EAAA,OAAO,CAACI,KAAKwB,EAAAA,CAAE,CAAA,GAAI1B,EAAAA,GAAK0B,EAAAA,CAAE,CAAA,CAAA,CAAA;AAAG;AAW/B,SAAgBsB,EAAAA,CAAcrB,EAAAA,EAAWD,EAAAA,EAASE,EAAAA,EAASG,EAAAA,EAAiB;AAC1E,EAAA,IAAMjC,EAAAA,GAAI,IAAA,CAAK,GAAA,CAAIiC,EAAA,GACbhC,EAAAA,GAAI,IAAA,CAAK,GAAA,CAAIgC,EAAA,CAAA,EAEbF,EAAAA,GAAKH,EAAAA,CAAE,CAAA,IAAKE,EAAAA,CAAE,CAAA,CAAA,EACd1B,EAAAA,GAAKwB,EAAAA,CAAE,CAAA,CAAA,GAAKE,EAAAA,CAAE,CAAA,CAAA,EAEd5B,EAAAA,GAAK6B,EAAAA,GAAK9B,EAAAA,GAAIG,EAAAA,GAAKJ,EAAAA,EACnBkC,EAAAA,GAAKH,EAAAA,GAAK/B,KAAII,EAAAA,GAAKH,EAAAA;AAIzB,EAAA,OAFA4B,EAAAA,CAAI,CAAA,CAAA,GAAK3B,EAAAA,GAAK4B,EAAAA,CAAE,CAAA,CAAA,EAChBD,EAAAA,CAAI,CAAA,CAAA,GAAKK,EAAAA,GAAKJ,EAAAA,CAAE,CAAA,CAAA,EACTD,EAAAA;AAAA;AAUT,SAAgB1B,EAAAA,CAAI0B,EAAAA,EAASD,EAAAA,EAASE,EAAAA,EAAiB;AACrD,EAAA,OAAO5B,EAAAA,CAAI2B,IAAG9B,EAAAA,CAAIoC,EAAAA,CAAIP,IAAGC,EAAA,CAAA,EAAIC,EAAA,CAAE,CAAA;AAAC;AAWlC,SAAgB,EAAA,CAAQD,EAAAA,EAAWD,EAAAA,EAASE,EAAAA,EAASG,EAAAA,EAAiB;AACpE,EAAA,IAAMjC,EAAAA,GAAK8B,EAAAA,CAAE,CAAA,CAAA,GAAKF,EAAAA,CAAE,CAAA,CAAA,EACd3B,EAAAA,GAAK6B,EAAAA,CAAE,CAAA,CAAA,GAAKF,EAAAA,CAAE,CAAA,CAAA;AAGpB,EAAA,OAFAC,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,GAAK5B,EAAAA,GAAKiC,EAAAA,EACrBJ,EAAAA,CAAI,CAAA,CAAA,GAAKD,EAAAA,CAAE,CAAA,CAAA,GAAK3B,KAAKgC,EAAAA,EACdJ,EAAAA;AAAA;AAUT,SAAgBkB,EAAAA,CAAIlB,EAAAA,EAASD,EAAAA,EAASE,EAAAA,EAAiB;AACrD,EAAA,OAAO5B,EAAAA,CAAI2B,EAAAA,EAAG9B,EAAAA,CAAI6B,EAAAA,EAAGE,EAAA,CAAE,CAAA;AAAC;AC9O1B,IAAMqB,EAAAA,GAAgB,CAAC,CAAA,EAAG,CAAA,CAAA;AAA1B,IACMH,EAAAA,GAAY,CAAC,CAAA,EAAG,CAAA,CAAA;AADtB,IAEMH,EAAAA,GAAY,CAAC,CAAA,EAAG,CAAA,CAAA;AAKtB,SAASN,EAAAA,CAAQV,IAAcC,EAAAA,EAAwB;AAErD,EAAA,IAAMG,EAAAA,GAAQc,EAAAA,CAAIlB,EAAAA,EAAQW,EAAAA,CAAIR,EAAAA,CAAIG,GAAIN,EAAAA,EADlB3B,EAAAA,CAAI2B,EAAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CACmB,CAAC,CAAA,EAAG,CAACC,EAAA,GACzD9B,EAAAA,GAAiB,EAAA,EACjBC,EAAAA,GAAO,CAAA,GAAI,EAAA;AACjB,EAAA,KAAA,IAAS6B,EAAAA,GAAI7B,EAAAA,EAAM6B,EAAAA,IAAK,CAAA,EAAGA,MAAK7B,EAAAA,EAC9BD,EAAAA,CAAO,IAAA,CAAK4C,GAAUX,EAAAA,EAAOJ,EAAAA,EAAQD,EAAAA,GAAW,CAAA,GAAIE,EAAA,CAAE,CAAA;AAExD,EAAA,OAAO9B,EAAAA;AAAA;AAMT,SAASiD,EAAAA,CACPpB,EAAAA,EACAC,EAAAA,EACAG,EAAAA,EACQ;AACR,EAAA,IAAMjC,EAAAA,GAAc,EAAA,EACdC,EAAAA,GAAO,CAAA,GAAIgC,EAAAA;AACjB,EAAA,KAAA,IAASA,EAAAA,GAAIhC,EAAAA,EAAMgC,EAAAA,IAAK,CAAA,EAAGA,MAAKhC,EAAAA,EAC9BD,EAAAA,CAAI,IAAA,CAAK4C,EAAAA,CAAUd,EAAAA,EAAYD,EAAAA,EAAQD,EAAAA,GAAWK,EAAA,CAAE,CAAA;AAEtD,EAAA,OAAOjC,EAAAA;AAAA;AAMT,SAASoD,EAAAA,CACPvB,EAAAA,EACAD,EAAAA,EACAE,EAAAA,EACQ;AACR,EAAA,IAAMG,EAAAA,GAAgBE,EAAAA,CAAIP,EAAAA,EAAWE,EAAA,CAAA,EAC/B9B,EAAAA,GAAUD,EAAAA,CAAIkC,EAAAA,EAAe,GAAA,CAAA,EAC7BhC,EAAAA,GAAUF,EAAAA,CAAIkC,IAAe,IAAA,CAAA;AACnC,EAAA,OAAO,CACLE,EAAAA,CAAIN,EAAAA,EAAQ7B,EAAA,CAAA,EACZmC,GAAIN,EAAAA,EAAQ5B,EAAA,CAAA,EACZC,EAAAA,CAAI2B,IAAQ5B,EAAA,CAAA,EACZC,EAAAA,CAAI2B,EAAAA,EAAQ7B,EAAA,CAAQ,CAAA;AACrB;AAMH,SAASsC,EAAAA,CACPT,EAAAA,EACAC,EAAAA,EACAG,EAAAA,EACAjC,EAAAA,EACQ;AACR,EAAA,IAAMC,EAAAA,GAAc,EAAA,EACd8B,EAAAA,GAAQgB,EAAAA,CAAIlB,IAAQC,EAAAA,EAAWG,EAAA,CAAA,EAC/B7B,EAAAA,GAAO,CAAA,GAAIJ,EAAAA;AACjB,EAAA,KAAA,IAAS8B,EAAAA,GAAI1B,EAAAA,EAAM0B,EAAAA,GAAI,CAAA,EAAGA,MAAK1B,EAAAA,EAC7BH,EAAAA,CAAI,IAAA,CAAK2C,GAAUb,EAAAA,EAAOF,EAAAA,EAAQD,EAAAA,GAAW,CAAA,GAAIE,EAAA,CAAE,CAAA;AAErD,EAAA,OAAO7B,EAAAA;AAAA;AAMT,SAAS,EAAA,CAAe4B,EAAAA,EAAcD,EAAAA,EAAiBE,EAAAA,EAAwB;AAC7E,EAAA,OAAO,CACL5B,EAAAA,CAAI2B,EAAAA,EAAQ9B,EAAAA,CAAI6B,EAAAA,EAAWE,EAAA,CAAO,CAAA,EAClC5B,EAAAA,CAAI2B,EAAAA,EAAQ9B,EAAAA,CAAI6B,EAAAA,EAAWE,KAAS,IAAA,CAAK,CAAA,EACzCK,EAAAA,CAAIN,EAAAA,EAAQ9B,EAAAA,CAAI6B,EAAAA,EAAWE,EAAAA,GAAS,IAAA,CAAK,CAAA,EACzCK,EAAAA,CAAIN,EAAAA,EAAQ9B,EAAAA,CAAI6B,EAAAA,EAAWE,EAAA,CAAO,CAAC,CAAA;AACpC;AASH,SAASuB,EAAAA,CACPxB,EAAAA,EACAD,EAAAA,EACAE,EAAAA,EACQ;AAGR,EAAA,OAFID,EAAAA,KAAU,KAAA,IAASA,EAAAA,KAAU,MAAA,GAAkB,CAAA,GAC/CA,EAAAA,KAAU,IAAA,GAAa,IAAA,CAAK,GAAA,CAAID,EAAAA,EAAME,EAAA,CAAA,GACnCD,EAAAA;AAAA;AAOT,SAASyB,GAAAA,CACPzB,EAAAA,EACAD,EAAAA,EACAE,EAAAA,EACQ;AACR,EAAA,OAAOD,EAAAA,CAAO,MAAM,CAAA,EAAG,EAAA,EAAI,MAAA,CAAA,CAAQA,IAAKI,EAAAA,KAAS;AAC/C,IAAA,IAAIjC,KAAWiC,EAAAA,CAAK,QAAA;AAIpB,IAAA,OAHIL,EAAAA,KACF5B,KAAW+B,EAAAA,CAAiBF,EAAAA,EAAKI,GAAK,QAAA,EAAUH,EAAA,CAAA,CAAA,EAAA,CAE1CD,EAAAA,GAAM7B,EAAAA,IAAY,CAAA;EAAA,CAAA,EACzB6B,EAAAA,CAAO,CAAA,CAAA,CAAG,QAAA,CAAA;AAAS;AAiBxB,SAAgBa,EAAAA,CACdb,EAAAA,EACAC,EAAAA,GAAkC,EAAA,EAC1B;AACR,EAAA,IAAM,EACJ,IAAA,EAAAG,EAAAA,GAAO,EAAA,EACP,SAAA,EAAAhC,EAAAA,GAAY,GAAA,EACZ,QAAA,EAAAF,EAAAA,GAAW,GAAA,EACX,gBAAA,EAAkB0C,EAAAA,GAAyB,IAAA,EAC3C,QAAAlC,EAAAA,GAAU,CAAAsB,EAAAA,KAAMA,EAAAA,EAChB,KAAA,EAAAc,EAAAA,GAAQ,EAAA,EACR,GAAA,EAAAH,EAAAA,GAAM,EAAA,EACN,IAAA,EAAMlC,EAAAA,GAAa,OAAA,GACjBwB,EAAAA,EAEE,EAAE,GAAA,EAAKc,EAAAA,GAAW,IAAA,EAAM,MAAA,EAAQzC,EAAAA,GAAkB,CAAA0B,EAAAA,KAAMA,EAAAA,IAAK,CAAA,GAAIA,EAAAA,CAAAA,EAAA,GACrEc,EAAAA,EAEI,EAAE,GAAA,EAAKI,EAAAA,GAAS,IAAA,EAAM,MAAA,EAAQL,EAAAA,GAAgB,CAAAb,EAAAA,KAAM,EAAEA,EAAAA,GAAIA,EAAAA,GAAIA,EAAAA,GAAI,CAAA,EAAA,GACtEW,EAAAA;AAGF,EAAA,IAAIX,GAAO,MAAA,KAAW,CAAA,IAAKI,EAAAA,IAAQ,CAAA,SAC1B,EAAA;AAIT,EAAA,IAAMsB,EAAAA,GAAc1B,EAAAA,CAAOA,EAAAA,CAAO,MAAA,GAAS,CAAA,CAAA,CAAG,aAAA,EAExC2B,EAAAA,GAAaH,EAAAA,CAAqBV,EAAAA,CAAM,KAAA,EAAOV,EAAAA,EAAMsB,EAAA,CAAA,EACrDT,EAAAA,GAAWO,EAAAA,CAAqBb,EAAAA,CAAI,KAAA,EAAOP,EAAAA,EAAMsB,EAAA,CAAA,EAGjDE,MAAuBxB,EAAAA,GAAOhC,EAAAA,KAAW,CAAA,EAGzCyD,EAAAA,GAAkB,EAAA,EAClBC,EAAAA,GAAmB,IAGrBC,EAAAA,GAAeN,GAAAA,CACjBzB,EAAAA,EACAY,EAAAA,EACAR,EAAA,CAAA,EAIE4B,EAAAA,GAAS7D,EAAAA,CACXiC,EAAAA,EACAlC,EAAAA,EACA8B,EAAAA,CAAOA,EAAAA,CAAO,MAAA,GAAS,CAAA,CAAA,CAAG,QAAA,EAC1BtB,EAAA,CAAA,EAIEuD,EAAAA,EAGAC,EAAAA,GAAalC,EAAAA,CAAO,CAAA,CAAA,CAAG,MAAA,EAGvBmC,EAAAA,GAAgBnC,GAAO,CAAA,CAAA,CAAG,KAAA,EAC1BoC,EAAAA,GAAiBD,EAAAA,EAGjBE,EAAAA,GAAsBF,EAAAA,EACtBG,EAAAA,GAAuBF,IAIvBG,EAAAA,GAAyB,KAAA;AAS7B,EAAA,KAAA,IAAStC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAID,EAAAA,CAAO,QAAQC,EAAAA,EAAAA,EAAK;AACtC,IAAA,IAAI,EAAE,UAAA7B,EAAAA,EAAA,GAAa4B,GAAOC,EAAA,CAAA,EACpB,EAAE,KAAA,EAAA1B,EAAAA,EAAO,MAAA,EAAA4B,IAAQ,QAAA,EAAAW,EAAAA,EAAU,aAAA,EAAAH,EAAAA,EAAA,GAAkBX,EAAAA,CAAOC,EAAA,CAAA,EACpDxB,EAAAA,GAAcwB,EAAAA,KAAMD,EAAAA,CAAO,MAAA,GAAS,CAAA;AAG1C,IAAA,IAAI,CAACvB,EAAAA,IAAeiD,EAAAA,GAAcf,EAAAA,GAAgB,CAAA,EAChD;AAWE,IAAAzC,EAAAA,IACE0C,OAIFxC,EAAAA,GAAW8B,EAAAA,CAAiB6B,IAAcjB,EAAAA,EAAUV,EAAA,IAGtD4B,EAAAA,GAAS7D,EAAAA,CAAgBiC,IAAMlC,EAAAA,EAAUE,EAAAA,EAAUM,EAAA,CAAA,IAEnDsD,EAAAA,GAAS5B,KAAO,CAAA,EAGd6B,EAAAA,KAAgB,WAClBA,EAAAA,GAAcD,EAAAA,CAAAA;AAWhB,IAAA,IAAMjB,KACJJ,EAAAA,GAAgBgB,EAAAA,GACZrD,EAAAA,CAAeqC,EAAAA,GAAgBgB,EAAA,CAAA,GAC/B,CAAA,EAEAT,EAAAA,GACJQ,EAAAA,GAAcf,KAAgBM,EAAAA,GAC1BJ,EAAAA,CAAAA,CAAca,EAAAA,GAAcf,EAAAA,IAAiBM,EAAA,CAAA,GAC7C,CAAA;AAEN,IAAAe,EAAAA,GAAS,KAAK,GAAA,CACZ,IAAA,EACAA,KAAS,IAAA,CAAK,GAAA,CAAIjB,EAAAA,EAAoBG,EAAA,CAAiB,CAAA;AAazD,IAAA,IAAMR,EAAAA,GAAAA,CAAejC,EAAAA,GAA8BuB,EAAAA,CAAOC,EAAA,CAAA,GAAvBD,EAAAA,CAAOC,EAAAA,GAAI,CAAA,CAAA,EAAgB,MAAA,EACxDmB,EAAAA,GAAW3C,EAAAA,GAAwC,CAAA,GAA1B,EAAA,CAAI0B,EAAAA,EAAQO,EAAA,CAAA,EAGrCa,EAAAA,GAFU,EAAA,CAAIpB,EAAAA,EAAQ+B,EAAA,CAAA,GAES,CAAA,IAAK,CAACK,EAAAA,EACrC9B,EAAAA,GAAyBW,EAAAA,KAAY,IAAA,IAAQA,EAAAA,GAAU,CAAA;AAE7D,IAAA,IAAIG,MAAsBd,EAAAA,EAAwB;AAMhD,MAAAD,GAAQc,EAAAA,EAASY,EAAA,GACjB3B,EAAAA,CAAQe,EAAAA,EAASA,IAASU,EAAA,CAAA;AAG1B,MAAA,KAAA,IAAShC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,CAAA,EAAGA,EAAAA,IAAK,mBAAA,EAE3BnB,EAAAA,CAAQsC,EAAAA,EAAK5C,EAAAA,EAAO+C,EAAA,CAAA,EACpBD,EAAAA,CAAcF,IAAKA,EAAAA,EAAK5C,EAAAA,EAAOwB,EAAAA,GAAWC,EAAA,CAAA,EAC1CqC,EAAAA,GAAgB,CAAClB,EAAAA,CAAI,CAAA,CAAA,EAAIA,EAAAA,CAAI,CAAA,CAAA,CAAA,EAC7BU,GAAQ,IAAA,CAAKQ,EAAA,CAAA,EAGbhC,EAAAA,CAAQW,EAAAA,EAAKzC,EAAAA,EAAO+C,EAAA,CAAA,EACpBD,EAAAA,CAAcL,EAAAA,EAAKA,EAAAA,EAAKzC,EAAAA,EAAOwB,EAAAA,GAAW,CAACC,EAAA,CAAA,EAC3CsC,EAAAA,GAAiB,CAACtB,EAAAA,CAAI,CAAA,CAAA,EAAIA,EAAAA,CAAI,CAAA,CAAA,CAAA,EAC9Bc,EAAAA,CAAS,IAAA,CAAKQ,EAAA,CAAA;AAGhB,MAAAH,EAAAA,GAAgBE,EAAAA,EAChBD,EAAAA,GAAiBE,EAAAA,EAEb7B,OACF8B,EAAAA,GAAyB,IAAA,CAAA;AAE3B,MAAA;AAAA,IAAA;AAMF,IAAA,IAHAA,EAAAA,GAAyB,OAGrB9D,EAAAA,EAAa;AACf,MAAA+B,EAAAA,CAAQc,IAASnB,EAAA,CAAA,EACjBI,GAAQe,EAAAA,EAASA,EAAAA,EAASU,EAAA,CAAA,EAC1BH,EAAAA,CAAQ,KAAKvB,EAAAA,CAAI/B,EAAAA,EAAO+C,EAAA,CAAQ,CAAA,EAChCQ,GAAS,IAAA,CAAKzD,EAAAA,CAAIE,EAAAA,EAAO+C,EAAA,CAAQ,CAAA;AACjC,MAAA;AAAA,IAAA;AAcF,IAAA,EAAA,CAAQA,EAAAA,EAASZ,EAAAA,EAAYP,EAAAA,EAAQiB,EAAA,GACrCZ,EAAAA,CAAQc,EAAAA,EAASA,EAAA,CAAA,EACjBf,EAAAA,CAAQe,EAAAA,EAASA,EAAAA,EAASU,EAAA,GAE1BnD,EAAAA,CAAQsC,EAAAA,EAAK5C,EAAAA,EAAO+C,EAAA,CAAA,EACpBe,EAAAA,GAAgB,CAAClB,EAAAA,CAAI,CAAA,CAAA,EAAIA,EAAAA,CAAI,CAAA,CAAA,IAEzBlB,EAAAA,IAAK,CAAA,IAAKJ,EAAAA,CAAMsC,EAAAA,EAAeE,EAAA,CAAA,GAAiBT,EAAAA,MAClDC,EAAAA,CAAQ,IAAA,CAAKQ,EAAA,CAAA,EACbF,EAAAA,GAAgBE,EAAAA,CAAAA,EAGlBhC,GAAQW,EAAAA,EAAKzC,EAAAA,EAAO+C,EAAA,CAAA,EACpBgB,EAAAA,GAAiB,CAACtB,EAAAA,CAAI,CAAA,GAAIA,EAAAA,CAAI,CAAA,CAAA,CAAA,EAAA,CAE1Bf,EAAAA,IAAK,CAAA,IAAKJ,EAAAA,CAAMuC,EAAAA,EAAgBE,EAAA,CAAA,GAAkBV,EAAAA,MACpDE,EAAAA,CAAS,IAAA,CAAKQ,EAAA,CAAA,EACdF,EAAAA,GAAiBE,EAAAA,CAAAA,EAInBP,EAAAA,GAAe3D,IACf8D,EAAAA,GAAa/B,EAAAA;AAAA,EAAA;AAWf,EAAA,IAAMqC,EAAAA,GAAmB,CAACxC,EAAAA,CAAO,CAAA,EAAG,KAAA,CAAM,CAAA,CAAA,EAAIA,EAAAA,CAAO,CAAA,CAAA,CAAG,MAAM,CAAA,CAAA,CAAA,EAExDyC,EAAAA,GACJzC,EAAAA,CAAO,MAAA,GAAS,IACZ,CAACA,EAAAA,CAAOA,EAAAA,CAAO,MAAA,GAAS,CAAA,CAAA,CAAG,MAAM,CAAA,CAAA,EAAIA,EAAAA,CAAOA,EAAAA,CAAO,MAAA,GAAS,CAAA,EAAG,KAAA,CAAM,CAAA,CAAA,CAAA,GACrE3B,EAAAA,CAAI2B,EAAAA,CAAO,CAAA,CAAA,CAAG,KAAA,EAAO,CAAC,CAAA,EAAG,CAAA,CAAE,GAE3B0C,EAAAA,GAAmB,EAAA,EAEnBC,EAAAA,GAAiB,EAAA;AAGvB,EAAA,IAAI3C,EAAAA,CAAO,WAAW,CAAA,EAAA;AAAA,IAAA,IAChB,EAAE2B,MAAcV,EAAAA,CAAAA,IAAaxC,EAAAA,SACxBiC,EAAAA,CAAQ8B,EAAAA,EAAYP,MAAeD,EAAA,CAAA;EAAO,CAAA,MAE9C;AAED,IAAAL,EAAAA,IAAeV,EAAAA,IAAYjB,EAAAA,CAAO,MAAA,KAAW,CAAA,KAEtCe,EAAAA,GACT2B,EAAAA,CAAS,IAAA,CACP,GAAGtB,EAAAA,CAAkBoB,EAAAA,EAAYV,EAAAA,CAAS,CAAA,CAAA,EAAI,EAAA,CAAmB,CAAA,GAGnEY,EAAAA,CAAS,IAAA,CAAK,GAAGnB,EAAAA,CAAiBiB,EAAAA,EAAYX,EAAAA,CAAQ,CAAA,CAAA,EAAIC,EAAAA,CAAS,CAAA,CAAA,CAAG,CAAA,CAAA;AAIxE,IAAA,IAAM/B,EAAAA,GAAYI,GAAI5B,EAAAA,CAAIyB,EAAAA,CAAOA,GAAO,MAAA,GAAS,CAAA,CAAA,CAAG,MAAA,CAAO,CAAA;AAEvD,IAAAiB,EAAAA,IAAaU,EAAAA,IAAc3B,EAAAA,CAAO,MAAA,KAAW,CAAA,GAE/C2C,EAAAA,CAAO,IAAA,CAAKF,EAAA,CAAA,GACHvB,EAAAA,GACTyB,EAAAA,CAAO,IAAA,CACL,GAAGlC,EAAAA,CAAgBgC,EAAAA,EAAW1C,EAAAA,EAAWiC,EAAAA,EAAQ,EAAA,CAAiB,CAAA,GAGpEW,EAAAA,CAAO,IAAA,CAAK,GAAG,EAAA,CAAeF,EAAAA,EAAW1C,EAAAA,EAAWiC,EAAA,CAAO,CAAA;AAAC,EAAA;AAUhE,EAAA,OAAOH,GAAQ,MAAA,CAAOc,EAAAA,EAAQb,EAAAA,CAAS,OAAA,IAAWY,EAAA,CAAA;AAAS;AC1b7D,IAAMhB,EAAAA,GAAoB,CAAC,CAAA,EAAG,CAAA,CAAA;AAM9B,SAASC,GAAgB3B,EAAAA,EAAkD;AACzE,EAAA,OAAOA,EAAAA,IAAY,QAAQA,EAAAA,IAAY,CAAA;AAAA;AAiBzC,SAAgBiB,EAAAA,CAGdjB,EAAAA,EAAmBD,EAAAA,GAAU,EAAA,EAAoC;AACjE,EAAA,IAAM,EAAE,UAAA,EAAA5B,EAAAA,GAAa,GAAA,EAAK,IAAA,EAAAC,KAAO,EAAA,EAAI,IAAA,EAAM8B,EAAAA,GAAa,KAAA,EAAA,GAAUH,EAAAA;AAGlE,EAAA,IAAIC,EAAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAGhC,EAAA,IAAMzB,EAAAA,GAAI,IAAA,GAAA,CAAoB,CAAA,GAAIJ,EAAAA,IAAc,IAAA,EAG5CkC,EAAAA,GAAM,KAAA,CAAM,OAAA,CAAQL,EAAAA,CAAO,CAAA,CAAA,CAAA,GAC1BA,EAAAA,GACAA,EAAAA,CAAe,GAAA,CAAA,CAAK,EAAE,CAAA,EAAAA,EAAAA,EAAG,CAAA,EAAAD,EAAAA,EAAG,QAAA,EAAAK,EAAAA,GAAWH,EAAAA,EAAA,KAAuB,CAC7DD,EAAAA,EACAD,EAAAA,EACAK,EAAA,CACD,CAAA;AAKL,EAAA,IAAIC,EAAAA,CAAI,WAAW,CAAA,EAAG;AACpB,IAAA,IAAML,EAAAA,GAAOK,GAAI,CAAA,CAAA;AACjB,IAAAA,EAAAA,GAAMA,EAAAA,CAAI,KAAA,CAAM,CAAA,EAAG,EAAA,CAAA;AACnB,IAAA,KAAA,IAASN,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,CAAA,EAAGA,MACrBM,EAAAA,CAAI,IAAA,CAAK/B,EAAAA,CAAI+B,GAAI,CAAA,CAAA,EAAYL,EAAAA,EAAcD,EAAAA,GAAI,CAAA,CAAE,CAAA;AAAC,EAAA;AAMlD,EAAAM,EAAAA,CAAI,WAAW,CAAA,KACjBA,EAAAA,GAAM,CAAC,GAAGA,EAAAA,EAAK,CAAC,GAAGhC,EAAAA,CAAIgC,EAAAA,CAAI,CAAA,CAAA,EAAYD,EAAA,GAAc,GAAGC,EAAAA,CAAI,CAAA,CAAA,CAAG,KAAA,CAAM,CAAA,CAAE,CAAC,CAAA,CAAA;AAK1E,EAAA,IAAMC,EAAAA,GAA8B,CAClC,EACE,KAAA,EAAO,CAACD,EAAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,EAAIA,EAAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,EAC1B,QAAA,EAAUsB,EAAAA,CAAgBtB,GAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAAMA,EAAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,GAAK,IAAA,EACnD,MAAA,EAAQ,CAAC,GAAGD,EAAA,CAAA,EACZ,QAAA,EAAU,CAAA,EACV,aAAA,EAAe,CAAA,EAChB,CAAA,EAIClC,EAAAA,GAA0B,KAAA,EAG1BqC,EAAAA,GAAgB,CAAA,EAIhBK,EAAAA,GAAON,GAAa,CAAA,CAAA,EAElBH,EAAAA,GAAME,EAAAA,CAAI,MAAA,GAAS,CAAA;AAGzB,EAAA,KAAA,IAASL,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIK,EAAAA,CAAI,QAAQL,EAAAA,EAAAA,EAAK;AACnC,IAAA,IAAMD,EAAAA,GACJG,MAAcF,EAAAA,KAAMG,EAAAA,GAGhB,CAACE,EAAAA,CAAIL,EAAA,CAAA,CAAG,CAAA,CAAA,EAAIK,EAAAA,CAAIL,EAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAInB1B,EAAAA,CAAIsC,GAAK,KAAA,EAAOP,EAAAA,CAAIL,EAAA,CAAA,EAAYzB,EAAA,CAAA;AAGtC,IAAA,IAAIG,EAAAA,CAAQkC,EAAAA,CAAK,KAAA,EAAOb,EAAA,CAAA,EAAQ;AAGhC,IAAA,IAAMK,EAAAA,GAAW3B,EAAAA,CAAKsB,EAAAA,EAAOa,EAAAA,CAAK,KAAA,CAAA;AAOlC,IAAA,IAJAL,EAAAA,IAAiBH,EAAAA,EAIbJ,EAAAA,GAAIG,EAAAA,IAAO,CAACjC,EAAAA,EAAyB;AACvC,MAAA,IAAIqC,KAAgBnC,EAAAA,EAAM;AAC1B,MAAAF,EAAAA,GAA0B,IAAA;AAAA,IAAA;AAK5B,IAAAW,EAAAA,CAAQ6C,EAAAA,EAAad,EAAAA,CAAK,KAAA,EAAOb,EAAA,CAAA,EACjCa,EAAAA,GAAO,EAEL,KAAA,EAAAb,IAEA,QAAA,EAAU4B,EAAAA,CAAgBtB,EAAAA,CAAIL,EAAA,EAAG,CAAA,CAAA,CAAA,GAAMK,EAAAA,CAAIL,EAAA,CAAA,CAAG,CAAA,CAAA,GAAKC,EAAAA,EAEnD,QAAQU,EAAAA,CAAIe,EAAA,CAAA,EAEZ,QAAA,EAAAtB,IAEA,aAAA,EAAAG,EAAAA,EAAA,EAIFD,EAAAA,CAAa,KAAKM,EAAA,CAAA;AAAK,EAAA;AAMzB,EAAA,OAFAN,EAAAA,CAAa,CAAA,CAAA,CAAG,MAAA,GAASA,EAAAA,CAAa,CAAA,CAAA,EAAI,MAAA,IAAU,CAAC,CAAA,EAAG,CAAA,CAAA,EAEjDA,EAAAA;AAAA;ACjIT,SAAgBsB,EAAAA,CACd5B,EAAAA,EACAD,EAAAA,GAAyB,EAAA,EACjB;AACR,EAAA,OAAOc,EAAAA,CAAuBI,EAAAA,CAAgBjB,EAAAA,EAAQD,EAAA,GAAUA,EAAA,CAAA;AAAQ;;;ACnB1E,IAAM,GAAA,GAAM,GAAM,SAAA,EAAU;AAW5B,IAAM,aAAA,GAAwC;AAAA,EAC5C,CAAA,EAAG,oCAAA;AAAA,EACH,CAAA,EAAG,8BAAA;AAAA,EACH,CAAA,EAAG,qBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AA6BO,SAAS,WAAA,CACd,IAAA,EACA,IAAA,GAA8B,IAC9B,GAAA,EACc;AACd,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,CAAS,MAAA,CAAO,CAAC,EAAA,KAAO,CAAC,GAAG,SAAS,CAAA;AAC3D,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,sEAAA;AAAA,MACL,UAAU,EAAC;AAAA,MACX,OAAA,EAAS,EAAE,KAAA,EAAO,GAAA,EAAK,QAAQ,GAAA,EAAK,OAAA,EAAS,CAAA,EAAG,OAAA,EAAS,CAAA;AAAE,KAC7D;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,KAAK,aAAA,IAAiB,EAAA;AACtC,EAAA,MAAM,IAAA,GAAO,mBAAmB,QAAQ,CAAA;AACxC,EAAA,MAAM,QAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,UAAU,CAAC,CAAA;AAChD,EAAA,MAAM,SAAS,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,UAAU,CAAC,CAAA;AAClD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,CAAK,IAAA,GAAO,OAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,CAAK,IAAA,GAAO,OAAA;AAE7B,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,EAAM,IAAI,CAAA;AAEzC,EAAA,MAAM,WAA2B,EAAC;AAClC,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,MAAA,CAAO,CAAC,EAAA,KAAO,GAAG,IAAA,KAAS,YAAA,IAAgB,EAAA,CAAG,IAAA,KAAS,QAAQ,CAAA;AAC5F,EAAA,KAAA,MAAW,MAAM,WAAA,EAAa;AAC5B,IAAA,MAAM,IAAA,GAAQ,GAAG,IAAA,IAAmB,EAAA;AACpC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA;AACvC,IAAA,QAAA,CAAS,IAAA,CAAK;AAAA,MACZ,IAAI,EAAA,CAAG,EAAA;AAAA,MACP,GAAG,EAAA,CAAG,CAAA;AAAA,MACN,GAAG,EAAA,CAAG,CAAA;AAAA,MACN,OAAO,EAAA,CAAG,KAAA;AAAA,MACV,QAAQ,EAAA,CAAG,MAAA;AAAA,MACX,IAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA,EAAU,GAAA,EAAK,cAAA,GAAiB,EAAA,CAAG,EAAE;AAAA,KACtC,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,gBAAA,GAAmB,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,KAAO,aAAA,CAAc,EAAA,EAAI,IAAA,EAAM,GAAG,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AAE1F,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,CAAA,qDAAA,EAAwD,KAAK,CAAA,CAAA,EAAI,MAAM,mFAAmF,UAAA,CAAW,OAAA,IAAW,SAAS,CAAC,CAAA,EAAA,CAAA;AAAA,IAC1L,CAAA,MAAA,EAAS,aAAa,CAAA,OAAA,CAAA;AAAA,IACtB,CAAA,wBAAA,EAA2B,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,GAAA,CAAA;AAAA,IAC9C,GAAG,gBAAA;AAAA,IACH,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL,KAAK,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,IACpC,QAAA;AAAA,IACA,OAAA,EAAS,EAAE,KAAA,EAAO,MAAA,EAAQ,SAAS,OAAA;AAAQ,GAC7C;AACF;AAEA,SAAS,cAAA,CAAe,MAAsB,IAAA,EAA4C;AACxF,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,gBAAA,IAAoB,IAAA;AACnD,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AAEtB,EAAA,IAAI,IAAA,CAAK,QAAA,KAAa,MAAA,EAAQ,OAAO,SAAA;AACrC,EAAA,IAAI,KAAK,QAAA,KAAa,OAAA,EAAS,OAAO,IAAA,CAAK,SAAS,mBAAA,IAAuB,SAAA;AAE3E,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,mBAAA,IAAuB,SAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,EAAY;AAChC,EAAA,IAAI,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,WAAA,EAAa,OAAO,+BAAA;AACzD,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,aAAA,CAAc,EAAA,EAAuB,IAAA,EAAsB,GAAA,EAA6B;AAC/F,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,EAAA,EAAI,IAAA,EAAM,GAAG,CAAA;AAC9C,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,EAAA,CAAG,KAAA,IAAS,EAAA,CAAG,KAAA,KAAU,CAAA,EAAG;AAC9B,IAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,KAAA,GAAQ,CAAA;AAC7B,IAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,MAAA,GAAS,CAAA;AAC9B,IAAA,MAAM,GAAA,GAAO,EAAA,CAAG,KAAA,GAAQ,GAAA,GAAO,IAAA,CAAK,EAAA;AACpC,IAAA,KAAA,CAAM,KAAK,CAAA,kBAAA,EAAqB,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,EAAK,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,EAAK,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAI,CAAA;AAAA,EACxF;AACA,EAAA,IAAI,EAAA,CAAG,OAAA,IAAW,IAAA,IAAQ,EAAA,CAAG,UAAU,GAAA,EAAK;AAC1C,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,EAAA,CAAG,OAAA,GAAU,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,EAC5C;AAEA,EAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,IAAA,OAAO,MAAM,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,IAAI,KAAK,CAAA,IAAA,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,kBAAA,CACP,EAAA,EACA,IAAA,EACA,GAAA,EACQ;AACR,EAAA,QAAQ,GAAG,IAAA;AAAM,IACf,KAAK,WAAA;AACH,MAAA,OAAO,gBAAgB,EAAE,CAAA;AAAA,IAC3B,KAAK,SAAA;AACH,MAAA,OAAO,cAAc,EAAE,CAAA;AAAA,IACzB,KAAK,SAAA;AACH,MAAA,OAAO,cAAc,EAAE,CAAA;AAAA,IACzB,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AACH,MAAA,OAAO,oBAAoB,EAAE,CAAA;AAAA,IAC/B,KAAK,MAAA;AACH,MAAA,OAAO,WAAW,EAAE,CAAA;AAAA,IACtB,KAAK,UAAA;AACH,MAAA,OAAO,eAAe,EAAE,CAAA;AAAA,IAC1B,KAAK,OAAA;AACH,MAAA,OAAO,WAAA,CAAY,EAAA,EAAI,IAAA,EAAM,GAAG,CAAA;AAAA,IAClC,KAAK,OAAA;AAAA,IACL,KAAK,YAAA;AACH,MAAA,OAAO,YAAY,EAAE,CAAA;AAAA,IACvB,KAAK,YAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,iBAAiB,EAAE,CAAA;AAAA,IAC5B;AACE,MAAA,OAAO,EAAA;AAAA;AAEb;AAKA,IAAM,aAAA,GAAwC;AAAA,EAC5C,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAA;AAEA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,EAAY;AAChC,EAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,IAAA,OAAO,0BAA0B,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,UAAU,EAAA,EAAuB;AACxC,EAAA,OAAO;AAAA,IACL,MAAM,EAAA,CAAG,IAAA;AAAA,IACT,WAAW,EAAA,CAAG,SAAA;AAAA,IACd,QAAQ,EAAA,CAAG,WAAA,KAAgB,gBAAgB,MAAA,GAAS,UAAA,CAAW,GAAG,WAAW,CAAA;AAAA,IAC7E,aAAa,EAAA,CAAG,WAAA;AAAA,IAChB,MAAM,EAAA,CAAG,eAAA,KAAoB,gBAAgB,MAAA,GAAY,UAAA,CAAW,GAAG,eAAe,CAAA;AAAA,IACtF,SAAA,EAAW,YAAA,CAAa,EAAA,CAAG,SAAS,CAAA;AAAA,IACpC,cAAA,EAAgB,cAAA,CAAe,EAAA,CAAG,WAAA,EAAa,GAAG,WAAW;AAAA,GAC/D;AACF;AAEA,SAAS,aAAa,KAAA,EAAuB;AAC3C,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,SAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,aAAA;AACH,MAAA,OAAO,aAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,aAAA;AACH,MAAA,OAAO,aAAA;AAAA,IACT;AACE,MAAA,OAAO,SAAA;AAAA;AAEb;AAEA,SAAS,cAAA,CAAe,OAAe,KAAA,EAAqC;AAC1E,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,QAAA;AACH,MAAA,OAAO,CAAC,CAAA,GAAI,KAAA,EAAO,CAAA,GAAI,KAAK,CAAA;AAAA,IAC9B,KAAK,QAAA;AACH,MAAA,OAAO,CAAC,GAAA,GAAM,KAAA,EAAO,CAAA,GAAI,KAAK,CAAA;AAAA,IAChC;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEA,SAAS,gBAAgB,EAAA,EAA+B;AACtD,EAAA,MAAM,IAAA,GAAO,UAAU,EAAE,CAAA;AACzB,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,SAAA,CAAU,EAAA,CAAG,CAAA,EAAG,EAAA,CAAG,CAAA,EAAG,EAAA,CAAG,KAAA,EAAO,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA;AACpE,EAAA,OAAO,cAAc,QAAQ,CAAA;AAC/B;AAEA,SAAS,cAAc,EAAA,EAA+B;AACpD,EAAA,MAAM,IAAA,GAAO,UAAU,EAAE,CAAA;AACzB,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,KAAA,GAAQ,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,MAAA,GAAS,CAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,IAAI,OAAA,CAAQ,EAAA,EAAI,IAAI,EAAA,CAAG,KAAA,EAAO,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA;AAC9D,EAAA,OAAO,cAAc,QAAQ,CAAA;AAC/B;AAEA,SAAS,cAAc,EAAA,EAA+B;AACpD,EAAA,MAAM,IAAA,GAAO,UAAU,EAAE,CAAA;AACzB,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,KAAA,GAAQ,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,MAAA,GAAS,CAAA;AAC9B,EAAA,MAAM,EAAA,GAAK,GAAG,KAAA,GAAQ,CAAA;AACtB,EAAA,MAAM,EAAA,GAAK,GAAG,MAAA,GAAS,CAAA;AACvB,EAAA,MAAM,MAAA,GAAkC;AAAA,IACtC,CAAC,EAAA,EAAI,EAAA,GAAK,EAAE,CAAA;AAAA,IACZ,CAAC,EAAA,GAAK,EAAA,EAAI,EAAE,CAAA;AAAA,IACZ,CAAC,EAAA,EAAI,EAAA,GAAK,EAAE,CAAA;AAAA,IACZ,CAAC,EAAA,GAAK,EAAA,EAAI,EAAE;AAAA,GACd;AACA,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAA;AACzC,EAAA,OAAO,cAAc,QAAQ,CAAA;AAC/B;AAEA,SAAS,oBAAoB,EAAA,EAA+B;AAC1D,EAAA,MAAM,MAAA,GAAS,EAAA,CAAG,MAAA,IAAU,EAAC;AAC7B,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,OAAO,EAAA;AAE9B,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,GAAG,UAAU,EAAE,CAAA;AAAA,IACf,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AACA,EAAA,MAAM,cAAA,GAA0C,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,EAAA,EAAI,EAAE,CAAA,KAAM,CAAC,GAAG,CAAA,GAAI,EAAA,EAAI,EAAA,CAAG,CAAA,GAAI,EAAE,CAAC,CAAA;AAE/F,EAAA,IAAIf,IAAAA;AACJ,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,KAAA,CAAM,cAAA,EAAgB,IAAI,CAAA;AAC/C,IAAAA,IAAAA,GAAM,cAAc,QAAQ,CAAA;AAAA,EAC9B,CAAA,MAAO;AACL,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,UAAA,CAAW,cAAA,EAAgB,IAAI,CAAA;AACpD,IAAAA,IAAAA,GAAM,cAAc,QAAQ,CAAA;AAAA,EAC9B;AAEA,EAAA,IAAI,EAAA,CAAG,SAAS,OAAA,EAAS;AACvB,IAAAA,IAAAA,IAAO,gBAAA,CAAiB,EAAA,EAAI,cAAc,CAAA;AAAA,EAC5C;AAEA,EAAA,OAAOA,IAAAA;AACT;AAEA,SAAS,gBAAA,CAAiB,IAAuB,MAAA,EAAyC;AACxF,EAAA,IAAIA,IAAAA,GAAM,EAAA;AACV,EAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,WAAA,KAAgB,aAAA,GAAgB,SAAS,EAAA,CAAG,WAAA;AAE7D,EAAA,IAAI,GAAG,YAAA,IAAgB,EAAA,CAAG,iBAAiB,MAAA,IAAU,MAAA,CAAO,UAAU,CAAA,EAAG;AACvE,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AACpC,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AACrC,IAAAA,QAAO,eAAA,CAAgB,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,GAAG,WAAW,CAAA;AAAA,EACzD;AAEA,EAAA,IAAI,GAAG,cAAA,IAAkB,EAAA,CAAG,mBAAmB,MAAA,IAAU,MAAA,CAAO,UAAU,CAAA,EAAG;AAC3E,IAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,IAAA,MAAM,IAAA,GAAO,OAAO,CAAC,CAAA;AACrB,IAAAA,QAAO,eAAA,CAAgB,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,GAAG,WAAW,CAAA;AAAA,EACzD;AAEA,EAAA,OAAOA,IAAAA;AACT;AAEA,SAAS,eAAA,CACP,IAAA,EACA,EAAA,EACA,KAAA,EACA,WAAA,EACQ;AACR,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,CAAC,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA,GAAI,IAAA,CAAK,CAAC,CAAC,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,KAAK,WAAA,GAAc,CAAA;AACnC,EAAA,MAAM,SAAA,GAAY,KAAK,EAAA,GAAK,CAAA;AAE5B,EAAA,MAAM,EAAA,GAAK,GAAG,CAAC,CAAA,GAAI,UAAU,IAAA,CAAK,GAAA,CAAI,QAAQ,SAAS,CAAA;AACvD,EAAA,MAAM,EAAA,GAAK,GAAG,CAAC,CAAA,GAAI,UAAU,IAAA,CAAK,GAAA,CAAI,QAAQ,SAAS,CAAA;AACvD,EAAA,MAAM4D,GAAAA,GAAK,GAAG,CAAC,CAAA,GAAI,UAAU,IAAA,CAAK,GAAA,CAAI,QAAQ,SAAS,CAAA;AACvD,EAAA,MAAMC,GAAAA,GAAK,GAAG,CAAC,CAAA,GAAI,UAAU,IAAA,CAAK,GAAA,CAAI,QAAQ,SAAS,CAAA;AAEvD,EAAA,OAAO,aAAa,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,IAAI,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,KAAK,EAAA,CAAG,CAAC,EAAE,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,CAAG,CAAC,CAAA,CAAE,QAAQ,CAAC,CAAC,KAAKD,GAAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAIC,GAAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,sBAAA,EAAyB,WAAW,KAAK,CAAC,mBAAmB,WAAW,CAAA,mDAAA,CAAA;AACxM;AAEA,SAAS,WAAW,EAAA,EAA+B;AACjD,EAAA,IAAI,CAAC,EAAA,CAAG,IAAA,EAAM,OAAO,EAAA;AAErB,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,EAAA,CAAG,UAAA,IAAc,CAAC,CAAA,IAAK,oCAAA;AACxD,EAAA,MAAM,QAAA,GAAW,GAAG,QAAA,IAAY,EAAA;AAChC,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,EAAA,CAAG,SAAS,CAAA;AAC5C,EAAA,MAAM,QACJ,EAAA,CAAG,WAAA,KAAgB,gBAAgB,+BAAA,GAAkC,UAAA,CAAW,GAAG,WAAW,CAAA;AAEhG,EAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAChC,EAAA,MAAM,aAAa,QAAA,GAAW,IAAA;AAC9B,EAAA,MAAM,WAAA,GAAc,MAAM,MAAA,GAAS,UAAA;AAEnC,EAAA,IAAI,SAAS,EAAA,CAAG,CAAA;AAChB,EAAA,IAAI,EAAA,CAAG,kBAAkB,QAAA,EAAU;AACjC,IAAA,MAAA,GAAS,EAAA,CAAG,CAAA,GAAA,CAAK,EAAA,CAAG,MAAA,GAAS,WAAA,IAAe,CAAA;AAAA,EAC9C,CAAA,MAAA,IAAW,EAAA,CAAG,aAAA,KAAkB,QAAA,EAAU;AACxC,IAAA,MAAA,GAAS,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,MAAA,GAAS,WAAA;AAAA,EAC9B;AAEA,EAAA,IAAI,QAAQ,EAAA,CAAG,CAAA;AACf,EAAA,IAAI,EAAA,CAAG,cAAc,QAAA,EAAU;AAC7B,IAAA,KAAA,GAAQ,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,KAAA,GAAQ,CAAA;AAAA,EAC5B,CAAA,MAAA,IAAW,EAAA,CAAG,SAAA,KAAc,OAAA,EAAS;AACnC,IAAA,KAAA,GAAQ,EAAA,CAAG,IAAI,EAAA,CAAG,KAAA;AAAA,EACpB;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CACZ,GAAA,CAAI,CAAC,MAAM1E,EAAAA,KAAM;AAChB,IAAA,MAAM0B,EAAAA,GAAI,MAAA,GAAS,QAAA,GAAW1B,EAAAA,GAAI,UAAA;AAClC,IAAA,OAAO,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,KAAA,EAAQ0B,EAAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,EAAK,SAAA,CAAU,IAAI,CAAC,CAAA,QAAA,CAAA;AAAA,EAC9E,CAAC,CAAA,CACA,IAAA,CAAK,EAAE,CAAA;AAEV,EAAA,OAAO,CAAA,mBAAA,EAAsB,UAAA,CAAW,UAAU,CAAC,CAAA,aAAA,EAAgB,QAAQ,CAAA,QAAA,EAAW,UAAA,CAAW,KAAK,CAAC,CAAA,eAAA,EAAkB,UAAU,8BAA8B,MAAM,CAAA,OAAA,CAAA;AACzK;AAEA,SAAS,aAAa,KAAA,EAAwB;AAC5C,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb;AAEA,SAAS,eAAe,EAAA,EAA+B;AACrD,EAAA,MAAM,MAAA,GAAS,EAAA,CAAG,MAAA,IAAU,EAAC;AAC7B,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,OAAO,EAAA;AAE9B,EAAA,MAAM,iBAAiB,MAAA,CAAO,GAAA;AAAA,IAC5B,CAAC,CAAC,EAAA,EAAI,EAAE,CAAA,KAAM,CAAC,EAAA,CAAG,CAAA,GAAI,EAAA,EAAI,EAAA,CAAG,CAAA,GAAI,EAAA,EAAI,GAAG;AAAA,GAC1C;AAEA,EAAA,MAAM,YAAA,GAAe+B,GAAU,cAAA,EAAgB;AAAA,IAC7C,IAAA,EAAM,GAAG,WAAA,GAAc,GAAA;AAAA,IACvB,QAAA,EAAU,GAAA;AAAA,IACV,SAAA,EAAW,GAAA;AAAA,IACX,UAAA,EAAY,GAAA;AAAA,IACZ,gBAAA,EAAmB,GAAG,gBAAA,IAAgC;AAAA,GACvD,CAAA;AAED,EAAA,IAAI,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG,OAAO,EAAA;AAEpC,EAAA,MAAM/C,EAAAA,GAAI,qBAAqB,YAAY,CAAA;AAC3C,EAAA,MAAM,QACJ,EAAA,CAAG,WAAA,KAAgB,gBAAgB,+BAAA,GAAkC,UAAA,CAAW,GAAG,WAAW,CAAA;AAEhG,EAAA,OAAO,CAAA,SAAA,EAAYA,EAAC,CAAA,QAAA,EAAW,UAAA,CAAW,KAAK,CAAC,CAAA,kBAAA,CAAA;AAClD;AAEA,SAAS,qBAAqB,MAAA,EAA4B;AACxD,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,OAAO,EAAA;AAE9B,EAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,EAAA,IAAIA,EAAAA,GAAI,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAExD,EAAA,KAAA,IAASV,KAAI,CAAA,EAAGA,EAAAA,GAAI,MAAA,CAAO,MAAA,GAAS,GAAGA,EAAAA,EAAAA,EAAK;AAC1C,IAAA,MAAM,IAAA,GAAO,OAAOA,EAAC,CAAA;AACrB,IAAA,MAAM,IAAA,GAAO,MAAA,CAAOA,EAAAA,GAAI,CAAC,CAAA;AACzB,IAAA,MAAM,MAAM,IAAA,CAAK,CAAC,CAAA,GAAK,IAAA,CAAK,CAAC,CAAA,IAAM,CAAA;AACnC,IAAA,MAAM,MAAM,IAAA,CAAK,CAAC,CAAA,GAAK,IAAA,CAAK,CAAC,CAAA,IAAM,CAAA;AACnC,IAAAU,EAAAA,IAAK,CAAA,EAAA,EAAK,IAAA,CAAK,CAAC,CAAA,CAAG,QAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,CAAC,CAAA,CAAG,QAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,EACxF;AAEA,EAAAA,EAAAA,IAAK,IAAA;AACL,EAAA,OAAOA,EAAAA;AACT;AAEA,SAAS,WAAA,CAAY,EAAA,EAAuB,IAAA,EAAsB,GAAA,EAA6B;AAC7F,EAAA,IAAI,CAAC,EAAA,CAAG,MAAA,EAAQ,OAAO,EAAA;AAEvB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,MAAM,CAAA;AACjC,EAAA,IAAI,MAAM,OAAA,EAAS;AACjB,IAAA,OAAO,aAAa,EAAA,CAAG,CAAC,CAAA,KAAA,EAAQ,EAAA,CAAG,CAAC,CAAA,SAAA,EAAY,EAAA,CAAG,KAAK,CAAA,UAAA,EAAa,GAAG,MAAM,CAAA,QAAA,EAAW,UAAA,CAAW,IAAA,CAAK,OAAO,CAAC,CAAA,wCAAA,CAAA;AAAA,EACnH;AAEA,EAAA,MAAM,WAAA,GAAc,GAAA,EAAK,cAAA,GAAiB,EAAA,CAAG,MAAM,CAAA;AACnD,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,OAAO,CAAA,UAAA,EAAa,EAAA,CAAG,CAAC,CAAA,KAAA,EAAQ,GAAG,CAAC,CAAA,SAAA,EAAY,EAAA,CAAG,KAAK,aAAa,EAAA,CAAG,MAAM,CAAA,QAAA,EAAW,UAAA,CAAW,WAAW,CAAC,CAAA,wCAAA,CAAA;AAAA,EAClH;AAEA,EAAA,OAAO,EAAA;AACT;AAEA,SAAS,YAAY,EAAA,EAA+B;AAClD,EAAA,OAAO,CAAA,SAAA,EAAY,EAAA,CAAG,CAAC,CAAA,KAAA,EAAQ,EAAA,CAAG,CAAC,CAAA,SAAA,EAAY,EAAA,CAAG,KAAK,CAAA,UAAA,EAAa,EAAA,CAAG,MAAM,CAAA,yEAAA,CAAA;AAC/E;AAEA,SAAS,iBAAiB,EAAA,EAA+B;AACvD,EAAA,OAAO,CAAA,SAAA,EAAY,EAAA,CAAG,CAAC,CAAA,KAAA,EAAQ,GAAG,CAAC,CAAA,SAAA,EAAY,EAAA,CAAG,KAAK,CAAA,UAAA,EAAa,EAAA,CAAG,MAAM,CAAA,sIAAA,EAAyI,GAAG,EAAE,CAAA,IAAA,CAAA;AAC7N;AAEA,SAAS,cAAc,QAAA,EAAoD;AACzE,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,KAAA,MAAW,GAAA,IAAO,SAAS,IAAA,EAAM;AAC/B,IAAA,MAAMA,EAAAA,GAAI,SAAA,CAAU,GAAA,CAAI,GAAG,CAAA;AAC3B,IAAA,IAAI,CAACA,EAAAA,EAAG;AAER,IAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACvB,MAAA,KAAA,CAAM,IAAA;AAAA,QACJ,YAAYA,EAAC,CAAA,UAAA,EAAa,WAAW,QAAA,CAAS,OAAA,CAAQ,UAAU,MAAM,CAAC,mBAAmB,QAAA,CAAS,OAAA,CAAQ,eAAe,CAAC,CAAA,aAAA,EAAgB,eAAe,QAAA,CAAS,OAAA,CAAQ,cAAc,CAAC,CAAA,GAAA;AAAA,OAC5L;AAAA,IACF,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,KAAS,UAAA,EAAY;AAClC,MAAA,KAAA,CAAM,IAAA;AAAA,QACJ,CAAA,SAAA,EAAYA,EAAC,CAAA,QAAA,EAAW,UAAA,CAAW,SAAS,OAAA,CAAQ,IAAA,IAAQ,MAAM,CAAC,CAAA,kBAAA;AAAA,OACrE;AAAA,IACF,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,KAAS,YAAA,EAAc;AACpC,MAAA,KAAA,CAAM,IAAA;AAAA,QACJ,YAAYA,EAAC,CAAA,UAAA,EAAa,UAAA,CAAW,QAAA,CAAS,QAAQ,IAAA,IAAQ,MAAM,CAAC,CAAA,gBAAA,EAAA,CAAoB,SAAS,OAAA,CAAQ,UAAA,IAAc,SAAS,OAAA,CAAQ,WAAA,IAAe,KAAK,GAAG,CAAA,gBAAA;AAAA,OAClK;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAEA,SAAS,eAAeiE,KAAAA,EAAoC;AAC1D,EAAA,IAAI,CAACA,KAAAA,IAAQA,KAAAA,CAAK,MAAA,KAAW,GAAG,OAAO,EAAA;AACvC,EAAA,OAAO,CAAA,mBAAA,EAAsBA,KAAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAC7C;AAEA,SAAS,UAAU,GAAA,EAAoD;AACrE,EAAA,IAAIjE,EAAAA,GAAI,EAAA;AACR,EAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACtB,IAAA,MAAM0B,KAAI,IAAA,CAAK,IAAA;AACf,IAAA,QAAQ,KAAK,EAAA;AAAI,MACf,KAAK,MAAA;AACH,QAAA1B,EAAAA,IAAK,CAAA,CAAA,EAAI0B,EAAAA,CAAE,CAAC,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC7C,QAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAA1B,EAAAA,IAAK,CAAA,CAAA,EAAI0B,EAAAA,CAAE,CAAC,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC7C,QAAA;AAAA,MACF,KAAK,UAAA;AACH,QAAA1B,MAAK,CAAA,CAAA,EAAI0B,EAAAA,CAAE,CAAC,CAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAIA,GAAE,CAAC,CAAA,CAAG,QAAQ,CAAC,CAAC,IAAIA,EAAAA,CAAE,CAAC,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAIA,GAAE,CAAC,CAAA,CAAG,QAAQ,CAAC,CAAC,IAAIA,EAAAA,CAAE,CAAC,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAE,CAAC,CAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC7H,QAAA;AAAA;AACJ,EACF;AACA,EAAA,OAAO1B,GAAE,IAAA,EAAK;AAChB;AAEA,SAAS,mBAAmB,QAAA,EAAqC;AAC/D,EAAA,IAAI,IAAA,GAAO,QAAA;AACX,EAAA,IAAI,IAAA,GAAO,QAAA;AACX,EAAA,IAAI,IAAA,GAAO,CAAA,QAAA;AACX,EAAA,IAAI,IAAA,GAAO,CAAA,QAAA;AAEX,EAAA,KAAA,MAAW,MAAM,QAAA,EAAU;AACzB,IAAA,MAAM,OAAA,GAAU,kBAAkB,EAAE,CAAA;AACpC,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,EAAE,CAAA,IAAK,OAAA,EAAS;AAC9B,MAAA,IAAI,EAAA,GAAK,MAAM,IAAA,GAAO,EAAA;AACtB,MAAA,IAAI,EAAA,GAAK,MAAM,IAAA,GAAO,EAAA;AACtB,MAAA,IAAI,EAAA,GAAK,MAAM,IAAA,GAAO,EAAA;AACtB,MAAA,IAAI,EAAA,GAAK,MAAM,IAAA,GAAO,EAAA;AAAA,IACxB;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,EAAG;AACnB,IAAA,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAI;AAAA,EAC3E;AAEA,EAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,GAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,GAAO,IAAA,EAAK;AAC3E;AAEA,SAAS,kBAAkB,EAAA,EAAgD;AACzE,EAAA,IAAA,CAAK,EAAA,CAAG,IAAA,KAAS,MAAA,IAAU,EAAA,CAAG,IAAA,KAAS,WAAW,EAAA,CAAG,IAAA,KAAS,UAAA,KAAe,EAAA,CAAG,MAAA,EAAQ;AACtF,IAAA,OAAO,EAAA,CAAG,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,EAAA,EAAI,EAAE,CAAA,KAAM,CAAC,GAAG,CAAA,GAAI,EAAA,EAAI,EAAA,CAAG,CAAA,GAAI,EAAE,CAAC,CAAA;AAAA,EAC3D;AAEA,EAAA,MAAM,OAAA,GAAmC;AAAA,IACvC,CAAC,EAAA,CAAG,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA;AAAA,IACX,CAAC,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,KAAA,EAAO,GAAG,CAAC,CAAA;AAAA,IACtB,CAAC,GAAG,CAAA,GAAI,EAAA,CAAG,OAAO,EAAA,CAAG,CAAA,GAAI,GAAG,MAAM,CAAA;AAAA,IAClC,CAAC,EAAA,CAAG,CAAA,EAAG,EAAA,CAAG,CAAA,GAAI,GAAG,MAAM;AAAA,GACzB;AAEA,EAAA,IAAI,EAAA,CAAG,KAAA,IAAS,EAAA,CAAG,KAAA,KAAU,CAAA,EAAG;AAC9B,IAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,KAAA,GAAQ,CAAA;AAC7B,IAAA,MAAM,EAAA,GAAK,EAAA,CAAG,CAAA,GAAI,EAAA,CAAG,MAAA,GAAS,CAAA;AAC9B,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,CAACJ,IAAGoB,EAAC,CAAA,KAAM,WAAA,CAAYpB,EAAAA,EAAGoB,EAAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,EACpE;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,WAAA,CACPpB,EAAAA,EACAoB,EAAAA,EACA,EAAA,EACA,IACA,KAAA,EACkB;AAClB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA;AAC1B,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA;AAC1B,EAAA,MAAM,KAAKpB,EAAAA,GAAI,EAAA;AACf,EAAA,MAAM,KAAKoB,EAAAA,GAAI,EAAA;AACf,EAAA,OAAO,CAAC,EAAA,GAAK,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,GAAG,CAAA;AAC5D;AAEA,SAAS,WAAA,GAAsB;AAC7B,EAAA,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAMT;AAEA,SAAS,UAAU,GAAA,EAAqB;AACtC,EAAA,OAAO,IACJ,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,CACrB,OAAA,CAAQ,MAAM,MAAM,CAAA,CACpB,QAAQ,IAAA,EAAM,MAAM,EACpB,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA,CACtB,OAAA,CAAQ,MAAM,OAAO,CAAA;AAC1B;AAEA,SAAS,WAAW,GAAA,EAAqB;AACvC,EAAA,OAAO,GAAA,CACJ,OAAA,CAAQ,IAAA,EAAM,OAAO,EACrB,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA,CACtB,QAAQ,IAAA,EAAM,MAAM,CAAA,CACpB,OAAA,CAAQ,MAAM,MAAM,CAAA;AACzB;;;AC1nBA,IAAA,kBAAA,GAAA,4hZAAA;;;ACAA,IAAA,yBAAA,GAAA,CAAA;AAAA,CAAA;ACCO,ICUDkD,EAAAA;AAAAA,EAAAA,GAAU,EACfC,KCDM,SAAqBC,EAAAA,EAAOC,EAAAA,EAAOC,EAAAA,EAAUC,EAAAA,EAAAA;AAQnD,EAAA,KAAA,IANIC,EAAAA,EAEHC,EAAAA,EAEAC,EAAAA,EAEOL,EAAAA,GAAQA,EAAAA,CAAKM,EAAAA,IACpB,IAAA,CAAKH,EAAAA,GAAYH,EAAAA,CAAKO,GAAAA,KAAAA,CAAiBJ,EAAAA,CAASG,IAC/C,IAAA;AAcC,IAAA,IAAA,CAbAF,EAAAA,GAAOD,EAAAA,CAAUK,WAAAA,KFND,IAAA,IEQJJ,GAAKK,wBAAAA,KAChBN,EAAAA,CAAUO,QAAAA,CAASN,EAAAA,CAAKK,wBAAAA,CAAyBV,EAAAA,CAAAA,CAAAA,EACjDM,KAAUF,EAAAA,CAASQ,GAAAA,CAAAA,EFVJ,IAAA,IEaZR,EAAAA,CAAUS,iBAAAA,KACbT,EAAAA,CAAUS,iBAAAA,CAAkBb,EAAAA,EAAOG,MAAa,EAAE,CAAA,EAClDG,EAAAA,GAAUF,EAAAA,CAASQ,GAAAA,CAAAA,EAIhBN,EAAAA,EACH,OAAQF,GAASU,GAAAA,GAAiBV,EAAAA;AAIpC,EAAA,CAAA,CAAA,OAFSrD,EAAAA,EAAAA;AACRiD,IAAAA,EAAAA,GAAQjD,EAAAA;AACT,EAAA;AAIF,EAAA,MAAMiD,EAAAA;AACP,CAAA,EAAA,ECiJmB,UAAA,IAAA,OAAXe,OAAAA,GACJA,QAAQC,SAAAA,CAAUC,IAAAA,CAAKC,IAAAA,CAAKH,OAAAA,CAAQI,OAAAA,EAAAA,IACpCC,UAAAA,ECtLMC,IAAAA,CAAKC,MAAAA,EAAAA,CAASC,QAAAA,CAAS,CAAA,CCPlB;;;ALiBF,IMhBTC,EAAAA,GAAU,CAAA;AAwBd,SAASC,GAAYC,EAAAA,EAAMC,EAAAA,EAAO9F,EAAAA,EAAK+F,EAAAA,EAAkBC,IAAUC,EAAAA,EAAAA;AAC7DH,EAAAA,EAAAA,KAAOA,KAAQ,EAAA,CAAA;AAIpB,EAAA,IACCI,EAAAA,EACA7G,IAFG8G,EAAAA,GAAkBL,EAAAA;AAItB,EAAA,IAAI,SAASK,EAAAA,EAEZ,KAAK9G,MADL8G,EAAAA,GAAkB,IACRL,EAAAA,EACA,KAAA,IAALzG,EAAAA,GACH6G,EAAAA,GAAMJ,GAAMzG,EAAAA,CAAAA,GAEZ8G,GAAgB9G,EAAAA,CAAAA,GAAKyG,GAAMzG,EAAAA,CAAAA;AAM9B,EAAA,IAAM+E,EAAAA,GAAQ,EACbyB,IAAAA,EAAAA,EAAAA,EACAC,OAAOK,EAAAA,EACPnG,GAAAA,EAAAA,EAAAA,EACAkG,GAAAA,EAAAA,EAAAA,EACAE,GAAAA,EAAW,IAAA,EACX1B,EAAAA,EAAS,MACT2B,GAAAA,EAAQ,CAAA,EACRnC,GAAAA,EAAM,IAAA,EACNS,GAAAA,EAAY,IAAA,EACZC,WAAAA,EAAAA,MAAAA,EACA0B,KAAAA,EAAaX,EAAAA,EACbY,GAAAA,EAAAA,EAAAA,EACAC,GAAAA,EAAQ,CAAA,EACRR,QAAAA,EAAAA,EAAAA,EACAC,QAAAA,EAAAA,EAAAA;AAKD,EAAA,IAAoB,cAAA,OAATJ,EAAAA,KAAwBK,EAAAA,GAAML,EAAAA,CAAKY,eAC7C,KAAKpH,EAAAA,IAAK6G,EAAAA,EAAAA,MAAAA,KACLC,GAAgB9G,EAAAA,CAAAA,KACnB8G,GAAgB9G,EAAAA,CAAAA,GAAK6G,GAAI7G,EAAAA,CAAAA,CAAAA;AAK5B,EAAA,OADI4E,EAAAA,CAAQG,KAAAA,IAAOH,EAAAA,CAAQG,KAAAA,CAAMA,EAAAA,CAAAA,EAC1BA,EAAAA;AACR;;;ACzDA,SAAS,iBAAiBnE,KAAAA,EAAsB;AAC9C,EAAA,OAAOA,MACJ,OAAA,CAAQ,4EAAA,EAA8E,EAAE,CAAA,CACxF,OAAA,CAAQ,gEAAgE,EAAE,CAAA;AAC/E;AAEA,SAAS,aAAA,CACP,IAAA,EACA,WAAA,EACA,QAAA,EAC+B;AAC/B,EAAA,MAAM,SAAwC,EAAC;AAC/C,EAAA,MAAM,WAAA,GAAc,KAAK,QAAA,CAAS,MAAA;AAAA,IAChC,CAAC,EAAA,KAAO,EAAA,CAAG,IAAA,KAAS,YAAA,IAAgB,GAAG,IAAA,KAAS;AAAA,GAClD;AAEA,EAAA,KAAA,MAAW,MAAM,WAAA,EAAa;AAC5B,IAAA,MAAM,IAAA,GAAQ,GAAG,IAAA,IAAmB,EAAA;AACpC,IAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,EAAG;AAE5B,IAAA,MAAM,MAAA,GAAS,KAAK,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CAAE,OAAA,CAAQ,SAAS,EAAE,CAAA;AAC5D,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,EAAY;AAEvC,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,CAACb,EAAAA,KAAM;AAChC,MAAA,IAAI,CAACA,EAAAA,CAAE,IAAA,EAAM,OAAO,KAAA;AACpB,MAAA,IAAIA,EAAAA,CAAE,IAAA,KAAS,WAAA,EAAa,OAAO,IAAA;AACnC,MAAA,MAAM,cAAcA,EAAAA,CAAE,IAAA,CAAK,KAAA,CAAM,GAAG,EAAE,GAAA,EAAI;AAC1C,MAAA,OAAO,WAAA,KAAgB,WAAA;AAAA,IACzB,CAAC,CAAA;AAED,IAAA,MAAM,QAAA,GAAY,IAAA,EAAM,IAAA,IAAQ,eAAA,CAAgB,MAAkB,CAAA;AAClE,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,WAAA,EAAa,QAAQ,CAAA;AAElD,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,IAAA,CAAK,OAAA,EAAS;AAC1B,MAAA,MAAA,CAAO,EAAA,CAAG,EAAE,CAAA,GAAI;AAAA,QACd,IAAA,EAAM,CAAA,SAAA,EAAY,IAAI,CAAA,6DAAA,EAAgE,MAAM,CAAA,IAAA,CAAA;AAAA,QAC5F;AAAA,OACF;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAO,IAAA,CAAK,OAAA;AAClB,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,GAAG,IAAA;AAAA,MACH,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAmB;AAC9C,QAAA,IAAK,KAAA,CAA2B,SAAS,SAAA,EAAW;AAClD,UAAA,OAAO,oBAAA;AAAA,YACL,KAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AACA,QAAA,OAAO,KAAA;AAAA,MACT,CAAC;AAAA,KACH;AAEA,IAAA,IAAIa,QAAO,MAAA,CAAO,OAAA,EAAyC,EAAE,kBAAA,EAAoB,MAAM,CAAA;AACvF,IAAAA,KAAAA,GAAO,iBAAiBA,KAAI,CAAA;AAC5B,IAAA,MAAA,CAAO,GAAG,EAAE,CAAA,GAAI,EAAE,IAAA,EAAAA,OAAM,IAAA,EAAK;AAAA,EAC/B;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,aAAA,CACP,YACA,WAAA,EACwB;AACxB,EAAA,MAAM,SAAiC,EAAC;AAExC,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AACzD,IAAA,MAAM,SAAA,GAAY,gBAAgB,QAAoB,CAAA;AACtD,IAAA,MAAA,CAAO,IAAI,CAAA,GAAI,eAAA,CAAgB,WAAA,EAAa,SAAS,CAAA;AAAA,EACvD;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAc,OAAA,EAAgC;AACrD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CACnB,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CACnB,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CACnB,OAAA,CAAQ,gBAAgB,EAAE,CAAA;AAC7B,EAAA,MAAM,cAAA,GAAiB,MAAM,MAAA,GAAS,EAAA,GAAK,MAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,KAAA,GAAQ,KAAA;AAExE,EAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,IAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,QAAA,GACxB,CAAA,SAAA,EAAY,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,4FAAA,EAA0F,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,MAAA,CAAA,GAChJ,CAAA,4DAAA,CAAA;AAEJ,IAAA,uBACEuB,EAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,0CAAA;AAAA,QACN,mBAAiB,OAAA,CAAQ,EAAA;AAAA,QACzB,UAAQ,OAAA,CAAQ,CAAA;AAAA,QAChB,UAAQ,OAAA,CAAQ,CAAA;AAAA,QAChB,UAAQ,OAAA,CAAQ,KAAA;AAAA,QAChB,UAAQ,OAAA,CAAQ,MAAA;AAAA,QAEhB,QAAA,EAAA;AAAA,0BAAAA,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,yBAAA,EAA2B,yBAAQ,cAAA,EAAe,CAAA;AAAA,0BAC7DA,GAAC,KAAA,EAAA,EAAI,KAAA,EAAM,4BAA2B,uBAAA,EAAyB,EAAE,MAAA,EAAQ,WAAA,EAAY,EAAG;AAAA;AAAA;AAAA,KAC1F;AAAA,EAEJ;AAEA,EAAA,uBACEA,EAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,yCAAA;AAAA,MACN,mBAAiB,OAAA,CAAQ,EAAA;AAAA,MACzB,UAAQ,OAAA,CAAQ,CAAA;AAAA,MAChB,UAAQ,OAAA,CAAQ,CAAA;AAAA,MAChB,UAAQ,OAAA,CAAQ,KAAA;AAAA,MAChB,UAAQ,OAAA,CAAQ,MAAA;AAAA,MAEhB,QAAA,EAAA;AAAA,wBAAAA,GAAC,KAAA,EAAA,EAAI,KAAA,EAAM,yBAAA,EACT,QAAA,kBAAAA,GAAC,GAAA,EAAA,EAAE,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,QAAO,QAAA,EAAS,GAAA,EAAI,qBAAA,EACxC,QAAA,EAAA,YAAA,GAAQ,gBACX,CAAA,EACF,CAAA;AAAA,wBACAA,EAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAK,OAAA,CAAQ,IAAA;AAAA,YACb,KAAA,EAAM,yBAAA;AAAA,YACN,OAAA,EAAQ,8CAAA;AAAA,YACR,OAAA,EAAQ,MAAA;AAAA,YACR,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA;AAAA,GACF;AAEJ;AAEA,IAAO,sBAAA,IAAS,CAAC,QAAA,KAAqC;AACpD,EAAA,MAAM,SAAA,GAA6B,CAAC,KAAA,KAAgC;AAClE,IAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAS,GAAI,KAAA;AAC/B,IAAA,MAAM,OAAO,QAAA,CAAS,cAAA;AACtB,IAAA,MAAM,OAAA,GAAW,QAAA,CAAS,iBAAA,IAA+C,QAAA,IAAY,EAAC;AACtF,IAAA,MAAM,cAAc,QAAA,CAAS,IAAA;AAE7B,IAAA,MAAM,mBAAmB,QAAA,GAAW,aAAA,CAAc,IAAA,EAAM,WAAA,EAAa,QAAQ,CAAA,GAAI,MAAA;AACjF,IAAA,MAAM,UAAA,GAAc,QAAA,CAAS,oBAAA,IAAmD,EAAC;AACjF,IAAA,MAAM,gBAAA,GAAmB,aAAA,CAAc,UAAA,EAAY,WAAW,CAAA;AAC9D,IAAA,MAAM,SAAA,GAA2B;AAAA,MAC/B,cAAA,EAAgB,gBAAA;AAAA,MAChB,cAAA,EAAgB;AAAA,KAClB;AACA,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,EAAM,OAAA,EAAS,SAAS,CAAA;AAEnD,IAAA,uBACEA,EAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,iBAAA;AAAA,QACN,IAAA,EAAK,KAAA;AAAA,QACL,YAAA,EAAY,QAAA,CAAS,WAAA,EAAa,KAAA,IAAS,oBAAA;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAAA,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,qBAAA,EACT,QAAA,EAAA;AAAA,4BAAAA,EAAAA,CAAC,YAAO,KAAA,EAAM,oBAAA,EAAqB,MAAK,QAAA,EAAS,YAAA,EAAW,WAAU,QAAA,EAAA,GAAA,EAEtE,CAAA;AAAA,4BACAA,GAAC,QAAA,EAAA,EAAO,KAAA,EAAM,uBAAsB,IAAA,EAAK,QAAA,EAAS,YAAA,EAAW,UAAA,EAAW,QAAA,EAAA,QAAA,EAExE,CAAA;AAAA,4BACAA,GAAC,QAAA,EAAA,EAAO,KAAA,EAAM,oBAAmB,IAAA,EAAK,QAAA,EAAS,YAAA,EAAW,YAAA,EAAa,QAAA,EAAA,QAAA,EAEvE;AAAA,WAAA,EACF,CAAA;AAAA,0BACAA,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,sBAAA,EAAuB,yBAAyB,EAAE,MAAA,EAAQ,MAAA,CAAO,GAAA,EAAI,EAAG,CAAA;AAAA,0BACnFA,EAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,qBAAA;AAAA,cACN,gBAAA,EAAgB,OAAO,OAAA,CAAQ,KAAA;AAAA,cAC/B,gBAAA,EAAgB,OAAO,OAAA,CAAQ,MAAA;AAAA,cAC/B,eAAA,EAAe,OAAO,OAAA,CAAQ,OAAA;AAAA,cAC9B,eAAA,EAAe,OAAO,OAAA,CAAQ,OAAA;AAAA,cAE7B,iBAAO,QAAA,CAAS,GAAA,CAAI,CAACJ,EAAAA,KAAM,aAAA,CAAcA,EAAC,CAAC;AAAA;AAAA,WAC9C;AAAA,UACC,OAAA,CAAQ,iBAAA,KAAsB,KAAA,oBAC7BI,EAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,kBAAA;AAAA,cACL,KAAA,EAAM,iBAAA;AAAA,cACN,uBAAA,EAAyB;AAAA,gBACvB,MAAA,EAAQ,KAAK,SAAA,CAAU;AAAA,kBACrB,UAAU,IAAA,CAAK,QAAA;AAAA,kBACf,UAAU,IAAA,CAAK,QAAA;AAAA,kBACf,OAAO,IAAA,CAAK;AAAA,iBACb;AAAA;AACH;AAAA;AACF;AAAA;AAAA,KAEJ;AAAA,EAEJ,CAAA;AAEA,EAAA,SAAA,CAAU,GAAA,GAAM,kBAAA;AAChB,EAAA,SAAA,CAAU,cAAA,GAAiB,yBAAA;AAE3B,EAAA,OAAO,SAAA;AACT,CAAA;;;ACxMA,IAAM,iBAAA,GAAiC,CAAC,EAAE,QAAA,EAAS,KAAM;AACvD,EAAA,OAAO,gBAAA,IAAoB,QAAA;AAC7B,CAAA;AAEO,IAAM,cAAA,GAA8D,CAAC,IAAA,MAAU;AAAA,EACpF,IAAA,EAAM,gBAAA;AAAA,EACN,QAAA,EAAU,EAAA;AAAA,EACV,cAAA,EAAgB,CAAC,gBAAA,EAAkB,aAAa,CAAA;AAAA,EAChD,KAAA,EAAO,iBAAA;AAAA,EAEP,QAAA,CAAS,EAAE,GAAA,EAAI,EAAG;AAChB,IAAA,MAAM,eAAA,GAAkB,IAAI,QAAA,CAAS,MAAA;AAAA,MACnC,CAAC,OAAe,EAAA,CAAG,QAAA,CAAS,gBAAgB,CAAA,IAAK,EAAA,CAAG,SAAS,aAAa;AAAA,KAC5E;AAEA,IAAA,MAAM,UAAA,GAAa,IAAI,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,EAAA,KACtC,2CAAA,CAA4C,IAAA,CAAK,EAAE;AAAA,KACrD;AAEA,IAAA,MAAM,eAA8B,EAAC;AAErC,IAAA,KAAA,MAAW,YAAY,eAAA,EAAiB;AACtC,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,WAAW,QAAQ,CAAA;AAClD,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI;AACF,QAAA,OAAA,GAAU,YAAA,CAAa,UAAU,OAAO,CAAA;AAAA,MAC1C,CAAA,CAAA,MAAQ;AACN,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,OAAA,EAAS,QAAQ,CAAA;AAC9C,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,MAAM,qBAA6C,EAAC;AACpD,MAAA,IAAI,KAAK,aAAA,EAAe;AACtB,QAAA,KAAA,MAAW,CAAC,MAAM,QAAQ,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,aAAa,CAAA,EAAG;AACjE,UAAA,IAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAG,OAAA,EAAS;AAC/B,UAAA,MAAM,UAAA,GAAa,SAAS,KAAA,CAAM,GAAG,EAAE,GAAA,EAAI,EAAG,aAAY,IAAK,EAAA;AAC/D,UAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAA,CAAK,CAAC,EAAA,KAAe;AAC5C,YAAA,MAAM,MAAA,GAAS,GAAG,KAAA,CAAM,GAAG,EAAE,GAAA,EAAI,EAAG,aAAY,IAAK,EAAA;AACrD,YAAA,OAAO,MAAA,KAAW,UAAA;AAAA,UACpB,CAAC,CAAA;AACD,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,kBAAA,CAAmB,IAAI,CAAA,GAAI,KAAA;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GACJ,QAAA,CACG,OAAA,CAAQ,mBAAA,EAAqB,EAAE,CAAA,CAC/B,OAAA,CAAQ,eAAA,EAAiB,EAAE,CAAA,CAC3B,KAAA,CAAM,GAAG,CAAA,CACT,KAAI,IAAK,oBAAA;AACd,MAAA,MAAM9B,KAAAA,GAAO,gBAAgB,QAAiD,CAAA;AAE9E,MAAA,YAAA,CAAa,IAAA,CAAK;AAAA,QAChB,IAAA,EAAAA,KAAAA;AAAA,QACA,KAAA,EAAO,QAAA;AAAA,QACP,IAAA,EAAM;AAAA,UACJ,aAAa,EAAE,KAAA,EAAO,UAAU,IAAA,EAAM,CAAC,YAAY,CAAA,EAAE;AAAA,UACrD,cAAA,EAAgB,IAAA;AAAA,UAChB,iBAAA,EAAmB,IAAA;AAAA,UACnB,oBAAA,EAAsB;AAAA;AACxB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,YAAA;AAAA,EACT,CAAA;AAAA,EAEA,aAAA,CAAc,MAAgB,OAAA,EAA2B;AACvD,IAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAK,YAAA,IAAgB,EAAA;AACrD,IAAA,IAAI,aAAa,QAAA,CAAS,gBAAgB,KAAK,YAAA,CAAa,QAAA,CAAS,aAAa,CAAA,EAAG;AACnF,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EAEA,MAAA,EAAQ,YAAA;AAAA,EACR,KAAA,EAAO,YAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;;;AC9FO,IAAM,eAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,YAAA;AAAA,EACN,GAAA,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,EA2BL,OAAO,EAAE,aAAA,EAAe,QAAA,EAAU,OAAA,EAAS,MAAK,EAA4B;AAC1E,IAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAClB,SAAA,CAAU,aAAa,CAAA;AACzB,IAAA,uBACE8B,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,yBAAA,EACT,QAAA,EAAA;AAAA,sBAAAA,GAAC,QAAA,EAAA,EAAO,KAAA,EAAM,6BAA4B,IAAA,EAAK,QAAA,EAAS,cAAW,gBAAA,EACjE,QAAA,EAAA;AAAA,wBAAAA,EAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,4BAAA;AAAA,YACN,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,cAAA,EAAa,GAAA;AAAA,YACb,gBAAA,EAAe,OAAA;AAAA,YACf,iBAAA,EAAgB,OAAA;AAAA,YAChB,KAAA,EAAM,8BAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAA,EAAAA,CAAC,UAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,8BACnCA,EAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,8BACrCA,EAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA,SACvC;AAAA,wBACAA,EAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,4BAAA;AAAA,YACN,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,cAAA,EAAa,GAAA;AAAA,YACb,gBAAA,EAAe,OAAA;AAAA,YACf,iBAAA,EAAgB,OAAA;AAAA,YAChB,KAAA,EAAM,+BAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAA,EAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,8BACpCA,EAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA;AACtC,OAAA,EACF,CAAA;AAAA,sBACAA,EAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAM,oBAAA,EACV,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,aAAA,KAAkB,UAAA,CAAW,aAAa,CAAC,CAAA,EACxD,CAAA;AAAA,sBACAA,EAAAA,CAAC,KAAA,EAAA,EAAI,OAAM,kBAAA,EAAoB,QAAA,EAAA,UAAA,CAAW,OAAO,CAAA,EAAE;AAAA,KAAA,EACrD,CAAA;AAAA,EAEJ;AACF","file":"index.js","sourcesContent":["// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i<alphabet.length ; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64 : function (input) {\n if (input == null) return \"\";\n var res = LZString._compress(input, 6, function(a){return keyStrBase64.charAt(a);});\n switch (res.length % 4) { // To produce valid Base64\n default: // When could this happen ?\n case 0 : return res;\n case 1 : return res+\"===\";\n case 2 : return res+\"==\";\n case 3 : return res+\"=\";\n }\n },\n\n decompressFromBase64 : function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n },\n\n compressToUTF16 : function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 15, function(a){return f(a+32);}) + \" \";\n },\n\n decompressFromUTF16: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 16384, function(index) { return compressed.charCodeAt(index) - 32; });\n },\n\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function (uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf=new Uint8Array(compressed.length*2); // 2 bytes per character\n\n for (var i=0, TotalLen=compressed.length; i<TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i*2] = current_value >>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i<TotalLen; i++) {\n buf[i]=compressed[i*2]*256+compressed[i*2+1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n\n }\n\n },\n\n\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 6, function(a){return keyStrUriSafe.charAt(a);});\n },\n\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent:function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n input = input.replace(/ /g, \"+\");\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n },\n\n compress: function (uncompressed) {\n return LZString._compress(uncompressed, 16, function(a){return f(a);});\n },\n _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return \"\";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c=\"\",\n context_wc=\"\",\n context_w=\"\",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data=[],\n context_data_val=0,\n context_data_position=0,\n ii;\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position ==bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","import { slug as slugAnchor } from \"github-slugger\";\nimport type { Element as HastElement } from \"hast\";\nimport type { FilePath, FullSlug } from \"@quartz-community/types\";\n\nexport type { FilePath, FullSlug };\n\n/** No '/index' ending, no file extension, can have trailing slash for folders. */\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\n/** Starts with './' or '../', used for navigation. */\nexport type RelativeURL = string & { _brand: \"RelativeURL\" };\n\nexport interface TransformOptions {\n strategy: \"absolute\" | \"relative\" | \"shortest\";\n allSlugs: FullSlug[];\n}\n\nexport function isFilePath(s: string): s is FilePath {\n const validStart = !s.startsWith(\".\");\n return validStart && _hasFileExtension(s);\n}\n\nexport function isFullSlug(s: string): s is FullSlug {\n const validStart = !(s.startsWith(\".\") || s.startsWith(\"/\"));\n const validEnding = !s.endsWith(\"/\");\n return validStart && validEnding && !_containsForbiddenCharacters(s);\n}\n\nexport function isSimpleSlug(s: string): s is SimpleSlug {\n const validStart = !(s.startsWith(\".\") || (s.length > 1 && s.startsWith(\"/\")));\n const validEnding = !endsWith(s, \"index\");\n return validStart && !_containsForbiddenCharacters(s) && validEnding && !_hasFileExtension(s);\n}\n\nexport function isRelativeURL(s: string): s is RelativeURL {\n const validStart = /^\\.{1,2}/.test(s);\n const validEnding = !endsWith(s, \"index\");\n return validStart && validEnding && ![\".md\", \".html\"].includes(getFileExtension(s) ?? \"\");\n}\n\nexport function isAbsoluteURL(s: string): boolean {\n try {\n new URL(s);\n } catch {\n return false;\n }\n return true;\n}\n\nexport function simplifySlug(fp: FullSlug | string): SimpleSlug {\n const res = stripSlashes(trimSuffix(fp, \"index\"), true);\n return (res.length === 0 ? \"/\" : res) as SimpleSlug;\n}\n\nexport function getFullSlug(window: Window): FullSlug {\n const res = window.document.body.dataset.slug! as FullSlug;\n return res;\n}\n\nexport function getFullSlugFromUrl(): FullSlug {\n let rawSlug = decodeURI(window.location.pathname);\n if (rawSlug.endsWith(\"/\")) rawSlug = rawSlug.slice(0, -1);\n if (rawSlug.startsWith(\"/\")) rawSlug = rawSlug.slice(1);\n return rawSlug as FullSlug;\n}\n\nexport function slugifyFilePath(fp: FilePath, excludeExt?: boolean): FullSlug {\n fp = stripSlashes(fp) as FilePath;\n const ext = getFileExtension(fp);\n const withoutFileExt = fp.replace(new RegExp(ext + \"$\"), \"\");\n const finalExt = excludeExt || [\".md\", \".html\", undefined].includes(ext) ? \"\" : ext;\n\n let slug = _sluggify(withoutFileExt);\n\n if (endsWith(slug, \"_index\")) {\n slug = slug.replace(/_index$/, \"index\");\n }\n\n // Obsidian \"Folder Notes\" convention (insideFolder storage): a file named the\n // same as its parent folder is treated as the folder's landing page. Rewrite\n // `folder/folder` → `folder/index` so every downstream consumer (trie, link\n // resolver, simplifySlug, isFolderPath) sees the canonical Quartz slug shape\n // and Just Works. A top-level single-segment slug is NOT rewritten — that\n // represents Obsidian's `parentFolder` storage mode, which Quartz already\n // routes as a regular top-level page.\n const segments = slug.split(\"/\");\n if (segments.length >= 2 && segments[segments.length - 1] === segments[segments.length - 2]) {\n segments[segments.length - 1] = \"index\";\n slug = segments.join(\"/\");\n }\n\n return (slug + (finalExt ?? \"\")) as FullSlug;\n}\n\nexport function joinSegments(...args: string[]): string {\n if (args.length === 0) {\n return \"\";\n }\n\n let joined = args\n .filter((segment) => segment !== \"\" && segment !== \"/\")\n .map((segment) => stripSlashes(segment))\n .join(\"/\");\n\n const first = args[0];\n const last = args[args.length - 1];\n\n if (first?.startsWith(\"/\")) {\n joined = \"/\" + joined;\n }\n\n if (last?.endsWith(\"/\")) {\n joined = joined + \"/\";\n }\n\n return joined;\n}\n\nexport function resolvePath(to: string): string {\n if (to.startsWith(\"/\")) return to;\n return \"/\" + to;\n}\n\n/** Read the base path injected at build time via `data-basepath` on `<body>`.\n * Returns `\"\"` for root deployments, e.g. `\"/repository\"` for subdirectory. */\nexport function getBasePath(): string {\n if (typeof document === \"undefined\") return \"\";\n return document.body?.dataset?.basepath ?? \"\";\n}\n\n/** Resolve a slug to an absolute URL path, prepending the site's base path.\n * e.g. `resolveBasePath(\"features/Callouts\")` → `\"/repository/features/Callouts\"` */\nexport function resolveBasePath(to: string, basePath?: string): string {\n const base = basePath ?? getBasePath();\n const slug = to.startsWith(\"/\") ? to : \"/\" + to;\n return base + slug;\n}\n\nexport function endsWith(s: string, suffix: string): boolean {\n return s === suffix || s.endsWith(\"/\" + suffix);\n}\n\nexport function trimSuffix(s: string, suffix: string): string {\n if (endsWith(s, suffix)) {\n s = s.slice(0, -suffix.length);\n }\n return s;\n}\n\nexport function stripSlashes(s: string, onlyStripPrefix?: boolean): string {\n if (s.startsWith(\"/\")) {\n s = s.substring(1);\n }\n\n if (!onlyStripPrefix && s.endsWith(\"/\")) {\n s = s.slice(0, -1);\n }\n\n return s;\n}\n\nexport function getFileExtension(s: string): string | undefined {\n return s.match(/\\.[A-Za-z0-9]+$/)?.[0];\n}\n\nexport function isFolderPath(fplike: string): boolean {\n return (\n fplike.endsWith(\"/\") ||\n endsWith(fplike, \"index\") ||\n endsWith(fplike, \"index.md\") ||\n endsWith(fplike, \"index.html\")\n );\n}\n\nexport function getAllSegmentPrefixes(path: string): string[] {\n const segments = path.split(\"/\");\n const results: string[] = [];\n for (let i = 0; i < segments.length; i++) {\n results.push(segments.slice(0, i + 1).join(\"/\"));\n }\n return results;\n}\n\nexport function pathToRoot(slug: FullSlug): RelativeURL {\n let rootPath = slug\n .split(\"/\")\n .filter((x) => x !== \"\")\n .slice(0, -1)\n .map((_) => \"..\")\n .join(\"/\");\n\n if (rootPath.length === 0) {\n rootPath = \".\";\n }\n\n return rootPath as RelativeURL;\n}\n\nexport function resolveRelative(current: FullSlug, target: FullSlug | SimpleSlug): RelativeURL {\n const res = joinSegments(pathToRoot(current), simplifySlug(target as FullSlug)) as RelativeURL;\n return res;\n}\n\nexport function splitAnchor(link: string): [string, string] {\n const [fp, anchor] = link.split(\"#\", 2);\n if (fp!.endsWith(\".pdf\")) {\n return [fp!, anchor === undefined ? \"\" : `#${anchor}`];\n }\n if (anchor === undefined) {\n return [fp!, \"\"];\n }\n const bare = anchor.startsWith(\"^\") ? anchor.slice(1) : anchor;\n const slugged = \"#\" + slugAnchor(bare);\n return [fp!, slugged];\n}\n\nexport function slugTag(tag: string): string {\n return tag\n .split(\"/\")\n .map((tagSegment) => _sluggify(tagSegment))\n .join(\"/\");\n}\n\nexport function transformInternalLink(link: string): RelativeURL {\n const [fplike, anchor] = splitAnchor(decodeURI(link));\n\n const segments = fplike.split(\"/\").filter((x) => x.length > 0);\n const prefix = segments.filter(_isRelativeSegment).join(\"/\");\n const fp = segments.filter((seg) => !_isRelativeSegment(seg) && seg !== \"\").join(\"/\");\n\n const slugged = slugifyFilePath(fp as FilePath);\n const simpleSlug = simplifySlug(slugged);\n const folderPath = isFolderPath(fplike) || isFolderPath(slugged);\n const joined = joinSegments(stripSlashes(prefix), stripSlashes(simpleSlug));\n const trail = folderPath ? \"/\" : \"\";\n const res = (_addRelativeToStart(joined) + trail + anchor) as RelativeURL;\n return res;\n}\n\nexport function transformLink(src: FullSlug, target: string, opts: TransformOptions): RelativeURL {\n const targetSlug = transformInternalLink(target);\n\n if (opts.strategy === \"relative\") {\n return targetSlug as RelativeURL;\n } else {\n // When src is a folder page (e.g. \"Compendium/Spells\" backed by index.md),\n // the browser serves it at \"/Compendium/Spells/\" with a trailing slash.\n // pathToRoot needs the \"/index\" suffix to compute the correct depth.\n const effectiveSrc =\n !endsWith(src, \"index\") && opts.allSlugs.includes(`${src}/index` as FullSlug)\n ? (`${src}/index` as FullSlug)\n : src;\n\n const folderTail = isFolderPath(targetSlug) ? \"/\" : \"\";\n const canonicalSlug = stripSlashes(targetSlug.slice(\".\".length));\n const [targetCanonical, targetAnchor] = splitAnchor(canonicalSlug);\n\n if (opts.strategy === \"shortest\") {\n const isMultiSegment = targetCanonical.includes(\"/\");\n const isFolderTarget = isFolderPath(targetSlug);\n const matchingFileNames = opts.allSlugs.filter((slug) => {\n if (isMultiSegment) {\n // Multi-segment partial path: match by suffix\n if (slug === targetCanonical || slug.endsWith(\"/\" + targetCanonical)) {\n return true;\n }\n // Folder targets have \"/index\" stripped — also match the \"/index\" variant\n if (isFolderTarget) {\n const withIndex = targetCanonical + \"/index\";\n return slug === withIndex || slug.endsWith(\"/\" + withIndex);\n }\n return false;\n }\n const parts = slug.split(\"/\");\n const fileName = parts.at(-1);\n return targetCanonical === fileName;\n });\n\n if (matchingFileNames.length === 1) {\n const matchedSlug = matchingFileNames[0]!;\n return (resolveRelative(effectiveSrc, matchedSlug) + targetAnchor) as RelativeURL;\n }\n }\n\n return (joinSegments(pathToRoot(effectiveSrc), canonicalSlug) + folderTail) as RelativeURL;\n }\n}\n\n/**\n * Slugify a file path for use as an href.\n * Replaces whitespace→hyphens, &→-and-, %→-percent, removes ? and #, and\n * lowercases the result so that link matching is case-insensitive (matching\n * Obsidian's link-resolution semantics). Operates per segment so directory\n * separators are preserved.\n */\nexport function slugifyPath(s: string): string {\n return s\n .split(\"/\")\n .map((segment) =>\n segment\n .replace(/\\s/g, \"-\")\n .replace(/&/g, \"-and-\")\n .replace(/%/g, \"-percent\")\n .replace(/\\?/g, \"\")\n .replace(/#/g, \"\")\n .replace(/[<>:\"|*]/g, \"\")\n .toLowerCase(),\n )\n .join(\"/\")\n .replace(/\\/$/, \"\");\n}\n\n/**\n * Re-base the relative `href` and `src` attributes of a HAST element so that\n * links inside content originally resolved relative to `newBase` remain valid\n * when the element is embedded at a page with slug `curBase`.\n *\n * Used for transclusions and cross-slug HAST embedding (Quartz core's\n * `renderPage` transclude expansion, canvas-page's embedded file-nodes, and\n * any plugin that takes `vfile.data.htmlAst` from one page and renders it\n * inside another). Absolute URLs pass through unchanged.\n *\n * The element (and its children) are deep-cloned via `structuredClone`, so\n * the original HAST tree is never mutated.\n */\nexport function normalizeHastElement<T extends HastElement>(\n rawEl: T,\n curBase: FullSlug,\n newBase: FullSlug,\n): T {\n const el = structuredClone(rawEl);\n _rebaseHastElement(el, \"src\", curBase, newBase);\n _rebaseHastElement(el, \"href\", curBase, newBase);\n if (el.children) {\n el.children = el.children.map((child) =>\n child.type === \"element\"\n ? (normalizeHastElement(child as HastElement, curBase, newBase) as typeof child)\n : child,\n );\n }\n return el;\n}\n\n/** @internal */\nfunction _rebaseHastElement(\n el: HastElement,\n attr: \"href\" | \"src\",\n curBase: FullSlug,\n newBase: FullSlug,\n): void {\n const value = el.properties?.[attr];\n if (value === undefined || value === null) return;\n const href = String(value);\n if (!isRelativeURL(href)) return;\n el.properties![attr] = joinSegments(resolveRelative(curBase, newBase), \"..\", href);\n}\n\n/** @internal */\nfunction _sluggify(s: string): string {\n return slugifyPath(s);\n}\n\nfunction _containsForbiddenCharacters(s: string): boolean {\n return s.includes(\" \") || s.includes(\"#\") || s.includes(\"?\") || s.includes(\"&\");\n}\n\nfunction _hasFileExtension(s: string): boolean {\n return getFileExtension(s) !== undefined;\n}\n\nfunction _isRelativeSegment(s: string): boolean {\n return /^\\.{0,2}$/.test(s);\n}\n\nfunction _addRelativeToStart(s: string): string {\n if (s === \"\") {\n s = \".\";\n }\n\n if (!s.startsWith(\".\")) {\n s = joinSegments(\".\", s);\n }\n\n return s;\n}\n","import LZString from \"lz-string\";\nimport type { ExcalidrawData } from \"./types\";\n\nconst DEFAULT_APP_STATE = {\n viewBackgroundColor: \"#ffffff\",\n exportBackground: true,\n exportWithDarkMode: false,\n};\n\nexport function parseExcalidraw(content: string, filePath: string): ExcalidrawData | null {\n if (filePath.endsWith(\".excalidraw.md\")) {\n return parseExcalidrawMd(content);\n }\n if (filePath.endsWith(\".excalidraw\")) {\n return parseExcalidrawJson(content);\n }\n return null;\n}\n\nexport function parseExcalidrawJson(content: string): ExcalidrawData | null {\n try {\n const data = JSON.parse(content);\n if (data.type !== \"excalidraw\") return null;\n return normalizeData(data);\n } catch {\n return null;\n }\n}\n\nexport function parseExcalidrawMd(content: string): ExcalidrawData | null {\n const json = extractJsonFromMd(content);\n if (!json) return null;\n\n let data: ExcalidrawData;\n try {\n data = JSON.parse(json);\n } catch {\n return null;\n }\n\n if (data.type !== \"excalidraw\") return null;\n\n const embeddedFiles = parseEmbeddedFilesSection(content);\n const normalized = normalizeData(data);\n if (!normalized) return null;\n\n if (Object.keys(embeddedFiles).length > 0) {\n normalized.embeddedFiles = embeddedFiles;\n }\n\n return normalized;\n}\n\nfunction extractJsonFromMd(content: string): string | null {\n // Find the drawing section between %% delimiters\n const drawingMarkerIdx = content.indexOf(\"# Drawing\");\n if (drawingMarkerIdx === -1) {\n // Fallback: try to find %% delimiters directly\n return extractBetweenPercentDelimiters(content);\n }\n\n const afterMarker = content.slice(drawingMarkerIdx);\n return extractBetweenPercentDelimiters(afterMarker) ?? extractFromCodeFence(afterMarker);\n}\n\nfunction extractBetweenPercentDelimiters(content: string): string | null {\n const firstPct = content.indexOf(\"%%\");\n if (firstPct === -1) return null;\n\n const afterFirst = content.indexOf(\"%%\", firstPct);\n const contentAfterFirstPct = content.slice(afterFirst + 2);\n const secondPct = contentAfterFirstPct.indexOf(\"%%\");\n if (secondPct === -1) return null;\n\n const block = contentAfterFirstPct.slice(0, secondPct).trim();\n return extractFromCodeFence(block) ?? extractRawJson(block);\n}\n\nfunction extractFromCodeFence(block: string): string | null {\n const compressedFenceStart = block.indexOf(\"```compressed-json\");\n if (compressedFenceStart !== -1) {\n const afterFence = block.slice(compressedFenceStart + \"```compressed-json\".length);\n const fenceEnd = afterFence.indexOf(\"```\");\n if (fenceEnd === -1) return null;\n const compressedContent = afterFence.slice(afterFence.indexOf(\"\\n\") + 1, fenceEnd);\n const cleaned = compressedContent.replace(/[\\n\\r]/g, \"\");\n const decompressed = LZString.decompressFromBase64(cleaned);\n return decompressed ?? null;\n }\n\n const fenceStart = block.indexOf(\"```json\");\n if (fenceStart === -1) {\n const altFenceStart = block.indexOf(\"```\");\n if (altFenceStart === -1) return null;\n const afterFence = block.slice(altFenceStart + 3);\n const fenceEnd = afterFence.indexOf(\"```\");\n if (fenceEnd === -1) return null;\n return afterFence.slice(afterFence.indexOf(\"\\n\") + 1, fenceEnd).trim();\n }\n\n const afterFence = block.slice(fenceStart + 7);\n const fenceEnd = afterFence.indexOf(\"```\");\n if (fenceEnd === -1) return null;\n return afterFence.slice(afterFence.indexOf(\"\\n\") + 1, fenceEnd).trim();\n}\n\nfunction extractRawJson(block: string): string | null {\n // Try to find raw JSON object after \"# Drawing\" heading\n const lines = block.split(\"\\n\");\n const jsonStart = lines.findIndex((line) => line.trimStart().startsWith(\"{\"));\n if (jsonStart === -1) return null;\n\n // Collect everything from the opening brace to the end\n const jsonContent = lines.slice(jsonStart).join(\"\\n\").trim();\n // Validate it looks like JSON\n if (jsonContent.startsWith(\"{\") && jsonContent.endsWith(\"}\")) {\n return jsonContent;\n }\n return null;\n}\n\nfunction parseEmbeddedFilesSection(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n const sectionMatch = content.match(/^##?\\s+Embedded\\s+[Ff]iles\\s*$/im);\n if (!sectionMatch) return result;\n const sectionIdx = sectionMatch.index!;\n\n const afterSection = content.slice(sectionIdx + sectionMatch[0].length);\n const endIdx = afterSection.indexOf(\"%%\");\n const section = endIdx === -1 ? afterSection : afterSection.slice(0, endIdx);\n\n const pattern = /^([a-f0-9]+):\\s+\\[\\[(.+?)\\]\\]\\s*$/gm;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(section)) !== null) {\n result[match[1]!] = match[2]!;\n }\n\n return result;\n}\n\nfunction normalizeData(data: unknown): ExcalidrawData | null {\n const d = data as Record<string, unknown>;\n if (typeof d !== \"object\" || d === null) return null;\n\n const elements = Array.isArray(d.elements)\n ? (d.elements as ExcalidrawData[\"elements\"]).filter((el) => !el.isDeleted)\n : [];\n\n const appState =\n typeof d.appState === \"object\" && d.appState !== null\n ? (d.appState as ExcalidrawData[\"appState\"])\n : {};\n\n const files =\n typeof d.files === \"object\" && d.files !== null ? (d.files as ExcalidrawData[\"files\"]) : {};\n\n return {\n type: \"excalidraw\",\n version: typeof d.version === \"number\" ? d.version : 2,\n source: typeof d.source === \"string\" ? d.source : undefined,\n elements,\n appState: { ...DEFAULT_APP_STATE, ...appState },\n files,\n };\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '­',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '‌',\n zwj: '‍',\n lrm: '‎',\n rlm: '‏',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `&#99;` vs `&#x63;` (decimal shorter)\n // * `&#100;` vs `&#x64;` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n","/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it’s a correct child.\n return next\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn’t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // “May be omitted if the element is empty,\n // or if the first thing inside the head element is an element.”\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n","/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don’t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can’t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn’t accept a second argument, but it’s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don’t want unquoted, or if `value` contains character references when\n // unquoted…\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don’t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n","/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n","/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n","/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n","/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use “bogus comments” instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it’s followed by another `li`, the last because it’s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > 👉 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,␠`, where `␠` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > 👉 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n","function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n","/**\n * Constants used throughout the stroke generation algorithm.\n * @internal\n */\n\nconst { PI } = Math\n\n/**\n * Rate of change for simulated pressure.\n * Controls how quickly pressure changes based on drawing velocity.\n * Higher values make pressure more responsive to speed changes.\n */\nexport const RATE_OF_PRESSURE_CHANGE = 0.275\n\n/**\n * PI with a tiny offset to fix browser rendering artifacts.\n * Some browsers render strokes incorrectly when using exact PI.\n */\nexport const FIXED_PI = PI + 0.0001\n\n/**\n * Number of segments for rounded start caps.\n */\nexport const START_CAP_SEGMENTS = 13\n\n/**\n * Number of segments for rounded end caps.\n * Higher than start caps for smoother appearance at stroke endings.\n */\nexport const END_CAP_SEGMENTS = 29\n\n/**\n * Number of segments for sharp corner caps.\n */\nexport const CORNER_CAP_SEGMENTS = 13\n\n/**\n * Pixels to skip at the end of a stroke to reduce noise.\n */\nexport const END_NOISE_THRESHOLD = 3\n\n/**\n * Minimum interpolation factor for streamline.\n * Used when streamline is at maximum (1.0).\n */\nexport const MIN_STREAMLINE_T = 0.15\n\n/**\n * Range for interpolation factor calculation.\n * Added to MIN_STREAMLINE_T based on (1 - streamline).\n */\nexport const STREAMLINE_T_RANGE = 0.85\n\n/**\n * Minimum stroke radius to prevent invisible strokes.\n */\nexport const MIN_RADIUS = 0.01\n\n/**\n * Default pressure for the first point of a stroke.\n * Lower than subsequent points to prevent fat starts,\n * since drawn lines almost always start slow.\n */\nexport const DEFAULT_FIRST_PRESSURE = 0.25\n\n/**\n * Default pressure for subsequent points when no pressure is provided.\n */\nexport const DEFAULT_PRESSURE = 0.5\n\n/**\n * Unit offset vector used as placeholder for initial vector\n * and for creating a second point when only one point is provided.\n */\nexport const UNIT_OFFSET: [number, number] = [1, 1]\n","/**\n * Compute a radius based on the pressure.\n * @param size\n * @param thinning\n * @param pressure\n * @param easing\n * @internal\n */\nexport function getStrokeRadius(\n size: number,\n thinning: number,\n pressure: number,\n easing: (t: number) => number = (t) => t\n) {\n return size * easing(0.5 - thinning * (0.5 - pressure))\n}\n","import { RATE_OF_PRESSURE_CHANGE } from './constants'\n\nconst { min } = Math\n\n/**\n * Simulate pressure based on the distance between points and stroke size.\n * This creates a natural-looking pressure effect based on drawing velocity.\n *\n * @param prevPressure The previous pressure value\n * @param distance The distance from the previous point\n * @param size The base stroke size\n * @returns The simulated pressure value (0-1)\n * @internal\n */\nexport function simulatePressure(\n prevPressure: number,\n distance: number,\n size: number\n): number {\n // Speed of change - how fast should the pressure be changing?\n const sp = min(1, distance / size)\n // Rate of change - how much of a change is there?\n const rp = min(1, 1 - sp)\n // Accelerate the pressure\n return min(\n 1,\n prevPressure + (rp - prevPressure) * (sp * RATE_OF_PRESSURE_CHANGE)\n )\n}\n","import type { Vec2 } from './types'\n\n/**\n * Negate a vector.\n * @param A\n * @internal\n */\nexport function neg(A: Vec2): Vec2 {\n return [-A[0], -A[1]]\n}\n\n/**\n * Add vectors.\n * @param A\n * @param B\n * @internal\n */\nexport function add(A: Vec2, B: Vec2): Vec2 {\n return [A[0] + B[0], A[1] + B[1]]\n}\n\n/**\n * Add vectors into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @internal\n */\nexport function addInto(out: Vec2, A: Vec2, B: Vec2): Vec2 {\n out[0] = A[0] + B[0]\n out[1] = A[1] + B[1]\n return out\n}\n\n/**\n * Subtract vectors.\n * @param A\n * @param B\n * @internal\n */\nexport function sub(A: Vec2, B: Vec2): Vec2 {\n return [A[0] - B[0], A[1] - B[1]]\n}\n\n/**\n * Subtract vectors into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @internal\n */\nexport function subInto(out: Vec2, A: Vec2, B: Vec2): Vec2 {\n out[0] = A[0] - B[0]\n out[1] = A[1] - B[1]\n return out\n}\n\n/**\n * Vector multiplication by scalar\n * @param A\n * @param n\n * @internal\n */\nexport function mul(A: Vec2, n: number): Vec2 {\n return [A[0] * n, A[1] * n]\n}\n\n/**\n * Vector multiplication by scalar into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param n\n * @internal\n */\nexport function mulInto(out: Vec2, A: Vec2, n: number): Vec2 {\n out[0] = A[0] * n\n out[1] = A[1] * n\n return out\n}\n\n/**\n * Vector division by scalar.\n * @param A\n * @param n\n * @internal\n */\nexport function div(A: Vec2, n: number): Vec2 {\n return [A[0] / n, A[1] / n]\n}\n\n/**\n * Perpendicular rotation of a vector A\n * @param A\n * @internal\n */\nexport function per(A: Vec2): Vec2 {\n return [A[1], -A[0]]\n}\n\n/**\n * Perpendicular rotation into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @internal\n */\nexport function perInto(out: Vec2, A: Vec2): Vec2 {\n const temp = A[0]\n out[0] = A[1]\n out[1] = -temp\n return out\n}\n\n/**\n * Dot product\n * @param A\n * @param B\n * @internal\n */\nexport function dpr(A: Vec2, B: Vec2): number {\n return A[0] * B[0] + A[1] * B[1]\n}\n\n/**\n * Get whether two vectors are equal.\n * @param A\n * @param B\n * @internal\n */\nexport function isEqual(A: Vec2, B: Vec2): boolean {\n return A[0] === B[0] && A[1] === B[1]\n}\n\n/**\n * Length of the vector\n * @param A\n * @internal\n */\nexport function len(A: Vec2): number {\n return Math.hypot(A[0], A[1])\n}\n\n/**\n * Length of the vector squared\n * @param A\n * @internal\n */\nexport function len2(A: Vec2): number {\n return A[0] * A[0] + A[1] * A[1]\n}\n\n/**\n * Dist length from A to B squared (inlined for performance).\n * @param A\n * @param B\n * @internal\n */\nexport function dist2(A: Vec2, B: Vec2): number {\n const dx = A[0] - B[0]\n const dy = A[1] - B[1]\n return dx * dx + dy * dy\n}\n\n/**\n * Get normalized / unit vector.\n * @param A\n * @internal\n */\nexport function uni(A: Vec2): Vec2 {\n return div(A, len(A))\n}\n\n/**\n * Dist length from A to B\n * @param A\n * @param B\n * @internal\n */\nexport function dist(A: Vec2, B: Vec2): number {\n return Math.hypot(A[1] - B[1], A[0] - B[0])\n}\n\n/**\n * Mean between two vectors or mid vector between two vectors\n * @param A\n * @param B\n * @internal\n */\nexport function med(A: Vec2, B: Vec2): Vec2 {\n return mul(add(A, B), 0.5)\n}\n\n/**\n * Rotate a vector around another vector by r (radians)\n * @param A vector\n * @param C center\n * @param r rotation in radians\n * @internal\n */\nexport function rotAround(A: Vec2, C: Vec2, r: number): Vec2 {\n const s = Math.sin(r)\n const c = Math.cos(r)\n\n const px = A[0] - C[0]\n const py = A[1] - C[1]\n\n const nx = px * c - py * s\n const ny = px * s + py * c\n\n return [nx + C[0], ny + C[1]]\n}\n\n/**\n * Rotate a vector around another vector by r (radians) into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A vector\n * @param C center\n * @param r rotation in radians\n * @internal\n */\nexport function rotAroundInto(out: Vec2, A: Vec2, C: Vec2, r: number): Vec2 {\n const s = Math.sin(r)\n const c = Math.cos(r)\n\n const px = A[0] - C[0]\n const py = A[1] - C[1]\n\n const nx = px * c - py * s\n const ny = px * s + py * c\n\n out[0] = nx + C[0]\n out[1] = ny + C[1]\n return out\n}\n\n/**\n * Interpolate vector A to B with a scalar t\n * @param A\n * @param B\n * @param t scalar\n * @internal\n */\nexport function lrp(A: Vec2, B: Vec2, t: number): Vec2 {\n return add(A, mul(sub(B, A), t))\n}\n\n/**\n * Interpolate vector A to B with a scalar t into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @param t scalar\n * @internal\n */\nexport function lrpInto(out: Vec2, A: Vec2, B: Vec2, t: number): Vec2 {\n const dx = B[0] - A[0]\n const dy = B[1] - A[1]\n out[0] = A[0] + dx * t\n out[1] = A[1] + dy * t\n return out\n}\n\n/**\n * Project a point A in the direction B by a scalar c\n * @param A\n * @param B\n * @param c\n * @internal\n */\nexport function prj(A: Vec2, B: Vec2, c: number): Vec2 {\n return add(A, mul(B, c))\n}\n\n/**\n * Project a point A in the direction B by a scalar c into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @param c\n * @internal\n */\nexport function prjInto(out: Vec2, A: Vec2, B: Vec2, c: number): Vec2 {\n out[0] = A[0] + B[0] * c\n out[1] = A[1] + B[1] * c\n return out\n}\n","import {\n CORNER_CAP_SEGMENTS,\n END_CAP_SEGMENTS,\n END_NOISE_THRESHOLD,\n FIXED_PI,\n MIN_RADIUS,\n START_CAP_SEGMENTS,\n} from './constants'\nimport { getStrokeRadius } from './getStrokeRadius'\nimport { simulatePressure } from './simulatePressure'\nimport type { StrokeOptions, StrokePoint, Vec2 } from './types'\nimport {\n add,\n addInto,\n dist2,\n dpr,\n lrpInto,\n mul,\n mulInto,\n neg,\n per,\n perInto,\n prj,\n rotAround,\n rotAroundInto,\n sub,\n subInto,\n uni,\n} from './vec'\n\n// Scratch buffers for allocation-free hot loop calculations\nconst _offset: Vec2 = [0, 0]\nconst _tl: Vec2 = [0, 0]\nconst _tr: Vec2 = [0, 0]\n\n/**\n * Draw a dot (circle) for very short strokes.\n */\nfunction drawDot(center: Vec2, radius: number): Vec2[] {\n const offsetPoint = add(center, [1, 1])\n const start = prj(center, uni(per(sub(center, offsetPoint))), -radius)\n const dotPts: Vec2[] = []\n const step = 1 / START_CAP_SEGMENTS\n for (let t = step; t <= 1; t += step) {\n dotPts.push(rotAround(start, center, FIXED_PI * 2 * t))\n }\n return dotPts\n}\n\n/**\n * Draw a rounded start cap by rotating points from right to left around the start point.\n */\nfunction drawRoundStartCap(\n center: Vec2,\n rightPoint: Vec2,\n segments: number\n): Vec2[] {\n const cap: Vec2[] = []\n const step = 1 / segments\n for (let t = step; t <= 1; t += step) {\n cap.push(rotAround(rightPoint, center, FIXED_PI * t))\n }\n return cap\n}\n\n/**\n * Draw a flat start cap with squared-off edges.\n */\nfunction drawFlatStartCap(\n center: Vec2,\n leftPoint: Vec2,\n rightPoint: Vec2\n): Vec2[] {\n const cornersVector = sub(leftPoint, rightPoint)\n const offsetA = mul(cornersVector, 0.5)\n const offsetB = mul(cornersVector, 0.51)\n return [\n sub(center, offsetA),\n sub(center, offsetB),\n add(center, offsetB),\n add(center, offsetA),\n ]\n}\n\n/**\n * Draw a rounded end cap (1.5 turns to handle sharp end turns correctly).\n */\nfunction drawRoundEndCap(\n center: Vec2,\n direction: Vec2,\n radius: number,\n segments: number\n): Vec2[] {\n const cap: Vec2[] = []\n const start = prj(center, direction, radius)\n const step = 1 / segments\n for (let t = step; t < 1; t += step) {\n cap.push(rotAround(start, center, FIXED_PI * 3 * t))\n }\n return cap\n}\n\n/**\n * Draw a flat end cap with squared-off edges.\n */\nfunction drawFlatEndCap(center: Vec2, direction: Vec2, radius: number): Vec2[] {\n return [\n add(center, mul(direction, radius)),\n add(center, mul(direction, radius * 0.99)),\n sub(center, mul(direction, radius * 0.99)),\n sub(center, mul(direction, radius)),\n ]\n}\n\n/**\n * Compute the taper distance from a taper option value.\n * - false or undefined: no taper (0)\n * - true: taper the full length (max of size and totalLength)\n * - number: use that exact taper distance\n */\nfunction computeTaperDistance(\n taper: boolean | number | undefined,\n size: number,\n totalLength: number\n): number {\n if (taper === false || taper === undefined) return 0\n if (taper === true) return Math.max(size, totalLength)\n return taper\n}\n\n/**\n * Compute the initial pressure by averaging the first few points.\n * This prevents \"fat starts\" since drawn lines almost always start slow.\n */\nfunction computeInitialPressure(\n points: StrokePoint[],\n shouldSimulatePressure: boolean,\n size: number\n): number {\n return points.slice(0, 10).reduce((acc, curr) => {\n let pressure = curr.pressure\n if (shouldSimulatePressure) {\n pressure = simulatePressure(acc, curr.distance, size)\n }\n return (acc + pressure) / 2\n }, points[0].pressure)\n}\n\n/**\n * ## getStrokeOutlinePoints\n * @description Get an array of points (as `[x, y]`) representing the outline of a stroke.\n * @param points An array of StrokePoints as returned from `getStrokePoints`.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\nexport function getStrokeOutlinePoints(\n points: StrokePoint[],\n options: Partial<StrokeOptions> = {} as Partial<StrokeOptions>\n): Vec2[] {\n const {\n size = 16,\n smoothing = 0.5,\n thinning = 0.5,\n simulatePressure: shouldSimulatePressure = true,\n easing = (t) => t,\n start = {},\n end = {},\n last: isComplete = false,\n } = options\n\n const { cap: capStart = true, easing: taperStartEase = (t) => t * (2 - t) } =\n start\n\n const { cap: capEnd = true, easing: taperEndEase = (t) => --t * t * t + 1 } =\n end\n\n // We can't do anything with an empty array or a stroke with negative size.\n if (points.length === 0 || size <= 0) {\n return []\n }\n\n // The total length of the line\n const totalLength = points[points.length - 1].runningLength\n\n const taperStart = computeTaperDistance(start.taper, size, totalLength)\n const taperEnd = computeTaperDistance(end.taper, size, totalLength)\n\n // The minimum allowed distance between points (squared)\n const minDistance = Math.pow(size * smoothing, 2)\n\n // Our collected left and right points\n const leftPts: Vec2[] = []\n const rightPts: Vec2[] = []\n\n // Previous pressure (averaged from first few points to prevent fat starts)\n let prevPressure = computeInitialPressure(\n points,\n shouldSimulatePressure,\n size\n )\n\n // The current radius\n let radius = getStrokeRadius(\n size,\n thinning,\n points[points.length - 1].pressure,\n easing\n )\n\n // The radius of the first saved point\n let firstRadius: number | undefined = undefined\n\n // Previous vector\n let prevVector = points[0].vector\n\n // Previous left and right points\n let prevLeftPoint = points[0].point\n let prevRightPoint = prevLeftPoint\n\n // Temporary left and right points\n let tempLeftPoint: Vec2 = prevLeftPoint\n let tempRightPoint: Vec2 = prevRightPoint\n\n // Keep track of whether the previous point is a sharp corner\n // ... so that we don't detect the same corner twice\n let isPrevPointSharpCorner = false\n\n /*\n Find the outline's left and right points\n\n Iterating through the points and populate the rightPts and leftPts arrays,\n skipping the first and last pointsm, which will get caps later on.\n */\n\n for (let i = 0; i < points.length; i++) {\n let { pressure } = points[i]\n const { point, vector, distance, runningLength } = points[i]\n const isLastPoint = i === points.length - 1\n\n // Removes noise from the end of the line\n if (!isLastPoint && totalLength - runningLength < END_NOISE_THRESHOLD) {\n continue\n }\n\n /*\n Calculate the radius\n\n If not thinning, the current point's radius will be half the size; or\n otherwise, the size will be based on the current (real or simulated)\n pressure.\n */\n\n if (thinning) {\n if (shouldSimulatePressure) {\n // If we're simulating pressure, then do so based on the distance\n // between the current point and the previous point, and the size\n // of the stroke. Otherwise, use the input pressure.\n pressure = simulatePressure(prevPressure, distance, size)\n }\n\n radius = getStrokeRadius(size, thinning, pressure, easing)\n } else {\n radius = size / 2\n }\n\n if (firstRadius === undefined) {\n firstRadius = radius\n }\n\n /*\n Apply tapering\n\n If the current length is within the taper distance at either the\n start or the end, calculate the taper strengths. Apply the smaller\n of the two taper strengths to the radius.\n */\n\n const taperStartStrength =\n runningLength < taperStart\n ? taperStartEase(runningLength / taperStart)\n : 1\n\n const taperEndStrength =\n totalLength - runningLength < taperEnd\n ? taperEndEase((totalLength - runningLength) / taperEnd)\n : 1\n\n radius = Math.max(\n MIN_RADIUS,\n radius * Math.min(taperStartStrength, taperEndStrength)\n )\n\n /* Add points to left and right */\n\n /*\n Handle sharp corners\n\n Find the difference (dot product) between the current and next vector.\n If the next vector is at more than a right angle to the current vector,\n draw a cap at the current point.\n */\n\n const nextVector = (!isLastPoint ? points[i + 1] : points[i]).vector\n const nextDpr = !isLastPoint ? dpr(vector, nextVector) : 1.0\n const prevDpr = dpr(vector, prevVector)\n\n const isPointSharpCorner = prevDpr < 0 && !isPrevPointSharpCorner\n const isNextPointSharpCorner = nextDpr !== null && nextDpr < 0\n\n if (isPointSharpCorner || isNextPointSharpCorner) {\n // It's a sharp corner. Draw a rounded cap and move on to the next point\n // Considering saving these and drawing them later? So that we can avoid\n // crossing future points.\n\n // Use mutable operations for the offset calculation\n perInto(_offset, prevVector)\n mulInto(_offset, _offset, radius)\n\n const step = 1 / CORNER_CAP_SEGMENTS\n for (let t = 0; t <= 1; t += step) {\n // Calculate left point: rotate (point - offset) around point\n subInto(_tl, point, _offset)\n rotAroundInto(_tl, _tl, point, FIXED_PI * t)\n tempLeftPoint = [_tl[0], _tl[1]]\n leftPts.push(tempLeftPoint)\n\n // Calculate right point: rotate (point + offset) around point\n addInto(_tr, point, _offset)\n rotAroundInto(_tr, _tr, point, FIXED_PI * -t)\n tempRightPoint = [_tr[0], _tr[1]]\n rightPts.push(tempRightPoint)\n }\n\n prevLeftPoint = tempLeftPoint\n prevRightPoint = tempRightPoint\n\n if (isNextPointSharpCorner) {\n isPrevPointSharpCorner = true\n }\n continue\n }\n\n isPrevPointSharpCorner = false\n\n // Handle the last point\n if (isLastPoint) {\n perInto(_offset, vector)\n mulInto(_offset, _offset, radius)\n leftPts.push(sub(point, _offset))\n rightPts.push(add(point, _offset))\n continue\n }\n\n /*\n Add regular points\n\n Project points to either side of the current point, using the\n calculated size as a distance. If a point's distance to the\n previous point on that side greater than the minimum distance\n (or if the corner is kinda sharp), add the points to the side's\n points array.\n */\n\n // Use mutable operations for offset calculation\n lrpInto(_offset, nextVector, vector, nextDpr)\n perInto(_offset, _offset)\n mulInto(_offset, _offset, radius)\n\n subInto(_tl, point, _offset)\n tempLeftPoint = [_tl[0], _tl[1]]\n\n if (i <= 1 || dist2(prevLeftPoint, tempLeftPoint) > minDistance) {\n leftPts.push(tempLeftPoint)\n prevLeftPoint = tempLeftPoint\n }\n\n addInto(_tr, point, _offset)\n tempRightPoint = [_tr[0], _tr[1]]\n\n if (i <= 1 || dist2(prevRightPoint, tempRightPoint) > minDistance) {\n rightPts.push(tempRightPoint)\n prevRightPoint = tempRightPoint\n }\n\n // Set variables for next iteration\n prevPressure = pressure\n prevVector = vector\n }\n\n /*\n Drawing caps\n\n Now that we have our points on either side of the line, we need to\n draw caps at the start and end. Tapered lines don't have caps, but\n may have dots for very short lines.\n */\n\n const firstPoint: Vec2 = [points[0].point[0], points[0].point[1]]\n\n const lastPoint: Vec2 =\n points.length > 1\n ? [points[points.length - 1].point[0], points[points.length - 1].point[1]]\n : add(points[0].point, [1, 1])\n\n const startCap: Vec2[] = []\n\n const endCap: Vec2[] = []\n\n // Draw a dot for very short or completed strokes\n if (points.length === 1) {\n if (!(taperStart || taperEnd) || isComplete) {\n return drawDot(firstPoint, firstRadius || radius)\n }\n } else {\n // Draw start cap (unless tapered)\n if (taperStart || (taperEnd && points.length === 1)) {\n // The start point is tapered, noop\n } else if (capStart) {\n startCap.push(\n ...drawRoundStartCap(firstPoint, rightPts[0], START_CAP_SEGMENTS)\n )\n } else {\n startCap.push(...drawFlatStartCap(firstPoint, leftPts[0], rightPts[0]))\n }\n\n // Draw end cap (unless tapered)\n const direction = per(neg(points[points.length - 1].vector))\n\n if (taperEnd || (taperStart && points.length === 1)) {\n // Tapered end - push the last point to the line\n endCap.push(lastPoint)\n } else if (capEnd) {\n endCap.push(\n ...drawRoundEndCap(lastPoint, direction, radius, END_CAP_SEGMENTS)\n )\n } else {\n endCap.push(...drawFlatEndCap(lastPoint, direction, radius))\n }\n }\n\n /*\n Return the points in the correct winding order: begin on the left side, then\n continue around the end cap, then come back along the right side, and finally\n complete the start cap.\n */\n\n return leftPts.concat(endCap, rightPts.reverse(), startCap)\n}\n","import {\n DEFAULT_FIRST_PRESSURE,\n DEFAULT_PRESSURE,\n MIN_STREAMLINE_T,\n STREAMLINE_T_RANGE,\n UNIT_OFFSET,\n} from './constants'\nimport type { StrokeOptions, StrokePoint, Vec2 } from './types'\nimport { add, dist, isEqual, lrp, subInto, uni } from './vec'\n\n// Scratch buffer for allocation-free vector calculation in hot loop\nconst _vectorDiff: Vec2 = [0, 0]\n\n/**\n * Check if a pressure value is valid (defined and non-negative).\n * Returns false for undefined, NaN, and negative values.\n */\nfunction isValidPressure(pressure: number | undefined): pressure is number {\n return pressure != null && pressure >= 0\n}\n\n/**\n * ## getStrokePoints\n * @description Get an array of points as objects with an adjusted point, pressure, vector, distance, and runningLength.\n * @param points An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is optional in both cases.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\nexport function getStrokePoints<\n T extends number[],\n K extends { x: number; y: number; pressure?: number },\n>(points: (T | K)[], options = {} as StrokeOptions): StrokePoint[] {\n const { streamline = 0.5, size = 16, last: isComplete = false } = options\n\n // If we don't have any points, return an empty array.\n if (points.length === 0) return []\n\n // Find the interpolation level between points.\n const t = MIN_STREAMLINE_T + (1 - streamline) * STREAMLINE_T_RANGE\n\n // Whatever the input is, make sure that the points are in number[][].\n let pts = Array.isArray(points[0])\n ? (points as T[])\n : (points as K[]).map(({ x, y, pressure = DEFAULT_PRESSURE }) => [\n x,\n y,\n pressure,\n ])\n\n // Add extra points between the two, to help avoid \"dash\" lines\n // for strokes with tapered start and ends. Don't mutate the\n // input array!\n if (pts.length === 2) {\n const last = pts[1]\n pts = pts.slice(0, -1)\n for (let i = 1; i < 5; i++) {\n pts.push(lrp(pts[0] as Vec2, last as Vec2, i / 4))\n }\n }\n\n // If there's only one point, add another point at a 1pt offset.\n // Don't mutate the input array!\n if (pts.length === 1) {\n pts = [...pts, [...add(pts[0] as Vec2, UNIT_OFFSET), ...pts[0].slice(2)]]\n }\n\n // The strokePoints array will hold the points for the stroke.\n // Start it out with the first point, which needs no adjustment.\n const strokePoints: StrokePoint[] = [\n {\n point: [pts[0][0], pts[0][1]],\n pressure: isValidPressure(pts[0][2]) ? pts[0][2] : DEFAULT_FIRST_PRESSURE,\n vector: [...UNIT_OFFSET],\n distance: 0,\n runningLength: 0,\n },\n ]\n\n // A flag to see whether we've already reached out minimum length\n let hasReachedMinimumLength = false\n\n // We use the runningLength to keep track of the total distance\n let runningLength = 0\n\n // We're set this to the latest point, so we can use it to calculate\n // the distance and vector of the next point.\n let prev = strokePoints[0]\n\n const max = pts.length - 1\n\n // Iterate through all of the points, creating StrokePoints.\n for (let i = 1; i < pts.length; i++) {\n const point: Vec2 =\n isComplete && i === max\n ? // If we're at the last point, and `options.last` is true,\n // then add the actual input point.\n [pts[i][0], pts[i][1]]\n : // Otherwise, using the t calculated from the streamline\n // option, interpolate a new point between the previous\n // point the current point.\n lrp(prev.point, pts[i] as Vec2, t)\n\n // If the new point is the same as the previous point, skip ahead.\n if (isEqual(prev.point, point)) continue\n\n // How far is the new point from the previous point?\n const distance = dist(point, prev.point)\n\n // Add this distance to the total \"running length\" of the line.\n runningLength += distance\n\n // At the start of the line, we wait until the new point is a\n // certain distance away from the original point, to avoid noise\n if (i < max && !hasReachedMinimumLength) {\n if (runningLength < size) continue\n hasReachedMinimumLength = true\n // TODO: Backfill the missing points so that tapering works correctly.\n }\n // Create a new strokepoint (it will be the new \"previous\" one).\n // Use scratch buffer for vector difference to reduce allocations\n subInto(_vectorDiff, prev.point, point)\n prev = {\n // The adjusted point\n point,\n // The input pressure (or default if not specified)\n pressure: isValidPressure(pts[i][2]) ? pts[i][2] : DEFAULT_PRESSURE,\n // The vector from the current point to the previous point\n vector: uni(_vectorDiff),\n // The distance between the current point and the previous point\n distance,\n // The total distance so far\n runningLength,\n }\n\n // Push it to the strokePoints array.\n strokePoints.push(prev)\n }\n\n // Set the vector of the first point to be the same as the second point.\n strokePoints[0].vector = strokePoints[1]?.vector || [0, 0]\n\n return strokePoints\n}\n","import type { StrokeOptions, Vec2 } from './types'\nimport { getStrokeOutlinePoints } from './getStrokeOutlinePoints'\nimport { getStrokePoints } from './getStrokePoints'\n\n/**\n * ## getStroke\n * @description Get an array of points describing a polygon that surrounds the input points.\n * @param points An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is optional in both cases.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\n\nexport function getStroke(\n points: (number[] | { x: number; y: number; pressure?: number })[],\n options: StrokeOptions = {} as StrokeOptions\n): Vec2[] {\n return getStrokeOutlinePoints(getStrokePoints(points, options), options)\n}\n","import rough from \"roughjs\";\nimport { getStroke } from \"perfect-freehand\";\nimport type { ExcalidrawData, ExcalidrawElement, ExcalidrawPageOptions } from \"./types\";\n\nconst gen = rough.generator();\n\ninterface BBox {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n width: number;\n height: number;\n}\n\nconst FONT_FAMILIES: Record<number, string> = {\n 1: \"Virgil, Segoe UI Emoji, sans-serif\",\n 2: \"Helvetica, Arial, sans-serif\",\n 3: \"Cascadia, monospace\",\n 4: \"Virgil, Segoe UI Emoji, sans-serif\",\n};\n\nexport interface ResolvedEmbed {\n html: string;\n href: string;\n}\n\nexport interface EmbedOverlay {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n link: string;\n isWikilink: boolean;\n resolved?: ResolvedEmbed;\n}\n\nexport interface RenderResult {\n svg: string;\n overlays: EmbedOverlay[];\n viewBox: { width: number; height: number; offsetX: number; offsetY: number };\n}\n\nexport interface RenderContext {\n resolvedEmbeds?: Record<string, ResolvedEmbed>;\n resolvedImages?: Record<string, string>;\n}\n\nexport function renderToSvg(\n data: ExcalidrawData,\n opts: ExcalidrawPageOptions = {},\n ctx?: RenderContext,\n): RenderResult {\n const elements = data.elements.filter((el) => !el.isDeleted);\n if (elements.length === 0) {\n return {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"></svg>',\n overlays: [],\n viewBox: { width: 100, height: 100, offsetX: 0, offsetY: 0 },\n };\n }\n\n const padding = opts.exportPadding ?? 20;\n const bbox = computeBoundingBox(elements);\n const width = Math.ceil(bbox.width + padding * 2);\n const height = Math.ceil(bbox.height + padding * 2);\n const offsetX = -bbox.minX + padding;\n const offsetY = -bbox.minY + padding;\n\n const bgColor = resolveBgColor(data, opts);\n\n const overlays: EmbedOverlay[] = [];\n const embeddables = elements.filter((el) => el.type === \"embeddable\" || el.type === \"iframe\");\n for (const el of embeddables) {\n const link = (el.link as string) ?? \"\";\n const isWikilink = link.startsWith(\"[[\");\n overlays.push({\n id: el.id,\n x: el.x,\n y: el.y,\n width: el.width,\n height: el.height,\n link,\n isWikilink,\n resolved: ctx?.resolvedEmbeds?.[el.id],\n });\n }\n\n const renderedElements = elements.map((el) => renderElement(el, data, ctx)).filter(Boolean);\n\n const parts = [\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\" width=\"100%\" height=\"100%\" preserveAspectRatio=\"xMidYMid meet\" data-bg-color=\"${escapeAttr(bgColor ?? \"#ffffff\")}\">`,\n `<defs>${getFontDefs()}</defs>`,\n `<g transform=\"translate(${offsetX}, ${offsetY})\">`,\n ...renderedElements,\n \"</g>\",\n \"</svg>\",\n ];\n\n return {\n svg: parts.filter(Boolean).join(\"\\n\"),\n overlays,\n viewBox: { width, height, offsetX, offsetY },\n };\n}\n\nfunction resolveBgColor(data: ExcalidrawData, opts: ExcalidrawPageOptions): string | null {\n const exportBg = data.appState.exportBackground ?? true;\n if (!exportBg) return null;\n\n if (opts.darkMode === \"dark\") return \"#1e1e1e\";\n if (opts.darkMode === \"light\") return data.appState.viewBackgroundColor ?? \"#ffffff\";\n\n const rawBg = data.appState.viewBackgroundColor ?? \"#ffffff\";\n const lower = rawBg.toLowerCase();\n if (lower === \"#ffffff\" || lower === \"#ffffffff\") return \"var(--excalidraw-bg, #ffffff)\";\n return rawBg;\n}\n\nfunction renderElement(el: ExcalidrawElement, data: ExcalidrawData, ctx?: RenderContext): string {\n const inner = renderElementInner(el, data, ctx);\n if (!inner) return \"\";\n\n const attrs: string[] = [];\n if (el.angle && el.angle !== 0) {\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n const deg = (el.angle * 180) / Math.PI;\n attrs.push(`transform=\"rotate(${deg.toFixed(2)}, ${cx.toFixed(2)}, ${cy.toFixed(2)})\"`);\n }\n if (el.opacity != null && el.opacity < 100) {\n attrs.push(`opacity=\"${el.opacity / 100}\"`);\n }\n\n if (attrs.length > 0) {\n return `<g ${attrs.join(\" \")}>${inner}</g>`;\n }\n return inner;\n}\n\nfunction renderElementInner(\n el: ExcalidrawElement,\n data: ExcalidrawData,\n ctx?: RenderContext,\n): string {\n switch (el.type) {\n case \"rectangle\":\n return renderRectangle(el);\n case \"ellipse\":\n return renderEllipse(el);\n case \"diamond\":\n return renderDiamond(el);\n case \"line\":\n case \"arrow\":\n return renderLinearElement(el);\n case \"text\":\n return renderText(el);\n case \"freedraw\":\n return renderFreedraw(el);\n case \"image\":\n return renderImage(el, data, ctx);\n case \"frame\":\n case \"magicframe\":\n return renderFrame(el);\n case \"embeddable\":\n case \"iframe\":\n return renderEmbeddable(el);\n default:\n return \"\";\n }\n}\n\n// Excalidraw's dark mode uses invert(93%) + hue-rotate(180deg).\n// Pre-computed dark variants for all default palette colors.\n// Light → Dark mappings generated from Excalidraw's applyDarkModeFilter algorithm.\nconst DARK_MODE_MAP: Record<string, string> = {\n \"#1e1e1e\": \"#d3d3d3\",\n \"#000000\": \"#ededed\",\n \"#343a40\": \"#b7bcc1\",\n \"#868e96\": \"#6e757c\",\n \"#ced4da\": \"#33383d\",\n \"#e9ecef\": \"#202325\",\n \"#f8f9fa\": \"#161718\",\n \"#e03131\": \"#ff8383\",\n \"#fa5252\": \"#fa6969\",\n \"#ff8787\": \"#b44d4d\",\n \"#ffc9c9\": \"#5a2c2c\",\n \"#fff5f5\": \"#1f1717\",\n \"#c2255c\": \"#ff8dbc\",\n \"#e64980\": \"#f56e9d\",\n \"#f783ac\": \"#b04d70\",\n \"#fcc2d7\": \"#602e40\",\n \"#fff0f6\": \"#26191e\",\n \"#9c36b5\": \"#e28af8\",\n \"#be4bdb\": \"#d471ed\",\n \"#da77f2\": \"#a954be\",\n \"#eebefa\": \"#5b3165\",\n \"#f8f0fc\": \"#211a25\",\n \"#6741d9\": \"#b595ff\",\n \"#7950f2\": \"#a885ff\",\n \"#9775fa\": \"#8a6cdf\",\n \"#d0bfff\": \"#4a3b72\",\n \"#f3f0ff\": \"#1f1c29\",\n \"#1971c2\": \"#56a2e8\",\n \"#228be6\": \"#3791e0\",\n \"#4dabf7\": \"#2273b4\",\n \"#a5d8ff\": \"#154162\",\n \"#e7f5ff\": \"#121e26\",\n \"#0c8599\": \"#3da5b6\",\n \"#15aabf\": \"#0f8fa1\",\n \"#3bc9db\": \"#007281\",\n \"#99e9f2\": \"#004149\",\n \"#e3fafc\": \"#0a1e20\",\n \"#099268\": \"#32a783\",\n \"#12b886\": \"#039267\",\n \"#38d9a9\": \"#00744b\",\n \"#96f2d7\": \"#00422b\",\n \"#e6fcf5\": \"#0a1d17\",\n \"#2f9e44\": \"#39994b\",\n \"#40c057\": \"#16842a\",\n \"#69db7c\": \"#056715\",\n \"#b2f2bb\": \"#043b0c\",\n \"#ebfbee\": \"#0f1d12\",\n \"#f08c00\": \"#b86200\",\n \"#fab005\": \"#905000\",\n \"#ffd43b\": \"#5f3a00\",\n \"#ffec99\": \"#362600\",\n \"#fff9db\": \"#1e1900\",\n \"#e8590c\": \"#f17634\",\n \"#fd7e14\": \"#cd6005\",\n \"#ffa94d\": \"#924800\",\n \"#ffd8a8\": \"#4c2b01\",\n \"#fff4e6\": \"#22190d\",\n \"#846358\": \"#a98d84\",\n \"#a18072\": \"#917569\",\n \"#d2bab0\": \"#5a463d\",\n \"#eaddd7\": \"#362b26\",\n \"#f8f1ee\": \"#221c1a\",\n \"#ffffff\": \"#121212\",\n};\n\nfunction themeColor(color: string): string {\n const lower = color.toLowerCase();\n if (lower in DARK_MODE_MAP) {\n return `var(--excalidraw-color-${lower.slice(1)}, ${color})`;\n }\n return color;\n}\n\nfunction roughOpts(el: ExcalidrawElement) {\n return {\n seed: el.seed,\n roughness: el.roughness,\n stroke: el.strokeColor === \"transparent\" ? \"none\" : themeColor(el.strokeColor),\n strokeWidth: el.strokeWidth,\n fill: el.backgroundColor === \"transparent\" ? undefined : themeColor(el.backgroundColor),\n fillStyle: mapFillStyle(el.fillStyle),\n strokeLineDash: mapStrokeStyle(el.strokeStyle, el.strokeWidth),\n };\n}\n\nfunction mapFillStyle(style: string): string {\n switch (style) {\n case \"hachure\":\n return \"hachure\";\n case \"cross-hatch\":\n return \"cross-hatch\";\n case \"solid\":\n return \"solid\";\n case \"zigzag\":\n return \"zigzag\";\n case \"dots\":\n return \"dots\";\n case \"dashed\":\n return \"dashed\";\n case \"zigzag-line\":\n return \"zigzag-line\";\n default:\n return \"hachure\";\n }\n}\n\nfunction mapStrokeStyle(style: string, width: number): number[] | undefined {\n switch (style) {\n case \"dashed\":\n return [8 * width, 4 * width];\n case \"dotted\":\n return [1.5 * width, 4 * width];\n default:\n return undefined;\n }\n}\n\nfunction renderRectangle(el: ExcalidrawElement): string {\n const opts = roughOpts(el);\n const drawable = gen.rectangle(el.x, el.y, el.width, el.height, opts);\n return drawableToSvg(drawable);\n}\n\nfunction renderEllipse(el: ExcalidrawElement): string {\n const opts = roughOpts(el);\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n const drawable = gen.ellipse(cx, cy, el.width, el.height, opts);\n return drawableToSvg(drawable);\n}\n\nfunction renderDiamond(el: ExcalidrawElement): string {\n const opts = roughOpts(el);\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n const hw = el.width / 2;\n const hh = el.height / 2;\n const points: Array<[number, number]> = [\n [cx, cy - hh],\n [cx + hw, cy],\n [cx, cy + hh],\n [cx - hw, cy],\n ];\n const drawable = gen.polygon(points, opts);\n return drawableToSvg(drawable);\n}\n\nfunction renderLinearElement(el: ExcalidrawElement): string {\n const points = el.points ?? [];\n if (points.length < 2) return \"\";\n\n const opts = {\n ...roughOpts(el),\n fill: undefined,\n fillStyle: undefined,\n };\n const absolutePoints: Array<[number, number]> = points.map(([px, py]) => [el.x + px, el.y + py]);\n\n let svg: string;\n if (points.length > 2) {\n const drawable = gen.curve(absolutePoints, opts);\n svg = drawableToSvg(drawable);\n } else {\n const drawable = gen.linearPath(absolutePoints, opts);\n svg = drawableToSvg(drawable);\n }\n\n if (el.type === \"arrow\") {\n svg += renderArrowheads(el, absolutePoints);\n }\n\n return svg;\n}\n\nfunction renderArrowheads(el: ExcalidrawElement, points: Array<[number, number]>): string {\n let svg = \"\";\n const color = el.strokeColor === \"transparent\" ? \"none\" : el.strokeColor;\n\n if (el.endArrowhead && el.endArrowhead !== \"none\" && points.length >= 2) {\n const tip = points[points.length - 1]!;\n const prev = points[points.length - 2]!;\n svg += renderArrowhead(prev, tip, color, el.strokeWidth);\n }\n\n if (el.startArrowhead && el.startArrowhead !== \"none\" && points.length >= 2) {\n const tip = points[0]!;\n const prev = points[1]!;\n svg += renderArrowhead(prev, tip, color, el.strokeWidth);\n }\n\n return svg;\n}\n\nfunction renderArrowhead(\n from: [number, number],\n to: [number, number],\n color: string,\n strokeWidth: number,\n): string {\n const angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n const headLen = 10 + strokeWidth * 2;\n const headAngle = Math.PI / 6;\n\n const x1 = to[0] - headLen * Math.cos(angle - headAngle);\n const y1 = to[1] - headLen * Math.sin(angle - headAngle);\n const x2 = to[0] - headLen * Math.cos(angle + headAngle);\n const y2 = to[1] - headLen * Math.sin(angle + headAngle);\n\n return `<path d=\"M${x1.toFixed(2)} ${y1.toFixed(2)} L${to[0].toFixed(2)} ${to[1].toFixed(2)} L${x2.toFixed(2)} ${y2.toFixed(2)}\" fill=\"none\" stroke=\"${escapeAttr(color)}\" stroke-width=\"${strokeWidth}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`;\n}\n\nfunction renderText(el: ExcalidrawElement): string {\n if (!el.text) return \"\";\n\n const fontFamily = FONT_FAMILIES[el.fontFamily ?? 1] ?? \"Virgil, Segoe UI Emoji, sans-serif\";\n const fontSize = el.fontSize ?? 20;\n const textAnchor = mapTextAlign(el.textAlign);\n const color =\n el.strokeColor === \"transparent\" ? \"var(--excalidraw-fg, #000000)\" : themeColor(el.strokeColor);\n\n const lines = el.text.split(\"\\n\");\n const lineHeight = fontSize * 1.25;\n const totalHeight = lines.length * lineHeight;\n\n let startY = el.y;\n if (el.verticalAlign === \"middle\") {\n startY = el.y + (el.height - totalHeight) / 2;\n } else if (el.verticalAlign === \"bottom\") {\n startY = el.y + el.height - totalHeight;\n }\n\n let textX = el.x;\n if (el.textAlign === \"center\") {\n textX = el.x + el.width / 2;\n } else if (el.textAlign === \"right\") {\n textX = el.x + el.width;\n }\n\n const tspans = lines\n .map((line, i) => {\n const y = startY + fontSize + i * lineHeight;\n return `<tspan x=\"${textX.toFixed(2)}\" y=\"${y.toFixed(2)}\">${escapeXml(line)}</tspan>`;\n })\n .join(\"\");\n\n return `<text font-family=\"${escapeAttr(fontFamily)}\" font-size=\"${fontSize}\" fill=\"${escapeAttr(color)}\" text-anchor=\"${textAnchor}\" dominant-baseline=\"auto\">${tspans}</text>`;\n}\n\nfunction mapTextAlign(align?: string): string {\n switch (align) {\n case \"center\":\n return \"middle\";\n case \"right\":\n return \"end\";\n default:\n return \"start\";\n }\n}\n\nfunction renderFreedraw(el: ExcalidrawElement): string {\n const points = el.points ?? [];\n if (points.length < 2) return \"\";\n\n const absolutePoints = points.map(\n ([px, py]) => [el.x + px, el.y + py, 0.5] as [number, number, number],\n );\n\n const strokePoints = getStroke(absolutePoints, {\n size: el.strokeWidth * 4.5,\n thinning: 0.6,\n smoothing: 0.5,\n streamline: 0.5,\n simulatePressure: (el.simulatePressure as boolean) ?? true,\n });\n\n if (strokePoints.length < 2) return \"\";\n\n const d = getSvgPathFromStroke(strokePoints);\n const color =\n el.strokeColor === \"transparent\" ? \"var(--excalidraw-fg, #000000)\" : themeColor(el.strokeColor);\n\n return `<path d=\"${d}\" fill=\"${escapeAttr(color)}\" stroke=\"none\" />`;\n}\n\nfunction getSvgPathFromStroke(points: number[][]): string {\n if (points.length < 2) return \"\";\n\n const first = points[0]!;\n let d = `M${first[0]!.toFixed(2)} ${first[1]!.toFixed(2)}`;\n\n for (let i = 1; i < points.length - 1; i++) {\n const curr = points[i]!;\n const next = points[i + 1]!;\n const mx = (curr[0]! + next[0]!) / 2;\n const my = (curr[1]! + next[1]!) / 2;\n d += ` Q${curr[0]!.toFixed(2)} ${curr[1]!.toFixed(2)} ${mx.toFixed(2)} ${my.toFixed(2)}`;\n }\n\n d += \" Z\";\n return d;\n}\n\nfunction renderImage(el: ExcalidrawElement, data: ExcalidrawData, ctx?: RenderContext): string {\n if (!el.fileId) return \"\";\n\n const file = data.files[el.fileId];\n if (file?.dataURL) {\n return `<image x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" href=\"${escapeAttr(file.dataURL)}\" preserveAspectRatio=\"xMidYMid meet\" />`;\n }\n\n const resolvedUrl = ctx?.resolvedImages?.[el.fileId];\n if (resolvedUrl) {\n return `<image x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" href=\"${escapeAttr(resolvedUrl)}\" preserveAspectRatio=\"xMidYMid meet\" />`;\n }\n\n return \"\";\n}\n\nfunction renderFrame(el: ExcalidrawElement): string {\n return `<rect x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" fill=\"none\" stroke=\"#aaaaaa\" stroke-width=\"1\" stroke-dasharray=\"5 5\" />`;\n}\n\nfunction renderEmbeddable(el: ExcalidrawElement): string {\n return `<rect x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" fill=\"var(--excalidraw-bg, #f8f9fa)\" stroke=\"var(--excalidraw-color-ced4da, #dee2e6)\" stroke-width=\"2\" rx=\"8\" ry=\"8\" data-embed-id=\"${el.id}\" />`;\n}\n\nfunction drawableToSvg(drawable: ReturnType<typeof gen.rectangle>): string {\n const paths: string[] = [];\n\n for (const set of drawable.sets) {\n const d = opsToPath(set.ops);\n if (!d) continue;\n\n if (set.type === \"path\") {\n paths.push(\n `<path d=\"${d}\" stroke=\"${escapeAttr(drawable.options.stroke ?? \"none\")}\" stroke-width=\"${drawable.options.strokeWidth ?? 1}\" fill=\"none\"${strokeDashAttr(drawable.options.strokeLineDash)} />`,\n );\n } else if (set.type === \"fillPath\") {\n paths.push(\n `<path d=\"${d}\" fill=\"${escapeAttr(drawable.options.fill ?? \"none\")}\" stroke=\"none\" />`,\n );\n } else if (set.type === \"fillSketch\") {\n paths.push(\n `<path d=\"${d}\" stroke=\"${escapeAttr(drawable.options.fill ?? \"none\")}\" stroke-width=\"${(drawable.options.fillWeight ?? drawable.options.strokeWidth ?? 1) * 0.5}\" fill=\"none\" />`,\n );\n }\n }\n\n return paths.join(\"\\n\");\n}\n\nfunction strokeDashAttr(dash: number[] | undefined): string {\n if (!dash || dash.length === 0) return \"\";\n return ` stroke-dasharray=\"${dash.join(\" \")}\"`;\n}\n\nfunction opsToPath(ops: Array<{ op: string; data: number[] }>): string {\n let d = \"\";\n for (const item of ops) {\n const p = item.data;\n switch (item.op) {\n case \"move\":\n d += `M${p[0]!.toFixed(2)} ${p[1]!.toFixed(2)} `;\n break;\n case \"lineTo\":\n d += `L${p[0]!.toFixed(2)} ${p[1]!.toFixed(2)} `;\n break;\n case \"bcurveTo\":\n d += `C${p[0]!.toFixed(2)} ${p[1]!.toFixed(2)},${p[2]!.toFixed(2)} ${p[3]!.toFixed(2)},${p[4]!.toFixed(2)} ${p[5]!.toFixed(2)} `;\n break;\n }\n }\n return d.trim();\n}\n\nfunction computeBoundingBox(elements: ExcalidrawElement[]): BBox {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const el of elements) {\n const corners = getElementCorners(el);\n for (const [cx, cy] of corners) {\n if (cx < minX) minX = cx;\n if (cy < minY) minY = cy;\n if (cx > maxX) maxX = cx;\n if (cy > maxY) maxY = cy;\n }\n }\n\n if (!isFinite(minX)) {\n return { minX: 0, minY: 0, maxX: 100, maxY: 100, width: 100, height: 100 };\n }\n\n return { minX, minY, maxX, maxY, width: maxX - minX, height: maxY - minY };\n}\n\nfunction getElementCorners(el: ExcalidrawElement): Array<[number, number]> {\n if ((el.type === \"line\" || el.type === \"arrow\" || el.type === \"freedraw\") && el.points) {\n return el.points.map(([px, py]) => [el.x + px, el.y + py]);\n }\n\n const corners: Array<[number, number]> = [\n [el.x, el.y],\n [el.x + el.width, el.y],\n [el.x + el.width, el.y + el.height],\n [el.x, el.y + el.height],\n ];\n\n if (el.angle && el.angle !== 0) {\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n return corners.map(([x, y]) => rotatePoint(x, y, cx, cy, el.angle));\n }\n\n return corners;\n}\n\nfunction rotatePoint(\n x: number,\n y: number,\n cx: number,\n cy: number,\n angle: number,\n): [number, number] {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const dx = x - cx;\n const dy = y - cy;\n return [cx + dx * cos - dy * sin, cy + dx * sin + dy * cos];\n}\n\nfunction getFontDefs(): string {\n return `<style>\n@font-face {\n font-family: \"Virgil\";\n src: url(\"https://unpkg.com/@excalidraw/excalidraw@0.17.0/dist/prod/Virgil-Regular-hO16.woff2\") format(\"woff2\");\n}\n</style>`;\n}\n\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n}\n\nfunction escapeAttr(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n}\n",".excalidraw-page {\n position: relative;\n width: 100%;\n height: 100%;\n max-width: none;\n margin: 0;\n overflow: hidden;\n user-select: none;\n background-color: var(--light);\n}\n\n.excalidraw-container {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n touch-action: none;\n background-color: var(--light);\n}\n.excalidraw-container:active {\n cursor: grabbing;\n}\n.excalidraw-container svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: 0 0;\n}\n\n:root {\n --excalidraw-fg: #1e1e1e;\n --excalidraw-bg: #ffffff;\n --excalidraw-color-1e1e1e: #1e1e1e;\n --excalidraw-color-000000: #000000;\n --excalidraw-color-ffffff: #ffffff;\n --excalidraw-color-343a40: #343a40;\n --excalidraw-color-868e96: #868e96;\n --excalidraw-color-ced4da: #ced4da;\n --excalidraw-color-e9ecef: #e9ecef;\n --excalidraw-color-f8f9fa: #f8f9fa;\n --excalidraw-color-e03131: #e03131;\n --excalidraw-color-fa5252: #fa5252;\n --excalidraw-color-ff8787: #ff8787;\n --excalidraw-color-ffc9c9: #ffc9c9;\n --excalidraw-color-fff5f5: #fff5f5;\n --excalidraw-color-c2255c: #c2255c;\n --excalidraw-color-e64980: #e64980;\n --excalidraw-color-f783ac: #f783ac;\n --excalidraw-color-fcc2d7: #fcc2d7;\n --excalidraw-color-fff0f6: #fff0f6;\n --excalidraw-color-9c36b5: #9c36b5;\n --excalidraw-color-be4bdb: #be4bdb;\n --excalidraw-color-da77f2: #da77f2;\n --excalidraw-color-eebefa: #eebefa;\n --excalidraw-color-f8f0fc: #f8f0fc;\n --excalidraw-color-6741d9: #6741d9;\n --excalidraw-color-7950f2: #7950f2;\n --excalidraw-color-9775fa: #9775fa;\n --excalidraw-color-d0bfff: #d0bfff;\n --excalidraw-color-f3f0ff: #f3f0ff;\n --excalidraw-color-1971c2: #1971c2;\n --excalidraw-color-228be6: #228be6;\n --excalidraw-color-4dabf7: #4dabf7;\n --excalidraw-color-a5d8ff: #a5d8ff;\n --excalidraw-color-e7f5ff: #e7f5ff;\n --excalidraw-color-0c8599: #0c8599;\n --excalidraw-color-15aabf: #15aabf;\n --excalidraw-color-3bc9db: #3bc9db;\n --excalidraw-color-99e9f2: #99e9f2;\n --excalidraw-color-e3fafc: #e3fafc;\n --excalidraw-color-099268: #099268;\n --excalidraw-color-12b886: #12b886;\n --excalidraw-color-38d9a9: #38d9a9;\n --excalidraw-color-96f2d7: #96f2d7;\n --excalidraw-color-e6fcf5: #e6fcf5;\n --excalidraw-color-2f9e44: #2f9e44;\n --excalidraw-color-40c057: #40c057;\n --excalidraw-color-69db7c: #69db7c;\n --excalidraw-color-b2f2bb: #b2f2bb;\n --excalidraw-color-ebfbee: #ebfbee;\n --excalidraw-color-f08c00: #f08c00;\n --excalidraw-color-fab005: #fab005;\n --excalidraw-color-ffd43b: #ffd43b;\n --excalidraw-color-ffec99: #ffec99;\n --excalidraw-color-fff9db: #fff9db;\n --excalidraw-color-e8590c: #e8590c;\n --excalidraw-color-fd7e14: #fd7e14;\n --excalidraw-color-ffa94d: #ffa94d;\n --excalidraw-color-ffd8a8: #ffd8a8;\n --excalidraw-color-fff4e6: #fff4e6;\n --excalidraw-color-846358: #846358;\n --excalidraw-color-a18072: #a18072;\n --excalidraw-color-d2bab0: #d2bab0;\n --excalidraw-color-eaddd7: #eaddd7;\n --excalidraw-color-f8f1ee: #f8f1ee;\n}\n\n:root[saved-theme=dark] {\n --excalidraw-fg: #d3d3d3;\n --excalidraw-bg: #121212;\n --excalidraw-color-1e1e1e: #d3d3d3;\n --excalidraw-color-000000: #ededed;\n --excalidraw-color-ffffff: #121212;\n --excalidraw-color-343a40: #b7bcc1;\n --excalidraw-color-868e96: #6e757c;\n --excalidraw-color-ced4da: #33383d;\n --excalidraw-color-e9ecef: #202325;\n --excalidraw-color-f8f9fa: #161718;\n --excalidraw-color-e03131: #ff8383;\n --excalidraw-color-fa5252: #fa6969;\n --excalidraw-color-ff8787: #b44d4d;\n --excalidraw-color-ffc9c9: #5a2c2c;\n --excalidraw-color-fff5f5: #1f1717;\n --excalidraw-color-c2255c: #ff8dbc;\n --excalidraw-color-e64980: #f56e9d;\n --excalidraw-color-f783ac: #b04d70;\n --excalidraw-color-fcc2d7: #602e40;\n --excalidraw-color-fff0f6: #26191e;\n --excalidraw-color-9c36b5: #e28af8;\n --excalidraw-color-be4bdb: #d471ed;\n --excalidraw-color-da77f2: #a954be;\n --excalidraw-color-eebefa: #5b3165;\n --excalidraw-color-f8f0fc: #211a25;\n --excalidraw-color-6741d9: #b595ff;\n --excalidraw-color-7950f2: #a885ff;\n --excalidraw-color-9775fa: #8a6cdf;\n --excalidraw-color-d0bfff: #4a3b72;\n --excalidraw-color-f3f0ff: #1f1c29;\n --excalidraw-color-1971c2: #56a2e8;\n --excalidraw-color-228be6: #3791e0;\n --excalidraw-color-4dabf7: #2273b4;\n --excalidraw-color-a5d8ff: #154162;\n --excalidraw-color-e7f5ff: #121e26;\n --excalidraw-color-0c8599: #3da5b6;\n --excalidraw-color-15aabf: #0f8fa1;\n --excalidraw-color-3bc9db: #007281;\n --excalidraw-color-99e9f2: #004149;\n --excalidraw-color-e3fafc: #0a1e20;\n --excalidraw-color-099268: #32a783;\n --excalidraw-color-12b886: #039267;\n --excalidraw-color-38d9a9: #00744b;\n --excalidraw-color-96f2d7: #00422b;\n --excalidraw-color-e6fcf5: #0a1d17;\n --excalidraw-color-2f9e44: #39994b;\n --excalidraw-color-40c057: #16842a;\n --excalidraw-color-69db7c: #056715;\n --excalidraw-color-b2f2bb: #043b0c;\n --excalidraw-color-ebfbee: #0f1d12;\n --excalidraw-color-f08c00: #b86200;\n --excalidraw-color-fab005: #905000;\n --excalidraw-color-ffd43b: #5f3a00;\n --excalidraw-color-ffec99: #362600;\n --excalidraw-color-fff9db: #1e1900;\n --excalidraw-color-e8590c: #f17634;\n --excalidraw-color-fd7e14: #cd6005;\n --excalidraw-color-ffa94d: #924800;\n --excalidraw-color-ffd8a8: #4c2b01;\n --excalidraw-color-fff4e6: #22190d;\n --excalidraw-color-846358: #a98d84;\n --excalidraw-color-a18072: #917569;\n --excalidraw-color-d2bab0: #5a463d;\n --excalidraw-color-eaddd7: #362b26;\n --excalidraw-color-f8f1ee: #221c1a;\n}\n\n.excalidraw-controls {\n position: fixed;\n bottom: 1rem;\n right: 1rem;\n z-index: 10;\n display: flex;\n flex-direction: row;\n gap: 0.25rem;\n}\n.excalidraw-controls button {\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--lightgray);\n border-radius: 6px;\n background: var(--light);\n color: var(--darkgray);\n font-size: 1.2rem;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.1s ease;\n}\n.excalidraw-controls button:hover {\n background: var(--lightgray);\n}\n\n.page[data-frame=excalidraw] {\n --excalidraw-sidebar-width: 300px;\n}\n\n.page[data-frame=excalidraw] .excalidraw-frame {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n padding-left: 0;\n transition: padding-left 0.2s ease;\n}\n\n.page[data-frame=excalidraw] .excalidraw-stage {\n width: 100%;\n height: 100%;\n}\n\n.page[data-frame=excalidraw] .excalidraw-sidebar {\n position: fixed;\n top: 0;\n height: 100vh;\n width: var(--excalidraw-sidebar-width);\n box-sizing: border-box;\n background: var(--light);\n border-right: 1px solid var(--lightgray);\n box-shadow: 8px 0 24px rgba(0, 0, 0, 0.12);\n overflow-y: hidden;\n left: calc(-1 * var(--excalidraw-sidebar-width));\n transition: left 0.25s ease;\n z-index: 20;\n}\n\n.page[data-frame=excalidraw] .excalidraw-sidebar-toggle {\n position: fixed;\n top: 12px;\n left: 12px;\n width: 32px;\n height: 32px;\n border: 1px solid var(--lightgray);\n border-radius: 6px;\n background: var(--light);\n color: var(--darkgray);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 30;\n transition: background 0.1s ease, left 0.25s ease;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar-toggle:hover {\n background: var(--lightgray);\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar-toggle svg {\n pointer-events: none;\n}\n\n.page[data-frame=excalidraw] .excalidraw-sidebar-icon-close {\n display: none;\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-frame {\n padding-left: var(--excalidraw-sidebar-width);\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar {\n left: 0;\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-toggle {\n left: calc(var(--excalidraw-sidebar-width) + 12px);\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-icon-open {\n display: none;\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-icon-close {\n display: block;\n}\n\n@media (max-width: 800px) {\n .page[data-frame=excalidraw] {\n --excalidraw-sidebar-width: calc(100vw - 56px);\n }\n .page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-frame {\n padding-left: 0;\n }\n .page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-toggle {\n left: calc(var(--excalidraw-sidebar-width) + 12px);\n }\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .spacer {\n display: none;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer button.desktop-explorer,\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer button.mobile-explorer {\n display: none !important;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer {\n order: initial;\n overflow-y: hidden;\n overflow: hidden;\n flex: 1 1 0;\n min-height: 0;\n flex-shrink: initial;\n align-self: initial;\n margin-top: 0;\n margin-bottom: 0;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer .explorer-content,\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer.collapsed > .explorer-content,\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer:not(.collapsed) > .explorer-content {\n position: static;\n width: auto;\n max-width: none;\n height: 100%;\n max-height: 100%;\n transform: none !important;\n visibility: visible !important;\n padding: 0;\n overflow-y: auto;\n z-index: auto;\n background-color: transparent;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer-content > .explorer-ul {\n overscroll-behavior: auto;\n}\n\n.excalidraw-overlays {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.excalidraw-overlay {\n position: absolute;\n display: none;\n flex-direction: column;\n pointer-events: auto;\n cursor: default;\n user-select: text;\n}\n\n.excalidraw-embed-note,\n.excalidraw-embed-url {\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: 8px;\n border: 2px solid var(--lightgray);\n display: flex;\n flex-direction: column;\n background: var(--light);\n box-sizing: border-box;\n}\n\n.excalidraw-embed-header {\n padding: 8px 12px;\n border-bottom: 1px solid var(--lightgray);\n font-size: 13px;\n font-family: var(--bodyFont, sans-serif);\n color: var(--darkgray);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-shrink: 0;\n}\n.excalidraw-embed-header a {\n color: var(--darkgray);\n text-decoration: none;\n}\n\n.excalidraw-embed-content {\n flex: 1;\n overflow: auto;\n padding: 8px 12px;\n font-family: var(--bodyFont, sans-serif);\n font-size: 12px;\n line-height: 1.5;\n color: var(--darkgray);\n background: var(--light);\n}\n\n.excalidraw-embed-open-link {\n display: block;\n padding: 4px 0;\n color: var(--secondary);\n font-size: 12px;\n text-decoration: none;\n font-family: var(--bodyFont, sans-serif);\n}\n\n.excalidraw-embed-body {\n font-size: 12px;\n line-height: 1.5;\n color: var(--dark);\n}\n.excalidraw-embed-body h1 {\n font-size: 1.6em;\n margin: 0.5em 0 0.25em;\n}\n.excalidraw-embed-body h2 {\n font-size: 1.4em;\n margin: 0.5em 0 0.25em;\n}\n.excalidraw-embed-body h3 {\n font-size: 1.2em;\n margin: 0.4em 0 0.2em;\n}\n.excalidraw-embed-body h4 {\n font-size: 1.1em;\n margin: 0.4em 0 0.2em;\n}\n.excalidraw-embed-body h5 {\n font-size: 1.05em;\n margin: 0.3em 0 0.15em;\n}\n.excalidraw-embed-body h6 {\n font-size: 1em;\n margin: 0.3em 0 0.15em;\n}\n.excalidraw-embed-body h1[id] > a[href^=\"#\"],\n.excalidraw-embed-body h2[id] > a[href^=\"#\"],\n.excalidraw-embed-body h3[id] > a[href^=\"#\"],\n.excalidraw-embed-body h4[id] > a[href^=\"#\"],\n.excalidraw-embed-body h5[id] > a[href^=\"#\"],\n.excalidraw-embed-body h6[id] > a[href^=\"#\"] {\n display: none;\n}\n\n.excalidraw-embed-missing {\n color: var(--gray);\n font-size: 12px;\n}\n\n.excalidraw-embed-iframe {\n flex: 1;\n width: 100%;\n border: none;\n}\n\n.transclude .excalidraw-page {\n height: auto;\n}\n.transclude .excalidraw-container {\n height: auto;\n min-height: 400px;\n}\n.transclude .excalidraw-controls {\n position: absolute;\n}\n\n.popover-inner .excalidraw-page {\n height: auto;\n}\n.popover-inner .excalidraw-container {\n height: auto;\n min-height: 200px;\n max-height: 300px;\n}\n.popover-inner .excalidraw-controls {\n display: none;\n}","function B(){let n=document.querySelector(\".page[data-frame='excalidraw']\");if(n){N(n),q(n);return}let t=document.querySelectorAll(\".excalidraw-page\");for(let v of t)q(v)}function N(n){let t=n.querySelector(\".excalidraw-sidebar-toggle\");t&&(t.addEventListener(\"click\",()=>{n.classList.toggle(\"excalidraw-sidebar-open\")}),window.addCleanup(()=>{n.classList.remove(\"excalidraw-sidebar-open\")}))}function q(n){let t=n.querySelector(\".excalidraw-container\");if(!t)return;let v=t.querySelector(\"svg\");if(!v)return;t.style.backgroundColor=\"var(--excalidraw-bg, var(--light))\";var h=n.querySelector(\".excalidraw-overlays\");let a=1,u=0,d=0,c=!1,m=0,M=0;function O(){if(h){var e=h.querySelectorAll(\".excalidraw-overlay\");if(e.length!==0){var o=parseFloat(h.getAttribute(\"data-offset-x\"))||0,l=parseFloat(h.getAttribute(\"data-offset-y\"))||0,r=v.getScreenCTM(),g=t.getBoundingClientRect();if(r)for(var p=0;p<e.length;p++){var i=e[p],A=parseFloat(i.getAttribute(\"data-x\"))||0,Y=parseFloat(i.getAttribute(\"data-y\"))||0,T=parseFloat(i.getAttribute(\"data-w\"))||0,P=parseFloat(i.getAttribute(\"data-h\"))||0,C=A+o,F=Y+l,k=C*r.a+r.e-g.left,z=F*r.d+r.f-g.top,D=T*r.a,I=P*r.d;i.style.left=k+\"px\",i.style.top=z+\"px\",i.style.width=D+\"px\",i.style.height=I+\"px\",i.style.display=\"flex\"}}}}O();function s(){v.style.transform=\"translate(\"+u+\"px, \"+d+\"px) scale(\"+a+\")\",O()}function y(e){e.preventDefault();var o=e.deltaY>0?-.15:.15;a=Math.max(.1,Math.min(5,a+o)),s()}function E(e){e.button===0&&(c=!0,m=e.clientX-u,M=e.clientY-d,t.style.cursor=\"grabbing\")}function w(e){c&&(u=e.clientX-m,d=e.clientY-M,s())}function x(){c=!1,t.style.cursor=\"grab\"}var L=n.querySelector(\".excalidraw-zoom-in\"),S=n.querySelector(\".excalidraw-zoom-out\"),b=n.querySelector(\".excalidraw-reset\");L&&L.addEventListener(\"click\",function(){a=Math.min(5,a+.15),s()}),S&&S.addEventListener(\"click\",function(){a=Math.max(.1,a-.15),s()}),b&&b.addEventListener(\"click\",function(){a=1,u=0,d=0,s()});var f=0;function X(e){if(e.touches.length===1)c=!0,m=e.touches[0].clientX-u,M=e.touches[0].clientY-d;else if(e.touches.length===2){c=!1;var o=e.touches[0].clientX-e.touches[1].clientX,l=e.touches[0].clientY-e.touches[1].clientY;f=Math.sqrt(o*o+l*l)}}function Z(e){if(e.preventDefault(),e.touches.length===1&&c)u=e.touches[0].clientX-m,d=e.touches[0].clientY-M,s();else if(e.touches.length===2&&f>0){var o=e.touches[0].clientX-e.touches[1].clientX,l=e.touches[0].clientY-e.touches[1].clientY,r=Math.sqrt(o*o+l*l),g=r/f;a=Math.max(.1,Math.min(5,a*g)),f=r,s()}}function _(){c=!1,f=0}t.addEventListener(\"wheel\",y,{passive:!1}),t.addEventListener(\"mousedown\",E),document.addEventListener(\"mousemove\",w),document.addEventListener(\"mouseup\",x),t.addEventListener(\"touchstart\",X,{passive:!0}),t.addEventListener(\"touchmove\",Z,{passive:!1}),t.addEventListener(\"touchend\",_),window.addCleanup(function(){t.removeEventListener(\"wheel\",y),t.removeEventListener(\"mousedown\",E),document.removeEventListener(\"mousemove\",w),document.removeEventListener(\"mouseup\",x),t.removeEventListener(\"touchstart\",X),t.removeEventListener(\"touchmove\",Z),t.removeEventListener(\"touchend\",_)})}document.addEventListener(\"nav\",B);\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n QuartzPluginData,\n FullSlug,\n FilePath,\n} from \"@quartz-community/types\";\nimport {\n resolveRelative,\n slugifyFilePath,\n normalizeHastElement,\n} from \"@quartz-community/utils/path\";\nimport { toHtml } from \"hast-util-to-html\";\nimport type { ExcalidrawData, ExcalidrawPageOptions } from \"../types\";\nimport { renderToSvg } from \"../renderer\";\nimport type { ResolvedEmbed, RenderContext, EmbedOverlay } from \"../renderer\";\nimport style from \"./styles/excalidraw.scss\";\n// @ts-expect-error inline script import handled by bundler\nimport script from \"./scripts/excalidraw.inline.ts\";\n\nfunction stripTranscludes(html: string): string {\n return html\n .replace(/<blockquote[^>]*class=\"[^\"]*transclude[^\"]*\"[^>]*>[\\s\\S]*?<\\/blockquote>/gi, \"\")\n .replace(/<div[^>]*class=\"[^\"]*transclude[^\"]*\"[^>]*>[\\s\\S]*?<\\/div>/gi, \"\");\n}\n\nfunction resolveEmbeds(\n data: ExcalidrawData,\n currentSlug: FullSlug,\n allFiles: QuartzPluginData[],\n): Record<string, ResolvedEmbed> {\n const result: Record<string, ResolvedEmbed> = {};\n const embeddables = data.elements.filter(\n (el) => el.type === \"embeddable\" || el.type === \"iframe\",\n );\n\n for (const el of embeddables) {\n const link = (el.link as string) ?? \"\";\n if (!link.startsWith(\"[[\")) continue;\n\n const target = link.replace(/^\\[\\[/, \"\").replace(/\\]\\]$/, \"\");\n const targetLower = target.toLowerCase();\n\n const page = allFiles.find((f) => {\n if (!f.slug) return false;\n if (f.slug === targetLower) return true;\n const lastSegment = f.slug.split(\"/\").pop();\n return lastSegment === targetLower;\n });\n\n const pageSlug = (page?.slug ?? slugifyFilePath(target as FilePath)) as FullSlug;\n const href = resolveRelative(currentSlug, pageSlug);\n\n if (!page || !page.htmlAst) {\n result[el.id] = {\n html: `<a href=\"${href}\" style=\"color:#228be6;text-decoration:none;font-size:13px;\">${target}</a>`,\n href,\n };\n continue;\n }\n\n const tree = page.htmlAst;\n const rebased = {\n ...tree,\n children: tree.children.map((child: unknown) => {\n if ((child as { type: string }).type === \"element\") {\n return normalizeHastElement(\n child as Parameters<typeof normalizeHastElement>[0],\n currentSlug,\n pageSlug,\n );\n }\n return child;\n }),\n };\n\n let html = toHtml(rebased as Parameters<typeof toHtml>[0], { allowDangerousHtml: true });\n html = stripTranscludes(html);\n result[el.id] = { html, href };\n }\n\n return result;\n}\n\nfunction resolveImages(\n imagePaths: Record<string, string>,\n currentSlug: FullSlug,\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const [hash, filePath] of Object.entries(imagePaths)) {\n const imageSlug = slugifyFilePath(filePath as FilePath) as FullSlug;\n result[hash] = resolveRelative(currentSlug, imageSlug);\n }\n\n return result;\n}\n\nfunction renderOverlay(overlay: EmbedOverlay): unknown {\n const label = overlay.link\n .replace(/^\\[\\[/, \"\")\n .replace(/\\]\\]$/, \"\")\n .replace(/^https?:\\/\\//, \"\");\n const truncatedLabel = label.length > 50 ? label.slice(0, 47) + \"...\" : label;\n\n if (overlay.isWikilink) {\n const noteContent = overlay.resolved\n ? `<a href=\"${overlay.resolved.href}\" class=\"excalidraw-embed-open-link\">Open note →</a><div class=\"excalidraw-embed-body\">${overlay.resolved.html}</div>`\n : `<span class=\"excalidraw-embed-missing\">Note not found</span>`;\n\n return (\n <div\n class=\"excalidraw-overlay excalidraw-embed-note\"\n data-overlay-id={overlay.id}\n data-x={overlay.x}\n data-y={overlay.y}\n data-w={overlay.width}\n data-h={overlay.height}\n >\n <div class=\"excalidraw-embed-header\">{\"📄 \" + truncatedLabel}</div>\n <div class=\"excalidraw-embed-content\" dangerouslySetInnerHTML={{ __html: noteContent }} />\n </div>\n );\n }\n\n return (\n <div\n class=\"excalidraw-overlay excalidraw-embed-url\"\n data-overlay-id={overlay.id}\n data-x={overlay.x}\n data-y={overlay.y}\n data-w={overlay.width}\n data-h={overlay.height}\n >\n <div class=\"excalidraw-embed-header\">\n <a href={overlay.link} target=\"_blank\" rel=\"noopener noreferrer\">\n {\"🔗 \" + truncatedLabel}\n </a>\n </div>\n <iframe\n src={overlay.link}\n class=\"excalidraw-embed-iframe\"\n sandbox=\"allow-scripts allow-same-origin allow-popups\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer\"\n />\n </div>\n );\n}\n\nexport default ((userOpts?: ExcalidrawPageOptions) => {\n const Component: QuartzComponent = (props: QuartzComponentProps) => {\n const { fileData, allFiles } = props;\n const data = fileData.excalidrawData as ExcalidrawData;\n const options = (fileData.excalidrawOptions as ExcalidrawPageOptions) ?? userOpts ?? {};\n const currentSlug = fileData.slug!;\n\n const resolvedEmbedMap = allFiles ? resolveEmbeds(data, currentSlug, allFiles) : undefined;\n const imagePaths = (fileData.excalidrawImagePaths as Record<string, string>) ?? {};\n const resolvedImageMap = resolveImages(imagePaths, currentSlug);\n const renderCtx: RenderContext = {\n resolvedEmbeds: resolvedEmbedMap,\n resolvedImages: resolvedImageMap,\n };\n const result = renderToSvg(data, options, renderCtx);\n\n return (\n <article\n class=\"excalidraw-page\"\n role=\"img\"\n aria-label={fileData.frontmatter?.title ?? \"Excalidraw drawing\"}\n >\n <div class=\"excalidraw-controls\">\n <button class=\"excalidraw-zoom-in\" type=\"button\" aria-label=\"Zoom in\">\n +\n </button>\n <button class=\"excalidraw-zoom-out\" type=\"button\" aria-label=\"Zoom out\">\n −\n </button>\n <button class=\"excalidraw-reset\" type=\"button\" aria-label=\"Reset view\">\n ⟲\n </button>\n </div>\n <div class=\"excalidraw-container\" dangerouslySetInnerHTML={{ __html: result.svg }} />\n <div\n class=\"excalidraw-overlays\"\n data-viewbox-w={result.viewBox.width}\n data-viewbox-h={result.viewBox.height}\n data-offset-x={result.viewBox.offsetX}\n data-offset-y={result.viewBox.offsetY}\n >\n {result.overlays.map((o) => renderOverlay(o))}\n </div>\n {options.enableInteraction !== false && (\n <script\n type=\"application/json\"\n class=\"excalidraw-data\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify({\n elements: data.elements,\n appState: data.appState,\n files: data.files,\n }),\n }}\n />\n )}\n </article>\n );\n };\n\n Component.css = style;\n Component.afterDOMLoaded = script;\n\n return Component;\n}) satisfies QuartzComponentConstructor;\n","import type {\n QuartzPageTypePlugin,\n PageMatcher,\n FullSlug,\n VirtualPage,\n ProcessedContent,\n BuildCtx,\n} from \"@quartz-community/types\";\nimport { slugifyFilePath } from \"@quartz-community/utils/path\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { parseExcalidraw } from \"./parser\";\nimport ExcalidrawBody from \"./components/ExcalidrawBody\";\nimport type { ExcalidrawPageOptions } from \"./types\";\n\nconst excalidrawMatcher: PageMatcher = ({ fileData }) => {\n return \"excalidrawData\" in fileData;\n};\n\nexport const ExcalidrawPage: QuartzPageTypePlugin<ExcalidrawPageOptions> = (opts) => ({\n name: \"ExcalidrawPage\",\n priority: 25,\n fileExtensions: [\".excalidraw.md\", \".excalidraw\"],\n match: excalidrawMatcher,\n\n generate({ ctx }) {\n const excalidrawFiles = ctx.allFiles.filter(\n (fp: string) => fp.endsWith(\".excalidraw.md\") || fp.endsWith(\".excalidraw\"),\n );\n\n const imageFiles = ctx.allFiles.filter((fp: string) =>\n /\\.(png|jpe?g|gif|svg|webp|avif|bmp|ico)$/i.test(fp),\n );\n\n const virtualPages: VirtualPage[] = [];\n\n for (const filePath of excalidrawFiles) {\n const fullPath = join(ctx.argv.directory, filePath);\n let content: string;\n try {\n content = readFileSync(fullPath, \"utf-8\");\n } catch {\n continue;\n }\n\n const data = parseExcalidraw(content, filePath);\n if (!data) continue;\n\n const resolvedImagePaths: Record<string, string> = {};\n if (data.embeddedFiles) {\n for (const [hash, wikilink] of Object.entries(data.embeddedFiles)) {\n if (data.files[hash]?.dataURL) continue;\n const targetName = wikilink.split(\"/\").pop()?.toLowerCase() ?? \"\";\n const match = imageFiles.find((fp: string) => {\n const fpName = fp.split(\"/\").pop()?.toLowerCase() ?? \"\";\n return fpName === targetName;\n });\n if (match) {\n resolvedImagePaths[hash] = match;\n }\n }\n }\n\n const baseName =\n filePath\n .replace(/\\.excalidraw\\.md$/, \"\")\n .replace(/\\.excalidraw$/, \"\")\n .split(\"/\")\n .pop() ?? \"Excalidraw Drawing\";\n const slug = slugifyFilePath(filePath as Parameters<typeof slugifyFilePath>[0]) as FullSlug;\n\n virtualPages.push({\n slug,\n title: baseName,\n data: {\n frontmatter: { title: baseName, tags: [\"excalidraw\"] },\n excalidrawData: data,\n excalidrawOptions: opts,\n excalidrawImagePaths: resolvedImagePaths,\n },\n });\n }\n\n return virtualPages;\n },\n\n shouldPublish(_ctx: BuildCtx, content: ProcessedContent) {\n const relativePath = content[1].data.relativePath ?? \"\";\n if (relativePath.endsWith(\".excalidraw.md\") || relativePath.endsWith(\".excalidraw\")) {\n return false;\n }\n return true;\n },\n\n layout: \"excalidraw\",\n frame: \"excalidraw\",\n body: ExcalidrawBody,\n});\n","import type { PageFrame, PageFrameProps } from \"@quartz-community/types\";\nimport type { ComponentChildren } from \"preact\";\n\nexport const ExcalidrawFrame: PageFrame = {\n name: \"excalidraw\",\n css: `\n.page[data-frame=\"excalidraw\"] {\n max-width: none;\n margin: 0;\n min-height: 100vh;\n}\n\n.page[data-frame=\"excalidraw\"] > #quartz-body {\n grid-template-columns: auto;\n grid-template-rows: 1fr;\n grid-template-areas:\n \"grid-center\";\n height: 100vh;\n padding: 0;\n}\n\n.page[data-frame=\"excalidraw\"] > #quartz-body > .center.excalidraw-frame {\n max-width: 100%;\n min-width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.page[data-frame=\"excalidraw\"] > #quartz-body.lock-scroll > * {\n transform: none;\n}\n`,\n render({ componentData, pageBody: Content, left }: PageFrameProps): unknown {\n const renderSlot = (Component: (props: typeof componentData) => unknown): ComponentChildren =>\n Component(componentData) as ComponentChildren;\n return (\n <div class=\"center excalidraw-frame\">\n <button class=\"excalidraw-sidebar-toggle\" type=\"button\" aria-label=\"Toggle sidebar\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"excalidraw-sidebar-icon-open\"\n >\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"excalidraw-sidebar-icon-close\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n <aside class=\"excalidraw-sidebar\">\n {left.map((BodyComponent) => renderSlot(BodyComponent))}\n </aside>\n <div class=\"excalidraw-stage\">{renderSlot(Content)}</div>\n </div>\n );\n },\n};\n"]}
1
+ {"version":3,"sources":["../node_modules/lz-string/libs/lz-string.js","../node_modules/@quartz-community/utils/src/path.ts","../src/parser.ts","../node_modules/html-void-elements/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/zwitch/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/index.js","../node_modules/roughjs/bundled/rough.esm.js","../node_modules/perfect-freehand/src/constants.ts","../node_modules/perfect-freehand/src/getStrokeRadius.ts","../node_modules/perfect-freehand/src/simulatePressure.ts","../node_modules/perfect-freehand/src/vec.ts","../node_modules/perfect-freehand/src/getStrokeOutlinePoints.ts","../node_modules/perfect-freehand/src/getStrokePoints.ts","../node_modules/perfect-freehand/src/getStroke.ts","../src/renderer.ts","../src/components/styles/excalidraw.scss","../src/components/scripts/excalidraw.inline.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../src/components/ExcalidrawBody.tsx","../src/pageType.ts","../src/frames/ExcalidrawFrame.tsx"],"names":["LZString","f","i","a","c","w","s","slug","x","_","afterFence","fenceEnd","d","key","html","svg","own","one","all","_2","_3","stringify","increment","siblings","body","tbody","head","child","y","emptyChildren","t","e","n","o","h","r","l","u","p","g","M","k","b","m","P","v","S","O","L","T","D","A","C","E","j","N","re","F","I","R","z","B","V","H","U","W","G","K","q","J","Y","X","Z","Q","$","x2","y2","dash","options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","isStaticChildren","__source","__self","ref","normalizedProps","__k","__b","__v","__i","__u","defaultProps"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i<alphabet.length ; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64 : function (input) {\n if (input == null) return \"\";\n var res = LZString._compress(input, 6, function(a){return keyStrBase64.charAt(a);});\n switch (res.length % 4) { // To produce valid Base64\n default: // When could this happen ?\n case 0 : return res;\n case 1 : return res+\"===\";\n case 2 : return res+\"==\";\n case 3 : return res+\"=\";\n }\n },\n\n decompressFromBase64 : function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n },\n\n compressToUTF16 : function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 15, function(a){return f(a+32);}) + \" \";\n },\n\n decompressFromUTF16: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 16384, function(index) { return compressed.charCodeAt(index) - 32; });\n },\n\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function (uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf=new Uint8Array(compressed.length*2); // 2 bytes per character\n\n for (var i=0, TotalLen=compressed.length; i<TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i*2] = current_value >>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i<TotalLen; i++) {\n buf[i]=compressed[i*2]*256+compressed[i*2+1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n\n }\n\n },\n\n\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 6, function(a){return keyStrUriSafe.charAt(a);});\n },\n\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent:function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n input = input.replace(/ /g, \"+\");\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n },\n\n compress: function (uncompressed) {\n return LZString._compress(uncompressed, 16, function(a){return f(a);});\n },\n _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return \"\";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c=\"\",\n context_wc=\"\",\n context_w=\"\",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data=[],\n context_data_val=0,\n context_data_position=0,\n ii;\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position ==bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","import GithubSlugger, { slug as githubSlug } from \"github-slugger\";\nimport type { Element as HastElement } from \"hast\";\nimport type { FilePath, FullSlug } from \"@quartz-community/types\";\n\nexport type { FilePath, FullSlug };\n\n/** No '/index' ending, no file extension, can have trailing slash for folders. */\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\n/** Starts with './' or '../', used for navigation. */\nexport type RelativeURL = string & { _brand: \"RelativeURL\" };\n\nexport interface TransformOptions {\n strategy: \"absolute\" | \"relative\" | \"shortest\";\n allSlugs: FullSlug[];\n}\n\nexport function isFilePath(s: string): s is FilePath {\n const validStart = !s.startsWith(\".\");\n return validStart && _hasFileExtension(s);\n}\n\nexport function isFullSlug(s: string): s is FullSlug {\n const validStart = !(s.startsWith(\".\") || s.startsWith(\"/\"));\n const validEnding = !s.endsWith(\"/\");\n return validStart && validEnding && !_containsForbiddenCharacters(s);\n}\n\nexport function isSimpleSlug(s: string): s is SimpleSlug {\n const validStart = !(s.startsWith(\".\") || (s.length > 1 && s.startsWith(\"/\")));\n const validEnding = !endsWith(s, \"index\");\n return validStart && !_containsForbiddenCharacters(s) && validEnding && !_hasFileExtension(s);\n}\n\nexport function isRelativeURL(s: string): s is RelativeURL {\n const validStart = /^\\.{1,2}/.test(s);\n const validEnding = !endsWith(s, \"index\");\n return validStart && validEnding && ![\".md\", \".html\"].includes(getFileExtension(s) ?? \"\");\n}\n\nexport function isAbsoluteURL(s: string): boolean {\n try {\n new URL(s);\n } catch {\n return false;\n }\n return true;\n}\n\nexport function simplifySlug(fp: FullSlug | string): SimpleSlug {\n const res = stripSlashes(trimSuffix(fp, \"index\"), true);\n return (res.length === 0 ? \"/\" : res) as SimpleSlug;\n}\n\nexport function getFullSlug(window: Window): FullSlug {\n const res = window.document.body.dataset.slug! as FullSlug;\n return res;\n}\n\nexport function getFullSlugFromUrl(): FullSlug {\n let rawSlug = decodeURI(window.location.pathname);\n if (rawSlug.endsWith(\"/\")) rawSlug = rawSlug.slice(0, -1);\n if (rawSlug.startsWith(\"/\")) rawSlug = rawSlug.slice(1);\n return rawSlug as FullSlug;\n}\n\nexport function slugifyFilePath(fp: FilePath, excludeExt?: boolean): FullSlug {\n fp = stripSlashes(fp) as FilePath;\n const ext = getFileExtension(fp);\n const withoutFileExt = fp.replace(new RegExp(ext + \"$\"), \"\");\n const finalExt = excludeExt || [\".md\", \".html\", undefined].includes(ext) ? \"\" : ext;\n\n let slug = _sluggify(withoutFileExt);\n\n if (endsWith(slug, \"_index\")) {\n slug = slug.replace(/_index$/, \"index\");\n }\n\n // Obsidian \"Folder Notes\" convention (insideFolder storage): a file named the\n // same as its parent folder is treated as the folder's landing page. Rewrite\n // `folder/folder` → `folder/index` so every downstream consumer (trie, link\n // resolver, simplifySlug, isFolderPath) sees the canonical Quartz slug shape\n // and Just Works. A top-level single-segment slug is NOT rewritten — that\n // represents Obsidian's `parentFolder` storage mode, which Quartz already\n // routes as a regular top-level page.\n const segments = slug.split(\"/\");\n if (segments.length >= 2 && segments[segments.length - 1] === segments[segments.length - 2]) {\n segments[segments.length - 1] = \"index\";\n slug = segments.join(\"/\");\n }\n\n return (slug + (finalExt ?? \"\")) as FullSlug;\n}\n\nexport function joinSegments(...args: string[]): string {\n if (args.length === 0) {\n return \"\";\n }\n\n let joined = args\n .filter((segment) => segment !== \"\" && segment !== \"/\")\n .map((segment) => stripSlashes(segment))\n .join(\"/\");\n\n const first = args[0];\n const last = args[args.length - 1];\n\n if (first?.startsWith(\"/\")) {\n joined = \"/\" + joined;\n }\n\n if (last?.endsWith(\"/\")) {\n joined = joined + \"/\";\n }\n\n return joined;\n}\n\nexport function resolvePath(to: string): string {\n if (to.startsWith(\"/\")) return to;\n return \"/\" + to;\n}\n\n/** Read the base path injected at build time via `data-basepath` on `<body>`.\n * Returns `\"\"` for root deployments, e.g. `\"/repository\"` for subdirectory. */\nexport function getBasePath(): string {\n if (typeof document === \"undefined\") return \"\";\n return document.body?.dataset?.basepath ?? \"\";\n}\n\n/** Resolve a slug to an absolute URL path, prepending the site's base path.\n * e.g. `resolveBasePath(\"features/Callouts\")` → `\"/repository/features/Callouts\"` */\nexport function resolveBasePath(to: string, basePath?: string): string {\n const base = basePath ?? getBasePath();\n const slug = to.startsWith(\"/\") ? to : \"/\" + to;\n return base + slug;\n}\n\nexport function endsWith(s: string, suffix: string): boolean {\n return s === suffix || s.endsWith(\"/\" + suffix);\n}\n\nexport function trimSuffix(s: string, suffix: string): string {\n if (endsWith(s, suffix)) {\n s = s.slice(0, -suffix.length);\n }\n return s;\n}\n\nexport function stripSlashes(s: string, onlyStripPrefix?: boolean): string {\n if (s.startsWith(\"/\")) {\n s = s.substring(1);\n }\n\n if (!onlyStripPrefix && s.endsWith(\"/\")) {\n s = s.slice(0, -1);\n }\n\n return s;\n}\n\nexport function getFileExtension(s: string): string | undefined {\n return s.match(/\\.[A-Za-z0-9]+$/)?.[0];\n}\n\nexport function isFolderPath(fplike: string): boolean {\n return (\n fplike.endsWith(\"/\") ||\n endsWith(fplike, \"index\") ||\n endsWith(fplike, \"index.md\") ||\n endsWith(fplike, \"index.html\")\n );\n}\n\nexport function getAllSegmentPrefixes(path: string): string[] {\n const segments = path.split(\"/\");\n const results: string[] = [];\n for (let i = 0; i < segments.length; i++) {\n results.push(segments.slice(0, i + 1).join(\"/\"));\n }\n return results;\n}\n\nexport function pathToRoot(slug: FullSlug): RelativeURL {\n let rootPath = slug\n .split(\"/\")\n .filter((x) => x !== \"\")\n .slice(0, -1)\n .map((_) => \"..\")\n .join(\"/\");\n\n if (rootPath.length === 0) {\n rootPath = \".\";\n }\n\n return rootPath as RelativeURL;\n}\n\nexport function resolveRelative(current: FullSlug, target: FullSlug | SimpleSlug): RelativeURL {\n const res = joinSegments(pathToRoot(current), simplifySlug(target as FullSlug)) as RelativeURL;\n return res;\n}\n\n/**\n * The slug of a heading's text: the `id` Quartz gives a heading, and the\n * anchor every link or table-of-contents entry to that heading must use.\n *\n * Same rule as GitHub and `rehype-slug` (`github-slugger`): lowercase,\n * punctuation removed, each space replaced by `-`. Non-Latin letters and\n * digits are kept, e.g. `\"监听 127.0.0.1(推荐)\"` → `\"监听-127001推荐\"`.\n *\n * Use {@link HeadingSlugger} when slugging every heading on a page, so that\n * repeated headings get unique ids (`foo`, `foo-1`, …).\n */\nexport function slugHeading(text: string): string {\n return githubSlug(text);\n}\n\n/**\n * Slugs the headings of one page in document order with {@link slugHeading},\n * numbering repeats the way GitHub and `rehype-slug` do (`foo`, `foo-1`,\n * `foo-2`). Create one per page, or call `reset()` between pages.\n */\nexport class HeadingSlugger {\n private readonly slugger = new GithubSlugger();\n\n /** Slug `text`, unique among the slugs this instance has returned. */\n slug(text: string): string {\n return this.slugger.slug(text);\n }\n\n reset(): void {\n this.slugger.reset();\n }\n}\n\n/**\n * The anchor Obsidian writes when it links to a heading with this text.\n *\n * Obsidian anchors cannot hold `:`, `|`, `^`, `#` or `\\`, so Obsidian replaces\n * each with a space and collapses the spaces: `\"Colon:unspaced\"` →\n * `\"Colon unspaced\"`. Slugging this with {@link slugHeading} gives the anchor\n * a link written in Obsidian resolves to; when it differs from the heading's\n * `id`, heading producers can add it as an alias id.\n */\nexport function obsidianHeadingAnchor(text: string): string {\n return text\n .replace(/[:|^#\\\\]/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\n/**\n * Point a same-page anchor link (`href` starting with `#`, as written) at an\n * `id` on the page. `ids` holds every `id` on the page.\n *\n * - An anchor that already names an id (as written or percent-decoded) is\n * returned unchanged.\n * - `#^name` (an Obsidian block reference) points at the id `name`.\n * - Otherwise, when the anchor is a heading's text, it points at the\n * heading's id: the anchor slugged with {@link slugHeading}, e.g.\n * `#监听 127.0.0.1(推荐)` → `#监听-127001推荐`.\n * - An anchor that names no id either way is returned unchanged, so a link to\n * an id added later (raw HTML, another plugin) keeps working.\n */\nexport function resolveAnchorHref(href: string, ids: ReadonlySet<string>): string {\n if (!href.startsWith(\"#\") || href.length === 1) return href;\n const raw = href.slice(1);\n let decoded = raw;\n try {\n decoded = decodeURIComponent(raw);\n } catch {\n // keep the anchor as written\n }\n if (ids.has(raw) || ids.has(decoded)) return href;\n const bare = decoded.startsWith(\"^\") ? decoded.slice(1) : decoded;\n if (ids.has(bare)) return \"#\" + bare;\n const slugged = slugHeading(bare);\n return ids.has(slugged) ? \"#\" + slugged : href;\n}\n\nexport function splitAnchor(link: string): [string, string] {\n const [fp, anchor] = link.split(\"#\", 2);\n if (fp!.endsWith(\".pdf\")) {\n return [fp!, anchor === undefined ? \"\" : `#${anchor}`];\n }\n if (anchor === undefined) {\n return [fp!, \"\"];\n }\n const bare = anchor.startsWith(\"^\") ? anchor.slice(1) : anchor;\n const slugged = \"#\" + slugHeading(bare);\n return [fp!, slugged];\n}\n\nexport function slugTag(tag: string): string {\n return tag\n .split(\"/\")\n .map((tagSegment) => _sluggify(tagSegment))\n .join(\"/\");\n}\n\nexport function transformInternalLink(link: string): RelativeURL {\n const [fplike, anchor] = splitAnchor(decodeURI(link));\n\n const segments = fplike.split(\"/\").filter((x) => x.length > 0);\n const prefix = segments.filter(_isRelativeSegment).join(\"/\");\n const fp = segments.filter((seg) => !_isRelativeSegment(seg) && seg !== \"\").join(\"/\");\n\n const slugged = slugifyFilePath(fp as FilePath);\n const simpleSlug = simplifySlug(slugged);\n const folderPath = isFolderPath(fplike) || isFolderPath(slugged);\n const joined = joinSegments(stripSlashes(prefix), stripSlashes(simpleSlug));\n const trail = folderPath ? \"/\" : \"\";\n const res = (_addRelativeToStart(joined) + trail + anchor) as RelativeURL;\n return res;\n}\n\nexport function transformLink(src: FullSlug, target: string, opts: TransformOptions): RelativeURL {\n const targetSlug = transformInternalLink(target);\n\n if (opts.strategy === \"relative\") {\n return _resolveRelativeFolderNote(src, target) ?? (targetSlug as RelativeURL);\n } else {\n // When src is a folder page (e.g. \"Compendium/Spells\" backed by index.md),\n // the browser serves it at \"/Compendium/Spells/\" with a trailing slash.\n // pathToRoot needs the \"/index\" suffix to compute the correct depth.\n const effectiveSrc =\n !endsWith(src, \"index\") && opts.allSlugs.includes(`${src}/index` as FullSlug)\n ? (`${src}/index` as FullSlug)\n : src;\n\n const folderTail = isFolderPath(targetSlug) ? \"/\" : \"\";\n const canonicalSlug = stripSlashes(targetSlug.slice(\".\".length));\n const [targetCanonical, targetAnchor] = splitAnchor(canonicalSlug);\n\n if (opts.strategy === \"shortest\") {\n const isMultiSegment = targetCanonical.includes(\"/\");\n const isFolderTarget = isFolderPath(targetSlug);\n let matchingFileNames = opts.allSlugs.filter((slug) => {\n if (isMultiSegment) {\n // Multi-segment partial path: match by suffix\n if (slug === targetCanonical || slug.endsWith(\"/\" + targetCanonical)) {\n return true;\n }\n // Folder targets have \"/index\" stripped — also match the \"/index\" variant\n if (isFolderTarget) {\n const withIndex = targetCanonical + \"/index\";\n return slug === withIndex || slug.endsWith(\"/\" + withIndex);\n }\n return false;\n }\n const parts = slug.split(\"/\");\n const fileName = parts.at(-1);\n return targetCanonical === fileName;\n });\n\n // Folder note Foo/Foo.md slugs to Foo/index, so its last segment never matches [[Foo]]\n // Retry by folder name, only when no real file claims it\n if (matchingFileNames.length === 0 && !isMultiSegment) {\n matchingFileNames = opts.allSlugs.filter((slug) => {\n const parts = slug.split(\"/\");\n return parts.at(-1) === \"index\" && parts.at(-2) === targetCanonical;\n });\n }\n\n if (matchingFileNames.length === 1) {\n const matchedSlug = matchingFileNames[0]!;\n return (resolveRelative(effectiveSrc, matchedSlug) + targetAnchor) as RelativeURL;\n }\n }\n\n return (joinSegments(pathToRoot(effectiveSrc), canonicalSlug) + folderTail) as RelativeURL;\n }\n}\n\n/**\n * A relative link can name a folder note (`topic/Topic.md`, slugged\n * `topic/index`) without spelling out its folder, e.g. `./Topic.md` written\n * inside `topic/`. `slugifyFilePath` only sees the segments the link spells\n * out, so apply the folder-note rule to the target as resolved against the\n * source's folder, and return the link with its file name replaced by\n * `index`. Returns `undefined` when the target is not such a folder note.\n * @internal\n */\nfunction _resolveRelativeFolderNote(src: FullSlug, target: string): RelativeURL | undefined {\n let decoded: string;\n try {\n decoded = decodeURI(target);\n } catch {\n return undefined;\n }\n const hashIdx = decoded.indexOf(\"#\");\n const fplike = hashIdx === -1 ? decoded : decoded.slice(0, hashIdx);\n const rest = hashIdx === -1 ? \"\" : decoded.slice(hashIdx);\n if (fplike === \"\" || fplike.endsWith(\"/\") || fplike.startsWith(\"/\")) return undefined;\n\n const ext = getFileExtension(fplike);\n if (![\".md\", \".html\", undefined].includes(ext)) return undefined;\n\n const segments = fplike.split(\"/\");\n const fileName = segments[segments.length - 1]!;\n const fileSlug = slugifyPath(ext ? fileName.slice(0, -ext.length) : fileName);\n if (fileSlug === \"index\") return undefined;\n\n // Resolve the link's folder against the source's folder (both as slugs)\n const resolved = src.split(\"/\").slice(0, -1);\n for (const seg of segments.slice(0, -1)) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") {\n if (resolved.length === 0) return undefined;\n resolved.pop();\n } else {\n resolved.push(slugifyPath(seg));\n }\n }\n\n if (resolved.length === 0 || resolved[resolved.length - 1] !== fileSlug) return undefined;\n\n segments[segments.length - 1] = \"index\" + (ext ?? \"\");\n return transformInternalLink(encodeURI(segments.join(\"/\") + rest));\n}\n\n/**\n * Slugify a file path for use as an href.\n * Replaces whitespace→hyphens, &→-and-, %→-percent, removes ? and #, and\n * lowercases the result so that link matching is case-insensitive (matching\n * Obsidian's link-resolution semantics). Operates per segment so directory\n * separators are preserved.\n */\nexport function slugifyPath(s: string): string {\n return s\n .split(\"/\")\n .map((segment) =>\n segment\n .replace(/\\s/g, \"-\")\n .replace(/&/g, \"-and-\")\n .replace(/%/g, \"-percent\")\n .replace(/\\?/g, \"\")\n .replace(/#/g, \"\")\n .replace(/[<>:\"|*]/g, \"\")\n .toLowerCase(),\n )\n .join(\"/\")\n .replace(/\\/$/, \"\");\n}\n\n/**\n * Re-base the relative `href` and `src` attributes of a HAST element so that\n * links inside content originally resolved relative to `newBase` remain valid\n * when the element is embedded at a page with slug `curBase`.\n *\n * Used for transclusions and cross-slug HAST embedding (Quartz core's\n * `renderPage` transclude expansion, canvas-page's embedded file-nodes, and\n * any plugin that takes `vfile.data.htmlAst` from one page and renders it\n * inside another). Absolute URLs pass through unchanged.\n *\n * The element (and its children) are deep-cloned via `structuredClone`, so\n * the original HAST tree is never mutated.\n */\nexport function normalizeHastElement<T extends HastElement>(\n rawEl: T,\n curBase: FullSlug,\n newBase: FullSlug,\n): T {\n const el = structuredClone(rawEl);\n _rebaseHastElement(el, \"src\", curBase, newBase);\n _rebaseHastElement(el, \"href\", curBase, newBase);\n if (el.children) {\n el.children = el.children.map((child) =>\n child.type === \"element\"\n ? (normalizeHastElement(child as HastElement, curBase, newBase) as typeof child)\n : child,\n );\n }\n return el;\n}\n\n/** @internal */\nfunction _rebaseHastElement(\n el: HastElement,\n attr: \"href\" | \"src\",\n curBase: FullSlug,\n newBase: FullSlug,\n): void {\n const value = el.properties?.[attr];\n if (value === undefined || value === null) return;\n const href = String(value);\n if (!isRelativeURL(href)) return;\n el.properties![attr] = joinSegments(resolveRelative(curBase, newBase), \"..\", href);\n}\n\n/** @internal */\nfunction _sluggify(s: string): string {\n return slugifyPath(s);\n}\n\nfunction _containsForbiddenCharacters(s: string): boolean {\n return s.includes(\" \") || s.includes(\"#\") || s.includes(\"?\") || s.includes(\"&\");\n}\n\nfunction _hasFileExtension(s: string): boolean {\n return getFileExtension(s) !== undefined;\n}\n\nfunction _isRelativeSegment(s: string): boolean {\n return /^\\.{0,2}$/.test(s);\n}\n\nfunction _addRelativeToStart(s: string): string {\n if (s === \"\") {\n s = \".\";\n }\n\n if (!s.startsWith(\".\")) {\n s = joinSegments(\".\", s);\n }\n\n return s;\n}\n","import LZString from \"lz-string\";\nimport type { ExcalidrawData } from \"./types\";\n\nconst DEFAULT_APP_STATE = {\n viewBackgroundColor: \"#ffffff\",\n exportBackground: true,\n exportWithDarkMode: false,\n};\n\nexport function parseExcalidraw(content: string, filePath: string): ExcalidrawData | null {\n if (filePath.endsWith(\".excalidraw.md\")) {\n return parseExcalidrawMd(content);\n }\n if (filePath.endsWith(\".excalidraw\")) {\n return parseExcalidrawJson(content);\n }\n return null;\n}\n\nexport function parseExcalidrawJson(content: string): ExcalidrawData | null {\n try {\n const data = JSON.parse(content);\n if (data.type !== \"excalidraw\") return null;\n return normalizeData(data);\n } catch {\n return null;\n }\n}\n\nexport function parseExcalidrawMd(content: string): ExcalidrawData | null {\n const json = extractJsonFromMd(content);\n if (!json) return null;\n\n let data: ExcalidrawData;\n try {\n data = JSON.parse(json);\n } catch {\n return null;\n }\n\n if (data.type !== \"excalidraw\") return null;\n\n const embeddedFiles = parseEmbeddedFilesSection(content);\n const normalized = normalizeData(data);\n if (!normalized) return null;\n\n if (Object.keys(embeddedFiles).length > 0) {\n normalized.embeddedFiles = embeddedFiles;\n }\n\n return normalized;\n}\n\nfunction extractJsonFromMd(content: string): string | null {\n // Find the drawing section between %% delimiters\n const drawingMarkerIdx = content.indexOf(\"# Drawing\");\n if (drawingMarkerIdx === -1) {\n // Fallback: try to find %% delimiters directly\n return extractBetweenPercentDelimiters(content);\n }\n\n const afterMarker = content.slice(drawingMarkerIdx);\n return extractBetweenPercentDelimiters(afterMarker) ?? extractFromCodeFence(afterMarker);\n}\n\nfunction extractBetweenPercentDelimiters(content: string): string | null {\n const firstPct = content.indexOf(\"%%\");\n if (firstPct === -1) return null;\n\n const afterFirst = content.indexOf(\"%%\", firstPct);\n const contentAfterFirstPct = content.slice(afterFirst + 2);\n const secondPct = contentAfterFirstPct.indexOf(\"%%\");\n if (secondPct === -1) return null;\n\n const block = contentAfterFirstPct.slice(0, secondPct).trim();\n return extractFromCodeFence(block) ?? extractRawJson(block);\n}\n\nfunction extractFromCodeFence(block: string): string | null {\n const compressedFenceStart = block.indexOf(\"```compressed-json\");\n if (compressedFenceStart !== -1) {\n const afterFence = block.slice(compressedFenceStart + \"```compressed-json\".length);\n const fenceEnd = afterFence.indexOf(\"```\");\n if (fenceEnd === -1) return null;\n const compressedContent = afterFence.slice(afterFence.indexOf(\"\\n\") + 1, fenceEnd);\n const cleaned = compressedContent.replace(/[\\n\\r]/g, \"\");\n const decompressed = LZString.decompressFromBase64(cleaned);\n return decompressed ?? null;\n }\n\n const fenceStart = block.indexOf(\"```json\");\n if (fenceStart === -1) {\n const altFenceStart = block.indexOf(\"```\");\n if (altFenceStart === -1) return null;\n const afterFence = block.slice(altFenceStart + 3);\n const fenceEnd = afterFence.indexOf(\"```\");\n if (fenceEnd === -1) return null;\n return afterFence.slice(afterFence.indexOf(\"\\n\") + 1, fenceEnd).trim();\n }\n\n const afterFence = block.slice(fenceStart + 7);\n const fenceEnd = afterFence.indexOf(\"```\");\n if (fenceEnd === -1) return null;\n return afterFence.slice(afterFence.indexOf(\"\\n\") + 1, fenceEnd).trim();\n}\n\nfunction extractRawJson(block: string): string | null {\n // Try to find raw JSON object after \"# Drawing\" heading\n const lines = block.split(\"\\n\");\n const jsonStart = lines.findIndex((line) => line.trimStart().startsWith(\"{\"));\n if (jsonStart === -1) return null;\n\n // Collect everything from the opening brace to the end\n const jsonContent = lines.slice(jsonStart).join(\"\\n\").trim();\n // Validate it looks like JSON\n if (jsonContent.startsWith(\"{\") && jsonContent.endsWith(\"}\")) {\n return jsonContent;\n }\n return null;\n}\n\nfunction parseEmbeddedFilesSection(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n const sectionMatch = content.match(/^##?\\s+Embedded\\s+[Ff]iles\\s*$/im);\n if (!sectionMatch) return result;\n const sectionIdx = sectionMatch.index!;\n\n const afterSection = content.slice(sectionIdx + sectionMatch[0].length);\n const endIdx = afterSection.indexOf(\"%%\");\n const section = endIdx === -1 ? afterSection : afterSection.slice(0, endIdx);\n\n const pattern = /^([a-f0-9]+):\\s+\\[\\[(.+?)\\]\\]\\s*$/gm;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(section)) !== null) {\n result[match[1]!] = match[2]!;\n }\n\n return result;\n}\n\nfunction normalizeData(data: unknown): ExcalidrawData | null {\n const d = data as Record<string, unknown>;\n if (typeof d !== \"object\" || d === null) return null;\n\n const elements = Array.isArray(d.elements)\n ? (d.elements as ExcalidrawData[\"elements\"]).filter((el) => !el.isDeleted)\n : [];\n\n const appState =\n typeof d.appState === \"object\" && d.appState !== null\n ? (d.appState as ExcalidrawData[\"appState\"])\n : {};\n\n const files =\n typeof d.files === \"object\" && d.files !== null ? (d.files as ExcalidrawData[\"files\"]) : {};\n\n return {\n type: \"excalidraw\",\n version: typeof d.version === \"number\" ? d.version : 2,\n source: typeof d.source === \"string\" ? d.source : undefined,\n elements,\n appState: { ...DEFAULT_APP_STATE, ...appState },\n files,\n };\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '­',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '‌',\n zwj: '‍',\n lrm: '‎',\n rlm: '‏',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `&#99;` vs `&#x63;` (decimal shorter)\n // * `&#100;` vs `&#x64;` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n","/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it’s a correct child.\n return next\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn’t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // “May be omitted if the element is empty,\n // or if the first thing inside the head element is an element.”\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n","/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don’t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can’t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn’t accept a second argument, but it’s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don’t want unquoted, or if `value` contains character references when\n // unquoted…\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don’t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n","/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n","/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n","/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n","/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use “bogus comments” instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it’s followed by another `li`, the last because it’s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > 👉 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,␠`, where `␠` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > 👉 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n","function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n","/**\n * Constants used throughout the stroke generation algorithm.\n * @internal\n */\n\nconst { PI } = Math\n\n/**\n * Rate of change for simulated pressure.\n * Controls how quickly pressure changes based on drawing velocity.\n * Higher values make pressure more responsive to speed changes.\n */\nexport const RATE_OF_PRESSURE_CHANGE = 0.275\n\n/**\n * PI with a tiny offset to fix browser rendering artifacts.\n * Some browsers render strokes incorrectly when using exact PI.\n */\nexport const FIXED_PI = PI + 0.0001\n\n/**\n * Number of segments for rounded start caps.\n */\nexport const START_CAP_SEGMENTS = 13\n\n/**\n * Number of segments for rounded end caps.\n * Higher than start caps for smoother appearance at stroke endings.\n */\nexport const END_CAP_SEGMENTS = 29\n\n/**\n * Number of segments for sharp corner caps.\n */\nexport const CORNER_CAP_SEGMENTS = 13\n\n/**\n * Pixels to skip at the end of a stroke to reduce noise.\n */\nexport const END_NOISE_THRESHOLD = 3\n\n/**\n * Minimum interpolation factor for streamline.\n * Used when streamline is at maximum (1.0).\n */\nexport const MIN_STREAMLINE_T = 0.15\n\n/**\n * Range for interpolation factor calculation.\n * Added to MIN_STREAMLINE_T based on (1 - streamline).\n */\nexport const STREAMLINE_T_RANGE = 0.85\n\n/**\n * Minimum stroke radius to prevent invisible strokes.\n */\nexport const MIN_RADIUS = 0.01\n\n/**\n * Default pressure for the first point of a stroke.\n * Lower than subsequent points to prevent fat starts,\n * since drawn lines almost always start slow.\n */\nexport const DEFAULT_FIRST_PRESSURE = 0.25\n\n/**\n * Default pressure for subsequent points when no pressure is provided.\n */\nexport const DEFAULT_PRESSURE = 0.5\n\n/**\n * Unit offset vector used as placeholder for initial vector\n * and for creating a second point when only one point is provided.\n */\nexport const UNIT_OFFSET: [number, number] = [1, 1]\n","/**\n * Compute a radius based on the pressure.\n * @param size\n * @param thinning\n * @param pressure\n * @param easing\n * @internal\n */\nexport function getStrokeRadius(\n size: number,\n thinning: number,\n pressure: number,\n easing: (t: number) => number = (t) => t\n) {\n return size * easing(0.5 - thinning * (0.5 - pressure))\n}\n","import { RATE_OF_PRESSURE_CHANGE } from './constants'\n\nconst { min } = Math\n\n/**\n * Simulate pressure based on the distance between points and stroke size.\n * This creates a natural-looking pressure effect based on drawing velocity.\n *\n * @param prevPressure The previous pressure value\n * @param distance The distance from the previous point\n * @param size The base stroke size\n * @returns The simulated pressure value (0-1)\n * @internal\n */\nexport function simulatePressure(\n prevPressure: number,\n distance: number,\n size: number\n): number {\n // Speed of change - how fast should the pressure be changing?\n const sp = min(1, distance / size)\n // Rate of change - how much of a change is there?\n const rp = min(1, 1 - sp)\n // Accelerate the pressure\n return min(\n 1,\n prevPressure + (rp - prevPressure) * (sp * RATE_OF_PRESSURE_CHANGE)\n )\n}\n","import type { Vec2 } from './types'\n\n/**\n * Negate a vector.\n * @param A\n * @internal\n */\nexport function neg(A: Vec2): Vec2 {\n return [-A[0], -A[1]]\n}\n\n/**\n * Add vectors.\n * @param A\n * @param B\n * @internal\n */\nexport function add(A: Vec2, B: Vec2): Vec2 {\n return [A[0] + B[0], A[1] + B[1]]\n}\n\n/**\n * Add vectors into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @internal\n */\nexport function addInto(out: Vec2, A: Vec2, B: Vec2): Vec2 {\n out[0] = A[0] + B[0]\n out[1] = A[1] + B[1]\n return out\n}\n\n/**\n * Subtract vectors.\n * @param A\n * @param B\n * @internal\n */\nexport function sub(A: Vec2, B: Vec2): Vec2 {\n return [A[0] - B[0], A[1] - B[1]]\n}\n\n/**\n * Subtract vectors into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @internal\n */\nexport function subInto(out: Vec2, A: Vec2, B: Vec2): Vec2 {\n out[0] = A[0] - B[0]\n out[1] = A[1] - B[1]\n return out\n}\n\n/**\n * Vector multiplication by scalar\n * @param A\n * @param n\n * @internal\n */\nexport function mul(A: Vec2, n: number): Vec2 {\n return [A[0] * n, A[1] * n]\n}\n\n/**\n * Vector multiplication by scalar into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param n\n * @internal\n */\nexport function mulInto(out: Vec2, A: Vec2, n: number): Vec2 {\n out[0] = A[0] * n\n out[1] = A[1] * n\n return out\n}\n\n/**\n * Vector division by scalar.\n * @param A\n * @param n\n * @internal\n */\nexport function div(A: Vec2, n: number): Vec2 {\n return [A[0] / n, A[1] / n]\n}\n\n/**\n * Perpendicular rotation of a vector A\n * @param A\n * @internal\n */\nexport function per(A: Vec2): Vec2 {\n return [A[1], -A[0]]\n}\n\n/**\n * Perpendicular rotation into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @internal\n */\nexport function perInto(out: Vec2, A: Vec2): Vec2 {\n const temp = A[0]\n out[0] = A[1]\n out[1] = -temp\n return out\n}\n\n/**\n * Dot product\n * @param A\n * @param B\n * @internal\n */\nexport function dpr(A: Vec2, B: Vec2): number {\n return A[0] * B[0] + A[1] * B[1]\n}\n\n/**\n * Get whether two vectors are equal.\n * @param A\n * @param B\n * @internal\n */\nexport function isEqual(A: Vec2, B: Vec2): boolean {\n return A[0] === B[0] && A[1] === B[1]\n}\n\n/**\n * Length of the vector\n * @param A\n * @internal\n */\nexport function len(A: Vec2): number {\n return Math.hypot(A[0], A[1])\n}\n\n/**\n * Length of the vector squared\n * @param A\n * @internal\n */\nexport function len2(A: Vec2): number {\n return A[0] * A[0] + A[1] * A[1]\n}\n\n/**\n * Dist length from A to B squared (inlined for performance).\n * @param A\n * @param B\n * @internal\n */\nexport function dist2(A: Vec2, B: Vec2): number {\n const dx = A[0] - B[0]\n const dy = A[1] - B[1]\n return dx * dx + dy * dy\n}\n\n/**\n * Get normalized / unit vector.\n * @param A\n * @internal\n */\nexport function uni(A: Vec2): Vec2 {\n return div(A, len(A))\n}\n\n/**\n * Dist length from A to B\n * @param A\n * @param B\n * @internal\n */\nexport function dist(A: Vec2, B: Vec2): number {\n return Math.hypot(A[1] - B[1], A[0] - B[0])\n}\n\n/**\n * Mean between two vectors or mid vector between two vectors\n * @param A\n * @param B\n * @internal\n */\nexport function med(A: Vec2, B: Vec2): Vec2 {\n return mul(add(A, B), 0.5)\n}\n\n/**\n * Rotate a vector around another vector by r (radians)\n * @param A vector\n * @param C center\n * @param r rotation in radians\n * @internal\n */\nexport function rotAround(A: Vec2, C: Vec2, r: number): Vec2 {\n const s = Math.sin(r)\n const c = Math.cos(r)\n\n const px = A[0] - C[0]\n const py = A[1] - C[1]\n\n const nx = px * c - py * s\n const ny = px * s + py * c\n\n return [nx + C[0], ny + C[1]]\n}\n\n/**\n * Rotate a vector around another vector by r (radians) into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A vector\n * @param C center\n * @param r rotation in radians\n * @internal\n */\nexport function rotAroundInto(out: Vec2, A: Vec2, C: Vec2, r: number): Vec2 {\n const s = Math.sin(r)\n const c = Math.cos(r)\n\n const px = A[0] - C[0]\n const py = A[1] - C[1]\n\n const nx = px * c - py * s\n const ny = px * s + py * c\n\n out[0] = nx + C[0]\n out[1] = ny + C[1]\n return out\n}\n\n/**\n * Interpolate vector A to B with a scalar t\n * @param A\n * @param B\n * @param t scalar\n * @internal\n */\nexport function lrp(A: Vec2, B: Vec2, t: number): Vec2 {\n return add(A, mul(sub(B, A), t))\n}\n\n/**\n * Interpolate vector A to B with a scalar t into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @param t scalar\n * @internal\n */\nexport function lrpInto(out: Vec2, A: Vec2, B: Vec2, t: number): Vec2 {\n const dx = B[0] - A[0]\n const dy = B[1] - A[1]\n out[0] = A[0] + dx * t\n out[1] = A[1] + dy * t\n return out\n}\n\n/**\n * Project a point A in the direction B by a scalar c\n * @param A\n * @param B\n * @param c\n * @internal\n */\nexport function prj(A: Vec2, B: Vec2, c: number): Vec2 {\n return add(A, mul(B, c))\n}\n\n/**\n * Project a point A in the direction B by a scalar c into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @param c\n * @internal\n */\nexport function prjInto(out: Vec2, A: Vec2, B: Vec2, c: number): Vec2 {\n out[0] = A[0] + B[0] * c\n out[1] = A[1] + B[1] * c\n return out\n}\n","import {\n CORNER_CAP_SEGMENTS,\n END_CAP_SEGMENTS,\n END_NOISE_THRESHOLD,\n FIXED_PI,\n MIN_RADIUS,\n START_CAP_SEGMENTS,\n} from './constants'\nimport { getStrokeRadius } from './getStrokeRadius'\nimport { simulatePressure } from './simulatePressure'\nimport type { StrokeOptions, StrokePoint, Vec2 } from './types'\nimport {\n add,\n addInto,\n dist2,\n dpr,\n lrpInto,\n mul,\n mulInto,\n neg,\n per,\n perInto,\n prj,\n rotAround,\n rotAroundInto,\n sub,\n subInto,\n uni,\n} from './vec'\n\n// Scratch buffers for allocation-free hot loop calculations\nconst _offset: Vec2 = [0, 0]\nconst _tl: Vec2 = [0, 0]\nconst _tr: Vec2 = [0, 0]\n\n/**\n * Draw a dot (circle) for very short strokes.\n */\nfunction drawDot(center: Vec2, radius: number): Vec2[] {\n const offsetPoint = add(center, [1, 1])\n const start = prj(center, uni(per(sub(center, offsetPoint))), -radius)\n const dotPts: Vec2[] = []\n const step = 1 / START_CAP_SEGMENTS\n for (let t = step; t <= 1; t += step) {\n dotPts.push(rotAround(start, center, FIXED_PI * 2 * t))\n }\n return dotPts\n}\n\n/**\n * Draw a rounded start cap by rotating points from right to left around the start point.\n */\nfunction drawRoundStartCap(\n center: Vec2,\n rightPoint: Vec2,\n segments: number\n): Vec2[] {\n const cap: Vec2[] = []\n const step = 1 / segments\n for (let t = step; t <= 1; t += step) {\n cap.push(rotAround(rightPoint, center, FIXED_PI * t))\n }\n return cap\n}\n\n/**\n * Draw a flat start cap with squared-off edges.\n */\nfunction drawFlatStartCap(\n center: Vec2,\n leftPoint: Vec2,\n rightPoint: Vec2\n): Vec2[] {\n const cornersVector = sub(leftPoint, rightPoint)\n const offsetA = mul(cornersVector, 0.5)\n const offsetB = mul(cornersVector, 0.51)\n return [\n sub(center, offsetA),\n sub(center, offsetB),\n add(center, offsetB),\n add(center, offsetA),\n ]\n}\n\n/**\n * Draw a rounded end cap (1.5 turns to handle sharp end turns correctly).\n */\nfunction drawRoundEndCap(\n center: Vec2,\n direction: Vec2,\n radius: number,\n segments: number\n): Vec2[] {\n const cap: Vec2[] = []\n const start = prj(center, direction, radius)\n const step = 1 / segments\n for (let t = step; t < 1; t += step) {\n cap.push(rotAround(start, center, FIXED_PI * 3 * t))\n }\n return cap\n}\n\n/**\n * Draw a flat end cap with squared-off edges.\n */\nfunction drawFlatEndCap(center: Vec2, direction: Vec2, radius: number): Vec2[] {\n return [\n add(center, mul(direction, radius)),\n add(center, mul(direction, radius * 0.99)),\n sub(center, mul(direction, radius * 0.99)),\n sub(center, mul(direction, radius)),\n ]\n}\n\n/**\n * Compute the taper distance from a taper option value.\n * - false or undefined: no taper (0)\n * - true: taper the full length (max of size and totalLength)\n * - number: use that exact taper distance\n */\nfunction computeTaperDistance(\n taper: boolean | number | undefined,\n size: number,\n totalLength: number\n): number {\n if (taper === false || taper === undefined) return 0\n if (taper === true) return Math.max(size, totalLength)\n return taper\n}\n\n/**\n * Compute the initial pressure by averaging the first few points.\n * This prevents \"fat starts\" since drawn lines almost always start slow.\n */\nfunction computeInitialPressure(\n points: StrokePoint[],\n shouldSimulatePressure: boolean,\n size: number\n): number {\n return points.slice(0, 10).reduce((acc, curr) => {\n let pressure = curr.pressure\n if (shouldSimulatePressure) {\n pressure = simulatePressure(acc, curr.distance, size)\n }\n return (acc + pressure) / 2\n }, points[0].pressure)\n}\n\n/**\n * ## getStrokeOutlinePoints\n * @description Get an array of points (as `[x, y]`) representing the outline of a stroke.\n * @param points An array of StrokePoints as returned from `getStrokePoints`.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\nexport function getStrokeOutlinePoints(\n points: StrokePoint[],\n options: Partial<StrokeOptions> = {} as Partial<StrokeOptions>\n): Vec2[] {\n const {\n size = 16,\n smoothing = 0.5,\n thinning = 0.5,\n simulatePressure: shouldSimulatePressure = true,\n easing = (t) => t,\n start = {},\n end = {},\n last: isComplete = false,\n } = options\n\n const { cap: capStart = true, easing: taperStartEase = (t) => t * (2 - t) } =\n start\n\n const { cap: capEnd = true, easing: taperEndEase = (t) => --t * t * t + 1 } =\n end\n\n // We can't do anything with an empty array or a stroke with negative size.\n if (points.length === 0 || size <= 0) {\n return []\n }\n\n // The total length of the line\n const totalLength = points[points.length - 1].runningLength\n\n const taperStart = computeTaperDistance(start.taper, size, totalLength)\n const taperEnd = computeTaperDistance(end.taper, size, totalLength)\n\n // The minimum allowed distance between points (squared)\n const minDistance = Math.pow(size * smoothing, 2)\n\n // Our collected left and right points\n const leftPts: Vec2[] = []\n const rightPts: Vec2[] = []\n\n // Previous pressure (averaged from first few points to prevent fat starts)\n let prevPressure = computeInitialPressure(\n points,\n shouldSimulatePressure,\n size\n )\n\n // The current radius\n let radius = getStrokeRadius(\n size,\n thinning,\n points[points.length - 1].pressure,\n easing\n )\n\n // The radius of the first saved point\n let firstRadius: number | undefined = undefined\n\n // Previous vector\n let prevVector = points[0].vector\n\n // Previous left and right points\n let prevLeftPoint = points[0].point\n let prevRightPoint = prevLeftPoint\n\n // Temporary left and right points\n let tempLeftPoint: Vec2 = prevLeftPoint\n let tempRightPoint: Vec2 = prevRightPoint\n\n // Keep track of whether the previous point is a sharp corner\n // ... so that we don't detect the same corner twice\n let isPrevPointSharpCorner = false\n\n /*\n Find the outline's left and right points\n\n Iterating through the points and populate the rightPts and leftPts arrays,\n skipping the first and last pointsm, which will get caps later on.\n */\n\n for (let i = 0; i < points.length; i++) {\n let { pressure } = points[i]\n const { point, vector, distance, runningLength } = points[i]\n const isLastPoint = i === points.length - 1\n\n // Removes noise from the end of the line\n if (!isLastPoint && totalLength - runningLength < END_NOISE_THRESHOLD) {\n continue\n }\n\n /*\n Calculate the radius\n\n If not thinning, the current point's radius will be half the size; or\n otherwise, the size will be based on the current (real or simulated)\n pressure.\n */\n\n if (thinning) {\n if (shouldSimulatePressure) {\n // If we're simulating pressure, then do so based on the distance\n // between the current point and the previous point, and the size\n // of the stroke. Otherwise, use the input pressure.\n pressure = simulatePressure(prevPressure, distance, size)\n }\n\n radius = getStrokeRadius(size, thinning, pressure, easing)\n } else {\n radius = size / 2\n }\n\n if (firstRadius === undefined) {\n firstRadius = radius\n }\n\n /*\n Apply tapering\n\n If the current length is within the taper distance at either the\n start or the end, calculate the taper strengths. Apply the smaller\n of the two taper strengths to the radius.\n */\n\n const taperStartStrength =\n runningLength < taperStart\n ? taperStartEase(runningLength / taperStart)\n : 1\n\n const taperEndStrength =\n totalLength - runningLength < taperEnd\n ? taperEndEase((totalLength - runningLength) / taperEnd)\n : 1\n\n radius = Math.max(\n MIN_RADIUS,\n radius * Math.min(taperStartStrength, taperEndStrength)\n )\n\n /* Add points to left and right */\n\n /*\n Handle sharp corners\n\n Find the difference (dot product) between the current and next vector.\n If the next vector is at more than a right angle to the current vector,\n draw a cap at the current point.\n */\n\n const nextVector = (!isLastPoint ? points[i + 1] : points[i]).vector\n const nextDpr = !isLastPoint ? dpr(vector, nextVector) : 1.0\n const prevDpr = dpr(vector, prevVector)\n\n const isPointSharpCorner = prevDpr < 0 && !isPrevPointSharpCorner\n const isNextPointSharpCorner = nextDpr !== null && nextDpr < 0\n\n if (isPointSharpCorner || isNextPointSharpCorner) {\n // It's a sharp corner. Draw a rounded cap and move on to the next point\n // Considering saving these and drawing them later? So that we can avoid\n // crossing future points.\n\n // Use mutable operations for the offset calculation\n perInto(_offset, prevVector)\n mulInto(_offset, _offset, radius)\n\n const step = 1 / CORNER_CAP_SEGMENTS\n for (let t = 0; t <= 1; t += step) {\n // Calculate left point: rotate (point - offset) around point\n subInto(_tl, point, _offset)\n rotAroundInto(_tl, _tl, point, FIXED_PI * t)\n tempLeftPoint = [_tl[0], _tl[1]]\n leftPts.push(tempLeftPoint)\n\n // Calculate right point: rotate (point + offset) around point\n addInto(_tr, point, _offset)\n rotAroundInto(_tr, _tr, point, FIXED_PI * -t)\n tempRightPoint = [_tr[0], _tr[1]]\n rightPts.push(tempRightPoint)\n }\n\n prevLeftPoint = tempLeftPoint\n prevRightPoint = tempRightPoint\n\n if (isNextPointSharpCorner) {\n isPrevPointSharpCorner = true\n }\n continue\n }\n\n isPrevPointSharpCorner = false\n\n // Handle the last point\n if (isLastPoint) {\n perInto(_offset, vector)\n mulInto(_offset, _offset, radius)\n leftPts.push(sub(point, _offset))\n rightPts.push(add(point, _offset))\n continue\n }\n\n /*\n Add regular points\n\n Project points to either side of the current point, using the\n calculated size as a distance. If a point's distance to the\n previous point on that side greater than the minimum distance\n (or if the corner is kinda sharp), add the points to the side's\n points array.\n */\n\n // Use mutable operations for offset calculation\n lrpInto(_offset, nextVector, vector, nextDpr)\n perInto(_offset, _offset)\n mulInto(_offset, _offset, radius)\n\n subInto(_tl, point, _offset)\n tempLeftPoint = [_tl[0], _tl[1]]\n\n if (i <= 1 || dist2(prevLeftPoint, tempLeftPoint) > minDistance) {\n leftPts.push(tempLeftPoint)\n prevLeftPoint = tempLeftPoint\n }\n\n addInto(_tr, point, _offset)\n tempRightPoint = [_tr[0], _tr[1]]\n\n if (i <= 1 || dist2(prevRightPoint, tempRightPoint) > minDistance) {\n rightPts.push(tempRightPoint)\n prevRightPoint = tempRightPoint\n }\n\n // Set variables for next iteration\n prevPressure = pressure\n prevVector = vector\n }\n\n /*\n Drawing caps\n\n Now that we have our points on either side of the line, we need to\n draw caps at the start and end. Tapered lines don't have caps, but\n may have dots for very short lines.\n */\n\n const firstPoint: Vec2 = [points[0].point[0], points[0].point[1]]\n\n const lastPoint: Vec2 =\n points.length > 1\n ? [points[points.length - 1].point[0], points[points.length - 1].point[1]]\n : add(points[0].point, [1, 1])\n\n const startCap: Vec2[] = []\n\n const endCap: Vec2[] = []\n\n // Draw a dot for very short or completed strokes\n if (points.length === 1) {\n if (!(taperStart || taperEnd) || isComplete) {\n return drawDot(firstPoint, firstRadius || radius)\n }\n } else {\n // Draw start cap (unless tapered)\n if (taperStart || (taperEnd && points.length === 1)) {\n // The start point is tapered, noop\n } else if (capStart) {\n startCap.push(\n ...drawRoundStartCap(firstPoint, rightPts[0], START_CAP_SEGMENTS)\n )\n } else {\n startCap.push(...drawFlatStartCap(firstPoint, leftPts[0], rightPts[0]))\n }\n\n // Draw end cap (unless tapered)\n const direction = per(neg(points[points.length - 1].vector))\n\n if (taperEnd || (taperStart && points.length === 1)) {\n // Tapered end - push the last point to the line\n endCap.push(lastPoint)\n } else if (capEnd) {\n endCap.push(\n ...drawRoundEndCap(lastPoint, direction, radius, END_CAP_SEGMENTS)\n )\n } else {\n endCap.push(...drawFlatEndCap(lastPoint, direction, radius))\n }\n }\n\n /*\n Return the points in the correct winding order: begin on the left side, then\n continue around the end cap, then come back along the right side, and finally\n complete the start cap.\n */\n\n return leftPts.concat(endCap, rightPts.reverse(), startCap)\n}\n","import {\n DEFAULT_FIRST_PRESSURE,\n DEFAULT_PRESSURE,\n MIN_STREAMLINE_T,\n STREAMLINE_T_RANGE,\n UNIT_OFFSET,\n} from './constants'\nimport type { StrokeOptions, StrokePoint, Vec2 } from './types'\nimport { add, dist, isEqual, lrp, subInto, uni } from './vec'\n\n// Scratch buffer for allocation-free vector calculation in hot loop\nconst _vectorDiff: Vec2 = [0, 0]\n\n/**\n * Check if a pressure value is valid (defined and non-negative).\n * Returns false for undefined, NaN, and negative values.\n */\nfunction isValidPressure(pressure: number | undefined): pressure is number {\n return pressure != null && pressure >= 0\n}\n\n/**\n * ## getStrokePoints\n * @description Get an array of points as objects with an adjusted point, pressure, vector, distance, and runningLength.\n * @param points An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is optional in both cases.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\nexport function getStrokePoints<\n T extends number[],\n K extends { x: number; y: number; pressure?: number },\n>(points: (T | K)[], options = {} as StrokeOptions): StrokePoint[] {\n const { streamline = 0.5, size = 16, last: isComplete = false } = options\n\n // If we don't have any points, return an empty array.\n if (points.length === 0) return []\n\n // Find the interpolation level between points.\n const t = MIN_STREAMLINE_T + (1 - streamline) * STREAMLINE_T_RANGE\n\n // Whatever the input is, make sure that the points are in number[][].\n let pts = Array.isArray(points[0])\n ? (points as T[])\n : (points as K[]).map(({ x, y, pressure = DEFAULT_PRESSURE }) => [\n x,\n y,\n pressure,\n ])\n\n // Add extra points between the two, to help avoid \"dash\" lines\n // for strokes with tapered start and ends. Don't mutate the\n // input array!\n if (pts.length === 2) {\n const last = pts[1]\n pts = pts.slice(0, -1)\n for (let i = 1; i < 5; i++) {\n pts.push(lrp(pts[0] as Vec2, last as Vec2, i / 4))\n }\n }\n\n // If there's only one point, add another point at a 1pt offset.\n // Don't mutate the input array!\n if (pts.length === 1) {\n pts = [...pts, [...add(pts[0] as Vec2, UNIT_OFFSET), ...pts[0].slice(2)]]\n }\n\n // The strokePoints array will hold the points for the stroke.\n // Start it out with the first point, which needs no adjustment.\n const strokePoints: StrokePoint[] = [\n {\n point: [pts[0][0], pts[0][1]],\n pressure: isValidPressure(pts[0][2]) ? pts[0][2] : DEFAULT_FIRST_PRESSURE,\n vector: [...UNIT_OFFSET],\n distance: 0,\n runningLength: 0,\n },\n ]\n\n // A flag to see whether we've already reached out minimum length\n let hasReachedMinimumLength = false\n\n // We use the runningLength to keep track of the total distance\n let runningLength = 0\n\n // We're set this to the latest point, so we can use it to calculate\n // the distance and vector of the next point.\n let prev = strokePoints[0]\n\n const max = pts.length - 1\n\n // Iterate through all of the points, creating StrokePoints.\n for (let i = 1; i < pts.length; i++) {\n const point: Vec2 =\n isComplete && i === max\n ? // If we're at the last point, and `options.last` is true,\n // then add the actual input point.\n [pts[i][0], pts[i][1]]\n : // Otherwise, using the t calculated from the streamline\n // option, interpolate a new point between the previous\n // point the current point.\n lrp(prev.point, pts[i] as Vec2, t)\n\n // If the new point is the same as the previous point, skip ahead.\n if (isEqual(prev.point, point)) continue\n\n // How far is the new point from the previous point?\n const distance = dist(point, prev.point)\n\n // Add this distance to the total \"running length\" of the line.\n runningLength += distance\n\n // At the start of the line, we wait until the new point is a\n // certain distance away from the original point, to avoid noise\n if (i < max && !hasReachedMinimumLength) {\n if (runningLength < size) continue\n hasReachedMinimumLength = true\n // TODO: Backfill the missing points so that tapering works correctly.\n }\n // Create a new strokepoint (it will be the new \"previous\" one).\n // Use scratch buffer for vector difference to reduce allocations\n subInto(_vectorDiff, prev.point, point)\n prev = {\n // The adjusted point\n point,\n // The input pressure (or default if not specified)\n pressure: isValidPressure(pts[i][2]) ? pts[i][2] : DEFAULT_PRESSURE,\n // The vector from the current point to the previous point\n vector: uni(_vectorDiff),\n // The distance between the current point and the previous point\n distance,\n // The total distance so far\n runningLength,\n }\n\n // Push it to the strokePoints array.\n strokePoints.push(prev)\n }\n\n // Set the vector of the first point to be the same as the second point.\n strokePoints[0].vector = strokePoints[1]?.vector || [0, 0]\n\n return strokePoints\n}\n","import type { StrokeOptions, Vec2 } from './types'\nimport { getStrokeOutlinePoints } from './getStrokeOutlinePoints'\nimport { getStrokePoints } from './getStrokePoints'\n\n/**\n * ## getStroke\n * @description Get an array of points describing a polygon that surrounds the input points.\n * @param points An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is optional in both cases.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\n\nexport function getStroke(\n points: (number[] | { x: number; y: number; pressure?: number })[],\n options: StrokeOptions = {} as StrokeOptions\n): Vec2[] {\n return getStrokeOutlinePoints(getStrokePoints(points, options), options)\n}\n","import rough from \"roughjs\";\nimport { getStroke } from \"perfect-freehand\";\nimport type { ExcalidrawData, ExcalidrawElement, ExcalidrawPageOptions } from \"./types\";\n\nconst gen = rough.generator();\n\ninterface BBox {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n width: number;\n height: number;\n}\n\nconst FONT_FAMILIES: Record<number, string> = {\n 1: \"Virgil, Segoe UI Emoji, sans-serif\",\n 2: \"Helvetica, Arial, sans-serif\",\n 3: \"Cascadia, monospace\",\n 4: \"Virgil, Segoe UI Emoji, sans-serif\",\n};\n\nexport interface ResolvedEmbed {\n html: string;\n href: string;\n}\n\nexport interface EmbedOverlay {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n link: string;\n isWikilink: boolean;\n resolved?: ResolvedEmbed;\n}\n\nexport interface RenderResult {\n svg: string;\n overlays: EmbedOverlay[];\n viewBox: { width: number; height: number; offsetX: number; offsetY: number };\n}\n\nexport interface RenderContext {\n resolvedEmbeds?: Record<string, ResolvedEmbed>;\n resolvedImages?: Record<string, string>;\n}\n\nexport function renderToSvg(\n data: ExcalidrawData,\n opts: ExcalidrawPageOptions = {},\n ctx?: RenderContext,\n): RenderResult {\n const elements = data.elements.filter((el) => !el.isDeleted);\n if (elements.length === 0) {\n return {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"></svg>',\n overlays: [],\n viewBox: { width: 100, height: 100, offsetX: 0, offsetY: 0 },\n };\n }\n\n const padding = opts.exportPadding ?? 20;\n const bbox = computeBoundingBox(elements);\n const width = Math.ceil(bbox.width + padding * 2);\n const height = Math.ceil(bbox.height + padding * 2);\n const offsetX = -bbox.minX + padding;\n const offsetY = -bbox.minY + padding;\n\n const bgColor = resolveBgColor(data, opts);\n\n const overlays: EmbedOverlay[] = [];\n const embeddables = elements.filter((el) => el.type === \"embeddable\" || el.type === \"iframe\");\n for (const el of embeddables) {\n const link = (el.link as string) ?? \"\";\n const isWikilink = link.startsWith(\"[[\");\n overlays.push({\n id: el.id,\n x: el.x,\n y: el.y,\n width: el.width,\n height: el.height,\n link,\n isWikilink,\n resolved: ctx?.resolvedEmbeds?.[el.id],\n });\n }\n\n const renderedElements = elements.map((el) => renderElement(el, data, ctx)).filter(Boolean);\n\n const parts = [\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\" width=\"100%\" height=\"100%\" preserveAspectRatio=\"xMidYMid meet\" data-bg-color=\"${escapeAttr(bgColor ?? \"#ffffff\")}\">`,\n `<defs>${getFontDefs()}</defs>`,\n `<g transform=\"translate(${offsetX}, ${offsetY})\">`,\n ...renderedElements,\n \"</g>\",\n \"</svg>\",\n ];\n\n return {\n svg: parts.filter(Boolean).join(\"\\n\"),\n overlays,\n viewBox: { width, height, offsetX, offsetY },\n };\n}\n\nfunction resolveBgColor(data: ExcalidrawData, opts: ExcalidrawPageOptions): string | null {\n const exportBg = data.appState.exportBackground ?? true;\n if (!exportBg) return null;\n\n if (opts.darkMode === \"dark\") return \"#1e1e1e\";\n if (opts.darkMode === \"light\") return data.appState.viewBackgroundColor ?? \"#ffffff\";\n\n const rawBg = data.appState.viewBackgroundColor ?? \"#ffffff\";\n const lower = rawBg.toLowerCase();\n if (lower === \"#ffffff\" || lower === \"#ffffffff\") return \"var(--excalidraw-bg, #ffffff)\";\n return rawBg;\n}\n\nfunction renderElement(el: ExcalidrawElement, data: ExcalidrawData, ctx?: RenderContext): string {\n const inner = renderElementInner(el, data, ctx);\n if (!inner) return \"\";\n\n const attrs: string[] = [];\n if (el.angle && el.angle !== 0) {\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n const deg = (el.angle * 180) / Math.PI;\n attrs.push(`transform=\"rotate(${deg.toFixed(2)}, ${cx.toFixed(2)}, ${cy.toFixed(2)})\"`);\n }\n if (el.opacity != null && el.opacity < 100) {\n attrs.push(`opacity=\"${el.opacity / 100}\"`);\n }\n\n if (attrs.length > 0) {\n return `<g ${attrs.join(\" \")}>${inner}</g>`;\n }\n return inner;\n}\n\nfunction renderElementInner(\n el: ExcalidrawElement,\n data: ExcalidrawData,\n ctx?: RenderContext,\n): string {\n switch (el.type) {\n case \"rectangle\":\n return renderRectangle(el);\n case \"ellipse\":\n return renderEllipse(el);\n case \"diamond\":\n return renderDiamond(el);\n case \"line\":\n case \"arrow\":\n return renderLinearElement(el);\n case \"text\":\n return renderText(el);\n case \"freedraw\":\n return renderFreedraw(el);\n case \"image\":\n return renderImage(el, data, ctx);\n case \"frame\":\n case \"magicframe\":\n return renderFrame(el);\n case \"embeddable\":\n case \"iframe\":\n return renderEmbeddable(el);\n default:\n return \"\";\n }\n}\n\n// Excalidraw's dark mode uses invert(93%) + hue-rotate(180deg).\n// Pre-computed dark variants for all default palette colors.\n// Light → Dark mappings generated from Excalidraw's applyDarkModeFilter algorithm.\nconst DARK_MODE_MAP: Record<string, string> = {\n \"#1e1e1e\": \"#d3d3d3\",\n \"#000000\": \"#ededed\",\n \"#343a40\": \"#b7bcc1\",\n \"#868e96\": \"#6e757c\",\n \"#ced4da\": \"#33383d\",\n \"#e9ecef\": \"#202325\",\n \"#f8f9fa\": \"#161718\",\n \"#e03131\": \"#ff8383\",\n \"#fa5252\": \"#fa6969\",\n \"#ff8787\": \"#b44d4d\",\n \"#ffc9c9\": \"#5a2c2c\",\n \"#fff5f5\": \"#1f1717\",\n \"#c2255c\": \"#ff8dbc\",\n \"#e64980\": \"#f56e9d\",\n \"#f783ac\": \"#b04d70\",\n \"#fcc2d7\": \"#602e40\",\n \"#fff0f6\": \"#26191e\",\n \"#9c36b5\": \"#e28af8\",\n \"#be4bdb\": \"#d471ed\",\n \"#da77f2\": \"#a954be\",\n \"#eebefa\": \"#5b3165\",\n \"#f8f0fc\": \"#211a25\",\n \"#6741d9\": \"#b595ff\",\n \"#7950f2\": \"#a885ff\",\n \"#9775fa\": \"#8a6cdf\",\n \"#d0bfff\": \"#4a3b72\",\n \"#f3f0ff\": \"#1f1c29\",\n \"#1971c2\": \"#56a2e8\",\n \"#228be6\": \"#3791e0\",\n \"#4dabf7\": \"#2273b4\",\n \"#a5d8ff\": \"#154162\",\n \"#e7f5ff\": \"#121e26\",\n \"#0c8599\": \"#3da5b6\",\n \"#15aabf\": \"#0f8fa1\",\n \"#3bc9db\": \"#007281\",\n \"#99e9f2\": \"#004149\",\n \"#e3fafc\": \"#0a1e20\",\n \"#099268\": \"#32a783\",\n \"#12b886\": \"#039267\",\n \"#38d9a9\": \"#00744b\",\n \"#96f2d7\": \"#00422b\",\n \"#e6fcf5\": \"#0a1d17\",\n \"#2f9e44\": \"#39994b\",\n \"#40c057\": \"#16842a\",\n \"#69db7c\": \"#056715\",\n \"#b2f2bb\": \"#043b0c\",\n \"#ebfbee\": \"#0f1d12\",\n \"#f08c00\": \"#b86200\",\n \"#fab005\": \"#905000\",\n \"#ffd43b\": \"#5f3a00\",\n \"#ffec99\": \"#362600\",\n \"#fff9db\": \"#1e1900\",\n \"#e8590c\": \"#f17634\",\n \"#fd7e14\": \"#cd6005\",\n \"#ffa94d\": \"#924800\",\n \"#ffd8a8\": \"#4c2b01\",\n \"#fff4e6\": \"#22190d\",\n \"#846358\": \"#a98d84\",\n \"#a18072\": \"#917569\",\n \"#d2bab0\": \"#5a463d\",\n \"#eaddd7\": \"#362b26\",\n \"#f8f1ee\": \"#221c1a\",\n \"#ffffff\": \"#121212\",\n};\n\nfunction themeColor(color: string): string {\n const lower = color.toLowerCase();\n if (lower in DARK_MODE_MAP) {\n return `var(--excalidraw-color-${lower.slice(1)}, ${color})`;\n }\n return color;\n}\n\nfunction roughOpts(el: ExcalidrawElement) {\n return {\n seed: el.seed,\n roughness: el.roughness,\n stroke: el.strokeColor === \"transparent\" ? \"none\" : themeColor(el.strokeColor),\n strokeWidth: el.strokeWidth,\n fill: el.backgroundColor === \"transparent\" ? undefined : themeColor(el.backgroundColor),\n fillStyle: mapFillStyle(el.fillStyle),\n strokeLineDash: mapStrokeStyle(el.strokeStyle, el.strokeWidth),\n };\n}\n\nfunction mapFillStyle(style: string): string {\n switch (style) {\n case \"hachure\":\n return \"hachure\";\n case \"cross-hatch\":\n return \"cross-hatch\";\n case \"solid\":\n return \"solid\";\n case \"zigzag\":\n return \"zigzag\";\n case \"dots\":\n return \"dots\";\n case \"dashed\":\n return \"dashed\";\n case \"zigzag-line\":\n return \"zigzag-line\";\n default:\n return \"hachure\";\n }\n}\n\nfunction mapStrokeStyle(style: string, width: number): number[] | undefined {\n switch (style) {\n case \"dashed\":\n return [8 * width, 4 * width];\n case \"dotted\":\n return [1.5 * width, 4 * width];\n default:\n return undefined;\n }\n}\n\nfunction renderRectangle(el: ExcalidrawElement): string {\n const opts = roughOpts(el);\n const drawable = gen.rectangle(el.x, el.y, el.width, el.height, opts);\n return drawableToSvg(drawable);\n}\n\nfunction renderEllipse(el: ExcalidrawElement): string {\n const opts = roughOpts(el);\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n const drawable = gen.ellipse(cx, cy, el.width, el.height, opts);\n return drawableToSvg(drawable);\n}\n\nfunction renderDiamond(el: ExcalidrawElement): string {\n const opts = roughOpts(el);\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n const hw = el.width / 2;\n const hh = el.height / 2;\n const points: Array<[number, number]> = [\n [cx, cy - hh],\n [cx + hw, cy],\n [cx, cy + hh],\n [cx - hw, cy],\n ];\n const drawable = gen.polygon(points, opts);\n return drawableToSvg(drawable);\n}\n\nfunction renderLinearElement(el: ExcalidrawElement): string {\n const points = el.points ?? [];\n if (points.length < 2) return \"\";\n\n const opts = {\n ...roughOpts(el),\n fill: undefined,\n fillStyle: undefined,\n };\n const absolutePoints: Array<[number, number]> = points.map(([px, py]) => [el.x + px, el.y + py]);\n\n let svg: string;\n if (points.length > 2) {\n const drawable = gen.curve(absolutePoints, opts);\n svg = drawableToSvg(drawable);\n } else {\n const drawable = gen.linearPath(absolutePoints, opts);\n svg = drawableToSvg(drawable);\n }\n\n if (el.type === \"arrow\") {\n svg += renderArrowheads(el, absolutePoints);\n }\n\n return svg;\n}\n\nfunction renderArrowheads(el: ExcalidrawElement, points: Array<[number, number]>): string {\n let svg = \"\";\n const color = el.strokeColor === \"transparent\" ? \"none\" : el.strokeColor;\n\n if (el.endArrowhead && el.endArrowhead !== \"none\" && points.length >= 2) {\n const tip = points[points.length - 1]!;\n const prev = points[points.length - 2]!;\n svg += renderArrowhead(prev, tip, color, el.strokeWidth);\n }\n\n if (el.startArrowhead && el.startArrowhead !== \"none\" && points.length >= 2) {\n const tip = points[0]!;\n const prev = points[1]!;\n svg += renderArrowhead(prev, tip, color, el.strokeWidth);\n }\n\n return svg;\n}\n\nfunction renderArrowhead(\n from: [number, number],\n to: [number, number],\n color: string,\n strokeWidth: number,\n): string {\n const angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n const headLen = 10 + strokeWidth * 2;\n const headAngle = Math.PI / 6;\n\n const x1 = to[0] - headLen * Math.cos(angle - headAngle);\n const y1 = to[1] - headLen * Math.sin(angle - headAngle);\n const x2 = to[0] - headLen * Math.cos(angle + headAngle);\n const y2 = to[1] - headLen * Math.sin(angle + headAngle);\n\n return `<path d=\"M${x1.toFixed(2)} ${y1.toFixed(2)} L${to[0].toFixed(2)} ${to[1].toFixed(2)} L${x2.toFixed(2)} ${y2.toFixed(2)}\" fill=\"none\" stroke=\"${escapeAttr(color)}\" stroke-width=\"${strokeWidth}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`;\n}\n\nfunction renderText(el: ExcalidrawElement): string {\n if (!el.text) return \"\";\n\n const fontFamily = FONT_FAMILIES[el.fontFamily ?? 1] ?? \"Virgil, Segoe UI Emoji, sans-serif\";\n const fontSize = el.fontSize ?? 20;\n const textAnchor = mapTextAlign(el.textAlign);\n const color =\n el.strokeColor === \"transparent\" ? \"var(--excalidraw-fg, #000000)\" : themeColor(el.strokeColor);\n\n const lines = el.text.split(\"\\n\");\n const lineHeight = fontSize * 1.25;\n const totalHeight = lines.length * lineHeight;\n\n let startY = el.y;\n if (el.verticalAlign === \"middle\") {\n startY = el.y + (el.height - totalHeight) / 2;\n } else if (el.verticalAlign === \"bottom\") {\n startY = el.y + el.height - totalHeight;\n }\n\n let textX = el.x;\n if (el.textAlign === \"center\") {\n textX = el.x + el.width / 2;\n } else if (el.textAlign === \"right\") {\n textX = el.x + el.width;\n }\n\n const tspans = lines\n .map((line, i) => {\n const y = startY + fontSize + i * lineHeight;\n return `<tspan x=\"${textX.toFixed(2)}\" y=\"${y.toFixed(2)}\">${escapeXml(line)}</tspan>`;\n })\n .join(\"\");\n\n return `<text font-family=\"${escapeAttr(fontFamily)}\" font-size=\"${fontSize}\" fill=\"${escapeAttr(color)}\" text-anchor=\"${textAnchor}\" dominant-baseline=\"auto\">${tspans}</text>`;\n}\n\nfunction mapTextAlign(align?: string): string {\n switch (align) {\n case \"center\":\n return \"middle\";\n case \"right\":\n return \"end\";\n default:\n return \"start\";\n }\n}\n\nfunction renderFreedraw(el: ExcalidrawElement): string {\n const points = el.points ?? [];\n if (points.length < 2) return \"\";\n\n const absolutePoints = points.map(\n ([px, py]) => [el.x + px, el.y + py, 0.5] as [number, number, number],\n );\n\n const strokePoints = getStroke(absolutePoints, {\n size: el.strokeWidth * 4.5,\n thinning: 0.6,\n smoothing: 0.5,\n streamline: 0.5,\n simulatePressure: (el.simulatePressure as boolean) ?? true,\n });\n\n if (strokePoints.length < 2) return \"\";\n\n const d = getSvgPathFromStroke(strokePoints);\n const color =\n el.strokeColor === \"transparent\" ? \"var(--excalidraw-fg, #000000)\" : themeColor(el.strokeColor);\n\n return `<path d=\"${d}\" fill=\"${escapeAttr(color)}\" stroke=\"none\" />`;\n}\n\nfunction getSvgPathFromStroke(points: number[][]): string {\n if (points.length < 2) return \"\";\n\n const first = points[0]!;\n let d = `M${first[0]!.toFixed(2)} ${first[1]!.toFixed(2)}`;\n\n for (let i = 1; i < points.length - 1; i++) {\n const curr = points[i]!;\n const next = points[i + 1]!;\n const mx = (curr[0]! + next[0]!) / 2;\n const my = (curr[1]! + next[1]!) / 2;\n d += ` Q${curr[0]!.toFixed(2)} ${curr[1]!.toFixed(2)} ${mx.toFixed(2)} ${my.toFixed(2)}`;\n }\n\n d += \" Z\";\n return d;\n}\n\nfunction renderImage(el: ExcalidrawElement, data: ExcalidrawData, ctx?: RenderContext): string {\n if (!el.fileId) return \"\";\n\n const file = data.files[el.fileId];\n if (file?.dataURL) {\n return `<image x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" href=\"${escapeAttr(file.dataURL)}\" preserveAspectRatio=\"xMidYMid meet\" />`;\n }\n\n const resolvedUrl = ctx?.resolvedImages?.[el.fileId];\n if (resolvedUrl) {\n return `<image x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" href=\"${escapeAttr(resolvedUrl)}\" preserveAspectRatio=\"xMidYMid meet\" />`;\n }\n\n return \"\";\n}\n\nfunction renderFrame(el: ExcalidrawElement): string {\n return `<rect x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" fill=\"none\" stroke=\"#aaaaaa\" stroke-width=\"1\" stroke-dasharray=\"5 5\" />`;\n}\n\nfunction renderEmbeddable(el: ExcalidrawElement): string {\n return `<rect x=\"${el.x}\" y=\"${el.y}\" width=\"${el.width}\" height=\"${el.height}\" fill=\"var(--excalidraw-bg, #f8f9fa)\" stroke=\"var(--excalidraw-color-ced4da, #dee2e6)\" stroke-width=\"2\" rx=\"8\" ry=\"8\" data-embed-id=\"${el.id}\" />`;\n}\n\nfunction drawableToSvg(drawable: ReturnType<typeof gen.rectangle>): string {\n const paths: string[] = [];\n\n for (const set of drawable.sets) {\n const d = opsToPath(set.ops);\n if (!d) continue;\n\n if (set.type === \"path\") {\n paths.push(\n `<path d=\"${d}\" stroke=\"${escapeAttr(drawable.options.stroke ?? \"none\")}\" stroke-width=\"${drawable.options.strokeWidth ?? 1}\" fill=\"none\"${strokeDashAttr(drawable.options.strokeLineDash)} />`,\n );\n } else if (set.type === \"fillPath\") {\n paths.push(\n `<path d=\"${d}\" fill=\"${escapeAttr(drawable.options.fill ?? \"none\")}\" stroke=\"none\" />`,\n );\n } else if (set.type === \"fillSketch\") {\n paths.push(\n `<path d=\"${d}\" stroke=\"${escapeAttr(drawable.options.fill ?? \"none\")}\" stroke-width=\"${(drawable.options.fillWeight ?? drawable.options.strokeWidth ?? 1) * 0.5}\" fill=\"none\" />`,\n );\n }\n }\n\n return paths.join(\"\\n\");\n}\n\nfunction strokeDashAttr(dash: number[] | undefined): string {\n if (!dash || dash.length === 0) return \"\";\n return ` stroke-dasharray=\"${dash.join(\" \")}\"`;\n}\n\nfunction opsToPath(ops: Array<{ op: string; data: number[] }>): string {\n let d = \"\";\n for (const item of ops) {\n const p = item.data;\n switch (item.op) {\n case \"move\":\n d += `M${p[0]!.toFixed(2)} ${p[1]!.toFixed(2)} `;\n break;\n case \"lineTo\":\n d += `L${p[0]!.toFixed(2)} ${p[1]!.toFixed(2)} `;\n break;\n case \"bcurveTo\":\n d += `C${p[0]!.toFixed(2)} ${p[1]!.toFixed(2)},${p[2]!.toFixed(2)} ${p[3]!.toFixed(2)},${p[4]!.toFixed(2)} ${p[5]!.toFixed(2)} `;\n break;\n }\n }\n return d.trim();\n}\n\nfunction computeBoundingBox(elements: ExcalidrawElement[]): BBox {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const el of elements) {\n const corners = getElementCorners(el);\n for (const [cx, cy] of corners) {\n if (cx < minX) minX = cx;\n if (cy < minY) minY = cy;\n if (cx > maxX) maxX = cx;\n if (cy > maxY) maxY = cy;\n }\n }\n\n if (!isFinite(minX)) {\n return { minX: 0, minY: 0, maxX: 100, maxY: 100, width: 100, height: 100 };\n }\n\n return { minX, minY, maxX, maxY, width: maxX - minX, height: maxY - minY };\n}\n\nfunction getElementCorners(el: ExcalidrawElement): Array<[number, number]> {\n if ((el.type === \"line\" || el.type === \"arrow\" || el.type === \"freedraw\") && el.points) {\n return el.points.map(([px, py]) => [el.x + px, el.y + py]);\n }\n\n const corners: Array<[number, number]> = [\n [el.x, el.y],\n [el.x + el.width, el.y],\n [el.x + el.width, el.y + el.height],\n [el.x, el.y + el.height],\n ];\n\n if (el.angle && el.angle !== 0) {\n const cx = el.x + el.width / 2;\n const cy = el.y + el.height / 2;\n return corners.map(([x, y]) => rotatePoint(x, y, cx, cy, el.angle));\n }\n\n return corners;\n}\n\nfunction rotatePoint(\n x: number,\n y: number,\n cx: number,\n cy: number,\n angle: number,\n): [number, number] {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const dx = x - cx;\n const dy = y - cy;\n return [cx + dx * cos - dy * sin, cy + dx * sin + dy * cos];\n}\n\nfunction getFontDefs(): string {\n return `<style>\n@font-face {\n font-family: \"Virgil\";\n src: url(\"https://unpkg.com/@excalidraw/excalidraw@0.17.0/dist/prod/Virgil-Regular-hO16.woff2\") format(\"woff2\");\n}\n</style>`;\n}\n\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n}\n\nfunction escapeAttr(str: string): string {\n return str\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n}\n",".excalidraw-page {\n position: relative;\n width: 100%;\n height: 100%;\n max-width: none;\n margin: 0;\n overflow: hidden;\n user-select: none;\n background-color: var(--light);\n}\n\n.excalidraw-container {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n touch-action: none;\n background-color: var(--light);\n}\n.excalidraw-container:active {\n cursor: grabbing;\n}\n.excalidraw-container svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: 0 0;\n}\n\n:root {\n --excalidraw-fg: #1e1e1e;\n --excalidraw-bg: #ffffff;\n --excalidraw-color-1e1e1e: #1e1e1e;\n --excalidraw-color-000000: #000000;\n --excalidraw-color-ffffff: #ffffff;\n --excalidraw-color-343a40: #343a40;\n --excalidraw-color-868e96: #868e96;\n --excalidraw-color-ced4da: #ced4da;\n --excalidraw-color-e9ecef: #e9ecef;\n --excalidraw-color-f8f9fa: #f8f9fa;\n --excalidraw-color-e03131: #e03131;\n --excalidraw-color-fa5252: #fa5252;\n --excalidraw-color-ff8787: #ff8787;\n --excalidraw-color-ffc9c9: #ffc9c9;\n --excalidraw-color-fff5f5: #fff5f5;\n --excalidraw-color-c2255c: #c2255c;\n --excalidraw-color-e64980: #e64980;\n --excalidraw-color-f783ac: #f783ac;\n --excalidraw-color-fcc2d7: #fcc2d7;\n --excalidraw-color-fff0f6: #fff0f6;\n --excalidraw-color-9c36b5: #9c36b5;\n --excalidraw-color-be4bdb: #be4bdb;\n --excalidraw-color-da77f2: #da77f2;\n --excalidraw-color-eebefa: #eebefa;\n --excalidraw-color-f8f0fc: #f8f0fc;\n --excalidraw-color-6741d9: #6741d9;\n --excalidraw-color-7950f2: #7950f2;\n --excalidraw-color-9775fa: #9775fa;\n --excalidraw-color-d0bfff: #d0bfff;\n --excalidraw-color-f3f0ff: #f3f0ff;\n --excalidraw-color-1971c2: #1971c2;\n --excalidraw-color-228be6: #228be6;\n --excalidraw-color-4dabf7: #4dabf7;\n --excalidraw-color-a5d8ff: #a5d8ff;\n --excalidraw-color-e7f5ff: #e7f5ff;\n --excalidraw-color-0c8599: #0c8599;\n --excalidraw-color-15aabf: #15aabf;\n --excalidraw-color-3bc9db: #3bc9db;\n --excalidraw-color-99e9f2: #99e9f2;\n --excalidraw-color-e3fafc: #e3fafc;\n --excalidraw-color-099268: #099268;\n --excalidraw-color-12b886: #12b886;\n --excalidraw-color-38d9a9: #38d9a9;\n --excalidraw-color-96f2d7: #96f2d7;\n --excalidraw-color-e6fcf5: #e6fcf5;\n --excalidraw-color-2f9e44: #2f9e44;\n --excalidraw-color-40c057: #40c057;\n --excalidraw-color-69db7c: #69db7c;\n --excalidraw-color-b2f2bb: #b2f2bb;\n --excalidraw-color-ebfbee: #ebfbee;\n --excalidraw-color-f08c00: #f08c00;\n --excalidraw-color-fab005: #fab005;\n --excalidraw-color-ffd43b: #ffd43b;\n --excalidraw-color-ffec99: #ffec99;\n --excalidraw-color-fff9db: #fff9db;\n --excalidraw-color-e8590c: #e8590c;\n --excalidraw-color-fd7e14: #fd7e14;\n --excalidraw-color-ffa94d: #ffa94d;\n --excalidraw-color-ffd8a8: #ffd8a8;\n --excalidraw-color-fff4e6: #fff4e6;\n --excalidraw-color-846358: #846358;\n --excalidraw-color-a18072: #a18072;\n --excalidraw-color-d2bab0: #d2bab0;\n --excalidraw-color-eaddd7: #eaddd7;\n --excalidraw-color-f8f1ee: #f8f1ee;\n}\n\n:root[saved-theme=dark] {\n --excalidraw-fg: #d3d3d3;\n --excalidraw-bg: #121212;\n --excalidraw-color-1e1e1e: #d3d3d3;\n --excalidraw-color-000000: #ededed;\n --excalidraw-color-ffffff: #121212;\n --excalidraw-color-343a40: #b7bcc1;\n --excalidraw-color-868e96: #6e757c;\n --excalidraw-color-ced4da: #33383d;\n --excalidraw-color-e9ecef: #202325;\n --excalidraw-color-f8f9fa: #161718;\n --excalidraw-color-e03131: #ff8383;\n --excalidraw-color-fa5252: #fa6969;\n --excalidraw-color-ff8787: #b44d4d;\n --excalidraw-color-ffc9c9: #5a2c2c;\n --excalidraw-color-fff5f5: #1f1717;\n --excalidraw-color-c2255c: #ff8dbc;\n --excalidraw-color-e64980: #f56e9d;\n --excalidraw-color-f783ac: #b04d70;\n --excalidraw-color-fcc2d7: #602e40;\n --excalidraw-color-fff0f6: #26191e;\n --excalidraw-color-9c36b5: #e28af8;\n --excalidraw-color-be4bdb: #d471ed;\n --excalidraw-color-da77f2: #a954be;\n --excalidraw-color-eebefa: #5b3165;\n --excalidraw-color-f8f0fc: #211a25;\n --excalidraw-color-6741d9: #b595ff;\n --excalidraw-color-7950f2: #a885ff;\n --excalidraw-color-9775fa: #8a6cdf;\n --excalidraw-color-d0bfff: #4a3b72;\n --excalidraw-color-f3f0ff: #1f1c29;\n --excalidraw-color-1971c2: #56a2e8;\n --excalidraw-color-228be6: #3791e0;\n --excalidraw-color-4dabf7: #2273b4;\n --excalidraw-color-a5d8ff: #154162;\n --excalidraw-color-e7f5ff: #121e26;\n --excalidraw-color-0c8599: #3da5b6;\n --excalidraw-color-15aabf: #0f8fa1;\n --excalidraw-color-3bc9db: #007281;\n --excalidraw-color-99e9f2: #004149;\n --excalidraw-color-e3fafc: #0a1e20;\n --excalidraw-color-099268: #32a783;\n --excalidraw-color-12b886: #039267;\n --excalidraw-color-38d9a9: #00744b;\n --excalidraw-color-96f2d7: #00422b;\n --excalidraw-color-e6fcf5: #0a1d17;\n --excalidraw-color-2f9e44: #39994b;\n --excalidraw-color-40c057: #16842a;\n --excalidraw-color-69db7c: #056715;\n --excalidraw-color-b2f2bb: #043b0c;\n --excalidraw-color-ebfbee: #0f1d12;\n --excalidraw-color-f08c00: #b86200;\n --excalidraw-color-fab005: #905000;\n --excalidraw-color-ffd43b: #5f3a00;\n --excalidraw-color-ffec99: #362600;\n --excalidraw-color-fff9db: #1e1900;\n --excalidraw-color-e8590c: #f17634;\n --excalidraw-color-fd7e14: #cd6005;\n --excalidraw-color-ffa94d: #924800;\n --excalidraw-color-ffd8a8: #4c2b01;\n --excalidraw-color-fff4e6: #22190d;\n --excalidraw-color-846358: #a98d84;\n --excalidraw-color-a18072: #917569;\n --excalidraw-color-d2bab0: #5a463d;\n --excalidraw-color-eaddd7: #362b26;\n --excalidraw-color-f8f1ee: #221c1a;\n}\n\n.excalidraw-controls {\n position: fixed;\n bottom: 1rem;\n right: 1rem;\n z-index: 10;\n display: flex;\n flex-direction: row;\n gap: 0.25rem;\n}\n.excalidraw-controls button {\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--lightgray);\n border-radius: 6px;\n background: var(--light);\n color: var(--darkgray);\n font-size: 1.2rem;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.1s ease;\n}\n.excalidraw-controls button:hover {\n background: var(--lightgray);\n}\n\n.page[data-frame=excalidraw] {\n --excalidraw-sidebar-width: 300px;\n}\n\n.page[data-frame=excalidraw] .excalidraw-frame {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n padding-left: 0;\n transition: padding-left 0.2s ease;\n}\n\n.page[data-frame=excalidraw] .excalidraw-stage {\n width: 100%;\n height: 100%;\n}\n\n.page[data-frame=excalidraw] .excalidraw-sidebar {\n position: fixed;\n top: 0;\n height: 100vh;\n width: var(--excalidraw-sidebar-width);\n box-sizing: border-box;\n background: var(--light);\n border-right: 1px solid var(--lightgray);\n box-shadow: 8px 0 24px rgba(0, 0, 0, 0.12);\n overflow-y: hidden;\n left: calc(-1 * var(--excalidraw-sidebar-width));\n transition: left 0.25s ease;\n z-index: 20;\n}\n\n.page[data-frame=excalidraw] .excalidraw-sidebar-toggle {\n position: fixed;\n top: 12px;\n left: 12px;\n width: 32px;\n height: 32px;\n border: 1px solid var(--lightgray);\n border-radius: 6px;\n background: var(--light);\n color: var(--darkgray);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 30;\n transition: background 0.1s ease, left 0.25s ease;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar-toggle:hover {\n background: var(--lightgray);\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar-toggle svg {\n pointer-events: none;\n}\n\n.page[data-frame=excalidraw] .excalidraw-sidebar-icon-close {\n display: none;\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-frame {\n padding-left: var(--excalidraw-sidebar-width);\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar {\n left: 0;\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-toggle {\n left: calc(var(--excalidraw-sidebar-width) + 12px);\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-icon-open {\n display: none;\n}\n\n.page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-icon-close {\n display: block;\n}\n\n@media (max-width: 800px) {\n .page[data-frame=excalidraw] {\n --excalidraw-sidebar-width: calc(100vw - 56px);\n }\n .page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-frame {\n padding-left: 0;\n }\n .page[data-frame=excalidraw].excalidraw-sidebar-open .excalidraw-sidebar-toggle {\n left: calc(var(--excalidraw-sidebar-width) + 12px);\n }\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .spacer {\n display: none;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer button.desktop-explorer,\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer button.mobile-explorer {\n display: none !important;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer {\n order: initial;\n overflow-y: hidden;\n overflow: hidden;\n flex: 1 1 0;\n min-height: 0;\n flex-shrink: initial;\n align-self: initial;\n margin-top: 0;\n margin-bottom: 0;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer .explorer-content,\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer.collapsed > .explorer-content,\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer:not(.collapsed) > .explorer-content {\n position: static;\n width: auto;\n max-width: none;\n height: 100%;\n max-height: 100%;\n transform: none !important;\n visibility: visible !important;\n padding: 0;\n overflow-y: auto;\n z-index: auto;\n background-color: transparent;\n}\n.page[data-frame=excalidraw] .excalidraw-sidebar .explorer-content > .explorer-ul {\n overscroll-behavior: auto;\n}\n\n.excalidraw-overlays {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.excalidraw-overlay {\n position: absolute;\n display: none;\n flex-direction: column;\n pointer-events: auto;\n cursor: default;\n user-select: text;\n}\n\n.excalidraw-embed-note,\n.excalidraw-embed-url {\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: 8px;\n border: 2px solid var(--lightgray);\n display: flex;\n flex-direction: column;\n background: var(--light);\n box-sizing: border-box;\n}\n\n.excalidraw-embed-header {\n padding: 8px 12px;\n border-bottom: 1px solid var(--lightgray);\n font-size: 13px;\n font-family: var(--bodyFont, sans-serif);\n color: var(--darkgray);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-shrink: 0;\n}\n.excalidraw-embed-header a {\n color: var(--darkgray);\n text-decoration: none;\n}\n\n.excalidraw-embed-content {\n flex: 1;\n overflow: auto;\n padding: 8px 12px;\n font-family: var(--bodyFont, sans-serif);\n font-size: 12px;\n line-height: 1.5;\n color: var(--darkgray);\n background: var(--light);\n}\n\n.excalidraw-embed-open-link {\n display: block;\n padding: 4px 0;\n color: var(--secondary);\n font-size: 12px;\n text-decoration: none;\n font-family: var(--bodyFont, sans-serif);\n}\n\n.excalidraw-embed-body {\n font-size: 12px;\n line-height: 1.5;\n color: var(--dark);\n}\n.excalidraw-embed-body h1 {\n font-size: 1.6em;\n margin: 0.5em 0 0.25em;\n}\n.excalidraw-embed-body h2 {\n font-size: 1.4em;\n margin: 0.5em 0 0.25em;\n}\n.excalidraw-embed-body h3 {\n font-size: 1.2em;\n margin: 0.4em 0 0.2em;\n}\n.excalidraw-embed-body h4 {\n font-size: 1.1em;\n margin: 0.4em 0 0.2em;\n}\n.excalidraw-embed-body h5 {\n font-size: 1.05em;\n margin: 0.3em 0 0.15em;\n}\n.excalidraw-embed-body h6 {\n font-size: 1em;\n margin: 0.3em 0 0.15em;\n}\n.excalidraw-embed-body h1[id] > a[href^=\"#\"],\n.excalidraw-embed-body h2[id] > a[href^=\"#\"],\n.excalidraw-embed-body h3[id] > a[href^=\"#\"],\n.excalidraw-embed-body h4[id] > a[href^=\"#\"],\n.excalidraw-embed-body h5[id] > a[href^=\"#\"],\n.excalidraw-embed-body h6[id] > a[href^=\"#\"] {\n display: none;\n}\n\n.excalidraw-embed-missing {\n color: var(--gray);\n font-size: 12px;\n}\n\n.excalidraw-embed-iframe {\n flex: 1;\n width: 100%;\n border: none;\n}\n\n.transclude .excalidraw-page {\n height: auto;\n}\n.transclude .excalidraw-container {\n height: auto;\n min-height: 400px;\n}\n.transclude .excalidraw-controls {\n position: absolute;\n}\n\n.popover-inner .excalidraw-page {\n height: auto;\n}\n.popover-inner .excalidraw-container {\n height: auto;\n min-height: 200px;\n max-height: 300px;\n}\n.popover-inner .excalidraw-controls {\n display: none;\n}","function B(){let n=document.querySelector(\".page[data-frame='excalidraw']\");if(n){N(n),q(n);return}let t=document.querySelectorAll(\".excalidraw-page\");for(let v of t)q(v)}function N(n){let t=n.querySelector(\".excalidraw-sidebar-toggle\");t&&(t.addEventListener(\"click\",()=>{n.classList.toggle(\"excalidraw-sidebar-open\")}),window.addCleanup(()=>{n.classList.remove(\"excalidraw-sidebar-open\")}))}function q(n){let t=n.querySelector(\".excalidraw-container\");if(!t)return;let v=t.querySelector(\"svg\");if(!v)return;t.style.backgroundColor=\"var(--excalidraw-bg, var(--light))\";var h=n.querySelector(\".excalidraw-overlays\");let a=1,u=0,d=0,c=!1,m=0,M=0;function O(){if(h){var e=h.querySelectorAll(\".excalidraw-overlay\");if(e.length!==0){var o=parseFloat(h.getAttribute(\"data-offset-x\"))||0,l=parseFloat(h.getAttribute(\"data-offset-y\"))||0,r=v.getScreenCTM(),g=t.getBoundingClientRect();if(r)for(var p=0;p<e.length;p++){var i=e[p],A=parseFloat(i.getAttribute(\"data-x\"))||0,Y=parseFloat(i.getAttribute(\"data-y\"))||0,T=parseFloat(i.getAttribute(\"data-w\"))||0,P=parseFloat(i.getAttribute(\"data-h\"))||0,C=A+o,F=Y+l,k=C*r.a+r.e-g.left,z=F*r.d+r.f-g.top,D=T*r.a,I=P*r.d;i.style.left=k+\"px\",i.style.top=z+\"px\",i.style.width=D+\"px\",i.style.height=I+\"px\",i.style.display=\"flex\"}}}}O();function s(){v.style.transform=\"translate(\"+u+\"px, \"+d+\"px) scale(\"+a+\")\",O()}function y(e){e.preventDefault();var o=e.deltaY>0?-.15:.15;a=Math.max(.1,Math.min(5,a+o)),s()}function E(e){e.button===0&&(c=!0,m=e.clientX-u,M=e.clientY-d,t.style.cursor=\"grabbing\")}function w(e){c&&(u=e.clientX-m,d=e.clientY-M,s())}function x(){c=!1,t.style.cursor=\"grab\"}var L=n.querySelector(\".excalidraw-zoom-in\"),S=n.querySelector(\".excalidraw-zoom-out\"),b=n.querySelector(\".excalidraw-reset\");L&&L.addEventListener(\"click\",function(){a=Math.min(5,a+.15),s()}),S&&S.addEventListener(\"click\",function(){a=Math.max(.1,a-.15),s()}),b&&b.addEventListener(\"click\",function(){a=1,u=0,d=0,s()});var f=0;function X(e){if(e.touches.length===1)c=!0,m=e.touches[0].clientX-u,M=e.touches[0].clientY-d;else if(e.touches.length===2){c=!1;var o=e.touches[0].clientX-e.touches[1].clientX,l=e.touches[0].clientY-e.touches[1].clientY;f=Math.sqrt(o*o+l*l)}}function Z(e){if(e.preventDefault(),e.touches.length===1&&c)u=e.touches[0].clientX-m,d=e.touches[0].clientY-M,s();else if(e.touches.length===2&&f>0){var o=e.touches[0].clientX-e.touches[1].clientX,l=e.touches[0].clientY-e.touches[1].clientY,r=Math.sqrt(o*o+l*l),g=r/f;a=Math.max(.1,Math.min(5,a*g)),f=r,s()}}function _(){c=!1,f=0}t.addEventListener(\"wheel\",y,{passive:!1}),t.addEventListener(\"mousedown\",E),document.addEventListener(\"mousemove\",w),document.addEventListener(\"mouseup\",x),t.addEventListener(\"touchstart\",X,{passive:!0}),t.addEventListener(\"touchmove\",Z,{passive:!1}),t.addEventListener(\"touchend\",_),window.addCleanup(function(){t.removeEventListener(\"wheel\",y),t.removeEventListener(\"mousedown\",E),document.removeEventListener(\"mousemove\",w),document.removeEventListener(\"mouseup\",x),t.removeEventListener(\"touchstart\",X),t.removeEventListener(\"touchmove\",Z),t.removeEventListener(\"touchend\",_)})}document.addEventListener(\"nav\",B);\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n QuartzPluginData,\n FullSlug,\n FilePath,\n} from \"@quartz-community/types\";\nimport {\n resolveRelative,\n slugifyFilePath,\n normalizeHastElement,\n} from \"@quartz-community/utils/path\";\nimport { toHtml } from \"hast-util-to-html\";\nimport type { ExcalidrawData, ExcalidrawPageOptions } from \"../types\";\nimport { renderToSvg } from \"../renderer\";\nimport type { ResolvedEmbed, RenderContext, EmbedOverlay } from \"../renderer\";\nimport style from \"./styles/excalidraw.scss\";\n// @ts-expect-error inline script import handled by bundler\nimport script from \"./scripts/excalidraw.inline.ts\";\n\nfunction stripTranscludes(html: string): string {\n return html\n .replace(/<blockquote[^>]*class=\"[^\"]*transclude[^\"]*\"[^>]*>[\\s\\S]*?<\\/blockquote>/gi, \"\")\n .replace(/<div[^>]*class=\"[^\"]*transclude[^\"]*\"[^>]*>[\\s\\S]*?<\\/div>/gi, \"\");\n}\n\nfunction resolveEmbeds(\n data: ExcalidrawData,\n currentSlug: FullSlug,\n allFiles: QuartzPluginData[],\n): Record<string, ResolvedEmbed> {\n const result: Record<string, ResolvedEmbed> = {};\n const embeddables = data.elements.filter(\n (el) => el.type === \"embeddable\" || el.type === \"iframe\",\n );\n\n for (const el of embeddables) {\n const link = (el.link as string) ?? \"\";\n if (!link.startsWith(\"[[\")) continue;\n\n const target = link.replace(/^\\[\\[/, \"\").replace(/\\]\\]$/, \"\");\n const targetLower = target.toLowerCase();\n\n const page = allFiles.find((f) => {\n if (!f.slug) return false;\n if (f.slug === targetLower) return true;\n const lastSegment = f.slug.split(\"/\").pop();\n return lastSegment === targetLower;\n });\n\n const pageSlug = (page?.slug ?? slugifyFilePath(target as FilePath)) as FullSlug;\n const href = resolveRelative(currentSlug, pageSlug);\n\n if (!page || !page.htmlAst) {\n result[el.id] = {\n html: `<a href=\"${href}\" style=\"color:#228be6;text-decoration:none;font-size:13px;\">${target}</a>`,\n href,\n };\n continue;\n }\n\n const tree = page.htmlAst;\n const rebased = {\n ...tree,\n children: tree.children.map((child: unknown) => {\n if ((child as { type: string }).type === \"element\") {\n return normalizeHastElement(\n child as Parameters<typeof normalizeHastElement>[0],\n currentSlug,\n pageSlug,\n );\n }\n return child;\n }),\n };\n\n let html = toHtml(rebased as Parameters<typeof toHtml>[0], { allowDangerousHtml: true });\n html = stripTranscludes(html);\n result[el.id] = { html, href };\n }\n\n return result;\n}\n\nfunction resolveImages(\n imagePaths: Record<string, string>,\n currentSlug: FullSlug,\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const [hash, filePath] of Object.entries(imagePaths)) {\n const imageSlug = slugifyFilePath(filePath as FilePath) as FullSlug;\n result[hash] = resolveRelative(currentSlug, imageSlug);\n }\n\n return result;\n}\n\nfunction renderOverlay(overlay: EmbedOverlay): unknown {\n const label = overlay.link\n .replace(/^\\[\\[/, \"\")\n .replace(/\\]\\]$/, \"\")\n .replace(/^https?:\\/\\//, \"\");\n const truncatedLabel = label.length > 50 ? label.slice(0, 47) + \"...\" : label;\n\n if (overlay.isWikilink) {\n const noteContent = overlay.resolved\n ? `<a href=\"${overlay.resolved.href}\" class=\"excalidraw-embed-open-link\">Open note →</a><div class=\"excalidraw-embed-body\">${overlay.resolved.html}</div>`\n : `<span class=\"excalidraw-embed-missing\">Note not found</span>`;\n\n return (\n <div\n class=\"excalidraw-overlay excalidraw-embed-note\"\n data-overlay-id={overlay.id}\n data-x={overlay.x}\n data-y={overlay.y}\n data-w={overlay.width}\n data-h={overlay.height}\n >\n <div class=\"excalidraw-embed-header\">{\"📄 \" + truncatedLabel}</div>\n <div class=\"excalidraw-embed-content\" dangerouslySetInnerHTML={{ __html: noteContent }} />\n </div>\n );\n }\n\n return (\n <div\n class=\"excalidraw-overlay excalidraw-embed-url\"\n data-overlay-id={overlay.id}\n data-x={overlay.x}\n data-y={overlay.y}\n data-w={overlay.width}\n data-h={overlay.height}\n >\n <div class=\"excalidraw-embed-header\">\n <a href={overlay.link} target=\"_blank\" rel=\"noopener noreferrer\">\n {\"🔗 \" + truncatedLabel}\n </a>\n </div>\n <iframe\n src={overlay.link}\n class=\"excalidraw-embed-iframe\"\n sandbox=\"allow-scripts allow-same-origin allow-popups\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer\"\n />\n </div>\n );\n}\n\nexport default ((userOpts?: ExcalidrawPageOptions) => {\n const Component: QuartzComponent = (props: QuartzComponentProps) => {\n const { fileData, allFiles } = props;\n const data = fileData.excalidrawData as ExcalidrawData;\n const options = (fileData.excalidrawOptions as ExcalidrawPageOptions) ?? userOpts ?? {};\n const currentSlug = fileData.slug!;\n\n const resolvedEmbedMap = allFiles ? resolveEmbeds(data, currentSlug, allFiles) : undefined;\n const imagePaths = (fileData.excalidrawImagePaths as Record<string, string>) ?? {};\n const resolvedImageMap = resolveImages(imagePaths, currentSlug);\n const renderCtx: RenderContext = {\n resolvedEmbeds: resolvedEmbedMap,\n resolvedImages: resolvedImageMap,\n };\n const result = renderToSvg(data, options, renderCtx);\n\n return (\n <article\n class=\"excalidraw-page\"\n role=\"img\"\n aria-label={fileData.frontmatter?.title ?? \"Excalidraw drawing\"}\n >\n <div class=\"excalidraw-controls\">\n <button class=\"excalidraw-zoom-in\" type=\"button\" aria-label=\"Zoom in\">\n +\n </button>\n <button class=\"excalidraw-zoom-out\" type=\"button\" aria-label=\"Zoom out\">\n −\n </button>\n <button class=\"excalidraw-reset\" type=\"button\" aria-label=\"Reset view\">\n ⟲\n </button>\n </div>\n <div class=\"excalidraw-container\" dangerouslySetInnerHTML={{ __html: result.svg }} />\n <div\n class=\"excalidraw-overlays\"\n data-viewbox-w={result.viewBox.width}\n data-viewbox-h={result.viewBox.height}\n data-offset-x={result.viewBox.offsetX}\n data-offset-y={result.viewBox.offsetY}\n >\n {result.overlays.map((o) => renderOverlay(o))}\n </div>\n {options.enableInteraction !== false && (\n <script\n type=\"application/json\"\n class=\"excalidraw-data\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify({\n elements: data.elements,\n appState: data.appState,\n files: data.files,\n }),\n }}\n />\n )}\n </article>\n );\n };\n\n Component.css = style;\n Component.afterDOMLoaded = script;\n\n return Component;\n}) satisfies QuartzComponentConstructor;\n","import type {\n FilePath,\n QuartzPageTypePlugin,\n PageMatcher,\n FullSlug,\n VirtualPage,\n ProcessedContent,\n BuildCtx,\n} from \"@quartz-community/types\";\nimport { joinSegments, slugifyFilePath } from \"@quartz-community/utils/path\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { parseExcalidraw } from \"./parser\";\nimport ExcalidrawBody from \"./components/ExcalidrawBody\";\nimport type { ExcalidrawPageOptions } from \"./types\";\n\nconst excalidrawMatcher: PageMatcher = ({ fileData }) => {\n return \"excalidrawData\" in fileData;\n};\n\nconst isDrawing = (path: string) => path.endsWith(\".excalidraw.md\") || path.endsWith(\".excalidraw\");\n\n// A drawing stored as Markdown is parsed as a note first, so it has frontmatter (`publish`,\n// `draft`, `password`, …). This plugin's filter takes the note out of the content (the drawing\n// gets its own page instead) and keeps its frontmatter for that page, so the site's filters and\n// encryption see it as they see notes. A drawing note an earlier filter rejected never reaches\n// this filter, and gets no page. Module state: Quartz instantiates the plugin once per category\n// (filter, page type). Kept per build (ctx.buildId), as the filters run again on every rebuild.\nlet drawingNotesBuild: string | undefined;\nconst drawingNotes = new Map<string, Record<string, unknown>>();\nfunction drawingNotesOf(ctx: BuildCtx): Map<string, Record<string, unknown>> {\n if (drawingNotesBuild !== ctx.buildId) {\n drawingNotesBuild = ctx.buildId;\n drawingNotes.clear();\n }\n return drawingNotes;\n}\n\nexport const ExcalidrawPage: QuartzPageTypePlugin<ExcalidrawPageOptions> = (opts) => ({\n name: \"ExcalidrawPage\",\n priority: 25,\n fileExtensions: [\".excalidraw.md\", \".excalidraw\"],\n match: excalidrawMatcher,\n\n generate({ ctx }) {\n const excalidrawFiles = ctx.allFiles.filter(isDrawing);\n\n const imageFiles = ctx.allFiles.filter((fp: string) =>\n /\\.(png|jpe?g|gif|svg|webp|avif|bmp|ico)$/i.test(fp),\n );\n\n const virtualPages: VirtualPage[] = [];\n const notes = drawingNotesOf(ctx);\n\n for (const filePath of excalidrawFiles) {\n const fullPath = join(ctx.argv.directory, filePath);\n let content: string;\n try {\n content = readFileSync(fullPath, \"utf-8\");\n } catch {\n continue;\n }\n\n const isNote = filePath.endsWith(\".md\");\n const noteFrontmatter = isNote ? notes.get(filePath) : undefined;\n if (isNote && !noteFrontmatter) continue;\n\n const data = parseExcalidraw(content, filePath);\n if (!data) continue;\n\n const resolvedImagePaths: Record<string, string> = {};\n if (data.embeddedFiles) {\n for (const [hash, wikilink] of Object.entries(data.embeddedFiles)) {\n if (data.files[hash]?.dataURL) continue;\n const targetName = wikilink.split(\"/\").pop()?.toLowerCase() ?? \"\";\n const match = imageFiles.find((fp: string) => {\n const fpName = fp.split(\"/\").pop()?.toLowerCase() ?? \"\";\n return fpName === targetName;\n });\n if (match) {\n resolvedImagePaths[hash] = match;\n }\n }\n }\n\n const baseName =\n filePath\n .replace(/\\.excalidraw\\.md$/, \"\")\n .replace(/\\.excalidraw$/, \"\")\n .split(\"/\")\n .pop() ?? \"Excalidraw Drawing\";\n const slug = slugifyFilePath(filePath as Parameters<typeof slugifyFilePath>[0]) as FullSlug;\n\n virtualPages.push({\n slug,\n title: baseName,\n data: {\n // The page stands for the drawing file: give it the source paths Quartz's parser\n // sets on notes (instead of the synthetic `<slug>.md`), so bases list it as that\n // file (file.ext \"excalidraw\", or \"md\" for a drawing stored as Markdown), and\n // folder listings and the content index see its real path.\n filePath: joinSegments(ctx.argv.directory, filePath) as FilePath,\n relativePath: filePath as FilePath,\n frontmatter: { ...noteFrontmatter, title: baseName, tags: [\"excalidraw\"] },\n excalidrawData: data,\n excalidrawOptions: opts,\n excalidrawImagePaths: resolvedImagePaths,\n },\n });\n }\n\n return virtualPages;\n },\n\n shouldPublish(ctx: BuildCtx, content: ProcessedContent) {\n const data = content[1].data;\n // this plugin's own pages (Quartz 5.1+ runs the filters on pages that stand for files)\n if (\"excalidrawData\" in data) return true;\n const relativePath = data.relativePath ?? \"\";\n if (!isDrawing(relativePath)) return true;\n drawingNotesOf(ctx).set(relativePath, { ...(data.frontmatter ?? {}) });\n return false;\n },\n\n layout: \"excalidraw\",\n frame: \"excalidraw\",\n body: ExcalidrawBody,\n});\n","import type { PageFrame, PageFrameProps } from \"@quartz-community/types\";\nimport type { ComponentChildren } from \"preact\";\n\nexport const ExcalidrawFrame: PageFrame = {\n name: \"excalidraw\",\n css: `\n.page[data-frame=\"excalidraw\"] {\n max-width: none;\n margin: 0;\n min-height: 100vh;\n}\n\n.page[data-frame=\"excalidraw\"] > #quartz-body {\n grid-template-columns: auto;\n grid-template-rows: 1fr;\n grid-template-areas:\n \"grid-center\";\n height: 100vh;\n padding: 0;\n}\n\n.page[data-frame=\"excalidraw\"] > #quartz-body > .center.excalidraw-frame {\n max-width: 100%;\n min-width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.page[data-frame=\"excalidraw\"] > #quartz-body.lock-scroll > * {\n transform: none;\n}\n`,\n render({ componentData, pageBody: Content, left }: PageFrameProps): unknown {\n const renderSlot = (Component: (props: typeof componentData) => unknown): ComponentChildren =>\n Component(componentData) as ComponentChildren;\n return (\n <div class=\"center excalidraw-frame\">\n <button class=\"excalidraw-sidebar-toggle\" type=\"button\" aria-label=\"Toggle sidebar\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"excalidraw-sidebar-icon-open\"\n >\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"excalidraw-sidebar-icon-close\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n <aside class=\"excalidraw-sidebar\">\n {left.map((BodyComponent) => renderSlot(BodyComponent))}\n </aside>\n <div class=\"excalidraw-stage\">{renderSlot(Content)}</div>\n </div>\n );\n },\n};\n"]}