clone

a browser-first diagram editor with live svg previews, local drafts and encrypted, accountless sharing

finish renderer extraction from Fly

Dami committed 75d4d56
commit
75d4d563b0f1d7cb379a1c5dd12b291c226e7e7f
parent
71a838ec92a74a1fc3cef79b5dd879c23c2fe185
author
Dami <dami.etoile@gmail.com>
381 files changed, +3025 -1234
Adiagramzip-client-units/tikz/.gitignore3+
Adiagramzip-client-units/tikz/README.md48++
Adiagramzip-client-units/tikz/assets/core.dump.gzbin
Adiagramzip-client-units/tikz/assets/fonts.css560++++++++++++++++++++++
Adiagramzip-client-units/tikz/assets/fonts/cmb10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbsy10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbsy5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbsy6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbsy7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbsy8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbsy9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbx9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbxsl10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmbxti10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmcsc10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmcsc8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmcsc9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmdunh10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmex10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmex7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmex8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmex9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmff10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmfi10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmfib8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cminch.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmitt10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmi9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmib10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmib5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmib6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmib7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmib8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmmib9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr17.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmr9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsl10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsl12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsl8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsl9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsltt10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmss10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmss12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmss17.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmss8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmss9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssbx10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssdc10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssi10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssi12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssi17.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssi8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssi9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssq8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmssqi8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsy10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsy5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsy6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsy7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsy8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmsy9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtcsc10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtex10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtex8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtex9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmti10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmti12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmti7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmti8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmti9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtt10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtt12.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtt8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmtt9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmu10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/cmvtt10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/euex10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/euex7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/euex8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/euex9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufb10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufb5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufb6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufb7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufb8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufb9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufm10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufm5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufm6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufm7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufm8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eufm9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurb10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurb5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurb6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurb7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurb8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurb9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurm10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurm5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurm6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurm7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurm8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eurm9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusb10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusb5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusb6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusb7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusb8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusb9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusm10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusm5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusm6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusm7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusm8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/eusm9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasy10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasy5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasy6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasy7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasy8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasy9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lasyb10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lcmss8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lcmssb8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/lcmssi8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msam10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msam5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msam6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msam7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msam8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msam9.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msbm10.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msbm5.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msbm6.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msbm7.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msbm8.woff2bin
Adiagramzip-client-units/tikz/assets/fonts/msbm9.woff2bin
Adiagramzip-client-units/tikz/assets/run-tex.js1+
Adiagramzip-client-units/tikz/assets/tex.wasm.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amsbsy.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amsfonts.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amsgen.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amsmath.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amsopn.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amssymb.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/amstext.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/array.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/etoolbox.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/expl3.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/hf-tikz.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/ifthen.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/l3backend-dvips.def.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfcalendar.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfcalendar.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfint.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryarrows.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryarrows.meta.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarybbox.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarycurvilinear.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydatavisualization.barcharts.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydatavisualization.formats.functions.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydatavisualization.polar.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.footprints.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.fractals.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.markings.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.pathmorphing.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.pathreplacing.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.shapes.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.text.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryfadings.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryfixedpointarithmetic.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryfpu.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryintersections.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarylindenmayersystems.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarypatterns.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarypatterns.meta.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarypgfplots.surfshading.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryplotmarks.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshadings.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.arrows.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.callouts.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.ee.IEC.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.ee.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.logic.IEC.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.logic.US.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.logic.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.geometric.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.misc.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.multipart.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.symbols.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgflibrarysvg.path.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmoduleanimations.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmodulebending.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmoduledatavisualization.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmoduledecorations.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmodulenonlineartransformations.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmoduleoo.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfmoduleparser.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.errorbars.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.markers.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.paths.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.revision.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.scaling.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplots.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsarray.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsbinary.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsbinary.data.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotscolor.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotscolormap.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotscoordprocessing.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotscore.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsdeque.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotslibrary.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsliststructure.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsliststructureext.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsmatrix.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsmeshplothandler.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsmeshplotimage.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsoldpgfsupp_loader.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsoldpgfsupp_pgfutil-common-lists.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsplothandlers.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsstackedplots.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotssysgeneric.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotstableshared.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsticks.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsutil.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfplotsutil.verb.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfsys-luatex.def.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/pgfsysanimations.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikz-3dplot.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikz-cd.sty.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrary3d.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryangles.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryanimations.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryarrows.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryautomata.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarybabel.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarybackgrounds.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarybending.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycalc.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycalendar.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycd.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarychains.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.ee.IEC.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.ee.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.CDH.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.IEC.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.US.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.3d.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.barcharts.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.formats.functions.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.polar.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.sparklines.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.footprints.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.fractals.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.markings.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.pathmorphing.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.pathreplacing.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.shapes.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.text.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryer.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryfadings.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryfit.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryfixedpointarithmetic.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryfolding.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryfpu.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarygraphs.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarygraphs.standard.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryintersections.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarylindenmayersystems.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarymath.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarymatrix.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarymindmap.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarypatterns.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarypatterns.meta.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryperspective.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarypetri.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarypgfplots.contourlua.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryplothandlers.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryplotmarks.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarypositioning.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryquotes.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryrdf.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryscopes.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshadings.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshadows.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.arrows.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.callouts.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.gates.logic.IEC.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.gates.logic.US.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.geometric.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.misc.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.multipart.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.symbols.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarysnakes.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryspy.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarysvg.path.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarythrough.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibrarytrees.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryturtle.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/tikzlibraryviews.code.tex.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/umsa.fd.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/umsb.fd.gzbin
Adiagramzip-client-units/tikz/assets/tex_files/xparse.sty.gzbin
Adiagramzip-client-units/tikz/assets/tikzjax.js1+
Adiagramzip-client-units/tikz/package-lock.json72+++
Adiagramzip-client-units/tikz/package.json11+
Adiagramzip-client-units/tikz/scripts/build.mjs18+
Adiagramzip-client-units/tikz/scripts/check.mjs32+
Adiagramzip-client-units/tikz/src/frame.js105++++
Adiagramzip-client-units/tikz/unit/_headers4+
Adiagramzip-client-units/tikz/unit/index.html12+
Adiagramzip-client-units/tikz/unit/worker.js33+
Adiagramzip-client-units/tikz/vendor-licenses/GPL-3.0.txt674++++++++++++++++++++++++++
Adiagramzip-client-units/tikz/vendor-licenses/LPPL-1.3c.txt408++++++++++++++++
Adiagramzip-client-units/tikz/wrangler.jsonc15+
Mdiagramzip-docs/scripts/check-rendered-examples.mjs20+-
Mdiagramzip-docs/src/components/DiagramExample/index.js136+++++-
Adiagramzip-docs/src/components/DiagramExample/rendererRouting.mjs18+
Mdiagramzip-docs/static/_headers2+-
Mdiagramzip-docs/test/diagram-example.test.mjs10+
Mdiagramzip-render/README.md149+++---
Mdiagramzip-render/package.json1-
Ddiagramzip-render/scripts/deploy-compatibility-units.mjs39--
Mdiagramzip-render/scripts/deploy-worker-units.mjs3+-
Mdiagramzip-render/scripts/smoke-units.mjs11+-
Mdiagramzip-render/scripts/smoke.mjs134+----
Adiagramzip-render/src/adapters/edge/umlet.ts22+
Ddiagramzip-render/src/adapters/origin.ts67---
Mdiagramzip-render/src/catalog.ts31+-
Mdiagramzip-render/src/index.ts117+----
Mdiagramzip-render/src/types.ts2+-
Adiagramzip-render/src/umlet.ts361++++++++++++++
Mdiagramzip-render/src/unit.ts2+-
Ddiagramzip-render/src/units/compatibility-group.ts15-
Ddiagramzip-render/src/units/compatibility.ts14-
Adiagramzip-render/src/units/umlet.ts15+
Mdiagramzip-render/test/catalog.test.ts21+-
Mdiagramzip-render/test/gateway.test.ts45+-
Adiagramzip-render/test/umlet.test.ts41++
Mdiagramzip-render/test/unit.test.ts8+-
Mdiagramzip-render/worker-configuration.d.ts10+-
Ddiagramzip-render/wrangler.compatibility/tikz.jsonc1-
Ddiagramzip-render/wrangler.compatibility/umlet.jsonc1-
Mdiagramzip-render/wrangler.jsonc4-
Adiagramzip-render/wrangler.units/umlet.jsonc11+
Mdiagramzip/PERSISTENCE.md10+-
Mdiagramzip/src/client-renderers.js1+
Mdiagramzip/src/preview.js58+--
Mdiagramzip/src/renderer-units.js13-
Mdiagramzip/test/client-renderers.test.js5+-
Mdiagramzip/test/preview-routing.test.js58+-
Mdiagramzip/test/renderer-units.test.js33+-
Mdiagramzip/vite.config.js1-
Mdocs/refactor-engines.md764+++++++-----------------------
Mserver/src/main/resources/web/diagramzip/assets/index-CzBQjn0p.js8+-
A diagramzip-client-units/tikz/.gitignore +3 -0
A diagramzip-client-units/tikz/README.md +48 -0
@@ -0,0 +1,48 @@
1+# TikZ client renderer2+3+This isolated client unit runs the self-hosted TikZJax browser build. The4+iframe receives `diagram.zip:renderer:v1` messages, compiles source with the5+bundled TeX WebAssembly engine, extracts the generated SVG from dvi2html, and6+returns the SVG to the parent frame. It has no server-side or Fly fallback.7+8+## Pinned upstream9+10+- Package: `@planktimerr/tikzjax@1.0.63`11+- Source: https://github.com/maker-jr/tikzjax12+- Original project: https://github.com/kisonecat/tikzjax13+- Package tarball: `@planktimerr/tikzjax@1.0.63`14+- npm integrity: `sha512-W46i6+CZKPJ4P/08bQ/iCp8Vy0tof8hCaXGWrMetZ5DJPpkERaiW0r0L3jmUpFB1SWhNvp/uKaXAAMmDET3BKw==`15+- `tikzjax.js`: `b360666cfc2425180abc5d256c81ea686dee8fe8381ef9a73856cb28bdf3bead`16+- `run-tex.js`: `81cdc50b15749e63b805561160136bacd97a7a978f0b70818a4d15551a0d0e15`17+- `tex.wasm.gz`: `f8667f45e90039832df4f62550f10ff0c2f47781dbfdde9510f0ff3f360a61ba`18+- `core.dump.gz`: `ae9f69dfe3837606240c5b9cb50f86aa0ee7463bbae4c26f2843b17eb155b91f`19+- Complete asset-tree SHA-256: `92045ae366580b0fd119ea0ce4bca7d70f9cf58865d21cc92497b431492ae25e`20+21+The source package declares GPL-3.0+. Its upstream TeX/TikZ components are22+distributed under LPPL-1.3c. The applicable notices are vendored in23+`vendor-licenses/`.24+25+## Security and limits26+27+The unit uses a script-only iframe with no same-origin access. CSP permits only28+self-hosted scripts/assets, same-origin asset fetches, and the WebAssembly29+worker blob required by TikZJax. It blocks frames, forms, external images,30+external connections, and non-self resources. Source is limited to 256 KiB,31+SVG output to 4 MiB, and each render to 20 seconds. Rendering is serialized;32+each TeX invocation receives a fresh WebAssembly memory and virtual filesystem.33+34+The adapter removes scripts, `foreignObject`, event-handler attributes, and35+non-local href/src attributes before returning SVG.36+37+Each render owns an isolated DOM container. Timeout and completion handlers38+are scoped to that container, so a late TeX result cannot satisfy a later39+request and completed diagrams do not accumulate in the frame.40+41+## Known losses42+43+This is not full TeX Live. It supports the package/library files shipped in44+the pinned `dist/tex_files` bundle. External `\\input`, package downloads,45+shell escape, filesystem access, and external resources are unavailable.46+Typography, layout, and SVG details may differ from the native `dvisvgm`47+renderer. The repository periodic-table fixture has been validated in a real48+browser and produces SVG through this protocol.
A diagramzip-client-units/tikz/assets/core.dump.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts.css +560 -0
@@ -0,0 +1,560 @@
1+@font-face {2+ font-family: cmb10;3+ src: url('fonts/cmb10.woff2') format('woff2');4+}5+@font-face {6+ font-family: cmbsy10;7+ src: url('fonts/cmbsy10.woff2') format('woff2');8+}9+@font-face {10+ font-family: cmbsy6;11+ src: url('fonts/cmbsy6.woff2') format('woff2');12+}13+@font-face {14+ font-family: cmbsy7;15+ src: url('fonts/cmbsy7.woff2') format('woff2');16+}17+@font-face {18+ font-family: cmbsy8;19+ src: url('fonts/cmbsy8.woff2') format('woff2');20+}21+@font-face {22+ font-family: cmbsy9;23+ src: url('fonts/cmbsy9.woff2') format('woff2');24+}25+@font-face {26+ font-family: cmbx10;27+ src: url('fonts/cmbx10.woff2') format('woff2');28+}29+@font-face {30+ font-family: cmbx12;31+ src: url('fonts/cmbx12.woff2') format('woff2');32+}33+@font-face {34+ font-family: cmbx5;35+ src: url('fonts/cmbx5.woff2') format('woff2');36+}37+@font-face {38+ font-family: cmbx6;39+ src: url('fonts/cmbx6.woff2') format('woff2');40+}41+@font-face {42+ font-family: cmbx7;43+ src: url('fonts/cmbx7.woff2') format('woff2');44+}45+@font-face {46+ font-family: cmbx8;47+ src: url('fonts/cmbx8.woff2') format('woff2');48+}49+@font-face {50+ font-family: cmbx9;51+ src: url('fonts/cmbx9.woff2') format('woff2');52+}53+@font-face {54+ font-family: cmbxsl10;55+ src: url('fonts/cmbxsl10.woff2') format('woff2');56+}57+@font-face {58+ font-family: cmbxti10;59+ src: url('fonts/cmbxti10.woff2') format('woff2');60+}61+@font-face {62+ font-family: cmcsc10;63+ src: url('fonts/cmcsc10.woff2') format('woff2');64+}65+@font-face {66+ font-family: cmcsc8;67+ src: url('fonts/cmcsc8.woff2') format('woff2');68+}69+@font-face {70+ font-family: cmcsc9;71+ src: url('fonts/cmcsc9.woff2') format('woff2');72+}73+@font-face {74+ font-family: cmdunh10;75+ src: url('fonts/cmdunh10.woff2') format('woff2');76+}77+@font-face {78+ font-family: cmex10;79+ src: url('fonts/cmex10.woff2') format('woff2');80+}81+@font-face {82+ font-family: cmex7;83+ src: url('fonts/cmex7.woff2') format('woff2');84+}85+@font-face {86+ font-family: cmex8;87+ src: url('fonts/cmex8.woff2') format('woff2');88+}89+@font-face {90+ font-family: cmex9;91+ src: url('fonts/cmex9.woff2') format('woff2');92+}93+@font-face {94+ font-family: cmff10;95+ src: url('fonts/cmff10.woff2') format('woff2');96+}97+@font-face {98+ font-family: cmfi10;99+ src: url('fonts/cmfi10.woff2') format('woff2');100+}101+@font-face {102+ font-family: cmfib8;103+ src: url('fonts/cmfib8.woff2') format('woff2');104+}105+@font-face {106+ font-family: cminch;107+ src: url('fonts/cminch.woff2') format('woff2');108+}109+@font-face {110+ font-family: cmitt10;111+ src: url('fonts/cmitt10.woff2') format('woff2');112+}113+@font-face {114+ font-family: cmmi10;115+ src: url('fonts/cmmi10.woff2') format('woff2');116+}117+@font-face {118+ font-family: cmmi12;119+ src: url('fonts/cmmi12.woff2') format('woff2');120+}121+@font-face {122+ font-family: cmmi5;123+ src: url('fonts/cmmi5.woff2') format('woff2');124+}125+@font-face {126+ font-family: cmmi6;127+ src: url('fonts/cmmi6.woff2') format('woff2');128+}129+@font-face {130+ font-family: cmmi7;131+ src: url('fonts/cmmi7.woff2') format('woff2');132+}133+@font-face {134+ font-family: cmmi8;135+ src: url('fonts/cmmi8.woff2') format('woff2');136+}137+@font-face {138+ font-family: cmmi9;139+ src: url('fonts/cmmi9.woff2') format('woff2');140+}141+@font-face {142+ font-family: cmmib10;143+ src: url('fonts/cmmib10.woff2') format('woff2');144+}145+@font-face {146+ font-family: cmmib6;147+ src: url('fonts/cmmib6.woff2') format('woff2');148+}149+@font-face {150+ font-family: cmmib7;151+ src: url('fonts/cmmib7.woff2') format('woff2');152+}153+@font-face {154+ font-family: cmmib8;155+ src: url('fonts/cmmib8.woff2') format('woff2');156+}157+@font-face {158+ font-family: cmmib9;159+ src: url('fonts/cmmib9.woff2') format('woff2');160+}161+@font-face {162+ font-family: cmr10;163+ src: url('fonts/cmr10.woff2') format('woff2');164+}165+@font-face {166+ font-family: cmr12;167+ src: url('fonts/cmr12.woff2') format('woff2');168+}169+@font-face {170+ font-family: cmr17;171+ src: url('fonts/cmr17.woff2') format('woff2');172+}173+@font-face {174+ font-family: cmr5;175+ src: url('fonts/cmr5.woff2') format('woff2');176+}177+@font-face {178+ font-family: cmr6;179+ src: url('fonts/cmr6.woff2') format('woff2');180+}181+@font-face {182+ font-family: cmr7;183+ src: url('fonts/cmr7.woff2') format('woff2');184+}185+@font-face {186+ font-family: cmr8;187+ src: url('fonts/cmr8.woff2') format('woff2');188+}189+@font-face {190+ font-family: cmr9;191+ src: url('fonts/cmr9.woff2') format('woff2');192+}193+@font-face {194+ font-family: cmsl10;195+ src: url('fonts/cmsl10.woff2') format('woff2');196+}197+@font-face {198+ font-family: cmsl12;199+ src: url('fonts/cmsl12.woff2') format('woff2');200+}201+@font-face {202+ font-family: cmsl8;203+ src: url('fonts/cmsl8.woff2') format('woff2');204+}205+@font-face {206+ font-family: cmsl9;207+ src: url('fonts/cmsl9.woff2') format('woff2');208+}209+@font-face {210+ font-family: cmsltt10;211+ src: url('fonts/cmsltt10.woff2') format('woff2');212+}213+@font-face {214+ font-family: cmss10;215+ src: url('fonts/cmss10.woff2') format('woff2');216+}217+@font-face {218+ font-family: cmss12;219+ src: url('fonts/cmss12.woff2') format('woff2');220+}221+@font-face {222+ font-family: cmss17;223+ src: url('fonts/cmss17.woff2') format('woff2');224+}225+@font-face {226+ font-family: cmss8;227+ src: url('fonts/cmss8.woff2') format('woff2');228+}229+@font-face {230+ font-family: cmss9;231+ src: url('fonts/cmss9.woff2') format('woff2');232+}233+@font-face {234+ font-family: cmssbx10;235+ src: url('fonts/cmssbx10.woff2') format('woff2');236+}237+@font-face {238+ font-family: cmssdc10;239+ src: url('fonts/cmssdc10.woff2') format('woff2');240+}241+@font-face {242+ font-family: cmssi10;243+ src: url('fonts/cmssi10.woff2') format('woff2');244+}245+@font-face {246+ font-family: cmssi12;247+ src: url('fonts/cmssi12.woff2') format('woff2');248+}249+@font-face {250+ font-family: cmssi17;251+ src: url('fonts/cmssi17.woff2') format('woff2');252+}253+@font-face {254+ font-family: cmssi8;255+ src: url('fonts/cmssi8.woff2') format('woff2');256+}257+@font-face {258+ font-family: cmssi9;259+ src: url('fonts/cmssi9.woff2') format('woff2');260+}261+@font-face {262+ font-family: cmssq8;263+ src: url('fonts/cmssq8.woff2') format('woff2');264+}265+@font-face {266+ font-family: cmssqi8;267+ src: url('fonts/cmssqi8.woff2') format('woff2');268+}269+@font-face {270+ font-family: cmsy10;271+ src: url('fonts/cmsy10.woff2') format('woff2');272+}273+@font-face {274+ font-family: cmsy5;275+ src: url('fonts/cmsy5.woff2') format('woff2');276+}277+@font-face {278+ font-family: cmsy6;279+ src: url('fonts/cmsy6.woff2') format('woff2');280+}281+@font-face {282+ font-family: cmsy7;283+ src: url('fonts/cmsy7.woff2') format('woff2');284+}285+@font-face {286+ font-family: cmsy8;287+ src: url('fonts/cmsy8.woff2') format('woff2');288+}289+@font-face {290+ font-family: cmsy9;291+ src: url('fonts/cmsy9.woff2') format('woff2');292+}293+@font-face {294+ font-family: cmtcsc10;295+ src: url('fonts/cmtcsc10.woff2') format('woff2');296+}297+@font-face {298+ font-family: cmtex10;299+ src: url('fonts/cmtex10.woff2') format('woff2');300+}301+@font-face {302+ font-family: cmtex8;303+ src: url('fonts/cmtex8.woff2') format('woff2');304+}305+@font-face {306+ font-family: cmtex9;307+ src: url('fonts/cmtex9.woff2') format('woff2');308+}309+@font-face {310+ font-family: cmti10;311+ src: url('fonts/cmti10.woff2') format('woff2');312+}313+@font-face {314+ font-family: cmti12;315+ src: url('fonts/cmti12.woff2') format('woff2');316+}317+@font-face {318+ font-family: cmti7;319+ src: url('fonts/cmti7.woff2') format('woff2');320+}321+@font-face {322+ font-family: cmti8;323+ src: url('fonts/cmti8.woff2') format('woff2');324+}325+@font-face {326+ font-family: cmti9;327+ src: url('fonts/cmti9.woff2') format('woff2');328+}329+@font-face {330+ font-family: cmtt10;331+ src: url('fonts/cmtt10.woff2') format('woff2');332+}333+@font-face {334+ font-family: cmtt12;335+ src: url('fonts/cmtt12.woff2') format('woff2');336+}337+@font-face {338+ font-family: cmtt8;339+ src: url('fonts/cmtt8.woff2') format('woff2');340+}341+@font-face {342+ font-family: cmtt9;343+ src: url('fonts/cmtt9.woff2') format('woff2');344+}345+@font-face {346+ font-family: cmu10;347+ src: url('fonts/cmu10.woff2') format('woff2');348+}349+@font-face {350+ font-family: cmvtt10;351+ src: url('fonts/cmvtt10.woff2') format('woff2');352+}353+@font-face {354+ font-family: euex10;355+ src: url('fonts/euex10.woff2') format('woff2');356+}357+@font-face {358+ font-family: euex7;359+ src: url('fonts/euex7.woff2') format('woff2');360+}361+@font-face {362+ font-family: euex8;363+ src: url('fonts/euex8.woff2') format('woff2');364+}365+@font-face {366+ font-family: euex9;367+ src: url('fonts/euex9.woff2') format('woff2');368+}369+@font-face {370+ font-family: eufb10;371+ src: url('fonts/eufb10.woff2') format('woff2');372+}373+@font-face {374+ font-family: eufb5;375+ src: url('fonts/eufb5.woff2') format('woff2');376+}377+@font-face {378+ font-family: eufb6;379+ src: url('fonts/eufb6.woff2') format('woff2');380+}381+@font-face {382+ font-family: eufb7;383+ src: url('fonts/eufb7.woff2') format('woff2');384+}385+@font-face {386+ font-family: eufb8;387+ src: url('fonts/eufb8.woff2') format('woff2');388+}389+@font-face {390+ font-family: eufb9;391+ src: url('fonts/eufb9.woff2') format('woff2');392+}393+@font-face {394+ font-family: eufm10;395+ src: url('fonts/eufm10.woff2') format('woff2');396+}397+@font-face {398+ font-family: eufm5;399+ src: url('fonts/eufm5.woff2') format('woff2');400+}401+@font-face {402+ font-family: eufm6;403+ src: url('fonts/eufm6.woff2') format('woff2');404+}405+@font-face {406+ font-family: eufm7;407+ src: url('fonts/eufm7.woff2') format('woff2');408+}409+@font-face {410+ font-family: eufm8;411+ src: url('fonts/eufm8.woff2') format('woff2');412+}413+@font-face {414+ font-family: eufm9;415+ src: url('fonts/eufm9.woff2') format('woff2');416+}417+@font-face {418+ font-family: eurb10;419+ src: url('fonts/eurb10.woff2') format('woff2');420+}421+@font-face {422+ font-family: eurb5;423+ src: url('fonts/eurb5.woff2') format('woff2');424+}425+@font-face {426+ font-family: eurb6;427+ src: url('fonts/eurb6.woff2') format('woff2');428+}429+@font-face {430+ font-family: eurb7;431+ src: url('fonts/eurb7.woff2') format('woff2');432+}433+@font-face {434+ font-family: eurb8;435+ src: url('fonts/eurb8.woff2') format('woff2');436+}437+@font-face {438+ font-family: eurb9;439+ src: url('fonts/eurb9.woff2') format('woff2');440+}441+@font-face {442+ font-family: eurm10;443+ src: url('fonts/eurm10.woff2') format('woff2');444+}445+@font-face {446+ font-family: eurm5;447+ src: url('fonts/eurm5.woff2') format('woff2');448+}449+@font-face {450+ font-family: eurm6;451+ src: url('fonts/eurm6.woff2') format('woff2');452+}453+@font-face {454+ font-family: eurm7;455+ src: url('fonts/eurm7.woff2') format('woff2');456+}457+@font-face {458+ font-family: eurm8;459+ src: url('fonts/eurm8.woff2') format('woff2');460+}461+@font-face {462+ font-family: eurm9;463+ src: url('fonts/eurm9.woff2') format('woff2');464+}465+@font-face {466+ font-family: eusb10;467+ src: url('fonts/eusb10.woff2') format('woff2');468+}469+@font-face {470+ font-family: eusb5;471+ src: url('fonts/eusb5.woff2') format('woff2');472+}473+@font-face {474+ font-family: eusb6;475+ src: url('fonts/eusb6.woff2') format('woff2');476+}477+@font-face {478+ font-family: eusb7;479+ src: url('fonts/eusb7.woff2') format('woff2');480+}481+@font-face {482+ font-family: eusb8;483+ src: url('fonts/eusb8.woff2') format('woff2');484+}485+@font-face {486+ font-family: eusb9;487+ src: url('fonts/eusb9.woff2') format('woff2');488+}489+@font-face {490+ font-family: eusm10;491+ src: url('fonts/eusm10.woff2') format('woff2');492+}493+@font-face {494+ font-family: eusm5;495+ src: url('fonts/eusm5.woff2') format('woff2');496+}497+@font-face {498+ font-family: eusm6;499+ src: url('fonts/eusm6.woff2') format('woff2');500+}501+@font-face {502+ font-family: eusm7;503+ src: url('fonts/eusm7.woff2') format('woff2');504+}505+@font-face {506+ font-family: eusm8;507+ src: url('fonts/eusm8.woff2') format('woff2');508+}509+@font-face {510+ font-family: eusm9;511+ src: url('fonts/eusm9.woff2') format('woff2');512+}513+@font-face {514+ font-family: msam10;515+ src: url('fonts/msam10.woff2') format('woff2');516+}517+@font-face {518+ font-family: msam5;519+ src: url('fonts/msam5.woff2') format('woff2');520+}521+@font-face {522+ font-family: msam6;523+ src: url('fonts/msam6.woff2') format('woff2');524+}525+@font-face {526+ font-family: msam7;527+ src: url('fonts/msam7.woff2') format('woff2');528+}529+@font-face {530+ font-family: msam8;531+ src: url('fonts/msam8.woff2') format('woff2');532+}533+@font-face {534+ font-family: msam9;535+ src: url('fonts/msam9.woff2') format('woff2');536+}537+@font-face {538+ font-family: msbm10;539+ src: url('fonts/msbm10.woff2') format('woff2');540+}541+@font-face {542+ font-family: msbm5;543+ src: url('fonts/msbm5.woff2') format('woff2');544+}545+@font-face {546+ font-family: msbm6;547+ src: url('fonts/msbm6.woff2') format('woff2');548+}549+@font-face {550+ font-family: msbm7;551+ src: url('fonts/msbm7.woff2') format('woff2');552+}553+@font-face {554+ font-family: msbm8;555+ src: url('fonts/msbm8.woff2') format('woff2');556+}557+@font-face {558+ font-family: msbm9;559+ src: url('fonts/msbm9.woff2') format('woff2');560+}
A diagramzip-client-units/tikz/assets/fonts/cmb10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbsy10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbsy5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbsy6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbsy7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbsy8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbsy9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbx9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbxsl10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmbxti10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmcsc10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmcsc8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmcsc9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmdunh10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmex10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmex7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmex8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmex9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmff10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmfi10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmfib8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cminch.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmitt10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmi9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmib10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmib5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmib6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmib7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmib8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmmib9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr17.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmr9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsl10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsl12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsl8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsl9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsltt10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmss10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmss12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmss17.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmss8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmss9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssbx10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssdc10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssi10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssi12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssi17.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssi8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssi9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssq8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmssqi8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsy10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsy5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsy6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsy7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsy8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmsy9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtcsc10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtex10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtex8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtex9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmti10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmti12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmti7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmti8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmti9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtt10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtt12.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtt8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmtt9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmu10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/cmvtt10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/euex10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/euex7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/euex8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/euex9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufb10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufb5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufb6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufb7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufb8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufb9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufm10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufm5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufm6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufm7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufm8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eufm9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurb10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurb5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurb6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurb7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurb8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurb9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurm10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurm5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurm6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurm7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurm8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eurm9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusb10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusb5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusb6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusb7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusb8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusb9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusm10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusm5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusm6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusm7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusm8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/eusm9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasy10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasy5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasy6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasy7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasy8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasy9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lasyb10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lcmss8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lcmssb8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/lcmssi8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msam10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msam5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msam6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msam7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msam8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msam9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msbm10.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msbm5.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msbm6.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msbm7.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msbm8.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/fonts/msbm9.woff2 +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/run-tex.js +1 -0
@@ -0,0 +1 @@
1+(()=>{var A={7526:(A,t)=>{"use strict";t.byteLength=function(A){var t=s(A),e=t[0],r=t[1];return 3*(e+r)/4-r},t.toByteArray=function(A){var t,e,B=s(A),g=B[0],i=B[1],o=new n(function(A,t,e){return 3*(t+e)/4-e}(0,g,i)),a=0,c=i>0?g-4:g;for(e=0;e<c;e+=4)t=r[A.charCodeAt(e)]<<18|r[A.charCodeAt(e+1)]<<12|r[A.charCodeAt(e+2)]<<6|r[A.charCodeAt(e+3)],o[a++]=t>>16&255,o[a++]=t>>8&255,o[a++]=255&t;2===i&&(t=r[A.charCodeAt(e)]<<2|r[A.charCodeAt(e+1)]>>4,o[a++]=255&t);1===i&&(t=r[A.charCodeAt(e)]<<10|r[A.charCodeAt(e+1)]<<4|r[A.charCodeAt(e+2)]>>2,o[a++]=t>>8&255,o[a++]=255&t);return o},t.fromByteArray=function(A){for(var t,r=A.length,n=r%3,B=[],g=16383,s=0,o=r-n;s<o;s+=g)B.push(i(A,s,s+g>o?o:s+g));1===n?(t=A[r-1],B.push(e[t>>2]+e[t<<4&63]+"==")):2===n&&(t=(A[r-2]<<8)+A[r-1],B.push(e[t>>10]+e[t>>4&63]+e[t<<2&63]+"="));return B.join("")};for(var e=[],r=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=0;g<64;++g)e[g]=B[g],r[B.charCodeAt(g)]=g;function s(A){var t=A.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=A.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function i(A,t,r){for(var n,B,g=[],s=t;s<r;s+=3)n=(A[s]<<16&16711680)+(A[s+1]<<8&65280)+(255&A[s+2]),g.push(e[(B=n)>>18&63]+e[B>>12&63]+e[B>>6&63]+e[63&B]);return g.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},8287:(A,t,e)=>{"use strict";const r=e(7526),n=e(251),B="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=i,t.SlowBuffer=function(A){+A!=A&&(A=0);return i.alloc(+A)},t.INSPECT_MAX_BYTES=50;const g=2147483647;function s(A){if(A>g)throw new RangeError('The value "'+A+'" is invalid for option "size"');const t=new Uint8Array(A);return Object.setPrototypeOf(t,i.prototype),t}function i(A,t,e){if("number"==typeof A){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return c(A)}return o(A,t,e)}function o(A,t,e){if("string"==typeof A)return function(A,t){"string"==typeof t&&""!==t||(t="utf8");if(!i.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const e=0|u(A,t);let r=s(e);const n=r.write(A,t);n!==e&&(r=r.slice(0,n));return r}(A,t);if(ArrayBuffer.isView(A))return function(A){if(W(A,Uint8Array)){const t=new Uint8Array(A);return Q(t.buffer,t.byteOffset,t.byteLength)}return w(A)}(A);if(null==A)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof A);if(W(A,ArrayBuffer)||A&&W(A.buffer,ArrayBuffer))return Q(A,t,e);if("undefined"!=typeof SharedArrayBuffer&&(W(A,SharedArrayBuffer)||A&&W(A.buffer,SharedArrayBuffer)))return Q(A,t,e);if("number"==typeof A)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=A.valueOf&&A.valueOf();if(null!=r&&r!==A)return i.from(r,t,e);const n=function(A){if(i.isBuffer(A)){const t=0|h(A.length),e=s(t);return 0===e.length||A.copy(e,0,0,t),e}if(void 0!==A.length)return"number"!=typeof A.length||Z(A.length)?s(0):w(A);if("Buffer"===A.type&&Array.isArray(A.data))return w(A.data)}(A);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof A[Symbol.toPrimitive])return i.from(A[Symbol.toPrimitive]("string"),t,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof A)}function a(A){if("number"!=typeof A)throw new TypeError('"size" argument must be of type number');if(A<0)throw new RangeError('The value "'+A+'" is invalid for option "size"')}function c(A){return a(A),s(A<0?0:0|h(A))}function w(A){const t=A.length<0?0:0|h(A.length),e=s(t);for(let r=0;r<t;r+=1)e[r]=255&A[r];return e}function Q(A,t,e){if(t<0||A.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(A.byteLength<t+(e||0))throw new RangeError('"length" is outside of buffer bounds');let r;return r=void 0===t&&void 0===e?new Uint8Array(A):void 0===e?new Uint8Array(A,t):new Uint8Array(A,t,e),Object.setPrototypeOf(r,i.prototype),r}function h(A){if(A>=g)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+g.toString(16)+" bytes");return 0|A}function u(A,t){if(i.isBuffer(A))return A.length;if(ArrayBuffer.isView(A)||W(A,ArrayBuffer))return A.byteLength;if("string"!=typeof A)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof A);const e=A.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===e)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return J(A).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return q(A).length;default:if(n)return r?-1:J(A).length;t=(""+t).toLowerCase(),n=!0}}function l(A,t,e){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(A||(A="utf8");;)switch(A){case"hex":return m(this,t,e);case"utf8":case"utf-8":return G(this,t,e);case"ascii":return Y(this,t,e);case"latin1":case"binary":return M(this,t,e);case"base64":return F(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return y(this,t,e);default:if(r)throw new TypeError("Unknown encoding: "+A);A=(A+"").toLowerCase(),r=!0}}function C(A,t,e){const r=A[t];A[t]=A[e],A[e]=r}function f(A,t,e,r,n){if(0===A.length)return-1;if("string"==typeof e?(r=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),Z(e=+e)&&(e=n?0:A.length-1),e<0&&(e=A.length+e),e>=A.length){if(n)return-1;e=A.length-1}else if(e<0){if(!n)return-1;e=0}if("string"==typeof t&&(t=i.from(t,r)),i.isBuffer(t))return 0===t.length?-1:d(A,t,e,r,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(A,t,e):Uint8Array.prototype.lastIndexOf.call(A,t,e):d(A,[t],e,r,n);throw new TypeError("val must be string, number or Buffer")}function d(A,t,e,r,n){let B,g=1,s=A.length,i=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(A.length<2||t.length<2)return-1;g=2,s/=2,i/=2,e/=2}function o(A,t){return 1===g?A[t]:A.readUInt16BE(t*g)}if(n){let r=-1;for(B=e;B<s;B++)if(o(A,B)===o(t,-1===r?0:B-r)){if(-1===r&&(r=B),B-r+1===i)return r*g}else-1!==r&&(B-=B-r),r=-1}else for(e+i>s&&(e=s-i),B=e;B>=0;B--){let e=!0;for(let r=0;r<i;r++)if(o(A,B+r)!==o(t,r)){e=!1;break}if(e)return B}return-1}function E(A,t,e,r){e=Number(e)||0;const n=A.length-e;r?(r=Number(r))>n&&(r=n):r=n;const B=t.length;let g;for(r>B/2&&(r=B/2),g=0;g<r;++g){const r=parseInt(t.substr(2*g,2),16);if(Z(r))return g;A[e+g]=r}return g}function p(A,t,e,r){return P(J(t,A.length-e),A,e,r)}function H(A,t,e,r){return P(function(A){const t=[];for(let e=0;e<A.length;++e)t.push(255&A.charCodeAt(e));return t}(t),A,e,r)}function D(A,t,e,r){return P(q(t),A,e,r)}function I(A,t,e,r){return P(function(A,t){let e,r,n;const B=[];for(let g=0;g<A.length&&!((t-=2)<0);++g)e=A.charCodeAt(g),r=e>>8,n=e%256,B.push(n),B.push(r);return B}(t,A.length-e),A,e,r)}function F(A,t,e){return 0===t&&e===A.length?r.fromByteArray(A):r.fromByteArray(A.slice(t,e))}function G(A,t,e){e=Math.min(A.length,e);const r=[];let n=t;for(;n<e;){const t=A[n];let B=null,g=t>239?4:t>223?3:t>191?2:1;if(n+g<=e){let e,r,s,i;switch(g){case 1:t<128&&(B=t);break;case 2:e=A[n+1],128==(192&e)&&(i=(31&t)<<6|63&e,i>127&&(B=i));break;case 3:e=A[n+1],r=A[n+2],128==(192&e)&&128==(192&r)&&(i=(15&t)<<12|(63&e)<<6|63&r,i>2047&&(i<55296||i>57343)&&(B=i));break;case 4:e=A[n+1],r=A[n+2],s=A[n+3],128==(192&e)&&128==(192&r)&&128==(192&s)&&(i=(15&t)<<18|(63&e)<<12|(63&r)<<6|63&s,i>65535&&i<1114112&&(B=i))}}null===B?(B=65533,g=1):B>65535&&(B-=65536,r.push(B>>>10&1023|55296),B=56320|1023&B),r.push(B),n+=g}return function(A){const t=A.length;if(t<=U)return String.fromCharCode.apply(String,A);let e="",r=0;for(;r<t;)e+=String.fromCharCode.apply(String,A.slice(r,r+=U));return e}(r)}t.kMaxLength=g,i.TYPED_ARRAY_SUPPORT=function(){try{const A=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(A,t),42===A.foo()}catch(A){return!1}}(),i.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(i.prototype,"parent",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.buffer}}),Object.defineProperty(i.prototype,"offset",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.byteOffset}}),i.poolSize=8192,i.from=function(A,t,e){return o(A,t,e)},Object.setPrototypeOf(i.prototype,Uint8Array.prototype),Object.setPrototypeOf(i,Uint8Array),i.alloc=function(A,t,e){return function(A,t,e){return a(A),A<=0?s(A):void 0!==t?"string"==typeof e?s(A).fill(t,e):s(A).fill(t):s(A)}(A,t,e)},i.allocUnsafe=function(A){return c(A)},i.allocUnsafeSlow=function(A){return c(A)},i.isBuffer=function(A){return null!=A&&!0===A._isBuffer&&A!==i.prototype},i.compare=function(A,t){if(W(A,Uint8Array)&&(A=i.from(A,A.offset,A.byteLength)),W(t,Uint8Array)&&(t=i.from(t,t.offset,t.byteLength)),!i.isBuffer(A)||!i.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(A===t)return 0;let e=A.length,r=t.length;for(let n=0,B=Math.min(e,r);n<B;++n)if(A[n]!==t[n]){e=A[n],r=t[n];break}return e<r?-1:r<e?1:0},i.isEncoding=function(A){switch(String(A).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},i.concat=function(A,t){if(!Array.isArray(A))throw new TypeError('"list" argument must be an Array of Buffers');if(0===A.length)return i.alloc(0);let e;if(void 0===t)for(t=0,e=0;e<A.length;++e)t+=A[e].length;const r=i.allocUnsafe(t);let n=0;for(e=0;e<A.length;++e){let t=A[e];if(W(t,Uint8Array))n+t.length>r.length?(i.isBuffer(t)||(t=i.from(t)),t.copy(r,n)):Uint8Array.prototype.set.call(r,t,n);else{if(!i.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,n)}n+=t.length}return r},i.byteLength=u,i.prototype._isBuffer=!0,i.prototype.swap16=function(){const A=this.length;if(A%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<A;t+=2)C(this,t,t+1);return this},i.prototype.swap32=function(){const A=this.length;if(A%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<A;t+=4)C(this,t,t+3),C(this,t+1,t+2);return this},i.prototype.swap64=function(){const A=this.length;if(A%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<A;t+=8)C(this,t,t+7),C(this,t+1,t+6),C(this,t+2,t+5),C(this,t+3,t+4);return this},i.prototype.toString=function(){const A=this.length;return 0===A?"":0===arguments.length?G(this,0,A):l.apply(this,arguments)},i.prototype.toLocaleString=i.prototype.toString,i.prototype.equals=function(A){if(!i.isBuffer(A))throw new TypeError("Argument must be a Buffer");return this===A||0===i.compare(this,A)},i.prototype.inspect=function(){let A="";const e=t.INSPECT_MAX_BYTES;return A=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(A+=" ... "),"<Buffer "+A+">"},B&&(i.prototype[B]=i.prototype.inspect),i.prototype.compare=function(A,t,e,r,n){if(W(A,Uint8Array)&&(A=i.from(A,A.offset,A.byteLength)),!i.isBuffer(A))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof A);if(void 0===t&&(t=0),void 0===e&&(e=A?A.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),t<0||e>A.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&t>=e)return 0;if(r>=n)return-1;if(t>=e)return 1;if(this===A)return 0;let B=(n>>>=0)-(r>>>=0),g=(e>>>=0)-(t>>>=0);const s=Math.min(B,g),o=this.slice(r,n),a=A.slice(t,e);for(let A=0;A<s;++A)if(o[A]!==a[A]){B=o[A],g=a[A];break}return B<g?-1:g<B?1:0},i.prototype.includes=function(A,t,e){return-1!==this.indexOf(A,t,e)},i.prototype.indexOf=function(A,t,e){return f(this,A,t,e,!0)},i.prototype.lastIndexOf=function(A,t,e){return f(this,A,t,e,!1)},i.prototype.write=function(A,t,e,r){if(void 0===t)r="utf8",e=this.length,t=0;else if(void 0===e&&"string"==typeof t)r=t,e=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(e)?(e>>>=0,void 0===r&&(r="utf8")):(r=e,e=void 0)}const n=this.length-t;if((void 0===e||e>n)&&(e=n),A.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let B=!1;for(;;)switch(r){case"hex":return E(this,A,t,e);case"utf8":case"utf-8":return p(this,A,t,e);case"ascii":case"latin1":case"binary":return H(this,A,t,e);case"base64":return D(this,A,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,A,t,e);default:if(B)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),B=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const U=4096;function Y(A,t,e){let r="";e=Math.min(A.length,e);for(let n=t;n<e;++n)r+=String.fromCharCode(127&A[n]);return r}function M(A,t,e){let r="";e=Math.min(A.length,e);for(let n=t;n<e;++n)r+=String.fromCharCode(A[n]);return r}function m(A,t,e){const r=A.length;(!t||t<0)&&(t=0),(!e||e<0||e>r)&&(e=r);let n="";for(let r=t;r<e;++r)n+=z[A[r]];return n}function y(A,t,e){const r=A.slice(t,e);let n="";for(let A=0;A<r.length-1;A+=2)n+=String.fromCharCode(r[A]+256*r[A+1]);return n}function b(A,t,e){if(A%1!=0||A<0)throw new RangeError("offset is not uint");if(A+t>e)throw new RangeError("Trying to access beyond buffer length")}function k(A,t,e,r,n,B){if(!i.isBuffer(A))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<B)throw new RangeError('"value" argument is out of bounds');if(e+r>A.length)throw new RangeError("Index out of range")}function O(A,t,e,r,n){K(t,r,n,A,e,7);let B=Number(t&BigInt(4294967295));A[e++]=B,B>>=8,A[e++]=B,B>>=8,A[e++]=B,B>>=8,A[e++]=B;let g=Number(t>>BigInt(32)&BigInt(4294967295));return A[e++]=g,g>>=8,A[e++]=g,g>>=8,A[e++]=g,g>>=8,A[e++]=g,e}function x(A,t,e,r,n){K(t,r,n,A,e,7);let B=Number(t&BigInt(4294967295));A[e+7]=B,B>>=8,A[e+6]=B,B>>=8,A[e+5]=B,B>>=8,A[e+4]=B;let g=Number(t>>BigInt(32)&BigInt(4294967295));return A[e+3]=g,g>>=8,A[e+2]=g,g>>=8,A[e+1]=g,g>>=8,A[e]=g,e+8}function R(A,t,e,r,n,B){if(e+r>A.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function V(A,t,e,r,B){return t=+t,e>>>=0,B||R(A,0,e,4),n.write(A,t,e,r,23,4),e+4}function L(A,t,e,r,B){return t=+t,e>>>=0,B||R(A,0,e,8),n.write(A,t,e,r,52,8),e+8}i.prototype.slice=function(A,t){const e=this.length;(A=~~A)<0?(A+=e)<0&&(A=0):A>e&&(A=e),(t=void 0===t?e:~~t)<0?(t+=e)<0&&(t=0):t>e&&(t=e),t<A&&(t=A);const r=this.subarray(A,t);return Object.setPrototypeOf(r,i.prototype),r},i.prototype.readUintLE=i.prototype.readUIntLE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=this[A],n=1,B=0;for(;++B<t&&(n*=256);)r+=this[A+B]*n;return r},i.prototype.readUintBE=i.prototype.readUIntBE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=this[A+--t],n=1;for(;t>0&&(n*=256);)r+=this[A+--t]*n;return r},i.prototype.readUint8=i.prototype.readUInt8=function(A,t){return A>>>=0,t||b(A,1,this.length),this[A]},i.prototype.readUint16LE=i.prototype.readUInt16LE=function(A,t){return A>>>=0,t||b(A,2,this.length),this[A]|this[A+1]<<8},i.prototype.readUint16BE=i.prototype.readUInt16BE=function(A,t){return A>>>=0,t||b(A,2,this.length),this[A]<<8|this[A+1]},i.prototype.readUint32LE=i.prototype.readUInt32LE=function(A,t){return A>>>=0,t||b(A,4,this.length),(this[A]|this[A+1]<<8|this[A+2]<<16)+16777216*this[A+3]},i.prototype.readUint32BE=i.prototype.readUInt32BE=function(A,t){return A>>>=0,t||b(A,4,this.length),16777216*this[A]+(this[A+1]<<16|this[A+2]<<8|this[A+3])},i.prototype.readBigUInt64LE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=t+256*this[++A]+65536*this[++A]+this[++A]*2**24,n=this[++A]+256*this[++A]+65536*this[++A]+e*2**24;return BigInt(r)+(BigInt(n)<<BigInt(32))})),i.prototype.readBigUInt64BE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=t*2**24+65536*this[++A]+256*this[++A]+this[++A],n=this[++A]*2**24+65536*this[++A]+256*this[++A]+e;return(BigInt(r)<<BigInt(32))+BigInt(n)})),i.prototype.readIntLE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=this[A],n=1,B=0;for(;++B<t&&(n*=256);)r+=this[A+B]*n;return n*=128,r>=n&&(r-=Math.pow(2,8*t)),r},i.prototype.readIntBE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=t,n=1,B=this[A+--r];for(;r>0&&(n*=256);)B+=this[A+--r]*n;return n*=128,B>=n&&(B-=Math.pow(2,8*t)),B},i.prototype.readInt8=function(A,t){return A>>>=0,t||b(A,1,this.length),128&this[A]?-1*(255-this[A]+1):this[A]},i.prototype.readInt16LE=function(A,t){A>>>=0,t||b(A,2,this.length);const e=this[A]|this[A+1]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt16BE=function(A,t){A>>>=0,t||b(A,2,this.length);const e=this[A+1]|this[A]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt32LE=function(A,t){return A>>>=0,t||b(A,4,this.length),this[A]|this[A+1]<<8|this[A+2]<<16|this[A+3]<<24},i.prototype.readInt32BE=function(A,t){return A>>>=0,t||b(A,4,this.length),this[A]<<24|this[A+1]<<16|this[A+2]<<8|this[A+3]},i.prototype.readBigInt64LE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=this[A+4]+256*this[A+5]+65536*this[A+6]+(e<<24);return(BigInt(r)<<BigInt(32))+BigInt(t+256*this[++A]+65536*this[++A]+this[++A]*2**24)})),i.prototype.readBigInt64BE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=(t<<24)+65536*this[++A]+256*this[++A]+this[++A];return(BigInt(r)<<BigInt(32))+BigInt(this[++A]*2**24+65536*this[++A]+256*this[++A]+e)})),i.prototype.readFloatLE=function(A,t){return A>>>=0,t||b(A,4,this.length),n.read(this,A,!0,23,4)},i.prototype.readFloatBE=function(A,t){return A>>>=0,t||b(A,4,this.length),n.read(this,A,!1,23,4)},i.prototype.readDoubleLE=function(A,t){return A>>>=0,t||b(A,8,this.length),n.read(this,A,!0,52,8)},i.prototype.readDoubleBE=function(A,t){return A>>>=0,t||b(A,8,this.length),n.read(this,A,!1,52,8)},i.prototype.writeUintLE=i.prototype.writeUIntLE=function(A,t,e,r){if(A=+A,t>>>=0,e>>>=0,!r){k(this,A,t,e,Math.pow(2,8*e)-1,0)}let n=1,B=0;for(this[t]=255&A;++B<e&&(n*=256);)this[t+B]=A/n&255;return t+e},i.prototype.writeUintBE=i.prototype.writeUIntBE=function(A,t,e,r){if(A=+A,t>>>=0,e>>>=0,!r){k(this,A,t,e,Math.pow(2,8*e)-1,0)}let n=e-1,B=1;for(this[t+n]=255&A;--n>=0&&(B*=256);)this[t+n]=A/B&255;return t+e},i.prototype.writeUint8=i.prototype.writeUInt8=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,1,255,0),this[t]=255&A,t+1},i.prototype.writeUint16LE=i.prototype.writeUInt16LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,65535,0),this[t]=255&A,this[t+1]=A>>>8,t+2},i.prototype.writeUint16BE=i.prototype.writeUInt16BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,65535,0),this[t]=A>>>8,this[t+1]=255&A,t+2},i.prototype.writeUint32LE=i.prototype.writeUInt32LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,4294967295,0),this[t+3]=A>>>24,this[t+2]=A>>>16,this[t+1]=A>>>8,this[t]=255&A,t+4},i.prototype.writeUint32BE=i.prototype.writeUInt32BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,4294967295,0),this[t]=A>>>24,this[t+1]=A>>>16,this[t+2]=A>>>8,this[t+3]=255&A,t+4},i.prototype.writeBigUInt64LE=X((function(A,t=0){return O(this,A,t,BigInt(0),BigInt("0xffffffffffffffff"))})),i.prototype.writeBigUInt64BE=X((function(A,t=0){return x(this,A,t,BigInt(0),BigInt("0xffffffffffffffff"))})),i.prototype.writeIntLE=function(A,t,e,r){if(A=+A,t>>>=0,!r){const r=Math.pow(2,8*e-1);k(this,A,t,e,r-1,-r)}let n=0,B=1,g=0;for(this[t]=255&A;++n<e&&(B*=256);)A<0&&0===g&&0!==this[t+n-1]&&(g=1),this[t+n]=(A/B|0)-g&255;return t+e},i.prototype.writeIntBE=function(A,t,e,r){if(A=+A,t>>>=0,!r){const r=Math.pow(2,8*e-1);k(this,A,t,e,r-1,-r)}let n=e-1,B=1,g=0;for(this[t+n]=255&A;--n>=0&&(B*=256);)A<0&&0===g&&0!==this[t+n+1]&&(g=1),this[t+n]=(A/B|0)-g&255;return t+e},i.prototype.writeInt8=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,1,127,-128),A<0&&(A=255+A+1),this[t]=255&A,t+1},i.prototype.writeInt16LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,32767,-32768),this[t]=255&A,this[t+1]=A>>>8,t+2},i.prototype.writeInt16BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,32767,-32768),this[t]=A>>>8,this[t+1]=255&A,t+2},i.prototype.writeInt32LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,2147483647,-2147483648),this[t]=255&A,this[t+1]=A>>>8,this[t+2]=A>>>16,this[t+3]=A>>>24,t+4},i.prototype.writeInt32BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,2147483647,-2147483648),A<0&&(A=4294967295+A+1),this[t]=A>>>24,this[t+1]=A>>>16,this[t+2]=A>>>8,this[t+3]=255&A,t+4},i.prototype.writeBigInt64LE=X((function(A,t=0){return O(this,A,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),i.prototype.writeBigInt64BE=X((function(A,t=0){return x(this,A,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),i.prototype.writeFloatLE=function(A,t,e){return V(this,A,t,!0,e)},i.prototype.writeFloatBE=function(A,t,e){return V(this,A,t,!1,e)},i.prototype.writeDoubleLE=function(A,t,e){return L(this,A,t,!0,e)},i.prototype.writeDoubleBE=function(A,t,e){return L(this,A,t,!1,e)},i.prototype.copy=function(A,t,e,r){if(!i.isBuffer(A))throw new TypeError("argument should be a Buffer");if(e||(e=0),r||0===r||(r=this.length),t>=A.length&&(t=A.length),t||(t=0),r>0&&r<e&&(r=e),r===e)return 0;if(0===A.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),A.length-t<r-e&&(r=A.length-t+e);const n=r-e;return this===A&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,e,r):Uint8Array.prototype.set.call(A,this.subarray(e,r),t),n},i.prototype.fill=function(A,t,e,r){if("string"==typeof A){if("string"==typeof t?(r=t,t=0,e=this.length):"string"==typeof e&&(r=e,e=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!i.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===A.length){const t=A.charCodeAt(0);("utf8"===r&&t<128||"latin1"===r)&&(A=t)}}else"number"==typeof A?A&=255:"boolean"==typeof A&&(A=Number(A));if(t<0||this.length<t||this.length<e)throw new RangeError("Out of range index");if(e<=t)return this;let n;if(t>>>=0,e=void 0===e?this.length:e>>>0,A||(A=0),"number"==typeof A)for(n=t;n<e;++n)this[n]=A;else{const B=i.isBuffer(A)?A:i.from(A,r),g=B.length;if(0===g)throw new TypeError('The value "'+A+'" is invalid for argument "value"');for(n=0;n<e-t;++n)this[n+t]=B[n%g]}return this};const v={};function _(A,t,e){v[A]=class extends e{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${A}]`,this.stack,delete this.name}get code(){return A}set code(A){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:A,writable:!0})}toString(){return`${this.name} [${A}]: ${this.message}`}}}function S(A){let t="",e=A.length;const r="-"===A[0]?1:0;for(;e>=r+4;e-=3)t=`_${A.slice(e-3,e)}${t}`;return`${A.slice(0,e)}${t}`}function K(A,t,e,r,n,B){if(A>e||A<t){const r="bigint"==typeof t?"n":"";let n;throw n=B>3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(B+1)}${r}`:`>= -(2${r} ** ${8*(B+1)-1}${r}) and < 2 ** ${8*(B+1)-1}${r}`:`>= ${t}${r} and <= ${e}${r}`,new v.ERR_OUT_OF_RANGE("value",n,A)}!function(A,t,e){N(t,"offset"),void 0!==A[t]&&void 0!==A[t+e]||T(t,A.length-(e+1))}(r,n,B)}function N(A,t){if("number"!=typeof A)throw new v.ERR_INVALID_ARG_TYPE(t,"number",A)}function T(A,t,e){if(Math.floor(A)!==A)throw N(A,e),new v.ERR_OUT_OF_RANGE(e||"offset","an integer",A);if(t<0)throw new v.ERR_BUFFER_OUT_OF_BOUNDS;throw new v.ERR_OUT_OF_RANGE(e||"offset",`>= ${e?1:0} and <= ${t}`,A)}_("ERR_BUFFER_OUT_OF_BOUNDS",(function(A){return A?`${A} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),_("ERR_INVALID_ARG_TYPE",(function(A,t){return`The "${A}" argument must be of type number. Received type ${typeof t}`}),TypeError),_("ERR_OUT_OF_RANGE",(function(A,t,e){let r=`The value of "${A}" is out of range.`,n=e;return Number.isInteger(e)&&Math.abs(e)>2**32?n=S(String(e)):"bigint"==typeof e&&(n=String(e),(e>BigInt(2)**BigInt(32)||e<-(BigInt(2)**BigInt(32)))&&(n=S(n)),n+="n"),r+=` It must be ${t}. Received ${n}`,r}),RangeError);const j=/[^+/0-9A-Za-z-_]/g;function J(A,t){let e;t=t||1/0;const r=A.length;let n=null;const B=[];for(let g=0;g<r;++g){if(e=A.charCodeAt(g),e>55295&&e<57344){if(!n){if(e>56319){(t-=3)>-1&&B.push(239,191,189);continue}if(g+1===r){(t-=3)>-1&&B.push(239,191,189);continue}n=e;continue}if(e<56320){(t-=3)>-1&&B.push(239,191,189),n=e;continue}e=65536+(n-55296<<10|e-56320)}else n&&(t-=3)>-1&&B.push(239,191,189);if(n=null,e<128){if((t-=1)<0)break;B.push(e)}else if(e<2048){if((t-=2)<0)break;B.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;B.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;B.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return B}function q(A){return r.toByteArray(function(A){if((A=(A=A.split("=")[0]).trim().replace(j,"")).length<2)return"";for(;A.length%4!=0;)A+="=";return A}(A))}function P(A,t,e,r){let n;for(n=0;n<r&&!(n+e>=t.length||n>=A.length);++n)t[n+e]=A[n];return n}function W(A,t){return A instanceof t||null!=A&&null!=A.constructor&&null!=A.constructor.name&&A.constructor.name===t.name}function Z(A){return A!=A}const z=function(){const A="0123456789abcdef",t=new Array(256);for(let e=0;e<16;++e){const r=16*e;for(let n=0;n<16;++n)t[r+n]=A[e]+A[n]}return t}();function X(A){return"undefined"==typeof BigInt?$:A}function $(){throw new Error("BigInt not supported")}},7007:A=>{"use strict";var t,e="object"==typeof Reflect?Reflect:null,r=e&&"function"==typeof e.apply?e.apply:function(A,t,e){return Function.prototype.apply.call(A,t,e)};t=e&&"function"==typeof e.ownKeys?e.ownKeys:Object.getOwnPropertySymbols?function(A){return Object.getOwnPropertyNames(A).concat(Object.getOwnPropertySymbols(A))}:function(A){return Object.getOwnPropertyNames(A)};var n=Number.isNaN||function(A){return A!=A};function B(){B.init.call(this)}A.exports=B,A.exports.once=function(A,t){return new Promise((function(e,r){function n(){void 0!==B&&A.removeListener("error",B),e([].slice.call(arguments))}var B;"error"!==t&&(B=function(e){A.removeListener(t,n),r(e)},A.once("error",B)),A.once(t,n)}))},B.EventEmitter=B,B.prototype._events=void 0,B.prototype._eventsCount=0,B.prototype._maxListeners=void 0;var g=10;function s(A){if("function"!=typeof A)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof A)}function i(A){return void 0===A._maxListeners?B.defaultMaxListeners:A._maxListeners}function o(A,t,e,r){var n,B,g,o;if(s(e),void 0===(B=A._events)?(B=A._events=Object.create(null),A._eventsCount=0):(void 0!==B.newListener&&(A.emit("newListener",t,e.listener?e.listener:e),B=A._events),g=B[t]),void 0===g)g=B[t]=e,++A._eventsCount;else if("function"==typeof g?g=B[t]=r?[e,g]:[g,e]:r?g.unshift(e):g.push(e),(n=i(A))>0&&g.length>n&&!g.warned){g.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+g.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=A,a.type=t,a.count=g.length,o=a,console&&console.warn&&console.warn(o)}return A}function a(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(A,t,e){var r={fired:!1,wrapFn:void 0,target:A,type:t,listener:e},n=a.bind(r);return n.listener=e,r.wrapFn=n,n}function w(A,t,e){var r=A._events;if(void 0===r)return[];var n=r[t];return void 0===n?[]:"function"==typeof n?e?[n.listener||n]:[n]:e?function(A){for(var t=new Array(A.length),e=0;e<t.length;++e)t[e]=A[e].listener||A[e];return t}(n):h(n,n.length)}function Q(A){var t=this._events;if(void 0!==t){var e=t[A];if("function"==typeof e)return 1;if(void 0!==e)return e.length}return 0}function h(A,t){for(var e=new Array(t),r=0;r<t;++r)e[r]=A[r];return e}Object.defineProperty(B,"defaultMaxListeners",{enumerable:!0,get:function(){return g},set:function(A){if("number"!=typeof A||A<0||n(A))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+A+".");g=A}}),B.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},B.prototype.setMaxListeners=function(A){if("number"!=typeof A||A<0||n(A))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+A+".");return this._maxListeners=A,this},B.prototype.getMaxListeners=function(){return i(this)},B.prototype.emit=function(A){for(var t=[],e=1;e<arguments.length;e++)t.push(arguments[e]);var n="error"===A,B=this._events;if(void 0!==B)n=n&&void 0===B.error;else if(!n)return!1;if(n){var g;if(t.length>0&&(g=t[0]),g instanceof Error)throw g;var s=new Error("Unhandled error."+(g?" ("+g.message+")":""));throw s.context=g,s}var i=B[A];if(void 0===i)return!1;if("function"==typeof i)r(i,this,t);else{var o=i.length,a=h(i,o);for(e=0;e<o;++e)r(a[e],this,t)}return!0},B.prototype.addListener=function(A,t){return o(this,A,t,!1)},B.prototype.on=B.prototype.addListener,B.prototype.prependListener=function(A,t){return o(this,A,t,!0)},B.prototype.once=function(A,t){return s(t),this.on(A,c(this,A,t)),this},B.prototype.prependOnceListener=function(A,t){return s(t),this.prependListener(A,c(this,A,t)),this},B.prototype.removeListener=function(A,t){var e,r,n,B,g;if(s(t),void 0===(r=this._events))return this;if(void 0===(e=r[A]))return this;if(e===t||e.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[A],r.removeListener&&this.emit("removeListener",A,e.listener||t));else if("function"!=typeof e){for(n=-1,B=e.length-1;B>=0;B--)if(e[B]===t||e[B].listener===t){g=e[B].listener,n=B;break}if(n<0)return this;0===n?e.shift():function(A,t){for(;t+1<A.length;t++)A[t]=A[t+1];A.pop()}(e,n),1===e.length&&(r[A]=e[0]),void 0!==r.removeListener&&this.emit("removeListener",A,g||t)}return this},B.prototype.off=B.prototype.removeListener,B.prototype.removeAllListeners=function(A){var t,e,r;if(void 0===(e=this._events))return this;if(void 0===e.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==e[A]&&(0==--this._eventsCount?this._events=Object.create(null):delete e[A]),this;if(0===arguments.length){var n,B=Object.keys(e);for(r=0;r<B.length;++r)"removeListener"!==(n=B[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=e[A]))this.removeListener(A,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(A,t[r]);return this},B.prototype.listeners=function(A){return w(this,A,!0)},B.prototype.rawListeners=function(A){return w(this,A,!1)},B.listenerCount=function(A,t){return"function"==typeof A.listenerCount?A.listenerCount(t):Q.call(A,t)},B.prototype.listenerCount=Q,B.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},251:(A,t)=>{t.read=function(A,t,e,r,n){var B,g,s=8*n-r-1,i=(1<<s)-1,o=i>>1,a=-7,c=e?n-1:0,w=e?-1:1,Q=A[t+c];for(c+=w,B=Q&(1<<-a)-1,Q>>=-a,a+=s;a>0;B=256*B+A[t+c],c+=w,a-=8);for(g=B&(1<<-a)-1,B>>=-a,a+=r;a>0;g=256*g+A[t+c],c+=w,a-=8);if(0===B)B=1-o;else{if(B===i)return g?NaN:1/0*(Q?-1:1);g+=Math.pow(2,r),B-=o}return(Q?-1:1)*g*Math.pow(2,B-r)},t.write=function(A,t,e,r,n,B){var g,s,i,o=8*B-n-1,a=(1<<o)-1,c=a>>1,w=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,Q=r?0:B-1,h=r?1:-1,u=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,g=a):(g=Math.floor(Math.log(t)/Math.LN2),t*(i=Math.pow(2,-g))<1&&(g--,i*=2),(t+=g+c>=1?w/i:w*Math.pow(2,1-c))*i>=2&&(g++,i/=2),g+c>=a?(s=0,g=a):g+c>=1?(s=(t*i-1)*Math.pow(2,n),g+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,n),g=0));n>=8;A[e+Q]=255&s,Q+=h,s/=256,n-=8);for(g=g<<n|s,o+=n;o>0;A[e+Q]=255&g,Q+=h,g/=256,o-=8);A[e+Q-h]|=128*u}},6698:A=>{"function"==typeof Object.create?A.exports=function(A,t){t&&(A.super_=t,A.prototype=Object.create(t.prototype,{constructor:{value:A,enumerable:!1,writable:!0,configurable:!0}}))}:A.exports=function(A,t){if(t){A.super_=t;var e=function(){};e.prototype=t.prototype,A.prototype=new e,A.prototype.constructor=A}}},5409:A=>{"use strict";A.exports=A=>!!A&&("symbol"==typeof Symbol.observable&&"function"==typeof A[Symbol.observable]?A===A[Symbol.observable]():"function"==typeof A["@@observable"]&&A===A["@@observable"]())},5606:A=>{var t,e,r=A.exports={};function n(){throw new Error("setTimeout has not been defined")}function B(){throw new Error("clearTimeout has not been defined")}function g(A){if(t===setTimeout)return setTimeout(A,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(A,0);try{return t(A,0)}catch(e){try{return t.call(null,A,0)}catch(e){return t.call(this,A,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:n}catch(A){t=n}try{e="function"==typeof clearTimeout?clearTimeout:B}catch(A){e=B}}();var s,i=[],o=!1,a=-1;function c(){o&&s&&(o=!1,s.length?i=s.concat(i):a=-1,i.length&&w())}function w(){if(!o){var A=g(c);o=!0;for(var t=i.length;t;){for(s=i,i=[];++a<t;)s&&s[a].run();a=-1,t=i.length}s=null,o=!1,function(A){if(e===clearTimeout)return clearTimeout(A);if((e===B||!e)&&clearTimeout)return e=clearTimeout,clearTimeout(A);try{return e(A)}catch(t){try{return e.call(null,A)}catch(t){return e.call(this,A)}}}(A)}}function Q(A,t){this.fun=A,this.array=t}function h(){}r.nextTick=function(A){var t=new Array(arguments.length-1);if(arguments.length>1)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];i.push(new Q(A,t)),1!==i.length||o||g(w)},Q.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=h,r.addListener=h,r.once=h,r.off=h,r.removeListener=h,r.removeAllListeners=h,r.emit=h,r.prependListener=h,r.prependOnceListener=h,r.listeners=function(A){return[]},r.binding=function(A){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(A){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},2861:(A,t,e)=>{var r=e(8287),n=r.Buffer;function B(A,t){for(var e in A)t[e]=A[e]}function g(A,t,e){return n(A,t,e)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?A.exports=r:(B(r,t),t.Buffer=g),B(n,g),g.from=function(A,t,e){if("number"==typeof A)throw new TypeError("Argument must not be a number");return n(A,t,e)},g.alloc=function(A,t,e){if("number"!=typeof A)throw new TypeError("Argument must be a number");var r=n(A);return void 0!==t?"string"==typeof e?r.fill(t,e):r.fill(t):r.fill(0),r},g.allocUnsafe=function(A){if("number"!=typeof A)throw new TypeError("Argument must be a number");return n(A)},g.allocUnsafeSlow=function(A){if("number"!=typeof A)throw new TypeError("Argument must be a number");return r.SlowBuffer(A)}},8310:(A,t,e)=>{A.exports=n;var r=e(7007).EventEmitter;function n(){r.call(this)}e(6698)(n,r),n.Readable=e(6891),n.Writable=e(1999),n.Duplex=e(8101),n.Transform=e(9083),n.PassThrough=e(3681),n.finished=e(4257),n.pipeline=e(5267),n.Stream=n,n.prototype.pipe=function(A,t){var e=this;function n(t){A.writable&&!1===A.write(t)&&e.pause&&e.pause()}function B(){e.readable&&e.resume&&e.resume()}e.on("data",n),A.on("drain",B),A._isStdio||t&&!1===t.end||(e.on("end",s),e.on("close",i));var g=!1;function s(){g||(g=!0,A.end())}function i(){g||(g=!0,"function"==typeof A.destroy&&A.destroy())}function o(A){if(a(),0===r.listenerCount(this,"error"))throw A}function a(){e.removeListener("data",n),A.removeListener("drain",B),e.removeListener("end",s),e.removeListener("close",i),e.removeListener("error",o),A.removeListener("error",o),e.removeListener("end",a),e.removeListener("close",a),A.removeListener("close",a)}return e.on("error",o),A.on("error",o),e.on("end",a),e.on("close",a),A.on("close",a),A.emit("pipe",e),A}},2463:A=>{"use strict";var t={};function e(A,e,r){r||(r=Error);var n=function(A){var t,r;function n(t,r,n){return A.call(this,function(A,t,r){return"string"==typeof e?e:e(A,t,r)}(t,r,n))||this}return r=A,(t=n).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,n}(r);n.prototype.name=r.name,n.prototype.code=A,t[A]=n}function r(A,t){if(Array.isArray(A)){var e=A.length;return A=A.map((function(A){return String(A)})),e>2?"one of ".concat(t," ").concat(A.slice(0,e-1).join(", "),", or ")+A[e-1]:2===e?"one of ".concat(t," ").concat(A[0]," or ").concat(A[1]):"of ".concat(t," ").concat(A[0])}return"of ".concat(t," ").concat(String(A))}e("ERR_INVALID_OPT_VALUE",(function(A,t){return'The value "'+t+'" is invalid for option "'+A+'"'}),TypeError),e("ERR_INVALID_ARG_TYPE",(function(A,t,e){var n,B,g,s;if("string"==typeof t&&(B="not ",t.substr(!g||g<0?0:+g,B.length)===B)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(A,t,e){return(void 0===e||e>A.length)&&(e=A.length),A.substring(e-t.length,e)===t}(A," argument"))s="The ".concat(A," ").concat(n," ").concat(r(t,"type"));else{var i=function(A,t,e){return"number"!=typeof e&&(e=0),!(e+t.length>A.length)&&-1!==A.indexOf(t,e)}(A,".")?"property":"argument";s='The "'.concat(A,'" ').concat(i," ").concat(n," ").concat(r(t,"type"))}return s+=". Received type ".concat(typeof e)}),TypeError),e("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),e("ERR_METHOD_NOT_IMPLEMENTED",(function(A){return"The "+A+" method is not implemented"})),e("ERR_STREAM_PREMATURE_CLOSE","Premature close"),e("ERR_STREAM_DESTROYED",(function(A){return"Cannot call "+A+" after a stream was destroyed"})),e("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),e("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),e("ERR_STREAM_WRITE_AFTER_END","write after end"),e("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),e("ERR_UNKNOWN_ENCODING",(function(A){return"Unknown encoding: "+A}),TypeError),e("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),A.exports.F=t},8101:(A,t,e)=>{"use strict";var r=e(5606),n=Object.keys||function(A){var t=[];for(var e in A)t.push(e);return t};A.exports=a;var B=e(6891),g=e(1999);e(6698)(a,B);for(var s=n(g.prototype),i=0;i<s.length;i++){var o=s[i];a.prototype[o]||(a.prototype[o]=g.prototype[o])}function a(A){if(!(this instanceof a))return new a(A);B.call(this,A),g.call(this,A),this.allowHalfOpen=!0,A&&(!1===A.readable&&(this.readable=!1),!1===A.writable&&(this.writable=!1),!1===A.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",c)))}function c(){this._writableState.ended||r.nextTick(w,this)}function w(A){A.end()}Object.defineProperty(a.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(a.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(a.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(a.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(A){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=A,this._writableState.destroyed=A)}})},3681:(A,t,e)=>{"use strict";A.exports=n;var r=e(9083);function n(A){if(!(this instanceof n))return new n(A);r.call(this,A)}e(6698)(n,r),n.prototype._transform=function(A,t,e){e(null,A)}},6891:(A,t,e)=>{"use strict";var r,n=e(5606);A.exports=F,F.ReadableState=I;e(7007).EventEmitter;var B=function(A,t){return A.listeners(t).length},g=e(1396),s=e(8287).Buffer,i=(void 0!==e.g?e.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var o,a=e(7199);o=a&&a.debuglog?a.debuglog("stream"):function(){};var c,w,Q,h=e(1766),u=e(4347),l=e(6644).getHighWaterMark,C=e(2463).F,f=C.ERR_INVALID_ARG_TYPE,d=C.ERR_STREAM_PUSH_AFTER_EOF,E=C.ERR_METHOD_NOT_IMPLEMENTED,p=C.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;e(6698)(F,g);var H=u.errorOrDestroy,D=["error","close","destroy","pause","resume"];function I(A,t,n){r=r||e(8101),A=A||{},"boolean"!=typeof n&&(n=t instanceof r),this.objectMode=!!A.objectMode,n&&(this.objectMode=this.objectMode||!!A.readableObjectMode),this.highWaterMark=l(this,A,"readableHighWaterMark",n),this.buffer=new h,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==A.emitClose,this.autoDestroy=!!A.autoDestroy,this.destroyed=!1,this.defaultEncoding=A.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,A.encoding&&(c||(c=e(3141).I),this.decoder=new c(A.encoding),this.encoding=A.encoding)}function F(A){if(r=r||e(8101),!(this instanceof F))return new F(A);var t=this instanceof r;this._readableState=new I(A,this,t),this.readable=!0,A&&("function"==typeof A.read&&(this._read=A.read),"function"==typeof A.destroy&&(this._destroy=A.destroy)),g.call(this)}function G(A,t,e,r,n){o("readableAddChunk",t);var B,g=A._readableState;if(null===t)g.reading=!1,function(A,t){if(o("onEofChunk"),t.ended)return;if(t.decoder){var e=t.decoder.end();e&&e.length&&(t.buffer.push(e),t.length+=t.objectMode?1:e.length)}t.ended=!0,t.sync?m(A):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,y(A)))}(A,g);else if(n||(B=function(A,t){var e;r=t,s.isBuffer(r)||r instanceof i||"string"==typeof t||void 0===t||A.objectMode||(e=new f("chunk",["string","Buffer","Uint8Array"],t));var r;return e}(g,t)),B)H(A,B);else if(g.objectMode||t&&t.length>0)if("string"==typeof t||g.objectMode||Object.getPrototypeOf(t)===s.prototype||(t=function(A){return s.from(A)}(t)),r)g.endEmitted?H(A,new p):U(A,g,t,!0);else if(g.ended)H(A,new d);else{if(g.destroyed)return!1;g.reading=!1,g.decoder&&!e?(t=g.decoder.write(t),g.objectMode||0!==t.length?U(A,g,t,!1):b(A,g)):U(A,g,t,!1)}else r||(g.reading=!1,b(A,g));return!g.ended&&(g.length<g.highWaterMark||0===g.length)}function U(A,t,e,r){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,A.emit("data",e)):(t.length+=t.objectMode?1:e.length,r?t.buffer.unshift(e):t.buffer.push(e),t.needReadable&&m(A)),b(A,t)}Object.defineProperty(F.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(A){this._readableState&&(this._readableState.destroyed=A)}}),F.prototype.destroy=u.destroy,F.prototype._undestroy=u.undestroy,F.prototype._destroy=function(A,t){t(A)},F.prototype.push=function(A,t){var e,r=this._readableState;return r.objectMode?e=!0:"string"==typeof A&&((t=t||r.defaultEncoding)!==r.encoding&&(A=s.from(A,t),t=""),e=!0),G(this,A,t,!1,e)},F.prototype.unshift=function(A){return G(this,A,null,!0,!1)},F.prototype.isPaused=function(){return!1===this._readableState.flowing},F.prototype.setEncoding=function(A){c||(c=e(3141).I);var t=new c(A);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,n="";null!==r;)n+=t.write(r.data),r=r.next;return this._readableState.buffer.clear(),""!==n&&this._readableState.buffer.push(n),this._readableState.length=n.length,this};var Y=1073741824;function M(A,t){return A<=0||0===t.length&&t.ended?0:t.objectMode?1:A!=A?t.flowing&&t.length?t.buffer.head.data.length:t.length:(A>t.highWaterMark&&(t.highWaterMark=function(A){return A>=Y?A=Y:(A--,A|=A>>>1,A|=A>>>2,A|=A>>>4,A|=A>>>8,A|=A>>>16,A++),A}(A)),A<=t.length?A:t.ended?t.length:(t.needReadable=!0,0))}function m(A){var t=A._readableState;o("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(o("emitReadable",t.flowing),t.emittedReadable=!0,n.nextTick(y,A))}function y(A){var t=A._readableState;o("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(A.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,V(A)}function b(A,t){t.readingMore||(t.readingMore=!0,n.nextTick(k,A,t))}function k(A,t){for(;!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&0===t.length);){var e=t.length;if(o("maybeReadMore read 0"),A.read(0),e===t.length)break}t.readingMore=!1}function O(A){var t=A._readableState;t.readableListening=A.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:A.listenerCount("data")>0&&A.resume()}function x(A){o("readable nexttick read 0"),A.read(0)}function R(A,t){o("resume",t.reading),t.reading||A.read(0),t.resumeScheduled=!1,A.emit("resume"),V(A),t.flowing&&!t.reading&&A.read(0)}function V(A){var t=A._readableState;for(o("flow",t.flowing);t.flowing&&null!==A.read(););}function L(A,t){return 0===t.length?null:(t.objectMode?e=t.buffer.shift():!A||A>=t.length?(e=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):e=t.buffer.consume(A,t.decoder),e);var e}function v(A){var t=A._readableState;o("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,n.nextTick(_,t,A))}function _(A,t){if(o("endReadableNT",A.endEmitted,A.length),!A.endEmitted&&0===A.length&&(A.endEmitted=!0,t.readable=!1,t.emit("end"),A.autoDestroy)){var e=t._writableState;(!e||e.autoDestroy&&e.finished)&&t.destroy()}}function S(A,t){for(var e=0,r=A.length;e<r;e++)if(A[e]===t)return e;return-1}F.prototype.read=function(A){o("read",A),A=parseInt(A,10);var t=this._readableState,e=A;if(0!==A&&(t.emittedReadable=!1),0===A&&t.needReadable&&((0!==t.highWaterMark?t.length>=t.highWaterMark:t.length>0)||t.ended))return o("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?v(this):m(this),null;if(0===(A=M(A,t))&&t.ended)return 0===t.length&&v(this),null;var r,n=t.needReadable;return o("need readable",n),(0===t.length||t.length-A<t.highWaterMark)&&o("length less than watermark",n=!0),t.ended||t.reading?o("reading or ended",n=!1):n&&(o("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(A=M(e,t))),null===(r=A>0?L(A,t):null)?(t.needReadable=t.length<=t.highWaterMark,A=0):(t.length-=A,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),e!==A&&t.ended&&v(this)),null!==r&&this.emit("data",r),r},F.prototype._read=function(A){H(this,new E("_read()"))},F.prototype.pipe=function(A,t){var e=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=A;break;case 1:r.pipes=[r.pipes,A];break;default:r.pipes.push(A)}r.pipesCount+=1,o("pipe count=%d opts=%j",r.pipesCount,t);var g=(!t||!1!==t.end)&&A!==n.stdout&&A!==n.stderr?i:l;function s(t,n){o("onunpipe"),t===e&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,o("cleanup"),A.removeListener("close",h),A.removeListener("finish",u),A.removeListener("drain",a),A.removeListener("error",Q),A.removeListener("unpipe",s),e.removeListener("end",i),e.removeListener("end",l),e.removeListener("data",w),c=!0,!r.awaitDrain||A._writableState&&!A._writableState.needDrain||a())}function i(){o("onend"),A.end()}r.endEmitted?n.nextTick(g):e.once("end",g),A.on("unpipe",s);var a=function(A){return function(){var t=A._readableState;o("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&B(A,"data")&&(t.flowing=!0,V(A))}}(e);A.on("drain",a);var c=!1;function w(t){o("ondata");var n=A.write(t);o("dest.write",n),!1===n&&((1===r.pipesCount&&r.pipes===A||r.pipesCount>1&&-1!==S(r.pipes,A))&&!c&&(o("false write response, pause",r.awaitDrain),r.awaitDrain++),e.pause())}function Q(t){o("onerror",t),l(),A.removeListener("error",Q),0===B(A,"error")&&H(A,t)}function h(){A.removeListener("finish",u),l()}function u(){o("onfinish"),A.removeListener("close",h),l()}function l(){o("unpipe"),e.unpipe(A)}return e.on("data",w),function(A,t,e){if("function"==typeof A.prependListener)return A.prependListener(t,e);A._events&&A._events[t]?Array.isArray(A._events[t])?A._events[t].unshift(e):A._events[t]=[e,A._events[t]]:A.on(t,e)}(A,"error",Q),A.once("close",h),A.once("finish",u),A.emit("pipe",e),r.flowing||(o("pipe resume"),e.resume()),A},F.prototype.unpipe=function(A){var t=this._readableState,e={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return A&&A!==t.pipes||(A||(A=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,A&&A.emit("unpipe",this,e)),this;if(!A){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var B=0;B<n;B++)r[B].emit("unpipe",this,{hasUnpiped:!1});return this}var g=S(t.pipes,A);return-1===g||(t.pipes.splice(g,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),A.emit("unpipe",this,e)),this},F.prototype.on=function(A,t){var e=g.prototype.on.call(this,A,t),r=this._readableState;return"data"===A?(r.readableListening=this.listenerCount("readable")>0,!1!==r.flowing&&this.resume()):"readable"===A&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,o("on readable",r.length,r.reading),r.length?m(this):r.reading||n.nextTick(x,this))),e},F.prototype.addListener=F.prototype.on,F.prototype.removeListener=function(A,t){var e=g.prototype.removeListener.call(this,A,t);return"readable"===A&&n.nextTick(O,this),e},F.prototype.removeAllListeners=function(A){var t=g.prototype.removeAllListeners.apply(this,arguments);return"readable"!==A&&void 0!==A||n.nextTick(O,this),t},F.prototype.resume=function(){var A=this._readableState;return A.flowing||(o("resume"),A.flowing=!A.readableListening,function(A,t){t.resumeScheduled||(t.resumeScheduled=!0,n.nextTick(R,A,t))}(this,A)),A.paused=!1,this},F.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},F.prototype.wrap=function(A){var t=this,e=this._readableState,r=!1;for(var n in A.on("end",(function(){if(o("wrapped end"),e.decoder&&!e.ended){var A=e.decoder.end();A&&A.length&&t.push(A)}t.push(null)})),A.on("data",(function(n){(o("wrapped data"),e.decoder&&(n=e.decoder.write(n)),e.objectMode&&null==n)||(e.objectMode||n&&n.length)&&(t.push(n)||(r=!0,A.pause()))})),A)void 0===this[n]&&"function"==typeof A[n]&&(this[n]=function(t){return function(){return A[t].apply(A,arguments)}}(n));for(var B=0;B<D.length;B++)A.on(D[B],this.emit.bind(this,D[B]));return this._read=function(t){o("wrapped _read",t),r&&(r=!1,A.resume())},this},"function"==typeof Symbol&&(F.prototype[Symbol.asyncIterator]=function(){return void 0===w&&(w=e(5034)),w(this)}),Object.defineProperty(F.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(F.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(F.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(A){this._readableState&&(this._readableState.flowing=A)}}),F._fromList=L,Object.defineProperty(F.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(F.from=function(A,t){return void 0===Q&&(Q=e(968)),Q(F,A,t)})},9083:(A,t,e)=>{"use strict";A.exports=a;var r=e(2463).F,n=r.ERR_METHOD_NOT_IMPLEMENTED,B=r.ERR_MULTIPLE_CALLBACK,g=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=r.ERR_TRANSFORM_WITH_LENGTH_0,i=e(8101);function o(A,t){var e=this._transformState;e.transforming=!1;var r=e.writecb;if(null===r)return this.emit("error",new B);e.writechunk=null,e.writecb=null,null!=t&&this.push(t),r(A);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function a(A){if(!(this instanceof a))return new a(A);i.call(this,A),this._transformState={afterTransform:o.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,A&&("function"==typeof A.transform&&(this._transform=A.transform),"function"==typeof A.flush&&(this._flush=A.flush)),this.on("prefinish",c)}function c(){var A=this;"function"!=typeof this._flush||this._readableState.destroyed?w(this,null,null):this._flush((function(t,e){w(A,t,e)}))}function w(A,t,e){if(t)return A.emit("error",t);if(null!=e&&A.push(e),A._writableState.length)throw new s;if(A._transformState.transforming)throw new g;return A.push(null)}e(6698)(a,i),a.prototype.push=function(A,t){return this._transformState.needTransform=!1,i.prototype.push.call(this,A,t)},a.prototype._transform=function(A,t,e){e(new n("_transform()"))},a.prototype._write=function(A,t,e){var r=this._transformState;if(r.writecb=e,r.writechunk=A,r.writeencoding=t,!r.transforming){var n=this._readableState;(r.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},a.prototype._read=function(A){var t=this._transformState;null===t.writechunk||t.transforming?t.needTransform=!0:(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform))},a.prototype._destroy=function(A,t){i.prototype._destroy.call(this,A,(function(A){t(A)}))}},1999:(A,t,e)=>{"use strict";var r,n=e(5606);function B(A){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(A,t,e){var r=A.entry;A.entry=null;for(;r;){var n=r.callback;t.pendingcb--,n(e),r=r.next}t.corkedRequestsFree.next=A}(t,A)}}A.exports=F,F.WritableState=I;var g={deprecate:e(4643)},s=e(1396),i=e(8287).Buffer,o=(void 0!==e.g?e.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var a,c=e(4347),w=e(6644).getHighWaterMark,Q=e(2463).F,h=Q.ERR_INVALID_ARG_TYPE,u=Q.ERR_METHOD_NOT_IMPLEMENTED,l=Q.ERR_MULTIPLE_CALLBACK,C=Q.ERR_STREAM_CANNOT_PIPE,f=Q.ERR_STREAM_DESTROYED,d=Q.ERR_STREAM_NULL_VALUES,E=Q.ERR_STREAM_WRITE_AFTER_END,p=Q.ERR_UNKNOWN_ENCODING,H=c.errorOrDestroy;function D(){}function I(A,t,g){r=r||e(8101),A=A||{},"boolean"!=typeof g&&(g=t instanceof r),this.objectMode=!!A.objectMode,g&&(this.objectMode=this.objectMode||!!A.writableObjectMode),this.highWaterMark=w(this,A,"writableHighWaterMark",g),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===A.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(A){!function(A,t){var e=A._writableState,r=e.sync,B=e.writecb;if("function"!=typeof B)throw new l;if(function(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}(e),t)!function(A,t,e,r,B){--t.pendingcb,e?(n.nextTick(B,r),n.nextTick(y,A,t),A._writableState.errorEmitted=!0,H(A,r)):(B(r),A._writableState.errorEmitted=!0,H(A,r),y(A,t))}(A,e,r,t,B);else{var g=M(e)||A.destroyed;g||e.corked||e.bufferProcessing||!e.bufferedRequest||Y(A,e),r?n.nextTick(U,A,e,g,B):U(A,e,g,B)}}(t,A)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==A.emitClose,this.autoDestroy=!!A.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new B(this)}function F(A){var t=this instanceof(r=r||e(8101));if(!t&&!a.call(F,this))return new F(A);this._writableState=new I(A,this,t),this.writable=!0,A&&("function"==typeof A.write&&(this._write=A.write),"function"==typeof A.writev&&(this._writev=A.writev),"function"==typeof A.destroy&&(this._destroy=A.destroy),"function"==typeof A.final&&(this._final=A.final)),s.call(this)}function G(A,t,e,r,n,B,g){t.writelen=r,t.writecb=g,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new f("write")):e?A._writev(n,t.onwrite):A._write(n,B,t.onwrite),t.sync=!1}function U(A,t,e,r){e||function(A,t){0===t.length&&t.needDrain&&(t.needDrain=!1,A.emit("drain"))}(A,t),t.pendingcb--,r(),y(A,t)}function Y(A,t){t.bufferProcessing=!0;var e=t.bufferedRequest;if(A._writev&&e&&e.next){var r=t.bufferedRequestCount,n=new Array(r),g=t.corkedRequestsFree;g.entry=e;for(var s=0,i=!0;e;)n[s]=e,e.isBuf||(i=!1),e=e.next,s+=1;n.allBuffers=i,G(A,t,!0,t.length,n,"",g.finish),t.pendingcb++,t.lastBufferedRequest=null,g.next?(t.corkedRequestsFree=g.next,g.next=null):t.corkedRequestsFree=new B(t),t.bufferedRequestCount=0}else{for(;e;){var o=e.chunk,a=e.encoding,c=e.callback;if(G(A,t,!1,t.objectMode?1:o.length,o,a,c),e=e.next,t.bufferedRequestCount--,t.writing)break}null===e&&(t.lastBufferedRequest=null)}t.bufferedRequest=e,t.bufferProcessing=!1}function M(A){return A.ending&&0===A.length&&null===A.bufferedRequest&&!A.finished&&!A.writing}function m(A,t){A._final((function(e){t.pendingcb--,e&&H(A,e),t.prefinished=!0,A.emit("prefinish"),y(A,t)}))}function y(A,t){var e=M(t);if(e&&(function(A,t){t.prefinished||t.finalCalled||("function"!=typeof A._final||t.destroyed?(t.prefinished=!0,A.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,n.nextTick(m,A,t)))}(A,t),0===t.pendingcb&&(t.finished=!0,A.emit("finish"),t.autoDestroy))){var r=A._readableState;(!r||r.autoDestroy&&r.endEmitted)&&A.destroy()}return e}e(6698)(F,s),I.prototype.getBuffer=function(){for(var A=this.bufferedRequest,t=[];A;)t.push(A),A=A.next;return t},function(){try{Object.defineProperty(I.prototype,"buffer",{get:g.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(A){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(a=Function.prototype[Symbol.hasInstance],Object.defineProperty(F,Symbol.hasInstance,{value:function(A){return!!a.call(this,A)||this===F&&(A&&A._writableState instanceof I)}})):a=function(A){return A instanceof this},F.prototype.pipe=function(){H(this,new C)},F.prototype.write=function(A,t,e){var r,B=this._writableState,g=!1,s=!B.objectMode&&(r=A,i.isBuffer(r)||r instanceof o);return s&&!i.isBuffer(A)&&(A=function(A){return i.from(A)}(A)),"function"==typeof t&&(e=t,t=null),s?t="buffer":t||(t=B.defaultEncoding),"function"!=typeof e&&(e=D),B.ending?function(A,t){var e=new E;H(A,e),n.nextTick(t,e)}(this,e):(s||function(A,t,e,r){var B;return null===e?B=new d:"string"==typeof e||t.objectMode||(B=new h("chunk",["string","Buffer"],e)),!B||(H(A,B),n.nextTick(r,B),!1)}(this,B,A,e))&&(B.pendingcb++,g=function(A,t,e,r,n,B){if(!e){var g=function(A,t,e){A.objectMode||!1===A.decodeStrings||"string"!=typeof t||(t=i.from(t,e));return t}(t,r,n);r!==g&&(e=!0,n="buffer",r=g)}var s=t.objectMode?1:r.length;t.length+=s;var o=t.length<t.highWaterMark;o||(t.needDrain=!0);if(t.writing||t.corked){var a=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:n,isBuf:e,callback:B,next:null},a?a.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else G(A,t,!1,s,r,n,B);return o}(this,B,s,A,t,e)),g},F.prototype.cork=function(){this._writableState.corked++},F.prototype.uncork=function(){var A=this._writableState;A.corked&&(A.corked--,A.writing||A.corked||A.bufferProcessing||!A.bufferedRequest||Y(this,A))},F.prototype.setDefaultEncoding=function(A){if("string"==typeof A&&(A=A.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((A+"").toLowerCase())>-1))throw new p(A);return this._writableState.defaultEncoding=A,this},Object.defineProperty(F.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(F.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),F.prototype._write=function(A,t,e){e(new u("_write()"))},F.prototype._writev=null,F.prototype.end=function(A,t,e){var r=this._writableState;return"function"==typeof A?(e=A,A=null,t=null):"function"==typeof t&&(e=t,t=null),null!=A&&this.write(A,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(A,t,e){t.ending=!0,y(A,t),e&&(t.finished?n.nextTick(e):A.once("finish",e));t.ended=!0,A.writable=!1}(this,r,e),this},Object.defineProperty(F.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(F.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(A){this._writableState&&(this._writableState.destroyed=A)}}),F.prototype.destroy=c.destroy,F.prototype._undestroy=c.undestroy,F.prototype._destroy=function(A,t){t(A)}},5034:(A,t,e)=>{"use strict";var r,n=e(5606);function B(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var r=e.call(A,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}var g=e(4257),s=Symbol("lastResolve"),i=Symbol("lastReject"),o=Symbol("error"),a=Symbol("ended"),c=Symbol("lastPromise"),w=Symbol("handlePromise"),Q=Symbol("stream");function h(A,t){return{value:A,done:t}}function u(A){var t=A[s];if(null!==t){var e=A[Q].read();null!==e&&(A[c]=null,A[s]=null,A[i]=null,t(h(e,!1)))}}function l(A){n.nextTick(u,A)}var C=Object.getPrototypeOf((function(){})),f=Object.setPrototypeOf((B(r={get stream(){return this[Q]},next:function(){var A=this,t=this[o];if(null!==t)return Promise.reject(t);if(this[a])return Promise.resolve(h(void 0,!0));if(this[Q].destroyed)return new Promise((function(t,e){n.nextTick((function(){A[o]?e(A[o]):t(h(void 0,!0))}))}));var e,r=this[c];if(r)e=new Promise(function(A,t){return function(e,r){A.then((function(){t[a]?e(h(void 0,!0)):t[w](e,r)}),r)}}(r,this));else{var B=this[Q].read();if(null!==B)return Promise.resolve(h(B,!1));e=new Promise(this[w])}return this[c]=e,e}},Symbol.asyncIterator,(function(){return this})),B(r,"return",(function(){var A=this;return new Promise((function(t,e){A[Q].destroy(null,(function(A){A?e(A):t(h(void 0,!0))}))}))})),r),C);A.exports=function(A){var t,e=Object.create(f,(B(t={},Q,{value:A,writable:!0}),B(t,s,{value:null,writable:!0}),B(t,i,{value:null,writable:!0}),B(t,o,{value:null,writable:!0}),B(t,a,{value:A._readableState.endEmitted,writable:!0}),B(t,w,{value:function(A,t){var r=e[Q].read();r?(e[c]=null,e[s]=null,e[i]=null,A(h(r,!1))):(e[s]=A,e[i]=t)},writable:!0}),t));return e[c]=null,g(A,(function(A){if(A&&"ERR_STREAM_PREMATURE_CLOSE"!==A.code){var t=e[i];return null!==t&&(e[c]=null,e[s]=null,e[i]=null,t(A)),void(e[o]=A)}var r=e[s];null!==r&&(e[c]=null,e[s]=null,e[i]=null,r(h(void 0,!0))),e[a]=!0})),A.on("readable",l.bind(null,e)),e}},1766:(A,t,e)=>{"use strict";function r(A,t){var e=Object.keys(A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(A);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(A,t).enumerable}))),e.push.apply(e,r)}return e}function n(A){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?r(Object(e),!0).forEach((function(t){B(A,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(e)):r(Object(e)).forEach((function(t){Object.defineProperty(A,t,Object.getOwnPropertyDescriptor(e,t))}))}return A}function B(A,t,e){return(t=s(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}function g(A,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(A,s(r.key),r)}}function s(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var r=e.call(A,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}var i=e(8287).Buffer,o=e(3779).inspect,a=o&&o.custom||"inspect";A.exports=function(){function A(){!function(A,t){if(!(A instanceof t))throw new TypeError("Cannot call a class as a function")}(this,A),this.head=null,this.tail=null,this.length=0}var t,e,r;return t=A,(e=[{key:"push",value:function(A){var t={data:A,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(A){var t={data:A,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var A=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,A}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(A){if(0===this.length)return"";for(var t=this.head,e=""+t.data;t=t.next;)e+=A+t.data;return e}},{key:"concat",value:function(A){if(0===this.length)return i.alloc(0);for(var t,e,r,n=i.allocUnsafe(A>>>0),B=this.head,g=0;B;)t=B.data,e=n,r=g,i.prototype.copy.call(t,e,r),g+=B.data.length,B=B.next;return n}},{key:"consume",value:function(A,t){var e;return A<this.head.data.length?(e=this.head.data.slice(0,A),this.head.data=this.head.data.slice(A)):e=A===this.head.data.length?this.shift():t?this._getString(A):this._getBuffer(A),e}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(A){var t=this.head,e=1,r=t.data;for(A-=r.length;t=t.next;){var n=t.data,B=A>n.length?n.length:A;if(B===n.length?r+=n:r+=n.slice(0,A),0==(A-=B)){B===n.length?(++e,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=n.slice(B));break}++e}return this.length-=e,r}},{key:"_getBuffer",value:function(A){var t=i.allocUnsafe(A),e=this.head,r=1;for(e.data.copy(t),A-=e.data.length;e=e.next;){var n=e.data,B=A>n.length?n.length:A;if(n.copy(t,t.length-A,0,B),0==(A-=B)){B===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(B));break}++r}return this.length-=r,t}},{key:a,value:function(A,t){return o(this,n(n({},t),{},{depth:0,customInspect:!1}))}}])&&g(t.prototype,e),r&&g(t,r),Object.defineProperty(t,"prototype",{writable:!1}),A}()},4347:(A,t,e)=>{"use strict";var r=e(5606);function n(A,t){g(A,t),B(A)}function B(A){A._writableState&&!A._writableState.emitClose||A._readableState&&!A._readableState.emitClose||A.emit("close")}function g(A,t){A.emit("error",t)}A.exports={destroy:function(A,t){var e=this,s=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return s||i?(t?t(A):A&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,r.nextTick(g,this,A)):r.nextTick(g,this,A)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(A||null,(function(A){!t&&A?e._writableState?e._writableState.errorEmitted?r.nextTick(B,e):(e._writableState.errorEmitted=!0,r.nextTick(n,e,A)):r.nextTick(n,e,A):t?(r.nextTick(B,e),t(A)):r.nextTick(B,e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(A,t){var e=A._readableState,r=A._writableState;e&&e.autoDestroy||r&&r.autoDestroy?A.destroy(t):A.emit("error",t)}}},4257:(A,t,e)=>{"use strict";var r=e(2463).F.ERR_STREAM_PREMATURE_CLOSE;function n(){}A.exports=function A(t,e,B){if("function"==typeof e)return A(t,null,e);e||(e={}),B=function(A){var t=!1;return function(){if(!t){t=!0;for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];A.apply(this,r)}}}(B||n);var g=e.readable||!1!==e.readable&&t.readable,s=e.writable||!1!==e.writable&&t.writable,i=function(){t.writable||a()},o=t._writableState&&t._writableState.finished,a=function(){s=!1,o=!0,g||B.call(t)},c=t._readableState&&t._readableState.endEmitted,w=function(){g=!1,c=!0,s||B.call(t)},Q=function(A){B.call(t,A)},h=function(){var A;return g&&!c?(t._readableState&&t._readableState.ended||(A=new r),B.call(t,A)):s&&!o?(t._writableState&&t._writableState.ended||(A=new r),B.call(t,A)):void 0},u=function(){t.req.on("finish",a)};return!function(A){return A.setHeader&&"function"==typeof A.abort}(t)?s&&!t._writableState&&(t.on("end",i),t.on("close",i)):(t.on("complete",a),t.on("abort",h),t.req?u():t.on("request",u)),t.on("end",w),t.on("finish",a),!1!==e.error&&t.on("error",Q),t.on("close",h),function(){t.removeListener("complete",a),t.removeListener("abort",h),t.removeListener("request",u),t.req&&t.req.removeListener("finish",a),t.removeListener("end",i),t.removeListener("close",i),t.removeListener("finish",a),t.removeListener("end",w),t.removeListener("error",Q),t.removeListener("close",h)}}},968:A=>{A.exports=function(){throw new Error("Readable.from is not available in the browser")}},5267:(A,t,e)=>{"use strict";var r;var n=e(2463).F,B=n.ERR_MISSING_ARGS,g=n.ERR_STREAM_DESTROYED;function s(A){if(A)throw A}function i(A){A()}function o(A,t){return A.pipe(t)}A.exports=function(){for(var A=arguments.length,t=new Array(A),n=0;n<A;n++)t[n]=arguments[n];var a,c=function(A){return A.length?"function"!=typeof A[A.length-1]?s:A.pop():s}(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new B("streams");var w=t.map((function(A,n){var B=n<t.length-1;return function(A,t,n,B){B=function(A){var t=!1;return function(){t||(t=!0,A.apply(void 0,arguments))}}(B);var s=!1;A.on("close",(function(){s=!0})),void 0===r&&(r=e(4257)),r(A,{readable:t,writable:n},(function(A){if(A)return B(A);s=!0,B()}));var i=!1;return function(t){if(!s&&!i)return i=!0,function(A){return A.setHeader&&"function"==typeof A.abort}(A)?A.abort():"function"==typeof A.destroy?A.destroy():void B(t||new g("pipe"))}}(A,B,n>0,(function(A){a||(a=A),A&&w.forEach(i),B||(w.forEach(i),c(a))}))}));return t.reduce(o)}},6644:(A,t,e)=>{"use strict";var r=e(2463).F.ERR_INVALID_OPT_VALUE;A.exports={getHighWaterMark:function(A,t,e,n){var B=function(A,t,e){return null!=A.highWaterMark?A.highWaterMark:t?A[e]:null}(t,n,e);if(null!=B){if(!isFinite(B)||Math.floor(B)!==B||B<0)throw new r(n?e:"highWaterMark",B);return Math.floor(B)}return A.objectMode?16:16384}}},1396:(A,t,e)=>{A.exports=e(7007).EventEmitter},3141:(A,t,e)=>{"use strict";var r=e(2861).Buffer,n=r.isEncoding||function(A){switch((A=""+A)&&A.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function B(A){var t;switch(this.encoding=function(A){var t=function(A){if(!A)return"utf8";for(var t;;)switch(A){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return A;default:if(t)return;A=(""+A).toLowerCase(),t=!0}}(A);if("string"!=typeof t&&(r.isEncoding===n||!n(A)))throw new Error("Unknown encoding: "+A);return t||A}(A),this.encoding){case"utf16le":this.text=i,this.end=o,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=a,this.end=c,t=3;break;default:return this.write=w,void(this.end=Q)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function g(A){return A<=127?0:A>>5==6?2:A>>4==14?3:A>>3==30?4:A>>6==2?-1:-2}function s(A){var t=this.lastTotal-this.lastNeed,e=function(A,t){if(128!=(192&t[0]))return A.lastNeed=0,"�";if(A.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return A.lastNeed=1,"�";if(A.lastNeed>2&&t.length>2&&128!=(192&t[2]))return A.lastNeed=2,"�"}}(this,A);return void 0!==e?e:this.lastNeed<=A.length?(A.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(A.copy(this.lastChar,t,0,A.length),void(this.lastNeed-=A.length))}function i(A,t){if((A.length-t)%2==0){var e=A.toString("utf16le",t);if(e){var r=e.charCodeAt(e.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=A[A.length-2],this.lastChar[1]=A[A.length-1],e.slice(0,-1)}return e}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=A[A.length-1],A.toString("utf16le",t,A.length-1)}function o(A){var t=A&&A.length?this.write(A):"";if(this.lastNeed){var e=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,e)}return t}function a(A,t){var e=(A.length-t)%3;return 0===e?A.toString("base64",t):(this.lastNeed=3-e,this.lastTotal=3,1===e?this.lastChar[0]=A[A.length-1]:(this.lastChar[0]=A[A.length-2],this.lastChar[1]=A[A.length-1]),A.toString("base64",t,A.length-e))}function c(A){var t=A&&A.length?this.write(A):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function w(A){return A.toString(this.encoding)}function Q(A){return A&&A.length?this.write(A):""}t.I=B,B.prototype.write=function(A){if(0===A.length)return"";var t,e;if(this.lastNeed){if(void 0===(t=this.fillLast(A)))return"";e=this.lastNeed,this.lastNeed=0}else e=0;return e<A.length?t?t+this.text(A,e):this.text(A,e):t||""},B.prototype.end=function(A){var t=A&&A.length?this.write(A):"";return this.lastNeed?t+"�":t},B.prototype.text=function(A,t){var e=function(A,t,e){var r=t.length-1;if(r<e)return 0;var n=g(t[r]);if(n>=0)return n>0&&(A.lastNeed=n-1),n;if(--r<e||-2===n)return 0;if(n=g(t[r]),n>=0)return n>0&&(A.lastNeed=n-2),n;if(--r<e||-2===n)return 0;if(n=g(t[r]),n>=0)return n>0&&(2===n?n=0:A.lastNeed=n-3),n;return 0}(this,A,t);if(!this.lastNeed)return A.toString("utf8",t);this.lastTotal=e;var r=A.length-(e-this.lastNeed);return A.copy(this.lastChar,0,r),A.toString("utf8",t,r)},B.prototype.fillLast=function(A){if(this.lastNeed<=A.length)return A.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);A.copy(this.lastChar,this.lastTotal-this.lastNeed,0,A.length),this.lastNeed-=A.length}},9278:(A,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.serialize=t.deserialize=t.registerSerializer=void 0;const r=e(5914);let n=r.DefaultSerializer;t.registerSerializer=function(A){n=r.extendSerializer(n,A)},t.deserialize=function(A){return n.deserialize(A)},t.serialize=function(A){return n.serialize(A)}},5914:(A,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultSerializer=t.extendSerializer=void 0,t.extendSerializer=function(A,t){const e=A.deserialize.bind(A),r=A.serialize.bind(A);return{deserialize:A=>t.deserialize(A,e),serialize:A=>t.serialize(A,r)}};const e={deserialize:A=>Object.assign(Error(A.message),{name:A.name,stack:A.stack}),serialize:A=>({__error_marker:"$$error",message:A.message,name:A.name,stack:A.stack})};t.DefaultSerializer={deserialize(A){return(t=A)&&"object"==typeof t&&"__error_marker"in t&&"$$error"===t.__error_marker?e.deserialize(A):A;var t},serialize:A=>A instanceof Error?e.serialize(A):A}},3682:(A,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.$worker=t.$transferable=t.$terminate=t.$events=t.$errors=void 0,t.$errors=Symbol("thread.errors"),t.$events=Symbol("thread.events"),t.$terminate=Symbol("thread.terminate"),t.$transferable=Symbol("thread.transferable"),t.$worker=Symbol("thread.worker")},6712:(A,t,e)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Transfer=t.isTransferDescriptor=void 0;const r=e(3682);t.isTransferDescriptor=function(A){return A&&"object"==typeof A&&A[r.$transferable]},t.Transfer=function(A,t){if(!t){if(!(e=A)||"object"!=typeof e)throw Error();t=[A]}var e;return{[r.$transferable]:!0,send:A,transferables:t}}},2781:(A,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkerMessageType=t.MasterMessageType=void 0,function(A){A.cancel="cancel",A.run="run"}(t.MasterMessageType||(t.MasterMessageType={})),function(A){A.error="error",A.init="init",A.result="result",A.running="running",A.uncaughtError="uncaughtError"}(t.WorkerMessageType||(t.WorkerMessageType={}))},4304:(A,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={isWorkerRuntime:function(){const A="undefined"!=typeof self&&"undefined"!=typeof Window&&self instanceof Window;return!("undefined"==typeof self||!self.postMessage||A)},postMessageToMaster:function(A,t){self.postMessage(A,t)},subscribeToMasterMessages:function(A){const t=t=>{A(t.data)};return self.addEventListener("message",t),()=>{self.removeEventListener("message",t)}}}},1854:function(A,t,e){"use strict";var r=e(5606),n=this&&this.__awaiter||function(A,t,e,r){return new(e||(e=Promise))((function(n,B){function g(A){try{i(r.next(A))}catch(A){B(A)}}function s(A){try{i(r.throw(A))}catch(A){B(A)}}function i(A){var t;A.done?n(A.value):(t=A.value,t instanceof e?t:new e((function(A){A(t)}))).then(g,s)}i((r=r.apply(A,t||[])).next())}))},B=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(t,"__esModule",{value:!0}),t.expose=t.isWorkerRuntime=t.Transfer=t.registerSerializer=void 0;const g=B(e(5409)),s=e(9278),i=e(6712),o=e(2781),a=B(e(4304));var c=e(9278);Object.defineProperty(t,"registerSerializer",{enumerable:!0,get:function(){return c.registerSerializer}});var w=e(6712);Object.defineProperty(t,"Transfer",{enumerable:!0,get:function(){return w.Transfer}}),t.isWorkerRuntime=a.default.isWorkerRuntime;let Q=!1;const h=new Map,u=A=>A&&A.type===o.MasterMessageType.run,l=A=>g.default(A)||function(A){return A&&"object"==typeof A&&"function"==typeof A.subscribe}(A);function C(A){return i.isTransferDescriptor(A)?{payload:A.send,transferables:A.transferables}:{payload:A,transferables:void 0}}function f(A,t){const{payload:e,transferables:r}=C(t),n={type:o.WorkerMessageType.error,uid:A,error:s.serialize(e)};a.default.postMessageToMaster(n,r)}function d(A,t,e){const{payload:r,transferables:n}=C(e),B={type:o.WorkerMessageType.result,uid:A,complete:!!t||void 0,payload:r};a.default.postMessageToMaster(B,n)}function E(A){try{const t={type:o.WorkerMessageType.uncaughtError,error:s.serialize(A)};a.default.postMessageToMaster(t)}catch(t){console.error("Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:",t,"\nOriginal error:",A)}}function p(A,t,e){return n(this,void 0,void 0,(function*(){let r;try{r=t(...e)}catch(t){return f(A,t)}const n=l(r)?"observable":"promise";if(function(A,t){const e={type:o.WorkerMessageType.running,uid:A,resultType:t};a.default.postMessageToMaster(e)}(A,n),l(r)){const t=r.subscribe((t=>d(A,!1,s.serialize(t))),(t=>{f(A,s.serialize(t)),h.delete(A)}),(()=>{d(A,!0),h.delete(A)}));h.set(A,t)}else try{const t=yield r;d(A,!0,s.serialize(t))}catch(t){f(A,s.serialize(t))}}))}t.expose=function(A){if(!a.default.isWorkerRuntime())throw Error("expose() called in the master thread.");if(Q)throw Error("expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.");if(Q=!0,"function"==typeof A)a.default.subscribeToMasterMessages((t=>{u(t)&&!t.method&&p(t.uid,A,t.args.map(s.deserialize))})),function(){const A={type:o.WorkerMessageType.init,exposed:{type:"function"}};a.default.postMessageToMaster(A)}();else{if("object"!=typeof A||!A)throw Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${A}`);a.default.subscribeToMasterMessages((t=>{u(t)&&t.method&&p(t.uid,A[t.method],t.args.map(s.deserialize))}));!function(A){const t={type:o.WorkerMessageType.init,exposed:{type:"module",methods:A}};a.default.postMessageToMaster(t)}(Object.keys(A).filter((t=>"function"==typeof A[t])))}a.default.subscribeToMasterMessages((A=>{if((t=A)&&t.type===o.MasterMessageType.cancel){const t=A.uid,e=h.get(t);e&&(e.unsubscribe(),h.delete(t))}var t}))},"undefined"!=typeof self&&"function"==typeof self.addEventListener&&a.default.isWorkerRuntime()&&(self.addEventListener("error",(A=>{setTimeout((()=>E(A.error||A)),250)})),self.addEventListener("unhandledrejection",(A=>{const t=A.reason;t&&"string"==typeof t.message&&setTimeout((()=>E(t)),250)}))),void 0!==r&&"function"==typeof r.on&&a.default.isWorkerRuntime()&&(r.on("uncaughtException",(A=>{setTimeout((()=>E(A)),250)})),r.on("unhandledRejection",(A=>{A&&"string"==typeof A.message&&setTimeout((()=>E(A)),250)})))},4643:(A,t,e)=>{function r(A){try{if(!e.g.localStorage)return!1}catch(A){return!1}var t=e.g.localStorage[A];return null!=t&&"true"===String(t).toLowerCase()}A.exports=function(A,t){if(r("noDeprecation"))return A;var e=!1;return function(){if(!e){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),e=!0}return A.apply(this,arguments)}}},3779:()=>{},7199:()=>{}},t={};function e(r){var n=t[r];if(void 0!==n)return n.exports;var B=t[r]={exports:{}};return A[r].call(B.exports,B,B.exports,e),B.exports}e.d=(A,t)=>{for(var r in t)e.o(t,r)&&!e.o(A,r)&&Object.defineProperty(A,r,{enumerable:!0,get:t[r]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(A){if("object"==typeof window)return window}}(),e.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),e.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},(()=>{"use strict";var A={};e.r(A),e.d(A,{close:()=>Sn,deleteEverything:()=>Cn,eof:()=>Kn,eoln:()=>Tn,erstat:()=>Nn,executeAsync:()=>Un,get:()=>Jn,getCurrentDay:()=>Mn,getCurrentMinutes:()=>Yn,getCurrentMonth:()=>mn,getCurrentYear:()=>yn,getfilesize:()=>_n,inputln:()=>jn,pages:()=>wn,printBoolean:()=>kn,printChar:()=>On,printFloat:()=>Rn,printInteger:()=>xn,printNewline:()=>Vn,printString:()=>bn,put:()=>qn,readFileSync:()=>dn,reset:()=>Ln,rewrite:()=>vn,setFileLoader:()=>Gn,setInput:()=>Fn,setMemory:()=>In,setShowConsole:()=>Dn,tex_final_end:()=>Pn,writeFileSync:()=>fn});var t,r,n={526:(A,t)=>{t.byteLength=function(A){var t=s(A),e=t[0],r=t[1];return 3*(e+r)/4-r},t.toByteArray=function(A){var t,e,B=s(A),g=B[0],i=B[1],o=new n(function(A,t,e){return 3*(t+e)/4-e}(0,g,i)),a=0,c=i>0?g-4:g;for(e=0;e<c;e+=4)t=r[A.charCodeAt(e)]<<18|r[A.charCodeAt(e+1)]<<12|r[A.charCodeAt(e+2)]<<6|r[A.charCodeAt(e+3)],o[a++]=t>>16&255,o[a++]=t>>8&255,o[a++]=255&t;return 2===i&&(t=r[A.charCodeAt(e)]<<2|r[A.charCodeAt(e+1)]>>4,o[a++]=255&t),1===i&&(t=r[A.charCodeAt(e)]<<10|r[A.charCodeAt(e+1)]<<4|r[A.charCodeAt(e+2)]>>2,o[a++]=t>>8&255,o[a++]=255&t),o},t.fromByteArray=function(A){for(var t,r=A.length,n=r%3,B=[],g=16383,s=0,o=r-n;s<o;s+=g)B.push(i(A,s,s+g>o?o:s+g));return 1===n?(t=A[r-1],B.push(e[t>>2]+e[t<<4&63]+"==")):2===n&&(t=(A[r-2]<<8)+A[r-1],B.push(e[t>>10]+e[t>>4&63]+e[t<<2&63]+"=")),B.join("")};for(var e=[],r=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=0;g<64;++g)e[g]=B[g],r[B.charCodeAt(g)]=g;function s(A){var t=A.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=A.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function i(A,t,r){for(var n,B,g=[],s=t;s<r;s+=3)n=(A[s]<<16&16711680)+(A[s+1]<<8&65280)+(255&A[s+2]),g.push(e[(B=n)>>18&63]+e[B>>12&63]+e[B>>6&63]+e[63&B]);return g.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},287:(A,t,e)=>{const r=e(526),n=e(251),B="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=i,t.IS=50;const g=2147483647;function s(A){if(A>g)throw new RangeError('The value "'+A+'" is invalid for option "size"');const t=new Uint8Array(A);return Object.setPrototypeOf(t,i.prototype),t}function i(A,t,e){if("number"==typeof A){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return c(A)}return o(A,t,e)}function o(A,t,e){if("string"==typeof A)return function(A,t){if("string"==typeof t&&""!==t||(t="utf8"),!i.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const e=0|u(A,t);let r=s(e);const n=r.write(A,t);return n!==e&&(r=r.slice(0,n)),r}(A,t);if(ArrayBuffer.isView(A))return function(A){if(W(A,Uint8Array)){const t=new Uint8Array(A);return Q(t.buffer,t.byteOffset,t.byteLength)}return w(A)}(A);if(null==A)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof A);if(W(A,ArrayBuffer)||A&&W(A.buffer,ArrayBuffer))return Q(A,t,e);if("undefined"!=typeof SharedArrayBuffer&&(W(A,SharedArrayBuffer)||A&&W(A.buffer,SharedArrayBuffer)))return Q(A,t,e);if("number"==typeof A)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=A.valueOf&&A.valueOf();if(null!=r&&r!==A)return i.from(r,t,e);const n=function(A){if(i.isBuffer(A)){const t=0|h(A.length),e=s(t);return 0===e.length||A.copy(e,0,0,t),e}return void 0!==A.length?"number"!=typeof A.length||Z(A.length)?s(0):w(A):"Buffer"===A.type&&Array.isArray(A.data)?w(A.data):void 0}(A);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof A[Symbol.toPrimitive])return i.from(A[Symbol.toPrimitive]("string"),t,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof A)}function a(A){if("number"!=typeof A)throw new TypeError('"size" argument must be of type number');if(A<0)throw new RangeError('The value "'+A+'" is invalid for option "size"')}function c(A){return a(A),s(A<0?0:0|h(A))}function w(A){const t=A.length<0?0:0|h(A.length),e=s(t);for(let r=0;r<t;r+=1)e[r]=255&A[r];return e}function Q(A,t,e){if(t<0||A.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(A.byteLength<t+(e||0))throw new RangeError('"length" is outside of buffer bounds');let r;return r=void 0===t&&void 0===e?new Uint8Array(A):void 0===e?new Uint8Array(A,t):new Uint8Array(A,t,e),Object.setPrototypeOf(r,i.prototype),r}function h(A){if(A>=g)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+g.toString(16)+" bytes");return 0|A}function u(A,t){if(i.isBuffer(A))return A.length;if(ArrayBuffer.isView(A)||W(A,ArrayBuffer))return A.byteLength;if("string"!=typeof A)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof A);const e=A.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===e)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return J(A).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return q(A).length;default:if(n)return r?-1:J(A).length;t=(""+t).toLowerCase(),n=!0}}function l(A,t,e){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(A||(A="utf8");;)switch(A){case"hex":return m(this,t,e);case"utf8":case"utf-8":return G(this,t,e);case"ascii":return Y(this,t,e);case"latin1":case"binary":return M(this,t,e);case"base64":return F(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return y(this,t,e);default:if(r)throw new TypeError("Unknown encoding: "+A);A=(A+"").toLowerCase(),r=!0}}function C(A,t,e){const r=A[t];A[t]=A[e],A[e]=r}function f(A,t,e,r,n){if(0===A.length)return-1;if("string"==typeof e?(r=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),Z(e=+e)&&(e=n?0:A.length-1),e<0&&(e=A.length+e),e>=A.length){if(n)return-1;e=A.length-1}else if(e<0){if(!n)return-1;e=0}if("string"==typeof t&&(t=i.from(t,r)),i.isBuffer(t))return 0===t.length?-1:d(A,t,e,r,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(A,t,e):Uint8Array.prototype.lastIndexOf.call(A,t,e):d(A,[t],e,r,n);throw new TypeError("val must be string, number or Buffer")}function d(A,t,e,r,n){let B,g=1,s=A.length,i=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(A.length<2||t.length<2)return-1;g=2,s/=2,i/=2,e/=2}function o(A,t){return 1===g?A[t]:A.readUInt16BE(t*g)}if(n){let r=-1;for(B=e;B<s;B++)if(o(A,B)===o(t,-1===r?0:B-r)){if(-1===r&&(r=B),B-r+1===i)return r*g}else-1!==r&&(B-=B-r),r=-1}else for(e+i>s&&(e=s-i),B=e;B>=0;B--){let e=!0;for(let r=0;r<i;r++)if(o(A,B+r)!==o(t,r)){e=!1;break}if(e)return B}return-1}function E(A,t,e,r){e=Number(e)||0;const n=A.length-e;r?(r=Number(r))>n&&(r=n):r=n;const B=t.length;let g;for(r>B/2&&(r=B/2),g=0;g<r;++g){const r=parseInt(t.substr(2*g,2),16);if(Z(r))return g;A[e+g]=r}return g}function p(A,t,e,r){return P(J(t,A.length-e),A,e,r)}function H(A,t,e,r){return P(function(A){const t=[];for(let e=0;e<A.length;++e)t.push(255&A.charCodeAt(e));return t}(t),A,e,r)}function D(A,t,e,r){return P(q(t),A,e,r)}function I(A,t,e,r){return P(function(A,t){let e,r,n;const B=[];for(let g=0;g<A.length&&!((t-=2)<0);++g)e=A.charCodeAt(g),r=e>>8,n=e%256,B.push(n),B.push(r);return B}(t,A.length-e),A,e,r)}function F(A,t,e){return 0===t&&e===A.length?r.fromByteArray(A):r.fromByteArray(A.slice(t,e))}function G(A,t,e){e=Math.min(A.length,e);const r=[];let n=t;for(;n<e;){const t=A[n];let B=null,g=t>239?4:t>223?3:t>191?2:1;if(n+g<=e){let e,r,s,i;switch(g){case 1:t<128&&(B=t);break;case 2:e=A[n+1],128==(192&e)&&(i=(31&t)<<6|63&e,i>127&&(B=i));break;case 3:e=A[n+1],r=A[n+2],128==(192&e)&&128==(192&r)&&(i=(15&t)<<12|(63&e)<<6|63&r,i>2047&&(i<55296||i>57343)&&(B=i));break;case 4:e=A[n+1],r=A[n+2],s=A[n+3],128==(192&e)&&128==(192&r)&&128==(192&s)&&(i=(15&t)<<18|(63&e)<<12|(63&r)<<6|63&s,i>65535&&i<1114112&&(B=i))}}null===B?(B=65533,g=1):B>65535&&(B-=65536,r.push(B>>>10&1023|55296),B=56320|1023&B),r.push(B),n+=g}return function(A){const t=A.length;if(t<=U)return String.fromCharCode.apply(String,A);let e="",r=0;for(;r<t;)e+=String.fromCharCode.apply(String,A.slice(r,r+=U));return e}(r)}i.TYPED_ARRAY_SUPPORT=function(){try{const A=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(A,t),42===A.foo()}catch(A){return!1}}(),i.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(i.prototype,"parent",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.buffer}}),Object.defineProperty(i.prototype,"offset",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.byteOffset}}),i.poolSize=8192,i.from=function(A,t,e){return o(A,t,e)},Object.setPrototypeOf(i.prototype,Uint8Array.prototype),Object.setPrototypeOf(i,Uint8Array),i.alloc=function(A,t,e){return function(A,t,e){return a(A),A<=0?s(A):void 0!==t?"string"==typeof e?s(A).fill(t,e):s(A).fill(t):s(A)}(A,t,e)},i.allocUnsafe=function(A){return c(A)},i.allocUnsafeSlow=function(A){return c(A)},i.isBuffer=function(A){return null!=A&&!0===A._isBuffer&&A!==i.prototype},i.compare=function(A,t){if(W(A,Uint8Array)&&(A=i.from(A,A.offset,A.byteLength)),W(t,Uint8Array)&&(t=i.from(t,t.offset,t.byteLength)),!i.isBuffer(A)||!i.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(A===t)return 0;let e=A.length,r=t.length;for(let n=0,B=Math.min(e,r);n<B;++n)if(A[n]!==t[n]){e=A[n],r=t[n];break}return e<r?-1:r<e?1:0},i.isEncoding=function(A){switch(String(A).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},i.concat=function(A,t){if(!Array.isArray(A))throw new TypeError('"list" argument must be an Array of Buffers');if(0===A.length)return i.alloc(0);let e;if(void 0===t)for(t=0,e=0;e<A.length;++e)t+=A[e].length;const r=i.allocUnsafe(t);let n=0;for(e=0;e<A.length;++e){let t=A[e];if(W(t,Uint8Array))n+t.length>r.length?(i.isBuffer(t)||(t=i.from(t)),t.copy(r,n)):Uint8Array.prototype.set.call(r,t,n);else{if(!i.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,n)}n+=t.length}return r},i.byteLength=u,i.prototype._isBuffer=!0,i.prototype.swap16=function(){const A=this.length;if(A%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<A;t+=2)C(this,t,t+1);return this},i.prototype.swap32=function(){const A=this.length;if(A%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<A;t+=4)C(this,t,t+3),C(this,t+1,t+2);return this},i.prototype.swap64=function(){const A=this.length;if(A%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<A;t+=8)C(this,t,t+7),C(this,t+1,t+6),C(this,t+2,t+5),C(this,t+3,t+4);return this},i.prototype.toString=function(){const A=this.length;return 0===A?"":0===arguments.length?G(this,0,A):l.apply(this,arguments)},i.prototype.toLocaleString=i.prototype.toString,i.prototype.equals=function(A){if(!i.isBuffer(A))throw new TypeError("Argument must be a Buffer");return this===A||0===i.compare(this,A)},i.prototype.inspect=function(){let A="";const e=t.IS;return A=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(A+=" ... "),"<Buffer "+A+">"},B&&(i.prototype[B]=i.prototype.inspect),i.prototype.compare=function(A,t,e,r,n){if(W(A,Uint8Array)&&(A=i.from(A,A.offset,A.byteLength)),!i.isBuffer(A))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof A);if(void 0===t&&(t=0),void 0===e&&(e=A?A.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),t<0||e>A.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&t>=e)return 0;if(r>=n)return-1;if(t>=e)return 1;if(this===A)return 0;let B=(n>>>=0)-(r>>>=0),g=(e>>>=0)-(t>>>=0);const s=Math.min(B,g),o=this.slice(r,n),a=A.slice(t,e);for(let A=0;A<s;++A)if(o[A]!==a[A]){B=o[A],g=a[A];break}return B<g?-1:g<B?1:0},i.prototype.includes=function(A,t,e){return-1!==this.indexOf(A,t,e)},i.prototype.indexOf=function(A,t,e){return f(this,A,t,e,!0)},i.prototype.lastIndexOf=function(A,t,e){return f(this,A,t,e,!1)},i.prototype.write=function(A,t,e,r){if(void 0===t)r="utf8",e=this.length,t=0;else if(void 0===e&&"string"==typeof t)r=t,e=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(e)?(e>>>=0,void 0===r&&(r="utf8")):(r=e,e=void 0)}const n=this.length-t;if((void 0===e||e>n)&&(e=n),A.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let B=!1;for(;;)switch(r){case"hex":return E(this,A,t,e);case"utf8":case"utf-8":return p(this,A,t,e);case"ascii":case"latin1":case"binary":return H(this,A,t,e);case"base64":return D(this,A,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,A,t,e);default:if(B)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),B=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const U=4096;function Y(A,t,e){let r="";e=Math.min(A.length,e);for(let n=t;n<e;++n)r+=String.fromCharCode(127&A[n]);return r}function M(A,t,e){let r="";e=Math.min(A.length,e);for(let n=t;n<e;++n)r+=String.fromCharCode(A[n]);return r}function m(A,t,e){const r=A.length;(!t||t<0)&&(t=0),(!e||e<0||e>r)&&(e=r);let n="";for(let r=t;r<e;++r)n+=z[A[r]];return n}function y(A,t,e){const r=A.slice(t,e);let n="";for(let A=0;A<r.length-1;A+=2)n+=String.fromCharCode(r[A]+256*r[A+1]);return n}function b(A,t,e){if(A%1!=0||A<0)throw new RangeError("offset is not uint");if(A+t>e)throw new RangeError("Trying to access beyond buffer length")}function k(A,t,e,r,n,B){if(!i.isBuffer(A))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<B)throw new RangeError('"value" argument is out of bounds');if(e+r>A.length)throw new RangeError("Index out of range")}function O(A,t,e,r,n){K(t,r,n,A,e,7);let B=Number(t&BigInt(4294967295));A[e++]=B,B>>=8,A[e++]=B,B>>=8,A[e++]=B,B>>=8,A[e++]=B;let g=Number(t>>BigInt(32)&BigInt(4294967295));return A[e++]=g,g>>=8,A[e++]=g,g>>=8,A[e++]=g,g>>=8,A[e++]=g,e}function x(A,t,e,r,n){K(t,r,n,A,e,7);let B=Number(t&BigInt(4294967295));A[e+7]=B,B>>=8,A[e+6]=B,B>>=8,A[e+5]=B,B>>=8,A[e+4]=B;let g=Number(t>>BigInt(32)&BigInt(4294967295));return A[e+3]=g,g>>=8,A[e+2]=g,g>>=8,A[e+1]=g,g>>=8,A[e]=g,e+8}function R(A,t,e,r,n,B){if(e+r>A.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function V(A,t,e,r,B){return t=+t,e>>>=0,B||R(A,0,e,4),n.write(A,t,e,r,23,4),e+4}function L(A,t,e,r,B){return t=+t,e>>>=0,B||R(A,0,e,8),n.write(A,t,e,r,52,8),e+8}i.prototype.slice=function(A,t){const e=this.length;(A=~~A)<0?(A+=e)<0&&(A=0):A>e&&(A=e),(t=void 0===t?e:~~t)<0?(t+=e)<0&&(t=0):t>e&&(t=e),t<A&&(t=A);const r=this.subarray(A,t);return Object.setPrototypeOf(r,i.prototype),r},i.prototype.readUintLE=i.prototype.readUIntLE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=this[A],n=1,B=0;for(;++B<t&&(n*=256);)r+=this[A+B]*n;return r},i.prototype.readUintBE=i.prototype.readUIntBE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=this[A+--t],n=1;for(;t>0&&(n*=256);)r+=this[A+--t]*n;return r},i.prototype.readUint8=i.prototype.readUInt8=function(A,t){return A>>>=0,t||b(A,1,this.length),this[A]},i.prototype.readUint16LE=i.prototype.readUInt16LE=function(A,t){return A>>>=0,t||b(A,2,this.length),this[A]|this[A+1]<<8},i.prototype.readUint16BE=i.prototype.readUInt16BE=function(A,t){return A>>>=0,t||b(A,2,this.length),this[A]<<8|this[A+1]},i.prototype.readUint32LE=i.prototype.readUInt32LE=function(A,t){return A>>>=0,t||b(A,4,this.length),(this[A]|this[A+1]<<8|this[A+2]<<16)+16777216*this[A+3]},i.prototype.readUint32BE=i.prototype.readUInt32BE=function(A,t){return A>>>=0,t||b(A,4,this.length),16777216*this[A]+(this[A+1]<<16|this[A+2]<<8|this[A+3])},i.prototype.readBigUInt64LE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=t+256*this[++A]+65536*this[++A]+this[++A]*2**24,n=this[++A]+256*this[++A]+65536*this[++A]+e*2**24;return BigInt(r)+(BigInt(n)<<BigInt(32))})),i.prototype.readBigUInt64BE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=t*2**24+65536*this[++A]+256*this[++A]+this[++A],n=this[++A]*2**24+65536*this[++A]+256*this[++A]+e;return(BigInt(r)<<BigInt(32))+BigInt(n)})),i.prototype.readIntLE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=this[A],n=1,B=0;for(;++B<t&&(n*=256);)r+=this[A+B]*n;return n*=128,r>=n&&(r-=Math.pow(2,8*t)),r},i.prototype.readIntBE=function(A,t,e){A>>>=0,t>>>=0,e||b(A,t,this.length);let r=t,n=1,B=this[A+--r];for(;r>0&&(n*=256);)B+=this[A+--r]*n;return n*=128,B>=n&&(B-=Math.pow(2,8*t)),B},i.prototype.readInt8=function(A,t){return A>>>=0,t||b(A,1,this.length),128&this[A]?-1*(255-this[A]+1):this[A]},i.prototype.readInt16LE=function(A,t){A>>>=0,t||b(A,2,this.length);const e=this[A]|this[A+1]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt16BE=function(A,t){A>>>=0,t||b(A,2,this.length);const e=this[A+1]|this[A]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt32LE=function(A,t){return A>>>=0,t||b(A,4,this.length),this[A]|this[A+1]<<8|this[A+2]<<16|this[A+3]<<24},i.prototype.readInt32BE=function(A,t){return A>>>=0,t||b(A,4,this.length),this[A]<<24|this[A+1]<<16|this[A+2]<<8|this[A+3]},i.prototype.readBigInt64LE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=this[A+4]+256*this[A+5]+65536*this[A+6]+(e<<24);return(BigInt(r)<<BigInt(32))+BigInt(t+256*this[++A]+65536*this[++A]+this[++A]*2**24)})),i.prototype.readBigInt64BE=X((function(A){N(A>>>=0,"offset");const t=this[A],e=this[A+7];void 0!==t&&void 0!==e||T(A,this.length-8);const r=(t<<24)+65536*this[++A]+256*this[++A]+this[++A];return(BigInt(r)<<BigInt(32))+BigInt(this[++A]*2**24+65536*this[++A]+256*this[++A]+e)})),i.prototype.readFloatLE=function(A,t){return A>>>=0,t||b(A,4,this.length),n.read(this,A,!0,23,4)},i.prototype.readFloatBE=function(A,t){return A>>>=0,t||b(A,4,this.length),n.read(this,A,!1,23,4)},i.prototype.readDoubleLE=function(A,t){return A>>>=0,t||b(A,8,this.length),n.read(this,A,!0,52,8)},i.prototype.readDoubleBE=function(A,t){return A>>>=0,t||b(A,8,this.length),n.read(this,A,!1,52,8)},i.prototype.writeUintLE=i.prototype.writeUIntLE=function(A,t,e,r){A=+A,t>>>=0,e>>>=0,r||k(this,A,t,e,Math.pow(2,8*e)-1,0);let n=1,B=0;for(this[t]=255&A;++B<e&&(n*=256);)this[t+B]=A/n&255;return t+e},i.prototype.writeUintBE=i.prototype.writeUIntBE=function(A,t,e,r){A=+A,t>>>=0,e>>>=0,r||k(this,A,t,e,Math.pow(2,8*e)-1,0);let n=e-1,B=1;for(this[t+n]=255&A;--n>=0&&(B*=256);)this[t+n]=A/B&255;return t+e},i.prototype.writeUint8=i.prototype.writeUInt8=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,1,255,0),this[t]=255&A,t+1},i.prototype.writeUint16LE=i.prototype.writeUInt16LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,65535,0),this[t]=255&A,this[t+1]=A>>>8,t+2},i.prototype.writeUint16BE=i.prototype.writeUInt16BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,65535,0),this[t]=A>>>8,this[t+1]=255&A,t+2},i.prototype.writeUint32LE=i.prototype.writeUInt32LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,4294967295,0),this[t+3]=A>>>24,this[t+2]=A>>>16,this[t+1]=A>>>8,this[t]=255&A,t+4},i.prototype.writeUint32BE=i.prototype.writeUInt32BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,4294967295,0),this[t]=A>>>24,this[t+1]=A>>>16,this[t+2]=A>>>8,this[t+3]=255&A,t+4},i.prototype.writeBigUInt64LE=X((function(A,t=0){return O(this,A,t,BigInt(0),BigInt("0xffffffffffffffff"))})),i.prototype.writeBigUInt64BE=X((function(A,t=0){return x(this,A,t,BigInt(0),BigInt("0xffffffffffffffff"))})),i.prototype.writeIntLE=function(A,t,e,r){if(A=+A,t>>>=0,!r){const r=Math.pow(2,8*e-1);k(this,A,t,e,r-1,-r)}let n=0,B=1,g=0;for(this[t]=255&A;++n<e&&(B*=256);)A<0&&0===g&&0!==this[t+n-1]&&(g=1),this[t+n]=(A/B|0)-g&255;return t+e},i.prototype.writeIntBE=function(A,t,e,r){if(A=+A,t>>>=0,!r){const r=Math.pow(2,8*e-1);k(this,A,t,e,r-1,-r)}let n=e-1,B=1,g=0;for(this[t+n]=255&A;--n>=0&&(B*=256);)A<0&&0===g&&0!==this[t+n+1]&&(g=1),this[t+n]=(A/B|0)-g&255;return t+e},i.prototype.writeInt8=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,1,127,-128),A<0&&(A=255+A+1),this[t]=255&A,t+1},i.prototype.writeInt16LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,32767,-32768),this[t]=255&A,this[t+1]=A>>>8,t+2},i.prototype.writeInt16BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,2,32767,-32768),this[t]=A>>>8,this[t+1]=255&A,t+2},i.prototype.writeInt32LE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,2147483647,-2147483648),this[t]=255&A,this[t+1]=A>>>8,this[t+2]=A>>>16,this[t+3]=A>>>24,t+4},i.prototype.writeInt32BE=function(A,t,e){return A=+A,t>>>=0,e||k(this,A,t,4,2147483647,-2147483648),A<0&&(A=4294967295+A+1),this[t]=A>>>24,this[t+1]=A>>>16,this[t+2]=A>>>8,this[t+3]=255&A,t+4},i.prototype.writeBigInt64LE=X((function(A,t=0){return O(this,A,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),i.prototype.writeBigInt64BE=X((function(A,t=0){return x(this,A,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),i.prototype.writeFloatLE=function(A,t,e){return V(this,A,t,!0,e)},i.prototype.writeFloatBE=function(A,t,e){return V(this,A,t,!1,e)},i.prototype.writeDoubleLE=function(A,t,e){return L(this,A,t,!0,e)},i.prototype.writeDoubleBE=function(A,t,e){return L(this,A,t,!1,e)},i.prototype.copy=function(A,t,e,r){if(!i.isBuffer(A))throw new TypeError("argument should be a Buffer");if(e||(e=0),r||0===r||(r=this.length),t>=A.length&&(t=A.length),t||(t=0),r>0&&r<e&&(r=e),r===e)return 0;if(0===A.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),A.length-t<r-e&&(r=A.length-t+e);const n=r-e;return this===A&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,e,r):Uint8Array.prototype.set.call(A,this.subarray(e,r),t),n},i.prototype.fill=function(A,t,e,r){if("string"==typeof A){if("string"==typeof t?(r=t,t=0,e=this.length):"string"==typeof e&&(r=e,e=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!i.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===A.length){const t=A.charCodeAt(0);("utf8"===r&&t<128||"latin1"===r)&&(A=t)}}else"number"==typeof A?A&=255:"boolean"==typeof A&&(A=Number(A));if(t<0||this.length<t||this.length<e)throw new RangeError("Out of range index");if(e<=t)return this;let n;if(t>>>=0,e=void 0===e?this.length:e>>>0,A||(A=0),"number"==typeof A)for(n=t;n<e;++n)this[n]=A;else{const B=i.isBuffer(A)?A:i.from(A,r),g=B.length;if(0===g)throw new TypeError('The value "'+A+'" is invalid for argument "value"');for(n=0;n<e-t;++n)this[n+t]=B[n%g]}return this};const v={};function _(A,t,e){v[A]=class extends e{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${A}]`,this.stack,delete this.name}get code(){return A}set code(A){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:A,writable:!0})}toString(){return`${this.name} [${A}]: ${this.message}`}}}function S(A){let t="",e=A.length;const r="-"===A[0]?1:0;for(;e>=r+4;e-=3)t=`_${A.slice(e-3,e)}${t}`;return`${A.slice(0,e)}${t}`}function K(A,t,e,r,n,B){if(A>e||A<t){const r="bigint"==typeof t?"n":"";let n;throw n=B>3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(B+1)}${r}`:`>= -(2${r} ** ${8*(B+1)-1}${r}) and < 2 ** ${8*(B+1)-1}${r}`:`>= ${t}${r} and <= ${e}${r}`,new v.ERR_OUT_OF_RANGE("value",n,A)}!function(A,t,e){N(t,"offset"),void 0!==A[t]&&void 0!==A[t+e]||T(t,A.length-(e+1))}(r,n,B)}function N(A,t){if("number"!=typeof A)throw new v.ERR_INVALID_ARG_TYPE(t,"number",A)}function T(A,t,e){if(Math.floor(A)!==A)throw N(A,e),new v.ERR_OUT_OF_RANGE(e||"offset","an integer",A);if(t<0)throw new v.ERR_BUFFER_OUT_OF_BOUNDS;throw new v.ERR_OUT_OF_RANGE(e||"offset",`>= ${e?1:0} and <= ${t}`,A)}_("ERR_BUFFER_OUT_OF_BOUNDS",(function(A){return A?`${A} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),_("ERR_INVALID_ARG_TYPE",(function(A,t){return`The "${A}" argument must be of type number. Received type ${typeof t}`}),TypeError),_("ERR_OUT_OF_RANGE",(function(A,t,e){let r=`The value of "${A}" is out of range.`,n=e;return Number.isInteger(e)&&Math.abs(e)>2**32?n=S(String(e)):"bigint"==typeof e&&(n=String(e),(e>BigInt(2)**BigInt(32)||e<-(BigInt(2)**BigInt(32)))&&(n=S(n)),n+="n"),r+=` It must be ${t}. Received ${n}`,r}),RangeError);const j=/[^+/0-9A-Za-z-_]/g;function J(A,t){let e;t=t||1/0;const r=A.length;let n=null;const B=[];for(let g=0;g<r;++g){if(e=A.charCodeAt(g),e>55295&&e<57344){if(!n){if(e>56319){(t-=3)>-1&&B.push(239,191,189);continue}if(g+1===r){(t-=3)>-1&&B.push(239,191,189);continue}n=e;continue}if(e<56320){(t-=3)>-1&&B.push(239,191,189),n=e;continue}e=65536+(n-55296<<10|e-56320)}else n&&(t-=3)>-1&&B.push(239,191,189);if(n=null,e<128){if((t-=1)<0)break;B.push(e)}else if(e<2048){if((t-=2)<0)break;B.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;B.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;B.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return B}function q(A){return r.toByteArray(function(A){if((A=(A=A.split("=")[0]).trim().replace(j,"")).length<2)return"";for(;A.length%4!=0;)A+="=";return A}(A))}function P(A,t,e,r){let n;for(n=0;n<r&&!(n+e>=t.length||n>=A.length);++n)t[n+e]=A[n];return n}function W(A,t){return A instanceof t||null!=A&&null!=A.constructor&&null!=A.constructor.name&&A.constructor.name===t.name}function Z(A){return A!=A}const z=function(){const A="0123456789abcdef",t=new Array(256);for(let e=0;e<16;++e){const r=16*e;for(let n=0;n<16;++n)t[r+n]=A[e]+A[n]}return t}();function X(A){return"undefined"==typeof BigInt?$:A}function $(){throw new Error("BigInt not supported")}},251:(A,t)=>{t.read=function(A,t,e,r,n){var B,g,s=8*n-r-1,i=(1<<s)-1,o=i>>1,a=-7,c=e?n-1:0,w=e?-1:1,Q=A[t+c];for(c+=w,B=Q&(1<<-a)-1,Q>>=-a,a+=s;a>0;B=256*B+A[t+c],c+=w,a-=8);for(g=B&(1<<-a)-1,B>>=-a,a+=r;a>0;g=256*g+A[t+c],c+=w,a-=8);if(0===B)B=1-o;else{if(B===i)return g?NaN:1/0*(Q?-1:1);g+=Math.pow(2,r),B-=o}return(Q?-1:1)*g*Math.pow(2,B-r)},t.write=function(A,t,e,r,n,B){var g,s,i,o=8*B-n-1,a=(1<<o)-1,c=a>>1,w=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,Q=r?0:B-1,h=r?1:-1,u=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,g=a):(g=Math.floor(Math.log(t)/Math.LN2),t*(i=Math.pow(2,-g))<1&&(g--,i*=2),(t+=g+c>=1?w/i:w*Math.pow(2,1-c))*i>=2&&(g++,i/=2),g+c>=a?(s=0,g=a):g+c>=1?(s=(t*i-1)*Math.pow(2,n),g+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,n),g=0));n>=8;A[e+Q]=255&s,Q+=h,s/=256,n-=8);for(g=g<<n|s,o+=n;o>0;A[e+Q]=255&g,Q+=h,g/=256,o-=8);A[e+Q-h]|=128*u}}},B={};function g(A){var t=B[A];if(void 0!==t)return t.exports;var e=B[A]={exports:{}};return n[A](e,e.exports,g),e.exports}r=Object.getPrototypeOf?A=>Object.getPrototypeOf(A):A=>A.__proto__,g.t=function(A,e){if(1&e&&(A=this(A)),8&e)return A;if("object"==typeof A&&A){if(4&e&&A.__esModule)return A;if(16&e&&"function"==typeof A.then)return A}var n=Object.create(null);g.r(n);var B={};t=t||[null,r({}),r([]),r(r)];for(var s=2&e&&A;"object"==typeof s&&!~t.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach((t=>B[t]=()=>A[t]));return B.default=()=>A,g.d(n,B),n},g.d=(A,t)=>{for(var e in t)g.o(t,e)&&!g.o(A,e)&&Object.defineProperty(A,e,{enumerable:!0,get:t[e]})},g.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),g.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var s={};g.d(s,{l$:()=>HA,jX:()=>IA,lU:()=>O,g7:()=>x,oZ:()=>V,dC:()=>DA,qd:()=>hA});var i,o=g(287);!function(A){A[A.set_char=0]="set_char",A[A.set1=128]="set1",A[A.set2=129]="set2",A[A.set3=130]="set3",A[A.set4=131]="set4",A[A.set_rule=132]="set_rule",A[A.put_char=133]="put_char",A[A.put2=134]="put2",A[A.put3=135]="put3",A[A.put4=136]="put4",A[A.put_rule=137]="put_rule",A[A.nop=138]="nop",A[A.bop=139]="bop",A[A.eop=140]="eop",A[A.push=141]="push",A[A.pop=142]="pop",A[A.right=143]="right",A[A.right2=144]="right2",A[A.right3=145]="right3",A[A.right4=146]="right4",A[A.w=147]="w",A[A.w1=148]="w1",A[A.w2=149]="w2",A[A.w3=150]="w3",A[A.w4=151]="w4",A[A.x=152]="x",A[A.x1=153]="x1",A[A.x2=154]="x2",A[A.x3=155]="x3",A[A.x4=156]="x4",A[A.down=157]="down",A[A.down2=158]="down2",A[A.down3=159]="down3",A[A.down4=160]="down4",A[A.y=161]="y",A[A.y1=162]="y1",A[A.y2=163]="y2",A[A.y3=164]="y3",A[A.y4=165]="y4",A[A.z=166]="z",A[A.z1=167]="z1",A[A.z2=168]="z2",A[A.z3=169]="z3",A[A.z4=170]="z4",A[A.fnt=171]="fnt",A[A.fnt1=235]="fnt1",A[A.fnt2=236]="fnt2",A[A.fnt3=237]="fnt3",A[A.fnt4=238]="fnt4",A[A.xxx=239]="xxx",A[A.xxx2=240]="xxx2",A[A.xxx3=241]="xxx3",A[A.xxx4=242]="xxx4",A[A.fnt_def=243]="fnt_def",A[A.fnt_def2=244]="fnt_def2",A[A.fnt_def3=245]="fnt_def3",A[A.fnt_def4=246]="fnt_def4",A[A.pre=247]="pre",A[A.post=248]="post",A[A.post_post=249]="post_post",A[A.post_post_repeats=223]="post_post_repeats"}(i||(i={}));class a{length;constructor(A){this.length=A.length??0}execute(A){}toString(){return"DviCommand { }"}}class c extends a{opcode=i.put_char;c;constructor(A){super(A),this.c=A.c}execute(A){A.putText(o.hp.from([this.c]))}toString(){return`PutChar { c: '${String.fromCharCode(this.c)}' }`}}class w extends a{opcode=i.set_char;c;constructor(A){super(A),this.c=A.c}execute(A){const t=o.hp.from([this.c]),e=A.putText(t);A.moveRight(e)}toString(){return`SetChar { c: '${String.fromCharCode(this.c)}' }`}}class Q extends a{t;constructor(A){super(A),this.t=A.t}execute(A){const t=A.putText(this.t);A.moveRight(t)}toString(){return`SetText { t: "${this.t.toString()}" }`}}class h extends a{opcode=i.put_rule;a;b;constructor(A){super(A),this.a=A.a,this.b=A.b}execute(A){A.putRule(this)}toString(){return`PutRule { a: ${this.a.toString()}, b: ${this.b.toString()} }`}}class u extends a{opcode=i.set_rule;a;b;constructor(A){super(A),this.a=A.a,this.b=A.b}execute(A){A.putRule(this),A.moveRight(this.b)}toString(){return`SetRule { a: ${this.a.toString()}, b: ${this.b.toString()} }`}}class l extends a{opcode=i.nop;toString(){return"Nop { }"}}class C extends a{opcode=i.bop;c_0;c_1;c_2;c_3;c_4;c_5;c_6;c_7;c_8;c_9;p;constructor(A){super(A),this.c_0=A.c_0,this.c_1=A.c_1,this.c_2=A.c_2,this.c_3=A.c_3,this.c_4=A.c_4,this.c_5=A.c_5,this.c_6=A.c_6,this.c_7=A.c_7,this.c_8=A.c_8,this.c_9=A.c_9,this.p=A.p}execute(A){A.beginPage(this)}toString(){return"Bop { ... }"}}class f extends a{opcode=i.eop;execute(A){if(A.stack.length)throw new Error("Stack should be empty at the end of a page.");A.endPage()}toString(){return"Eop { }"}}class d extends a{opcode=i.push;execute(A){A.push()}toString(){return"Push { }"}}class E extends a{opcode=i.pop;execute(A){A.pop()}toString(){return"Pop { }"}}class p extends a{opcode=i.right;b;constructor(A){super(A),this.b=A.b}execute(A){A.moveRight(this.b)}toString(){return`MoveRight { b: ${this.b.toString()} }`}}class H extends a{opcode=i.w;b;constructor(A){super(A),this.b=A.b}execute(A){this.length>1&&(A.position.w=this.b),A.moveRight(A.position.w)}toString(){return this.length>1?`MoveW { b: ${this.b.toString()} }`:"MoveW0 { }"}}class D extends a{opcode=i.x;b;constructor(A){super(A),this.b=A.b}execute(A){this.length>1&&(A.position.x=this.b),A.moveRight(A.position.x)}toString(){return this.length>1?`MoveX { b: ${this.b.toString()} }`:"MoveX0 { }"}}class I extends a{opcode=i.down;a;constructor(A){super(A),this.a=A.a}execute(A){A.moveDown(this.a)}toString(){return`MoveDown { a: ${this.a.toString()} }`}}class F extends a{opcode=i.y;a;constructor(A){super(A),this.a=A.a}execute(A){this.length>1&&(A.position.y=this.a),A.moveDown(A.position.y)}toString(){return this.length>1?`MoveY { a: ${this.a.toString()} }`:"MoveY0 { }"}}class G extends a{opcode=i.z;a;constructor(A){super(A),this.a=A.a}execute(A){this.length>1&&(A.position.z=this.a),A.moveDown(A.position.z)}toString(){return this.length>1?`MoveZ { a: ${this.a.toString()} }`:"MoveZ0 { }"}}class U extends a{opcode=i.fnt;k;constructor(A){super(A),this.k=A.k}execute(A){if(!A.fonts[this.k])throw new Error(`Could not find font ${this.k.toString()}.`);A.setFont(A.fonts[this.k])}toString(){return`SetFont { k: ${this.k.toString()} }`}}class Y extends a{opcode=i.xxx;x;constructor(A){super(A),this.x=A.x}toString(){return`Special { x: '${this.x}' }`}}class M extends a{opcode=i.fnt_def;k;c;s;d;a;l;n;constructor(A){super(A),this.k=A.k,this.c=A.c,this.s=A.s,this.d=A.d,this.a=A.a,this.l=A.l,this.n=A.n}execute(A){A.fonts[this.k]=A.loadFont({name:this.n,checksum:this.c,scaleFactor:this.s,designSize:this.d})}toString(){return`FontDefinition { k: ${this.k.toString()}, n: '${this.n}', ... }`}}class m extends a{opcode=i.pre;i;num;den;mag;x;constructor(A){super(A),this.i=A.i,this.x=A.x,this.num=A.num,this.den=A.den,this.mag=A.mag}execute(A){if(this.num<=0)throw new Error("Invalid numerator (must be > 0)");if(this.den<=0)throw new Error("Invalid denominator (must be > 0)");if(2!=this.i)throw new Error("DVI format must be 2.");A.preamble(this.num,this.den,this.mag,this.x)}toString(){return`Preamble { i: ${this.i.toString()}, num: ${this.num.toString()}, den: ${this.den.toString()}, mag: ${this.mag.toString()}, x: '${this.x.toString()}' }`}}class y extends a{opcode=i.post;p;num;den;mag;l;u;s;t;constructor(A){super(A),this.p=A.p,this.num=A.num,this.den=A.den,this.mag=A.mag,this.l=A.l,this.u=A.u,this.s=A.s,this.t=A.t}execute(A){A.post(this)}toString(){return`Post { p: ${this.p.toString()}, num: ${this.num.toString()}, den: ${this.den.toString()}, mag: ${this.mag.toString()}, ... }`}}class b extends a{opcode=i.post_post;q;i;constructor(A){super(A),this.q=A.q,this.i=A.i}execute(A){A.postPost(this)}toString(){return`PostPost { q: ${this.q.toString()}, i: ${this.i.toString()} }`}}function k(A,t){if(A>=i.set_char&&A<i.set1)return new w({c:A,length:1});if(A>=i.fnt&&A<i.fnt1)return new U({k:A-171,length:1});if(A.valueOf()>=250&&A.valueOf()<=255)throw Error(`Undefined opcode ${A.valueOf().toString()}`);switch(A){case i.set1:case i.set2:case i.set3:case i.set4:if(t.length<A-i.set1+1)return;return new w({c:t.readUIntBE(0,A-i.set1+1),length:A-i.set1+1+1});case i.set_rule:if(t.length<8)return;return new u({a:t.readInt32BE(0),b:t.readInt32BE(4),length:9});case i.put_char:case i.put2:case i.put3:case i.put4:if(t.length<A-i.put_char+1)return;return new c({c:t.readIntBE(0,A-i.put_char+1),length:A-i.put_char+1+1});case i.put_rule:if(t.length<8)return;return new h({a:t.readInt32BE(0),b:t.readInt32BE(4),length:9});case i.nop:return new l({length:1});case i.bop:if(t.length<44)return;return new C({c_0:t.readUInt32BE(0),c_1:t.readUInt32BE(4),c_2:t.readUInt32BE(8),c_3:t.readUInt32BE(12),c_4:t.readUInt32BE(16),c_5:t.readUInt32BE(20),c_6:t.readUInt32BE(24),c_7:t.readUInt32BE(28),c_8:t.readUInt32BE(32),c_9:t.readUInt32BE(36),p:t.readUInt32BE(40),length:45});case i.eop:return new f({length:1});case i.push:return new d({length:1});case i.pop:return new E({length:1});case i.right:case i.right2:case i.right3:case i.right4:if(t.length<A-i.right+1)return;return new p({b:t.readIntBE(0,A-i.right+1),length:A-i.right+1+1});case i.w:return new H({b:0,length:1});case i.w1:case i.w2:case i.w3:case i.w4:if(t.length<A-i.w)return;return new H({b:t.readIntBE(0,A-i.w),length:A-i.w+1});case i.x:return new D({b:0,length:1});case i.x1:case i.x2:case i.x3:case i.x4:if(t.length<A-i.x)return;return new D({b:t.readIntBE(0,A-i.x),length:A-i.x+1});case i.down:case i.down2:case i.down3:case i.down4:if(t.length<A-i.down+1)return;return new I({a:t.readIntBE(0,A-i.down+1),length:A-i.down+1+1});case i.y:return new F({a:0,length:1});case i.y1:case i.y2:case i.y3:case i.y4:if(t.length<A-i.y)return;return new F({a:t.readIntBE(0,A-i.y),length:A-i.y+1});case i.z:return new G({a:0,length:1});case i.z1:case i.z2:case i.z3:case i.z4:if(t.length<A-i.z)return;return new G({a:t.readIntBE(0,A-i.z),length:A-i.z+1});case i.fnt1:case i.fnt2:case i.fnt3:case i.fnt4:if(t.length<A-i.fnt1+1)return;return new U({k:t.readIntBE(0,A-i.fnt1+1),length:A-i.fnt1+1+1});case i.xxx:case i.xxx2:case i.xxx3:case i.xxx4:{const e=A-i.xxx+1;if(t.length<e)return;const r=t.readUIntBE(0,e);if(t.length<e+r)return;return new Y({x:t.subarray(e,e+r).toString(),length:e+r+1})}case i.fnt_def:case i.fnt_def2:case i.fnt_def3:case i.fnt_def4:{const e=A-i.fnt_def+1;if(t.length<e)return;const r=t.readIntBE(0,e);if(t.length<e+14)return;const n=t.readUInt32BE(e+0),B=t.readUInt32BE(e+4),g=t.readUInt32BE(e+8),s=t.readUInt8(e+12),o=t.readUInt8(e+13);if(t.length<e+14+s+o)return;const a=t.subarray(e+14,e+14+s+o).toString();return new M({k:r,c:n,s:B,d:g,a:s,l:o,n:a,length:e+14+s+o+1})}case i.pre:{if(t.length<14)return;const A=t.readUInt8(0),e=t.readUInt32BE(1),r=t.readUInt32BE(5),n=t.readUInt32BE(9),B=t.readUInt8(13);if(t.length<14+B)return;return new m({i:A,num:e,den:r,mag:n,x:t.subarray(14,14+B).toString(),length:14+B+1})}case i.post:if(t.length<28)return;return new y({p:t.readUInt32BE(0),num:t.readUInt32BE(4),den:t.readUInt32BE(8),mag:t.readUInt32BE(12),l:t.readUInt32BE(16),u:t.readUInt32BE(20),s:t.readUInt16BE(24),t:t.readUInt16BE(26),length:29});case i.post_post:if(t.length<5)return;return new b({q:t.readUInt32BE(0),i:t.readUInt8(4),length:6})}}async function*O(A){let t=o.hp.alloc(0),e=!1;for await(const r of A){t=o.hp.concat([t,r]);let A=0;for(;A<t.length;){const r=t.readUInt8(A);if(e){if(223==r.valueOf()){++A;continue}throw new Error("Only 223 bytes are permitted after the post-postamble.")}const n=k(r,t.subarray(A+1));if(!n)break;yield n,A+=n.length,n.opcode==i.post_post&&(e=!0)}t=t.subarray(A)}}async function x(A,t){for await(const e of A)e.execute(t)}async function*R(A,t,e){let r=[];for await(const n of A)t(n)?r.push(n):(r.length>0&&(yield*e(r),r=[]),yield n);r.length>0&&(yield*e(r))}function V(A){return R(A,(A=>A instanceof w),(function*(A){yield new Q({t:o.hp.from(A.map((A=>A.c)))})}))}class L extends a{color;constructor(A){super({}),this.color=A}execute(A){A.pushColor(this.color)}toString(){return`PushColor { color: '${this.color}' }`}}class v extends a{constructor(){super({})}execute(A){A.popColor()}toString(){return"PopColor { }"}}function _(A){if("gray 0"==A)return"black";if("gray 1"==A)return"white";if(A.startsWith("rgb "))return"#"+A.split(" ").slice(1).map((function(A){return t=255*parseFloat(A),("00"+Math.round(t).toString(16)).slice(-2);var t})).join("");if(A.startsWith("gray ")){const t=A.split(" ")[1];return _("rgb "+t+" "+t+" "+t)}return"black"}async function*S(A){for await(const t of A)t instanceof Y&&t.x.startsWith("color ")?(t.x.startsWith("color push ")&&(yield new L(_(t.x.replace(/^color push /,"")))),t.x.startsWith("color pop")&&(yield new v)):yield t}class K extends a{svg;constructor(A){super({}),this.svg=A}execute(A){A.putSVG(this.svg)}}function N(A){return R(async function*(A){for await(const t of A)t instanceof Y&&t.x.startsWith("dvisvgm:raw ")?yield new K(t.x.replace(/^dvisvgm:raw /,"")):yield t}(A),(A=>A instanceof K),(function*(A){yield new K(A.map((A=>A.svg)).join("").replace(/{\?nl}/g,""))}))}class T{values;constructor(A){this.values=A?A.values.slice(0):[1,0,0,1,0,0]}isIdentity(){return Math.abs(this.values[0]-1)<Number.EPSILON&&Math.abs(this.values[1])<Number.EPSILON&&Math.abs(this.values[2])<Number.EPSILON&&Math.abs(this.values[3]-1)<Number.EPSILON&&Math.abs(this.values[4])<Number.EPSILON&&Math.abs(this.values[5])<Number.EPSILON}multiplyRight(A){const t=new T;return t.values[0]=this.values[0]*A.values[0]+this.values[2]*A.values[1],t.values[1]=this.values[1]*A.values[0]+this.values[3]*A.values[1],t.values[2]=this.values[0]*A.values[2]+this.values[2]*A.values[3],t.values[3]=this.values[1]*A.values[2]+this.values[3]*A.values[3],t.values[4]=this.values[0]*A.values[4]+this.values[2]*A.values[5]+this.values[4],t.values[5]=this.values[1]*A.values[4]+this.values[3]*A.values[5]+this.values[5],this.values=A.values,this}scale(A,t){return this.values[0]*=A,this.values[1]*=A,this.values[2]*=t,this.values[3]*=t,this}translate(A,t){return this.values[4]=this.values[0]*A+this.values[2]*t+this.values[4],this.values[5]=this.values[1]*A+this.values[3]*t+this.values[5],this}rotate(A){const t=A*Math.PI/180,e=Math.cos(t),r=Math.sin(t);return this.values[0]=this.values[0]*e+this.values[2]*r,this.values[1]=this.values[1]*e+this.values[3]*r,this.values[2]=-this.values[0]*r+this.values[2]*e,this.values[3]=-this.values[1]*r+this.values[3]*e,this}toSVGTransform(){return this.isIdentity()?"":` transform="matrix(${this.values.join(" ")})"`}toString(){return`[${this.values.join(",")}]`}}class j{machine;stack;psInput;static stateQueue=[];constructor(A,t){this.machine=A,this.psInput=t,this.stack=[]}interpret(A){for(const A of function*(A){let t="",e=0,r=0;const n=function*(){for(const t of A)yield t}();for(const A of n){let B;switch(A){case" ":case"\t":case"\n":if(r)t.endsWith(" ")||(t+=" ");else if(e)switch(A){case" ":t+=" ";break;case"\n":t+="\\n";break;case"\t":t+="\\t"}else t&&(yield t,t="");continue;case"[":case"]":r||e?t+=A:(t&&(yield t),t="",yield A);continue;case"{":e||(0==r&&t&&(yield t),++r),t+=A;continue;case"}":if(t+=A,e)continue;--r,r||(yield t,t="");continue;case"(":++e,t&&!r&&1==e&&(yield t),e>1&&(t+="\\"),t+=A;continue;case")":--e,e&&(t+="\\"),t+=A,r||e||(yield t,t="");continue;case"\\":if(t+=A,B=n.next(),B.done)throw Error("Invalid escape character.");t+=B.value;continue;case"/":r||e||!t||(yield t),t+=A;continue;case"%":do{B=n.next()}while(!B.done&&"\n"!=B.value);continue;default:t+=A}}t&&(yield t)}(this.psInput))if(/^[+-]?\d+(\.\d*)?$/.test(A))this.stack.push(new q(A));else if(A.startsWith("("))this.stack.push(new P(A));else if("["!=A){if("]"==A){const A=new W,t=this.stack.pop();for(;t&&(!t.name||"mark"!=t.name);)A.push(t);this.stack.push(A)}if(A.startsWith("/")&&this.stack.push(new z(A)),A.startsWith("{")&&this.stack.push(new X(A)),!(A in j.operators))throw new Error("Invalid or unimplemented postscript expression");j.operators[A](this)}else j.operators.mark(this)}static operators={pop:A=>{A.stack.pop()},exch:A=>{const t=A.stack.pop(),e=A.stack.pop();t&&A.stack.push(t),e&&A.stack.push(e)},dup:A=>{A.stack.push(A.stack[A.stack.length-1])},mark:A=>{A.stack.push(new Z)},neg:A=>{const t=A.stack.pop();if(!(t instanceof q))throw new Error("Attempted to negate a stack object that is not numeric.");A.stack.push(new q(-t.value))},add:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(t instanceof q&&e instanceof q))throw new Error("Attempted to add stack objects that are not both numeric.");A.stack.push(new q(t.value+e.value))},sub:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(t instanceof q&&e instanceof q))throw new Error("Attempted to subtract stack objects that are not both numeric.");A.stack.push(new q(e.value-t.value))},mul:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(t instanceof q&&e instanceof q))throw new Error("Attempted to multiply stack objects that are not both numeric.");A.stack.push(new q(t.value*e.value))},div:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(t instanceof q&&e instanceof q))throw new Error("Attempted to divide stack objects that are not both numeric.");A.stack.push(new q(e.value/t.value))},gsave:A=>{j.stateQueue.push(new T(A.machine.matrix))},grestore:A=>{const t=j.stateQueue.pop();if(!t)throw new Error("Attempted to restore graphics state with empty stack.");A.machine.matrix=t},currentpoint:A=>{A.stack.push(...A.machine.getCurrentPosition().map((A=>new q(A))))},moveto:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(e instanceof q&&t instanceof q))throw new Error("Attempted to set position from stack objects that are not both numeric.");A.machine.setCurrentPosition(e.value,t.value)},scale:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(e instanceof q&&t instanceof q))throw new Error("Attempted to set scale from stack objects that are not both numeric.");A.machine.matrix.scale(e.value,t.value)},translate:A=>{const t=A.stack.pop(),e=A.stack.pop();if(!(e instanceof q&&t instanceof q))throw new Error("Attempted to set translation from stack objects that are not both numeric.");A.machine.matrix.translate(e.value,t.value)},rotate:A=>{const t=A.stack.pop();if(!(t instanceof q))throw new Error("Attempted to set rotation with a stack object that is not numeric.");A.machine.matrix.rotate(t.value)}}}class J{name;value;constructor(A){this.name=A}}class q extends J{constructor(A){super("number"),"number"==typeof A?this.value=A:"string"==typeof A&&(this.value=parseFloat(A))}}class P extends J{constructor(A){super("string"),this.value=A.replace(/^\(|\)$/g,"")}}class W extends J{constructor(A){super("array"),this.value=A??[]}push(A){this.value.push(A)}pop(){const A=this.value.pop();if(!A)throw new Error("Attempted to pop object from empty stack.");return A}}class Z extends J{constructor(){super("mark"),this.value="-mark-"}}class z extends J{constructor(A){super("identifier"),this.value=A.replace(/^\//,"")}}class X extends J{constructor(A){super("procedure"),this.value=A}}class $ extends a{ps;constructor(A){super({}),this.ps=A}execute(A){new j(A,this.ps).interpret(A)}toString(){return`PS: ${this.ps}`}}class AA extends a{ps;filename="";constructor(A){super({}),this.ps=A}execute(A){const t=tA(this.ps,"psfile","").replace(/\.eps$/,"");if(!t)return;const e=parseFloat(tA(this.ps,"llx","0")),r=parseFloat(tA(this.ps,"lly","0")),n=parseFloat(tA(this.ps,"urx","0")),B=parseFloat(tA(this.ps,"ury","0")),g=parseFloat(tA(this.ps,"rwi","-1"))/10,s=parseFloat(tA(this.ps,"rhi","-1"))/10;if(0==g||0==s||n==e||B==r)return;const i=parseFloat(tA(this.ps,"hoffset","0")),o=parseFloat(tA(this.ps,"voffset","0")),a=parseFloat(tA(this.ps,"hscale","100")),c=parseFloat(tA(this.ps,"vscale","100")),w=parseFloat(tA(this.ps,"angle","0"));let Q=g/Math.abs(e-n),h=s/Math.abs(r-B);if(0==Q||0==h)return;Q<0&&(Q=h),h<0&&(h=Q),Q<0&&(Q=h=1);const[u,l]=A.getCurrentPosition(),C=new T(A.matrix);C.translate(u+i,l-o).scale(a/100,c/100).rotate(-w).scale(Q,h),C.translate(-e,-B),A.putSVG(`<image x="${e.toString()}" y="${r.toString()}" width="${n.toString()}" height="${B.toString()}" href="${t}"${C.toSVGTransform()}></image>`)}toString(){return`PSFile: ${this.ps}`}}function tA(A,t,e){const r=RegExp(`${t}="?(.*?)"?( |$)`,"i").exec(A);return r&&r.length>1?r[1]:e}class eA extends a{width;height;constructor(A,t){super({}),this.width=A,this.height=t}execute(A){A.setPapersize(this.width,this.height)}toString(){return`Papersize { width: ${this.width.toString()}, height: ${this.height.toString()} }`}}async function*rA(A){for await(const t of A)if(t instanceof Y&&t.x.startsWith("papersize=")){const A=t.x.replace(/^papersize=/,"").split(",");if(2!=A.length)throw new Error("Papersize special requires two arguments.");if(!A[0].endsWith("pt"))throw new Error("Papersize special width must be in points.");if(!A[1].endsWith("pt"))throw new Error("Papersize special height must be in points.");yield new eA(parseFloat(A[0].replace(/pt$/,"")),parseFloat(A[1].replace(/pt$/,"")))}else yield t}class nA{tfm;char_code;width;height;depth;italic_correction;lig_kern_program_index;next_larger_char;constructor(A,t,e,r,n,B,g,s){this.tfm=A,A.set_char(t,this),this.char_code=t,this.width=e,this.height=r,this.depth=n,this.italic_correction=B,this.lig_kern_program_index=g,this.next_larger_char=s}scaled_width(A){return this.width*A}scaled_height(A){return this.height*A}scaled_depth(A){return Number(this.depth*A)}scaled_dimensions(A){return[this.width,this.height,this.depth].map((t=>t*A))}next_larger_tfm_char(){return null!==this.next_larger_char?this.tfm.get_char(this.next_larger_char):null}get_lig_kern_program(){return null!==this.lig_kern_program_index?this.tfm.get_lig_kern_program(this.lig_kern_program_index):null}}class BA extends nA{top=0;mid=0;bot=0;rep;constructor(A,t,e,r,n,B,g,s,i){super(A,t,e,r,n,B,s,i),this.rep=g}}class gA{tfm;stop;index;next_char;constructor(A,t,e,r){this.tfm=A,this.stop=e,this.index=t,this.next_char=r,this.tfm.add_lig_kern(this)}}class sA extends gA{kern;constructor(A,t,e,r,n){super(A,t,e,r),this.kern=n}}class iA extends gA{ligature_char_code;number_of_chars_to_pass_over;current_char_is_deleted;next_char_is_deleted;constructor(A,t,e,r,n,B,g,s){super(A,t,e,r),this.ligature_char_code=n,this.number_of_chars_to_pass_over=B,this.current_char_is_deleted=g,this.next_char_is_deleted=s}}class oA{smallest_character_code=0;largest_character_code;checksum;designSize;character_coding_scheme;family;slant=0;spacing=0;space_stretch=0;space_shrink=0;x_height=0;quad=0;extra_space=0;num1=0;num2=0;num3=0;denom1=0;denom2=0;sup1=0;sup2=0;sup3=0;sub1=0;sub2=0;supdrop=0;subdrop=0;delim1=0;delim2=0;axis_height=0;default_rule_thickness=0;big_op_spacing=[];_lig_kerns=[];characters=new Map;constructor(A,t,e,r,n,B){this.smallest_character_code=A,this.largest_character_code=t,this.checksum=e,this.designSize=r,this.character_coding_scheme=n,this.family=B}get_char(A){return this.characters.get(A)}set_char(A,t){this.characters.set(A,t)}set_font_parameters(A){this.slant=A[0],this.spacing=A[1],this.space_stretch=A[2],this.space_shrink=A[3],this.x_height=A[4],this.quad=A[5],this.extra_space=A[6]}set_math_symbols_parameters(A){this.num1=A[0],this.num2=A[1],this.num3=A[2],this.denom1=A[3],this.denom2=A[4],this.sup1=A[5],this.sup2=A[6],this.sup3=A[7],this.sub1=A[8],this.sub2=A[9],this.supdrop=A[10],this.subdrop=A[11],this.delim1=A[12],this.delim2=A[13],this.axis_height=A[14]}set_math_extension_parameters(A){this.default_rule_thickness=A[0],this.big_op_spacing=A.slice(1)}add_lig_kern(A){this._lig_kerns.push(A)}get_lig_kern_program(A){return this._lig_kerns[A]}}const aA=JSON.parse('{"cmss10":"AUkAEgAAAH8ANAAQAAsABQBOAAgAAAAHbSO9UgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADqF9AAAC7QAAAr0AAAHdAAACDQAAAm0AAAJ9AAACvQAAAn0AAAK9AAACfQAAAa0BEKFtAAABbQAAAt0AAALdAAAAEwAAACOQAAFNAAABTQAAAUkAAAFNAAABSAAAAh0AAADgcAABLQAAAnMAAAKzAAABRVAAAv0AAAMtAAACviAAABMAEAB9ABFxTQAAAu2AAAFPMAAC7zAAAq0AAAA9ABEgz6AAAM+gAAFPAAACt0AAADFgAACDABFQMQAAAU+gAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAAAMwAAADNgAAB0kAACshAAAQSQAAENABGCDQAAAh0AFCIdAAAB7QAAAo0AE0G9AAABnQASMg0AAAJtAAAATQAU0Q0AAAJdABKRfQAUgw0AAAJtAAACnQATQe0AEdKdYAAB/QAAAY0AAAItABLSTQAAAh0AUjMdAFIyHQASkh0AkuHNAAAAX6AAAU0AAABfoAABTQAAADwAAAA9ABEREwAT8V0AE5DjAAABXQAAAOMAAABtARAhQ5BUwV0AAAAcAAAALJAAAT0AEZAdAAACwwAAAVMAAAFDABORU5ATkVOQAACTAEAAswAAAKYAFAFTABQQ8wBAAjMAUZDzAAAA85BR4NMAAAFDANFjMwDAAU0AAAFLAAABTAAAAAAAAAAAPSfgAEREYABHHIAARxygAEn0sABOOQAAUccwAFVVYABXd6AAXHHQAGIiMABjjlAAb0oAAHHHMAB2C4AAeOOwAHsF0AB7BeAAfSgAAIAAIACERGAAiT6wAIqq0ACOOQAAkcdQAJVVgACY47AAnHHgAJxyAACjjmAApVWAAKqq0ACqquAArjkAAK7vIACwAFAAscdgALVVoAC447AAuOPQALxx4ADCIlAAxxygAMtg4ADQWzAA1VWAANxyAADgAFAA8cdgAPjj0AEAADAAAAAAABVVUABeuFAAcccgAIAAAACKqrAAkklQAJVVYACb4AAAoccgAKfSgACtNOAArergALHHIAC+OOAAwAAAAAAAD//euFAADHHQAA444AAVVWAAGOOgACAAAAArjjAAMccAADHHIABAAAAAAAAAAAOOMAAGZmAABxyAABHHIAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//C2C//vd2wABHHIAAccd//+OOP/+qqoAAHHI//444wAAAAAABVVWAAKqqwABxx0ABxxyABAAAwABxx0=","cmss12":"AUsAEgAAAH8ANgAQAAsABQBOAAgAAAAHgs5SNgDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADmF9AAADDQAAAt0AAAHNAAACPQAAAo0AAAKtAAAC3QAAAq0AAALdAAACrQAAAa0BEKFtAAABbQAAAv0AAAL9AAAAEwAAACOQAAFNAAABTQAAAUkAAAFNAAABSAAAAh0AAADgcAABLQAAAqMAAALTAAABRVAAAx0AAANNAAAC3iAAABMAEAB9ABFxTQAAAw2AAAFPMAADDzAAAs0AAABNABEgz6AAAM+gAAFPAAAC10AAAEFgAACDABFQQQAAAU+gAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAAAQwAAAENgAAB0kAAC0hAAARSQAAEdABGCPQAAAh0AFCItAAAB/QAAAp0AE0G9AAABnQASMj0AAAKNAAAAPQAU0Q0AAAJ9ABKRfQAUgy0AAAKNAAACvQATQe0AEdK9YAACDQAAAY0AAAJtABLSXQAAAh0AUjM9AFIyHQASkh0AkuHdAAAAX6AAAU0AAABfoAABTQAAAEwAAABNABERIwAT8V0AE5DjAAABXQAAAOMAAABtARAhQ5BUwV0AAAAcAAAALJAAAT0AEZAdAAAC4wAAAVMAAAFDABORU5ATkVOQAACTAEAAswAAAKYAFAFTABQQ8wBAAkMAUZDzAAAA85BR4NMAAAFDANFjUwDAAU0AAAFLAAABTAAAAAAAAAAAOvZQAEHs0ABEJbAARaEAAEhxsABMl4AAT7QAAFOOAABVLzAAWoSAAGAWgABhewAAbL1QAG9oAAByqlAAdaDQAHZegAB3/7AAeaDQAH1VAACAl1AAheywAIdn0ACLQgAAjl5QAJI4gACVVNAAl7OwAJkvAACfZ9AAoCWAAKFU0ACloLAApl5QAKccAACqXlAAqqowAKr2AACslzAAr7OwALRLUAC1CQAAuOMAAL2gsADC9gAAxjhQAMuNsADQ4wAA1xvQANl6sADrQbAA8vXQAPqqAAAAAAAAFL2wAF0nwABxxxAAgAAAAIqqsACSSVAAk44AAJudUAChxxAAp7QwAKzpAACtgLAAsccQAL440ADAAAAAAAAP/90nwAAMccAADjjwABOOAAAY45AAIAAAACuOMAAxxwAAMccQAEAAAAAAAAAAA3tAAAZEQAAG9oAAEWhABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AZYAEAGGABABvgASAY4AEAEGABQBvgAQAZYAEAGGABAAugAWALIAFAG+ABABlgAQAdYAEAHKABABhgAQAQYAFAE+ABABDgAQAR4AEgFGABAB5gAUAZYAFAG+ABQBygAUAYYAFAEGABYB1gAUAWIAEAFeABABBgAQAVoAEgFmABABlgAYAb4AGAHiABABkgAYAY4AGAHGABgBygAQAeYAEgHeABAB0gAQAQ4AEAE+ABABHgAQAVYAEAFGABABUgAUAWYAFAFaAB4BXgAeAaoAGgEmABv/8UJv//AcgAAEWhAABvaD//5CY//6xyAAAb2j//kJgAAAAAAAFOOAAApxwAAG9oAAHHHEAD6qgAAG9oA==","cmss17":"AUoAEgAAAH8ANgAQAAoABQBOAAgAAAAHBdbGHwEUeuAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADbF9AAADDQAAAt0AAAHNAAACPQAAAo0AAAKtAAAC3QAAAq0AAALdAAACrQAAAa0BEKFtAAABbQAAAv0AAAL9AAAAEwAAACOAAAFNAAABTQAAAUkAAAFNAAABSAAAAh0AAADgcAABLQAAAqMAAALTAAABRVAAAx0AAANNAAAC3iAAABMAEAB9ABFxTQAAAw2AAAFPMAADDzAAAs0AAABNABEgz5AAAM+QAAFPAAAC10AAAEFgAACDABFQQQAAAU+QAAFLAAABSwAAAUsAAAFLAAABSwAAAUsAAAFLAAABSwAAAUsAAAFLAAAAQwAAAENgAAB0gAAC0hAAARSAAAEdABGCPQAAAh0AFCItAAAB/QAAAp0AE0G9AAABnQASMj0AAAKNAAAAPQAU0Q0AAAJ9ABKRfQAUgy0AAAKNAAACvQATQe0AEdK9YAACDQAAAY0AAAJNABLSbQAAAh0AUjM9AFIyHQASkh0AkuHdAAAAX5AAAU0AAABfkAABTQAAAEwAAABNABERIwAT8V0AE5DjAAABXQAAAOMAAABtARAhQ4BUwV0AAAAcAAAALIAAAT0AEZAdAAAC4wAAAVMAAAFDABORU4ATkVOAAACTAEAAswAAAKYAFAFTABQQ8wBAAlMAUZDzAAAA84BR4NMAAAFDANFjUwDAAU0AAAFKAAABTAAAAAAAAAAAOP7gAD+uwABCQSAAQt8wAEXbEABJjyAATL+gAFA/EABR/tAAVu8AAFxIkABdnuAAaIagAGr+wABufkAAcV+gAHGusABzbnAAdS4gAHhekAB73hAAgM5AAII+4ACFvnAAiO7QAIxuYACPnsAAkoAwAJMeQACZfyAAmc4wAJs+0ACf4AAAoC8QAKB+IACj/ZAAo/2gAKTQQACmj/AAqcBwAK2O4ACt3fAAsV1gALZNoAC7PdAAvr1QAMOtcADInaAAzv6AANHf8ADiv0AA6b4wAPC9MAAAAAAAFJOAAFsHMABuNLAAf/vAAIcaYACNsaAAkDzwAJmc4ACg4oAAp7mgAKfmsACoIwAAsccgAL46AAC/xQAAAAAP/9sLcAAMcuAADf3gABBBMAAY5bAAIBlQACuR8AAxy1AAP8kwAAAAAAADV/AABgTAAAav8AAQt9AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//xwEv/8JgAAAQt9AAGr+///lQH//r8EAABq///+VAUAAAAAAAUD8QACgfgAAav7AAbjSwAPC9MAAav7","cmss8":"AUQAEgAAAH8ALwAQAAsABQBOAAgAAAAHxnM2kQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADuFdAAACnQAAAm0AAAGtAAAB3QAAAi0AAAI9AAACbQAAAj0AAAJtAAACPQAAAY0BEKFNAAABTQAAAo0AAAKNAAAAEwAAACOQAAEtAAABLQAAASkAAAEtAAABKAAAAd0AAADQcAABDQAAAjMAAAJjAAABJUAAAq0AAALdAAACbiAAABMAEABtABFxLQAAAp2AAAEvMAACnzAAAl0AAAA9ABEgv6AAAL+gAAEvAAACZ1AAADFgAABzABFQMQAAAS+gAAEqAAABKgAAASoAAAEqAAABKgAAASoAAAEqAAABKgAAASoAAAEqAAAAMwAAADNgAABkkAACYhAAAPSQAAD9ABGB3QAAAd0AFCHdAAABvQAAAj0AE0GdAAABfQASMd0AAAItAAAAPQAU0P0AAAIdABKRXQAUgr0AAAItAAACTQATQb0AEdJNYAABzQAAAW0AAAH9ABLSDQAAAd0AUjLNAFIx3QASkd0AkuGtAAAAT6AAAS0AAABPoAABLQAAADwAAAA9ABERAwAT8T0AE5DTAAABPQAAANMAAABdARAhI5BUwT0AAAAcAAAALJAAAR0AEZAdAAACcwAAATMAAAEjABORM5ATkTOQAACDAEAAowAAAJYAFAEzABQQ4wBAAeMAUZDjAAAA45BR4MMAAAEjANFi4wDAAS0AAAErAAABLAAAAAAAAAAAQOPAAEhyAABLjoAATxzAAFMcwABWOSAAWqsAAFzj4ABiOUAAaESgAGnHgAB2OUAAeOQAAH1VwACAckAAgqsgAITkAACIAIAAjHJAAJHHoACUAKAAlx0AAJuO4ACeq0AAox0gAKY5gACtx8AAsACgALVWAAC5x8AAucfgALqrYAC85EAAwACgAMRygADI5GAAzjmgANOPAADYAMAA3VYgAOKrgADqOcAA7VYgAQDkgAEIcsABEAEAAAAAAAAXHIAAYaLAAHHHIACAAAAAiqrAAJJJYACaqwAAnVVAAKHHIACoAAAArhiAAK9t4ACxxyAAvjjgAMAAAAAAAA//4aLAAAxxwAAOOOAAGOOgABqrAAAg44AAK45AADHHAAAxxyAAQAAAAAAAAAADxyAABszgAAeOQAAS46AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//vxxP/7nG4AAS46AAHjkP//hxz//pVUAAB45P/+HHAAAAAAAAWqsAAC1VgAAeOQAAcccgARABAAAeOQ","cmss9":"AUoAEgAAAH8ANgAQAAoABQBOAAgAAAAH0m/HdwCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADsGNAAADDQAAAt0AAAHtAAACLQAAAo0AAAKdAAAC3QAAAp0AAALdAAACnQAAAb0BEKF9AAABfQAAAv0AAAL9AAAAEwAAACOAAAFdAAABXQAAAVkAAAFdAAABWAAAAk0AAADgcAABPQAAApMAAALTAAABVVAAAx0AAANNAAAC3iAAABMAEAB9ABFxXQAAAw2AAAFfMAADDzAAAs0AAAA9ABEgz5AAAM+QAAFfAAAC10AAADFgAACDABFQMQAAAV+QAAFaAAABWgAAAVoAAAFaAAABWgAAAVoAAAFaAAABWgAAAVoAAAFaAAAAMwAAADNgAAB0gAAC0hAAARSAAAEdABGCLQAAAk0AFCI9AAAB/QAAAq0AE0HNAAABrQASMi0AAAKNAAAATQAU0S0AAAJ9ABKRjQAUgy0AAAKNAAACvQATQg0AEdK9YAACHQAAAZ0AAAJdABLSbQAAAk0AUjM9AFIyTQASkk0AkuHdAAAAX5AAAV0AAABfkAABXQAAADwAAAA9ABERMwAT8W0AE5DjAAABbQAAAPMAAABtARAhU4BUwW0AAAAcAAAALIAAAU0AEZAdAAAC4wAAAWMAAAFTABORY4ATkWOAAACTAEAAswAAAKYAFAFjABQRAwBAAlMAUZEDAAABA4BR4NMAAAFTANFjUwDAAV0AAAFbAAABXAAAAAAAAAAAPtBwAEYfcABJFgAASXsgAExxsABQZQAAU1uQAFe0AABZ4EAAXwMAAGTb4ABmUgAAcl6QAHTwAAB08CAAeUhwAHw/AAB8cZAAfmtAAICXcACDjgAAh+ZwAI0JQACPaAAAkiwAAJa3AACZewAAngYAAKDKAAChLyAAqBkAAKhLkACqd8AAr2gAAK+akACvzSAAs8BwALTv4AC3HCAAuhKwAL4GAAC+OJAAwl5wAMeBQADMpAAA0PxwANYfQADbQgAA4sOQAOXssAD44yAA//+QAQccAAAAAAAAFh+QAGAkcABxxyAAgAAAAIqqsACSSVAAl7QAAJzrIAChxyAAp4GQAK2aAACuyXAAsccgAL444ADAAAAAAAAP/+AkcAAMccAADjjgABe0AAAY45AAIGUgACuOQAAxxyAAQAAAAAAAAAADp5AABpPgAAdPAAASRZAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//wS+f/7vaQAASRZAAHTwP//ixD//qEwAAB08P/+LEAAAAAAAAV7QAACvaAAAdPAAAcccgAQccAAAdPA","cmssbx10":"AT4AEgAAAH8ALAANAAsABQBOAAgAAAAH8WtBSACgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU1NCWAAAAAAAAAAAAAAAAAAAAADqF6AAACWgAAAioAAAG6AAAB2gAAAgoAAAIKAAACKgAAAgoAAAIqAAACCgAAAaoBEKGKAAABigAAAkoAAAJKAAAAEwAAACOQAAE6AAABOgAAATgAAAE6AAABOQAAAdoAAADQcAABagAAAgMAAAIjAAABNUAAAmoAAAKqAAACKyAAABMAEAB6ABFxSgAAAlqAAAE8MAACjDAAAhoAAAA6ABEgvKAAALygAAE8AAACJ2AAADFQAABzABFQMQAAATygAAE6AAABOgAAAToAAAE6AAABOgAAAToAAAE6AAABOgAAAToAAAE6AAAAMwAAADNQAAB0kAACIhAAAQSQAAEKABGB2gAAAdoAFCHaAAABygAAAgoAE0GqAAABmgASMdoAAAIKAAAASgAU0QoAAAH6ABKRegAUgnoAAAIKAAACCgATQcoAEdIKUAABygAAAZoAAAHaABLR+gAAAdoAUjKaAFIx2gASkdoAkuG6AAAAbKAAAUoAAABsoAABOgAAADoAAAA6ABEREwAT8VoAE5DTAAABWgAAAPMAAABaARAhM5BUwVoAAAAaAAAAKpAAASoAEZAaAAACMwAAAVMAAAEzABORU5ATkVOQAACDAEAAowAAAJYAFAFTABQQ4wBAAeMAUZDjAAAA45BR4MMAAAEzANFiswDAAToAAAE6AAABOgAAAAAAAAAAQWwwAEk+sABOOQAAVJ9gAFYLgABX0qAAXd4AAF9KIABnd6AAa/KAAG2DAAB59NAAfSgAAIAAMACC2GAAhPqAAIZmoACH0rAAjM0AAI7vIACPpTAAkLYwAJSfgACWC6AAnHIAAKREgACsFwAAs+mAALu8AAC+lDAAw46AAMthAADUn6AA2wYAAN3eMADkRKAA6qsAAPJ9gAD6UAABB3RQAQn1AAERx4ABGZoAAAAAAAAhbCAAaAAAAHVVUACAAAAAjjjgAJbboACd3gAAoqqwAKNFUACxxyAAvjjgAMAAAAAAAA//6AAAAAxx0AAOOOAAGOOgABsFsAAd3gAAK44wADHHAAAxxyAAQAAAAAAAAAAD6VAABwowAAfSgAATjlAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//vpPf/7T6MAATjlAAH0oP//gtj//oiIAAB9KP/+C2AAAAAAAAXd4AAC7vAAAfSgAAdVVQARmaAAAfSg","cmssdc10":"AUwAEgAAAH8AOgANAAsABQBOAAgAAAAHcNrjaQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU1NEQwAAAAAAAAAAAAAAAAAAAADqGqAAADOgAAAwoAAAIKAAACSgAAAroAAALKAAADCgAAAsoAAAMKAAACygAAAdoBEKGaAAABmgAAAyoAAAMqAAAAEwAAACOQAAFqAAABagAAAWkAAAFqAAABaAAAAmoAAADgcAABWgAAAsMAAAMDAAABZVAAA0oAAAOKAAADCyAAABMAEAB6ABFxegAAAzqAAAFsQAADbEAAAvoAAAA6ABEgzKAAAMygAAFsAAADBjAAADFgAACDABFQMQAAAWygAAFqAAABagAAAWoAAAFqAAABagAAAWoAAAFqAAABagAAAWoAAAFqAAAAMwAAADNgAAB0kAADAhAAARSQAAEaABGCSgAAAmoAFCJaAAACGgAAAtoAE0HqAAABygASMkoAAAK6AAAASgAU0SoAAAKqABKRqgAUg1oAAAK6AAAC6gATQioAEdLqYAACOgAAAboAAAKKABLSmgAAAmoAUjN6AFIyagASkmoAkuH6AAAAbKAAAXoAAABsoAABagAAADoAAAA6ABERMwAT8YoAE5DjAAABigAAAQMAAABaARAhg5AUwYoAAAAaAAAAKpAAAUoAEZAaAAADEwAAAYMAAAFjABORg5ATkYOQAACTAEAAswAAAKcAFAGDABQQ8wBAAnMAUZDzAAAA85BR4NMAAAFjANFjkwDAAWoAAAFqAAABagAAAAAAAAAAOC0wAD7uoABDjgAASIhgAEpPYABLBYAATjiwAFEQ0ABSIdAAWIhQAF050ABek6AAaT4wAGwWYABuOGAAcC0wAHLX0ABzMtAAc+jQAHT50AB30lAAeZkwAHmZUAB7uzAAgWugAIONsACHHAAAik8gAI3dYACREIAAlJ7QAJVU0ACbYDAAm7swAJ0nMACiIaAAonygAKLXoACkQ6AApPmwAKgtAACpmQAArYJQAK+kYACv/2AAsnyAALd20AC9JzAAv0kwAMT5oADKqgAA0cZgANYKsADhIyAA5mWgAOzMAADzMmAAAAAAABsFsABpdTAAeOOgAIccYACOOQAAlJ8AAJtuAACiauAAo44wALHHIAC8cdAAwAAAAAAAD//iWNAACqqwAA2CoAAOOOAAFVVgABxx0AAlVWAAKqqgACqqsAA446AAAAAAAANgsAAGFGAABsFgABDjgAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//H0t//v6UwABDjgAAbBa//+T6v/+u70AAGwW//5PpgAAAAAABRENAAKIhgABsFoAB446AA8zJgABsFo=","cmssi10":"AXwAEgAAAH8ANQAQAAsANwBOAAgAAAAHxVWN6QCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADqF9DEAC/QAAAs0FQAHdAAACDQvAAm0GgAJ9C4ACzQjAAn0DQALNCMACfQbAAa0NkKFtCkABbQnAAu0KQALtCcAAEwMAACOTAAFNAAABTQmAAUkHQAFNCcABSAhAAq0AAADgcAABLQmAAnMEwALDBMABRVOAAw0LgAM9C4ACziVAABMAEAB9BBFxTQBAAv2DwAFPOsAC/zKAAr0CQAA9BhEgz6wAAM+hwAFPCwACx0HAADFgAACDAVFQMQAAAU+sAAFKCsABSgrAAUoKwAFKCsABSgrAAUoKwAFKCsABSgrAAUoKwAFKCsAAMwGAADNhgAB0kMACwhPAAQSQAAENC1GCDQVAAh0AFCIdBsAB7QuAAo0FU0G9C4ABnQxSMg0LgAJtBoAATQxU0Q0GgAJdC5KRfQAUgx0GgAJtBoACnQVTQe0G0dKdZUAB/QbAAY0JgAItDFLSTQaAAh0NEjMtDRIyHQxSkh0NUuHNC4AAX6zAAU0MgABfp8ABTQZAADwFgAA9BhEREwCT8V0CE5DjBwABXQnAAOMEwABtDZAhQ5qUwV0BAAAcCgAALJkAAT0HEZAdCcAC0wEAAVMBAAFDBJORU5LTkVOTAACTCoAAswXAAKYFFAFTAxQQ8wqAAjMKkZDzCUAA85qR4NMIAAFDB5FjQweAAU0JgAFLCIABTARAAAAAAAAAPSfgAEREYABHHIAARxygAEn0sABOOQAAUccwAFVVYABXd6AAXHHQAGIiMABjjlAAb0oAAHHHMAB2C4AAeOOwAHsF0AB7BeAAfSgAAIAAIACERGAAiT6wAIqq0ACOOQAAkcdQAJVVgACY47AAnHHgAJxyAACjjmAApVWAAKqq0ACqquAArjkAAK7vIACwAFAAscdgALVVoAC447AAuOPQALxx4AC8zjAAwiJQAMccoADLYOAA0FswANVVgADccgAA4ABQAPHHYAD449ABAAAwAAAAAAAVVVAAXrhQAHHHIACAAAAAiqqwAJJJUACVVWAAm+AAAKHHIACn0oAArTTgAK3q4ACxxyAAvjjgAMAAAAAAAA//3rhQAAxx0AAOOOAAFVVgABjjoAAgAAAAK44wADHHAAAxxyAAQAAAAAAAAAAAzzAAAoKwAAQYgAAEjSAABPsgAAZoAAAGfgAAB9NQAAfUAAAIAOAACfVgAAqsMAALyFAADGhQAA0FoAAOrSAAEFhQABDt0AARWeAAEn7QABNXAAAT5oAAE+rQABQCgAAUdAAAFLhgABU6sAAVVuAAFZYwABYO0AAWUlAAFmgAABZ3IAAWmAAAFx5gABd0sAAXeQAAF5CwABhGsAAY4NAAGPzQABu9UAAcj2AAHiTQAB464AAerSAAIM9QACGzAAAiO2AAJF2AACjPgAApV9AALDAAADeQsAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//C2C//vd2wABHHIAAccd//+OOP/+qqoAAHHI//444wADZqAABVVWAAKqqwABxx0ABxxyABAAAwABxx0=","cmssi12":"AX8AEgAAAH8ANwAQAAsAOABOAAgAAAAH2gMizQDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADmF9DIADHQAAAu0FQAHNAAACPQwAAo0HAAKtC8AC7QjAAq0DQALtCMACrQaAAa0N0KFtCoABbQoAAw0KgAMNCgAAEwMAACOTAAFNAAABTQlAAUkHQAFNCcABSAfAAr0AAADgcAABLQlAAqMEwALjBMABRVOAAy0LwANdC8AC7iVAABMAEAB9BBFxTQBAAx2DwAFPOwADHzJAAt0CgABNBhEgz6xAAM+hgAFPC4AC50GAAEFgAACDARFQQQAAAU+sQAFKCwABSgsAAUoLAAFKCwABSgsAAUoLAAFKCwABSgsAAUoLAAFKCwAAQwHAAENhwAB0kMAC4hPAARSQAAEdC1GCPQVAAh0AFCItBoAB/QvAAp0FU0G9C8ABnQySMj0LwAKNBwAAPQyU0Q0HAAJ9C9KRfQAUgz0HAAKNBwACzQVTQe0GkdLNZUACDQaAAY0JQAJtDJLSXQcAAh0NUjNNDVIyHQySkh0NkuHdC8AAX60AAU0MwABfqEABTQZAAEwFgABNBhERIwCT8V0CE5DjBsABXQoAAOMEwABtDdAhQ5rUwV0BQAAcCkAALJmAAT0G0ZAdCgAC8wFAAVMBQAFDBJORU5LTkVOTAACTCsAAswXAAKYFFAFTAxQQ8wrAAkMK0ZDzCQAA85rR4NMIAAFDB5FjYweAAU0JQAFLCIABTARAAAAAAAAAOvZQAEHs0ABEJbAARaEAAEhxsABMl4AAT7QAAFOOAABVLzAAWoSAAGAWgABhewAAbL1QAG9oAAByqlAAdaDQAHZegAB3/7AAeaDQAH1VAACAl1AAheywAIdn0ACLQgAAjl5QAJI4gACVVNAAl7OwAJkvAACfZ9AAoCWAAKFU0ACloLAApl5QAKccAACqXlAAqqowAKr2AACslzAAr7OwALRLUAC1CQAAt8QAALjjAAC9oLAAwvYAAMY4UADLjbAA0OMAANcb0ADZerAA60GwAPL10AD6qgAAAAAAABS9sABdJ8AAcccQAIAAAACKqrAAkklQAJOOAACbnVAAoccQAKe0MACs6QAArYCwALHHEAC+ONAAwAAAAAAAD//dJ8AADHHAAA448AATjgAAGOOQACAAAAArjjAAMccAADHHEABAAAAAAAAAAAFuwAADd3AABLBQAAUhEAAFdfAABqQAAAaz8AAH8cAACCbwAAig8AAKCIAAC3GQAAvuUAAMztAADNZwAA9E8AAQgkAAEO3AABGIwAASnRAAE30AABP9gAAUAZAAFE5wABS8AAAVYMAAFWYQABWjwAAV3kAAFejAABah0AAWrEAAFrywABbTwAAXRHAAF3zQABfckAAYI4AAGJpAABkMEAAZUtAAGaPAABuqUAAcrvAAHjrwAB5dwAAe0xAAIOnQACHZAAAiTlAAJGUQACjPgAApRNAALA3QADcx0AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//FCb//wHIAABFoQAAb2g//+QmP/+scgAAG9o//5CYAADZqAABTjgAAKccAABvaAABxxxAA+qoAABvaA=","cmssi17":"AX4AEgAAAH8ANwAQAAoAOABOAAgAAAAHoI/udQEUeuAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADbF9DIADHQAAAu0FwAHNAAACPQwAAo0HgAKtC8AC7QjAAq0DQALtCMACrQcAAa0N0KFtCoABbQpAAw0KgAMNCkAAEwMAACODAAFNAAABTQmAAUkIAAFNCgABSAhAAs0AAADgcAABLQmAAqMEwALjBMABRVPAAy0LwANdC8AC7iXAABMAEAB9BFFxTQBAAx2DgAFPOwADHzKAAt0CQABNBtEgz5xAAM+RgAFPC4AC50GAAEFgAACDANFQQQAAAU+cQAFLCwABSwsAAUsLAAFLCwABSwsAAUsLAAFLCwABSwsAAUsLAAFLCwAAQwHAAENhwAB0gUAC4hOAARSAAAEdC1GCPQXAAh0AFCItBwAB/QvAAp0F00G9C8ABnQySMj0LwAKNB4AAPQyU0Q0HgAJ9C9KRfQAUgz0HgAKNB4ACvQXTQe0HEdK9ZcACDQcAAY0JgAJNDJLSbQeAAh0NUjNNDVIyHQySkh0NkuHdC8AAX50AAU0MwABfmUABTQZAAEwFgABNBtERIwCT8V0CE5DjBgABXQpAAOMEwABtDdAhQ4rUwV0BAAAcCcAALIkAAT0GEZAdCkAC8wEAAVMBAAFDBJORU4LTkVODAACTCsAAswVAAKYFFAFTAxQQ8wrAAlMK0ZDzCIAA84rR4NMHQAFDBpFjYwaAAU0JgAFKB8ABTAQAAAAAAAAAOP7gAD+uwABCQSAAQt8wAEXbEABJjyAATL+gAFA/EABR/tAAVu8AAFxIkABdnuAAaIagAGr+wABufkAAcV+gAHGusABzbnAAdS4gAHhekAB73hAAgM5AAII+4ACFvnAAiO7QAIxuYACPnsAAkoAwAJMeQACZfyAAmc4wAJs+0ACf4AAAoC8QAKB+IACj/ZAAo/2gAKTQQACmj/AAqcBwAK2O4ACt3fAAsV1gALMGgAC2TaAAuz3QAL69UADDrXAAyJ2gAM7+gADR3/AA4r9AAOm+MADwvTAAAAAAABSTgABbBzAAbjSwAH/7wACHGmAAjbGgAJA88ACZnOAAoOKAAKe5oACn5rAAqCMAALHHIAC+OgAAv8UAAAAAD//bC3AADHLgAA394AAQQTAAGOWwACAZUAArkfAAMctQAD/JMAAAAAAAA4dQAAOZcAAFBnAABYVQAAXN8AAG6iAABvbQAAgCUAAITTAACG1wAAoD0AALSQAADDTgAAypQAANIXAAEFiAABBjcAAQZbAAEUzgABITQAATaaAAE7BwABPDkAAUwAAAFR4QABUqEAAVU7AAFadQABXhwAAWDCAAFkbAABZQcAAWntAAFsGQABeLAAAXmUAAF68AABhpwAAYoKAAGYuAABml4AAaQ9AAGsTAAB0AQAAeOvAAHrsQAB8ZsAAhG0AAIhMQACJxoAAkczAAKMLwACkhkAArzmAANoFwBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AZYAEAGGABABvgASAY4AEAEGABQBvgAQAZYAEAGGABAAugAWALIAFAG+ABABlgAQAdYAEAHKABABhgAQAQYAFAE+ABABDgAQAR4AEgFGABAB5gAUAZYAFAG+ABQBygAUAYYAFAEGABYB1gAUAWIAEAFeABABBgAQAVoAEgFmABABlgAYAb4AGAHiABABkgAYAY4AGAHGABgBygAQAeYAEgHeABAB0gAQAQ4AEAE+ABABHgAQAVYAEAFGABABUgAUAWYAFAFaAB4BXgAeAaoAGgEmABv/8cBL//CYAAAELfQABq/v//5UB//6/BAAAav///lQFAANmoAAFA/EAAoH4AAGr+wAG40sADwvTAAGr+w==","cmssi8":"AXcAEgAAAH8AMAAQAAsANwBOAAgAAAAHIFIWvACAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADuFdDEACrQAAAn0FAAGtAAAB3QvAAi0GgAI9C4ACfQiAAj0DAAJ9CIACPQbAAY0NkKFNCgABTQnAAp0KAAKdCcAAEwLAACOSwAEtAAABLQjAASkGQAEtCYABKAfAAk0AAADQcAABDQjAAjMEgAJzBIABJUNAAr0LgALtC4ACfiUAABMAEABtA9FxLQAAAq2DgAEvOsACrzIAAm0BwAA9BVEgv6wAAL+hgAEvCwACd1GAADFgAABzARFQMQAAAS+sAAEqCsABKgrAASoKwAEqCsABKgrAASoKwAEqCsABKgrAASoKwAEqCsAAMwFAADNhQABkkIACchOAAPSQAAD9C1GB3QUAAd0AFCHdBsABvQuAAj0FE0GdC4ABfQxSMd0LgAItBoAAPQxU0P0GgAIdC5KRXQAUgs0GgAItBoACXQUTQb0G0dJdZQABzQbAAW0IwAH9DFLSDQaAAd0NEjLdDRIx3QxSkd0NUuGtC4AAT6zAAS0MgABPp0ABLQWAADwGAAA9BVERAwBT8T0CU5DTBwABPQnAANMEgABdDZAhI5qUwT0AwAAcCkAALJlAAR0HEZAdCcACgwDAATMAwAEjBFORM5KTkTOSwACDCoAAowXAAJYE1AEzAtQQ4wqAAeMKkZDjCQAA45qR4MMIAAEjCFFi8whAAS0IwAErB4ABLAQAAAAAAAAAQOPAAEhyAABLjoAATxzAAFMcwABWOSAAWqsAAFzj4ABiOUAAaESgAGnHgAB2OUAAeOQAAH1VwACAckAAgqsgAITkAACIAIAAjHJAAJHHoACUAKAAlx0AAJuO4ACeq0AAox0gAKY5gACtx8AAsACgALVWAAC5x8AAucfgALqrYAC85EAAwACgAMRygADHeWAAyORgAM45oADTjwAA2ADAAN1WIADiq4AA6jnAAO1WIAEA5IABCHLAARABAAAAAAAAFxyAAGGiwABxxyAAgAAAAIqqwACSSWAAmqsAAJ1VQAChxyAAqAAAAK4YgACvbeAAsccgAL444ADAAAAAAAAP/+GiwAAMccAADjjgABjjoAAaqwAAIOOAACuOQAAxxwAAMccgAEAAAAAAAAAAAjgAAAM04AAERAAABIlgAAWEYAAGDEAABtnAAAePIAAIF6AAClvgAApoAAALVqAAC3lAAA0ygAANyYAAEC1gABDtwAAR0iAAEiPAABLlQAATHuAAE0CgABOmoAAT9IAAFGLgABR0QAAUyQAAFSlgABWzAAAV5MAAFhvAABZRYAAWgIAAFqygABatIAAXbcAAF4LAABeQoAAYAoAAGHRAABlJ4AAb9kAAHCdgAB16IAAeOuAAHjtgACB/oAAhQUAAIgKAACRGwAAoz4AAKZDAACyWgAA4rUAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//vxxP/7nG4AAS46AAHjkP//hxz//pVUAAB45P/+HHAAA2agAAWqsAAC1VgAAeOQAAcccgARABAAAeOQ","cmssi9":"AX0AEgAAAH8ANwAQAAoANwBOAAgAAAAHK6GXFwCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADsGNDEADHQAAAu0FAAHtAAACLQvAAo0GQAKdC4AC7QiAAp0DAALtCIACnQaAAb0NkKF9CgABfQnAAw0KAAMNCcAAEwLAACOCwAFdAAABXQjAAVkGwAFdCYABWAhAAr0AAADgcAABPQjAApMEgALjBIABVVNAAy0LgANdC4AC7iUAABMAEAB9A9FxXQAAAx2DgAFfOsADHzIAAt0BwAA9BVEgz5wAAM+RgAFfCwAC50GAADFgAACDARFQMQAAAV+cAAFaCsABWgrAAVoKwAFaCsABWgrAAVoKwAFaCsABWgrAAVoKwAFaCsAAMwFAADNhQAB0gIAC4hOAARSAAAEdC1GCLQUAAk0AFCI9BoAB/QuAAq0FE0HNC4ABrQxSMi0LgAKNBkAATQxU0S0GQAJ9C5KRjQAUgz0GQAKNBkACzQUTQg0GkdLNZQACHQaAAZ0IwAJdDFLSbQZAAk0NEjNNDRIyTQxSkk0NUuHdC4AAX5zAAV0MgABfl0ABXQXAADwGAAA9BVERMwBT8W0CU5DjBwABbQnAAPMEgABtDZAhU4qUwW0AwAAcCkAALIlAAU0HEZAdCcAC8wDAAWMAwAFTBFORY4KTkWOCwACTCoAAswWAAKYE1AFjAtQRAwqAAlMKkZEDCQABA4qR4NMIAAFTB5FjYweAAV0IwAFbB8ABXAQAAAAAAAAAPtBwAEYfcABJFgAASXsgAExxsABQZQAAU1uQAFe0AABZ4EAAXwMAAGTb4ABmUgAAcl6QAHTwAAB08CAAeUhwAHw/AAB8cZAAfmtAAICXcACDjgAAh+ZwAI0JQACPaAAAkiwAAJa3AACZewAAngYAAKDKAAChLyAAqBkAAKhLkACqd8AAr2gAAK+akACvzSAAs8BwALTv4AC3HCAAuhKwAL4GAAC+OJAAwfBwAMJecADHgUAAzKQAAND8cADWH0AA20IAAOLDkADl7LAA+OMgAP//kAEHHAAAAAAAABYfkABgJHAAcccgAIAAAACKqrAAkklQAJe0AACc6yAAoccgAKeBkACtmgAArslwALHHIAC+OOAAwAAAAAAAD//gJHAADHHAAA444AAXtAAAGOOQACBlIAArjkAAMccgAEAAAAAAAAAAApRAAAPmAAAEn1AABMiQAAYC4AAGS5AAB2TgAAfOcAAIJEAAClVwAArAkAALlcAADDDAAA0gcAAOerAAEIKQABDtwAARwgAAElZQABMkkAATnXAAE8xwABPrcAAUKiAAFJpQABUIQAAVDbAAFULAABY+QAAWQUAAFkhQABZd4AAWZAAAFuvgABcrsAAXdAAAF7hQABgokAAYWyAAGMBAABlM4AAb1rAAHEuwAB3ZAAAeOuAAHnqwACCr4AAhgJAAIiIgACRTcAAoz5AAKXFAACxdkAA4D0AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//wS+f/7vaQAASRZAAHTwP//ixD//qEwAAB08P/+LEAAA2agAAV7QAACvaAAAdPAAAcccgAQccAAAdPA","cmssq8":"AUYAEgAAAH8ANQAPAAgABQBOAAgAAAAHS3RFbwCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NRAAAAAAAAAAAAAAAAAAAAAADuF6AAADCgAAAsoAAAGaAAACSgAAAhoAAAKaAAACygAAApoAAALKAAACmgAAAYsBEKFbAAABWwAAAusAAALrAAAAEwAAACNgAAE7AAABOwAAATYAAAE7AAABNwAAAfsAAADgQAABKwAAApMAAALDAAABNTAAAxoAAAM6AAACzSAAABMAEABrABFxOwAAAwtQAAE+MAADDjAAAqsAAABLABEgznAAAM5wAAE+AAACzGAAAEFgAACDABFQQQAAAT5wAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAAAQwAAAENgAABkYAACwhAAARRgAAEbABGCSwAAAfoAFCI6AAAB6gAAAnoAE0HKAAABqgASMkoAAAIaAAAAOgAU0QoAAAJqABKRegAUgvoAAAIaAAACugATQdoAEdK6YAACKgAAAWoAAAKKABLSCgAAAfoAUjMqAFIx+gASkfoAkuG6AAAAXnAAATsAAABecAABOwAAAEsAAABLABEREwAT8UsAE5DjAAABSwAAAOMAAAB7ARAhQ2AUwUsAAAAbAAAAK2AAASsAEZAbAAAC0wAAAUMAAAEzABORQ2ATkUNgAACTAEAAswAAAKkAFAFDABQQ8wBAAlMAUZDzAAAA82BR4NMAAAEzANFjQwDAATsAAAE7AAABOwAAAAAAAAAARxygAFAAQABRx0AAWOOgAFo5AABaqsAAYcdAAGqqwABqquAAc45AAHqqwAB8ceAAicdAAI45AACOOSAAk45gAJccoACXHMAAoAAgAKAAQACo48AAscdAALVVgAC6quAAvHIAAL45IADDjmAAxxygAMjjwADMcgAAzjkgAM8cwADQAEAA0OPAANHHYADVVYAA1VWgANccwADjjoAA5VWAAOccoADwAEAA9xygAPjjwAD44+ABAcdgAQVVoAEKquABEABAASccwAEzjoABQABAAAAAAAAY44AAbgAAAIVVYACOOOAAlxyAAKaqwACn/+AAqOOAAKtuAACvHIAAsccgALHHQAC4ACAAw45AAAAAD//fxwAACOOgABHHIAAfHIAAI44AACOOQAA1VUAAAAAAAARxwAAIAAAACOOgABY44AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+442//s44AABY44AAjjk//9xxv/+VVQAAI46//3HHAAAAAAABqqsAANVVgACOOQACFVWABQABAACOOQ=","cmssqi8":"AXYAEgAAAH8ANgAPAAgANABOAAgAAAAHnQUCAQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU1NRSQAAAAAAAAAAAAAAAAAAAADuF6C0ADGgAAAtoEwAGaAAACSgrAAhoFAAKqCkAC2geAAqoCwALaB4ACqgXAAYsM0KFbCMABWwgAAvsIwAL7CAAAEwOAACNjgAE7AAABOwdAATYHAAE7BkABNwhAAnsAAADgQAABKwdAAqMFgALTBYABNTJAAyoKQANKCkAC3STAABMAEABrA9FxOwAAAxtUAAE+OYADHjFAArsDQABLBFEgznsAAM5xgAE+CgAC3GGAAEFgAACDANFQQQAAAT57AAE4CYABOAmAATgJgAE4CYABOAmAATgJgAE4CYABOAmAATgJgAE4CYAAQwCAAENggABkYcAC0hQAARRgAAEbCpGCSwVAAfoAFCI6BcAB6gpAAooE00HKCkABqgtSMkoKQAIaBQAAOgtU0QoFAAJqClKRegAUgwoFAAIaBQACygTTQdoF0dLKZMACKgXAAWoGgAKaC1LSCgUAAfoMUjM6DFIx+gtSkfoMkuG6CkAAXnwAATsLwABedIABOwYAAEsEQABLBFEREwBT8UsCE5DjCQABSwgAAOMFgAB7DNAhQ2OUwUsBAAAbCMAAK2gAASsJEZAbCAAC4wEAAUMBAAEzBtORQ2KTkUNjgACTC4AAswiAAKkH1AFDA5QQ8wuAAlMLkZDzCcAA82uR4NMJwAEzCVFjUwlAATsHQAE7B0ABOwMAAAAAAAAARxygAFAAQABRx0AAWOOgAFo5AABaqsAAYcdAAGqqwABqquAAc45AAHqqwAB8ceAAicdAAI45AACOOSAAk45gAJccoACXHMAAoAAgAKAAQACo48AAscdAALVVgAC6quAAvHIAAL45IADDjmAAxxygAMjjwADMcgAAzjkgAM8cwADQAEAA0OPAANHHYADVVYAA1VWgANccwADa0aAA446AAOVVgADnHKAA8ABAAPccoAD448AA+OPgAQHHYAEFVaABCqrgARAAQAEnHMABM46AAUAAQAAAAAAAGOOAAG4AAACFVWAAjjjgAJccgACmqsAAp//gAKjjgACrbgAArxyAALHHIACxx0AAuAAgAMOOQAAAAA//38cAAAjjoAARxyAAHxyAACOOAAAjjkAANVVAAAAAAAADFCAABTrAAAVIAAAFSIAABjnAAAY54AAGOsAABp1gAAkCIAAJSAAACbigAAo7YAAKkAAAC+VgAA3JgAAOfeAADq0gABA7oAARKmAAEThgABGP4AASneAAEwbAABMVQAATHuAAE3FgABPWoAAT3sAAFAKAABTjQAAVOuAAFVfAABZgIAAXAeAAF5CgABjJAAAaZ4AAGwJAABtzoAAcO6AAHFTgAB464AAe/6AAIK1gACDGwAAgyQAAJAKAACmRAAApqkAALTiAADwCgAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+442//s44AABY44AAjjk//9xxv/+VVQAAI46//3HHAADZqAABqqsAANVVgACOOQACFVWABQABAACOOQ=","cmsy10":"ARkAEgAAAH8ALAAPABAAEgAHAAcAAAAWISIsmgCgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADqIKgAAANCAAAgqAAACGQAACCoAAAIQgAAIKgAACCoAAAgqAAAIKgAACCoAAAgqAAAIKgAACrdAAAIQgAACEIAACBTAAAgUwAAILsAACC7AAAguwAAILsAACC7AAAguwAAICEAACB1AAAghgAAIIYAACqGAAAqhgAAIIYAACCGAAAqIQAAKiEAAAjcAAAI3AAAKiEAACrcAAAq3AAAIFMAACohAAAqIQAAENwAABDcAAAqIQAAKtwAACrcAAAgMAAAApAAACowAAAUhgAAFIYAACjdAAAo3QAAAdwAAAEhAAAN0AAADdAAABQwAAAI5wAAG9AAABvQAAAg0AAAINAAABDQAAAiwAEGE8ARBAnAFQQfwA0CCsAtAxrAMQMOyRkDJsAFAwvAHQAWyUEFHsAJARfAAQQrwAEEJMA9AiHADQMYwCkCI8kBAyfAAQIPwCEEDMBFABLAMQIRwCkAKcApAhnAOQQVySkCHMAlBBSQAAAUkAAAFJAAABSQAAAUkAAAENAAABDQAAAG7gAABu4AAAbuAAAG7gAACO4AAAjuAAAE7gAABO4AAAPuAAAI7gAACO4AABDuAAAI7gAAA9wAACUfAAAdwAAAJcAAAAXdNAAUkAAAFJAAACC7AAAguwAAB90AAAbdAAAG3QAAEN0AACDaAAAg2gAAINoAACDaAAAAAAAAAAAAAAAEZmYABHHIAAY45QAGqq0ABxxzAAccdQAIAAIACGyqAAhxywAItlYACLbdAAjjkAAJhJIACbBeAAnHHgAJzfUACgNoAAqCSwAKqq0ACrGCAArYMAALCR0ACyEDAAtpqgALf/4AC447AAuYegAMAAIADDDzAAxXoAAMccoADLziAAzGigANERUADSC7AA1VWAANgyUADY9gAA445gAPzfYAEAADABM24wAAAAAAAKPWAAXeuAAG444ABxxzAAdrgwAHccgAB7reAAigJQAI45AACVVWAAos8AAK7u4ACxxyAAwAAAAAAAD//d64//8cc///a4P//3HI//+63gAAoCUAAOOOAAFVVgABjjoAAhL2AAIs8AADHHAAAxxyAAQAAAAPXCoAAAAAAAAniwAAOysAAHHIAAB8kgAA7vIAAPLoAAEuYAABMy4AAUVmAAFQyAABbloAAZbCAAHHHQACV8UAAluWAAL0ngAEERKAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAABxyAAA45AAAVVYAAHHIAACOOgAAqqwAAMceAAEAAAAAAAAAAAAAAAAAAAABuOOABAAAwAAAAAACtL6AAZMugAHGYYACvmoAAWEeAAGmzUABc5oAASfSgACZmYAA/SaAAYtgAAAzM0AJj1wABAo9gAEAAA=","cmsy5":"ARYAEgAAAH8ALAAPAA8AEAAHAAcAAAAWsNwwbgBQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAAD0HqoAAANTAAAeqgAAB0IAAB6qAAAHUwAAHqoAAB6qAAAeqgAAHqoAAB6qAAAeqgAAHqoAACnLAAAHUwAAB1MAAB5kAAAeZAAAHtwAAB7cAAAe3AAAHtwAAB7cAAAe3AAAHiEAAB51AAAemAAAHpgAACmYAAApmAAAHpgAAB6YAAApIQAAKSEAAAfLAAAHywAAKSEAACnLAAApywAAHmQAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAeMAAAAoAAACkwAAAUmAAAFJgAACjLAAAoywAAAcsAAAEhAAAKwAAACsAAABQwAAAH5gAAG8AAABvAAAAewAAAHsAAABDAAAAisAEGErAFBAmwDQQfsAkCCLAdAxewKQMNtxUDJrABAwuwEQAVtzkFHbABARawAQQrsAEEI7A1AiCwCQMasCUCJLcBAyewAQIOsBkEDLA9AA+wKQIRsCUAKrAlAhmwMQQTtyUCGLAhBBSAAAAUgAAAFIAAABSAAAAUgAAAEMAAABDAAAAG7QAABu0AAAbtAAAG7QAAB+0AAAftAAAE7QAABO0AAAPtAAAH7QAAB+0AABDtAAAH7QAAA8sAACEeAAAcsAAAJbAAAAXLLAAUgAAAFIAAAB7cAAAe3AAABssAAAbLAAAGywAAEMsAAB7JAAAeyQAAHskAAB7JAAAAAAAAAAAAAAAHDj0AB1VaAAmOQAAKHHoACqqzAAvHJgAMVWAADINzAAzjmgANHMoADSiwAA2bXQAN45oADfrqAA4ADQAOYeoADrWGAA7fEAAPHIAAD1VjAA9vkAAPz7AAD9zKAA/yPQAP9mYAEDjzABCT+gAQ4V0AEVVmABFXsAARbUoAEY5NABHQ1gASBFYAEhyDABJx2gATHNAAEyNdABOOTQAVxzMAFeHzABkV9gAAAAAAAOVgAAZXrQAG440AB3HGAAfjkwAIPKYACJ2mAAjjkAAJnVoACqqzAAru8AALHHMAC4JWAAwAAAAAAAD//let//9xxv//45MAADymAACdpgAA440AAY46AAGdWgACEvYAAqqzAAMccwADglYABAAAAA8aoAAAAAAAAEQ9AACOOgAAnroAANWgAADYKgABFwYAAT39AAFQxgABXwAAAaT6AAI45gACV8YAAngKAAMC2gAEZmqAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAACOOgABHHMAAaqtAAI45gACxyAAA1VaAAPjkwAEAAAAAAAAAAAAAAAAAAAABuONABeOTQAAAAAADs3KAAYzDQAIEO0AEGdjAAiCswAIDpAABnT2AAS2DQADMzMABmZmAAfpQAABmZoAH64TABa4UwAEAAA=","cmsy6":"ARcAEgAAAH8ALAAPABAAEAAHAAcAAAAWcaElCwBgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADyH6oAAANTAAAfqgAAB0IAAB+qAAAHUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnMAAAHUwAAB1MAAB9kAAAfZAAAH90AAB/dAAAf3QAAH90AAB/dAAAf3QAAHyEAAB91AAAflwAAH5cAACmXAAAplwAAH5cAAB+XAAApIQAAKSEAAAfLAAAHywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAD8sAAA/LAAApIQAAKcsAACnLAAAfMAAAAoAAACkwAAAUlwAAFJcAACjMAAAozAAAAcsAAAEhAAAKwAAACsAAABQwAAAH5gAAG8AAABvAAAAfwAAAH8AAAA/AAAAhsAEGErAFBAmwDQQesAkCCLAhAxiwKQMNuBEDJrABAwuwFQAVuDkFHbABARawAQQrsAEEI7A1AiCwCQMXsCUCJLgBAyewAQIOsBkEDLA9ABCwKQIRsCUAKrAlAhmwMQQTuCUCGrAdBBSAAAAUgAAAFIAAABSAAAAUgAAAD8AAAA/AAAAG7gAABu4AAAbuAAAG7gAAB+4AAAfuAAAE7gAABO4AAAPuAAAH7gAAB+4AAA/uAAAH7gAAA8sAACIfAAAcsAAAJbAAAAXMLAAUgAAAFIAAAB/dAAAf3QAABswAAAbMAAAGzAAAD8wAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAF2hMABhL1AAgl6wAIqqsACS9lAAo44AAKvZ0ACtqgAAtCWwALWWMAC2GAAAvygwAMMUgADEvVAAxkFQAMkEsADQM1AA0upQANVVAADYpoAA2sKwAODgMADhPgAA4jdQAOJMUADl7LAA7I+wAPBU0AD2EQAA9oRQAPkTsAD9bNAA//+AAQFzUAECIbABBxwAAQ8vgAEPtrABF7OwATjjAAE5BFABbV8AAAAAAAANOgAAY9KAAG440AB3HIAAehLQAIEIAACG34AAjjkAAJaGUACjjgAAru8AALHHMACzu9AAwAAAAAAAD//j0o//9xyP//oS0AABCAAABt+AAA440AAWhlAAGOOwACEvgAAjjgAAMccAADHHMAAzu9AAQAAAAPLGAAAAAAAABXBQAAhL0AALl7AADhGAAA9CsAASBrAAFM/QABTiAAAVpDAAGgPQACEvUAAlfIAAJujQAC/h0ABEn1gDCAAIAwgAGAMIACgDCAA4AwgASAMIAFgDCABgAAhL0AAQl7AAGOOAACEvUAApezAAMccAADoS0ABAAAAAAAAAAAAAAAAAAAAAbjjQAUccAAAAAAAA0A0AAGRv0AB8JAAA3RZQAG3q0ACAwoAAa20wAEl7UAAqqrAAVVVQAGl7AAAVVVAB+7uwAVmZsABAAA","cmsy7":"ARgAEgAAAH8ALQAPAA8AEQAHAAcAAAAWTyHihQBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADwIKkAAANTAAAgqQAACEIAACCpAAAIUwAAIKkAACCpAAAgqQAAIKkAACCpAAAgqQAAIKkAACvcAAAIUwAACFMAACBkAAAgZAAAIMsAACDLAAAgywAAIMsAACDLAAAgywAAICEAACB1AAAglwAAIJcAACuXAAArlwAAIJcAACCXAAArIQAAKyEAAAjcAAAI3AAAKyEAACvcAAAr3AAAIGQAACshAAArIQAAENwAABDcAAArIQAAK9wAACvcAAAgMAAAAoAAACswAAAVlwAAFZcAACncAAAp3AAAAdwAAAEhAAAM0AAADNAAABUwAAAI5gAAHNAAABzQAAAg0AAAINAAABDQAAAisAEGE7AJBAqwEQQfsA0CCbApAxmwLQMOuBUDJ7ABAwuwGQAWuD0FHrAFARewAQQssAEEI7A5AiGwDQMYsCUCJLgBAyiwAQIPsB0EDbBBABGwLQISsCUAKrAlAhqwNQQUuCUCG7AhBBWAAAAVgAAAFYAAABWAAAAVgAAAENAAABDQAAAG7QAABu0AAAbtAAAG7QAACO0AAAjtAAAE7QAABO0AAAPtAAAI7QAACO0AABDtAAAI7QAAA9wAACUeAAAdsAAAJrAAAAXcMAAVgAAAFYAAACDLAAAgywAAB9wAAAbcAAAG3AAAENwAACDaAAAg2gAAINoAACDaAAAAAAAAAAAAAAAFRRUABW25AAdlmQAH5ZsACGGJAAhhiwAJXXkACdt1AAnsRwAKWBIACllpAApdeQALBCsACzwpAAtVWQALfBsAC4TSAAwOFQAMOt4ADFFJAAyDrgAMqtsADPJJAA0X+wANGgkADSuXAA1NOQANvwIADfJlAA47MAAOSSkADn5QAA6ugAAO+BkADvmHAA8EFQAPRRkAD6iHAA+yUgAQQQkAEilnABI46QAVe6cAAAAAAADG8gAGJTAABuOOAAdxxwAHcckAB+blAAhA1QAI45AACTX3AAnnoAAK7vAACveuAAsccgAMAAAAAAAA//4lMP//ccf//3HJ///m5QAAQNUAAOOOAAE19wABjjkAAeegAAIS9wAC964AAxxyAAQAAAAPOQ4AAAAAAAAFiQAAZHAAAH35AADMkgAA53IAAQn3AAEnIAABSkcAAVbiAAFZoAABnNkAAffgAAJXxQACZ8kAAvq3AAQ1pYAwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAH35AAD78gABeesAAfflAAJ13gAC89cAA3HQAAQAAAAAAAAAAAAAAAAAAAAG444AErryAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","cmsy8":"ARgAEgAAAH8AKwAPABAAEgAHAAcAAAAWvkvICwCAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADuH6kAAANCAAAfqQAAB1MAAB+pAAAHQgAAH6kAAB+pAAAfqQAAH6kAAB+pAAAfqQAAH6kAACndAAAHQgAAB0IAAB9kAAAfZAAAH7sAAB+7AAAfuwAAH7sAAB+7AAAfuwAAHyEAAB91AAAflwAAH5cAACmXAAAplwAAH5cAAB+XAAApIQAAKSEAAAfcAAAH3AAAKSEAACncAAAp3AAAH2QAACkhAAApIQAAD9wAAA/cAAApIQAAKdwAACncAAAfMAAAAoAAACkwAAAUlwAAFJcAACfdAAAn3QAAAdwAAAEhAAAM0AAADNAAABQwAAAH5gAAG9AAABvQAAAf0AAAH9AAAA/QAAAhwAEGEsANBAnAFQQewBECCMAtAxnAMQMNyBkDJcAFAwrAHQAVyEEFHcAJARbAAQQqwAEEI8A9AiDAEQMXwCkCIsgBAybAAQIOwCEEC8BFABHAMQIQwCkAKMApAhjAOQQTyCkCGsAlBBSAAAAUgAAAFIAAABSAAAAUgAAAD9AAAA/QAAAG7gAABu4AAAbuAAAG7gAAB+4AAAfuAAAE7gAABO4AAAPuAAAH7gAAB+4AAA/uAAAH7gAAA9wAACQfAAAcwAAAJMAAAAXdNAAUgAAAFIAAAB+7AAAfuwAABt0AAAbdAAAG3QAAD90AAB/aAAAf2gAAH9oAAB/aAAAAAAAAAAAAAAAEnHIABLjoAAaceAAHGOoAB45AAAiACAAI+OwACQCaAAleLgAJYZAACXHQAAoYgAAKS2oACmOYAAp/xAAKmuYACx1WAAtLIgALVWAAC4W8AAuw9gAL5JoADBoMAAwiKAAMN8wADEcoAAy7yAAM60wADSXiAA048AANdzoADZdcAA3iMAAN594ADiq4AA53zgAOgp4ADxyAABDfygARABAAFDt6AAAAAAAAuFIABgw8AAbjjgAHTjwAB3HIAAe8TgAIErYACOOQAAkCkAAJqrAACrKiAAru7gALHHIADAAAAAAAAP/+DDz//048//9xyP//vE4AABK2AADjjgABApAAAY46AAGqsAACEvYAArKiAAMccAADHHIABAAAAA9HrgAAAAAAAATYAAAb4AAAbn4AAHjkAADa5AAA7DoAARbEAAEsJgABSD4AAVRWAAFiRAABmlAAAeOQAAJXxgACYrQAAvguAAQmaIAwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAHjkAADxyAABaqwAAeOQAAJcdAAC1VgAA048AAQAAAAAAAAAAAAAAAAAAAAG444AEQAQAAAAAAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","cmsy9":"ARcAEgAAAH8AKwAPAA8AEgAHAAcAAAAWqbGQygCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADsH6gAAANCAAAfqAAAB1MAAB+oAAAHQgAAH6gAAB+oAAAfqAAAH6gAAB+oAAAfqAAAH6gAACncAAAHQgAAB0IAAB9kAAAfZAAAH7sAAB+7AAAfuwAAH7sAAB+7AAAfuwAAHyEAAB91AAAfhgAAH4YAACmGAAAphgAAH4YAAB+GAAApIQAAKSEAAAfcAAAH3AAAKSEAACncAAAp3AAAH2QAACkhAAApIQAAD9wAAA/cAAApIQAAKdwAACncAAAfMAAAApAAACkwAAAUhgAAFIYAACfcAAAn3AAAAdwAAAEhAAAM0AAADNAAABQwAAAH5wAAG9AAABvQAAAf0AAAH9AAAA/QAAAhwAEGEsARBAnAFQQewA0CCMAtAxnAMQMNyRkDJcAFAwrAHQAVyUEFHcAJARbAAQQqwAEEI8A9AiDADQMXwCkCIskBAybAAQIOwCEEC8BFABHAMQIQwCkAKMApAhjAOQQTySkCGsAlBBSQAAAUkAAAFJAAABSQAAAUkAAAD9AAAA/QAAAG7QAABu0AAAbtAAAG7QAAB+0AAAftAAAE7QAABO0AAAPtAAAH7QAAB+0AAA/tAAAH7QAAA9wAACQeAAAcwAAAJMAAAAXcNAAUkAAAFJAAAB+7AAAfuwAABtwAAAbcAAAG3AAAD9wAAB/aAAAf2gAAH9oAAB/aAAAAAAAAAAAAAAAEeBkABJFgAAZlIAAG2hIAB08AAAg44AAIrdAACK5gAAkA5QAJArAACSLAAAnGRwAJ9TwACgygAAoc8AAKRrQACscpAAr1wgAK9oAACyVFAAtTrAALd+QAC7gEAAvIBwAL3z4AC+BgAAxUrgAMg7kADLM+AAzKQAAND6cADSNLAA1t9QANeS4ADbQgAA3v0AAN+2sADp4AABBHlwAQccAAE6qkAAAAAAAArPIABfTpAAbjjgAHMpAAB3HHAAeTVwAH5jkACNDJAAjjkAAJe0AACm83AAru7gALHHIADAAAAAAAAP/99On//zKQ//9xx///k1f//+Y5AADQyQAA444AAXtAAAGOOQACEvcAAm83AAMccgAEAAAAD1MOAAAAAAAAGCIAAC1HAAB08AAAdlIAAOYLAADv8AABI+QAATAOAAFGqwABUlwAAWj8AAGYVQAB08AAAlfFAAJewAAC9jUABBqMgDCAAIAwgAGAMIACgDCAA4AwgASAMIAFgDCABgAAdPAAAOngAAFe0AAB08AAAkiwAAK9oAADMpAABAAAAAAAAAAAAAAAAAAAAAbjjgAQccAAAAAAAApZCwAGjiQABzJ8AAraAAAFbesAB6+VAAbMBwAEl7QAAcccAALQngAFoTQAAOOOACp9JwAQLYQABAAA","cmtcsc10":"AMIAEgAAAH8AAwAQAA0AAQACAAAAAAAH0zcZrQCgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNVENTQwAAAAAAAAAAAAAAAAAAAADqAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABPAAAATwAAAFgAAABYAAAAdAAAAHQAAABwAAAAdAAAAGwAAAB0AAAAQsAAAJgAAABYAAAAWAAAAGEAAAB0AAAAdAAAAHkAAABKQAAAdABAAHQAAAB0AAAAfYAAAH2AAAB0AAAAdAAAAH1AAAB9QAAAXAAAAGSAAABGgAAAZIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWgAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdoAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBwAAAdAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABaAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAhmYgAQzMMAAAAAAAIAAAADgtgABjjjAAamZQAG444AB446AAhVVgAIccgACH0mAAjjjgAJDIMACQ46AAnHHQAKqqsACxxyAAAAAP/830j//rYK//8ccgAA444AAVVTAAFVVQABha0AAbBbAAHHHQACOOMAAxxzAAOOOgAAAACAYAAOgGAADwAAAAAACGZiAAAAAAAAAAAABuOOABDMwwAIZmI=","cmtex10":"AMAAEgAAAH8AAgAQAA4AAQAAAAAAAAAH3+o8eACgAAASVGVYIGV4dGVuZGVkIEFTQ0lJAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVEVYAAAAAAAAAAAAAAAAAAAAAADqAWMAAAHAAAABMAAAAc0AAAFAAAABMAAAAaUAAAEwAAABwAAAAT0AAAHAAAABwAAAAYQAAAGEAAABMAAAAcAAAAGlAAABpQAAAUAAAAFAAAABwAAAAcAAAAGEAAABtgAAASEAAAEhAAAB6AAAAWMAAAHXAAAB1wAAAVIAAAFAAAABAAAAAcAAAAHAAAABwAAAAfoAAAH6AAABwAAAAcAAAAH5AAAB+QAAAXAAAAGEAAABHAAAAYQAAAEQAAAB+QAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEwAAABPAAAAaUAAAEhAAABpQAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcwAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH5AAAB+QAAAfkAAAHAAAABCwAAAcAAAAEwAAABwAAAATAAAAHAAAABMAAAAcAAAAE9AAABwAAAAcAAAAHNAAABwAAAAcAAAAEwAAABMAAAATAAAAE9AAABPQAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAE9AAABMAAAAfkAAAH5AAAB+QAAAcAAAAHNAAAAAAAAAAhmYgAAAAAAAgAAAAamZQAG444AB9KAAAfbAgAIJ9IACFVWAAh9JgAI23IACOOOAAmVVQAJxx0AChgrAApEOwALHHIAAAAA//zfSP/+E+X//mC1//62Cv//HHL//844AABRDgAAfR4AAVVTAAFVVQABha0AAjjjAAOOOgAAAAAAAAAAAAhmYgAAAAAAAAAAAAbjjgAQzMMACGZi","cmtex8":"AMAAEgAAAH8AAgAQAA4AAQAAAAAAAAAH30PKcwCAAAASVGVYIGV4dGVuZGVkIEFTQ0lJAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVEVYAAAAAAAAAAAAAAAAAAAAAADuAWMAAAHAAAABMAAAAc0AAAFAAAABMAAAAaUAAAEwAAABwAAAAT0AAAHAAAABwAAAAYQAAAGEAAABMAAAAcAAAAGlAAABpQAAAUAAAAFAAAABwAAAAcAAAAGEAAABtgAAASEAAAEhAAAB6AAAAWMAAAHXAAAB1wAAAVIAAAFAAAABAAAAAcAAAAHAAAABwAAAAfoAAAH6AAABwAAAAcAAAAH5AAAB+QAAAXAAAAGEAAABHAAAAYQAAAEQAAAB+QAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEwAAABPAAAAaUAAAEhAAABpQAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcwAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH5AAAB+QAAAfkAAAHAAAABCwAAAcAAAAEwAAABwAAAATAAAAHAAAABMAAAAcAAAAE9AAABwAAAAcAAAAHNAAABwAAAAcAAAAEwAAABMAAAATAAAAE9AAABPQAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAE9AAABMAAAAfkAAAH5AAAB+QAAAcAAAAHNAAAAAAAAAAiACAAAAAAAAiceAAa0ngAG444AB9J+AAfpOgAIMcoACFVWAAiIJAAI23AACPHIAAmjjgAJxxwACiZkAApSdAALHHIAAAAA//ztgv/+Ih7//mqu//7BCP//Kqz//9xyAABfSAAAi1gAAVVUAAFVVgABk+QAAjjkAAOOOAAAAAAAAAAAAAiACAAAAAAAAAAAAAbjjgARABAACIAI","cmtex9":"AL8AEgAAAH8AAgAQAA0AAQAAAAAAAAAH36ROAACQAAASVGVYIGV4dGVuZGVkIEFTQ0lJAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVEVYAAAAAAAAAAAAAAAAAAAAAADsAWMAAAHAAAABMAAAAcwAAAFAAAABMAAAAaUAAAEwAAABwAAAATwAAAHAAAABwAAAAYQAAAGEAAABMAAAAcAAAAGlAAABpQAAAUAAAAFAAAABwAAAAcAAAAGEAAABtgAAASEAAAEhAAAB6AAAAWMAAAHXAAAB1wAAAVIAAAFAAAABAAAAAcAAAAHAAAABwAAAAfkAAAH5AAABwAAAAcAAAAH5AAAB+QAAAXAAAAGEAAABGwAAAYQAAAEQAAAB+QAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEwAAABOwAAAaUAAAEhAAABpQAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcsAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH5AAAB+QAAAfkAAAHAAAABCgAAAcAAAAEwAAABwAAAATAAAAHAAAABMAAAAcAAAAE8AAABwAAAAcAAAAHMAAABwAAAAcAAAAEwAAABMAAAATAAAAE8AAABPAAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAE8AAABMAAAAfkAAAH5AAAB+QAAAcAAAAHMAAAAAAAAAAhmYAAAAAAAAgl8AAav4gAG444AB9KAAAfkgAAIJ9AACFVVAAh9JQAI23AACO0LAAme0gAJxxwACiGpAApNvAALHHIAAAAA//zoxf/+HWT//mC0//62Cf//Je7//9e1AABajAAAhqAAAVVVAAGPKwACOOQAA445AAAAAAAAAAAACGZgAAAAAAAAAAAABuOOABDMwAAIZmA=","cmti10":"AXIAEgAAAH8AKQAQAAoAOgBNAAkAAAAH/QAnOgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADqEsCoACDAAAAcwFQAFsAAABTAxAAawNAAGMCUABzAhAAYwBwAHMCEABjAaAAR2OUID9hsABDYbAAi2GwAJNhsAAIwOAADOAwAC9AAAAvQYAALgEAAC9CAAAtgbAAh0AAACAYAAA7YdAAYMDAAGDAwAAtVTAAjwJQAJsCUABziVAABMAEPAtClFwzQLAAg1yQAHtAAACDzsAAc0GAAAtClEgb5zAAG+QgAC/DAABxkCAACGAAABDAFFQIQAAAL+cwAC5CsAAuQrAALkKwAC5CsAAuYrAALkKwAC5CsAAuYrAALkKwAC5CsAAIwGAACOBgAAkg0ABwhJAALSAAAC9CdGBzQXAAawAEwF8BoABjAvAAbwFUrFcCUABPAqRofwEQAGsDQAAXAyAANwLQAHcC9IBLAAUElwNAAGsDQABzAVSsVwGkqHMhUABnAETAPwJAAGMCpJBrA0AAawNkaJ8DZKhrAySAawOElEcC8AAL53AAM0NQAAvl4AAvQKAACsIwAAtClEQswOAAI0CFFCDAVRQvQbRkIMDFFAtjlAAg4SAAL0DgAAqBkAAKouAAI0HwAAdBtGSAwOAAPMDlMCzAhRQs4IUUIOEgABzB9RQYwPAADcFgADjA4AAgwfAAUMH0ZCTCYAAo4SAAGMKAACzBRFigwUAAL0JwAC7CIAAuwcAAAAAAAAAQWwAAE6BoABVDGAAW5cwAGKzoABorNAAa/IwAHXCYAB2wVAAfE0wAILYAACDsoAAhmYwAIli0ACP7aAAlnhgAJ0DMACgkWAApxwwAKoY0ACtpwAAsTUwALQx0AC3LmAAurygAL5K0ADBR2AAxEQAAMTVoADE41AAxgsgANFZoADUz4AA4bSgAOH9YADk+gAA5YugAPwooAD/ttABBbAAAAAAAAAbBbAAXeuAAG444ACAAAAAhxyAAI/JUACddeAAoOOgAKT6UACnxaAAqvjQAK7u4ACxxyAAu2CwAMAAAAAAAA//3euAAAxx0AAOOOAADoGgABjjoAArjjAAMccAADHHIABAAAAAAAAAAAc8UAAJdTAACZCAAAnnAAAOeKAADuXgAA9TIAAQKOAAEPAgABEDgAAR0iAAEzxQABNXsAATo4AAFQNgABU8YAAWVDAAFqYgABeJsAAXkoAAGBIwABhI0AAYkaAAGNFgABoV4AAaQgAAGnQgABrQgAAa6lAAGvOAABuOMAAbqaAAHHHQAB2ooAAeFeAAHqYgAB7KgAAe06AAH1wwAB93gAAfyYAAIg/gACKz0AAi6mAAI+lQACUJUAAlMOAAJi/QACcnUAAodlAAKXUwACn0sAArItAALwEgADAAAAAxnwAANkIABpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAAGrPf/76UD/+t8DAAGiswAA0Vr//sX6//5dTf//l1P//y6mAAQAAAAFuXMAAnQNAAGiswAG444AEFsAAAGisw==","cmti12":"AXMAEgAAAH8AKQAQAAoAOwBNAAkAAAAHm7uIQADAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADmEsCsACDAAAAcwFQAFsAAABTAyAAawMwAGMCgABzAiAAYwBwAHMCIABjAbAAR2OkID9h0ABDYdAAi2HQAJNh0AAIwOAADOAwAC9AAAAvQYAALkEAAC9CEAAtwcAAh0AAACQYAAA3YfAAYMDQAGDA0AAtVUAAjwKAAJsCgABziVAABMAEPAtClFwvQKAAg1yQAHtAAACD0uAAc0GAAAtClEgb51AAG+QgAC/DEABxjCAACGAAABDAFFQIQAAAL+dQAC6C0AAugtAALoLQAC6C0AAuotAALoLQAC6C0AAuotAALoLQAC6C0AAIwFAACOBQAAkgwABwhJAALSAAAC9CpGBzQXAAawAEwF8BsABjAwAAbwFUrFcCgABPArRofwEgAGsDMAAXA0AAMwLAAHcDBIBLAAUElwMwAGsDMABzAVSsVwG0qHMhUABnAETAOwJgAGMCtJBrAzAAawN0aJ8DdKhrA0SAawOUlEcDAAAL54AAL0NgAAvl4AAvQLAACsIwAAtClEQswOAAJ0CFFCTAZRQvQdRkJMDVFAtjpAAk4RAAL0DgAAqBkAAKovAAJ0IAAAdB1GSAwOAAOMDlMCzAhRQs4IUUJOEQACDCBRQcwPAADgFgADTA4AAkwgAAUMIEZCTCUAAo4RAAGMJwACzBNFigwTAAL0KgAC7CQAAuwaAAAAAAAAAQAAwAEzNAABTM3AAWZnQAGB5sABmZrAAZmbAAGmZ8ABzM4AAeZnwAIAAUACDcEAAhmbAAIzNMACMzUAAkzOwAJmaAACdCfAAo3BQAKZm0ACp1sAArUawALA9MACzM7AAtqOQALoTgAC9CgAAwACAAMB58ADBVcAAwbiAAMzNUADQmEAA3M2AAN0KEADgALAA4HoAAPajwAD6E7ABAACwAAAAAAAY45AAXGQQAG448ACAAAAAhxyAAIzNAACQWwAAnXXwAKDjkACl9cAAqefAAK7u8ACxxxAAu2CwAMAAAAAAAA//3GQQAAxxwAAMzQAADjjwABjjkAArjjAAMccAADHHEABAAAAAAAAAAAdgwAAJmZAACajAAApmUAAOZnAADsFwAA93gAAPrIAAELKQABDaUAARJ8AAEtgwABMkAAATJBAAFSfQABVgsAAWdZAAFtCAABduMAAXfxAAGDaQABhbAAAYtgAAGT6AABmd8AAaHtAAGmZwABp9EAAajEAAGxfQABszEAAbjkAAG8NAAByWQAAdUhAAHa0QAB7BgAAe7vAAHxyAAB8rkAAfSfAAH6TwACJewAAiqpAAItgwACMzMAAko7AAJVVQACZmUAAnQNAAKEvAACiIgAApmZAAKyoQAC7vAAAwAAAAMX5QADYLcAaQAMAGYACwBsAA0AJ4AAAD+AAAAhgAAAKYAAgF2AAABpAA4AbAAPACeAAAA/gAAAIYAAACmAAIBdgAAAbIABgEyAAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+gGyABABvgAUAZYAFAHWABQBygAUAYYAFAEGABgBPgAcAQ4AHAEeAB4BRgAcAeYAFAGWABQBvgAUAcoAFAGGABQB1gAWAQYAFAFiABwBXgAcAQYAHAFaAB4BZgAcAboAHAGyABwBygAcAdYAHAG2ABwB0gAcAaYAHAEOABwBPgAcAR4AHAGiABwBigAcAVYAHAGuABwB2gAcAd4AHAFGABwBUgAUAWYAFAFaABgBXgAYAZYAIAGGACABvgAgAZIAIAGOACABngAiAcYAIgCeABgABp9T/+//9//r8MQABmZsAAMzN//7MzP/+ZmX//5mZ//8zMwAEAAAABZmdAAJmaAABmZsABuOPABAACwABmZs=","cmti7":"AXUAEgAAAH8ALQAQAAkAOgBNAAkAAAAHdH1cygBwAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADwFcCoACXAAAAiwFgAGsAAABjAyAAewMQAHMCUACLAhAAcwCAAIsCEABzAeAAW1+UIEtdgABPXYAAo12AAKddgAAIwTAAENwwADdAAAA3QRAANkDgADdCAAA1gfAAk0AAACgYAABDXdAAcMDQAHDA0AA1UUAAmwJQAKsCUACLiWAABMAEPAtCZFw3QGAAl1zAAH9AAACXzsAAi0EQAAtCZEgf40AAH+BAADfDAACJ1EAACFwAABTAFFQIQAAAN+NAADaC0AA2gtAANoLQADaC0AA2ntAANoLQADaC0AA2ntAANoLQADaC0AAIwFAACNxQAAkcsACIhMAANRwAADdCdGCLQXAAewAEwG8B4ABzAuAAgwFkrGcCUABfAqRojwDwAHsDEAAbAzAAOwKQAIcC5IBXAAUEnwMQAHsDEACLAWSsZwHkqIsdYAB3ACTARwJQAHMCpJB7AxAAewNkaK8DZKh7AzSAewOElFMC4AAL43AAN0NQAAvhsAA3QJAACwIwAAtCZEQ0wTAAK0ClFCjAdRQ3QYRkKMDVFA9flAAo3SAAN0EwAArBUAAK3vAAK0IgAAdBhGSUwTAARME1MDTApRQ03KUUKN0gACTCJRQcwQAAEgGQADzBMAAowiAAYMIkZCzCgAAw3SAAIMKwADTBxFiwwcAAN0JwADcCQAA3AaAAAAAAAAATz0gAF5GIABeRlAAZcqwAG1PIAB0a7AAfFggAHxYUACAGnAAi2EgAIthUACS5bAAmmogAJ34cACh7rAAoe7gAKlzIACtg5AAtQgAALh8IAC8CnAAvIxwAMOPAADHhSAAyxNwAM6hsADSmAAA1o4gANoccADdqrAA4VYAAOGhAADlL1AA5ZcgAOdeUAD0L3AA9KAgAQc3cAEKxbABD4vgARNOIAElSXABKNewATTUUAAAAAAAHXXgAGJTAABuOOAAgAAAAIcccACSsQAAmjYAAJ114ACg45AApPpQAKggkACtj+AAsccgALtg4ADAAAAAAAAP/+JTAAAMceAADjjgABjjkAAaNgAAK45QADHHIABAAAAAAAAAAAZCkAAGfSAABuHgAAh7cAAMN1AADELgAAyFUAAOWVAADwWwAA8ssAAQqQAAERAgABKqsAATPpAAE2cAABQJsAAV5FAAFergABYJcAAWTHAAFqDgABcYcAAXl+AAF8VwABfMAAAX8wAAGCWQABiMUAAY9wAAGUhQABllkAAZcpAAG3ggABuOUAAbtVAAHANQAByysAAdGuAAHWjgAB9QkAAfy7AAIHUAACDjsAAg9wAAIboAACQ3IAAkZLAAJLlQACXkIAAmeJAAJ/lwACh7cAAq8QAAL34AADAAAAAyf7AAN7iQBpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAAHCpf/7DC7/+eK5AAHhIAAA8JD//pcn//4e4P//h7f//w9wAAQAAAAG1PIAAtGwAAHhIAAG444AE01FAAHhIA==","cmti8":"AXgAEgAAAH8ALgAQAAoAOwBNAAkAAAAHI9FmkACAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADuF8CsACXAAAAiwFQAG8AAABnAyAAfwMwAHcCUACLAiAAdwBwAIsCIAB3AdAAW2OkIE9hoABTYaAAn2GgAKdhoAAIwRAAEOAwADdAAAA3QUAANgDwADdCAAA1gfAAm0AAACgYAABHYeAAdMDQAHTA0AA1VTAAowJQAK8CUACLiVAABMAEPAtChFw7QIAAl1ywAIdAAACXztAAi0FAAAtChEgf51AAH+RAADfDEACJkEAACGAAABTAFFQIQAAAN+dQADZC4AA2QuAANkLgADZC4AA2YuAANkLgADZC4AA2YuAANkLgADZC4AAIwGAACOBgAAkgwACIhLAANSAAADdCdGCLQYAAfwAEwHMB0AB3AvAAgwFUrGsCUABjArRokwEAAH8DMAAbA0AAPwLAAI8C9IBfAAUEqwMwAH8DMACLAVSsawHUqIshUAB7ACTASwJgAHcCtJB/AzAAfwN0aLMDdKh/A0SAfwOUlFcC8AAL54AAO0NgAAvlwAA3QKAACsJAAAtChEQ0wRAAK0CVFCjAVRQ3QaRkKMDVFA9jpAAo4SAAN0EQAAqBkAAKowAAK0IQAAdBpGSUwRAASMEVMDTAlRQ04JUUKOEgACTCFRQcwOAAEcFgAEDBEAAowhAAZMIUZCzCkAAw4SAAIMKgADTBdFi0wXAAN0JwADbCMAA2wbAAAAAAAAARjkAAFREYABURIAAW0ogAGJPwABpmcAAcFsgAHBbQABz3gAAfmaAAH6q4ACFbEAAjHHgAIzM4ACQFuAAk3egAJN3wACafUAAmn2gAKGDQACoiKAAqIjgAKwtoACzM2AAtpQAALo5AAC93gAAwT7AAMSfYADIRGAAy+lgAM9KIADQ46AA0qrAANLvIADUfUAA4LYgAOJuIADyRMAA8maAAPXHoAD2C4ABDn1AARIiQAEY48AAAAAAABxxwABgw8AAbjjgAIAAAACHHIAAk2CgAJ114ACg46AApPpgAKggoACrrsAAru7gALHHIAC7YKAAwAAAAAAAD//gw8AADHHAAA444AAUREAAGOOgACuOQAAxxwAAMccgAEAAAAAAAAAABsFgAAg44AAIWyAACPpAAA2C4AANsGAADtggAA9OgAAPsGAAEE/AABErQAASIiAAEzNAABSIgAAUiKAAFNggABUYwAAWZoAAF0oAABdgoAAXl0AAGAtgABgNgAAYFqAAGJwgABk+oAAZiwAAGavgABnHAAAZ9KAAGhbAABru4AAbjkAAG/bgABzgYAAdDeAAHbBAAB2wYAAeZmAAHpPgAB8RIAAgceAAITMgACFsAAAh9KAAIjjgACS2AAAk4GAAJXeAACbRYAAnbAAAKDjgACj6QAArCkAALz6gADAAAAAyDaAANvpABpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAAG2wv/7nHD/+oFqAAHBbAAA4Lb//q7u//4+lP//j6T//x9KAAQAAAAGJPwAAqIiAAHBbAAG444AEY48AAHBbA==","cmti9":"AXEAEgAAAH8AKQAQAAkAOgBNAAkAAAAHvGqRuQCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADsEsCoACDAAAAdwFQAFsAAABTAxAAawMwAGMCUAB3AiAAYwBwAHcCIABjAaAAR1+UID9dsABDXbAAi12wAJNdsAAIwOAADNxAAC9AAAAvQXAALgEAAC9CAAAtgcAAh0AAACAYAAA7XfAAYMDQAGDA0AAtVTAAjwJQAJsCUAB3iVAABMAEPAtChFwzQKAAg1ywAHNAAACDzsAAd0FwAAtChEgb40AAG+AgAC/DAAB1kCAACFwAABDAFFQIQAAAL+NAAC5CsAAuQrAALkKwAC5CsAAuXrAALkKwAC5CsAAuXrAALkKwAC5CsAAIwGAACNxgAAkcwAB0hLAALRwAAC9CdGB3QYAAawAEwF8BoABjAuAAbwFUrFcCUABPAqRofwEQAGsDMAAXAyAANwLQAHsC5IBLAAUElwMwAGsDMAB3AVSsVwGkqHcdUABnADTAPwJQAGMCpJBrAzAAawNkaJ8DZKhrAySAawOElEcC4AAL43AAM0NQAAvh4AAvQJAACsJAAAtChEQswOAAI0CFFCDAVRQvQbRkIMDVFAtflAAg3SAAL0DgAAqBkAAKnvAAI0IQAAdBtGSAwOAAPMDlMCzAhRQs3IUUIN0gABzCFRQYwPAADcFgADjA4AAgwhAAUMIUZCTCYAAo3SAAGMKQACzBRFigwUAAL0JwAC7CMAAuwdAAAAAAAAAQylQAFCYAABXT1AAXgawAGVLkABrdVAAbtEAAHjkAAB5SSAAf5tQAIZSsACHHOAAifUgAI0KAACTwVAAmniwAKEwAACk0nAAq4nAAK6esACyQSAAteOQALj4cAC8DVAAv6/AAMNSQADGZyAAyTywAMl8AADKCZAAy01AANbqsADZ1wAA57UAAOf7wADrELAA655AAQLZIAEGe5ABDKVQAAAAAAAbp5AAX06QAG444ACAAAAAhxxwAJEvcACddeAAoOOQAKT6UACnu3AAq0mwAK7u4ACxxyAAu2CwAMAAAAAAAA//306QAAxxwAAOOOAAEJgAABjjkAArjkAAMccgAEAAAAAAAAAABw/AAAlIsAAJSyAACWHgAA4fkAAOhLAADyaQABAg4AAQ1uAAEQbAABEcUAAS9nAAE1aQABQ/UAAU1uAAFQ/AABXEkAAW0JAAF4GQABe/AAAX5bAAGDKQABhLwAAYZSAAGVcgABoVcAAaRXAAGl7AABptQAAaikAAGpFQABt04AAbjkAAHEVQAB1jwAAdyOAAHk0gAB7p4AAfAyAAH2hAAB/mwAAhqMAAIodAACKRUAAi3UAAJQRwACUxQAAl7QAAJwhAAChgIAAo45AAKUiwACsZ4AAvF3AAMAAAADHHQAA2hMAGkADABmAAsAbAANACeAAAA/gAAAIYAAACmAAIBdgAAAaQAOAGwADwAngAAAP4AAACGAAAApgACAXYAAAGyAAYBMgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPoBsgAQAb4AFAGWABQB1gAUAcoAFAGGABQBBgAYAT4AHAEOABwBHgAeAUYAHAHmABQBlgAUAb4AFAHKABQBhgAUAdYAFgEGABQBYgAcAV4AHAEGABwBWgAeAWYAHAG6ABwBsgAcAcoAHAHWABwBtgAcAdIAHAGmABwBDgAcAT4AHAEeABwBogAcAYoAHAFWABwBrgAcAdoAHAHeABwBRgAcAVIAFAFmABQBWgAYAV4AGAGWACABhgAgAb4AIAGSACABjgAgAZ4AIgHGACIAngAYAAa9p//vNa//6vFkAAa3VAADW6//+vaD//lIr//+Ui///KRUABAAAAAXgawAChMAAAa3VAAbjjgAQylUAAa3V","cmtt10":"AMAAEgAAAH8AAgAQAAwAAQACAAAAAAAH3+o8eACgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADqAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABOwAAATsAAAFQAAABWwAAAdAAAAHQAAABwAAAAdAAAAGwAAAB0AAAAQoAAAHQAAABUAAAAVAAAAGIAAAB0AAAAdAAAAHkAAABKAAAAdABAAHQAAAB0AAAAfYAAAH2AAAB0AAAAdAAAAH1AAAB9QAAAWAAAAFyAAABGQAAAXIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWQAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdkAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBwAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFbAAAB0AAAAdAAAAHbAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFbAAABWwAAAVAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFbAAABUAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAhmYgAAAAAAAgAAAAOC2AAGOOMABqZlAAbjjgAIVVYACH0mAAiqqwAI23IACOOOAAkMgwAJDjoACccdAAqqqwALHHIAAAAA//zfSP/+tgr//xxyAADjjgABVVMAAVVVAAGFrQABxx0AAjjjAAMccwADjjoAAAAAgGAADoBgAA8AAAAAAAhmYgAAAAAAAAAAAAbjjgAQzMMACGZi","cmtt12":"AMEAEgAAAH8AAgAQAA0AAQACAAAAAAAH34a1VADAAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADmAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB1AAAAdQAAAHQAAABPAAAATwAAAFQAAABXAAAAdAAAAHQAAABwAAAAdAAAAGwAAAB0AAAAQsAAAHQAAABUAAAAVAAAAGJAAAB0AAAAdAAAAHlAAABKQAAAdABAAHQAAAB1AAAAfcAAAH3AAAB0AAAAdAAAAH2AAAB9gAAAWAAAAFyAAABGgAAAXIAAAEQAAAB9gAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWgAAAZMAAAFBAAABkwAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdoAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH2AAAB9gAAAfYAAAHQAAABCAAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFcAAAB0AAAAdAAAAHcAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFcAAABXAAAAVAAAAFQAAABoAAAAVAAAAFQAAABUAAAAVAAAAFcAAABUAAAAfYAAAH2AAAB9gAAAdAAAAHQAAAAAAAAAAg7vAAAAAAAAc44AAOEvQAGOOMABpzpAAbjjwAIVVcACGrgAAiqrAAI2hQACNtxAAj+GQAJDjkACcccAAqqqwALHHEAAAAA//zVzP/+o8P//xL3/////QAA448AAVVTAAFVVQABfDAAAccdAAI45AADHHMAA445AAAAAIBgAA6AYAAPAAAAAAAIO7wAAAAAAAAAAAAG448AEHd4AAg7vA==","cmtt8":"AMAAEgAAAH8AAgAQAAwAAQACAAAAAAAH30PKcwCAAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADuAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABOwAAATsAAAFQAAABWwAAAdAAAAHQAAABsAAAAdAAAAHAAAAB0AAAAQoAAAHQAAABUAAAAVAAAAGIAAAB0AAAAdAAAAHkAAABKAAAAdABAAHQAAAB0AAAAfYAAAH2AAAB0AAAAdAAAAH1AAAB9QAAAWAAAAFyAAABGQAAAXIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWQAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdkAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBwAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFbAAAB0AAAAdAAAAHbAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFbAAABWwAAAVAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFbAAABUAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAiACAAAAAAAAiceAAOAAAAGOOQABrSeAAbjjgAIVVYACIgkAAiqqgAI23AACPHIAAkOOAAJIiAACcccAAqqqgALHHIAAAAA//ztgv/+wQj//yqsAADjjgABVVQAAVVWAAGT5AABxxwAAjjkAAMccgADjjgAAAAAgGAADoBgAA8AAAAAAAiACAAAAAAAAAAAAAbjjgARABAACIAI","cmtt9":"AL8AEgAAAH8AAgAQAAsAAQACAAAAAAAH36ROAACQAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADsAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABOgAAAToAAAFQAAABWgAAAdAAAAHQAAABsAAAAdAAAAHAAAAB0AAAAQkAAAHQAAABUAAAAVAAAAGHAAAB0AAAAdAAAAHkAAABJwAAAdABAAHQAAAB0AAAAfUAAAH1AAAB0AAAAdAAAAH1AAAB9QAAAWAAAAFyAAABGAAAAXIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWAAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdgAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBgAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFaAAAB0AAAAdAAAAHaAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFaAAABWgAAAVAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFaAAABUAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAhmYAAAAAAAAgl8AAOBlQAGOOQABq/iAAbjjgAIVVUACH0lAAiqqwAI23AACO0LAAkOOQAJHHAACcccAAqqqwALHHIAAAAA//zoxf/+tgn//yXuAADjjgABVVUAAY8rAAHHHAACOOQAAxxyAAOOOQAAAACAYAAOgGAADwAAAAAACGZgAAAAAAAAAAAABuOOABDMwAAIZmA=","cmu10":"AT8AEgAAAH8AKQAQAAoABwBNAAkAAAAHEyBQ4gCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNVQAAAAAAAAAAAAAAAAAAAAAAAADqFMAAACHAAAAfwAAAGcAAABfAAAAdwAAAG8AAAB/AAAAbwAAAH8AAABvAAAAT2BkIEdgUABLYFAAi2BQAJNgUAAIwFAAEOAAADdAAAA3QAAANkAAADdAAAA1gAAAd0AAACgYAABDYAAAbMAAAGzAAAA1VAAAjwAAAJsAAAB/iAAABMAEPAtABFw3QAAAh1wAAFdAAACHzAAAf0AAAAtABEgf5AAAH+QAADfAAAB90AAACGAAABTABFQIQAAAN+QAADaAAAA2gAAANoAAADaAAAA2oAAANoAAADaAAAA2oAAANoAAADaAAAAIwAAACOAAAAkgAAB8hAAANSAAADdABGB/QAAAdwAEwGsAAABvAAAAewAErGMAAABbAARogwAAAHcAAAAbAAAAOwAAAH8ABIBTAAUElwAAAHcAAAB/AASsYwAEqH8gAABzAATARwAAAG8ABJB3AAAAdwAkaJ8AJKh3AASAdwA0lE8AAAAL5AAAN0AAAAvkAAA3QAAACsAAAAtABEQ0wFAAK0AFFCjABRQ3QFRkKMAFFA9gZAAo4AAAN0BQAArAUAAK4AAAK0AAAAdAVGSEwFAARMBVMDTABRQ04AUUKOAAACTABRQcwAAAEgBQADzAUAAowAAAXMAEZCzAUAAw4AAAIMAQADTARFigwEAAN0AAADbAAAA2wAAAAAAAAAARxxgAFVVUABVVWAAXHHQAGOOMABqqqAAcccgAHHHMAB1VWAAgAAAAIIiMACHHIAAjjjgAJHHIACVVWAAlVWAAJxx0ACjjjAAqqqwAK444ACxxyAAtVVgALjjoAC8cdAAwAAAAMOOUADHHIAAyqqwAM444ADRxzAA1VVgANccgADjjlAA9VVQAPVVYAD444AA+OOgARHHMAEVVWABHHHQAAAAAAAbBbAAXeuAAG444ACAAAAAhxyAAJFZ0ACVVWAAnXXgAKDjoACk+lAAqhUwAK7u4ACxxyAAu2CwAMAAAAAAAA//3euAAAxx0AAOOOAAFVVgABjjoAArjjAAMccAADHHIABAAAAAAAAAAAMzMAADjjAABmZgAAccgAAKT7AACqqwBpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAACqq//7jjr/+nHIAAHHHQAA447//qqq//444///jjj//xxyAAAAAAAGOOMAAqqrAAHHHQAG444AEccdAAHHHQ==","cmvtt10":"ATgAEgAAAH8AGgAOAAoABQBYAAoAAAAHwqDVmQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVlRUAAAAAAAAAAAAAAAAAAAAAADqEKAAABegAAAWoAAAEqAAABKgAAAUoAAAFKAAABagAAAUoAAAFqAAABSgAAAPoBEKDqAAAA6gAAAXoAAAF6AAAAFAAAADSQAACqAAAAqgAAAKkAAACqAAAAqAAAAUoAAABwgAAAugAAAUQAAAFkAAAApmAAAYoAAAGaAAABbDAAABQAEAAaABFwqgAAAXoAAACtUAABfVAAAWoAAAAaABEgXUAAAF1AAAClAAABayAAABFwAABEABFQEQAAAK1AAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAFAAAABRwAAASkAABYxAAAIKQAACKABGBKgAAAUoAFME6AAABSgAAAVoAE1EqAAABGgASQWoAAAFKAAAASgAVcKoAAAFaABKhCgAVIYoAAAFKAAABagATUSoAEeFqcAABSgAUwOoAAAFKABLhSgAAAUoAUkGaAFJBSgASoUoAkvEKAAAALUAAAKoAAAAtQAAAqgAAABoAAAAaABEQlAAUgOoAFCB0ABQA6gAAAHQAAAA6ARAgpJBVYOoAE6AaAAAAOpAAANoAEZAaAAABdAAToOQAE6CkABQg5JAUIMSQAABUAAAAZAAAAFcAFKDkABSw1ABRkUQAUaDUAAAA1JBR8HQAAACkANFhlADAAKoAAACqAAAAqgAAAAAAAAAASqqAAEwWsABSIgAAWZlgAGiIUABqBqAAd3cwAH7usACCqmAAhmYgAIZmMACN3YAAjd2gAJVVAACczIAApEPgAKu7YACzMtAAuqpQAMIhsADJmTAA0RCgAN//gADu7mABDMwwAAAAAAAZmaAAY44wAGpmUABuOOAAhVVgAIqqsACNtyAAkMgwAJDjoACccdAAp9JQAKqqsACxxyAAAAAP/830gAALYIAADjjgABVVMAAVVVAAHHHQACOOMAAxxzAAOOOgAAAAAAADu7AABrhQAAd3gAATBbAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/7VVj/+t3gAAEwWwAB3d3//xES//+IiP/+mZr//iIjAAB3eAAA7u4AAAAAAAWZlgACzMsAAd3dAAbjjgAQzMMAAd3d","lasy10":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWVHHUAwCgAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAADqBjMAAAZEAAAGMwAABkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACZQAAAmUAAAAAAAAAAAAAAAAAAAAAAAAEUAAABCIAAAUiAAAHIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxEAAAgRAAAGMwAABjMAAAAAAAAABVVWAAgAAgAKqq0AC447AAv0ogAMccoADKqzABAAAwAAAAAABd64AAcccwAIoCUACizwAAru7gALHHIAAAAA//3euP//HHMAAKAlAAIs8AADHHAAAAAAAAQAAAAAAAAAAAAAAAAAAAAG444AEAADAAAAAAAK0voABky6AAcZhgAK+agABYR4AAabNQAFzmgABJ9KAAJmZgAD9JoABi2AAADMzQAmPXAAECj2AAQAAA==","lasy5":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWUwZDhQBQAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAAD0BzMAAAdlAAAHMwAAB2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACVAAAAlQAAAAAAAAAAAAAAAAAAAAAAAAGQAAABiIAAAMiAAAEIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABREAAAgRAAAHMwAABzMAAAAAAAAACHHNAAvHJgAOn1AADuOaAA8cgAAQOPMAEVVmABXHMwAAAAAABletAAfjkwAJnVoACu7wAAsccwALglYAAAAA//5Xrf//45MAAZ1aAAMccwADglYAAAAAAAQAAAAAAAAAAAAAAAAAAAAG440AF45NAAAAAAAOzcoABjMNAAgQ7QAQZ2MACIKzAAgOkAAGdPYABLYNAAMzMwAGZmYAB+lAAAGZmgAfrhMAFrhTAAQAAA==","lasy6":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWZm+lawBgAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAADyBzMAAAdlAAAHMwAAB2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACVAAAAlQAAAAAAAAAAAAAAAAAAAAAAAAGQAAABiIAAAQiAAAFIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxEAAAgRAAAHMwAABzMAAAAAAAAABxxwAAo44AANVVAADW/jAA3aIAAOXssAD2hFABOOMAAAAAAABj0oAAehLQAJaGUACu7wAAsccwALO70AAAAA//49KP//oS0AAWhlAAMccAADO70AAAAAAAQAAAAAAAAAAAAAAAAAAAAG440AFHHAAAAAAAANANAABkb9AAfCQAAN0WUABt6tAAgMKAAGttMABJe1AAKqqwAFVVUABpewAAFVVQAfu7sAFZmbAAQAAA==","lasy7":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWZMCAkQBwAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAADwBzMAAAdUAAAHMwAAB1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACZQAAAmUAAAAAAAAAAAAAAAAAAAAAAAAFQAAABSIAAAQiAAAGIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxEAAAgRAAAHMwAABzMAAAAAAAAABmmpAAldeQAMUUkADNgyAA1NOQANXYAADkkpABI46QAAAAAABiUwAAdxyQAJNfcACu7wAAr3rgALHHIAAAAA//4lMP//cckAATX3AAL3rgADHHIAAAAAAAQAAAAAAAAAAAAAAAAAAAAG444AErryAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","lasy8":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWIgJifACAAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAADuBzMAAAdEAAAHMwAAB0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACZQAAAmUAAAAAAAAAAAAAAAAAAAAAAAAFUAAABSIAAAQiAAAGIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxEAAAgRAAAHMwAABzMAAAAAAAAABaqwAAiACAALVWAADC2IAAxHKAAMxygADTjwABEAEAAAAAAABgw8AAdOPAAJApAACrKiAAru7gALHHIAAAAA//4MPP//TjwAAQKQAAKyogADHHAAAAAAAAQAAAAAAAAAAAAAAAAAAAAG444AEQAQAAAAAAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","lasy9":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWLzJp9QCQAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAADsBzMAAAdEAAAHMwAAB0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACZQAAAmUAAAAAAAAAAAAAAAAAAAAAAAAEUAAABCIAAAUiAAAGIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxEAAAgRAAAHMwAABzMAAAAAAAAABXtAAAg44AAK9oAAC+BgAAwN6QAMt1kADMpAABBxwAAAAAAABfTpAAcykAAI0MkACm83AAru7gALHHIAAAAA//306f//MpAAANDJAAJvNwADHHIAAAAAAAQAAAAAAAAAAAAAAAAAAAAG444AEHHAAAAAAAAKWQsABo4kAAcyfAAK2gAABW3rAAevlQAGzAcABJe0AAHHHAAC0J4ABaE0AADjjgAqfScAEC2EAAQAAA==","lasyb10":"AIIAEgABAD0ACQAHAAYAAQAAAAAAAAAWykLGKACgAAANTGFUZVggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABExBU1kAAAAAAAAAAAAAAAAAAAAAAADqBzMAAAdlAAAHMwAAB2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAERAAACVAAAAlQAAAAAAAAAAAAAAAAAAAAAAAAGQAAABiIAAAQiAAAFIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxEAAAgRAAAHMwAABzMAAAAAAAAABiIgAAkzMAAMREAADH0oAAzu9gANSfAADk+gABJmYAAAAAAABkH+AAeT6AAJXnAACvpQAAsccgALJY0AAAAA//5B/v//k+gAAV5wAAMccAADJY0AAAAAAAQAAAAAAAAAAAAAAAAAAAAHHHIAEmZgAAAAAAAL8ogABshuAAeVOwAMGTYABgAtAAabNQAFzmgABJ9KAAJmZgAE8pAABi2AAADMzQAmPXAAECj2AAQAAA==","lcmss8":"AUYAEgAAAH8ANQAPAAgABQBOAAgAAAAHS3RFbwCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUxDTVNTAAAAAAAAAAAAAAAAAAAAAADuF6AAADCgAAAsoAAAGaAAACSgAAAhoAAAKaAAACygAAApoAAALKAAACmgAAAYsBEKFbAAABWwAAAusAAALrAAAAEwAAACNgAAE7AAABOwAAATYAAAE7AAABNwAAAfsAAADgQAABKwAAApMAAALDAAABNTAAAxoAAAM6AAACzSAAABMAEABrABFxOwAAAwtQAAE+MAADDjAAAqsAAABLABEgznAAAM5wAAE+AAACzGAAAEFgAACDABFQQQAAAT5wAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAAAQwAAAENgAABkYAACwhAAARRgAAEbABGCSwAAAfoAFCI6AAAB6gAAAnoAE0HKAAABqgASMkoAAAIaAAAAOgAU0QoAAAJqABKRegAUgvoAAAIaAAACugATQdoAEdK6YAACKgAAAWoAAAKKABLSCgAAAfoAUjMqAFIx+gASkfoAkuG6AAAAXnAAATsAAABecAABOwAAAEsAAABLABEREwAT8UsAE5DjAAABSwAAAOMAAAB7ARAhQ2AUwUsAAAAbAAAAK2AAASsAEZAbAAAC0wAAAUMAAAEzABORQ2ATkUNgAACTAEAAswAAAKkAFAFDABQQ8wBAAlMAUZDzAAAA82BR4NMAAAEzANFjQwDAATsAAAE7AAABOwAAAAAAAAAARxygAFAAQABRx0AAWOOgAFo5AABaqsAAYcdAAGqqwABqquAAc45AAHqqwAB8ceAAicdAAI45AACOOSAAk45gAJccoACXHMAAoAAgAKAAQACo48AAscdAALVVgAC6quAAvHIAAL45IADDjmAAxxygAMjjwADMcgAAzjkgAM8cwADQAEAA0OPAANHHYADVVYAA1VWgANccwADjjoAA5VWAAOccoADwAEAA9xygAPjjwAD44+ABAcdgAQVVoAEKquABEABAASccwAEzjoABQABAAAAAAAAY44AAbgAAAIVVYACOOOAAlxyAAKaqwACn/+AAqOOAAKtuAACvHIAAsccgALHHQAC4ACAAw45AAAAAD//fxwAACOOgABHHIAAfHIAAI44AACOOQAA1VUAAAAAAAARxwAAIAAAACOOgABY44AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+442//s44AABY44AAjjk//9xxv/+VVQAAI46//3HHAAAAAAABqqsAANVVgACOOQACFVWABQABAACOOQ=","lcmssb8":"AUkAEgAAAH8AOAAOAAkABQBOAAgAAAAHxAkKZQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkxDTVNTQgAAAAAAAAAAAAAAAAAAAADuGXAAADJwAAAvcAAAG3AAACdwAAAkcAAAK3AAAC9wAAArcAAAL3AAACtwAAAaoBEKF6AAABegAAAwoAAAMKAAAAEwAAACNgAAFqAAABagAAAWYAAAFqAAABaAAAAhoAAADwQAABOgAAArMAAALzAAABZTAAAzcAAANnAAAC+yAAABMAEABaABFxagAAAypQAAFtMAADTTAAAsoAAABKABEgzYAAAM2AAAFtAAAC/HAAAEFAAACTABFQQQAAAW2AAAFqAAABagAAAWoAAAFqAAABagAAAWoAAAFqAAABagAAAWoAAAFqAAAAQwAAAENAAABUYAAC8hAAAURgAAFKABGCegAAAhcAFCJXAAACBwAAApcAE0HnAAABxwASMncAAAJHAAAANwAU0RcAAAKHABKRlwAUgxcAAAJHAAAC1wATQfcAEdLXQAACNwAAAYcAAAKnABLSJwAAAhcAUjNXAFIyFwASkhcAkuHXAAAAbYAAAWoAAABtgAABagAAAEoAAABKABERMwAT8VoAE5DzAAABWgAAAQMAAAB6ARAhU2AUwVoAAAAaAAAAKmAAASoAEZAaAAAC4wAAAVMAAAFjABORU2ATkVNgAACDAEAAswAAAKkAFAFTABQQ4wBAAmMAUZDjAAAA42BR4NMAAAFjANFjcwDAAWoAAAFqAAABagAAAAAAAAAATHIAAFY5IABcccAAYcdAAGRx4ABqquAAa45gAHRyAAB1VYAAfxygAIbvIACI48AAlxygAJqrAACccgAAoHIgAKKq4ACkciAApVWgAKY5IACuOUAAsABAALjj4ADDjoAAxxzAAM1VoADQAEAA0OPgANccwADaqwAA3VWgAODj4ADjjoAA5OPgAOXHYADmOSAA5xzAAOjkAADqqwAA7VWgAPqrAAD7jqAA/jlAAQcc4AEPHOABEACAARHHgAEaqyABIOPgASVVwAErjqABLu+AAUVVwAFSqyABYACAAAAAAAAkccAAdRygAInHIACOOOAAm45AAKfHIACvHIAAsOOgALEk4ACxxyAAuAAgALxyAADDjkAAAAAP/+bjoAAI46AAEccgAB8cgAAjjgAAI45AAC45AAA1VUAAAAAAAATjoAAIzMAACccgABhx4AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+zjg//q44gABhx4AAnHI//9jjv/+KqoAAJxy//2OOAAAAAAAB1VYAAOqrAACccgACJxyABYACAACccg=","lcmssi8":"AXYAEgAAAH8ANgAPAAgANABOAAgAAAAHnQUCAQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkxDTVNTSQAAAAAAAAAAAAAAAAAAAADuF6C0ADGgAAAtoEwAGaAAACSgrAAhoFAAKqCkAC2geAAqoCwALaB4ACqgXAAYsM0KFbCMABWwgAAvsIwAL7CAAAEwOAACNjgAE7AAABOwdAATYHAAE7BkABNwhAAnsAAADgQAABKwdAAqMFgALTBYABNTJAAyoKQANKCkAC3STAABMAEABrA9FxOwAAAxtUAAE+OYADHjFAArsDQABLBFEgznsAAM5xgAE+CgAC3GGAAEFgAACDANFQQQAAAT57AAE4CYABOAmAATgJgAE4CYABOAmAATgJgAE4CYABOAmAATgJgAE4CYAAQwCAAENggABkYcAC0hQAARRgAAEbCpGCSwVAAfoAFCI6BcAB6gpAAooE00HKCkABqgtSMkoKQAIaBQAAOgtU0QoFAAJqClKRegAUgwoFAAIaBQACygTTQdoF0dLKZMACKgXAAWoGgAKaC1LSCgUAAfoMUjM6DFIx+gtSkfoMkuG6CkAAXnwAATsLwABedIABOwYAAEsEQABLBFEREwBT8UsCE5DjCQABSwgAAOMFgAB7DNAhQ2OUwUsBAAAbCMAAK2gAASsJEZAbCAAC4wEAAUMBAAEzBtORQ2KTkUNjgACTC4AAswiAAKkH1AFDA5QQ8wuAAlMLkZDzCcAA82uR4NMJwAEzCVFjUwlAATsHQAE7B0ABOwMAAAAAAAAARxygAFAAQABRx0AAWOOgAFo5AABaqsAAYcdAAGqqwABqquAAc45AAHqqwAB8ceAAicdAAI45AACOOSAAk45gAJccoACXHMAAoAAgAKAAQACo48AAscdAALVVgAC6quAAvHIAAL45IADDjmAAxxygAMjjwADMcgAAzjkgAM8cwADQAEAA0OPAANHHYADVVYAA1VWgANccwADa0aAA446AAOVVgADnHKAA8ABAAPccoAD448AA+OPgAQHHYAEFVaABCqrgARAAQAEnHMABM46AAUAAQAAAAAAAGOOAAG4AAACFVWAAjjjgAJccgACmqsAAp//gAKjjgACrbgAArxyAALHHIACxx0AAuAAgAMOOQAAAAA//38cAAAjjoAARxyAAHxyAACOOAAAjjkAANVVAAAAAAAADFCAABTrAAAVIAAAFSIAABjnAAAY54AAGOsAABp1gAAkCIAAJSAAACbigAAo7YAAKkAAAC+VgAA3JgAAOfeAADq0gABA7oAARKmAAEThgABGP4AASneAAEwbAABMVQAATHuAAE3FgABPWoAAT3sAAFAKAABTjQAAVOuAAFVfAABZgIAAXAeAAF5CgABjJAAAaZ4AAGwJAABtzoAAcO6AAHFTgAB464AAe/6AAIK1gACDGwAAgyQAAJAKAACmRAAApqkAALTiAADwCgAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+442//s44AABY44AAjjk//9xxv/+VVQAAI46//3HHAADZqAABqqsAANVVgACOOQACFVWABQABAACOOQ=","msam10":"AOUAEgAAAH8AFQAQABAAAgAAAAAAAAAWl7PuzQCgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADqC4AAAAuAAAALgAAAC4AAAAuAAAACUAAAB5cAAAeXAAALZgAAC2YAABFDAAARQwAAC4AAAAiQAAANkAAABpAAABFDAAARQwAAEYoAABGKAAAMmwAADJsAAAObAAADmwAAA5sAAAObAAASQwAAEkMAABGKAAARigAABJAAAASQAAAREQAAFBEAABFQAAARUAAAC6wAAAusAAALrAAAC70AABJQAAAHkAAAB5AAAAtmAAAL5gAAC6wAAAusAAALvQAAC3gAAAt4AAALeAAAC3gAAAt4AAALvQAAC3gAAAuKAAABUAAABDIAAAtmAAALZgAAC3gAAAu9AAALeAAAC4oAAAtUAAALVAAAC1QAAAtUAAALeAAAC3gAAA+bAAAEvQAACFAAAAtUAAALVAAABDIAAAQyAAAIUAAACFAAAAhQAAALkAAAC94AAAveAAAL/wAAC/8AAAmABAAReAAAEXgAAAyQAAAGmwAABpsAAAa7AAAIkAAACJAAAAhEAAALkAAAC5sAAAubAAALVAAAC1QAAAdQAAAHUAAAClAAAApQAAALkAAAC5AAAAu9AAALvQAAC1UAAAtVAAATVAAAE1QAAASQAAAEkAAAEJkAAA6ZAAAHkAAAC5YAAAsRAAALMgAABBAAAAQQAAAMkAAABMAAAAUrAAALZgAAC2YAAAtmAAAAAAAAAARmZgAEccgABqqtAAgAAgAI45AACcceAAqqrQALjjsADAACAAwqqwAMccoADVVYAA445gAOb30ADxxzAA8liAAQAAMAEccgABVVWgAWOOgAAAAAAAYLzgAG444AB2ydAAhbugAIzDoACU/IAAovyAAKzM0ACxNrAAusXQAMF+UADTM4AA4rygAOqq0AD7iWAAAAAP/93rj//2ydAAA3dQAAkBIAAPhQAAFPyAABxx0AAi/IAAJ9SgAC5JAAAxxwAAOsXQAEF+UABivKAAe4lgAAAAAAAGZmAAAAAAAAAAAAAAAAAAAAAAAG444AEAADAAAAAAAK0voABky6AAcZhgAK+agABYR4AAabNQAFzmgABJ9KAAJmZgAD9JoABi2AAADMzQAmPXAAECj2AAQAAA==","msam5":"AOcAEgAAAH8AFwAQABAAAgAAAAAAAAAWIokceABQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAAD0EKAAABCgAAAQoAAAEKAAABCgAAACQAAACXUAAAl1AAAQdgAAEHYAABNDAAATQwAAEKAAAAxwAAAScAAACHAAABNDAAATQwAAE4cAABOHAAARdwAAEXcAAAR3AAAEdwAABHcAAAR3AAAUQwAAFEMAABOHAAAThwAABXAAAAVwAAATEQAAFhEAABNAAAATQAAAELwAABCsAAAQrAAAEM0AABRAAAAJcAAACXAAABB2AAAK5gAAEKsAABCrAAAQzQAAEIgAABCIAAAQiAAAEIgAABCIAAAQvQAAEIgAABCaAAABQAAAAzIAABBmAAAQZgAAEIgAABC9AAAQiAAAEJoAABBUAAAQVAAAEFQAABBUAAAQiAAAEIgAAA93AAAFmQAAB0AAABBUAAAQVAAAAzIAAAMyAAAHQAAAB0AAAAdAAAAQcAAAEN4AABDeAAAQ/wAAEP8AAA5wBAATdwAAE3cAABFwAAAIdwAACHcAAAiXAAAMcAAADHAAAAxDAAAQcAAAEHcAABB3AAAQVAAAEFQAAAlAAAAJQAAADUAAAA1AAAAQcAAAEHAAABC9AAAQvQAAEGUAABBlAAAVVAAAFVQAAAVwAAAFcAAADoYAAAuGAAAJcAAAEKYAABARAAAQMgAABTAAAAUwAAARcAAABaAAAAYnAAAQdgAAEHYAABB2AAAAAAAAAAcOPQAHVVoACgANAAocegALxyYADOOaAA4AAwAOAA0ADxyAAA+OTQAP0o0AEDjzABCOOgAQk/oAERxzABFVZgAScdoAE45NABXHMwAYABoAHHHmAB2OWgAAAAAABletAAbjjQAICCYACLHGAAmdWgAKWvoACuOTAAt3nQAMPe0ADRydAA2iFgAOCLoAEFaTABFVZgASO5AAAAAA//5XrQAAQuYAAIfTAAGdWgACLUMAAp+DAAMfCgADglYABAAAAAR73QAE9KAABV/mAAXxXQAIVpMACjuQAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAbjjQAXjk0AAAAAAA7NygAGMw0ACBDtABBnYwAIgrMACA6QAAZ09gAEtg0AAzMzAAZmZgAH6UAAAZmaAB+uEwAWuFMABAAA","msam6":"AOgAEgAAAH8AGAAQABAAAgAAAAAAAAAWDEXqNgBgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADyD6AAAA+gAAAPoAAAD6AAAA+gAAACQAAACXUAAAl1AAAPZgAAD2YAABRDAAAUQwAAD6AAAApwAAATcAAAB3AAABRDAAAUQwAAFHkAABR5AAASeQAAEnkAAAN5AAADeQAAA3kAAAN5AAAVQwAAFUMAABR5AAAUeQAABXAAAAVwAAAUEQAAFxEAABRAAAAUQAAAD7wAAA+8AAAPvAAAD80AABVAAAAJcAAACXAAAA9mAAAL5gAAD6sAAA+rAAAPzQAAD4kAAA+JAAAPiQAAD4kAAA+JAAAPzQAAD4kAAA+aAAABQAAABDIAAA9mAAAPZgAAD4kAAA/NAAAPiQAAD5oAAA9UAAAPVAAAD1QAAA9UAAAPiQAAD4kAABF5AAAFmgAACEAAAA9UAAAPVAAABDIAAAQyAAAIQAAACEAAAAhAAAAPcAAAD94AAA/eAAAP/wAAD/8AAAxwBAAUeAAAFHgAABJwAAAHeQAAB3kAAAeZAAAKcAAACnAAAApDAAAPcAAAD3kAAA95AAAPVAAAD1QAAAlAAAAJQAAADUAAAA1AAAAPcAAAD3AAAA/NAAAPzQAAD2UAAA9lAAAWVAAAFlQAAAVwAAAFcAAAEHcAAA53AAAJcAAAD5YAAA8RAAAPMgAABSAAAAUgAAAScAAABbAAAAYpAAAPZgAAD2YAAA9mAAAAAAAAAAXaEwAGEvUACKqoAAlVUAAKOOAAC0JbAAxL1QAM45AADVVQAA5eywAOhLUADsj7AA8GowAPaDUAD2hFABAl1QAQJfAAEHHAABF7OwATjjAAFaElABnHEAAa0IsAAAAAAAY9KAAHEvMACAg9AAiwyAAJaGUAChjAAArzyAALO70ADCXrAAyTcAANGvgADY8wAA/lTQAQccAAEbilAAAAAP/+PSgAAAg9AAB/AAABaGUAAftlAAJDQwACqB0AAtedAAMsFQAEFEgABLUjAAUC4wAFjzAAB+VNAAm4pQAAAAAAAHd4AAAAAAAAAAAAAAAAAAAAAAAG440AFHHAAAAAAAANANAABkb9AAfCQAAN0WUABt6tAAgMKAAGttMABJe1AAKqqwAFVVUABpewAAFVVQAfu7sAFZmbAAQAAA==","msam7":"AOgAEgAAAH8AGAAQABAAAgAAAAAAAAAWuHXuNwBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADwDqAAAA6gAAAOoAAADqAAAA6gAAACUAAACJYAAAiWAAAOZgAADmYAABRDAAAUQwAADqAAAAqQAAATkAAAB5AAABRDAAAUQwAAFJgAABSYAAAQmAAAEJgAAAOYAAADmAAAA5gAAAOYAAAVQwAAFUMAABSYAAAUmAAABZAAAAWQAAAUEQAAFxEAABRQAAAUUAAADrsAAA67AAAOuwAADs0AABVQAAAIkAAACJAAAA5mAAAM5gAADroAAA66AAAOzQAADpgAAA6YAAAOmAAADpgAAA6YAAAOzAAADpgAAA6pAAABUAAABDIAAA52AAAOdgAADpgAAA7MAAAOmAAADqkAAA5UAAAOVAAADlQAAA5UAAAOmAAADpgAABGYAAAFqQAACVAAAA5UAAAOVAAABDIAAAQyAAAJUAAACVAAAAlQAAAOkAAADt4AAA7eAAAO/wAADv8AAAuQBAAUhwAAFIcAABCQAAAHmAAAB5gAAAeoAAAKkAAACpAAAApDAAAOkAAADpgAAA6YAAAOVAAADlQAAAhQAAAIUAAADVAAAA1QAAAOkAAADpAAAA7MAAAOzAAADmUAAA5lAAAWVAAAFlQAAAWQAAAFkAAAEocAAA+HAAAIkAAADqYAAA4RAAAOMgAABSAAAAUgAAAQkAAABcAAAAYoAAAOZgAADmYAAA5mAAAAAAAAAAVFFQAFbbkAB+OSAAjbcAAJXXkACllpAAtVWQAMUUkADFlpAA1NOQANvwIADccgAA4WxQAOSSkADxxuAA9FGQAPtuAAD9dZABBBCQASOOkAFDDJABggiQAZHHkAAAAAAAYlMAAG444AB9lSAAh2MAAJDMIACcgeAAoMFQAKlUAACwWwAAvnoAAMksAADTIZAA92kAAPz0AAEThHAAAAAP/+JTD//9lSAAB2MAABNfcAAaibAAH52QACp3IAAwoQAAPr5wAEdacABKqLAAUc2wAFR1kAB3aQAAk4RwAAAAAAAHFgAAAAAAAAAAAAAAAAAAAAAAAG444AErryAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","msam8":"AOYAEgAAAH8AFgAQABAAAgAAAAAAAAAWr1pEswCAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADuDJAAAAyQAAAMkAAADJAAAAyQAAACUAAAB4cAAAeHAAAMZgAADGYAABJDAAASQwAADJAAAAmAAAAPgAAABoAAABJDAAASQwAAEokAABKJAAANiQAADYkAAAOJAAADiQAAA4kAAAOJAAATQwAAE0MAABKJAAASiQAABIAAAASAAAASEQAAFREAABJQAAASUAAADKwAAAy8AAAMvAAADM0AABNQAAAHgAAAB4AAAAxmAAAM5gAADKwAAAysAAAMzQAADHgAAAx4AAAMeAAADHgAAAx4AAAMzQAADHgAAAyaAAABUAAABDIAAAxmAAAMZgAADHgAAAzNAAAMeAAADJoAAAxUAAAMVAAADFQAAAxUAAAMeAAADHgAABCJAAAEqwAACFAAAAxUAAAMVAAABDIAAAQyAAAIUAAACFAAAAhQAAAMgAAADO4AAAzuAAAM/wAADP8AAAqABAASeAAAEngAAA2AAAAGiQAABokAAAapAAAJgAAACYAAAAlDAAAMgAAADIkAAAyJAAAMVAAADFQAAAdQAAAHUAAAC1AAAAtQAAAMgAAADIAAAAzNAAAMzQAADGUAAAxlAAAUVAAAFFQAAASAAAAEgAAAEYgAAA6IAAAHgAAADJYAAAwRAAAMMgAABCAAAAQgAAANgAAABNAAAAUpAAAMZgAADGYAAAxmAAAAAAAAAASccgAEuOgABxVcAAiACAAJcdAACmOYAAtVYAALuOgADEcoAAy7yAANE+wADTjwAA4quAAO45gADxyAAA8qrAAPnHwAEQAQABLjoAAWqsAAF5yIAAAAAAAGDDwABsACAAewcgAIbV4ACPMQAAmadAAKmwYACwWwAAtx0AAMJVYADFz0AAzTDAANMzgADy4aABC26AAAAAD//gw8//+wcgAAbV4AAQKQAAFsYAABuZwAAeOQAAKbBgADEO4AA4YSAAQAAAAESY4ABNMMAAcG1gAItugAAAAAAABszgAAAAAAAAAAAAAAAAAAAAAABuOOABEAEAAAAAAACyQsAAaKlAAHUbAAC/xaAAZGUAAGpYwABaWMAASOOAACAAAABAAAAAZVVgABAAAAF8zMABIzNAAEAAA=","msam9":"AOYAEgAAAH8AFgAQABAAAgAAAAAAAAAW07GMBwCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADsDJAAAAyQAAAMkAAADJAAAAyQAAACYAAAB5gAAAeYAAAMdwAADHcAABJTAAASUwAADJAAAAmQAAAOkAAABpAAABJTAAASUwAAEpoAABKaAAANmwAADZsAAAObAAADmwAAA5sAAAObAAATUwAAE1MAABKaAAASmgAABJAAAASQAAASEQAAFREAABJgAAASYAAADLwAAAy8AAAMvAAADM0AABNgAAAHkAAAB5AAAAx3AAAM5wAADLwAAAy8AAAMzQAADIkAAAyJAAAMiQAADIkAAAyJAAAMzQAADIkAAAybAAABYAAABEIAAAx3AAAMdwAADIkAAAzNAAAMiQAADJsAAAxlAAAMZQAADGUAAAxlAAAMiQAADIkAABCbAAAEvAAACGAAAAxlAAAMZQAABEIAAARCAAAIYAAACGAAAAhgAAAMkAAADO4AAAzuAAAM/wAADP8AAAqQBAASiQAAEokAAA2QAAAGmwAABpsAAAa7AAAJkAAACZAAAAlUAAAMkAAADJsAAAybAAAMZQAADGUAAAdgAAAHYAAAC2AAAAtgAAAMkAAADJAAAAzNAAAMzQAADHYAAAx2AAAUZQAAFGUAAASQAAAEkAAAEZkAAA+ZAAAHkAAADKcAAAwRAAAMQgAABCAAAAQgAAANkAAABNAAAAU7AAAMdwAADHcAAAx3AAAAAAAAAAR4GQAEkWAABtoQAAg44AAJIsAACgygAAr2gAALoTAAC+BgAAxUrgAMnB4ADMpAAA20IAAOngAADqqcAA8ixAAPYesAEHHAABJFgAAV7QAAFtbgAAAAAAAF9OkABmUgAAbjjgAHjLcACGSMAAjaLAAJXQQACmTVAAsXMgALTwAAC/9OAAx3QAANMzkADsegABA3MAAAAAD//fTp//+MtwAASRkAAIAAAADQyQABMccAAYHAAAHTwAACbMUAAvPHAAMpMgAD/04ABHdAAAaYwAAINzAAAAAAAABpPgAAAAAAAAAAAAAAAAAAAAAABuOOABBxwAAAAAAAClkLAAaOJAAHMnwACtoAAAVt6wAHr5UABswHAASXtAABxxwAAtCeAAWhNAAA444AKn0nABAthAAEAAA=","msbm10":"AOMAEgAAAH8AEwAQABAAAgAAAAAAAAAWiLYWyACgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADqDbsAAA27AAANzgAADc4AAA2ZAAANmQAADZkAAA2ZAAANuwAADbsAAA3OAAANzgAADXYAAA12AAANzgAADc4AAA2qAAANqgAADaoAAA2qAAAN/wAADf8AAA27AAANuwAADbwAAA28AAANvAAADbwAAA0RAAANzgAADogAAA6oAAANdgAADXYAAA27AAANuwAADc0AAA3NAAANuwAADbsAAA12AAANdgAADc4AAA3OAAAGqwAAAqsAAAFlAAADZQAACYAAAAyAAAAJgAAADIAAAA3OAAANzgAADZkAAA2ZAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAANZQAADWUAAAiAAAAMgAAAC4AAAAyAAAAMgAAAC4AAAAmAAAANgAAADYAAAAOAAAAGhwAADYAAAAuAAAAPgAAADIAAAA2HAAAJgAAADYcAAAyAAAAIgAAAC4AAAAyAAAAMgAAAEIAAAAyAAAAMgAAAC4AAABHQAlwS0AAAEdACXhLgAAAAAAAACIAAAAqAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAiAAAANMgAAC4AAAAWAAAALgAAADVQAAA1UAAANZQAADWUAAAFlAAADZQAADWUAAA0RAAANQwAADWUAAA28AAANvAAAECAAABAgAAANZQAACyAEAAiAAAAHgAAAB4AAAAQgAAAAAAAAAAOOOgAEccgABjjlAAbd4AAHHHMACAACAAik/QAI45AACcceAAo45QAKqq0AC447AAxxygAOOOYADxx1ABAAAwAeOOoAJVVdAAAAAAAF3rgABuOOAAdrgwAHut4ACKAlAAlOgAAKLPAACwWwAAtK0AAL25YADB26AAyzhgANMzgADmZlAA62UwAAAAD//d64//9rg///ut4AAKAlAAFOgAACLPAAAqqrAAMccAADStAAA7ctAAQF0wAEL8sABI6aAATYCAAGtlMAAAAAAACk+wAEAAAABMzQAAJmYAABmaAAB2hNABAAAAABmaAACtL6AAZMugAHGYYACvmoAAWEeAAGmzUABc5oAASfSgACZmYAA/SaAAYtgAAAzM0AJj1wABAo9gAEAAA=","msbm5":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAW/fYhFwBQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAAD0FssAABbLAAAW7gAAFu4AABapAAAWqQAAFqkAABapAAAWywAAFssAABbuAAAW7gAAFocAABaHAAAW7gAAFu4AABapAAAWugAAFqkAABa6AAAW/wAAFv8AABbLAAAWywAAFswAABbMAAAWzAAAFswAABYRAAAW7gAAF3YAABeWAAAWhwAAFocAABbLAAAWywAAFt0AABbdAAAWywAAFssAABaHAAAWhwAAFu4AABbuAAAMmAAAA5gAAAJlAAAGZQAAEHAAABVwAAAQcAAAFXAAABbuAAAW7gAAFqkAABapAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAWZQAAFmUAAA9wAAALcAAACXAAAAtwAAALcAAACXAAAAdwAAANcAAADXAAAAFwAAAEdQAADXAAAAlwAAAScAAAC3AAAA11AAAHcAAADXUAAAtwAAAFcAAACXAAAAtwAAALcAAAFHAAAAtwAAALcAAACXAAABmwAlwasAAAGbACXhrQAAAAAAAAD3AAABFwAAAAAAAAAAAAAAAAAAAAAAAAFXAAAA9wAAAWMgAAE3AAAApwAAATcAAAFlQAABZUAAAWZQAAFmUAAAJlAAAGZQAAFmUAABYRAAAWQwAAFmUAABbMAAAWzAAAGCAAABggAAAWZQAAEyAEAAVwAAAOcAAADnAAAAggAAAAAAAAAAY42gAGOOYAB1VaAAf/8wAI44AACY5AAAnHDQAKVV0ACqqaAAqqswALjiYAC8cmAAxxswAMqrYADOOaAA4ADQAOjkYADxxaAA8cgAAP/+YAEDjzABFVZgATjk0AFcczACeOZgAwcgAAAAAAAAZXrQAG440ACDymAAidpgAJnVoACpaqAAsFsAALglYADAAAAAzzqgANRG0ADfFdAA5wNgAO7uYAES9aAAAAAP/+V60AADymAACdpgABnVoAApaqAAMccwADglYABAAAAATzqgAFVaAABdoAAAYIugAGeg0ABu7mAAkvWgAAAAAAAOOQAAQAAAAEzNAAAmZgAAGZoAAHaEAAEAAAAAGZoAAOzcoABjMNAAgQ7QAQZ2MACIKzAAgOkAAGdPYABLYNAAMzMwAGZmYAB+lAAAGZmgAfrhMAFrhTAAQAAA==","msbm6":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWTxoEKwBgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADyFcwAABXMAAAV7gAAFe4AABWpAAAVqQAAFakAABWpAAAVzAAAFcwAABXuAAAV7gAAFYcAABWHAAAV7gAAFe4AABWqAAAVuwAAFaoAABW7AAAV/wAAFf8AABXMAAAVzAAAFcwAABXMAAAVzAAAFcwAABURAAAV7gAAF3cAABeXAAAVhwAAFYcAABXMAAAVzAAAFd0AABXdAAAVzAAAFcwAABWHAAAVhwAAFe4AABXuAAAKmAAAApgAAAFlAAAFZQAAD3AAABNwAAAPcAAAE3AAABXuAAAV7gAAFakAABWpAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAVZQAAFWUAAA1wAAAOcAAAC3AAAA5wAAAOcAAAC3AAAAlwAAAQcAAAEHAAAANwAAAEdgAAEHAAAAtwAAAUcAAADnAAABB2AAAJcAAAEHYAAA5wAAAGcAAAC3AAAA5wAAAOcAAAFnAAAA5wAAAOcAAAC3AAABmwAlwasAAAGbACXhrgAAAAAAAADXAAABFwAAAAAAAAAAAAAAAAAAAAAAAAE3AAAA1wAAAVMgAAEnAAAAhwAAAScAAAFVQAABVUAAAVZQAAFWUAAAFlAAAFZQAAFWUAABURAAAVQwAAFWUAABXMAAAVzAAAGCAAABggAAAVZQAAEiAEAAZwAAAMcAAADHAAAAcgAAAAAAAAAAUJewAGEvUABjjdAAf/+AAIJesACOOFAAjjjQAJL2UACccTAAo44AAKqqAACwl4AAtCWwALji0ADEvVAAxxuwAM0JMADVVQAA5eywAPHGMAD2hFAA//8AARezsAE44wACQl2wAscbAAAAAAAAY9KAAG440ACBCAAAht+AAJaGUACj0YAAsFsAALO70ADAAAAAyc+wANGvgADY8wAA4THQAOZeAAEJVVAAAAAP/+PSgAABCAAABt+AABaGUAAj0YAAKqqAADLBUABAAAAASE1QAEtSMABQK7AAWPMAAGEx0ABmXgAAiVVQAAAAAAANCYAAQAAAAEzNAAAmZgAAGZoAAHaEUAEAAAAAGZoAANANAABkb9AAfCQAAN0WUABt6tAAgMKAAGttMABJe1AAKqqwAFVVUABpewAAFVVQAfu7sAFZmbAAQAAA==","msbm7":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWcXnAgQBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADwFLsAABS7AAAU3gAAFN4AABSIAAAUiAAAFIgAABSIAAAUuwAAFLsAABTeAAAU3gAAFHcAABR3AAAU3gAAFN4AABSZAAAUqgAAFJkAABSqAAAU/wAAFP8AABS7AAAUuwAAFLwAABS8AAAUvAAAFLwAABQRAAAU3gAAF3cAABeHAAAUdwAAFHcAABS7AAAUuwAAFM0AABTNAAAUuwAAFLsAABR3AAAUdwAAFN4AABTeAAAJiAAAAogAAAFlAAAEZQAADnAAABNwAAAOcAAAE3AAABTeAAAU3gAAFIgAABSIAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAUZQAAFGUAAAxwAAAPcAAADXAAAA9wAAAPcAAADXAAAApwAAAScAAAEnAAAANwAAAFdgAAEnAAAA1wAAAVcAAAD3AAABJ2AAAKcAAAEnYAAA9wAAAIcAAADXAAAA9wAAAPcAAAFnAAAA9wAAAPcAAADXAAABmwAlwasAAAGbACXhrgAAAAAAAADHAAABBwAAAAAAAAAAAAAAAAAAAAAAAAE3AAAAxwAAAUMgAAEXAAAAdwAAARcAAAFFQAABRUAAAUZQAAFGUAAAFlAAAEZQAAFGUAABQRAAAUQwAAFGUAABS8AAAUvAAAGCAAABggAAAUZQAAESAEAAhwAAALcAAAC3AAAAYgAAAAAAAAAARxyQAFbbkABjjgAAdlmQAH//sACBx1AAhhiQAI44kACV15AAnHFwAKIIcACllpAAqqpQALVVkAC44yAAvTUAAMUUkADHHAAA1NOQAOSSkADxxpAA//9wAQQQkAEjjpACH36QAp12kAAAAAAAYlMAAG444AB+blAAhA1QAJNfcACfUVAAsFsAAMFOIADHWnAAyv2QANMhkADbFFAA3zqQAOZmUAEBCrAAAAAP/+JTD//+blAABA1QABNfcAAfUVAAKqqQADChAABBTiAAR1pwAEr9kABRzbAAVHWQAFsUUABfOpAAgQqwAAAAAAAMMOAAQAAAAEzNAAAmZgAAGZoAAHaEcAEAAAAAGZoAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","msbm8":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWcMpwzACAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADuFLsAABS7AAAU3gAAFN4AABSYAAAUmAAAFJgAABSYAAAUuwAAFLsAABTeAAAU3gAAFHYAABR2AAAU3gAAFN4AABSqAAAUqgAAFKoAABSqAAAU/wAAFP8AABS7AAAUuwAAFLwAABS8AAAUvAAAFLwAABQRAAAU3gAAFocAABaXAAAUdgAAFHYAABS7AAAUuwAAFM0AABTNAAAUuwAAFLsAABR2AAAUdgAAFN4AABTeAAAImQAAApkAAAFlAAAEZQAADYAAABKAAAANgAAAEoAAABTeAAAU3gAAFJgAABSYAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAUZQAAFGUAAAuAAAARgAAADoAAABGAAAARgAAADoAAAAyAAAATgAAAE4AAAAOAAAAHhgAAE4AAAA6AAAAVgAAAEYAAABOGAAAMgAAAE4YAABGAAAAJgAAADoAAABGAAAARgAAAF4AAABGAAAARgAAADoAAABnAAlwawAAAGcACXhrgAAAAAAAAC4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAEoAAAAuAAAAUMgAAEIAAAAaAAAAQgAAAFFQAABRUAAAUZQAAFGUAAAFlAAAEZQAAFGUAABQRAAAUQwAAFGUAABS8AAAUvAAAGCAAABggAAAUZQAAECAEAAmAAAAKgAAACoAAAAUgAAAAAAAAAAPHIAAEuOgABjjiAAaceAAHTkAAB45AAAf//gAIgAgACOOMAAk47AAJcdAACccaAApjmAAKqqgACtx8AAtVYAALjjYADEcoAAxxxAANOPAADxxuAA8cgAAP//wAEQAQACAckAAnqtAAAAAAAAYMPAAG444AB7xOAAgStgAJApAACba8AAqyogALBbAAC+v0AAxJjgAM0wwADUBUAA2L0AAOZmQAD5Q0AAAAAP/+DDz//7xOAAAStgABApAAAba8AAKupgADHHAAA9foAAQAAAAESY4ABL7cAATnPAAFTXIABYvQAAeUNAAAAAAAALjkAAQAAAAEzNAAAmZgAAGZoAAHaEoAEAAAAAGZoAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","msbm9":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWqgC1YQCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADsFLsAABS7AAAU3gAAFN4AABSZAAAUmQAAFJkAABSZAAAUuwAAFLsAABTeAAAU3gAAFHYAABR2AAAU3gAAFN4AABSqAAAUqgAAFKoAABSqAAAU/wAAFP8AABS7AAAUuwAAFLwAABS8AAAUvAAAFLwAABQRAAAU3gAAFYgAABWoAAAUdgAAFHYAABS7AAAUuwAAFM0AABTNAAAUuwAAFLsAABR2AAAUdgAAFN4AABTeAAAIqgAAAqoAAAFlAAAEZQAADYAAABKAAAANgAAAEoAAABTeAAAU3gAAFJkAABSZAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAUZQAAFGUAAAuAAAARgAAAD4AAABGAAAARgAAAD4AAAAyAAAATgAAAE4AAAAOAAAAHhwAAE4AAAA+AAAAWgAAAEYAAABOHAAAMgAAAE4cAABGAAAAJgAAAD4AAABGAAAARgAAAF4AAABGAAAARgAAAD4AAABnQAlwa0AAAGdACXhrgAAAAAAAAC4AAAA6AAAAAAAAAAAAAAAAAAAAAAAAAEoAAAAuAAAAUMgAAEIAAAAaAAAAQgAAAFFQAABRUAAAUZQAAFGUAAAFlAAAEZQAAFGUAABQRAAAUQwAAFGUAABS8AAAUvAAAGCAAABggAAAUZQAAECAEAAmAAAAKgAAACoAAAAUgAAAAAAAAAAOngAAEkWAABjjkAAZlIAAHD8sAB08AAAgAAAAIOOAACOOOAAjmtAAJIsAACcccAAoMoAAKgZAACqqrAAr2gAALjjkAC+BgAAxxxwAMykAADp4AAA8ccgAQAAAAEHHAAB8PwAAmXsAAAAAAAAX06QAG444AB5NXAAfmOQAI0MkACX/0AApvNwALBbAAC45pAAwAXAAMd0AADOzkAA0wBwAOZmQADyHAAAAAAP/99On//5NX///mOQAA0MkAAX/0AAJvNwACqqsAAxxyAAOOaQAEAFwABGQgAASKYAAE7OQABS5LAAchwAAAAAAAAK3UAAQAAAAEzNAAAmZgAAGZoAAHaEwAEAAAAAGZoAAKWQsABo4kAAcyfAAK2gAABW3rAAevlQAGzAcABJe0AAHHHAAC0J4ABaE0AADjjgAqfScAEC2EAAQAAA==","cmb10":"AU4AEgAAAH8AMAAPAAoABQBYAAkAAAAH0gueJgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNQgAAAAAAAAAAAAAAAAAAAAAAAADqF7AAACqwAAAmsAAAHrAAABuwAAAnsAAAILAAACawAAAgsAAAJrAAACCwAAAWwBEKFMAAABTAAAAqwAAAKsAAAAEwAAAEOAAAD8AAAA/AAAAPgAAAD8AAAA9wAAAiwAAACwYAABXAAAAgMAAAJjAAAA9VAAArsAAALrAAACbSAAABMAEAA8ABFxPAAAAqxwAAD+MAACrjAAAmwAAAAcABEgbpAAAG6QAAD+AAACZkAAABGAAABTABFQEQAAAP6QAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAEwAAABOAAAA0gAACYhAAANSAAADcABGCbAAAAisAFMH7AAACCwAAAksAE1GrAAABmwASQpsAAAJ7AAAAmwAVcQsAAAKLABKhewAVIssAAAJ7AAACGwATUcsAEeIbgAACOwAUwUsAAAHbABLiWwAAAisAUkL7AFJCKwASoisAkvGLAAAALpAAATwAAAAukAAA/AAAABwAAAAcABEQ4wAUgUwAFCCzABQBTAAAAMMAAABMARAg84BVYUwAE6AcAAAATIAAASwAEZAcAAACowAToUMAE6DzABQhQ4AUIROAAACjAAAAgwAAAHkAFKFDABSxIwBRkgMAUaEjAAABI4BR8LMAAADzANFi0wDAAPwAAAD8AAAA/AAAAAAAAAAARxyAAEeuMABOOOAATjkAAFVVYABjjlAAY+lQAGT6YABlsIAAbYMAAHHHMAB3d4AAeOOwAHxx4ACAACAAhERgAIccgACHHKAAi2DQAI45AACPSgAAlVWAAJmZ0ACcceAAoLZQAKfSsACqqtAAru8gALHHUACzM2AAtgugALjjsADAADAAwWxQAMJ9UADERIAAxPqAAMccoADIiLAAyIjQAMk+0ADVVYAA59KwAPMzYAEAADABBESAAQiI0AAAAAAAJ9KAAGQf4ABxxyAAgAAAAIqqsACVVWAAmJqgAKHHIACiijAApPpQAK+lAACxxyAAvBbQAMAAAAAAAA//5B/gAAxx0AAOOOAAFVVgABjjoAArjjAAMccAADHHIABAAAAAAAAAAAOOMAAGZmAABxyAABxx0AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AAoAhgAKALQB7gC0AfIBgADyAYAA+AGGAAwBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AFAGWABQB1gAUAcoAFAGGABQBBgAYAT4AEAEOABABHgASAUYAEAHmABABlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAHSABAB1gAQAYoAEAHmABAB2gASAd4AEAGiABIBrgAQAZYAHAG+ABwB4gAQAZIAHAGOABwBxgAcAdoAEAGqACAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAGgFeABoBqgAeASYAH//uOOP/6mZYAAccd//8ccv//jjj//qqq//444wAAccgAAOOOAAAAAAAFVVYAAqqrAAHHHQAHHHIAEAADAAHHHQ==","cmbsy10":"ARcAEgAAAH8ALAAPABAAEAAHAAcAAAAW4MmMDACgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNQlNZAAAAAAAAAAAAAAAAAAAAAADqH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnMAAAIUwAACFMAAB9kAAAfZAAAH90AAB/dAAAf3QAAH90AAB/dAAAf3QAAHyEAAB91AAAflwAAH5cAACmXAAAplwAAH5cAAB+XAAApIQAAKSEAAAjLAAAIywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAfMAAAA4AAACkwAAAVlwAAFZcAACjMAAAozAAAAcsAAAEhAAALwAAAC8AAABUwAAAI5gAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGE7AFBAqwDQQesAkCCbAhAxmwKQMOuBEDJrABAwywHQAWuDkFHbABARewAQQrsAEEI7A1AiGwCQMYsCUCJLgBAyewAQIPsBUEDbA9ABGwKQISsCUAKrAlAhqwMQQUuCUCG7AZBBWAAAAVgAAAFYAAABWAAAAVgAAAEMAAABDAAAAF7gAABe4AAAXuAAAF7gAACO4AAAjuAAAE7gAABO4AAALuAAAI7gAACO4AABDuAAAI7gAAAssAACUfAAAgsAAAJbAAAAfMLAAVgAAAFYAAAB/dAAAf3QAABswAAAXMAAAFzAAAEMwAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAFHHAABYLWAAcn0AAILYAACGwVAAkZmgAJMzAACbYIAAnOxgAKOOAACkc7AApOaAAK59AACyRlAAs+kAALb3gAC8w4AAv3KwAMI0MADERAAAx4lgAMnG0ADPUtAA0GggANEUsADRh1AA1J8AAN8KMADkX1AA5PoAAOZmIADn0jAA67TQAO/0UADwbOAA9VUAAPzFgAD9VOABBbAAASZmAAErKbABYLkwAAAAAAAPXDAAZB/gAHHHIAB446AAeT6AAICRsACGQgAAjjkAAJXnAACiIgAAr6UAALHHIACyWNAAwAAAAAAAD//kH+//+OOv//k+gAAAkbAABkIAAA444AAV5wAAGOOgACEvYAAiIgAAMccAADHHIAAyWNAAQAAAAPCj0AAAAAAABcMwAAgtgAAMEbAADkSwABJAAAAU1dAAFNegABU54AAVpzAAGgtgACC2AAAlo2AAJupgADAAIABEcdgDCAAIAwgAGAMIACgDCAA4AwgASAMIAFgDCABgAAgtgAAQWwAAGIiAACC2AAAo44AAMREAADk+gABAAAAAAAAAAAAAAAAAAAAAcccgASZmAAAAAAAAvyiAAGyG4AB5U7AAwZNgAGAC0ABps1AAXOaAAEn0oAAmZmAATykAAGLYAAAMzNACY9cAAQKPYABAAA","cmbsy5":"ARgAEgAAAH8ALQAPAA8AEQAHAAcAAAAWBW6DpgBQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAAD0IMsAAAJTAAAgywAACEIAACDLAAAIUwAAIMsAACDLAAAgywAAIMsAACDLAAAgywAAIMsAACq6AAAIUwAACFMAACB1AAAgdQAAIO0AACDtAAAg7QAAIO0AACDtAAAg7QAAICEAACCGAAAgmQAAIJkAACqZAAAqmQAAIJkAACCZAAAqIQAAKiEAAAi6QAAIugAAKiEAACq6AAAqugAAIHUAACohAAAqIQAAEboAABG6AAAqIQAAKroAACq6AAAgMAAAA2AAACowAAAVmQAAFZkAACm6AAApugAAAboAAAEhAAALsAAAC7AAABUwAAAI1AAAHLAAABywAAAgsAAAILAAABGwAAAioAEGEqAFBAqgCQQhoA0CCaAdAxigKQMOpxEDJ6ABAwygFQAWpzkFHaABARegAQQsoAEEI6AxAh+gDQMboCUCJacBAyigAQIPoBkEDaA9ABCgKQIUoCUAK6AlAhqgLQQTpyUCGaAhBBVgAAAVYAAAFWAAABVgAAAVYAAAEbAAABGwAAAF3AAABdwAAAXcAAAF3AAACNwAAAjcAAAE3AAABNwAAALcAAAI3AAACNwAABHcAAAI3AAAAroAACQeAAAeoAAAJqAAAAe6NAAVYAAAFWAAACDtAAAg7QAABroAAAW6AAAFugAAEboAACC4AAAguAAAILgAACC4AAAAAAAAAAAAAAAHgtMAB8cgAAoWugALYK0AC30gAAvsFgAMqqAADU+aAA2lxgAN9JMADn3QAA6SowAOvtAADx2GAA88OgAPPoYAD/BNABAvAwAQOEYAEIh6ABDKdgAQ0wAAESHDABEmEAARcNMAEbDdABHSbQASf/MAEvo9ABMMcwATHGAAEzTWABO2dgATzAMAE93KABQDVgAUZlMAFXOKABV1rQAVsEYAGEQtABjrcAAchOYAAAAAAAFgQAAG0kMABxxzAAeOOgAIgtMACOOQAAj0ZgAJYaMACndAAAr6UAALHHMAC7uzAAwAAAAMmWMAAAAA//7SQ///jjoAAILTAADjjQAA9GYAAWGjAAGOOgACEvYAAndAAAMccwADu7MABAAAAASZYwAOn8AAAAAAAAAYnQAAYNoAAKT6AADEMwAA4dYAAQIzAAEZlgABWwMAAWuDAAGxxgACWjMAApDGAAKT5gADERAABK2AAA0cc4AwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAKT6AAFJ8wAB7u0AApPmAAM44AAD3doABILTAAQAAAAAAAAAAAAAAAAAAAAHHHMAGVVAAAAAAAAOzcoABjMNAAgQ7QAQZ2MACIKzAAgOkAAGdPYABLYNAAMzMwAGZmYAB+lAAAGZmgAfrhMAFrhTAAQAAA==","cmbsy6":"ARkAEgAAAH8ALQAPABAAEQAHAAcAAAAWIa9YWABgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADyH8wAAAJTAAAfzAAACEIAAB/MAAAIUwAAH8wAAB/MAAAfzAAAH8wAAB/MAAAfzAAAH8wAACq7AAAIUwAACFMAAB9kAAAfZAAAH+4AAB/uAAAf7gAAH+4AAB/uAAAf7gAAHyEAAB+GAAAfmQAAH5kAACqZAAAqmQAAH5kAAB+ZAAAqIQAAKiEAAAi6QAAIugAAKiEAACq6AAAqugAAH2QAACohAAAqIQAAELoAABC6AAAqIQAAKroAACq6AAAfMAAAA3AAACowAAAVmQAAFZkAACm7AAApuwAAAboAAAEhAAALsAAAC7AAABUwAAAI1QAAHLAAABywAAAfsAAAH7AAABCwAAAioAEGEqAFBAqgCQQhoA0CCaAdAxigKQMOpxEDJ6ABAwygFQAWpzkFHaABARegAQQsoAEEI6A1AiCgDQMboCUCJKcBAyigAQIPoBkEDaA9ABGgKQIToCUAK6AlAhqgLQQUpyUCGaAhBBVwAAAVcAAAFXAAABVwAAAVcAAAELAAABCwAAAF3QAABd0AAAXdAAAF3QAACN0AAAjdAAAE3QAABN0AAALdAAAI3QAACN0AABDdAAAI3QAAAroAACUfAAAeoAAAJqAAAAe7MAAVcAAAFXAAAB/uAAAf7gAABrsAAAW7AAAFuwAAELsAAB+4AAAfuAAAH7gAAB+4AAAAAAAAAAAAAAAGl7MABtv1AAj+GAAKMUsACmSAAArv4AALZH0AC/4bAAw/ywAMl7AADPf7AA0IPQANWNUADawtAA3K4wAN3LAADn71AA6kZQAOpnsADv4VAA87iAAPTSsAD6ULAA+t4wAP3VUAD/6oABAxSAAQ3IsAEVVQABFkewARaQgAEXGTABHvGwASFCMAEjuIABJL0wASl60AE3LYABN3QAATyuAAFjFFABa9+wAaR6UAAAAAAAFA2wAGsF0ABxxzAAeOOwAIMzMACMBLAAjjkAAJKeMACjoIAAr6UAALHHMACzMwAAwAAAAMSfgAAAAA//6wXf//jjsAADMzAADASwAA440AASnjAAGOOwACEvgAAjoIAAMccAADHHMAAzMwAAQAAAAESfgADr8lAAAAAAAALyMAAIDwAACZmwAAzuUAAQmDAAENdQABLPAAAVZ4AAFl1QABrBgAAlo4AAJmZQAChWgAAwtjAASLYwAMIiOAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAACZmwABMzUAAczQAAJmawADAAUAA5mgAAQzOwAEAAAAAAAAAAAAAAAAAAAABxxzABbI+wAAAAAADQDQAAZG/QAHwkAADdFlAAberQAIDCgABrbTAASXtQACqqsABVVVAAaXsAABVVUAH7u7ABWZmwAEAAA=","cmbsy7":"ARgAEgAAAH8ALQAPAA8AEQAHAAcAAAAW0ZKjnwBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADwH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACrLAAAIUwAACFMAAB9kAAAfZAAAH9wAAB/cAAAf3AAAH9wAAB/cAAAf3AAAHyEAAB+GAAAfmAAAH5gAACqYAAAqmAAAH5gAAB+YAAAqIQAAKiEAAAjLQAAIywAAKiEAACrLAAAqywAAH2QAACohAAAqIQAAEMsAABDLAAAqIQAAKssAACrLAAAfMAAAA3AAACowAAAVmAAAFZgAACnLAAApywAAAcsAAAEhAAALwAAAC8AAABUwAAAI5QAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGErAFBAqwDQQgsAkCCbAdAxiwKQMOtxEDJ7ABAwywGQAWtzkFHbABARewAQQssAEEI7A1AiGwCQMbsCUCJLcBAyiwAQIPsBUEDbA9ABGwKQITsCUAK7AlAhqwMQQUtyUCGbAhBBVwAAAVcAAAFXAAABVwAAAVcAAAEMAAABDAAAAF7QAABe0AAAXtAAAF7QAACO0AAAjtAAAE7QAABO0AAALtAAAI7QAACO0AABDtAAAI7QAAAssAACUeAAAesAAAJrAAAAfLLAAVcAAAFXAAAB/cAAAf3AAABssAAAXLAAAFywAAEMsAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAF78AABjQCAAg1pQAJWJcACZwLAAo7vgAKe4kACw0CAAtAFQALnnsAC+GCAAvuiQAMWSAADKRVAAzBbgAM4ZcADXcbAA2D6QANoEcADeRgAA4ekAAONrUADpUSAA6hKwAOvR4ADsiAAA8HUgAPsPUAECilABAqRQAQLzsAED1yABCp1wAQ2ekAEPXuABEstQARTTcAEgSeABIKqQAScCkAFLYOABUvywAYrisAAAAAAAEqawAGkvAABxxyAAeOOQAH+lAACJCrAAjjkAAI9p4ACgFOAArRrgAK+lAACxxyAAv/CQAMAAAAAAAA//6S8P//jjn///pQAACQqwAA444AAPaeAAGOOQACAU4AAhL3AALRrgADHHIAA/8JAAQAAAAO1ZUAAAAAAAA/OwAAkXkAAJfZAADWiQABFYUAASXXAAE6vgABUzcAAWHFAAGoBwACReUAAlo3AAJ9RwADB1IABHMAAAtvV4AwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAJF5AAEi8gABtGsAAkXlAALXXgADaNcAA/pQAAQAAAAAAAAAAAAAAAAAAAAHHHIAFPcSAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","cmbsy8":"ARgAEgAAAH8ALAAPABAAEQAHAAcAAAAWecSZzACAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADuH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnMAAAIUwAACFMAAB9kAAAfZAAAH90AAB/dAAAf3QAAH90AAB/dAAAf3QAAHyEAAB91AAAfmAAAH5gAACmYAAApmAAAH5gAAB+YAAApIQAAKSEAAAjLQAAIywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAfMAAAA4AAACkwAAAVmAAAFZgAACjMAAAozAAAAcsAAAEhAAALwAAAC8AAABUwAAAI5gAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGE7AFBAqwDQQesAkCCbAdAxiwKQMOtxEDJrABAwywGQAWtzkFHbABARewAQQrsAEEI7A1AiGwCQMasCUCJLcBAyewAQIPsBUEDbA9ABGwKQISsCUAKrAlAhuwMQQUtyUCGbAhBBWAAAAVgAAAFYAAABWAAAAVgAAAEMAAABDAAAAF7gAABe4AAAXuAAAF7gAACO4AAAjuAAAE7gAABO4AAALuAAAI7gAACO4AABDuAAAI7gAAAssAACUfAAAgsAAAJbAAAAfMLAAVgAAAFYAAAB/dAAAf3QAABswAAAXMAAAFzAAAEMwAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAFccoABdKAAAefTgAIthAACPd8AAmmaAAJzNIAClg2AAqAUAAK45QACxCsAAsbQAALmVgAC954AAv6VgAMJUgADKuOAAyxPgAM26AADREYAA1I2gANZd4ADckeAA3XpAAN3+YADeT4AA4n2gAO0EQADz18AA8+nAAPRyIAD1zEAA+15AAP7kIAEAHAABBVXgAQ8fYAEPk4ABFsIAATmaQAFAUsABd7EAAAAAAAARR6AAZ1xAAHHHIAB446AAfPqAAIYUoACMOWAAjjkAAJyNIACoiMAAr6UAALHHIAC7RYAAwAAAAAAAD//nXE//+OOv//z6gAAGFKAADDlgAA444AAY46AAHI0gACEvYAAoiMAAMccAADHHIAA7RYAAQAAAAO64YAAAAAAABLTgAAi2IAAKkIAADcRAABG44AATsWAAFFGgABUMgAAV64AAGk+gACLYQAAlo2AAJ3MAADBEQABGC4AArpPoAwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAItiAAEWxAABoiYAAi2IAAK46gADREwAA8+uAAQAAAAAAAAAAAAAAAAAAAAHHHIAE5mkAAAAAAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","cmbsy9":"ARYAEgAAAH8ALAAPAA8AEAAHAAcAAAAWZyQtUgCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADsH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnLAAAIUwAACFMAAB9kAAAfZAAAH9wAAB/cAAAf3AAAH9wAAB/cAAAf3AAAHyEAAB91AAAfmAAAH5gAACmYAAApmAAAH5gAAB+YAAApIQAAKSEAAAjLAAAIywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAfMAAAA4AAACkwAAAVmAAAFZgAACjLAAAoywAAAcsAAAEhAAALwAAAC8AAABUwAAAI5gAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGE7AFBAqwDQQesAkCCbAdAxiwKQMOtxEDJrABAwywGQAWtzkFHbABARewAQQrsAEEI7A1AiGwCQMZsCUCJLcBAyewAQIPsBUEDbA9ABGwKQISsCUAKrAlAhuwMQQUtyUCGrAhBBWAAAAVgAAAFYAAABWAAAAVgAAAEMAAABDAAAAF7QAABe0AAAXtAAAF7QAACO0AAAjtAAAE7QAABO0AAALtAAAI7QAACO0AABDtAAAI7QAAAssAACUeAAAgsAAAJbAAAAfLLAAVgAAAFYAAAB/cAAAf3AAABssAAAXLAAAFywAAEMsAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAFQlsABbk1AAdc5QAIaisACKoEAAlk0AAJd3AACf4VAAodpQAKhLUACqC5AAqpaQALNrAAC3cOAAuR+wALwDwADDXEAAxJ1QAMdSkADJ9AAAzVGwAM9esADVz3AA1ddAANbWQADW9VAA2shQAOU/wADrPrAA65ywAOyjwADuB7AA8qoAAPaXIAD3ZJAA/HEAAQTskAEFb8ABDUVQAS7uAAE09XABa+pQAAAAAAAQNrAAZbBwAHHHIAB445AAeudAAINFcACJMCAAjjkAAJkscACk+gAAr6UAALHHIAC2wXAAwAAAAAAAD//lsH//+OOf//rnQAADRXAACTAgAA444AAY45AAGSxwACEvcAAk+gAAMccgADbBcABAAAAA78lQAAAAAAAFSwAACGpAAAtmcAAOC5AAEgPgABS6AAAU0rAAFO4gABXFkAAaKbAAIaiwACWjUAAnJwAAMB5QAEUnyAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAACGpAABDUcAAZPrAAIajgACoTIAAyfVAAOueQAEAAAAAAAAAAAAAAAAAAAABxxyABLu4AAAAAAAClkLAAaOJAAHMnwACtoAAAVt6wAHr5UABswHAASXtAABxxwAAtCeAAWhNAAA444AKn0nABAthAAEAAA=","cmbx10":"AUwAEgAAAH8ALQAPAAoABQBYAAoAAAAHGvIiVgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADqFLAAACewAAAjsAAAG7AAABiwAAAksAAAHbAAACOwAAAdsAAAI7AAAB2wAAATwBEKEsAAABLAAAAnwAAAJ8AAAAEwAAADOAAADcAAAA3AAAANcAAADcAAAA1gAAAgwAAACQYAAA/AAAAdMAAAIzAAAA1UAAAosAAAK7AAACPSAAABMAEAAsABFxDAAAAnxwAADeMAACfjAAAjwAAAAcABEgbpAAAG6QAADeAAACOFAAABGAAABDABFQEQAAAN6QAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAEwAAABOAAAAkgAACMhAAALSAAAC8ABGCPAAAAgsAFMHLAAAB2wAAAhsAE1F7AAABawASQmsAAAJLAAAAWwAVcOsAAAJbABKhSwAVIpsAAAJLAAAB+wATUZsAEeH7gAAB6wAUwSsAAAGrABLiKwAAAgsAUkLLAFJCCwASogsAkvFbAAAAHpAAAQwAAAAekAAA3AAAABwAAAAcABEQwwAUgSwAFCCTABQBLAAAAKMAAAA8ARAg04BVYSwAE6AcAAAAPIAAARwAEZAcAAACcwAToSMAE6DTABQhI4AUIROAAACDAAAAcwAAAGkAFKEjABSxEwBRkdMAUaETAAABE4BR8JMAAADTANFiowDAANwAAADcAAAA3AAAAAAAAAAAUccAAFmZgABZ9IAAYiIAAG+k4AByfQAAdB+wAHk+gACC2AAAhu7QAIsFgACPHDAAkzMAAJgtUACY42AAmk+AAJtggACjjgAAq7uAALEQ0ACz6QAAuT5QAMFr0ADERAAAyT5QAMzMgADOOKAA0WvQANSfAADczIAA3SeAAN6ToADhxtAA4nzgAOT6AADmZiAA5sEgAOd3MAD1VQABCqpQARd3IAEmZgABK2BQATBaoAAAAAAAJ9KAAGQf4ABxxyAAgAAAAIqqsACYmqAAoccgAKIiAACiijAApPpQAK+lAACxxyAAvBbQAMAAAAAAAA//5B/gAAxx0AAOOOAAGOOgACIiAAArjjAAMccAADHHIABAAAAAAAAAAAQW0AAHXCAACC2AABvpMAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//rjkP/59KAAAb6TAAILYP/++lD//30o//53eP/99KAAAILYAAEFsAAAAAAABiIgAAMREAACC2AABxxyABJmYAACC2A=","cmbx12":"AUsAEgAAAH8ALAAPAAoABQBYAAoAAAAHwtZOoADAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADmE7AAACawAAAisAAAGrAAABewAAAjsAAAHLAAACKwAAAcsAAAIrAAABywAAASwBEKEcAAABHAAAAmwAAAJsAAAAEwAAADOAAADcAAAA3AAAANgAAADcAAAA1gAAAfwAAACQYAAA7AAAAcMAAAIjAAAA1UAAAnsAAAKrAAACLSAAABMAEAAsABFw/AAAAmxwAADeMAACbjAAAiwAAAAcABEgbpAAAG6QAADeAAACJ1AAABGAAABDABFQEQAAAN6QAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAEwAAABOAAAAkgAACIhAAALSAAAC8ABGCLAAAAfsAFMG7AAABywAAAgsAE1FrAAABWwASQlsAAAI7AAAAWwAVcPsAAAJLABKhOwAVIosAAAI7AAAB6wATUYsAEeHrgAAB2wAUwRsAAAGbABLiGwAAAfsAUkK7AFJB+wASofsAkvFLAAAAHpAAAPwAAAAekAAA3AAAABwAAAAcABEQwwAUgRwAFCCTABQBHAAAAKMAAAA8ARAg04BVYRwAE6AcAAAAPIAAAQwAEZAcAAACYwAToRMAE6DTABQhE4AUIQOAAACDAAAAcwAAAGkAFKETABSxAwBRkcMAUaEDAAABA4BR8JMAAADTANFikwDAANwAAADcAAAA3AAAAAAAAAAAUAAAAFe0MABYAAAAYAAAAGtCcABwAAAAcZmwAHWhQACAAAAAg2hQAIgAAACMAAAAkAAAAJL2kACUvbAAmAAAAKAAAACoAAAArQmAALAAAAC1CYAAvQmAAMAAAADEvbAAyEvQAMl7UADMvbAA0AAAANbQsADYS9AA2XtQANy9sADdVXAA4AAAAOEvgADhe1AA4l7QAPAAAAEEvbABES+AASAAAAEkvbABKXtQAAAAAAAkvbAAYupwAHHHEACAAAAAiqqwAJe6EACgAAAAoccQAKKKMACk+lAAr6UAALHHEAC8FsAAwAAAAAAAD//i6nAADHHAAA448AAY45AAIAAAACuOMAAxxwAAMccQAEAAAAAAAAAABAAAAAczMAAIAAAAGjjwBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+wAA//ol7AABo48AAgAA//8AAP//gAD//oAA//4AAAAAgAAAAQAAAAAAAAAGAAAAAwAAAAIAAAAHHHEAEgAAAAIAAA==","cmbx5":"AU0AEgAAAH8ALwAPAAkABQBYAAoAAAAHqy2MaABQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAAD0FaAAACmgAAAnoAAAHKAAABqgAAAloAAAH6AAACegAAAfoAAAJ6AAAB+gAAAWsBEKFLAAABSwAAAqsAAAKrAAAAEwAAAENgAADrAAAA6wAAAOcAAADrAAAA5gAAAhsAAACgUAAA+wAAAfMAAAJzAAAA5UAAAroAAALaAAACfSAAABMAEAA7ABFxCwAAAptgAADuMAACnjAAAnsAAAAbABEgfoAAAH6AAADuAAACfHAAABFgAABTABFQEQAAAO6AAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAAEwAAABNgAAA0YAACchAAAMRgAADLABGCewAAAhoAFMHqAAAB+gAAAkoAE1GaAAABigASQooAAAJaAAAAagAVcRoAAAJqABKhWgAVIsoAAAJaAAACKgATUboAEeIqYAACCgAUwToAAAHaABLiOgAAAhoAUkLqAFJCGgASohoAkvF6AAAALoAAAQsAAAAugAAA6wAAABsAAAAbABEQ0wAUgTsAFCCjABQBOwAAALMAAABLARAg42BVYTsAE6AbAAAAS2AAASsAEZAbAAACkwAToTMAE6DjABQhM2AUISNgAACTAAAAgwAAAHgAFKEzABSxIwBRkfMAUaEjAAABI2BR8KMAAADjANFi4wDAAOsAAADrAAAA6wAAAAAAAAAAb6RgAHBW0AB5mQAAefQAAIRDoACMzAAAmOLQAJry0ACfSWAArYIAALE90AC30aAAvPlgAMIhMADDMtAAxPmgAMZlYADMcNAA1sBgAN9I0ADlrzAA6ZhgAOtfoADv/tAA+k5gAP/+0AEEQwABCIcwAQqpYAEOkqABFJ4AARpOYAEdJmABH0igASIg0AEjMdABJxsAASd2AAEpPTABK19gAT3cYAFO7TABVr/QAWT4oAF//jABhEJgAAAAAAAsFtAAbSQwAHHHMACAAAAAiqrQAJ2VAAChxzAAoopgAKT6YACvpQAAsccwALu7MAC8FtAAwAAAAAAAD//tJDAADHHQAA440AAY46AAK45gADHHMAA7uzAAQAAAAAAAAAAFJ9AACUegAApPoAAhPqAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/5Bbr/+Bx9AAIT6gACk+b//rYN//9bBv/+ERP//WwaAACk+gABSfMAAAAAAAhEOgAD3doAApPmAAcccwAYRCYAApPm","cmbx6":"AVAAEgAAAH8AMQAPAAoABQBYAAoAAAAHgEXAdABgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADyF6AAACqgAAAooAAAHaAAABugAAAmoAAAIKAAACigAAAgoAAAKKAAACCgAAAWsBEKFbAAABWwAAArsAAAK7AAAAEwAAAENwAADrAAAA6wAAAOcAAADrAAAA5gAAAisAAACgUAAA+wAAAgMAAAKDAAAA5UAAAsoAAALqAAACjSAAABMAEAA7ABFxCwAAAqtgAADuMAACrjAAAosAAAAbABEgfpAAAH6QAADuAAACjIAAABFwAABTABFQEQAAAO6QAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAAEwAAABNwAAA0cAACghAAAMRwAADLABGCiwAAAioAFMH6AAACCgAAAloAE1GqAAABmgASQpoAAAJqAAAAagAVcRoAAAJ6ABKhegAVItoAAAJqAAACOgATUcoAEeI6cAACGgAUwUoAAAHqABLiSgAAAioAUkMKAFJCKgASoioAkvGKAAAALpAAAQsAAAAukAAA6wAAABsAAAAbABEQ0wAUgUsAFCCjABQBSwAAALMAAABLARAg43BVYUsAE6AbAAAAS3AAATsAEZAbAAACowAToUMAE6DjABQhQ3AUISNwAACTAAAAgwAAAHgAFKFDABSxMwBRkgMAUaEzAAABM3BR8KMAAADjANFi8wDAAOsAAADrAAAA6wAAAAAAAAAAZL2AAGUq0ABt/AAAblcwAHfwsACBqNAAiyPQAI0PUACSMVAAnlcAAKJPgACn8LAArL1QALGKMAC1NwAAtc6AALYLMAC7I7AAuyPQAMS9UADJewAA0xSwANMzAADX8IAA3MywAOZmMADrI7AA76SwAPQlsAD1GFAA+T5QAP5W0AEE+gABB1jQAQhLgAEL+DABDHGAARCXUAEQ8oABEYoAARPKgAEkvTABLjiAATxxUAFKMNABYtewAWMUUAFnWLAAAAAAACqqsABrBdAAcccwAIAAAACKqtAAnHGwAKHHMACiilAApPpQAK+lAACxxzAAszMAALwW0ADAAAAAAAAP/+sF0AAMcdAADjjQABjjsAArjlAAMccAADHHMAAzMwAAQAAAAAAAAAAEzNAACKPQAAmZsAAf8NAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/5tCj/+MzLAAH/DQACZmX//szN//9mZf/+MzP//ZmbAACZmwABMzMAAAAAAAd/CwADmZgAAmZlAAcccwAWMUUAAmZl","cmbx7":"AU4AEgAAAH8AMAAPAAkABQBYAAoAAAAHZhck2ABwAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADwFrAAACmwAAAmsAAAHLAAABqwAAAlsAAAH7AAACawAAAfsAAAJrAAAB+wAAAVwBEKFMAAABTAAAAqwAAAKsAAAAEwAAAENwAADsAAAA7AAAAOcAAADsAAAA5gAAAhwAAACgUAABHAAAAfMAAAJjAAAA5UAAArsAAALrAAACbSAAABMAEAA8ABFxDAAAApxwAADuMAACnjAAAmwAAAAcABEgfoAAAH6AAADuAAACamAAABFwAABTABFQEQAAAO6AAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAAEwAAABNwAAA0cAACYhAAAMRwAADMABGCbAAAAhsAFMHrAAAB+wAAAksAE1GbAAABiwASQosAAAJbAAAAawAVcPsAAAJ7ABKhawAVIssAAAJbAAACKwATUbsAEeIrcAACCwAUwTsAAAHbABLiOwAAAhsAUkL7AFJCGwASohsAkvF7AAAALoAAAQwAAAAugAAA7AAAABwAAAAcABEQ0wAUgTwAFCCjABQBPAAAALMAAABMARAg43BVYTwAE6AcAAAATHAAASwAEZAcAAACkwAToTMAE6DjABQhM3AUISNwAACTAAAAgwAAAHgAFKEzABSxIwBRkfMAUaEjAAABI3BR8KMAAADjANFi0wDAAOwAAADsAAAA7AAAAAAAAAAAXPOwAF0vkABlsFAAZgtQAG8i4AB6t5AAgVIAAIMjkACI1pAAk4EgAJelAACcmLAAoSRwAKWwUACqXJAAqviQAKs5sACux+AAt99wALnncADC/wAAxf5QAMoOkADPFeAA2C1wANw9sADg6gAA5ZZQAOWwUADqAZAA7mzgAPW9UAD3xXAA999wAPwjsAD8MLABAIIAAQCcAAEA3QABAvIgARLLIAEW2yABKaaQATcPcAFLYJABTgTgAVKxIAAAAAAAKaaQAGkvAABxxyAAgAAAAIqqsACbObAAoccgAKKKUACk+lAArRrgAK+lAACxxyAAvBbgAMAAAAAAAA//6S8AAAxx4AAOOOAAGOOQACuOUAAtGuAAMccgAEAAAAAAAAAABIvgAAgu4AAJF5AAHwJwBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+jDF//lCpQAB8CcAAkXl//7dDv//bof//kuV//26GwAAkXkAASLyAAAAAAAG8i4AA2jXAAJF5QAHHHIAFLYJAAJF5Q==","cmbx8":"AU0AEgAAAH8ALgAPAAoABQBYAAoAAAAHMsdAyQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADuFbAAACiwAAAksAAAHLAAABmwAAAlsAAAHrAAACSwAAAesAAAJLAAAB6wAAAUwBEKE8AAABPAAAAowAAAKMAAAAEwAAADOAAADcAAAA3AAAANcAAADcAAAA1gAAAhwAAACQYAABDAAAAeMAAAJDAAAA1UAAApsAAALLAAACTSAAABMAEAAsABFw/AAAAoxwAADeMAACjjAAAkwAAAAcABEgbpAAAG6QAADeAAACSlAAABGAAABDABFQEQAAAN6QAADZAAAA2QAAANkAAADZAAAA2QAAANkAAADZAAAA2QAAANkAAADZAAAAEwAAABOAAAAkgAACQhAAALSAAAC8ABGCTAAAAhsAFMHbAAAB6wAAAisAE1GLAAABewASQnsAAAJbAAAAWwAVcOsAAAJrABKhWwAVIqsAAAJbAAACCwATUasAEeILgAAB+wAUwTsAAAG7ABLiOwAAAhsAUkLbAFJCGwASohsAkvFrAAAAHpAAAPwAAAAekAAA3AAAABwAAAAcABEQwwAUgTwAFCCTABQBPAAAAKMAAAA8ARAg04BVYTwAE6AcAAAAPIAAASwAEZAcAAACgwAToTMAE6DTABQhM4AUIROAAACDAAAAcwAAAGgAFKEzABSxIwBRkeMAUaEjAAABI4BR8JMAAADTANFiswDAANwAAADcAAAA3AAAAAAAAAAAVxygAF93oABf0sAAaIjAAHWC4AB59OAAe7LgAIGZ4ACLYQAAj6VAAJQXIACYciAAnM0gAKGZ4ACi2GAAo0ogAKWDIAClg0AArjlAALbvYAC8FyAAv6VgAMTNQADNg0AA0RGAANXeQADaIqAA2qsAAN6UYADifaAA6lAAAOuOwADsFyAA8ACAAPBEoADz6cAA9HIgAPTNQAD2UCABBVXgARuOwAEotoABOZpAAT5nAAFDM8AAAAAAACjjgABnXEAAcccgAIAAAACKqsAAmiIAAKHHIACiikAApPpgAKiIwACvpQAAsccgALwWwADAAAAAAAAP/+dcQAAMccAADjjgABjjoAAoiMAAK45AADHHAAAxxyAAQAAAAAAAAAAEWwAAB9cAAAi2IAAeT6AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/6jjb/+ZsCAAHk+gACLYT//uk+//90nv/+Xdz//dJ8AACLYgABFsIAAAAAAAaIjAADREYAAi2EAAcccgATmaQAAi2E","cmbx9":"AUwAEgAAAH8ALgAPAAkABQBYAAoAAAAHdAyJOgCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADsFbAAACiwAAAksAAAHLAAABmwAAAlsAAAHrAAACSwAAAesAAAJLAAAB6wAAAUwBEKE8AAABPAAAAowAAAKMAAAAEwAAADNwAADcAAAA3AAAANcAAADcAAAA1gAAAhwAAACQYAAA/AAAAeMAAAJDAAAA1UAAApsAAALLAAACTSAAABMAEAAsABFxDAAAAoxwAADeMAACjjAAAkwAAAAcABEgboAAAG6AAADeAAACSVAAABFwAABDABFQEQAAAN6AAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAEwAAABNwAAAkcAACQhAAALRwAAC8ABGCTAAAAhsAFMHbAAAB6wAAAisAE1GLAAABewASQnsAAAJbAAAAWwAVcOsAAAJrABKhWwAVIqsAAAJbAAACCwATUasAEeILcAAB+wAUwTsAAAG7ABLiOwAAAhsAUkLbAFJCGwASohsAkvFrAAAAHoAAAQwAAAAegAAA3AAAABwAAAAcABEQwwAUgTwAFCCTABQBPAAAAKMAAAA8ARAg03BVYTwAE6AcAAAAPHAAASwAEZAcAAACgwAToTMAE6DTABQhM3AUIRNwAACDAAAAcwAAAGgAFKEzABSxIwBRkeMAUaEjAAABI3BR8JMAAADTANFiswDAANwAAADcAAAA3AAAAAAAAAAAVCWwAFw04ABcj+AAZPoAAHJAUAB1zlAAd31AAHz1IACGorAAiwBQAI8M4ACTQeAAl3cAAJxdIACd5+AAnhpAAJ/hIACf4UAAqEtQALC1kAC19pAAuR+wAL5gwADGyuAAyfQAAM7aIADSuSAA08BAANdEUADayFAA4wAgAOONcADklJAA6BiwAOicQADrnLAA7KPAAOz+wADuD8AA/HEAARIrcAEfIMABLu4AATPUIAE4ukAAAAAAAChL4ABlsHAAcccgAIAAAACKqrAAmUiwAKHHIACiikAApPoAAKT6UACvpQAAsccgALwWwADAAAAAAAAP/+WwcAAMccAADjjgABjjkAAk+gAAK45AADHHIABAAAAAAAAAAAQ1IAAHksAACGpAABz6UAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//q9pf/5zM4AAc+lAAIai//+8rv//3lc//5sF//95XUAAIakAAENRQAAAAAABk+gAAMn0AACGosABxxyABLu4AACGos=","cmbxsl10":"AX8AEgAAAH8ALgAPAAoANwBYAAoAAAAHjk2nFgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNQlhTTAAAAAAAAAAAAAAAAAAAAADqFLCQACiwAAAjsFQAG7AAABiwtAAksMQAHbBwACOwgAAdsDQAI7CAAB2wdAATwNkKEsBQABLAUAAowFAAKMBQAAEwBAADOAQADcAAAA3AKAANcCAADcBIAA1gaAAnwAAACQYAAA/AcAAdMHwAIzB8AA1UAAApsHAALLBwACPSVAABMAEAAsBlFxDAFAAox0AADeOcACjjhAAjwFgAAcCNEgbpvAAG6RgADeCgACOFGAABGAAABDAJFQEQAAAN6bwADaCcAA2gnAANoJwADaCcAA2gnAANoJwADaCcAA2gnAANoJwADaCcAAEwMAABODAAAkgkACMhQAALSAAAC8C5GCPAXAAgsAFMHLB0AB2wrAAhsFU1F7BwABawkSQmsBAAJLDEAAWwwVcOsKgAJbCtKhSwAVIqsMQAJLDEAB+wVTUZsHUeH7hUAB6wAUwSsGQAGrCRLiKwxAAgsNEkLbDRJCCwwSogsNUvFbCsAAHpzAAQwMgAAek4AA3ADAABwIwAAcCNEQwwAUgSwC1CCTCJQBLAUAAKMHwAA8DZAg04sVYSwAE6AcCMAAPIUAARwIkZAcBQACgwAToSMAE6DTBtQhI4PUIROEQACDCYAAcwTAAGkB1KEjAFSxEwsRkdMLEaETCUABE4sR8JMHgADTClFiswpAANwHAADcBwAA3AYAAAAAAAAAUccAAFmZgABZ9IAAYiIAAG+k4AByfQAAdB+wAHk+gACC2AAAhu7QAIsFgACPHDAAkzMAAJgtUACY42AAmk+AAJtggACjjgAAq7uAALEQ0ACz6QAAuT5QAMFr0ADERAAAyT5QAMzMgADOOKAA0WvQANSfAADczIAA3SeAAN6ToADhxtAA4nzgAOT6AADmZiAA5sEgAOd3MADszKAA9VUAAQqqUAEXdyABJmYAAStgUAEwWqAAAAAAACfSgABkH+AAcccgAIAAAACKqrAAmJqgAKHHIACiIgAAooowAKT6UACvpQAAsccgALwW0ADAAAAAAAAP/+Qf4AAMcdAADjjgABjjoAAiIgAAK44wADHHAAAxxyAAQAAAAAAAAAAA1KAAAU3QAAG4IAACQLAAAmUwAAJ9UAAEPmAABGLQAASfgAAFGOAABWSAAAYqAAAGdbAABvhgAAfYoAAIgqAACQIgAAm4MAAJ99AAC39QAAxQoAAMa+AADJBQAAy94AAM62AADSsAAA1GUAANRmAADcdQAA4OoAAOhOAADz4AAA+lUAAPsVAAENSwABFdIAASJVAAEvawABNR0AATvAAAE+XQABSQYAAVGOAAFw2AABeM4AAXtGAAF9LQABkvoAAbf1AAG/6wACAAUAAhXTAAJKKAADmKoAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//rjkP/59KAAAb6TAAILYP/++lD//30o//53eP/99KAAAILYAAEFsAACqrAABiIgAAMREAACC2AABxxyABJmYAACC2A=","cmbxti10":"AX8AEgAAAH8ANgAQAAoAOgBNAAkAAAAHRg1DlgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNQlhUSQAAAAAAAAAAAAAAAAAAAADqF7CkAC2wAAApsEgAILAAAB2wwAAssNQAIrCQACmweAAisBgAKbB4ACKwZAAb2OUIFth8ABjYfAAw2HwAMdh8AAIwUAAEOBAAENAAABDQRAAQgDwAENBsABBgcAAu0AAADQYAABXYXAAiMEAAIjBAABBUVAAvsJAAM7CQACniSAABMAEPBdCNFxPQNAAt1ygAJtAAAC3zoAAp0EQAAtCpEgn5yAAJ+QwAEPC4ACl1DAACGAAABzAJFQIQAAAQ+cgAEKCsABCgrAAQoKwAEKCsABCorAAQoKwAEKCsABCorAAQoKwAEKCsAAIwIAACOCAABUgcACkhKAAQSAAAENCVGCnQTAAlsAEwIbBkACKwtAAnsEkrHLCQABqwpRorsCwALLDUAAiwxAARsLwAKrC1IBewAUEysNQALLDUACOwSSsesGUqI7hIACSwBTAUsIQAH7ClJCiw1AAlsNkaNLDZKiWwxSAlsOElGbC0AAP53AAT0NAAA/loABDQJAAC0KgAAtCpERAwUAAN0DFFDTAVRRDQfRkNMEFFBtjlAA04dAAQ0FAAAsCIAALIzAAN0IAAAdB9GS0wUAAUMFFMEDAxRRA4MUUNOHQADDCBRQowOAAEkFgAEjBQAA0wgAAdMIEZDjCcAA84dAALMLAAEDBhFjUwYAAQ0JQAENCUABDQmAAAAAAAAAS/IwAFsFgABbKgAAYo8wAGLYAABmZoAAahjQAHi/AAB5LCAAfKgwAH2U4ACAbSAAiD9gAI+AYACPySAAl1KwAJxNAACe3GAAntyAAKZmAACqPWAArKhQALKhIAC0MeAAtXlQALoq0ADBbAAAwbRgAMSMoADJhuAAy81gAM6BMADREKAA05/gANrgsADcBCAA3ZSAAN5YMADgI+AA4X3QAOKzMADlHjAA5TBgAOVnAADxxoAA8unQAQXUIAELcqABDzdgARKg4AEj+rABKPUAAS6lYAAAAAAAJbBgAGQf4ABxxyAAgAAAAIqqsACYLWAAmnPQAKHHIACiijAApPpQAK+lAACxeTAAsccgALwW0ADAAAAAAAAP/+Qf4AAMcdAADjjgABjjoAAac9AAK44wADHHAAAxxyAAQAAAAAAAAAAGjTAABq8wAAh2UAALziAADV6AAA5q4AAQyFAAESNgABEsgAARflAAEs8gABQf4AAUUwAAFOggABUsgAAVwrAAFdTQABczMAAXkrAAGCGAABg2sAAYrQAAGOygABkeAAAZZVAAGYeAABp0IAAavOAAGuFgABuXUAAbziAAHHHQABzWAAAdJrAAHTogAB1DMAAdXoAAHV6gACA2oAAg7LAAIQggACEjYAAhtOAAI45QACRfoAAksYAAJR7QACaigAAoJIAAKHZQACrN4AAq79AALA2wAC+uIAAwAAAAMrIAADfAUAaQAMAGYACwBsAA0AJ4AAAD+AAAAhgAAAKYAAgF2AAABpAA4AbAAPACeAAAA/gAAAIYAAACmAAIBdgAAAbIABgEyAAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+gGyABABvgAUAZYAFAHWABQBygAUAYYAFAEGABgBPgAcAQ4AHAEeAB4BRgAcAeYAFAGWABQBvgAUAcoAFAGGABQB1gAWAQYAFAFiABwBXgAcAQYAHAFaAB4BZgAcAboAHAGyABwBygAcAdYAHAG2ABwB0gAcAaYAHAEOABwBPgAcAR4AHAGiABwBigAcAVYAHAGuABwB2gAcAd4AHAFGABwBUgAUAWYAFAFaABgBXgAYAZYAIAGGACABvgAgAZIAIAGOACABngAiAcYAIgCeABgABtOj/+0Dd//nadgAB4moAAPE1//6WMP/+HZb//4dl//8OywAEAAAABqGNAALTngAB4moABxxyABLqVgAB4mo=","cmcsc10":"AUUAEgAAAH8AMQAQAAsABgBJAAsAAAAHjC34FACgAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAABUNNQ1NDAAAAAAAAAAAAAAAAAAAAAADqGsAAACvAAAApwAAAIMAAABzAAAAkwAAAIsAAACnAAAAiwAAAKcAAACLAAAAN2AAADdgAAALQAAACSQAAC0kAAAFQAAAFUAAADdAAAA3QAAANkAAADdAAAA1wAAAk0AAACAcAACxQAAAdUAAAJVAAABZzAAAtwAAAL8AAACnjAAACMAEAAtABCA3QAAAr2AAADfQAACv0AAAp0AAAAtABAwb6AAAG+gAADfAAACmFAAACGQAAAzABBgIQAAAN+gAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAIwAAACOQAAKWIAACkhAAApYgAAC9ABCSnQAAAkwAEgIcAAACLAAAAmwAEWHsAAABvAAQwqwAAAJMAAAATAATIPwAAAKMABDhrAASouwAAAJMAAACnAARYewAEKKckAACPAASATwAAAIsABCiTAAAAkwAkMMMAJDCTAAQ4kwBEKGcAAAAL6AAAN0AAAAvoAAA3QAAACsAAAAtABAhRQAT4QUAAAEVAAABVQATkOUAAADFABNBhQAAAUUAAAAVABSAVQAAAXUAE1ClABQx9QAAAUUAAAFlABOQ5QATMWVgAAElABPgdQAAARUAEzFFAAABRQBTQnUAU0FFABNRRQDTMJUAAADTAVBzAwFAAN0AAADbAAAA2wAAAAAAAAAATV5gAFHG4ABgtdAAZ9IwAGyoUABvpLAAdTDQAH6ToACAkYAAg2mwAIYLIACJGiAAjYKAAI7KYACRELAAlHrQAJdS4ACaKyAAnHFgAJ0DUACf24AAorOgAKKzsACkH7AAq2BQAK7ugAC2ZgAAuk8wALxNMAC93WAAvyVgAMFroADFVOAAyT4gAMzMUADQWoAA0w6gANRD0ADV5tAA19IAANgtAADZ9CAA5xvgAOphoAD5mQAA/ScwARd20AEbBQAAAAAAABsFsABd64AAbjjgAIAAAACDjjAAigJQAJCs4ACZmWAAoOOgAKT6UACq+NAAru7gALHHIAC7YLAAwAAAAAAAD//d64AACgJQAAxx0AAOOOAAGZlgACT6UAArjjAAMccAADHHIABAAAAAAAAAAALYMAADu7AABR6wAAa4UAAHd4AGyAAIBMgAGAYABcACcAIgA/gAKAIYACgC0Ae4AtAHyAYAAOgGAADwBhgAOAQYADAGGABABBgAQAb4AFAE+ABQBjgAUAQ4AFAGeABQBHgAUAcYAFgFGABQB4gAUAWIAFAHeABQBXgAUAYYAFAEGABQB2gAUAVoAFAHmABYBZgAUAY4AFAEOABQBvgAUAT4AFAGeABQBHgAUAdYAFAFWABQBxgAUAUYAFAFSAAwB0gAMAWYADAHmAAwBWgAQAdoAEAFeABIB3gASASYAGgGGABwBhgAgAb4AJAGOACQBngAmAcYAJAHiACQB3gAkAYYAJAHaACYB5gAkAY4AJAG+ACQBngAkAdYAJAHGACQAngAcAdIAHAHmABwB2gAiAd4AIgGmACv/645L/+jM2AAHd3f/+mZr//iIj//+IiAAAd3j//u7u//6T6v//pPoAAFsGAAAAAAAGC10AAszLAAHd3QAG444AEbBQAAHd3Q==","cmcsc8":"AUYAEgAAAH8AMgAQAAsABgBJAAsAAAAHoWaF5QCAAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAACkNNQ1NDIFYyLjIAAAAAAAAAAAAAAADuGsAAACvAAAApwAAAIMAAAB3AAAAlwAAAIsAAACnAAAAiwAAAKcAAACLAAAAO2AAADtgAAALQAAACSQAAC0kAAAFQAAAFUAAADtAAAA7QAAAOkAAADtAAAA6AAAAl0AAACAcAACxQAAAcUAAAJFAAABdiAAAtwAAAL8AAACniAAACMAEAAtABCA7QAAAr2AAADvMAACvzAAAp0AAAAtABAwb6AAAG+gAADvAAACmVAAACGQAAAzABBgIQAAAO+gAADqAAAA6gAAAOoAAADqAAAA6gAAAOoAAADqAAAA6gAAAOoAAADqAAAAIwAAACOQAAKXQAACkhAAApdAAAC9ABCSnQAAAlwAEgIcAAACLAAAAnwAEWH8AAABvAAQwqwAAAJcAAAATAATIPwAAAKMABDhrAASouwAAAJcAAACnAARYfwAEKKckAACPAASAUwAAAIsABCiXAAAAlwAkMMcAJDCXAAQ4lwBEKGcAAAAL6AAAO0AAAAvoAAA7QAAACsAAAAtABAhNQAT4QUAAAEVAAABVQATkNUAAADFABNBhQAAATUAAAAVABSAVQAAAWUAE1ClABQx5QAAATUAAAF1ABOQ1QATMXVgAAElABPgdQAAARUAEzE1AAABNQBTQmUAU0E1ABNRNQDTMJUAAADjAVBzAwFAAO0AAADrAAAA6wAAAAAAAAAAUT7AAFRxwABkccAAa7vAAHGDIAB0ccAAeqsAAIRxwACGOUAAiJ+gAIxxwACOZsAAlC3gAJRxwACYFsAAmfUAAJ1VwACfvCAAoiKAAKRxwAClg0AAp+mgAKjkAACqF0AAtHHAALgWwADAFsAAwmbgAMRxwADEzUAAyBbAAMu7wADQFsAA1HHAANgWwADZg2AA27vAANvpwADgFsAA47vAAORxwADmREAA9HHAAPVWAAEIFsABC7vAASgWwAEo44ABK7vAAAAAAAAcccAAYMPAAG444ACAAAAAgZmgAI4LYACQKQAAktggAKBxwACk+mAAq67AAK7u4ACxxyAAu2CgAMAAAAAAAA//4MPAAAxxwAAOOOAAECkAACAAAAAhxyAAK45AADHHAAAxxyAAQAAAAAAAAAAC46AABAAAAAUzQAAHM0AACAAABsgACATIABgGAAXAAnACIAP4ACgCGAAoAtAHuALQB8gGAADoBgAA8AYYADgEGAAwBhgAQAQYAEAG+ABQBPgAUAY4AFAEOABQBngAUAR4AFAHGABYBRgAUAeIAFAFiABQB3gAUAV4AFAGGABQBBgAUAdoAFAFaABQB5gAWAWYAFAGOABQBDgAUAb4AFAE+ABQBngAUAR4AFAHWABQBVgAUAcYAFAFGABQBUgAMAdIADAFmAAwB5gAMAVoAEAHaABABXgASAd4AEgEmABoBhgAcAYYAIAG+ACQBjgAkAZ4AJgHGACQB4gAkAd4AJAGGACQB2gAmAeYAJAGOACQBvgAkAZ4AJAHWACQBxgAkAJ4AHAHSABwB5gAcAdoAIgHeACIBpgAr/+rjk//n+lAACAAD//oAA//4AAP//gAAAAIAA//7qqv/+jjj//6OOAABccgAAAAAABkccAAMAAAACAAAABuOOABKOOAACAAA=","cmcsc9":"AUUAEgAAAH8AMgAQAAoABgBJAAsAAAAH0AkarQCQAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAACkNNQ1NDIFYyLjIAAAAAAAAAAAAAAADsGsAAACvAAAAowAAAH8AAABzAAAAkwAAAIsAAACjAAAAiwAAAKMAAACLAAAAN2AAADdgAAALQAAACSAAACkgAAAFQAAAGUAAADdAAAA3QAAANkAAADdAAAA1wAAAk0AAACAcAACxQAAAeUAAAJlAAABdyAAAtwAAAL8AAACjiAAACMAEAAtABCA3QAAAr2AAADfQAACv0AAAo0AAAAtABAwX5AAAF+QAADfAAACiFAAACGAAAAzABBgIQAAAN+QAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAIwAAACOAAAKGMAACghAAAoYwAACtABCSjQAAAkwAEgIcAAACLAAAAlwAEWHcAAABvAAQwqwAAAJMAAAATAATIOwAAAJ8ABDhrAASouwAAAJMAAACjAARYdwAEKKMgAACPAASASwAAAIsABCiTAAAAkwAkMMcAJDCTAAQ4kwBEKGcAAAAL5AAAN0AAAAvkAAA3QAAACsAAAAtABAhRQAT4QUAAAEVAAABVQATkPUAAADFABNBhQAAAUUAAAAVABSAZQAAAWUAE1C1ABQyBQAAAUUAAAF1ABOQ9QATMXVgAAE1ABPgdQAAARUAEzFFAAABRQBTQpUAU0FFABNRRQDTMJUAAADTAVBzAwFAAN0AAADbAAAA2wAAAAAAAAAAT6TgAFCXkABfmrAAZt+QAG6dwABvU8AAeBjgAH2g4ACDjcAAhSJwAIY9kACL+AAAjKQAAJBGcACRsnAAl2zgAJp3kACbpyAAnSdQAJ/XIACi4cAApZGQAKXscACnRFAAqqpAAK5MsAC1zkAAua1QAL1PwAC/hgAAwPJAAMI1wADE0VAAyLBwAMxS4ADP9VAA09RwANZvwADXduAA17OQANkfkADZhMAA5rawAPAxwAD5XEAA/P6wARdicAEZSAABGwTgAAAAAAAbp5AAX06QAG444ACAAAAAhqMgAI0MkACSllAAmhKwAKDjkACk+lAAq0mwAK7u4ACxxyAAu2CwAMAAAAAAAA//306QAAxxwAANDJAADjjgABoSsAAjjkAAK45AADHHIABAAAAAAAAAAALdQAADwMAABSfAAAbBUAAHgZAGyAAIBMgAGAYABcACcAIgA/gAKAIYACgC0Ae4AtAHyAYAAOgGAADwBhgAOAQYADAGGABABBgAQAb4AFAE+ABQBjgAUAQ4AFAGeABQBHgAUAcYAFgFGABQB4gAUAWIAFAHeABQBXgAUAYYAFAEGABQB2gAUAVoAFAHmABYBZgAUAY4AFAEOABQBvgAUAT4AFAGeABQBHgAUAdYAFAFWABQBxgAUAUYAFAFSAAwB0gAMAWYADAHmAAwBWgAQAdoAEAFeABIB3gASASYAGgGGABwBhgAgAb4AJAGOACQBngAmAcYAJAHiACQB3gAkAYYAJAHaACYB5gAkAY4AJAG+ACQBngAkAdYAJAHGACQAngAcAdIAHAHmABwB2gAiAd4AIgGmACv/69of/+kRHAAHgZP/+l7X//h+c//+H5wAAeBn//u0L//6RZP//pFkAAFunAAAAAAAF+asAAtCVAAHgZAAG444AEZSAAAHgZA==","cmdunh10":"AUQAEgAAAH8AJAAQAAoABQBYAAoAAAAHS/FgeQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNRFVOSAAAAAAAAAAAAAAAAAAAAADqEsAAAB7AAAAcwAAAFsAAABTAAAAawAAAGMAAABzAAAAYwAAAHMAAABjAAAAQ0BEKD9AAAA/QAAAe0AAAHtAAAAEwAAACNwAACqAAAAqgAAAKgAAACqAAAApwAAAa0AAACAYAAAvQAAAYMAAAHDAAAApFAAAfwAAAIsAAABziAAABMAEAAdABFwrQAAAe2AAACvMAAB7zAAAc0AAAAdABEgX5AAAF+QAACvAAABxUAAABFwAAAzABFQEQAAAK+QAACrAAAAqwAAAKsAAACrAAAAqwAAAKsAAACrAAAAqwAAAKsAAACrAAAAEwAAABNwAAAZcAABwhAAAJlwAACdABGBzQAAAawAFMF8AAABjAAAAbwAE1FcAAABPAASQdwAAAGsAAAATAAVcMwAAAHMABKhLAAVIgwAAAGsAAABzAATUVwAEeHMcAABnAAUwPwAAAGMABLhrAAAAawAUkI8AFJBrAASoawAkvEcAAAAH5AAAK0AAAAfkAAAqgAAABcAAAAdABEQowAUgP0AFCCDABQA/QAAAIMAAAAtARAgo3BVYP0AE6AXAAAAJ3AAAO0AEZAdAAAB4wAToPMAE6CjABQg83AUINNwAABjAAAAcwAAAFYAFKDzABSw4wBRkYMAUaDjAAAA43BR8IMAAACjANFiEwDAAKoAAACnAAAApwAAAAAAAAAARxyAAE45AABVVWAAXHHQAGOOUABkRGAAZPpgAHHHMAB447AAgAAgAIAAMACDjlAAhxyAAIccoACOOQAAlVWAAJxx4ACgACAApxygAKqq0ACuOQAAsccwALVVgAC447AAvHHgAMAAIADDjmAAxxygAMjjsADVVYAA5xygAOqq0AEAADABA45gAQccoAAAAAAAGwWwAF3rgABuOOAAhxyAAJVVYACddeAArGIgAMDjoADHHIAA3HHQAOwW0AD2C2AA+OOgAQJ9MAEHHGAAAAAP/93rgAAMcdAADjjQABVVYAAY46AAK44wADHHIAB446AAhxxgAAAAAAADjjAABmZgAAccgAAT6VAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/7jjj/+uONAAE+lQABxx3//xxy//+OOP/+qqr//jjjAABxyAAA444AAAAAAAVVVgACqqsAAccdAAbjjgAQAAMAAccd","cmex10":"APgAEgAAAH8AIAAGAA4AAwAAAAAAHAAN+rF1EgCgAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNRVgAAAAAAAAAAAAAAAAAAAAAAADqBBcCEAQXAhECFwJoAhcCaQYXAmoGFwJrBhcCbAYXAm0KFwJuChcCbwYXAkQGFwJFAQMDAAgDAwEJFwIuCRcCLwsZAhILGQITDxwCIA8cAiEHHAIiBxwCIwocAiQKHAIlChwCJgocAicQHAIoEBwCKRAcAioQHAIrGhwCLBocAi0SHQIwEh0CMQodAjIKHQIzDR0CNA0dAjUNHQI2DR0CNxMdAjgTHQI5Ex0AABMdAAAdHQAAHR0AABQZAh4UGQIfFhkDAhYZAwMOGQMEDhkDBQ4ZAwYOGQMHDgMDCA4DAwkXBAMKFwQDCxcEAwwXBAMNFwoDDhcKAw8XAQMQDgMDERYZAxIWGQMTFgMDFBYDAxUMGQIcDBkCHRUFAkccKAAABQYGSQgLCAAcBQJLHygAABwFAk0fKAAAHAUCTx8oAAAbBQJYGAUCWQUGBloVBQJbFQUCXBUFAl0VBQJeFQUCXx4oAAAdKAAACAsIABwoAAAcKAAAHCgAABwoAAAcKAAAGAUCYR0oAAAIQAJjGVACZB5QAAAIQAJmGVACZx5QAAAGGQIUBhkCFQcZAhYHGQIXBxkCGAcZAhkOGQIaDhkCGxkXAnEZGQJyGRwCcxkdAnQbCgMWGwMAABsSAAARAwMXDgMDGA4DAxkDMAAAAzAAAAMwAAADMAAAEQMDGhEDAxsAAAAAAAVVVgAGqq0ABzM4AAdVWAAHjjoAB447AAhxygAI45AACT6VAAlVWAAJjjsACcceAAo45gAKqq0AC8cgAAwAAgAMccoADKquAAzjkwAM+lMADVVYAA4AAwAOOOYADxx1ABAAAwAQtg4AEOOSABHHIAAUccsAFxx2ABgtiAAAAAAAAKPWAAGZmwAB64MAC446AAwAAAAAAAAABMzQAAj1ygAJmaAADmZwABAADgARxygAEo9qABgADQAcKQoAHMzgACOOUgAlwqoAL1xKAAAAAAADHHMABxxzAAAADAAAAA0wAEBCMQBBQzIANDYzADU3AAA0NgAANTcyAAA2MwAANzg8Oj45PTs+OAA6PjkAOz4AAAA/AAAAdwAAAD54AHk/OAA7PjkAOj4AAABCAAAAQ3YAdHV+AH93eAAAPwAAeT9+AAB3AAB/dwAAAAAAAAAAAAAAAAAAAAAABuOOABAAAwAAAAAAAKPWAAHHHQACqqsAAzMzAAmZmgABmZo=","cmex7":"APsAEgAAAH8AIwAGAA4AAwAAAAAAHAANFyOwrQBwAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAACUNNRVggVjIuMgAAAAAAAAAAAAAAAADwBBcCEAQXAhEDFwJoAxcCaQYXAmoGFwJrBhcCbAYXAm0KFwJuChcCbwYXAkQGFwJFAQMDAAkDAwEIFwIuCBcCLwsZAhILGQITDxwCIA8cAiEHHAIiBxwCIwocAiQKHAIlChwCJgocAicQHAIoEBwCKRAcAioQHAIrGxwCLBscAi0THQIwEx0CMQodAjIKHQIzDR0CNA0dAjUNHQI2DR0CNxQdAjgUHQI5FB0AABQdAAAfHQAAHx0AABIZAh4SGQIfFhkDAhYZAwMOGQMEDhkDBQ4ZAwYOGQMHDgMDCA4DAwkXBAMKFwQDCxcEAwwXBAMNFwoDDhcKAw8XAQMQDgMDERYZAxIWGQMTFgMDFBYDAxUMGQIcDBkCHRUFAkceKAAABQYGSQkLCAAeBQJLIigAAB4FAk0iKAAAHgUCTyIoAAAdBQJYGAUCWQUGBloVBQJbFQUCXBUFAl0VBQJeFQUCXyEoAAAgKAAACQsIAB4oAAAeKAAAHigAAB4oAAAeKAAAGAUCYSAoAAAJQAJjGlACZCFQAAAJQAJmGlACZyFQAAAGGQIUBhkCFQcZAhYHGQIXBxkCGAcZAhkOGQIaDhkCGxkXAnEZGQJyGRwCcxkdAnQcCgMWHAMAABwSAAARAwMXDgMDGA4DAxkCMAAAAjAAAAIwAAACMAAAEQMDGhEDAxsAAAAAAAZpqQAHtUIAB+OSAAighwAI34AACN+CAAnbcgAKPCcACllpAArXYgALFl4AC1VZAAvTUgAMUUkADYw3AA3LMAAOSSkADl5JAA6IJwAOxyUAD0UZABACDgAQQQkAETz5ABH35QASOOkAEoBuABLz1QATNNkAFDDJABaikAAXJJkAGhhpABtGuwAAAAAAAMbyAAGZmwACVNcAC445AAwAAAAAAAAABMzQAAjSrgAJmaAADmZwABAADgARxykAEmxOABgADgAcBe4AHMzgACOOUgAln44ALzkuAAAAAAADcckAB9+AAAAADAAAAA0wAEBCMQBBQzIANDYzADU3AAA0NgAANTcyAAA2MwAANzg8Oj45PTs+OAA6PjkAOz4AAAA/AAAAdwAAAD54AHk/OAA7PjkAOj4AAABCAAAAQ3YAdHV+AH93eAAAPwAAeT9+AAB3AAB/dwAAAAAAAAAAAAAAAAAAAAAABuOOABK68gAAAAAAAMbyAAHHGwACqqsAAzMyAAnHGwACSSU=","cmex8":"APcAEgAAAH8AHwAGAA4AAwAAAAAAHAANAQFhNgCAAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAACUNNRVggVjIuMgAAAAAAAAAAAAAAAADuBBcCEAQXAhECFwJoAhcCaQUXAmoFFwJrBRcCbAUXAm0JFwJuCRcCbwUXAkQFFwJFAQMDAAcDAwEIFwIuCBcCLwoZAhIKGQITDhwCIA4cAiEGHAIiBhwCIwkcAiQJHAIlCRwCJgkcAicPHAIoDxwCKQ8cAioPHAIrGRwCLBkcAi0RHQIwER0CMQkdAjIJHQIzDB0CNAwdAjUMHQI2DB0CNxIdAjgSHQI5Eh0AABIdAAAcHQAAHB0AABMZAh4TGQIfFRkDAhUZAwMNGQMEDRkDBQ0ZAwYNGQMHDQMDCA0DAwkWBAMKFgQDCxYEAwwWBAMNFgoDDhYKAw8WAQMQDQMDERUZAxIVGQMTFQMDFBUDAxULGQIcCxkCHRQFAkcbKAAABQYGSQcLCAAbBQJLHigAABsFAk0eKAAAGwUCTx4oAAAaBQJYFwUCWQUGBloUBQJbFAUCXBQFAl0UBQJeFAUCXx0oAAAcKAAABwsIABsoAAAbKAAAGygAABsoAAAbKAAAFwUCYRwoAAAHQAJjGFACZB1QAAAHQAJmGFACZx1QAAAFGQIUBRkCFQYZAhYGGQIXBhkCGAYZAhkNGQIaDRkCGxgXAnEYGQJyGBwCcxgdAnQaCgMWGgMAABoSAAAQAwMXDQMDGA0DAxkDMAAAAzAAAAMwAAADMAAAEAMDGhADAxsAAAAAAAWqsAAHFVwABzM4AAfKsgAIByQACPjsAAlx0AAJ0oYACeq0AAonJgAKY5gACtx8AAtVYAAMg5oADMAMAA048AANdWIADbHUAA3KAgAOKrgADuAOAA8cgAAQDkgAEQAQABHBfAAR8dgAEuOgABW4+AAYjlAAGbB0AAAAAAAAuFIAAZmaAAIo9gALjjoADAAAAAAAAAAEzNAACOFOAAmZoAAOZnAAEAAOABHHKAASeu4AGAAMABwUjgAczOAAI45SACWuLgAvR84AAAAAAANOPAAHjkAAAAAMAAAADTAAQEIxAEFDMgA0NjMANTcAADQ2AAA1NzIAADYzAAA3ODw6Pjk9Oz44ADo+OQA7PgAAAD8AAAB3AAAAPngAeT84ADs+OQA6PgAAAEIAAABDdgB0dX4Af3d4AAA/AAB5P34AAHcAAH93AAAAAAAAAAAAAAAAAAAAAAAG444AEQAQAAAAAAAAuFIAAcccAAKqqgADMzQACbjkAAIAAA==","cmex9":"APkAEgAAAH8AIQAGAA4AAwAAAAAAHAANesDTaQCQAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAACUNNRVggVjIuMgAAAAAAAAAAAAAAAADsBBcCEAQXAhECFwJoAhcCaQUXAmoFFwJrBRcCbAUXAm0LFwJuCxcCbwYXAkQGFwJFAQMDAAgDAwEJFwIuCRcCLwwZAhIMGQITEBwCIBAcAiEHHAIiBxwCIwocAiQKHAIlChwCJgocAicRHAIoERwCKREcAioRHAIrGxwCLBscAi0THQIwEx0CMQodAjIKHQIzDh0CNA4dAjUOHQI2Dh0CNxQdAjgUHQI5FB0AABQdAAAeHQAAHh0AABUZAh4VGQIfFxkDAhcZAwMPGQMEDxkDBQ8ZAwYPGQMHDwMDCA8DAwkYBAMKGAQDCxgEAwwYBAMNGAoDDhgKAw8YAQMQDwMDERcZAxIXGQMTFwMDFBcDAxUNGQIcDRkCHRYFAkcdKAAABQYGSQgLCAAdBQJLICgAAB0FAk0gKAAAHQUCTyAoAAAcBQJYGQUCWQUGBloWBQJbFgUCXBYFAl0WBQJeFgUCXx8oAAAeKAAACAsIAB0oAAAdKAAAHSgAAB0oAAAdKAAAGQUCYR4oAAAIQAJjGlACZB9QAAAIQAJmGlACZx9QAAAFGQIUBRkCFQcZAhYHGQIXBxkCGAcZAhkPGQIaDxkCGxoXAnEaGQJyGhwCcxodAnQcCgMWHAMAABwSAAASAwMXDwMDGA8DAxkDMAAAAzAAAAMwAAADMAAAEgMDGhIDAxsAAAAAAAV7QAAG2hAABzM5AAeJdwAHw/AAB8PyAAit0AAJIsAACYBMAAmXsAAJl7IACdInAAoMoAAKgZAACvaAAAwa1wAMVVIADMpAAA0EtwANPzAADVaUAA20IAAOY4cADp4AAA+H4AAQccAAESzbABFboAASRYAAFQMgABfAwAAY2WUAAAAAAACs8gABmZsAAgbVAAuOOQAMAAAAAAAAAATM0AAI7K4ACZmgAA5mcAAQAA4AEccpABKGTgAYAAwAHB/uABzM4AAjjlIAJbmOAC9TLgAAAAAAAzKQAAdPAAAAAAwAAAANMABAQjEAQUMyADQ2MwA1NwAANDYAADU3MgAANjMAADc4PDo+OT07PjgAOj45ADs+AAAAPwAAAHcAAAA+eAB5PzgAOz45ADo+AAAAQgAAAEN2AHR1fgB/d3gAAD8AAHk/fgAAdwAAf3cAAAAAAAAAAAAAAAAAAAAAAAbjjgAQccAAAAAAAACs8gABxxwAAqqrAAMzNAAJrdQAAccc","cmff10":"AUsAEgAAAH8AMAAOAAsAAQBYAAoAAAAHjRUb6wCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNRkYAAAAAAAAAAAAAAAAAAAAAAADqG6AAACqgAAAnoAAAGqAAAB2gAAAaoAAAI6AAACegAAAjoAAAJ6AAACOgAAAYkAEKF5AAABeQAAArkAAAK5AAAAJQAAAFWAAAEpAAABKQAAAScAAAEpAAABKAAAAekAAADQcAABGQAAAjUAAAJ1AAABK1AAAsoAAALqAAACfTAAACUAEAAZABFxKQAAAqmQAAEsIAACrCAAAlkAAAA5ABEgrKAAAKygAAEsAAACdEAAADFgAACFABFQMQAAASygAAEmAAABJgAAASYAAAEmAAABJgAAASYAAAEmAAABJgAAASYAAAEmAAAANQAAADVgAAATgAACchAAAOOAAADpABGCeQAAAgoAFMH6AAACOgAAAkoAE1IqAAAB+gASQmoAAAGqAAAAagAVcPoAAAI6ABKhugAVIooAAAGqAAACqgATUboAEeKqYAACKgAUwWoAAAJ6ABLhygAAAgoAEkLaABJCCgASogoAEvGaAAAATKAAASkAAABMoAABKQAAADkAAAA5ABERBQAUgVkAFCDVABQBWQAAANUAAAB5ABAhJYAVYVkAE6ApAAAAWYAAAUkAEZApAAAClQAToVUAE6ElABQhVYAUITWAAACVAAAAtQAAAKkAFKFVABSxRQARkhUAEaFFAAABRYAR8MUAAAElABFi9QAAASkAAAEpAAABKQAAAAAAAAAAMFsAADd3gAA7u7AAPHHQAD0n4ABBbAAAQWwgAEccYABQWwAAUn0gAFOgYABczLAAXd3QAGOOMABmZlAAZxxgAGccgABpPoAAaqqgAGqqsABwWwAAdJ8wAHVVUAB9J9AAf//gAIWwMACIiGAAi2CAAItgoACOOLAAjjjQAJEQ4ACSfSAAk+kgAJbBUACZmYAAn//gAKC14ACiIgAAp9JQAKk+gACtgrAAsREAALYLMADJ9GAAzMygANJ9AAAAAAAAEn0wAE9J4ABVVWAAa2CgAIccYACVVVAAlxyAAJniUACccdAAoAAAAKqqoACqqrAAsccgAAAAAAABESAADjjgABHHIAAdJ9AAI44wADHHIAA+OOAARxxgAE45AABccdAAAAAABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj//IiI//w44wAA444AAWwW//9J9f//pPr//u7u//6T6gAAWwYAALYL//5mYAAEccYAAiIiAAFsFgAIccYADSfQAAFsFg==","cmfi10":"AWQAEgAAAH8AMgAOAAsAJABNAAkAAAAHEwuEjgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNRkkAAAAAAAAAAAAAAAAAAAAAAADqF6CAAC2gAAAooCQAGKAAABugWAAaoAAAI6BoACigOAAjoAgAKKA4ACOgMAAVmI0IEJhwABOYcAApmHAALJhwAANQcAAFWAAAD5AAAA+QAAAPcAAAD5AAAA+AKAAikAAACwcAABKYAAAjUCwAI1AsAA+0TAAuoGgAMKBoACjTJAABUAEPApARFw+QAAAtmQQAHpAAAC3CHAAokAAAA5ABEgjKVAAIygAAD8A8AChGAAADFQAAB1ABFQMQAAAPylQAD2BIAA9gSAAPYEgAD2BIAA9oSAAPYEgAD2BIAA9oSAAPYEgAD2BIAANQAAADVQAAAjgAACghBAAPOAAAD5ANGCiQIAAhoAEwH6AwACOgUAAloCUrIKBoAByggRonoAAAGqAAAAagXAAOoAAAJKBRIBegAUEroAAAGqAAACqgJSsZoDEqKqUkACKgATAUoBQAJqCBJB2gAAAhoIUaL6CFKiGgXSAhoIklFqBQAAPKdAAPkGQAA8oAAA+QAAADkAAAA5ABEQ9QcAALkBlFC1ABRQ+QcRkLUC1FBJiNAAtYNAAPkHAAA5BwAAOYRAALkGAAAZBxGS1QcAAUUHFMD1AZRQ9YGUULWDQAClBhRQhQQAAFkHAAEVBwAAtQYAAbUGEZDFB4AA1YNAAJUHwAD1BtFjFQbAAPkAwAD5AMAA+QAAAAAAAAAAPpPQAEIiAABNgrAATYLQAFT6MABWwTAAXHGgAGtggABrYKAAbxxQAHpPYAB6T4AAgcbgAIZmIACJPlAAjBagAJC10ACQteAAk44AAJgtMACbBYAApxwgAK+koACwWqAAszLQALPo0AC2CwAAtxwgALmZIAC6T2AAuqpQAL6TgAC/SYAAwiGwAMT54ADGwQAAyZkwANBaoADSfLAA0+jQAN1VAADfSYAA4LWAAOEQsADi17AA7u5gAQn0AAEMzDABEnygAAAAAAASfTAAT0ngAFVVYACAtdAAhxxgAJVVUACXHIAAmphgAJxx0ACgAAAAqqqgAKqqsACxxyAAAAAAAAERIAAOOOAAEccgACOOMAAxxyAAMn0AAD444ABHHGAATjkAAFxx0AAAAAAAAHZgAACIoAAAtlAAALZgAAERYAAB/eAAAiJgAAN8IAADu+AABEKwAASBAAAEiLAABJ+gAAVVgAAF3iAABgugAAbBsAAHd7AAB3fQAAiI0AAJmdAACsZQAAxEoAANgyAADibgAA45MAAP0VAAD+HQABERUAARPtAAEWxgABH1AAATvAAAFrigABrYYAaQAMAGYACwBsAA0AJ4AAAD+AAAAhgAAAKYAAgF2AAABpAA4AbAAPACeAAAA/gAAAIYAAACmAAIBdgAAAbIABgEyAAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+gGyABABvgAUAZYAFAHWABQBygAUAYYAFAEGABgBPgAcAQ4AHAEeAB4BRgAcAeYAFAGWABQBvgAUAcoAFAGGABQB1gAWAQYAFAFiABwBXgAcAQYAHAFaAB4BZgAcAboAHAGyABwBygAcAdYAHAG2ABwB0gAcAaYAHAEOABwBPgAcAR4AHAGiABwBigAcAVYAHAGuABwB2gAcAd4AHAFGABwBUgAUAWYAFAFaABgBXgAYAZYAIAGGACABvgAgAZIAIAGOACABngAiAcYAIgCeABgAA1Vb//BbD//tVWAAB3d0AAO7u//6Zmv/+IiP//4iI//8REgABmaAABccaAALMywAB3d0ACHHGABEnygAB3d0=","cmfib8":"AUAAEgAAAH8AJQAOAAcABQBYAAoAAAAHza9mPQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNRklCAAAAAAAAAAAAAAAAAAAAAADuF8AAACLAAAAfwAAAGcAAABnAAAAcwAAAHMAAAB/AAAAcwAAAH8AAABzAAAAWwBEKFMAAABTAAAAhwAAAIcAAAAEwAAAENgAAEMAAABDAAAAQgAAAEMAAABBgAAAcwAAACwUAAA/AAAAcMAAAHzAAABBDAAAjwAAAJMAAAB/SAAABMAEAAsABFxDAAAAixgAAEMAAACLAAAAewAAAAsABEgfGAAAHxgAAEMAAAB+UAAACFgAABjABFQIQAAAQxgAAEMAAABDAAAAQwAAAEMAAABDAAAAQwAAAEMAAABDAAAAQwAAAEMAAAAIwAAACNgAAAlYAAB8hAAANVgAADcABGB/AAAAcwAFMGsAAABzAAAAdwAE1GcAAABjAASQfwAAAHMAAAAbAAVcQwAAAHcABKhfAAVIjwAAAHMAAAB/AATUZwAEeH8YAABzAAUwVwAAAHMABLhzAAAAcwAUkJMAFJBzAASocwAkvF8AAAAPGAAAQwAAAA8YAABDAAAACsAAAAsABEQ4wAUgTwAFCCzABQBPAAAAMMAAABcARAhA2BVYTwAE6AbAAAAS2AAASwAEZAcAAACAwAToTMAE6EDABQhM2AUIRNgAACDAAAAkwAAAHcAFKEzABSxIwBRkbMAUaEjAAABI2BR8KMAAAEDANFiQwDAAQwAAAEKAAABCwAAAAAAAAAAWcbgAF1VIABdVUAAYxxAAGaqgABv/8AAgqpgAIMcQACEiEAAlHFgAJVVAACYqmAAnqpgAKGN4ACmOKAAp/+gAK3GoACtxsAAtxwAALjjIAC6qkAAw/+gAM1U4ADWqkAA3/+AAOlU4ADvG+AA8qogAPv/gAEDjaABBVTAARRxIAEWOEABF/9gASqqAAFP/0AAAAAAAB444AB3pQAAgAAAAJhxwACeOQAAru7gALbbgAC7VWAAvxxAAMX4AADIMOAAzxyAANtVYAAAAA//2WwAAAw44AAYccAAIONAACrHIAAw44AAAAAAAASqoAAIZmAACVVgABmOQAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//pjkv/5scoAAZjkAAJVVP/+1Vb//2qq//5AAP/9qqwAAJVWAAEqqgAAAAAABv/8AAN//gACVVQACAAAABT/9AACVVQ=","cminch":"AHsAEgAwAFoAEQACAAIAAwAVAAQAAAAH3j5hywaBGaAVQVNDSUkgY2FwcyBhbmQgZGlnaXRzAAAAAAAAAAAAAAAAAAAAAAAABkNNSU5DSAAAAAAAAAAAAAAAAAAAAAAuAxAAAAMQAAADEAAAAxAAAAMQAAADEAAAAxAAAAMQAAADEAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEAELCxAAAAkQAAAOEAEGBhAAAAUQAQELEAAADRAAAAEQARQCEAAADBABAgQQARAPEAAADRAAAA4QAQYIEAEADhEAAAgQAAAFEAAACxABAAwQAAAKEAUBEBAFAQoQAQIKEAkABxAAAAAAAAAABUn1AAhPpQAIzM0ACUn0AAnHHAAKREQACsFsAAs+lAALPpQAC7u7AAu7vAAMOOMADLYLAAy2CwAPpPoAEJ9KAAAAAAALHHIAAAAAAAGwWwAAAAAAAD6UAABwpIBBgAAAQYAAAE+AAQBDgAEAR4ABgFGAAQBYgAEAV4ABAEGAAQBWgAGAWYABAEOAAQBPgAEAR4ABAFWAAQBRgAEAVIAAAFmAAgBWgACAV4ACgEmAA//+iIj//4LY//4LYQAAfSgAAAAAAAXd3gAC7u8AAfSfAAdVVQARmZkAAfSf","cmitt10":"AMAAEgAAAH8AAgAPAAwAAgACAAAAAAAH3+o8eACgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNSVRUAAAAAAAAAAAAAAAAAAAAAADqAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABOwQAATsEAAFQBAABWwQAAcAEAAHABAABsAQAAcAEAAGgBAABwAQAAQoEAAHLBAABUAQAAVAEAAGIBAABwAQAAcAEAAHUBAABKAQAAcAFAAHABAABwAQAAcAEAAHmBAABwAQAAcAEAAHlBAAB5QQAAWAEAAFyBAABGQQAAXIEAAEQBAAB5QQAAcAEAAHABAABwAQAAcAEAAHLBAABwAQAAcAEAAHLBAABwAQAAcAEAAFQBAABWQQAAZMEAAFBBAABkwQAAcAFAQHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAckEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHlBAAB5QQAAeUEAAHABAABBwQAAcAEAAFQBAABwAQAAVAEAAHABAABUAQAAcsEAAFbBAABwAQAAcAEAAHLBAABwAQAAcAEAAFQBAABUAQAAVAEAAFbBAABWwQAAVAEAAFQBAABwAQAAVAEAAFQBAABUAQAAVAEAAFbBAABUAQAAeUEAAHlBAAB5QQAAcAEAAHABAAAAAAAAAhmYgAAAAAAAgAAAAOC2AAGOOMABqZlAAbjjgAIVVYACH0mAAiqqwAI444ACQyDAAkOOgAJxx0ACqqrAAsccgAAAAD//N9I//62Cv//HHIAAOOOAAFVUwABVVUAAYWtAAHHHQACOOMAAxxzAAOOOgAAAAAAAscdgGAADoBgAA8ABAAAAAhmYgAAAAAAAAAAAAbjjgAQzMMACGZi","cmmi10":"AX4AEgAAAH8AYgAPAAkAIAA6AAwAAAAGC6BiPgCgAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADqPLBxHVywASdRsBUYSbABJ02wTRhbsFkQVLA9GDKwcQxFsAEYOrBpCFKwLRhAQAUDK8cxGCRHNAASwCEJCkABCxDHSRggRx0LGcAVGAVAAQswQAAANMAAADlHAQMfQEEBEMcpISxAHAAjRwEYLUAdLw9AbQEpQB0DN8cBGD5HAQtDxx0hPUAcABdAARg2wAEYWUAUACNHARgHRlUYREcBGGEyAABhMgAAYTIAAGEyAAABUwAAAVMAACFkAAAhZAAAIUAAACFAAAAhQAAAIUcAACFHAAAhRwAAIZAAACFHAAAhkAAAIUcAAAEQAAABFwAAU3UAACHoATRTdQAAIWQAACjANRhOsAEiT7AtGEqwRRVYsBULTLA9GEKwcR1VsAEYW7BZEBGwUSEqsF0rXbBFCEawAQNgsGUZV7BlFFGwFRhBsHEdVrcBGFCwCRg7sD0ZNbBxFUiwZQQzsHkxX7BxMVqwURQxsHkxR7BFGQngAAAJxwAACccAAGEhAABhIQAADMABISdAAAANwAAADkABCyXAASMWQAELHcdhKBpHHQMwwAEABKAAAAunOS8mwBgAAsANGF5AAAA4QAAAG0ABCyJHARgTRx0YFEAVCRhAAQsGgAEYL0ABAxxAHQNLQBEYLkABAx5HHQsVQCULA0ABAwhHARg/RwEhIdB0AAHAfAAAAAAAAARxyAAExioABSjIAAWDIAAFqboABcceAAXOOgAGJP0ABjjlAAZ+lQAGlsMABqquAAbd3gAG7JIABv6WAAcAAgAHCIoABxxyAAckgwAHN/MAB3DYAAdzNQAHdgoAB4AAAAeC2AAHoaoAB8FtAAfBbgAH1VgAB9gyAAfnWwAH8csACAACAAgMzgAIRbIACEigAAhT6wAIVGUACHUbAAh+lQAIpP0ACN9KAAkMzgAJHtUACSSDAAkk+wAJKMoACTfzAAlJ9gAJVVUACVVWAAlVWAAJWZsACXaKAAmIigAJmpAACaQLAAnLqgAJz6YACdguAAn1kwAKAtYACi7wAAo8OAAKRbAACkn2AApsGgAKd3gACqqrAArjkAAK7BgACuyoAAsccwALb4AAC3RmAAvPpgAL4LgADAACAAwi2wAMJg0ADDRVAAxbvgAMccoADHpSAAyUegAMph0ADNsGAA0/JgANQAUADUFuAA1MzgANVVgADZbDAA4MWAAPHHMAD4WyABAAAwAAAAAAAbBbAAW45QAF3rgABuOOAAdrgwAHccgACKAlAAnXXgAKT6UACo1qAAru7gALHHIAC25dAAwAAAAAAAD//bjl//3euP//a4P//3HIAACgJQABjjoAAxxyAAQAAAAAAAAAAA8qAAAfpQAAUJoAAG44AABxyAAAgPIAAJL2AACbBQAAtCUAALxyAADNggAA2C4AAOOOAADqeAAA7BYAAQS+AAEk+gABLjgAATYLAAFBawABRxsAAUzLAAGJ9QABuOUAAb6TAAHCkAABz6YAAjjlAAJ2CwADjjoABmQygH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAJAFqAAQBqgAMAZoAKgH+ACwA7gAEAOoABgH+ACwA9gAEAO4ADADqAA4B/gAsAO4ABgDqAAQA7gAoAOoAKgD2AAwABgAEAQYABAE2AAQBOgAEAWYAJgFqAAf//jjj//xxyAABxyP/+OOMAAOOQ//6qqgABVVgAAccgAAI46AAA447//VVVAAKqsAAEAAAAAAAAAAAAAAAAAAAABuOOABAAAw==","cmmi12":"AX0AEgAAAH8AYQAPAAkAIQA6AAsAAAAGt+FnowDAAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADmO7B1HVuwASdQsBUYSLABJ0ywURhYsFUQU7BBGDOwdQxEsAEYObBtCFGwLRg+QAUDK8c1GCRHMAASwCEJCkABCxDHTRgfRx0LF8AVGAVAAQswQAAAM8AAADhHAQMgQEUBEMcpISxAHAAjRwEYLkAdLw9AcQEpQB0DNscBGD1HAQtCxx0hPEAcABhAARg1wAEYV0AUACNHARgHRl0YQ0cBGGAyAABgMgAAYDIAAGAyAAABUwAAAVMAACFkAAAhZAAAIUAAACFAAAAhQAAAIUcAACFHAAAhRwAAIZAAACFHAAAhkAAAIUcAAAEQAAABFwAAUnUAACHoATRSdQAAIWQAACjAMRhNsAEiTrAtGEqwSRVasBULS7BBGEGwdR1UsAEYWLBVEBGwWSEqsGErXLBJCEawAQNfsGUZVrBlFFCwFRhAsHUdVbcBGE+wCRg6sD0ZNLB1FUWwZQQysH0xXrB1MVmwWRQxsH0xR7BJGQngAAAJxwAACccAAGAhAABgIQAADMABISdAAAANwAAADkABCyXAASMVQAELHsdpKBpHHQMwwAEABKAAAAunOS8mwBgAAsANGF1AAAA3QAAAG0ABCyJHARgTRx0YFEAVCRlAAQsGgAEYL0ABAxxAHQNJQBEYLUABAx1HHQsWQCULA0ABAwhHARg/RwEhIdB4AAHAgAAAAAAAAARaEAAEqqgABP/8AAVYNAAFiXgABahIAAWqpQAGC9gABhewAAZTbAAGe0AABpL0AAapOQAGvhUABs27AAbXsAAG6OEABvBVAAbyPAAHD2QAB0LUAAdHGAAHTQQAB1TYAAdhLAAHgHQAB4gJAAeS8QAHo4kAB7jgAAe6xAAHvZ0AB9VQAAfc5wAIFJsACCBQAAgkAwAIJegACDlXAAhFMQAIccEACKjDAAjYKAAI4xAACOcYAAjnkAAI6qQACQS4AAkW+QAJIh0ACSOIAAkurAAJO7UACUWpAAlaDAAJbQQACZGNAAmilwAJtNgACcFlAAnQkwAJ9vcACflXAAoZHAAKJEAACi9hAApDSQAKccAACqPdAAqovwAKuRsACt+9AAsy7wALNWcAC5jdAAuooAALvo0AC+bZAAvsuAAL+QwADB9DAAwvYAAMQK8ADFuQAAxodAAMi5gADPFHAAz7AAANAJEADQH3AA0OMAANVCAADbQcAA7KZQAPKAgAD6qgAAAAAAABjjkABbjkAAXGQQAG448AB0FrAAdxyAAIbTsACddfAApPpQAKfUwACu7vAAsccQALZ4kADAAAAAAAAP/9uOT//cZB//9Ba///ccgAAG07AAGOOQADHHEABAAAAAAAAAAAGhQAACG4AABaFAAAbjkAAG9oAACJfAAAkvcAAJmZAAC2hQAAxe8AAM6zAADe0AAA4xUAAOZvAADudQAA8B8AAQJfAAEmKQABNVcAATbgAAE8cwABQgQAAUl8AAF7QwABq9sAAbVUAAG/AwAByXwAAi0IAAJ2CwADe0AABkivgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAEAFqAAQBqgAMAZoAJgH+ACgA7gAEAOoABgH+ACgA9gAEAO4ADADqAA4B/gAoAO4ABgDqAAQA7gAkAOoAJgD2AAwABgAEAQYABAE2AAQBOgAEAWYAEgFqAAf//kJj//yEwAABvaP/+QmAAAN7Q//6xyAABTjgAAb2gAAItCP/9Y5AAApxwAAQAAAAAAAAAAAAAAAAAAAAG448AD6qg","cmmi5":"AXkAEgAAAH8AYAAPAAkAHgA6AAsAAAAGTw3aXABQAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAAD0MrBtHVuwASdPsBkYR7ABJ0uwSRhXsE0QUrAtGDOwbQxFsAEYP7BlCFCwJRhAQAEDKcctGCRHPAAPwBUJC0ABCxHHMRgjRx0LFsAZGARAAQsuQAAAM8AAADZHAQMcQEEBEccNITBAHAAeRwEYLEAdLxdAXQErQB0DNMcBGDlHAQtCxx0hPUAcABRAARg3wAEYWkAYAB5HARgHRUUYQUcBGF8yAABfMgAAXzIAAF8yAAABZAAAAWQAACBTAAAgUwAAIEAAACBAAAAgQAAAIEcAACBHAAAgRwAAIJAAACBHAAAgkAAAIEcAAAEQAAABFwAAVXYAACDoATRVdgAAIFMAACXAPRhNsAEiTrAlGEiwORVWsBkLSbAtGDqwbR1RsAEYV7BNEAywUSEnsFUrWbA5CEawAQNesFkZU7BZFE+wGRg7sG0dVLcBGEywBRg4sCkZMbBtFUSwWQQvsHExXbBtMViwURQtsHExQ7A5GQrgAAAKxwAACscAAF8hAABfIQAACcABIShAAAANwAAADkABCyHAASMVQAELGMdhKBpHHQMuwAEAA6AAAAinNS8mwAgAAsABGFxAAAA8QAAAG0ABCyJHARgQRx0YE0AZCRJAAQsGgAEYNUABAx1AHQNKQBEYKkABAx9HHQsZQCELA0ABAwVHARg+RwEhINBoAAHAdAAAAAAAAAdVWgAHr20ACImDAAjL4AAI2woACQTGAAlABgAJaUMACY49AAmOQAAJ0RYACgcjAAoiJgAKZA0ACnd9AAqK7QAKqrMACrjqAAq9qgAKy2YACtUQAArVWgAK590ACvHNAAsExgALNZoACz6aAAtkigALjkMAC53mAAuwZgALxyYAC9XWAAvV2gAL5nMAC/NTAAv7wAAMIToADF3mAAxkEAAMpnAADKqzAAyqtgANCvAADTBmAA09rQANPqAADUxgAA1RHQANUoYADXHTAA13gAANiYoADZizAA2vdgANs0AADdVgAA3gwAAOAXYADhfDAA4ugwAOOl0ADku2AA6c9gAOsGYADuOdAA8W0AAPGjYADxyAAA9KAwAPd4YAD++QABAcgAAQJM0AEEiWABB6ugAQk/oAEJeGABDCnQAQ+D0AEQZQABELcAARNhoAEVDWABFVZgARwg0AEcRTABHOSgASOPYAElEjABJx2gATpgMAFHeNABSLcwAVxzMAAAAAAAH0oAAFuOMABletAAbjjQAHccYACDymAAmdWgAJ110ACk+mAAqp2gAK7vAACxxzAAuPIwAMAAAAAAAA//244//+V63//3HGAAA8pgABjjoAAZ1aAAMccwAEAAAAAAAAAAAGwAAAQl0AAEqqAABuOgAAhEMAAI46AACS9gAAl7MAAL9KAADPowAA0n0AANjjAADxkwABFsAAARxzAAEhMAABKqoAASwWAAEwWgABOlAAAYWwAAG+kwAB2wYAAeOQAAHtPQACdg0AAscgAARxzQAJTXOAf4AAADuAAQA6gAGAf4ACADuAAwA6gAMAPYABgH+AAgA9gAEAO4ABADqAAYB/gAQAPYABADuAAwA6gAOAf4AEAD2AAQA7gAEAOoABgH+ABAA9gAUAPYAAADuAAQA6gAGAf4AGAD2AAQA7gAEAOoABgH+ABgA9gAEAO4ADADqAA4B/gAaAf4AHgH+ACABZgAQAWoABAGqAAwBmgAmAf4AKADuAAQA6gAGAf4AKAD2AAQA7gAMAOoADgH+ACgA7gAGAOoABADuACQA6gAmAPYADAAGAAQBBgAEATYABAE6AAQBZgASAWoAB//9xxv/+440AAI46//3HGgABHHP//lVTAAGqrQACOOYAAscg//yqpgADVVoABAAAAAAAAAAAAAAAAAAAAAbjjQAXjk0=","cmmi6":"AXoAEgAAAH8AXwAPAAkAIAA6AAsAAAAGEM2+zgBgAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADyNLB1HVqwASdOsBUYRrABJ0qwTRhWsFUQULA1GDGwdQxCsAEYPbBtCE+wKRg/QAEDKsctGCNHQAAPwBkJC0ABCxHHPRgiRyELF8AVGARAAQssQAAAMcAAADVHAQMcQEUBEccRIS5AIAAgRwEYK0AhLxNAaQEoQB0DM8cBGDhHAQtBxx0hO0AcABVAARg2wAEYWEAUACBHARgHRlEYQEcBGF4yAABeMgAAXjIAAF4yAAABZAAAAWQAAB9TAAAfUwAAH0AAAB9AAAAfQAAAH0cAAB9HAAAfRwAAH5AAAB9HAAAfkAAAH0cAAAEQAAABFwAAUnUAAB/oATRSdQAAH1MAACTAQRhMsAEiTbApGEewSRVVsBULSbA1GDqwdR1RsAEYVrBVEAywWSEnsF0rWbBJCEWwAQNdsGEZVLBhFE6wFRg8sHUdU7cBGEuwBRg3sDEZMLB1FUSwYQQvsHkxXLB1MVewWRQtsHkxQ7BJGQjgAAAIxwAACMcAAF4hAABeIQAACsABISZAAAANwAAADkABCyHAASMWQAELGcdlKBpHIQMswAEAA6AAAAmnOS8lwAgAAsABGFtAAAA5QAAAG0ABCyFHARgQRyEYEkAVCRRAAQsFgAEYMkABAx1AHQNIQA0YKUABAx5HIQsYQCULA0ABAwZHARg+RwEhH9BwAAHAfAAAAAAAAAYS9QAGbQsAByEwAAd2hQAHoS0AB6qrAAfONQAIJesACC9oAAhL2wAIX0gACMNQAAjDUwAI8kAACQ8rAAkhpQAJJesACUcbAAlQGwAJWhMACWMQAAlskAAJccsACYl7AAmccAAJuVUACczNAAnxwwAJ//0ACiErAAo44AAKOWAACkeVAApNuwAKbogACon1AAqS9QAKzFMACufTAAsJeAALKqgACyslAAt2+wALnHAAC59FAAugsAALrI0AC7K1AAvHGAALy9gAC9/DAAvhpQAMAAAADALVAAwbfQAMRxgADFCVAAxmYwAMeksADHrFAAx/yAAMmCsADN9IAAz8MAANHG0ADVVQAA1nVQANaNgADYpoAA2/gAAOI6AADkqlAA5lcAAOhLsADsELAA7I+wAO0y0ADvHwAA8i0wAPOdMADz8gAA9oRQAPdq0AD3lYAA/49QAP/hUAEAWrABBZkwAQaTgAEHHAABF/+wASaisAEpXIABOOMAAAAAAAAe0LAAW45QAGPSgABuONAAdxyAAIEIAACWhlAAnXXQAKT6UACpm9AAru8AALHHMAC4ZDAAwAAAAAAAD//bjl//49KP//ccgAABCAAAFoZQABjjsAAxxzAAQAAAAAAAAAAA8NAABVUwAAbjgAAHCbAACEvQAAjcAAAJL1AACS+AAAoS0AAMQIAADSewAA2SAAANsFAADtjQAA9VgAAQl7AAEXtQABG4AAAS9oAAE0JQABNRsAATytAAGDUwABudgAAdVYAAHaEwAB3wMAAnYLAAKXswAEJesACAsQgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAEAFqAAQBqgAMAZoAJgH+ACgA7gAEAOoABgH+ACgA9gAEAO4ADADqAA4B/gAoAO4ABgDqAAQA7gAkAOoAJgD2AAwABgAEAQYABAE2AAQBOgAEAWYAEgFqAAf//e0P//vaFAACEvf/97QsAAQl7//5xyAABjjgAAhL1AAKXs//845AAAxxwAAQAAAAAAAAAAAAAAAAAAAAG440AFHHA","cmmi7":"AX4AEgAAAH8AYgAPAAkAIAA6AAwAAAAGMGWXcgBwAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADwOLBxHVywASdRsBUYSbABJ02wTRhZsFEQU7A1GDSwcQxFsAEYPbBpCFKwKRhCQAEDK8ctGCVHPAAQwCEJC0ABCxHHQRghRx0LGMAVGAVAAQsvQAAANcAAADlHAQMeQEUBEccZIS5AHAAjRwEYLUAdLxNAbQEqQB0DNscBGDxHAQtExx0hPkAcABZAARg3wAEYW0AUACNHARgHRlUYQ0cBGGEyAABhMgAAYTIAAGEyAAABZAAAAWQAACBTAAAgUwAAIEAAACBAAAAgQAAAIEcAACBHAAAgRwAAIJAAACBHAAAgkAAAIEcAAAEQAAABFwAAVXUAACDoATRVdQAAIFMAACfAPRhOsAEiULApGEqwSRVYsBULTLA1GD+wcR1UsAEYWbBREA6wWSEpsF0rXbBJCEiwAQNgsGEZV7BhFFGwFRhAsHEdVrcBGE+wBRg6sDEZMrBxFUawYQQxsHkxX7BxMVqwWRQwsHkxR7BJGQngAAAJxwAACccAAGEhAABhIQAADMABIShAAAANwAAAD0ABCyTAASMXQAELGsdlKBtHHQMvwAEABKAAAAqnOS8mwAwAAsAJGF5AAAA7QAAAHEABCyJHARgSRx0YFEAVCRVAAQsGgAEYM0ABAx1AHQNLQBEYLEABAx9HHQsZQCULA0ABAwhHARhBRwEhINB0AAHAfAAAAAAAAAVtuQAFx8sABmDeAAZ3iwAGw74ABueiAAcHHgAHElAAB2WZAAeQRwAHnkkAB6agAAgJwgAIGdIACCsnAAhO1wAIUUcACGCpAAht7gAIfKIACKCFAAiiwAAIrBsACLTSAAi7oAAI6a4ACOrSAAkFsgAJJJcACSoCAAlFGwAJXXkACWrlAAlsKwAJe8AACYPgAAmZ6QAJt44ACcLZAAnqJQAKHNsACiCHAApdRwAKXXkACpeFAAqwUAAKs34ACr6bAArLMgAKy8sACs6XAArXXgAK12IACv2SAAsJpQALGZ4ACx0nAAs5UAALTI4AC2uyAAt4XgALg9AAC5eXAAujKQALrosAC+IFAAwFtQAMGGcADFFHAAxzlQAMdDsADIouAAzDEgANHDcADTkVAA1rSwANgxAADb8CAA3FDgANz5IADeciAA4UpQAOLlcADjsXAA5JKQAOZRsADnpVAA7x9QAO+E4ADv1iAA8zBwAPRRkAD1veABA4PgARMMkAEW4lABI46QAAAAAAAddeAAW45QAGJTAABuOOAAdxxwAH5uUACTX3AAnXXgAKT6UACpZZAAru8AALHHIAC3/rAAwAAAAAAAD//bjl//4lMP//ccf//+blAAE19wABjjkAAxxyAAQAAAAAAAAAABT5AAAXtwAAYuAAAG45AAB9+QAAi64AAJL3AACUhQAAp/UAAMdpAADSfgAA3+UAAOEeAADssgAA+/AAAQmlAAEQ8AABHuAAATHHAAE5SQABOusAAT5gAAGCcAABt0IAAcsuAAHU2QAB2WkAAnXZAAJ2CwAD78AAB2XVgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAJAFqAAQBqgAMAZoAKgH+ACwA7gAEAOoABgH+ACwA9gAEAO4ADADqAA4B/gAsAO4ABgDqAAQA7gAoAOoAKgD2AAwABgAEAQYABAE2AAQBOgAEAWYAJgFqAAf//ggf//wQQAAB9+f/+CCAAAPvy//6GFwABeesAAfflAAJ13gAA+/D//QwwAALz1wAEAAAAAAAAAAAAAAAAAAAABuOOABK68g==","cmmi8":"AXwAEgAAAH8AYQAPAAkAIAA6AAsAAAAG1wEXMgCAAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADuOLBxHVuwASdQsBUYSLABJ0ywTRhYsFEQUrA1GDSwcQxEsAEYO7BpCFGwKRhBQAEDK8ctGCVHPAARwB0JCkABCxDHRRghRxkLGcAVGAVAAQsvQAAANMAAADdHAQMeQEEBEMchIS5AGAAjRwEYLUAZLxJAbQEpQBkDNccBGDxHAQtDxxkhPUAYABVAARg2wAEYWkAUACNHARgHRlkYQkcBGGAyAABgMgAAYDIAAGAyAAABZAAAAWQAACBTAAAgUwAAIEAAACBAAAAgQAAAIEcAACBHAAAgRwAAIJAAACBHAAAgkAAAIEcAAAEQAAABFwAAU3UAACDoATRTdQAAIFMAACfAPRhNsAEiT7ApGEmwSRVXsBULS7A1GD6wcR1UsAEYWLBREA+wVSEqsF0rXLBJCEewAQNfsGEZVrBhFFCwFRhAsHEdVbcBGE6wBRg6sDEZMrBxFUWwYQQzsHkxXrBxMVmwVRQxsHkxRrBJGQngAAAJxwAACccAAGAhAABgIQAADMABIShAAAANwAAADkABCyTAASMXQAELG8dlKBpHGQMvwAEABKAAAAunOS8mwAwAAsAJGF1AAAA5QAAAHEABCyJHARgTRxkYFEAVCRZAAQsGgAEYMEABAx1AGQNKQBEYLEABAx9HGQsYQCULA0ABAwhHARg/RwEhINB0AAHAfAAAAAAAAAS46AAFEvoABZe4AAXJtAAGBMIABiOUAAY46gAGZyAABpx4AAbfUAAG4AQABvHMAAdFuAAHXPIAB172AAd47AAHhbgAB4toAAeXBgAHq+AAB9mgAAfceAAH4uAAB+hSAAfuPgAIFwYACCqwAAg3gAAIRyQACFtKAAhnJAAIgAgACIfaAAiOugAItKYACL9QAAjBjAAI2hoACPSmAAkHngAJOOwACUlGAAmJ/AAJkc4ACbcIAAnDHgAJy+IACde8AAnaWgAJ5boACeZwAAnqtAAKGxAAChz0AAo6GgAKSUYAClCgAApWygAKeewACo5AAAqSDgAKwioACsZwAArHJAAK6y4ACxP0AAscfAALVWAAC4BAAAuFBAALj7AAC8oAAAwdxAAMMwIADHVgAAyI7gAMu8gADM26AAzSiAAM5igADREcAA0s2AANOPAADT8wAA1fDAANfkQADfJkAA33KAAN+24ADh00AA4quAAOVhgADwmIABAKBAAQU5wAEQAQAAAAAAABxxwABbjkAAYMPAAG444AB3HIAAe8TgAJApAACddeAApPpgAKk9AACu7uAAsccgALeJwADAAAAAAAAP/9uOT//gw8//9xyP//vE4AAQKQAAGOOgADHHIABAAAAAAAAAAAGWwAADCWAABtCgAAbjgAAHjkAACS9gAAmZgAAJ/+AACtCgAAyfQAANJ8AADk+gAA5bAAAOwQAADxyAABC9oAARjiAAEhbAABM44AATtgAAE/pAABQAAAAYC2AAG0RAABw44AAc08AAHY5AACXHQAAnYMAAPHIAAGsQCAf4AAADuAAQA6gAGAf4ACADuAAwA6gAMAPYABgH+AAgA9gAEAO4ABADqAAYB/gAQAPYABADuAAwA6gAOAf4AEAD2AAQA7gAEAOoABgH+ABAA9gAUAPYAAADuAAQA6gAGAf4AGAD2AAQA7gAEAOoABgH+ABgA9gAEAO4ADADqAA4B/gAaAf4AHgH+ACABZgAQAWoABAGqAAwBmgAmAf4AKADuAAQA6gAGAf4AKAD2AAQA7gAMAOoADgH+ACgA7gAGAOoABADuACQA6gAmAPYADAAGAAQBBgAEATYABAE6AAQBZgASAWoAB//+HHP//DjgAAHjk//4ccAAA8cj//pVUAAFqrAAB45AAAlx0//0qqAAC1VgABAAAAAAAAAAAAAAAAAAAAAbjjgARABA=","cmmi9":"AX0AEgAAAH8AYQAPAAkAIQA6AAsAAAAGNfmeIgCQAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADsObB1HVuwASdQsBUYSLABJ0ywURhZsF0QUrA5GDOwdQxEsAEYO7BtCFGwLRhBQAUDK8cxGCRHPAASwCEJCkABCxDHTRggRx0LGcAVGAVAAQswQAAAM8AAADdHAQMfQEUBEMclIS5AHAAjRwEYLUAdLxFAcQEpQB0DNscBGD1HAQtCxx0hPEAcABVAARg1wAEYWkAUACNHARgHRlkYQ0cBGGAyAABgMgAAYDIAAGAyAAABZAAAAWQAACFTAAAhUwAAIUAAACFAAAAhQAAAIUcAACFHAAAhRwAAIZAAACFHAAAhkAAAIUcAAAEQAAABFwAAU3UAACHoATRTdQAAIVMAACfAPRhNsAEiT7AtGEmwSRVXsBULS7A5GECwdR1UsAEYWbBdEA+wVSEqsGErXLBJCEewAQNfsGUZVrBlFFCwFRg/sHUdVbcBGE6wCRg6sDUZNLB1FUWwZQQysH0xXrB1MViwVRQxsH0xRrBJGQngAAAJxwAACccAAGAhAABgIQAADMABIShAAAANwAAADkABCyXAASMWQAELHMdpKBpHHQMwwAEABKAAAAunQS8mwBgAAsANGF1AAAA4QAAAG0ABCyJHARgTRx0YFEAVCRhAAQsGgAEYL0ABAx1AHQNKQBEYLEABAx5HHQsXQCkLA0ABAwhHARg+RwEhIdB4AAHAgAAAAAAAAASRYAAE6EsABVoSAAWghAAF0isABfAwAAX9ngAGQ/IABmUgAAapjAAGuOIABspEAAcMAAAHHnwABzAwAAc1twAHPSQAB0s1AAdY9AAHa3QAB6JHAAelIAAHpesAB6kVAAeykAAH114AB/XgAAf7QAAH/NQACBlFAAgcbgAINgkACDjgAAhBQgAIeJIACH5XAAiFNAAIj8sACLMHAAi2MAAI5rQACQ97AAlEawAJUisACWcsAAlpYgAJdoIACXmrAAmLXAAJlxAACZewAAmX2QAJwHcACcmgAAnoSQAJ63IACgsMAAoLrgAKGRAACjsVAApAxwAKc9IACn/UAAp//AAKifAACrp0AAq8+wAK9oAACy9UAAswBwALMKcAC2rOAAu86wALyRIADBnnAAwrcAAMVK4ADHErAAxxhQAMg1QADKxOAAzJoAAMykAADOBQAAz4RAANJUcADY9nAA2VUAANmjcADaPZAA20IAAN7QUADnzSAA+HQAAP4ucAEHHAAAAAAAABunkABbjkAAX06QAG444AB3HHAAeTVwAI0MkACddeAApPpQAKjq4ACu7uAAsccgALcusADAAAAAAAAP/9uOT//fTp//9xx///k1cAANDJAAGOOQADHHIABAAAAAAAAAAAAykAABzgAABD9AAAbjkAAHTwAAB4GQAAkvcAAJpkAACvzgAAsPwAAMvuAADVpQAA6O4AAOk+AADp4AAA6skAAQfnAAEjZQABJL4AATTwAAFAogABQ/QAAUWJAAGGUgABunkAAb2iAAHHUAAB1VUAAkiwAAJ2CwADp4AABoZQgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAEAFqAAQBqgAMAZoAJgH+ACgA7gAEAOoABgH+ACgA9gAEAO4ADADqAA4B/gAoAO4ABgDqAAQA7gAkAOoAJgD2AAwABgAEAQYABAE2AAQBOgAEAWYAEgFqAAf//ixD//xYgAAB08P/+LEAAAOng//6hMAABXtAAAdPAAAJIsP/9QmAAAr2gAAQAAAAAAAAAAAAAAAAAAAAG444AEHHA","cmmib10":"AX0AEgAAAH8AYgAPAAkAIAA6AAsAAAAGREaJlACgAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNTUlCAAAAAAAAAAAAAAAAAAAAAADqLKB1HVqgASdPoBkYSKABJ02gTRhdoFkQVKA1GDCgdQxFoAEYPKBpCFOgLRhEQAEDLscdGCBHQAASwCUJDEABCw3HORgiRyELGsAZGAVAAQsvQAAAMMAAADlHAQMeQEUBDccVITRAIAAmRwEYNUAhLxFAbQEoQCEDOscBGD5HAQtDxyEhPUAgABRAARg3wAEYXEAYACZHARgHRlUYQUcBGGEyAABhMgAAYTIAAGEyAAABZAAAAWQAAB1TAAAdUwAAHUAAAB1AAAAdQAAAHUcAAB1HAAAdRwAAHZAAAB1HAAAdkAAAHUcAAAEQAAABFwAAVnUAAB3oATRWdQAAHVMAACfAQRhRoAEiTqAtGEqgSRVXoBkLSaA1GDagdR1VoAEYXaBZEA6gUSEpoF0rW6BJCEKgAQNgoGUZWaBlFEygGRg/oHUdUKcBGFKgBRg4oDEZK6B1FUegZQQyoHkxX6B1MVigURQxoHkxRqBJGQngAAAJxwAACccAAGEhAABhIQAAC8ABISpAAAAQwAAAD0ABCyXAASMYQAELHMdhKBdHIQMvwAEABLAAAAq3PS8kwAwAAsAJGF5AAAA7QAAAH0ABCyNHARgWRyEYE0AZCRVAAQsGgAEYM0ABAxtAIQNLQBEYLUABAyFHIQsZQCkLA0ABAwhHARhARwEhHdBwAAHAfAAAAAAAAAUccAAFkgMABkvaAAZ6CwAGl7MABqT4AAbHGgAHBbAAByfQAAeIiAAHk+oAB7u6AAgiIAAILYIACDb7AAhVUgAIVVMACFsCAAh1kgAIdgoACIAAAAisjQAIt+0ACNuVAAjhqAAI/SUACREOAAkWwwAJMzAACTrGAAlbAgAJcMMACXHFAAmZmAAJnWIACajDAAnBagAJyfMACg41AAoWvgAKGZgACiA6AAovoAAKgtUACotgAAqONgAKrnMACru4AArLEwAK2CsACuVyAArrIgAK+VoACwWtAAsQlQALFVMAC1NuAAtmYgALaEoAC2yiAAt8MAALfSYAC5HFAAvYKgAL9JoADBa9AAwiHgAMK5oADERAAAxcbgAMze0ADOOKAAz2CAANEjAADU29AA1i+AANdb4ADdzKAA3gIAAN5dAADek6AA31JQAOD/0ADik7AA4wDgAOT6AADwKLAA8nzgAPNJsAD1VQAA+J8AAPmZYAD7dzABCEugARfSMAEkWrABJmYAAAAAAAAn0oAAXHHQAGQf4ABxxyAAeOOgAICRsACV5wAAooowAKT6UACvpQAAsXkwALHHIAC5dTAAwAAAAAAAD//ccd//5B/v//jjoAAAkbAAFecAABjjoAAxxyAAQAAAAAAAAAABE+AAAkCAAAS9oAAHHGAAB7vQAAgtgAAItiAACXtQAAnHIAAKyQAADGCwAA3HIAAN9KAAD+lQAA/sgAAQWwAAEajQABHd4AATF+AAE+kwABREUAAVESAAGccgABxEUAAdPqAAHdTgACJ9MAAnpQAAKOOAAEFsAABzMygH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAEAFqAAQBqgAMAZoAJgH+ACgA7gAEAOoABgH+ACgA9gAEAO4ADADqAA4B/gAoAO4ABgDqAAQA7gAkAOoAJgD2AAwABgAEAQYABAE2AAQBOgAEAWYAEgFqAAf//fSj//vpQAACC2P/99KAAAQWw//53eAABiIgAAgtgAAKOOP/87vAAAxEQAAQAAAAAAAAAAAAAAAAAAAAHHHIAEmZg","cmmib5":"AXYAEgAAAH8AYAAOAAkAHAA6AAsAAAAGQJsAnwBQAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNTUlCIFYyLjIAAAAAAAAAAAAAAAD0J6BlHVqgASdOoB0YR6ABJ0qgORhZoD0QU6ApGDKgZQxDoAEYPaBZCFKgIRhCQAEDK7cJGCBHSAAQsBkJDEABCxK3FRgmRxELF7AdGARAAQsxQAAAMrAAADdHAQMbQEUBErcBITRAEAAeRwEYMEARLxlAXQEsQBEDNrcBGDlHAQtEtxEhO0AQABFAARg4sAEYW0AcAB5HARgHRTUYPkcBGF8yAABfMgAAXzIAAF8yAAABZAAAAWQAAB1TAAAdUwAAHUAAAB1AAAAdQAAAHUcAAB1HAAAdRwAAHYAAAB1HAAAdgAAAHUcAAAEQAAABFwAAVJYAAB3YATRUlgAAHVMAACKwSRhQoAEiTaAhGEigMRVVoB0LRqApGC2gZR1RoAEYWaA9EAugQSEjoE0rWKAxCECgAQNeoFEZVqBRFEmgHRg1oGUdT6cBGEygARgzoCUZKKBlFUWgUQQvoGkxXaBlMVegQRQuoGkxQaAxGQrQAAAKtwAACrcAAF8hAABfIQAACLABISpAAAANsAAAD0ABCySwASMYQAELE7dVKBZHEQMxsAEABbAAAAa3LS8lsAAAArABGFxAAAA/QAAAHEABCyRHARgURxEYFUAdCQ5AAQsJcAEYOkABAx9AEQNLQAUYKUABAyFHEQsaQA0LBUABAwNHARg8RwEhHcBgAAGwbAAAAAAAAAeC0wAIIDoACSfQAAlqLQAJimoACczKAAnYIwAJ2CoACeR6AAoWugAKi1oACrYDAAstfQALRxoAC022AAtPnQALbBAAC3dtAAuT7QALoSoAC7nTAAvlagAL5mAAC/ANAAwWugAMGoYADEvTAAx3cAAMqqAADK19AAywUwAMxhAADREKAA0qowANN3AADUJWAA1IBgANWv0ADXdtAA24IAAN2wAADedQAA3u6gAN+kYADhxmAA5smgAOfRoADoeNAA6R+gAOmY0ADq7jAA7wzQAO/dMADwtWAA8U0wAPNvMAD0RAAA9XMAAPimAAD5PdAA/B7QAP9JAAD/wqABAtcwAQS1MAEHs2ABCIegAQji0AEM3jABDqnQAREQAAEWd6ABGnMAARrgYAEf4NABIiEwASJrMAEkZ6ABJMKgASWvMAEnRGABKHagASj5YAExxgABNdgwATfoMAE5EAABQMugAUI30AFGZTABSwTQAWbeoAFt3GABdcXQAYRC0AAAAAAALBbQAFxx0ABtJDAAcccwAHjjoACPRmAAoopgAKT6YACndAAAr6UAALHHMAC8yTAAwAAAAAAAD//ccd//7SQ///jjoAAPRmAAGOOgACd0AAAxxzAAQAAAAAAAAAAHHGAACFsAAAinAAAJezAACYMAAAoiYAAKT6AAC0+gAAulAAAL0mAAEAAAABDM0AASIjAAEligABKUAAATYKAAE8rQABSfMAAZJ9AAHOOgAB93YAAhCAAAIn0wACelAAAzjgAAUnzQAJwWqAf4AAADuAAQA6gAGAf4ACADuAAwA6gAMAPYABgH+AAgA9gAEAO4ABADqAAYB/gAQAPYABADuAAwA6gAOAf4AEAD2AAQA7gAEAOoABgH+ABAA9gAUAPYAAADuAAQA6gAGAf4AGAD2AAQA7gAEAOoABgH+ABgA9gAEAO4ADADqAA4B/gAaAf4AHgH+ACABZgAQAWoABAGqAAwBmgAmAf4AKADuAAQA6gAGAf4AKAD2AAQA7gAMAOoADgH+ACgA7gAGAOoABADuACQA6gAmAPYADAAGAAQBBgAEATYABAE6AAQBZgASAWoAB//9bBv/+tg0AAKT6//1sGgABSfP//hETAAHu7QACk+YAAzjg//wiJgAD3doABAAAAAAAAAAAAAAAAAAAAAcccwAZVUA=","cmmib6":"AXsAEgAAAH8AYQAOAAkAHwA6AAwAAAAGMdAa6ABgAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNTUlCIFYyLjIAAAAAAAAAAAAAAADyJ6BxHVugASdPoCEYSKABJ0ugQRhaoFEQVKA1GDGgcQxFoAEYPaBlCFOgLRhDQAEDLLcVGB9HTAAPsCUJC0ABCxG3KRgkRx0LGbAhGAVAAQswQAAAMrAAADlHAQMbQEkBEbcNITVAHAAgRwEYM0AdLxZAaQEqQB0DNrcBGDtHAQtEtx0hPEAcABJAARg3sAEYXEAgACBHARgHRUUYQEcBGGAyAABgMgAAYDIAAGAyAAABZAAAAWQAAB5TAAAeUwAAHkAAAB5AAAAeQAAAHkcAAB5HAAAeRwAAHpAAAB5HAAAekAAAHkcAAAEQAAABFwAAVYYAAB7YATRVhgAAHlMAACWwTRhRoAEiTqAtGEmgPRVWoCELR6A1GC2gcR1SoAEYWqBREAygVSEmoFkrWaA9CEGgAQNfoF0ZV6BdFEqgIRg4oHEdUKcBGE2gARg0oDEZKKBxFUagXQQvoHUxXqBxMVigVRQuoHUxQqA9GQnQAAAJtwAACbcAAGAhAABgIQAACrABISlAAAANsAAADkABCyKwASMYQAELFbdhKBdHHQMwsAEAA7AAAAi3OS8jsAgAArAFGF1AAAA/QAAAHEABCyJHARgURx0YE0AhCRBAAQsGcAEYOkABAx1AHQNMQBEYK0ABAyFHHQsaQBkLA0ABAwRHARg+RwEhHsBsAAGweAAAAAAAAAaXswAHJ9MACFdAAAhZIwAIWwgACK2FAAi0IAAI8rsACP4YAAkDzQAJkgMACZPrAAogPQAKKbgACjb9AAo38AAKPKsAClENAAqA9QAKjjgACqT9AAq37QAKu7gACs3wAArTcAAK9KMACy2AAAtTcAALXOsAC2R9AAuLTQALoD0AC8NTAAvu8AAL9KAADAHlAAwGowAMEJUADFzrAAxsUAAMiIsADJAdAAyeWAAMskMADPaFAA0YdQANJ9AADSfTAA0xRQANMUsADUFrAA1dYwANgPAADbnVAA26UwANu3sADbu9AA29pQAN440ADhH9AA4x2AAOPKsADlc9AA6A8AAOsj0ADt1gAA7u8AAO9oMADv4TAA9aPQAPesgAD441AA/XYwAQHMgAECedABBPowAQkgAAEJprABCwsAAQtmMAEMFoABDp4AAQ6/MAEPnTABFkewARy4sAEfI7ABH6TQASbYAAEovVABKXrQAS5XAAFFc7ABT0mAAVi9MAFjFFAAAAAAACqqsABccdAAawXQAHHHMAB447AAjASwAKKKUACjoIAApPpQAK+lAACxxzAAu84AAMAAAAAAAA//3HHf/+sF3//447AADASwABjjsAAjoIAAMccwAEAAAAAAAAAAAAAwAAA8gAACC4AABxyAAAhbAAAJXNAACXtQAAmZsAAKA9AAC6UAAAuqsAAMWwAADIiAABAAAAARJ9AAEpiAABLYMAATFQAAEzMwABNoUAATjjAAGXOwAB0CAAAeZlAAH/bQACLYUAAnpQAAMAAAAEzMsACMkFgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAJAFqAAQBqgAMAZoAKgH+ACwA7gAEAOoABgH+ACwA9gAEAO4ADADqAA4B/gAsAO4ABgDqAAQA7gAoAOoAKgD2AAwABgAEAQYABAE2AAQBOgAEAWYAJgFqAAf//ZmX//szNAACZm//9mZsAATM1//4zMwABzNAAAmZrAAMABQABMzP//GZoAAOZoAAEAAAAAAAAAAAAAAAAAAAABxxzABbI+w==","cmmib7":"AXkAEgAAAH8AYAAOAAkAHwA6AAsAAAAGACrX0wBwAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNTUlCIFYyLjIAAAAAAAAAAAAAAADwKqBxHVmgASdOoBkYR6ABJ0qgSRhaoFUQU6AxGDCgcQxEoAEYPKBlCFGgKRhCQAEDLLcVGB9HQAAQsCUJC0ABCw63NRgkRx0LGLAZGARAAQsuQAAAMLAAADdHAQMbQEUBDrcNITRAHAAhRwEYMkAdLxRAaQEoQB0DOLcBGDpHAQtBtx0hO0AcABJAARg2sAEYW0AYACFHARgHRU0YP0cBGF8yAABfMgAAXzIAAF8yAAABZAAAAWQAAB1TAAAdUwAAHUAAAB1AAAAdQAAAHUcAAB1HAAAdRwAAHZAAAB1HAAAdkAAAHUcAAAEQAAABFwAAVHYAAB3YATRUdgAAHVMAACWwQRhQoAEiTKApGEigPRVVoBkLRqAxGC2gcR1SoAEYWqBVEAygUSEmoFkrWKA9CECgAQNeoF0ZVqBdFEmgGRg5oHEdT6cBGE2gBRgzoC0ZJ6BxFUWgXQQxoHUxXaBxMVegURQvoHUxQ6A9GQjQAAAItwAACLcAAF8hAABfIQAACrABISlAAAAPsAAADUABCyKwASMXQAELGbdhKBZHHQMusAEAA7AAAAm3OS8jsAgAArABGFxAAAA9QAAAHkABCyJHARgVRx0YE0AZCRFAAQsGgAEYNUABAxxAHQNLQBEYK0ABAyBHHQsaQCELA0ABAwVHARg+RwEhHcBsAAGweAAAAAAAAAXvwAAGdmUAB3vQAAeZVwAHxYAAB89iAAfjkAAINaUACFb5AAhsGQAIwxAACPanAAlZIgAJW9cACV/pAAluiQAJhoUACYbrAAmxuQAJvV4ACcnVAAnnFQAJ/rcACg8LAAoa1wAKIrAACmD+AApqeQAKe4kACoLbAAqqewAK1PAACt/rAAr8fgALAi4ACwtiAAs2DgALORkAC39JAAuNawALjfcAC5MZAAvMaQAL0BIADCSSAAwlIAAMJXkADC/1AAw0BwAMWHcADGxOAAx6MAAMmRIADKZZAAzFOwAMyMAADNU+AAznpQANBScADRQSAA0qiwANR4cADXd5AA2jWwAN01AADdPbAA3X+wAN5GAADkvpAA50BQAOeekADrmgAA8DFwAPEMAADxwwAA9/WQAPgY4AD47gAA+UkAAPnNsAD8YOAA/QLgAP1/sAECpFABCsawAQ0ksAENfHABFE4gARTTcAEWPFABGdrgAS2UcAE5cuABQ7IgAUtg4AAAAAAAKaaQAFxx4ABpLwAAcccgAHjjkACJCrAAoBTgAKKKUACk+lAAr6UAALHHIAC7GpAAwAAAAAAAD//cce//6S8P//jjkAAJCrAAGOOQACAU4AAxxyAAQAAAAAAAAAAARyAAAdhwAAQTkAAHHHAACFsAAAkXkAAJe1AACd8AAAnuIAAL67AADN0AAA0KkAANKyAAEAAAABFo4AASLyAAEpLgABLGAAATWlAAE66wABOyAAAZW+AAHMmQAB2jcAAfNAAAIxlQACelAAAtdeAASLyQAIF5WAf4AAADuAAQA6gAGAf4ACADuAAwA6gAMAPYABgH+AAgA9gAEAO4ABADqAAYB/gAQAPYABADuAAwA6gAOAf4AEAD2AAQA7gAEAOoABgH+ABAA9gAUAPYAAADuAAQA6gAGAf4AGAD2AAQA7gAEAOoABgH+ABgA9gAEAO4ADADqAA4B/gAaAf4AHgH+ACABZgAQAWoABAGqAAwBmgAmAf4AKADuAAQA6gAGAf4AKAD2AAQA7gAMAOoADgH+ACgA7gAGAOoABADuACQA6gAmAPYADAAGAAQBBgAEATYABAE6AAQBZgASAWoAB//9uh//+3Q4AAJF5//26GwABIvL//kuVAAG0awACReUAAtde//yXKQADaNcABAAAAAAAAAAAAAAAAAAAAAcccgAU9xI=","cmmib8":"AX4AEgAAAH8AYwAOAAkAIAA6AAwAAAAGojUtLgCAAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNTUlCIFYyLjIAAAAAAAAAAAAAAADuLKB1HVugASdQoB0YSaABJ06gTRhdoFkQVqA1GDCgdQxGoAEYP6BpCFSgLRhFQAEDLbcZGCBHQAARsCUJDEABCw63ORglRyELGrAdGAVAAQsvQAAAMbAAADpHAQMdQEkBDrcRITZAIAAkRwEYNUAhLxRAbQEpQCEDO7cBGD1HAQtEtyEhPkAgABJAARg5sAEYXkAcACRHARgHRVEYQkcBGGIyAABiMgAAYjIAAGIyAAABZAAAAWQAAB5TAAAeUwAAHkAAAB5AAAAeQAAAHkcAAB5HAAAeRwAAHpAAAB5HAAAekAAAHkcAAAEQAAABFwAAV3YAAB7YATRXdgAAHlMAACiwQRhToAEiT6AtGEugRRVYoB0LSqA1GDSgdR1VoAEYXaBZEA2gVSEnoF0rXKBFCEOgAQNhoGEZWaBhFEygHRg8oHUdUacBGFKgCRg3oDEZKqB1FUigYQQzoHkxYKB1MVqgVRQyoHkxR6BFGQnQAAAJtwAACbcAAGIhAABiIQAAC7ABIStAAAAQsAAAD0ABCyKwASMYQAELG7dlKBdHIQMvsAEABLAAAAq3PS8msAwAArAFGF9AAABAQAAAH0ABCyNHARgWRyEYFUAdCRNAAQsGgAEYOEABAxxAIQNNQBUYLkABAyFHIQsZQCkLA0ABAwhHARhBRwEhHsBwAAGwfAAAAAAAAAVxygAF8VAABtdCAAbhrAAHCBQAByjMAAdHIAAHT6gAB59OAAfbCAAH7BoACDHKAAiGaAAIszgACLyyAAjPqAAI2DAACO9MAAkBbAAJAXIACRZMAAkvbAAJQHwACWHcAAl3BAAJe74ACaT4AAm0pgAJwH4ACczSAAnmagAKAdoAChsOAApGqAAKRqoACkiMAApLagAKTFoACpYOAAqZnAAKy2gACs2IAArSCgAK+8AACyZsAAsu8gALYxwAC27yAAtu9gALbzwAC30sAAuHIgALoqAAC64EAAu3fgALvawAC9dkAAwFPgAME+4ADCiMAAwqrgAMO4QADD3AAAxJDAAMiI4ADLBgAAzYNAAM+OwADP+OAA0RFgANE/AADX+8AA2qsAANrvYADeNMAA4vzgAONZwADj+aAA6rDgAOtX4ADrswAA67OgAOwXIADumiAA785AAO/pwADz6cAA/VEgAP+OgAD/3kABBVXgAQZm4AEIRKABCgwAARutYAEpEYABM9LgATmaQAAAAAAAKOOAAFxx4ABnXEAAcccgAHjjoACGFKAAnI0gAKKKQACk+mAAr6UAALHHIAC6awAAwAAAAAAAD//cce//51xP//jjoAAGFKAAGOOgAByNIAAxxyAAQAAAAAAAAAAAACAAAJxgAAMNIAAFmYAABxxgAAhbAAAItiAACXtAAAnd4AAKQGAADBxgAA0+gAANbAAADk+AABAAAAARbCAAEZmAABIxYAAS6AAAE7ugABPHIAAT0mAAGTNAAByIgAAdESAAHqGAACLYQAAnpQAAK45gAEWwgAB5KCgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAJAFqAAQBqgAMAZoAKgH+ACwA7gAEAOoABgH+ACwA9gAEAO4ADADqAA4B/gAsAO4ABgDqAAQA7gAoAOoAKgD2AAwABgAEAQYABAE2AAQBOgAEAWYAJgFqAAf//dJ7//uk+AACLYv/90nwAARbE//5d3AABoiYAAi2IAAK46gABFsL//Lu6AANETAAEAAAAAAAAAAAAAAAAAAAABxxyABOZpA==","cmmib9":"AX4AEgAAAH8AYwAOAAkAIAA6AAwAAAAGV8o2zQCQAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNTUlCIFYyLjIAAAAAAAAAAAAAAADsLKB1HVugASdQoB0YSaABJ06gTRheoFkQVaA1GDCgdQxGoAEYPKBpCFSgLRhFQAEDLbcZGCBHQAARsCUJDEABCw63ORgiRyELGrAdGAVAAQsvQAAAMbAAADpHAQMdQEkBDrcRITVAIAAmRwEYN0AhLxJAbQEpQCEDO7cBGD1HAQtEtyEhP0AgABNAARg5sAEYXUAcACZHARgHRVUYQkcBGGIyAABiMgAAYjIAAGIyAAABZAAAAWQAAB5TAAAeUwAAHkAAAB5AAAAeQAAAHkcAAB5HAAAeRwAAHpAAAB5HAAAekAAAHkcAAAEQAAABFwAAV3YAAB7YATRXdgAAHlMAACewQRhSoAEiT6AtGEugRRVYoB0LSqA1GDSgdR1WoAEYXqBZEA2gUSEooF0rXKBFCEOgAQNhoGUZWqBlFE2gHRhAoHUdUacBGFOgBRg4oDEZK6B1FUigZQQzoHkxYKB1MVmgURQyoHkxR6BFGQnQAAAJtwAACbcAAGIhAABiIQAAC7ABISpAAAAQsAAAD0ABCyWwASMYQAELHLdhKBdHIQMvsAEABLAAAAq3PS8ksAwAArAJGF9AAAA+QAAAH0ABCyNHARgWRyEYFUAdCRRAAQsGgAEYNkABAxtAIQNMQBUYLkABAyFHIQsZQCkLA0ABAwhHARhBRwEhHsBwAAGwfAAAAAAAAAVCWwAFvFkABonJAAar7AAGyaAABtm+AAb/+QAHJowAB1zlAAetLgAHuxcAB/NZAAhVAgAIYpQACHWMAAiSAAAIlckACKHLAAir5wAIv9QACMNOAAjp3AAI8W4ACRpnAAkkBAAJO7kACVm8AAlimwAJdi4ACXdwAAmfRQAJsTcACbz7AAnolwAJ68AACfFwAAn67AAKBVsAClJ5AApTQAAKZwIACnJkAAp1wgAKuIkACtUAAAraYAAK/rUACwtVAAsLWQALFAQACyF5AAs/LAALQbcAC0WCAAtHuQALXVwAC2jnAAuibAALudAAC8mHAAvKPgALzCQAC9EwAAvUwAAMJoUADEgFAAxsrgAMgYwADIzuAAyfPgAMrfQADSAUAA08BAANSCwADW8UAA20vgANvfQADc9rAA44bAAOPucADkSXAA5JSQAOU3cADnCsAA6IBAAOiwsADrnLAA9gEgAPhusAD477AA/HEAAP6+UAEA6AABAVngARDn4AEfe7ABK2ywAS7uAAAAAAAAKEvgAFxxwABlsHAAcccgAHjjkACDRXAAmSxwAKKKQACk+lAAr6UAALHHIAC54nAAwAAAAAAAD//ccc//5bB///jjkAADRXAAGOOQABkscAAxxyAAQAAAAAAAAAAA3uAAAPLgAAP9cAAGySAABxxwAAhbAAAIakAACXtAAAnRUAAKjFAADEJQAA2KcAANt+AADzNAABAAAAAQ1FAAEb9wABHlcAATArAAE9oAABQHkAAUtgAAGatQAByfQAAdIEAAHi/AACKlsAAnpQAAKhLgAENRUAB12LgH+AAAA7gAEAOoABgH+AAgA7gAMAOoADAD2AAYB/gAIAPYABADuAAQA6gAGAf4AEAD2AAQA7gAMAOoADgH+ABAA9gAEAO4ABADqAAYB/gAQAPYAFAD2AAAA7gAEAOoABgH+ABgA9gAEAO4ABADqAAYB/gAYAPYABADuAAwA6gAOAf4AGgH+AB4B/gAgAWYAJAFqAAQBqgAMAZoAKgH+ACwA7gAEAOoABgH+ACwA9gAEAO4ADADqAA4B/gAsAO4ABgDqAAQA7gAoAOoAKgD2AAwABgAEAQYABAE2AAQBOgAEAWYAJgFqAAf//eVz//vK7AACGpP/95XUAAQ1H//5sFwABk+sAAhqOAAKhMgABDUX//NgwAAMn1QAEAAAAAAAAAAAAAAAAAAAABxxyABLu4A==","cmr10":"AUQAEgAAAH8AJAAQAAoABQBYAAoAAAAHS/FgeQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADqEsAAAB7AAAAcwAAAFsAAABTAAAAawAAAGMAAABzAAAAYwAAAHMAAABjAAAAQ0BEKD9AAAA/QAAAe0AAAHtAAAAEwAAACOAAACtAAAArQAAAKkAAACtAAAApgAAAa0AAACAYAAAvQAAAYMAAAHDAAAApVAAAfwAAAIsAAABziAAABMAEAAdABFwrQAAAe1wAACvMAAB7zAAAc0AAAAdABEgX5AAAF+QAACvAAABx0AAABGAAAAzABFQEQAAAK+QAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAEwAAABOAAAAUgAABwhAAAJSAAACdABGBzQAAAawAFMF8AAABjAAAAbwAE1FcAAABPAASQdwAAAGsAAAATAAVcMwAAAHMABKhLAAVIgwAAAGsAAABzAATUVwAEeHMgAABnAAUwPwAAAGMABLhrAAAAawAUkI8AFJBrAASoawAkvEcAAAAH5AAAK0AAAAfkAAArQAAABsAAAAdABEQowAUgP0AFCCDABQA/QAAAIMAAAAtARAgo4BVYP0AE6AbAAAAK4AAAO0AEZAdAAAB4wAToPMAE6CjABQg84AUINOAAABjAAAAcwAAAFgAFKDzABSw4wBRkYMAUaDjAAAA44BR8IMAAACjANFiEwDAAK0AAACrAAAAqwAAAAAAAAAARxyAAE45AABVVWAAXHHQAGOOUABkRGAAZPpgAHHHMAB447AAgAAgAIAAMACDjlAAhxyAAIccoACOOQAAlVWAAJxx4ACgACAApxygAKqq0ACuOQAAsccwALVVgAC447AAvHHgAMAAIADDjmAAxxygAMjjsADVVYAA5xygAOqq0AEAADABA45gAQccoAAAAAAAGwWwAF3rgABuOOAAgAAAAIccgACRWdAAlVVgAJ114ACg46AApPpQAKr40ACu7uAAsccgALtgsADAAAAAAAAP/93rgAAMcdAADjjgABVVYAAY46AAK44wADHHAAAxxyAAQAAAAAAAAAADjjAABmZgAAccgAAT6VAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/7jjj/+uONAAE+lQABxx3//xxy//+OOP/+qqr//jjjAABxyAAA444AAAAAAAVVVgACqqsAAccdAAbjjgAQAAMAAccd","cmr12":"AUIAEgAAAH8AIgAQAAoABQBYAAoAAAAHWKtRCwDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADmD8AAABzAAAAawAAAE8AAABHAAAAXwAAAFcAAABrAAAAVwAAAGsAAABXAAAAN0BEKDNAAAAzQAAAc0AAAHNAAAAEwAAACOAAACdAAAAnQAAAJkAAACdAAAAlgAAAX0AAABwYAAAnQAAAVMAAAGjAAAAlVAAAdwAAAIMAAABriAAABMAEAAdABFwnQAAAc1wAACfMAABzzAAAa0AAAAdABEgX5AAAF+QAACfAAABp0AAABGAAAAzABFQEQAAAJ+QAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABOAAAAUgAABohAAAISAAACNABGBrQAAAXwAFMFMAAABXAAAAYwAE1EsAAABDAASQbwAAAF8AAAATAAVcKwAAAGcABKg/AAVIewAAAF8AAABrAATUSwAEeGsgAABbAAUwMwAAAFcABLhfAAAAXwAUkIcAFJBfAASoXwAkvDsAAAAH5AAAJ0AAAAfkAAAnQAAABsAAAAdABEQkwAUgM0AFCBzABQAzQAAAHMAAAAtARAgk4BVYM0AE6AbAAAAK4AAAL0AEZAdAAABwwAToMMAE6CTABQgw4AUILOAAABTAAAAYwAAAFgAFKDDABSwswBRkVMAUaCzAAAAs4BR8HMAAACTANFh8wDAAJ0AAACbAAAAmwAAAAAAAAAARaEAAEyXgABTjgAAWm3QAGF7AABi34AAb2gAAHZegAB9VQAAgMTwAIRLgACLQgAAkjiAAJkvAACcnvAAo5VwAKccAACqi/AArfvQALGCcAC1CQAAuHjwALvo0AC/b3AAwt9QAML2AADErgAA0OMAAOI/8ADlr9AA+qoAAP4Z8AEBidAAAAAAABjjkABcZBAAbjjwAIAAAACHHIAAkJeQAJOOAACddfAAoOOQAKT6UACp58AAru7wALHHEAC7YLAAwAAAAAAAD//cZBAADHHAAA448AATjgAAGOOQACuOMAAxxwAAMccQAEAAAAAAAAAAA3tAAAZEQAAG9oAAEdoQBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+6Xw//r/iQABHaEAAb2g//8hMP//kJj//rHI//5CYAAAb2gAAN7QAAAAAAAFOOAAApxwAAG9oAAG448AD6qgAAG9oA==","cmr17":"AUMAEgAAAH8AJAAQAAkABQBYAAoAAAAHRNPtdAEUeuAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADbEMAAAB7AAAAbwAAAFMAAABLAAAAYwAAAFsAAABvAAAAWwAAAG8AAABbAAAAO0BEKDNAAAAzQAAAd0AAAHdAAAAEwAAACNwAACdAAAAnQAAAJkAAACdAAAAlgAAAY0AAABwYAAAnQAAAWMAAAGzAAAAlVAAAfwAAAIsAAABviAAABMAEAAdABFwnQAAAe1wAACfMAAB7zAAAb0AAAAdABEgX4AAAF+AAACfAAABt0AAABFwAAAzABFQEQAAAJ+AAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABNwAAAUcAABshAAAIRwAACNABGBvQAAAYwAFMFcAAABbAAAAZwAE1E8AAABHAASQcwAAAGMAAAATAAVcKwAAAGsABKhDAAVIgwAAAGMAAABvAATUTwAEeG8cAABfAAUwNwAAAFsABLhjAAAAYwAUkI8AFJBjAASoYwAkvD8AAAAH4AAAJ0AAAAfgAAAnQAAABsAAAAdABEQkwAUgN0AFCBzABQA3QAAAHMAAAAtARAgk3BVYN0AE6AbAAAAK3AAAL0AEZAdAAAB4wAToNMAE6CTABQg03AUILNwAABTAAAAYwAAAFgAFKDTABSwswBRkWMAUaCzAAAAs3BR8HMAAACTANFiEwDAAJ0AAACbAAAAmwAAAAAAAAAAP+igAEaYkABNSIAAU94gAFqoUABb/sAAaAgwAG64IAB1aAAAeLLgAHwX8AB/0VAAgsfgAIaBQACQJ7AAk3KAAJoicACdh5AAoNJgAKQdMACnglAAqudgAK4yMACxfRAAtOIgALgs8AC4R0AAueygAL+58ADFpxAA1lHAANmckADq0BAA8RFwAPRcQAAAAAAAFPzgAFsHMABuNLAAf/vAAIcaYACPPgAAkDzwAJ1v4ACg4oAApQVAAKfuUACu5bAAsccgALtYkAC/xQAAAAAP/9sLcAAMcuAADf3gABBBMAAY5bAAK5HwADHLUAA/yTAAAAAAAANX8AAGBMAABq/wAA8swAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//wBdv/7YcoAAPLMAAGr+///KgP//5UB//6/BP/+VAUAAGr/AADV/QAAAAAABNSIAAKB+AABq/sABuNLAA6tAQABq/s=","cmr5":"ATEAEgAAAH8AIQAQAAoABQBJAAkAAAAHhgObWgBQAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAAD0DsAAABvAAAAZwAAAEsAAABDAAAAWwAAAFMAAABnAAAAUwAAAGcAAABTAAAAJ2AAACdgAAAHQAAABSAAACEgAAAEwAAACOAAACdAAAAnQAAAJkAAACdAAAAlgAAAW0AAABwcAAAnQAAAUMAAAGTAAAAlUAAAcwAAAHsAAABniAAABMAEAAdABCAnQAAAb2AAACfMAABvzAAAZ0AAAAdABAwX5AAAF+QAACfAAABm2AAABGAAAAzABBgEQAAAJ+QAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABOAAAGXUAABkhAAAZdQAACNABCRnQAAAWwAE9E8AAABTAAAAXwAEmEcAAAA/AARUawAAAFsAAAATAAUgKwAAAGMABGw7AAUMdwAAAFsAAABnAASYRwAEPGcgAABXAAT0MwAAAFMABHxbAAAAWwAUVH8AFFRbAARsWwAkgDcAAAAH5AAAJ0AAAAfkAAAnQAAABwAAAAdABAgkwATkM0AEzBzABMQzQAAAHMAAAAtAQAAk4BUcM0AErAcAAAALIAAAL0AEKAdAAABswASsMMAErCTABMww4ATMLOAAABTAAAAYwAAAFgAE7DDABPAswBQoUMAULCzAAAAs4BRAHMAAACTANByAwDAAJ0AAACcAAAAnAAAAAAAAAAAZxzQAHAAYAB45AAAfpRgAIqrMACMcmAAnHJgAKVWAACuOaAAsRHQALcdMADAANAA0cgAANSgMADdg9AA448wAOZnYADpP6AA70sAAPVWYAD4LqAA+wbQAQESMAED6mABBx2gAQiJ0AEY5NABLYQwATBcYAFREqABU+rQAVxzMAAAAAAAH0oAAGV60ABuONAAgAAAAIccYACUnzAAmdWgAJ110ACg46AApPpgAKqrMACuBNAAsccwALtg0ADAAAAAAAAP/+V60AAMcdAADjjQABjjoAAZ1aAAKqswACuOYAAxxzAAQAAAAAAAAAAEcdAACAAAAAjjoAAWk9AGyAAIBMgAGAYABcACcAIgA/gAKAIYACgC0Ae4AtAHyAYAAOgGAADwBhgAMAZYAEAGGABABvgASAY4AEAEGABQBvgAQAZYAEAGGABAAugAWALIAFAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABABDgAQAR4AEgFGABAB5gAQAZYAFAG+ABQBygAUAYYAFAEGABYB1gAUAWIAEAFeABABBgAQAVoAEgFmABAB0gAQAdYAEAGKABAB5gAQAdoAEgHeABABogASAa4AEAGWABwBvgAcAeIAEAGSABwBjgAcAcYAHAHaABABqgAgAeYAEgHeABAB0gAQAQ4AEAE+ABABHgAQAVYAEAFGABABUgAUAWYAFAFaABoBXgAaAaoAHgEmAB//5jjP/+NJ2AAI45v/+443//3HG//5VU//9xxoAAI46AAEccwAAAAAAB45AAANVWgACOOYABuONABXHMwACOOY=","cmr6":"AUUAEgAAAH8AJQAQAAoABQBYAAoAAAAHuUFhqABgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADyEcAAAB7AAAAcwAAAFcAAABPAAAAZwAAAF8AAABzAAAAXwAAAHMAAABfAAAAP0BEKDtAAAA7QAAAf0AAAH9AAAAEwAAACOAAACtAAAArQAAAKgAAACtAAAApgAAAZ0AAABwYAAArQAAAXMAAAHDAAAApUAAAgwAAAIsAAABziAAABMAEAAdABFwrQAAAe1wAACvMAAB7zAAAc0AAAAdABEgX5AAAF+QAACvAAAByVAAABGAAAAzABFQEQAAAK+QAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAEwAAABOAAAAUgAABwhAAAJSAAACdABGBzQAAAZwAFMFsAAABfAAAAawAE1FMAAABLAASQdwAAAGcAAAATAAVcLwAAAG8ABKhHAAVIhwAAAGcAAABzAATUUwAEeHMgAABjAAUwNwAAAF8ABLhnAAAAZwAUkI8AFJBnAASoZwAkvEMAAAAH5AAAK0AAAAfkAAArQAAABsAAAAdABEQowAUgN0AFCBzABQA3QAAAIMAAAAtARAgo4BVYN0AE6AbAAAAK4AAAM0AEZAdAAAB4wAToNMAE6CjABQg04AUIMOAAABTAAAAYwAAAFcAFKDTABSwwwBRkXMAUaDDAAAAw4BR8HMAAACjANFiQwDAAK0AAACrAAAAqwAAAAAAAAAAWhKwAGJegABqqlAAcU1QAHtCAAB86tAAi9mwAIvZ0ACUJYAAnHFQAJ/C0ACkvTAArQkAALQlUAC8cTAAvaCwAMDyMADJPgAAzjhQANGJ0ADU21AA2dWwAN7QAADiIYAA5XMAAOptUADtvtAA72ewAPEQgAD//1ABDjgAARPogAEXOgABNRfQAThpUAE44rAAAAAAAB7QsABj0oAAbjjQAIAAAACHHIAAlCXQAJ110ACg47AAo44AAKT6UACs3jAAru8AALHHMAC7YNAAwAAAAAAAD//j0oAADHHQAA440AAY47AAI44AACuOUAAxxwAAMccwAEAAAAAAAAAABCYAAAd3gAAIS9AAFL2ABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+l7V//mlAAABS9gAAhL1//72hf//e0P//nHI//3tCwAAhL0AAQl7AAAAAAAGqqUAAxxwAAIS9QAG440AE44rAAIS9Q==","cmr7":"AUUAEgAAAH8AJgAQAAkABQBYAAoAAAAH2ZOgUgBwAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADwEsAAAB/AAAAdwAAAFsAAABTAAAAawAAAGMAAAB3AAAAYwAAAHcAAABjAAAAQ0BEKD9AAAA/QAAAg0AAAINAAAAEwAAACNwAACdAAAAnQAAAJkAAACdAAAAlgAAAa0AAABwYAAArQAAAYMAAAHTAAAAlUAAAhwAAAI8AAAB3iAAABMAEAAdABFwnQAAAf1wAACfMAAB/zAAAd0AAAAdABEgX4AAAF+AAACfAAAB2FAAABFwAAAzABFQEQAAAJ+AAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABNwAAAUcAAB0hAAAIRwAACNABGB3QAAAawAFMF8AAABjAAAAbwAE1FcAAABPAASQewAAAGsAAAATAAVcLwAAAHMABKhLAAVIiwAAAGsAAAB3AATUVwAEeHccAABnAAUwOwAAAGMABLhrAAAAawAUkJcAFJBrAASoawAkvEcAAAAH4AAAJ0AAAAfgAAAnQAAABsAAAAdABEQkwAUgO0AFCBzABQA7QAAAHMAAAAtARAgk3BVYO0AE6AbAAAAK3AAAN0AEZAdAAAB8wAToOMAE6CTABQg43AUIMNwAABTAAAAYwAAAFcAFKDjABSw0wBRkYMAUaDTAAAA03BR8HMAAACTANFiQwDAAJ0AAACbAAAAmwAAAAAAAAAAUstQAFqq4ABiilAAaabgAHJJUABz3HAAgghQAInn4ACRx1AAkcdwAJVVkACZprAAmabgAKGGUACllpAArXYgALFFUAC005AAvLMgAMEEUADEkpAAyCDgAMxyIADQw1AA1FGQANff4ADcMSAA379wAOCCUADiSXAA8EFQAPhh4AEDjpABBxzgASMMkAEjjpABJprgAAAAAAAddeAAYlMAAG444ACAAAAAhxxwAJL/AACddeAAnnoAAKDjkACk+lAArDDgAK7vAACxxyAAu2DgAMAAAAAAAA//4lMAAAxx4AAOOOAAGOOQAB56AAArjlAAMccgAEAAAAAAAAAAA++wAAcWAAAH35AAFHHgBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+tNL//ocbgABRx4AAffg//8EEP//ggf//oYX//4IIAAAffkAAPvwAAAAAAAGKKUAAvPQAAH34AAG444AEjjpAAH34A==","cmr8":"AUMAEgAAAH8AIwAQAAoABQBYAAoAAAAHfHtZBwCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADuEMAAAB3AAAAbwAAAFMAAABLAAAAYwAAAFsAAABvAAAAWwAAAG8AAABbAAAAO0BEKDdAAAA3QAAAd0AAAHdAAAAEwAAACOAAACtAAAArQAAAKkAAACtAAAApgAAAY0AAACAYAAArQAAAWMAAAGzAAAApUAAAewAAAIcAAABviAAABMAEAAdABFwrQAAAd1wAACvMAAB3zAAAb0AAAAdABEgX5AAAF+QAACvAAABt1AAABGAAAAzABFQEQAAAK+QAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAEwAAABOAAAAUgAABshAAAJSAAACdABGBvQAAAYwAFMFcAAABbAAAAZwAE1E8AAABHAASQcwAAAGMAAAATAAVcLwAAAGsABKhDAAVIfwAAAGMAAABvAATUTwAEeG8gAABfAAUwNwAAAFsABLhjAAAAYwAUkIsAFJBjAASoYwAkvD8AAAAH5AAAK0AAAAfkAAArQAAABsAAAAdABEQowAUgN0AFCCDABQA3QAAAIMAAAAtARAgo4BVYN0AE6AbAAAAK4AAAM0AEZAdAAAB0wAToNMAE6CjABQg04AUIMOAAABjAAAAcwAAAFgAFKDTABSwwwBRkWMAUaDDAAAAw4BR8IMAAACjANFiAwDAAK0AAACrAAAAqwAAAAAAAAAAS46AAFMcwABaqwAAYfUAAGnHgABqAGAAa0pgAHjkAACAckAAiACAAIulgACPjsAAlx0AAJ6rQACmOYAAqd6AALFswAC1VgAAuPsAALygAADAiUAAxHKAAMgXgADLvIAAz6XAANNKwADTjwAA1WGAAOKrgAD1bQAA+RIAARABAAETpgABF0sAAAAAAAAcccAAYMPAAG444ACAAAAAhxyAAJLYIACaqwAAnXXgAKDjoACk+mAAq67AAK7u4ACxxyAAu2CgAMAAAAAAAA//4MPAAAxxwAAOOOAAGOOgABqrAAArjkAAMccAADHHIABAAAAAAAAAAAPHIAAGzOAAB45AABQ44AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//tHGP/6k+QAAUOOAAHjkP//Djj//4cc//6VVP/+HHAAAHjkAADxyAAAAAAABaqwAALVWAAB45AABuOOABEAEAAB45A=","cmr9":"AUMAEgAAAH8AJAAQAAkABQBYAAoAAAAHb7SLxwCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADsEcAAAB7AAAAcwAAAFcAAABPAAAAZwAAAF8AAABzAAAAXwAAAHMAAABfAAAAP0BEKDtAAAA7QAAAe0AAAHtAAAAEwAAACNwAAC9AAAAvQAAALkAAAC9AAAAtgAAAZ0AAACAYAAAvQAAAXMAAAHDAAAAtVAAAfwAAAIsAAABziAAABMAEAAdABFwvQAAAe1wAAC/MAAB7zAAAc0AAAAdABEgX4AAAF+AAAC/AAABx0AAABFwAAAzABFQEQAAAL+AAAC6AAAAugAAALoAAAC6AAAAugAAALoAAAC6AAAAugAAALoAAAC6AAAAEwAAABNwAAAUcAABwhAAAKRwAACtABGBzQAAAZwAFMFsAAABfAAAAawAE1FMAAABLAASQdwAAAGcAAAATAAVcMwAAAG8ABKhHAAVIgwAAAGcAAABzAATUUwAEeHMcAABjAAUwOwAAAF8ABLhnAAAAZwAUkI8AFJBnAASoZwAkvEMAAAAH4AAAL0AAAAfgAAAvQAAABsAAAAdABEQswAUgO0AFCCDABQA7QAAAJMAAAAtARAgs3BVYO0AE6AbAAAAK3AAAN0AEZAdAAAB4wAToOMAE6CzABQg43AUINNwAABjAAAAcwAAAFgAFKDjABSw0wBRkXMAUaDTAAAA03BR8IMAAACzANFiEwDAAL0AAAC7AAAAuwAAAAAAAAAASRYAAFBlAABXtAAAXvjgAGZSAABm6cAAZ8hAAHTwAAB1CVAAfD8AAIOOAACHMHAAit0AAJIsAACZewAAoMoAAKRscACru3AAr2gAALMKcAC2rOAAullwAL4GAADBqHAAxUrgAMj3cADMmeAAzKQAAM51QADbQgAA7YJwAPEk4AEHHAABCr5wAQ5g4AAAAAAAG6eQAF9OkABuOOAAgAAAAIcccACSF+AAl7QAAJ114ACg45AApPpQAKtJsACu7uAAsccgALtgsADAAAAAAAAP/99OkAAMccAADjjgABe0AAAY45AAK45AADHHIABAAAAAAAAAAAOnkAAGk+AAB08AABQMkAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//tuoP/6v4kAAUDJAAHTwP//FiD//4sQ//6hMP/+LEAAAHTwAADp4AAAAAAABXtAAAK9oAAB08AABuOOABBxwAAB08A=","cmsl10":"AXkAEgAAAH8AJQAQAAoAOQBYAAoAAAAHcK4wSgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU0wAAAAAAAAAAAAAAAAAAAAAAADqEsCkAB/AAAAcwGAAFsAAABTAwAAawMwAGMCEABzAkAAYwDAAHMCQABjAgAAQ0OEKD9BMAA/QTAAf0EwAH9BMAAEwAAACOAAACtAAAArQOAAKkBgACtBUAApgZAAe0AAACAYAAAvQiAAYMHgAHDB4AApVBAAgwIQAI8CEABziYAABMAEAAdB9FwrQAAAf1zwACvOoAB/zmAAc0FgAAdB9EgX5xAAF+RQACvCwABx0FAABGAAAAzAJFQEQAAAK+cQACqCoAAqgqAAKoKgACqCoAAqgqAAKoKgACqCoAAqgqAAKoKgACqCoAAEwEAABOBAAAUgsABwhPAAJSAAACdC9GBzQbAAawAFMF8CAABjAuAAbwGE1FcCEABPApSQdwCgAGsDMAATAyVcMwKwAHMC5KhLAAVIhwMwAGsDMABzAYTUVwIEeHMhgABnAAUwPwIQAGMClLhrAzAAawNkkJMDZJBrAySoawN0vEcC4AAH51AAK0NAAAflAAArQDAABsGgAAdB9EQowAUgP0CFCCDCNQA/QTAAIMHgAAtDhAgo4tVYP0AE6AbBoAAK4RAAO0I0ZAdBMAB8wAToPMAE6CjBdQg84NUINOCQABjCcAAcwUAAFgB1KDzABSw4wtRkYMLUaDjCUAA44tR8IMHAACjChFiIwoAAK0IgACrB0AAqwSAAAAAAAAARxyAAE45AABVVWAAXHHQAGOOUABkRGAAZPpgAHHHMAB447AAgAAgAIAAMACDjlAAhxyAAIccoACOOQAAlVWAAJxx4ACgACAApxygAKqq0ACuOQAAsccwALVVgAC447AAvHHgAMAAIADDjmAAxxygAMjjsADPA2AA1VWAAOccoADqqtABAAAwAQOOYAEHHKAAAAAAABsFsABd64AAbjjgAIAAAACHHIAAkVnQAJVVYACddeAAoOOgAKT6UACq+NAAru7gALHHIAC7YLAAwAAAAAAAD//d64AADHHQAA444AAVVWAAGOOgACuOMAAxxwAAMccgAEAAAAAAAAAAAHmAAAITAAACT9AAA3AgAAOOUAAFIGAABZIwAAWhUAAF7VAABguAAAZmoAAHd4AAB8NgAAhMAAAIiuAACK0wAAjw0AAKAeAAChMwAAqMgAALJDAADK6wAAzcIAANTFAADY8gAA2QIAANoVAADhqwAA5GIAAOVzAADrKAAA7BgAAO7yAAD2iAAA+G0AAQNtAAEajgABHHYAASXwAAEncgABJ9YAAUYtAAFSfgABVVoAAV7TAAFguAABe0YAAYLbAAGOPQABmZ0AAbu9AAHDVQACAAUAAgtjAAI45gADGKsAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//uOOP/6440AAT6VAAHHHf//HHL//444//6qqv/+OOMAAHHIAADjjgACqrAABVVWAAKqqwABxx0ABuOOABAAAwABxx0=","cmsl12":"AXgAEgAAAH8AIwAQAAoAOgBYAAoAAAAHfWgh0wDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU0wAAAAAAAAAAAAAAAAAAAAAAADmD8CoAB3AAAAawGQAE8AAABHAxAAXwMwAFcCIABrAlAAVwDQAGsCUABXAgAAN0OUKDNBMAAzQTAAd0EwAHdBMAAEwAAACOAAACdAAAAnQPAAJkBwACdBUAAlgaAAc0AAABwYAAAnQkAAVMGwAGjBsAAlVBAAewIgAIcCIABriZAABMAEAAdB5FwnQAAAd1zgACfOwAB3znAAa0FgAAdB5EgX5yAAF+RQACfC0ABp0FAABGAAAAzAJFQEQAAAJ+cgACaCwAAmgsAAJoLAACaCwAAmgsAAJoLAACaCwAAmgsAAJoLAACaCwAAEwEAABOBAAAUgoABohOAAISAAACNDBGBrQcAAXwAFMFMCAABXAvAAYwGU1EsCIABDAqSQbwCwAF8DMAATA0VcKwKwAGcC9Kg/AAVIfwMwAF8DMABrAZTUSwIEeGshkABbAAUwMwIQAFcCpLhfAzAAXwN0kIsDdJBfA0SoXwOEvDsC8AAH52AAJ0NQAAflEAAnQDAABsGAAAdB5EQkwAUgM0BlCBzCNQAzQTAAHMGwAAtDlAgk4uVYM0AE6AbBgAAK4QAAL0I0ZAdBMAB0wAToMMAE6CTBdQgw4MUILOCAABTCkAAYwUAAFgCVKDDABSwswuRkVMLkaCzCYAAs4uR8HMHQACTChFiAwoAAJ0JAACbB8AAmwSAAAAAAAAARaEAAEyXgABTjgAAWm3QAGF7AABi34AAb2gAAHZegAB9VQAAgMTwAIRLgACLQgAAkjiAAJkvAACcnvAAo5VwAKccAACqi/AArfvQALGCcAC1CQAAuHjwALvo0AC/b3AAwt9QAML2AADErgAAyuwQANDjAADiP/AA5a/QAPqqAAD+GfABAYnQAAAAAAAY45AAXGQQAG448ACAAAAAhxyAAJCXkACTjgAAnXXwAKDjkACk+lAAqefAAK7u8ACxxxAAu2CwAMAAAAAAAA//3GQQAAxxwAAOOPAAE44AABjjkAArjjAAMccAADHHEABAAAAAAAAAAACq8AACOQAAAnIAAAL20AADtEAABQmwAAVCsAAFx1AABdaAAAXtUAAGjJAAByBwAAedgAAIb7AACL3wAAjDUAAI18AACW4QAAoTQAAKtkAAC0KwAAzNAAAM3BAADOlQAA1yUAANp7AADaywAA3HQAAOMYAADjlAAA5kgAAO54AADzsQAA9wMAAPlgAAD7RwABBcwAARrMAAEhNAABJREAASXwAAEutwABN/cAAUiMAAFY6AABXaQAAWMZAAF7RQABhIUAAZCcAAGZJQABms0AAcPPAAIABAACCjUAAjbFAAL3uABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+6Xw//r/iQABHaEAAb2g//8hMP//kJj//rHI//5CYAAAb2gAAN7QAAKqsAAFOOAAApxwAAG9oAAG448AD6qgAAG9oA==","cmsl8":"AXgAEgAAAH8AJAAQAAoAOQBYAAoAAAAHoTgpzwCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU0wAAAAAAAAAAAAAAAAAAAAAAADuEMCcAB7AAAAbwFwAFMAAABLAwAAYwMgAFsB8ABvAkAAWwDAAG8CQABbAgAAO0OEKDdBIAA3QSAAe0EgAHtBIAAEwAAACOAAACtAAAArQLAAKkBQACtBQAApgZAAd0AAACAYAAArQiAAWMIQAGzCEAApUAAAfwHwAIsB8ABviXAABMAEAAdBxFwrQAAAe10AACvOsAB7zlAAb0FQAAdBxEgX5xAAF+RAACvCwABt1EAABGAAAAzAJFQEQAAAK+cQACqCsAAqgrAAKoKwACqCsAAqgrAAKoKwACqCsAAqgrAAKoKwACqCsAAEwDAABOAwAAUggABshQAAJSAAACdC9GBvQaAAYwAFMFcCAABbAtAAZwF01E8B8ABHAnSQcwBgAGMDIAATAzVcLwKQAGsC1KhDAAVIgwMgAGMDIABvAXTUTwIEeG8hcABfAAUwNwHgAFsCdLhjAyAAYwNkkI8DZJBjAzSoYwN0vD8C0AAH51AAK0NAAAfk0AArQBAABsFgAAdBxEQowAUgN0CVCCDCNQA3QSAAIMIQAAtDhAgo4uVYN0AE6AbBYAAK4PAAM0I0ZAdBIAB4wAToNMAE6CjBhQg04OUIMOCgABjCgAAcwTAAFgB1KDTABSwwwuRkWMLkaDDCYAAw4uR8IMHQACjCpFiEwqAAK0IgACrBsAAqwRAAAAAAAAAS46AAFMcwABaqwAAYfUAAGnHgABqAGAAa0pgAHjkAACAckAAiACAAIulgACPjsAAlx0AAJ6rQACmOYAAqd6AALFswAC1VgAAuPsAALygAADAiUAAxHKAAMgXgADLvIAAz6XAANNKwADTjwAA1WGAANq/wADiq4AA9W0AAPkSAAEQAQABE6YAARdLAAAAAAAAHHHAAGDDwABuOOAAgAAAAIccgACS2CAAmqsAAJ114ACg46AApPpgAKuuwACu7uAAsccgALtgoADAAAAAAAAP/+DDwAAMccAADjjgABjjoAAaqwAAK45AADHHAAAxxyAAQAAAAAAAAAABjmAAAaFAAAJe4AADHIAABF8AAASqwAAExWAABVVgAAVoYAAFe2AABvagAAcFwAAHieAAB6ygAAgrgAAIkoAACNYgAAkvgAAKD2AACoTgAAxToAAMnUAADNqAAAzcAAANJCAADS+AAA2A4AANoUAADdaAAA4LgAAOIkAADk/AAA5XQAAOhOAAD1lAAA/FAAAQ48AAEZ2gABHpYAASXwAAEthAABLowAAT8QAAFKrgABWZwAAWJiAAF7RgABfeAAAYcgAAGUoAABlg4AAcHoAAIABAACDvIAAj9OAAMdpABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+0cY//qT5AABQ44AAeOQ//8OOP//hxz//pVU//4ccAAAeOQAAPHIAAKqsAAFqrAAAtVYAAHjkAAG444AEQAQAAHjkA==","cmsl9":"AXgAEgAAAH8AJQAQAAkAOQBYAAoAAAAHlHFbmACQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU0wAAAAAAAAAAAAAAAAAAAAAAADsEcCcAB/AAAAcwFwAFcAAABPAwAAZwMwAF8CEABzAkAAXwCwAHMCQABfAgAAP0OEKDtBIAA7QSAAf0EgAH9BIAAEwAAACNwAAC9AAAAvQMAALkBgAC9BQAAtgZAAe0AAACAYAAAvQiAAXMHgAHDB4AAtVBAAgwIQAI8CEABziXAABMAEAAdB1FwvQAAAf1zwAC/OsAB/zlAAc0FQAAdB1EgX4xAAF+BQAC/CwABx0FAABFwAAAzAJFQEQAAAL+MQAC6CsAAugrAALoKwAC6CsAAugrAALoKwAC6CsAAugrAALoKwAC6CsAAEwEAABNxAAAUcoABwhPAAKRwAACtC9GBzQaAAZwAFMFsCAABfAtAAawF01FMCEABLAnSQdwCAAGcDMAATAyVcMwKgAG8C1KhHAAVIhwMwAGcDMABzAXTUUwIEeHMdcABjAAUwOwHwAF8CdLhnAzAAZwNkkJMDZJBnAySoZwN0vEMC0AAH41AAL0NAAAfg4AAvQDAABsGAAAdB1EQswAUgO0CVCCDCNQA7QSAAJMHgAAtDhAgs3uVYO0AE6AbBgAAK3QAAN0I0ZAdBIAB8wAToOMAE6CzBZQg43NUINNygABjCgAAcwTAAFgB1KDjABSw0wuRkXMLkaDTCYAA03uR8IMHAACzClFiIwpAAL0IgAC7BsAAuwRAAAAAAAAASRYAAFBlAABXtAAAXvjgAGZSAABm6cAAZ8hAAHTwAAB1CVAAfD8AAIOOAACHMHAAit0AAJIsAACZewAAoMoAAKRscACru3AAr2gAALMKcAC2rOAAullwAL4GAADBqHAAxUrgAMj3cADMmeAAzKQAAM51QADUTiAA20IAAO2CcADxJOABBxwAAQq+cAEOYOAAAAAAABunkABfTpAAbjjgAIAAAACHHHAAkhfgAJe0AACddeAAoOOQAKT6UACrSbAAru7gALHHIAC7YLAAwAAAAAAAD//fTpAADHHAAA444AAXtAAAGOOQACuOQAAxxyAAQAAAAAAAAAAAGXAAAeBwAAH54AAC9sAAA1vAAATKcAAFN0AABWnAAAWH4AAF7VAAB0UAAAe0cAAHuUAACCvAAAiTkAAIy+AACXzAAAngwAAKVOAACt2QAAyGQAAM3CAADRnAAA0kUAANYwAADW7AAA3ukAAN/FAADjlAAA5XUAAOigAADo8AAA6UIAAPA3AAD3KwABAEQAARYkAAEaPgABI7kAASXwAAEqmQABP9wAAUMEAAFQmwABXZAAAWBpAAF7RQABgKQAAYsUAAGYBwABqCkAAcK0AAIABAACDPkAAju+AAMa4ABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+26g//q/iQABQMkAAdPA//8WIP//ixD//qEw//4sQAAAdPAAAOngAAKqsAAFe0AAAr2gAAHTwAAG444AEHHAAAHTwA==","cmsltt10":"AMEAEgAAAH8AAgAQAAwAAgACAAAAAAAH3+o8eACgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU0xUVAAAAAAAAAAAAAAAAAAAAADqAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAABOwQAATsEAAFQBAABWwQAAdAEAAHQBAABwAQAAdAEAAGwBAAB0AQAAQoEAAHQBAABUAQAAVAEAAGIBAAB0AQAAdAEAAHkBAABKAQAAdAFAAHQBAAB0AQAAfYEAAH2BAAB0AQAAdAEAAH1BAAB9QQAAWAEAAFyBAABGQQAAXIEAAEQBAAB9QQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAFQBAABWQQAAaMEAAFBBAABowQAAdAFAQHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdkEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAH1BAAB9QQAAfUEAAHQBAABBwQAAdAEAAFQBAAB0AQAAVAEAAHQBAABUAQAAdAEAAFbBAAB0AQAAdAEAAHbBAAB0AQAAdAEAAFQBAABUAQAAVAEAAFbBAABWwQAAVAEAAFQBAABkAQAAVAEAAFQBAABUAQAAVAEAAFbBAABUAQAAfUEAAH1BAAB9QQAAdAEAAHQBAAAAAAAAAhmYgAAAAAAAgAAAAOC2AAGOOMABqZlAAbjjgAIVVYACH0mAAiqqwAI23IACOOOAAkMgwAJDjoACccdAAqqqwALHHIAAAAA//zfSP/+tgr//xxyAADjjgABVVMAAVVVAAGFrQABxx0AAjjjAAMccwADjjoAAAAAAAHaFoBgAA6AYAAPAAKqsAAIZmIAAAAAAAAAAAAG444AEMzDAAhmYg=="}');var cA=g.t(aA,2);function wA(A,t){return A+4*t}class QA{position;stream;length=0;table_lengths=[];table_pointers=[];entire_file_length=0;smallest_character_code=0;largest_character_code=0;number_of_chars=0;tfm;constructor(A){this.position=0,this.stream=A,this.read_lengths(),this.read_header(),this.read_font_parameters(),this.read_lig_kern_programs(),this.read_characters()}seek(A){this.position=A}read_unsigned_byte1(A){A&&(this.position=A);const t=this.stream.readUInt8(this.position);return this.position=this.position+1,t}read_unsigned_byte2(A){A&&(this.position=A);const t=this.stream.readUInt16BE(this.position);return this.position=this.position+2,t}read_unsigned_byte4(A){A&&(this.position=A);const t=this.stream.readUInt32BE(this.position);return this.position=this.position+4,t}read_four_byte_numbers_in_table(A,t){return this.seek(this.position_in_table(A,t)),[this.read_unsigned_byte1(),this.read_unsigned_byte1(),this.read_unsigned_byte1(),this.read_unsigned_byte1()]}read_extensible_recipe(A){return this.read_four_byte_numbers_in_table(8,A)}read_fix_word(A){A&&(this.position=A);const t=this.stream.readUInt32BE(this.position);return this.position=this.position+4,t}read_fix_word_in_table(A,t){return this.read_fix_word(this.position_in_table(A,t))}read_bcpl(A){A&&(this.position=A);const t=this.read_unsigned_byte1(),e=this.stream.subarray(this.position,this.position+t).toString("ascii");return this.position+=t,e}seek_to_table(A,t){t?this.seek(this.position_in_table(A,t)):this.seek(this.table_pointers[A])}position_in_table(A,t){return wA(this.table_pointers[A],t)}read_lengths(){this.table_lengths=[],this.seek(0),this.entire_file_length=this.read_unsigned_byte2();const A=this.read_unsigned_byte2();this.smallest_character_code=this.read_unsigned_byte2(),this.largest_character_code=this.read_unsigned_byte2(),this.table_lengths[0]=Math.max(18,A),this.number_of_chars=this.largest_character_code-this.smallest_character_code+1,this.table_lengths[1]=this.number_of_chars;for(let A=2;A<=9;++A)this.table_lengths[A]=this.read_unsigned_byte2();this.table_pointers=[],this.table_pointers[0]=24;for(let A=0;A<9;++A)this.table_pointers[A+1]=this.position_in_table(A,this.table_lengths[A]);if(this.position_in_table(9,this.table_lengths[9])!=wA(0,this.entire_file_length))throw new Error("Bad TFM file")}read_header(){this.seek_to_table(0);const A=this.read_unsigned_byte4(),t=this.read_fix_word(),e=this.table_pointers[1];let r=this.position;const n=r<e?this.read_bcpl():void 0;r+=40;const B=r<e?this.read_bcpl(r):void 0;r+=20,r<e&&(this.read_unsigned_byte1(r),this.read_unsigned_byte2(),this.read_unsigned_byte1()),this.tfm=new oA(this.smallest_character_code,this.largest_character_code,A,t,n,B)}read_font_parameters(){this.seek_to_table(9),"TeX math italic"==this.tfm.character_coding_scheme||this.tfm.set_font_parameters([...Array(7).keys()].map((()=>this.read_fix_word()))),"TeX math symbols"==this.tfm.character_coding_scheme&&this.tfm.set_math_symbols_parameters([...Array(15).keys()].map((()=>this.read_fix_word()))),"TeX math extension"!=this.tfm.character_coding_scheme&&"euler substitutions only"!=this.tfm.character_coding_scheme||this.tfm.set_math_extension_parameters([...Array(6).keys()].map((()=>this.read_fix_word())))}read_lig_kern_programs(){this.seek_to_table(6);const A=this.read_unsigned_byte1();let t=this.read_unsigned_byte1(),e=this.read_unsigned_byte1(),r=this.read_unsigned_byte1();if(255==A)throw new Error("Font has right boundary char");this.seek_to_table(6,this.table_lengths[6]-1);const n=this.read_unsigned_byte1();if(t=this.read_unsigned_byte1(),e=this.read_unsigned_byte1(),r=this.read_unsigned_byte1(),255==n)throw new Error("Font has left boundary char program");let B=!0;for(let A=0;A<this.table_lengths[6];++A){this.seek_to_table(6,A);let n=this.read_unsigned_byte1();t=this.read_unsigned_byte1(),e=this.read_unsigned_byte1(),r=this.read_unsigned_byte1(),B&&n>128&&(n=this.read_unsigned_byte1(),t=this.read_unsigned_byte1(),e=this.read_unsigned_byte1(),r=this.read_unsigned_byte1());const g=n>=128;e>=128?new sA(this.tfm,A,g,t,this.read_fix_word_in_table(7,256*(e-128)+r)):new iA(this.tfm,A,g,t,r,e>>2,!(2&e),!(1&e)),B=g}}read_characters(){for(let A=this.smallest_character_code;A<this.largest_character_code;++A)this.process_char(A)}process_char(A){const t=this.read_char_info(A),e=t.width_index,r=t.height_index,n=t.depth_index,B=t.italic_index,g=t.tag,s=t.remainder;let i=0;0!=e&&(i=this.read_fix_word_in_table(2,e));let o=0;0!=r&&(o=this.read_fix_word_in_table(3,r));let a=0;0!=n&&(a=this.read_fix_word_in_table(4,n));let c=0;0!=B&&(c=this.read_fix_word_in_table(5,B));const w=1==g?s:null,Q=2==g?s:null,h=3==g?this.read_extensible_recipe(s):void 0;void 0!==h?new BA(this.tfm,A,i,o,a,c,h,w,Q):new nA(this.tfm,A,i,o,a,c,w,Q)}read_char_info(A){const t=A-this.smallest_character_code,e=[];return this.seek_to_table(1,t),e[0]=this.read_unsigned_byte1(),e[1]=this.read_unsigned_byte1(),e[2]=this.read_unsigned_byte1(),e[3]=this.read_unsigned_byte1(),{width_index:e[0],height_index:e[1]>>4,depth_index:15&e[1],italic_index:e[2]>>6,tag:3&e[2],remainder:e[3]}}}function hA(A){if(A in cA)return o.hp.from(cA[A],"base64");throw new Error(`Could not find font ${A}`)}class uA{h;v;w;x;y;z;constructor(A){A?(this.h=A.h,this.v=A.v,this.w=A.w,this.x=A.x,this.y=A.y,this.z=A.z):this.h=this.v=this.w=this.x=this.y=this.z=0}}class lA{name;checksum;scaleFactor;designSize;metrics;constructor(A){this.name=A.name,this.checksum=A.checksum,this.scaleFactor=A.scaleFactor,this.designSize=A.designSize}}class CA{fonts;font;stack=[];position=new uA;matrix;constructor(){this.fonts=[],this.matrix=new T}preamble(A,t,e,r){}pushColor(A){}popColor(){}setPapersize(A,t){}push(){this.stack.push(new uA(this.position))}pop(){const A=this.stack.pop();if(!A)throw new Error("Attempted to pop from empty position stack");this.position=A}beginPage(A){this.stack=[],this.position=new uA}endPage(){}post(A){}postPost(A){}getCurrentPosition(){return[this.position.h,this.position.v]}setCurrentPosition(A,t){this.position.h=A,this.position.v=t}putRule(A){}moveRight(A){this.position.h+=A}moveDown(A){this.position.v+=A}setFont(A){this.font=A}putSVG(A){}putHTML(A){}putText(A){return 0}loadFont(A){const t=new lA(A);return t.metrics=function(A){return t=hA(A),new QA(t).tfm;var t}(A.name),t}}const fA=JSON.parse('{"cmss10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmss12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmss17":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmss8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmss9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssbx10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssdc10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssi10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssi12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssi17":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssi8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssi9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssq8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmssqi8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsy10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsy5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsy6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsy7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsy8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsy9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmtcsc10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmtex10":{"1":61615,"11":61614,"32":61472,"33":61473,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"93":61533,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"128":61612},"cmtex8":{"1":61615,"11":61614,"32":61472,"33":61473,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"93":61533,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"128":61612},"cmtex9":{"1":61615,"11":61614,"32":61472,"33":61473,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"93":61533,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"128":61612},"cmti10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmti12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmti7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmti8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmti9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmtt10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmtt12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmtt8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmtt9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmu10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmvtt10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61617,"61":61501,"62":61618,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"93":61533,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"127":61636,"128":61612},"lasy10":{"0":61601},"lasy5":{"0":61601},"lasy6":{"0":61601},"lasy7":{"0":61601},"lasy8":{"0":61601},"lasy9":{"0":61601},"lasyb10":{"0":61601},"lcmss8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"lcmssb8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"lcmssi8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msam10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msam5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msam6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msam7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msam8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msam9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"msbm10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61612,"96":61536,"97":61537,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636},"msbm5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61612,"96":61536,"97":61537,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636},"msbm6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61612,"96":61536,"97":61537,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636},"msbm7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61612,"96":61536,"97":61537,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636},"msbm8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61612,"96":61536,"97":61537,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636},"msbm9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61612,"96":61536,"97":61537,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636},"cmb10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbsy10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbsy5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbsy6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbsy7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbsy8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbsy9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbx9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbxsl10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmbxti10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmcsc10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmcsc8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmcsc9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmdunh10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmex10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmex7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmex8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmex9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmff10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmfi10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmfib8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cminch":{"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530},"cmitt10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmi9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmib10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmib5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmib6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmib7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmib8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmmib9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr17":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr5":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr6":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr7":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmr9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsl10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsl12":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsl8":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsl9":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":64257,"13":64258,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612},"cmsltt10":{"0":61601,"1":61602,"2":61603,"3":61604,"4":61605,"5":61606,"6":61607,"7":61608,"8":61609,"9":61610,"10":61613,"11":61614,"12":61615,"13":61616,"14":61617,"15":61618,"16":61619,"17":61620,"18":61621,"19":61622,"20":61623,"21":61624,"22":61625,"23":61626,"24":61627,"25":61628,"26":61629,"27":61630,"28":61631,"29":61632,"30":61633,"31":61634,"32":61635,"33":61473,"34":61474,"35":61475,"36":61476,"37":61477,"38":61478,"39":61479,"40":61480,"41":61481,"42":61482,"43":61483,"44":61484,"45":61485,"46":61486,"47":61487,"48":61488,"49":61489,"50":61490,"51":61491,"52":61492,"53":61493,"54":61494,"55":61495,"56":61496,"57":61497,"58":61498,"59":61499,"60":61500,"61":61501,"62":61502,"63":61503,"64":61504,"65":61505,"66":61506,"67":61507,"68":61508,"69":61509,"70":61510,"71":61511,"72":61512,"73":61513,"74":61514,"75":61515,"76":61516,"77":61517,"78":61518,"79":61519,"80":61520,"81":61521,"82":61522,"83":61523,"84":61524,"85":61525,"86":61526,"87":61527,"88":61528,"89":61529,"90":61530,"91":61531,"92":61532,"93":61533,"94":61534,"95":61535,"96":61536,"97":61537,"98":61538,"99":61539,"100":61540,"101":61541,"102":61542,"103":61543,"104":61544,"105":61545,"106":61546,"107":61547,"108":61548,"109":61549,"110":61550,"111":61551,"112":61552,"113":61553,"114":61554,"115":61555,"116":61556,"117":61557,"118":61558,"119":61559,"120":61560,"121":61561,"122":61562,"123":61563,"124":61564,"125":61565,"126":61566,"127":61636,"128":61612}}');var dA=g.t(fA,2);class EA extends CA{output;pointsPerDviUnit=0;svgDepth;color;colorStack;paperwidth=0;paperheight=0;pushColor(A){this.colorStack.push(this.color),this.color=A}popColor(){const A=this.colorStack.pop();if(!A)throw new Error("Popped from empty color stack");this.color=A}setPapersize(A,t){this.paperwidth=A,this.paperheight=t}getCurrentPosition(){return[this.position.h*this.pointsPerDviUnit,this.position.v*this.pointsPerDviUnit]}setCurrentPosition(A,t){this.position.h=A/this.pointsPerDviUnit,this.position.v=t/this.pointsPerDviUnit}putHTML(A){this.output.write(A)}putSVG(A){const t=this.position.h*this.pointsPerDviUnit,e=this.position.v*this.pointsPerDviUnit;this.svgDepth+=(A.match(/<svg.*>/g)??[]).length,this.svgDepth-=(A.match(/<\/svg.*>/g)??[]).length,A.includes("<svg beginpicture>")&&(A=this.svgDepth>1?A.replace("<svg beginpicture>",""):A.replace("<svg beginpicture>",`<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${this.paperwidth.toString()}pt" height="${this.paperheight.toString()}pt" viewBox="-72 -72 ${this.paperwidth.toString()} ${this.paperheight.toString()}">`)),/<\/svg endpicture>/.exec(A)&&(A=A.replace("</svg endpicture>",this.svgDepth>0?"":"</svg>")),A=(A=A.replace(/{\?x}/g,t.toString())).replace(/{\?y}/g,e.toString()),this.output.write(A)}constructor(A){super(),this.output=A,this.color="black",this.colorStack=[],this.svgDepth=0}preamble(A,t,e,r){this.pointsPerDviUnit=e*A/1e3/t*72.27/1e5/2.54}putRule(A){const t=A.a*this.pointsPerDviUnit,e=A.b*this.pointsPerDviUnit,r=this.position.h*this.pointsPerDviUnit,n=this.position.v*this.pointsPerDviUnit-t;this.output.write(`<rect x="${r.toString()}" y="${n.toString()}" width="${e.toString()}" height="${t.toString()}" fill="${this.color.toString()}"${this.matrix.toSVGTransform()}></rect>`)}putText(A){let t=0,e=0,r=0,n="";for(const B of A){const A=this.font.metrics.characters.get(B);if(void 0===A)throw new Error(`Could not find font metric for ${B.toString()}`);t+=A.width,e=Math.max(e,A.height),r=Math.max(r,A.depth),n+=`&#x${dA[this.font.name][B.toString()].toString(16).padStart(4,"0")};`}const B=this.font.metrics.designSize/1048576*65536/1048576,g=this.position.h*this.pointsPerDviUnit,s=e*this.pointsPerDviUnit*B,i=this.position.v*this.pointsPerDviUnit,o=this.font.metrics.designSize/1048576*this.font.scaleFactor/this.font.designSize;if(0==this.svgDepth)this.output.write(`<span style="line-height: 0; color: ${this.color}; font-family: ${this.font.name}; font-size: ${o.toString()}pt; position: absolute; top: ${(i-s).toString()}pt; left: ${g.toString()}pt; overflow: visible;"><span style="margin-top: -${o.toString()}pt; line-height: 0pt; height: ${o.toString()}pt; display: inline-block; vertical-align: baseline; ">${n}</span><span style="display: inline-block; vertical-align: ${s.toString()}pt; height: 0pt; line-height: 0;"></span></span>`);else{const A=this.position.v*this.pointsPerDviUnit;this.output.write(`<text alignment-baseline="baseline" y="${A.toString()}" x="${g.toString()}" font-family="${this.font.name}" font-size="${o.toString()}" fill="${this.color}"${this.matrix.toSVGTransform()}>${n}</text>`)}return t*B*this.font.scaleFactor/this.font.designSize}}const pA=1e-5,HA={HTML:EA,text:class extends CA{output;snippets;constructor(A){super(),this.output=A,this.snippets=[]}putRule(A){}beginPage(A){super.beginPage(A),this.snippets=[]}endPage(){if(this.snippets=this.snippets.sort((function(A,t){return A[1]<t[1]?-1:A[1]>t[1]?1:A[0]<t[0]?-1:A[0]>t[0]?1:0})),0==this.snippets.length)return;let A=this.snippets[0][0],t=this.snippets[0][1];for(const e of this.snippets){const r=e[0],n=e[1];n>t&&this.output.write("\n"),r>A+pA&&this.output.write(" "),this.output.write(e[2].toString()),t=n,A=r}}putText(A){return this.snippets.push([this.position.h,this.position.v,A]),pA}postPost(A){this.output.end()}}},DA={color:S,svg:N,papersize:rA};async function IA(A,t){const e=rA(N(async function*(A){for await(const t of A)t instanceof Y&&/^psfile=/i.test(t.x)?yield new AA(t.x):yield t}(function(A){return R(async function*(A){for await(const t of A)t instanceof Y&&t.x.startsWith("ps: ")?yield new $(t.x.replace(/^ps: /,"")):yield t}(A),(A=>A instanceof $),(function*(A){yield new $(A.map((A=>A.ps)).join(" "))}))}(S(V(O(A))))))),r=new EA(t);return await x(e,r),r}var FA=s.jX,GA=s.qd,UA=e(1854);const YA=UA.expose;UA.registerSerializer,UA.Transfer;function MA(A){let t=A.length;for(;--t>=0;)A[t]=0}const mA=256,yA=286,bA=30,kA=15,OA=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),xA=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),RA=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),VA=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),LA=new Array(576);MA(LA);const vA=new Array(60);MA(vA);const _A=new Array(512);MA(_A);const SA=new Array(256);MA(SA);const KA=new Array(29);MA(KA);const NA=new Array(bA);function TA(A,t,e,r,n){this.static_tree=A,this.extra_bits=t,this.extra_base=e,this.elems=r,this.max_length=n,this.has_stree=A&&A.length}let jA,JA,qA;function PA(A,t){this.dyn_tree=A,this.max_code=0,this.stat_desc=t}MA(NA);const WA=A=>A<256?_A[A]:_A[256+(A>>>7)],ZA=(A,t)=>{A.pending_buf[A.pending++]=255&t,A.pending_buf[A.pending++]=t>>>8&255},zA=(A,t,e)=>{A.bi_valid>16-e?(A.bi_buf|=t<<A.bi_valid&65535,ZA(A,A.bi_buf),A.bi_buf=t>>16-A.bi_valid,A.bi_valid+=e-16):(A.bi_buf|=t<<A.bi_valid&65535,A.bi_valid+=e)},XA=(A,t,e)=>{zA(A,e[2*t],e[2*t+1])},$A=(A,t)=>{let e=0;do{e|=1&A,A>>>=1,e<<=1}while(--t>0);return e>>>1},At=(A,t,e)=>{const r=new Array(16);let n,B,g=0;for(n=1;n<=kA;n++)g=g+e[n-1]<<1,r[n]=g;for(B=0;B<=t;B++){let t=A[2*B+1];0!==t&&(A[2*B]=$A(r[t]++,t))}},tt=A=>{let t;for(t=0;t<yA;t++)A.dyn_ltree[2*t]=0;for(t=0;t<bA;t++)A.dyn_dtree[2*t]=0;for(t=0;t<19;t++)A.bl_tree[2*t]=0;A.dyn_ltree[512]=1,A.opt_len=A.static_len=0,A.sym_next=A.matches=0},et=A=>{A.bi_valid>8?ZA(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},rt=(A,t,e,r)=>{const n=2*t,B=2*e;return A[n]<A[B]||A[n]===A[B]&&r[t]<=r[e]},nt=(A,t,e)=>{const r=A.heap[e];let n=e<<1;for(;n<=A.heap_len&&(n<A.heap_len&&rt(t,A.heap[n+1],A.heap[n],A.depth)&&n++,!rt(t,r,A.heap[n],A.depth));)A.heap[e]=A.heap[n],e=n,n<<=1;A.heap[e]=r},Bt=(A,t,e)=>{let r,n,B,g,s=0;if(0!==A.sym_next)do{r=255&A.pending_buf[A.sym_buf+s++],r+=(255&A.pending_buf[A.sym_buf+s++])<<8,n=A.pending_buf[A.sym_buf+s++],0===r?XA(A,n,t):(B=SA[n],XA(A,B+mA+1,t),g=OA[B],0!==g&&(n-=KA[B],zA(A,n,g)),r--,B=WA(r),XA(A,B,e),g=xA[B],0!==g&&(r-=NA[B],zA(A,r,g)))}while(s<A.sym_next);XA(A,256,t)},gt=(A,t)=>{const e=t.dyn_tree,r=t.stat_desc.static_tree,n=t.stat_desc.has_stree,B=t.stat_desc.elems;let g,s,i,o=-1;for(A.heap_len=0,A.heap_max=573,g=0;g<B;g++)0!==e[2*g]?(A.heap[++A.heap_len]=o=g,A.depth[g]=0):e[2*g+1]=0;for(;A.heap_len<2;)i=A.heap[++A.heap_len]=o<2?++o:0,e[2*i]=1,A.depth[i]=0,A.opt_len--,n&&(A.static_len-=r[2*i+1]);for(t.max_code=o,g=A.heap_len>>1;g>=1;g--)nt(A,e,g);i=B;do{g=A.heap[1],A.heap[1]=A.heap[A.heap_len--],nt(A,e,1),s=A.heap[1],A.heap[--A.heap_max]=g,A.heap[--A.heap_max]=s,e[2*i]=e[2*g]+e[2*s],A.depth[i]=(A.depth[g]>=A.depth[s]?A.depth[g]:A.depth[s])+1,e[2*g+1]=e[2*s+1]=i,A.heap[1]=i++,nt(A,e,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,t)=>{const e=t.dyn_tree,r=t.max_code,n=t.stat_desc.static_tree,B=t.stat_desc.has_stree,g=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,i=t.stat_desc.max_length;let o,a,c,w,Q,h,u=0;for(w=0;w<=kA;w++)A.bl_count[w]=0;for(e[2*A.heap[A.heap_max]+1]=0,o=A.heap_max+1;o<573;o++)a=A.heap[o],w=e[2*e[2*a+1]+1]+1,w>i&&(w=i,u++),e[2*a+1]=w,a>r||(A.bl_count[w]++,Q=0,a>=s&&(Q=g[a-s]),h=e[2*a],A.opt_len+=h*(w+Q),B&&(A.static_len+=h*(n[2*a+1]+Q)));if(0!==u){do{for(w=i-1;0===A.bl_count[w];)w--;A.bl_count[w]--,A.bl_count[w+1]+=2,A.bl_count[i]--,u-=2}while(u>0);for(w=i;0!==w;w--)for(a=A.bl_count[w];0!==a;)c=A.heap[--o],c>r||(e[2*c+1]!==w&&(A.opt_len+=(w-e[2*c+1])*e[2*c],e[2*c+1]=w),a--)}})(A,t),At(e,o,A.bl_count)},st=(A,t,e)=>{let r,n,B=-1,g=t[1],s=0,i=7,o=4;for(0===g&&(i=138,o=3),t[2*(e+1)+1]=65535,r=0;r<=e;r++)n=g,g=t[2*(r+1)+1],++s<i&&n===g||(s<o?A.bl_tree[2*n]+=s:0!==n?(n!==B&&A.bl_tree[2*n]++,A.bl_tree[32]++):s<=10?A.bl_tree[34]++:A.bl_tree[36]++,s=0,B=n,0===g?(i=138,o=3):n===g?(i=6,o=3):(i=7,o=4))},it=(A,t,e)=>{let r,n,B=-1,g=t[1],s=0,i=7,o=4;for(0===g&&(i=138,o=3),r=0;r<=e;r++)if(n=g,g=t[2*(r+1)+1],!(++s<i&&n===g)){if(s<o)do{XA(A,n,A.bl_tree)}while(0!=--s);else 0!==n?(n!==B&&(XA(A,n,A.bl_tree),s--),XA(A,16,A.bl_tree),zA(A,s-3,2)):s<=10?(XA(A,17,A.bl_tree),zA(A,s-3,3)):(XA(A,18,A.bl_tree),zA(A,s-11,7));s=0,B=n,0===g?(i=138,o=3):n===g?(i=6,o=3):(i=7,o=4)}};let ot=!1;const at=(A,t,e,r)=>{zA(A,0+(r?1:0),3),et(A),ZA(A,e),ZA(A,~e),e&&A.pending_buf.set(A.window.subarray(t,t+e),A.pending),A.pending+=e};var ct=A=>{ot||((()=>{let A,t,e,r,n;const B=new Array(16);for(e=0,r=0;r<28;r++)for(KA[r]=e,A=0;A<1<<OA[r];A++)SA[e++]=r;for(SA[e-1]=r,n=0,r=0;r<16;r++)for(NA[r]=n,A=0;A<1<<xA[r];A++)_A[n++]=r;for(n>>=7;r<bA;r++)for(NA[r]=n<<7,A=0;A<1<<xA[r]-7;A++)_A[256+n++]=r;for(t=0;t<=kA;t++)B[t]=0;for(A=0;A<=143;)LA[2*A+1]=8,A++,B[8]++;for(;A<=255;)LA[2*A+1]=9,A++,B[9]++;for(;A<=279;)LA[2*A+1]=7,A++,B[7]++;for(;A<=287;)LA[2*A+1]=8,A++,B[8]++;for(At(LA,287,B),A=0;A<bA;A++)vA[2*A+1]=5,vA[2*A]=$A(A,5);jA=new TA(LA,OA,257,yA,kA),JA=new TA(vA,xA,0,bA,kA),qA=new TA(new Array(0),RA,0,19,7)})(),ot=!0),A.l_desc=new PA(A.dyn_ltree,jA),A.d_desc=new PA(A.dyn_dtree,JA),A.bl_desc=new PA(A.bl_tree,qA),A.bi_buf=0,A.bi_valid=0,tt(A)},wt=(A,t,e,r)=>{let n,B,g=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let t,e=4093624447;for(t=0;t<=31;t++,e>>>=1)if(1&e&&0!==A.dyn_ltree[2*t])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(t=32;t<mA;t++)if(0!==A.dyn_ltree[2*t])return 1;return 0})(A)),gt(A,A.l_desc),gt(A,A.d_desc),g=(A=>{let t;for(st(A,A.dyn_ltree,A.l_desc.max_code),st(A,A.dyn_dtree,A.d_desc.max_code),gt(A,A.bl_desc),t=18;t>=3&&0===A.bl_tree[2*VA[t]+1];t--);return A.opt_len+=3*(t+1)+5+5+4,t})(A),n=A.opt_len+3+7>>>3,B=A.static_len+3+7>>>3,B<=n&&(n=B)):n=B=e+5,e+4<=n&&-1!==t?at(A,t,e,r):4===A.strategy||B===n?(zA(A,2+(r?1:0),3),Bt(A,LA,vA)):(zA(A,4+(r?1:0),3),((A,t,e,r)=>{let n;for(zA(A,t-257,5),zA(A,e-1,5),zA(A,r-4,4),n=0;n<r;n++)zA(A,A.bl_tree[2*VA[n]+1],3);it(A,A.dyn_ltree,t-1),it(A,A.dyn_dtree,e-1)})(A,A.l_desc.max_code+1,A.d_desc.max_code+1,g+1),Bt(A,A.dyn_ltree,A.dyn_dtree)),tt(A),r&&et(A)},Qt=(A,t,e)=>(A.pending_buf[A.sym_buf+A.sym_next++]=t,A.pending_buf[A.sym_buf+A.sym_next++]=t>>8,A.pending_buf[A.sym_buf+A.sym_next++]=e,0===t?A.dyn_ltree[2*e]++:(A.matches++,t--,A.dyn_ltree[2*(SA[e]+mA+1)]++,A.dyn_dtree[2*WA(t)]++),A.sym_next===A.sym_end),ht=A=>{zA(A,2,3),XA(A,256,LA),(A=>{16===A.bi_valid?(ZA(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)},ut={_tr_init:ct,_tr_stored_block:at,_tr_flush_block:wt,_tr_tally:Qt,_tr_align:ht};var lt=(A,t,e,r)=>{let n=65535&A,B=A>>>16&65535,g=0;for(;0!==e;){g=e>2e3?2e3:e,e-=g;do{n=n+t[r++]|0,B=B+n|0}while(--g);n%=65521,B%=65521}return n|B<<16};const Ct=new Uint32Array((()=>{let A,t=[];for(var e=0;e<256;e++){A=e;for(var r=0;r<8;r++)A=1&A?3988292384^A>>>1:A>>>1;t[e]=A}return t})());var ft=(A,t,e,r)=>{const n=Ct,B=r+e;A^=-1;for(let e=r;e<B;e++)A=A>>>8^n[255&(A^t[e])];return~A},dt={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Et={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:pt,_tr_stored_block:Ht,_tr_flush_block:Dt,_tr_tally:It,_tr_align:Ft}=ut,{Z_NO_FLUSH:Gt,Z_PARTIAL_FLUSH:Ut,Z_FULL_FLUSH:Yt,Z_FINISH:Mt,Z_BLOCK:mt,Z_OK:yt,Z_STREAM_END:bt,Z_STREAM_ERROR:kt,Z_DATA_ERROR:Ot,Z_BUF_ERROR:xt,Z_DEFAULT_COMPRESSION:Rt,Z_FILTERED:Vt,Z_HUFFMAN_ONLY:Lt,Z_RLE:vt,Z_FIXED:_t,Z_DEFAULT_STRATEGY:St,Z_UNKNOWN:Kt,Z_DEFLATED:Nt}=Et,Tt=258,jt=262,Jt=42,qt=113,Pt=666,Wt=(A,t)=>(A.msg=dt[t],t),Zt=A=>2*A-(A>4?9:0),zt=A=>{let t=A.length;for(;--t>=0;)A[t]=0},Xt=A=>{let t,e,r,n=A.w_size;t=A.hash_size,r=t;do{e=A.head[--r],A.head[r]=e>=n?e-n:0}while(--t);t=n,r=t;do{e=A.prev[--r],A.prev[r]=e>=n?e-n:0}while(--t)};let $t=(A,t,e)=>(t<<A.hash_shift^e)&A.hash_mask;const Ae=A=>{const t=A.state;let e=t.pending;e>A.avail_out&&(e=A.avail_out),0!==e&&(A.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+e),A.next_out),A.next_out+=e,t.pending_out+=e,A.total_out+=e,A.avail_out-=e,t.pending-=e,0===t.pending&&(t.pending_out=0))},te=(A,t)=>{Dt(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,t),A.block_start=A.strstart,Ae(A.strm)},ee=(A,t)=>{A.pending_buf[A.pending++]=t},re=(A,t)=>{A.pending_buf[A.pending++]=t>>>8&255,A.pending_buf[A.pending++]=255&t},ne=(A,t,e,r)=>{let n=A.avail_in;return n>r&&(n=r),0===n?0:(A.avail_in-=n,t.set(A.input.subarray(A.next_in,A.next_in+n),e),1===A.state.wrap?A.adler=lt(A.adler,t,n,e):2===A.state.wrap&&(A.adler=ft(A.adler,t,n,e)),A.next_in+=n,A.total_in+=n,n)},Be=(A,t)=>{let e,r,n=A.max_chain_length,B=A.strstart,g=A.prev_length,s=A.nice_match;const i=A.strstart>A.w_size-jt?A.strstart-(A.w_size-jt):0,o=A.window,a=A.w_mask,c=A.prev,w=A.strstart+Tt;let Q=o[B+g-1],h=o[B+g];A.prev_length>=A.good_match&&(n>>=2),s>A.lookahead&&(s=A.lookahead);do{if(e=t,o[e+g]===h&&o[e+g-1]===Q&&o[e]===o[B]&&o[++e]===o[B+1]){B+=2,e++;do{}while(o[++B]===o[++e]&&o[++B]===o[++e]&&o[++B]===o[++e]&&o[++B]===o[++e]&&o[++B]===o[++e]&&o[++B]===o[++e]&&o[++B]===o[++e]&&o[++B]===o[++e]&&B<w);if(r=Tt-(w-B),B=w-Tt,r>g){if(A.match_start=t,g=r,r>=s)break;Q=o[B+g-1],h=o[B+g]}}}while((t=c[t&a])>i&&0!=--n);return g<=A.lookahead?g:A.lookahead},ge=A=>{const t=A.w_size;let e,r,n;do{if(r=A.window_size-A.lookahead-A.strstart,A.strstart>=t+(t-jt)&&(A.window.set(A.window.subarray(t,t+t-r),0),A.match_start-=t,A.strstart-=t,A.block_start-=t,A.insert>A.strstart&&(A.insert=A.strstart),Xt(A),r+=t),0===A.strm.avail_in)break;if(e=ne(A.strm,A.window,A.strstart+A.lookahead,r),A.lookahead+=e,A.lookahead+A.insert>=3)for(n=A.strstart-A.insert,A.ins_h=A.window[n],A.ins_h=$t(A,A.ins_h,A.window[n+1]);A.insert&&(A.ins_h=$t(A,A.ins_h,A.window[n+3-1]),A.prev[n&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=n,n++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<jt&&0!==A.strm.avail_in)},se=(A,t)=>{let e,r,n,B=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,g=0,s=A.strm.avail_in;do{if(e=65535,n=A.bi_valid+42>>3,A.strm.avail_out<n)break;if(n=A.strm.avail_out-n,r=A.strstart-A.block_start,e>r+A.strm.avail_in&&(e=r+A.strm.avail_in),e>n&&(e=n),e<B&&(0===e&&t!==Mt||t===Gt||e!==r+A.strm.avail_in))break;g=t===Mt&&e===r+A.strm.avail_in?1:0,Ht(A,0,0,g),A.pending_buf[A.pending-4]=e,A.pending_buf[A.pending-3]=e>>8,A.pending_buf[A.pending-2]=~e,A.pending_buf[A.pending-1]=~e>>8,Ae(A.strm),r&&(r>e&&(r=e),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+r),A.strm.next_out),A.strm.next_out+=r,A.strm.avail_out-=r,A.strm.total_out+=r,A.block_start+=r,e-=r),e&&(ne(A.strm,A.strm.output,A.strm.next_out,e),A.strm.next_out+=e,A.strm.avail_out-=e,A.strm.total_out+=e)}while(0===g);return s-=A.strm.avail_in,s&&(s>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=s&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-s,A.strm.next_in),A.strstart),A.strstart+=s,A.insert+=s>A.w_size-A.insert?A.w_size-A.insert:s),A.block_start=A.strstart),A.high_water<A.strstart&&(A.high_water=A.strstart),g?4:t!==Gt&&t!==Mt&&0===A.strm.avail_in&&A.strstart===A.block_start?2:(n=A.window_size-A.strstart,A.strm.avail_in>n&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,n+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),n>A.strm.avail_in&&(n=A.strm.avail_in),n&&(ne(A.strm,A.window,A.strstart,n),A.strstart+=n,A.insert+=n>A.w_size-A.insert?A.w_size-A.insert:n),A.high_water<A.strstart&&(A.high_water=A.strstart),n=A.bi_valid+42>>3,n=A.pending_buf_size-n>65535?65535:A.pending_buf_size-n,B=n>A.w_size?A.w_size:n,r=A.strstart-A.block_start,(r>=B||(r||t===Mt)&&t!==Gt&&0===A.strm.avail_in&&r<=n)&&(e=r>n?n:r,g=t===Mt&&0===A.strm.avail_in&&e===r?1:0,Ht(A,A.block_start,e,g),A.block_start+=e,Ae(A.strm)),g?3:1)},ie=(A,t)=>{let e,r;for(;;){if(A.lookahead<jt){if(ge(A),A.lookahead<jt&&t===Gt)return 1;if(0===A.lookahead)break}if(e=0,A.lookahead>=3&&(A.ins_h=$t(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==e&&A.strstart-e<=A.w_size-jt&&(A.match_length=Be(A,e)),A.match_length>=3)if(r=It(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=$t(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!=--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=$t(A,A.ins_h,A.window[A.strstart+1]);else r=It(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(r&&(te(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,t===Mt?(te(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(te(A,!1),0===A.strm.avail_out)?1:2},oe=(A,t)=>{let e,r,n;for(;;){if(A.lookahead<jt){if(ge(A),A.lookahead<jt&&t===Gt)return 1;if(0===A.lookahead)break}if(e=0,A.lookahead>=3&&(A.ins_h=$t(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==e&&A.prev_length<A.max_lazy_match&&A.strstart-e<=A.w_size-jt&&(A.match_length=Be(A,e),A.match_length<=5&&(A.strategy===Vt||3===A.match_length&&A.strstart-A.match_start>4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){n=A.strstart+A.lookahead-3,r=It(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=n&&(A.ins_h=$t(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!=--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,r&&(te(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(r=It(A,0,A.window[A.strstart-1]),r&&te(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(r=It(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,t===Mt?(te(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(te(A,!1),0===A.strm.avail_out)?1:2};function ae(A,t,e,r,n){this.good_length=A,this.max_lazy=t,this.nice_length=e,this.max_chain=r,this.func=n}const ce=[new ae(0,0,0,0,se),new ae(4,4,8,4,ie),new ae(4,5,16,8,ie),new ae(4,6,32,32,ie),new ae(4,4,16,16,oe),new ae(8,16,32,32,oe),new ae(8,16,128,128,oe),new ae(8,32,128,256,oe),new ae(32,128,258,1024,oe),new ae(32,258,258,4096,oe)];function we(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Nt,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),zt(this.dyn_ltree),zt(this.dyn_dtree),zt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),zt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),zt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Qe=A=>{if(!A)return 1;const t=A.state;return!t||t.strm!==A||t.status!==Jt&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==qt&&t.status!==Pt?1:0},he=A=>{if(Qe(A))return Wt(A,kt);A.total_in=A.total_out=0,A.data_type=Kt;const t=A.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?Jt:qt,A.adler=2===t.wrap?0:1,t.last_flush=-2,pt(t),yt},ue=A=>{const t=he(A);return t===yt&&(A=>{A.window_size=2*A.w_size,zt(A.head),A.max_lazy_match=ce[A.level].max_lazy,A.good_match=ce[A.level].good_length,A.nice_match=ce[A.level].nice_length,A.max_chain_length=ce[A.level].max_chain,A.strstart=0,A.block_start=0,A.lookahead=0,A.insert=0,A.match_length=A.prev_length=2,A.match_available=0,A.ins_h=0})(A.state),t},le=(A,t,e,r,n,B)=>{if(!A)return kt;let g=1;if(t===Rt&&(t=6),r<0?(g=0,r=-r):r>15&&(g=2,r-=16),n<1||n>9||e!==Nt||r<8||r>15||t<0||t>9||B<0||B>_t||8===r&&1!==g)return Wt(A,kt);8===r&&(r=9);const s=new we;return A.state=s,s.strm=A,s.status=Jt,s.wrap=g,s.gzhead=null,s.w_bits=r,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=n+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+3-1)/3),s.window=new Uint8Array(2*s.w_size),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<n+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=3*(s.lit_bufsize-1),s.level=t,s.strategy=B,s.method=e,ue(A)};var Ce=(A,t)=>{if(Qe(A)||t>mt||t<0)return A?Wt(A,kt):kt;const e=A.state;if(!A.output||0!==A.avail_in&&!A.input||e.status===Pt&&t!==Mt)return Wt(A,0===A.avail_out?xt:kt);const r=e.last_flush;if(e.last_flush=t,0!==e.pending){if(Ae(A),0===A.avail_out)return e.last_flush=-1,yt}else if(0===A.avail_in&&Zt(t)<=Zt(r)&&t!==Mt)return Wt(A,xt);if(e.status===Pt&&0!==A.avail_in)return Wt(A,xt);if(e.status===Jt&&0===e.wrap&&(e.status=qt),e.status===Jt){let t=Nt+(e.w_bits-8<<4)<<8,r=-1;if(r=e.strategy>=Lt||e.level<2?0:e.level<6?1:6===e.level?2:3,t|=r<<6,0!==e.strstart&&(t|=32),t+=31-t%31,re(e,t),0!==e.strstart&&(re(e,A.adler>>>16),re(e,65535&A.adler)),A.adler=1,e.status=qt,Ae(A),0!==e.pending)return e.last_flush=-1,yt}if(57===e.status)if(A.adler=0,ee(e,31),ee(e,139),ee(e,8),e.gzhead)ee(e,(e.gzhead.text?1:0)+(e.gzhead.hcrc?2:0)+(e.gzhead.extra?4:0)+(e.gzhead.name?8:0)+(e.gzhead.comment?16:0)),ee(e,255&e.gzhead.time),ee(e,e.gzhead.time>>8&255),ee(e,e.gzhead.time>>16&255),ee(e,e.gzhead.time>>24&255),ee(e,9===e.level?2:e.strategy>=Lt||e.level<2?4:0),ee(e,255&e.gzhead.os),e.gzhead.extra&&e.gzhead.extra.length&&(ee(e,255&e.gzhead.extra.length),ee(e,e.gzhead.extra.length>>8&255)),e.gzhead.hcrc&&(A.adler=ft(A.adler,e.pending_buf,e.pending,0)),e.gzindex=0,e.status=69;else if(ee(e,0),ee(e,0),ee(e,0),ee(e,0),ee(e,0),ee(e,9===e.level?2:e.strategy>=Lt||e.level<2?4:0),ee(e,3),e.status=qt,Ae(A),0!==e.pending)return e.last_flush=-1,yt;if(69===e.status){if(e.gzhead.extra){let t=e.pending,r=(65535&e.gzhead.extra.length)-e.gzindex;for(;e.pending+r>e.pending_buf_size;){let n=e.pending_buf_size-e.pending;if(e.pending_buf.set(e.gzhead.extra.subarray(e.gzindex,e.gzindex+n),e.pending),e.pending=e.pending_buf_size,e.gzhead.hcrc&&e.pending>t&&(A.adler=ft(A.adler,e.pending_buf,e.pending-t,t)),e.gzindex+=n,Ae(A),0!==e.pending)return e.last_flush=-1,yt;t=0,r-=n}let n=new Uint8Array(e.gzhead.extra);e.pending_buf.set(n.subarray(e.gzindex,e.gzindex+r),e.pending),e.pending+=r,e.gzhead.hcrc&&e.pending>t&&(A.adler=ft(A.adler,e.pending_buf,e.pending-t,t)),e.gzindex=0}e.status=73}if(73===e.status){if(e.gzhead.name){let t,r=e.pending;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>r&&(A.adler=ft(A.adler,e.pending_buf,e.pending-r,r)),Ae(A),0!==e.pending)return e.last_flush=-1,yt;r=0}t=e.gzindex<e.gzhead.name.length?255&e.gzhead.name.charCodeAt(e.gzindex++):0,ee(e,t)}while(0!==t);e.gzhead.hcrc&&e.pending>r&&(A.adler=ft(A.adler,e.pending_buf,e.pending-r,r)),e.gzindex=0}e.status=91}if(91===e.status){if(e.gzhead.comment){let t,r=e.pending;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>r&&(A.adler=ft(A.adler,e.pending_buf,e.pending-r,r)),Ae(A),0!==e.pending)return e.last_flush=-1,yt;r=0}t=e.gzindex<e.gzhead.comment.length?255&e.gzhead.comment.charCodeAt(e.gzindex++):0,ee(e,t)}while(0!==t);e.gzhead.hcrc&&e.pending>r&&(A.adler=ft(A.adler,e.pending_buf,e.pending-r,r))}e.status=103}if(103===e.status){if(e.gzhead.hcrc){if(e.pending+2>e.pending_buf_size&&(Ae(A),0!==e.pending))return e.last_flush=-1,yt;ee(e,255&A.adler),ee(e,A.adler>>8&255),A.adler=0}if(e.status=qt,Ae(A),0!==e.pending)return e.last_flush=-1,yt}if(0!==A.avail_in||0!==e.lookahead||t!==Gt&&e.status!==Pt){let r=0===e.level?se(e,t):e.strategy===Lt?((A,t)=>{let e;for(;;){if(0===A.lookahead&&(ge(A),0===A.lookahead)){if(t===Gt)return 1;break}if(A.match_length=0,e=It(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,e&&(te(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,t===Mt?(te(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(te(A,!1),0===A.strm.avail_out)?1:2})(e,t):e.strategy===vt?((A,t)=>{let e,r,n,B;const g=A.window;for(;;){if(A.lookahead<=Tt){if(ge(A),A.lookahead<=Tt&&t===Gt)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(n=A.strstart-1,r=g[n],r===g[++n]&&r===g[++n]&&r===g[++n])){B=A.strstart+Tt;do{}while(r===g[++n]&&r===g[++n]&&r===g[++n]&&r===g[++n]&&r===g[++n]&&r===g[++n]&&r===g[++n]&&r===g[++n]&&n<B);A.match_length=Tt-(B-n),A.match_length>A.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(e=It(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(e=It(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),e&&(te(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,t===Mt?(te(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(te(A,!1),0===A.strm.avail_out)?1:2})(e,t):ce[e.level].func(e,t);if(3!==r&&4!==r||(e.status=Pt),1===r||3===r)return 0===A.avail_out&&(e.last_flush=-1),yt;if(2===r&&(t===Ut?Ft(e):t!==mt&&(Ht(e,0,0,!1),t===Yt&&(zt(e.head),0===e.lookahead&&(e.strstart=0,e.block_start=0,e.insert=0))),Ae(A),0===A.avail_out))return e.last_flush=-1,yt}return t!==Mt?yt:e.wrap<=0?bt:(2===e.wrap?(ee(e,255&A.adler),ee(e,A.adler>>8&255),ee(e,A.adler>>16&255),ee(e,A.adler>>24&255),ee(e,255&A.total_in),ee(e,A.total_in>>8&255),ee(e,A.total_in>>16&255),ee(e,A.total_in>>24&255)):(re(e,A.adler>>>16),re(e,65535&A.adler)),Ae(A),e.wrap>0&&(e.wrap=-e.wrap),0!==e.pending?yt:bt)},fe=(A,t)=>{let e=t.length;if(Qe(A))return kt;const r=A.state,n=r.wrap;if(2===n||1===n&&r.status!==Jt||r.lookahead)return kt;if(1===n&&(A.adler=lt(A.adler,t,e,0)),r.wrap=0,e>=r.w_size){0===n&&(zt(r.head),r.strstart=0,r.block_start=0,r.insert=0);let A=new Uint8Array(r.w_size);A.set(t.subarray(e-r.w_size,e),0),t=A,e=r.w_size}const B=A.avail_in,g=A.next_in,s=A.input;for(A.avail_in=e,A.next_in=0,A.input=t,ge(r);r.lookahead>=3;){let A=r.strstart,t=r.lookahead-2;do{r.ins_h=$t(r,r.ins_h,r.window[A+3-1]),r.prev[A&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=A,A++}while(--t);r.strstart=A,r.lookahead=2,ge(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,A.next_in=g,A.input=s,A.avail_in=B,r.wrap=n,yt},de={deflateInit:(A,t)=>le(A,t,Nt,15,8,St),deflateInit2:le,deflateReset:ue,deflateResetKeep:he,deflateSetHeader:(A,t)=>Qe(A)||2!==A.state.wrap?kt:(A.state.gzhead=t,yt),deflate:Ce,deflateEnd:A=>{if(Qe(A))return kt;const t=A.state.status;return A.state=null,t===qt?Wt(A,Ot):yt},deflateSetDictionary:fe,deflateInfo:"pako deflate (from Nodeca project)"};const Ee=(A,t)=>Object.prototype.hasOwnProperty.call(A,t);var pe=function(A){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const e=t.shift();if(e){if("object"!=typeof e)throw new TypeError(e+"must be non-object");for(const t in e)Ee(e,t)&&(A[t]=e[t])}}return A},He=A=>{let t=0;for(let e=0,r=A.length;e<r;e++)t+=A[e].length;const e=new Uint8Array(t);for(let t=0,r=0,n=A.length;t<n;t++){let n=A[t];e.set(n,r),r+=n.length}return e};let De=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){De=!1}const Ie=new Uint8Array(256);for(let A=0;A<256;A++)Ie[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;Ie[254]=Ie[254]=1;var Fe=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let t,e,r,n,B,g=A.length,s=0;for(n=0;n<g;n++)e=A.charCodeAt(n),55296==(64512&e)&&n+1<g&&(r=A.charCodeAt(n+1),56320==(64512&r)&&(e=65536+(e-55296<<10)+(r-56320),n++)),s+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(s),B=0,n=0;B<s;n++)e=A.charCodeAt(n),55296==(64512&e)&&n+1<g&&(r=A.charCodeAt(n+1),56320==(64512&r)&&(e=65536+(e-55296<<10)+(r-56320),n++)),e<128?t[B++]=e:e<2048?(t[B++]=192|e>>>6,t[B++]=128|63&e):e<65536?(t[B++]=224|e>>>12,t[B++]=128|e>>>6&63,t[B++]=128|63&e):(t[B++]=240|e>>>18,t[B++]=128|e>>>12&63,t[B++]=128|e>>>6&63,t[B++]=128|63&e);return t},Ge=(A,t)=>{const e=t||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,t));let r,n;const B=new Array(2*e);for(n=0,r=0;r<e;){let t=A[r++];if(t<128){B[n++]=t;continue}let g=Ie[t];if(g>4)B[n++]=65533,r+=g-1;else{for(t&=2===g?31:3===g?15:7;g>1&&r<e;)t=t<<6|63&A[r++],g--;g>1?B[n++]=65533:t<65536?B[n++]=t:(t-=65536,B[n++]=55296|t>>10&1023,B[n++]=56320|1023&t)}}return((A,t)=>{if(t<65534&&A.subarray&&De)return String.fromCharCode.apply(null,A.length===t?A:A.subarray(0,t));let e="";for(let r=0;r<t;r++)e+=String.fromCharCode(A[r]);return e})(B,n)},Ue=(A,t)=>{(t=t||A.length)>A.length&&(t=A.length);let e=t-1;for(;e>=0&&128==(192&A[e]);)e--;return e<0||0===e?t:e+Ie[A[e]]>t?e:t};var Ye=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Me=Object.prototype.toString,{Z_NO_FLUSH:me,Z_SYNC_FLUSH:ye,Z_FULL_FLUSH:be,Z_FINISH:ke,Z_OK:Oe,Z_STREAM_END:xe,Z_DEFAULT_COMPRESSION:Re,Z_DEFAULT_STRATEGY:Ve,Z_DEFLATED:Le}=Et;function ve(A){this.options=pe({level:Re,method:Le,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ve},A||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ye,this.strm.avail_out=0;let e=de.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==Oe)throw new Error(dt[e]);if(t.header&&de.deflateSetHeader(this.strm,t.header),t.dictionary){let A;if(A="string"==typeof t.dictionary?Fe(t.dictionary):"[object ArrayBuffer]"===Me.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,e=de.deflateSetDictionary(this.strm,A),e!==Oe)throw new Error(dt[e]);this._dict_set=!0}}function _e(A,t){const e=new ve(t);if(e.push(A,!0),e.err)throw e.msg||dt[e.err];return e.result}ve.prototype.push=function(A,t){const e=this.strm,r=this.options.chunkSize;let n,B;if(this.ended)return!1;for(B=t===~~t?t:!0===t?ke:me,"string"==typeof A?e.input=Fe(A):"[object ArrayBuffer]"===Me.call(A)?e.input=new Uint8Array(A):e.input=A,e.next_in=0,e.avail_in=e.input.length;;)if(0===e.avail_out&&(e.output=new Uint8Array(r),e.next_out=0,e.avail_out=r),(B===ye||B===be)&&e.avail_out<=6)this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;else{if(n=de.deflate(e,B),n===xe)return e.next_out>0&&this.onData(e.output.subarray(0,e.next_out)),n=de.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Oe;if(0!==e.avail_out){if(B>0&&e.next_out>0)this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;else if(0===e.avail_in)break}else this.onData(e.output)}return!0},ve.prototype.onData=function(A){this.chunks.push(A)},ve.prototype.onEnd=function(A){A===Oe&&(this.result=He(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var Se={Deflate:ve,deflate:_e,deflateRaw:function(A,t){return(t=t||{}).raw=!0,_e(A,t)},gzip:function(A,t){return(t=t||{}).gzip=!0,_e(A,t)},constants:Et};const Ke=16209;var Ne=function(A,t){let e,r,n,B,g,s,i,o,a,c,w,Q,h,u,l,C,f,d,E,p,H,D,I,F;const G=A.state;e=A.next_in,I=A.input,r=e+(A.avail_in-5),n=A.next_out,F=A.output,B=n-(t-A.avail_out),g=n+(A.avail_out-257),s=G.dmax,i=G.wsize,o=G.whave,a=G.wnext,c=G.window,w=G.hold,Q=G.bits,h=G.lencode,u=G.distcode,l=(1<<G.lenbits)-1,C=(1<<G.distbits)-1;A:do{Q<15&&(w+=I[e++]<<Q,Q+=8,w+=I[e++]<<Q,Q+=8),f=h[w&l];t:for(;;){if(d=f>>>24,w>>>=d,Q-=d,d=f>>>16&255,0===d)F[n++]=65535&f;else{if(!(16&d)){if(64&d){if(32&d){G.mode=16191;break A}A.msg="invalid literal/length code",G.mode=Ke;break A}f=h[(65535&f)+(w&(1<<d)-1)];continue t}for(E=65535&f,d&=15,d&&(Q<d&&(w+=I[e++]<<Q,Q+=8),E+=w&(1<<d)-1,w>>>=d,Q-=d),Q<15&&(w+=I[e++]<<Q,Q+=8,w+=I[e++]<<Q,Q+=8),f=u[w&C];;){if(d=f>>>24,w>>>=d,Q-=d,d=f>>>16&255,16&d){if(p=65535&f,d&=15,Q<d&&(w+=I[e++]<<Q,Q+=8,Q<d&&(w+=I[e++]<<Q,Q+=8)),p+=w&(1<<d)-1,p>s){A.msg="invalid distance too far back",G.mode=Ke;break A}if(w>>>=d,Q-=d,d=n-B,p>d){if(d=p-d,d>o&&G.sane){A.msg="invalid distance too far back",G.mode=Ke;break A}if(H=0,D=c,0===a){if(H+=i-d,d<E){E-=d;do{F[n++]=c[H++]}while(--d);H=n-p,D=F}}else if(a<d){if(H+=i+a-d,d-=a,d<E){E-=d;do{F[n++]=c[H++]}while(--d);if(H=0,a<E){d=a,E-=d;do{F[n++]=c[H++]}while(--d);H=n-p,D=F}}}else if(H+=a-d,d<E){E-=d;do{F[n++]=c[H++]}while(--d);H=n-p,D=F}for(;E>2;)F[n++]=D[H++],F[n++]=D[H++],F[n++]=D[H++],E-=3;E&&(F[n++]=D[H++],E>1&&(F[n++]=D[H++]))}else{H=n-p;do{F[n++]=F[H++],F[n++]=F[H++],F[n++]=F[H++],E-=3}while(E>2);E&&(F[n++]=F[H++],E>1&&(F[n++]=F[H++]))}break}if(64&d){A.msg="invalid distance code",G.mode=Ke;break A}f=u[(65535&f)+(w&(1<<d)-1)]}}break}}while(e<r&&n<g);E=Q>>3,e-=E,Q-=E<<3,w&=(1<<Q)-1,A.next_in=e,A.next_out=n,A.avail_in=e<r?r-e+5:5-(e-r),A.avail_out=n<g?g-n+257:257-(n-g),G.hold=w,G.bits=Q};const Te=15,je=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Je=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),qe=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),Pe=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var We=(A,t,e,r,n,B,g,s)=>{const i=s.bits;let o,a,c,w,Q,h,u=0,l=0,C=0,f=0,d=0,E=0,p=0,H=0,D=0,I=0,F=null;const G=new Uint16Array(16),U=new Uint16Array(16);let Y,M,m,y=null;for(u=0;u<=Te;u++)G[u]=0;for(l=0;l<r;l++)G[t[e+l]]++;for(d=i,f=Te;f>=1&&0===G[f];f--);if(d>f&&(d=f),0===f)return n[B++]=20971520,n[B++]=20971520,s.bits=1,0;for(C=1;C<f&&0===G[C];C++);for(d<C&&(d=C),H=1,u=1;u<=Te;u++)if(H<<=1,H-=G[u],H<0)return-1;if(H>0&&(0===A||1!==f))return-1;for(U[1]=0,u=1;u<Te;u++)U[u+1]=U[u]+G[u];for(l=0;l<r;l++)0!==t[e+l]&&(g[U[t[e+l]]++]=l);if(0===A?(F=y=g,h=20):1===A?(F=je,y=Je,h=257):(F=qe,y=Pe,h=0),I=0,l=0,u=C,Q=B,E=d,p=0,c=-1,D=1<<d,w=D-1,1===A&&D>852||2===A&&D>592)return 1;for(;;){Y=u-p,g[l]+1<h?(M=0,m=g[l]):g[l]>=h?(M=y[g[l]-h],m=F[g[l]-h]):(M=96,m=0),o=1<<u-p,a=1<<E,C=a;do{a-=o,n[Q+(I>>p)+a]=Y<<24|M<<16|m}while(0!==a);for(o=1<<u-1;I&o;)o>>=1;if(0!==o?(I&=o-1,I+=o):I=0,l++,0==--G[u]){if(u===f)break;u=t[e+g[l]]}if(u>d&&(I&w)!==c){for(0===p&&(p=d),Q+=C,E=u-p,H=1<<E;E+p<f&&(H-=G[E+p],!(H<=0));)E++,H<<=1;if(D+=1<<E,1===A&&D>852||2===A&&D>592)return 1;c=I&w,n[c]=d<<24|E<<16|Q-B}}return 0!==I&&(n[Q+I]=u-p<<24|64<<16),s.bits=d,0};const{Z_FINISH:Ze,Z_BLOCK:ze,Z_TREES:Xe,Z_OK:$e,Z_STREAM_END:Ar,Z_NEED_DICT:tr,Z_STREAM_ERROR:er,Z_DATA_ERROR:rr,Z_MEM_ERROR:nr,Z_BUF_ERROR:Br,Z_DEFLATED:gr}=Et,sr=16180,ir=16190,or=16191,ar=16192,cr=16194,wr=16199,Qr=16200,hr=16206,ur=16209,lr=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function Cr(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const fr=A=>{if(!A)return 1;const t=A.state;return!t||t.strm!==A||t.mode<sr||t.mode>16211?1:0},dr=A=>{if(fr(A))return er;const t=A.state;return A.total_in=A.total_out=t.total=0,A.msg="",t.wrap&&(A.adler=1&t.wrap),t.mode=sr,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,$e},Er=A=>{if(fr(A))return er;const t=A.state;return t.wsize=0,t.whave=0,t.wnext=0,dr(A)},pr=(A,t)=>{let e;if(fr(A))return er;const r=A.state;return t<0?(e=0,t=-t):(e=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?er:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,Er(A))},Hr=(A,t)=>{if(!A)return er;const e=new Cr;A.state=e,e.strm=A,e.window=null,e.mode=sr;const r=pr(A,t);return r!==$e&&(A.state=null),r};let Dr,Ir,Fr=!0;const Gr=A=>{if(Fr){Dr=new Int32Array(512),Ir=new Int32Array(32);let t=0;for(;t<144;)A.lens[t++]=8;for(;t<256;)A.lens[t++]=9;for(;t<280;)A.lens[t++]=7;for(;t<288;)A.lens[t++]=8;for(We(1,A.lens,0,288,Dr,0,A.work,{bits:9}),t=0;t<32;)A.lens[t++]=5;We(2,A.lens,0,32,Ir,0,A.work,{bits:5}),Fr=!1}A.lencode=Dr,A.lenbits=9,A.distcode=Ir,A.distbits=5},Ur=(A,t,e,r)=>{let n;const B=A.state;return null===B.window&&(B.wsize=1<<B.wbits,B.wnext=0,B.whave=0,B.window=new Uint8Array(B.wsize)),r>=B.wsize?(B.window.set(t.subarray(e-B.wsize,e),0),B.wnext=0,B.whave=B.wsize):(n=B.wsize-B.wnext,n>r&&(n=r),B.window.set(t.subarray(e-r,e-r+n),B.wnext),(r-=n)?(B.window.set(t.subarray(e-r,e),0),B.wnext=r,B.whave=B.wsize):(B.wnext+=n,B.wnext===B.wsize&&(B.wnext=0),B.whave<B.wsize&&(B.whave+=n))),0};var Yr=(A,t)=>{let e,r,n,B,g,s,i,o,a,c,w,Q,h,u,l,C,f,d,E,p,H,D,I=0;const F=new Uint8Array(4);let G,U;const Y=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(fr(A)||!A.output||!A.input&&0!==A.avail_in)return er;e=A.state,e.mode===or&&(e.mode=ar),g=A.next_out,n=A.output,i=A.avail_out,B=A.next_in,r=A.input,s=A.avail_in,o=e.hold,a=e.bits,c=s,w=i,D=$e;A:for(;;)switch(e.mode){case sr:if(0===e.wrap){e.mode=ar;break}for(;a<16;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(2&e.wrap&&35615===o){0===e.wbits&&(e.wbits=15),e.check=0,F[0]=255&o,F[1]=o>>>8&255,e.check=ft(e.check,F,2,0),o=0,a=0,e.mode=16181;break}if(e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&o)<<8)+(o>>8))%31){A.msg="incorrect header check",e.mode=ur;break}if((15&o)!==gr){A.msg="unknown compression method",e.mode=ur;break}if(o>>>=4,a-=4,H=8+(15&o),0===e.wbits&&(e.wbits=H),H>15||H>e.wbits){A.msg="invalid window size",e.mode=ur;break}e.dmax=1<<e.wbits,e.flags=0,A.adler=e.check=1,e.mode=512&o?16189:or,o=0,a=0;break;case 16181:for(;a<16;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(e.flags=o,(255&e.flags)!==gr){A.msg="unknown compression method",e.mode=ur;break}if(57344&e.flags){A.msg="unknown header flags set",e.mode=ur;break}e.head&&(e.head.text=o>>8&1),512&e.flags&&4&e.wrap&&(F[0]=255&o,F[1]=o>>>8&255,e.check=ft(e.check,F,2,0)),o=0,a=0,e.mode=16182;case 16182:for(;a<32;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}e.head&&(e.head.time=o),512&e.flags&&4&e.wrap&&(F[0]=255&o,F[1]=o>>>8&255,F[2]=o>>>16&255,F[3]=o>>>24&255,e.check=ft(e.check,F,4,0)),o=0,a=0,e.mode=16183;case 16183:for(;a<16;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}e.head&&(e.head.xflags=255&o,e.head.os=o>>8),512&e.flags&&4&e.wrap&&(F[0]=255&o,F[1]=o>>>8&255,e.check=ft(e.check,F,2,0)),o=0,a=0,e.mode=16184;case 16184:if(1024&e.flags){for(;a<16;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}e.length=o,e.head&&(e.head.extra_len=o),512&e.flags&&4&e.wrap&&(F[0]=255&o,F[1]=o>>>8&255,e.check=ft(e.check,F,2,0)),o=0,a=0}else e.head&&(e.head.extra=null);e.mode=16185;case 16185:if(1024&e.flags&&(Q=e.length,Q>s&&(Q=s),Q&&(e.head&&(H=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(r.subarray(B,B+Q),H)),512&e.flags&&4&e.wrap&&(e.check=ft(e.check,r,Q,B)),s-=Q,B+=Q,e.length-=Q),e.length))break A;e.length=0,e.mode=16186;case 16186:if(2048&e.flags){if(0===s)break A;Q=0;do{H=r[B+Q++],e.head&&H&&e.length<65536&&(e.head.name+=String.fromCharCode(H))}while(H&&Q<s);if(512&e.flags&&4&e.wrap&&(e.check=ft(e.check,r,Q,B)),s-=Q,B+=Q,H)break A}else e.head&&(e.head.name=null);e.length=0,e.mode=16187;case 16187:if(4096&e.flags){if(0===s)break A;Q=0;do{H=r[B+Q++],e.head&&H&&e.length<65536&&(e.head.comment+=String.fromCharCode(H))}while(H&&Q<s);if(512&e.flags&&4&e.wrap&&(e.check=ft(e.check,r,Q,B)),s-=Q,B+=Q,H)break A}else e.head&&(e.head.comment=null);e.mode=16188;case 16188:if(512&e.flags){for(;a<16;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(4&e.wrap&&o!==(65535&e.check)){A.msg="header crc mismatch",e.mode=ur;break}o=0,a=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),A.adler=e.check=0,e.mode=or;break;case 16189:for(;a<32;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}A.adler=e.check=lr(o),o=0,a=0,e.mode=ir;case ir:if(0===e.havedict)return A.next_out=g,A.avail_out=i,A.next_in=B,A.avail_in=s,e.hold=o,e.bits=a,tr;A.adler=e.check=1,e.mode=or;case or:if(t===ze||t===Xe)break A;case ar:if(e.last){o>>>=7&a,a-=7&a,e.mode=hr;break}for(;a<3;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}switch(e.last=1&o,o>>>=1,a-=1,3&o){case 0:e.mode=16193;break;case 1:if(Gr(e),e.mode=wr,t===Xe){o>>>=2,a-=2;break A}break;case 2:e.mode=16196;break;case 3:A.msg="invalid block type",e.mode=ur}o>>>=2,a-=2;break;case 16193:for(o>>>=7&a,a-=7&a;a<32;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if((65535&o)!=(o>>>16^65535)){A.msg="invalid stored block lengths",e.mode=ur;break}if(e.length=65535&o,o=0,a=0,e.mode=cr,t===Xe)break A;case cr:e.mode=16195;case 16195:if(Q=e.length,Q){if(Q>s&&(Q=s),Q>i&&(Q=i),0===Q)break A;n.set(r.subarray(B,B+Q),g),s-=Q,B+=Q,i-=Q,g+=Q,e.length-=Q;break}e.mode=or;break;case 16196:for(;a<14;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(e.nlen=257+(31&o),o>>>=5,a-=5,e.ndist=1+(31&o),o>>>=5,a-=5,e.ncode=4+(15&o),o>>>=4,a-=4,e.nlen>286||e.ndist>30){A.msg="too many length or distance symbols",e.mode=ur;break}e.have=0,e.mode=16197;case 16197:for(;e.have<e.ncode;){for(;a<3;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}e.lens[Y[e.have++]]=7&o,o>>>=3,a-=3}for(;e.have<19;)e.lens[Y[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,G={bits:e.lenbits},D=We(0,e.lens,0,19,e.lencode,0,e.work,G),e.lenbits=G.bits,D){A.msg="invalid code lengths set",e.mode=ur;break}e.have=0,e.mode=16198;case 16198:for(;e.have<e.nlen+e.ndist;){for(;I=e.lencode[o&(1<<e.lenbits)-1],l=I>>>24,C=I>>>16&255,f=65535&I,!(l<=a);){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(f<16)o>>>=l,a-=l,e.lens[e.have++]=f;else{if(16===f){for(U=l+2;a<U;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(o>>>=l,a-=l,0===e.have){A.msg="invalid bit length repeat",e.mode=ur;break}H=e.lens[e.have-1],Q=3+(3&o),o>>>=2,a-=2}else if(17===f){for(U=l+3;a<U;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}o>>>=l,a-=l,H=0,Q=3+(7&o),o>>>=3,a-=3}else{for(U=l+7;a<U;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}o>>>=l,a-=l,H=0,Q=11+(127&o),o>>>=7,a-=7}if(e.have+Q>e.nlen+e.ndist){A.msg="invalid bit length repeat",e.mode=ur;break}for(;Q--;)e.lens[e.have++]=H}}if(e.mode===ur)break;if(0===e.lens[256]){A.msg="invalid code -- missing end-of-block",e.mode=ur;break}if(e.lenbits=9,G={bits:e.lenbits},D=We(1,e.lens,0,e.nlen,e.lencode,0,e.work,G),e.lenbits=G.bits,D){A.msg="invalid literal/lengths set",e.mode=ur;break}if(e.distbits=6,e.distcode=e.distdyn,G={bits:e.distbits},D=We(2,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,G),e.distbits=G.bits,D){A.msg="invalid distances set",e.mode=ur;break}if(e.mode=wr,t===Xe)break A;case wr:e.mode=Qr;case Qr:if(s>=6&&i>=258){A.next_out=g,A.avail_out=i,A.next_in=B,A.avail_in=s,e.hold=o,e.bits=a,Ne(A,w),g=A.next_out,n=A.output,i=A.avail_out,B=A.next_in,r=A.input,s=A.avail_in,o=e.hold,a=e.bits,e.mode===or&&(e.back=-1);break}for(e.back=0;I=e.lencode[o&(1<<e.lenbits)-1],l=I>>>24,C=I>>>16&255,f=65535&I,!(l<=a);){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(C&&!(240&C)){for(d=l,E=C,p=f;I=e.lencode[p+((o&(1<<d+E)-1)>>d)],l=I>>>24,C=I>>>16&255,f=65535&I,!(d+l<=a);){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}o>>>=d,a-=d,e.back+=d}if(o>>>=l,a-=l,e.back+=l,e.length=f,0===C){e.mode=16205;break}if(32&C){e.back=-1,e.mode=or;break}if(64&C){A.msg="invalid literal/length code",e.mode=ur;break}e.extra=15&C,e.mode=16201;case 16201:if(e.extra){for(U=e.extra;a<U;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}e.length+=o&(1<<e.extra)-1,o>>>=e.extra,a-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=16202;case 16202:for(;I=e.distcode[o&(1<<e.distbits)-1],l=I>>>24,C=I>>>16&255,f=65535&I,!(l<=a);){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(!(240&C)){for(d=l,E=C,p=f;I=e.distcode[p+((o&(1<<d+E)-1)>>d)],l=I>>>24,C=I>>>16&255,f=65535&I,!(d+l<=a);){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}o>>>=d,a-=d,e.back+=d}if(o>>>=l,a-=l,e.back+=l,64&C){A.msg="invalid distance code",e.mode=ur;break}e.offset=f,e.extra=15&C,e.mode=16203;case 16203:if(e.extra){for(U=e.extra;a<U;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}e.offset+=o&(1<<e.extra)-1,o>>>=e.extra,a-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){A.msg="invalid distance too far back",e.mode=ur;break}e.mode=16204;case 16204:if(0===i)break A;if(Q=w-i,e.offset>Q){if(Q=e.offset-Q,Q>e.whave&&e.sane){A.msg="invalid distance too far back",e.mode=ur;break}Q>e.wnext?(Q-=e.wnext,h=e.wsize-Q):h=e.wnext-Q,Q>e.length&&(Q=e.length),u=e.window}else u=n,h=g-e.offset,Q=e.length;Q>i&&(Q=i),i-=Q,e.length-=Q;do{n[g++]=u[h++]}while(--Q);0===e.length&&(e.mode=Qr);break;case 16205:if(0===i)break A;n[g++]=e.length,i--,e.mode=Qr;break;case hr:if(e.wrap){for(;a<32;){if(0===s)break A;s--,o|=r[B++]<<a,a+=8}if(w-=i,A.total_out+=w,e.total+=w,4&e.wrap&&w&&(A.adler=e.check=e.flags?ft(e.check,n,w,g-w):lt(e.check,n,w,g-w)),w=i,4&e.wrap&&(e.flags?o:lr(o))!==e.check){A.msg="incorrect data check",e.mode=ur;break}o=0,a=0}e.mode=16207;case 16207:if(e.wrap&&e.flags){for(;a<32;){if(0===s)break A;s--,o+=r[B++]<<a,a+=8}if(4&e.wrap&&o!==(4294967295&e.total)){A.msg="incorrect length check",e.mode=ur;break}o=0,a=0}e.mode=16208;case 16208:D=Ar;break A;case ur:D=rr;break A;case 16210:return nr;default:return er}return A.next_out=g,A.avail_out=i,A.next_in=B,A.avail_in=s,e.hold=o,e.bits=a,(e.wsize||w!==A.avail_out&&e.mode<ur&&(e.mode<hr||t!==Ze))&&Ur(A,A.output,A.next_out,w-A.avail_out),c-=A.avail_in,w-=A.avail_out,A.total_in+=c,A.total_out+=w,e.total+=w,4&e.wrap&&w&&(A.adler=e.check=e.flags?ft(e.check,n,w,A.next_out-w):lt(e.check,n,w,A.next_out-w)),A.data_type=e.bits+(e.last?64:0)+(e.mode===or?128:0)+(e.mode===wr||e.mode===cr?256:0),(0===c&&0===w||t===Ze)&&D===$e&&(D=Br),D},Mr={inflateReset:Er,inflateReset2:pr,inflateResetKeep:dr,inflateInit:A=>Hr(A,15),inflateInit2:Hr,inflate:Yr,inflateEnd:A=>{if(fr(A))return er;let t=A.state;return t.window&&(t.window=null),A.state=null,$e},inflateGetHeader:(A,t)=>{if(fr(A))return er;const e=A.state;return 2&e.wrap?(e.head=t,t.done=!1,$e):er},inflateSetDictionary:(A,t)=>{const e=t.length;let r,n,B;return fr(A)?er:(r=A.state,0!==r.wrap&&r.mode!==ir?er:r.mode===ir&&(n=1,n=lt(n,t,e,0),n!==r.check)?rr:(B=Ur(A,t,e,e),B?(r.mode=16210,nr):(r.havedict=1,$e)))},inflateInfo:"pako inflate (from Nodeca project)"};var mr=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const yr=Object.prototype.toString,{Z_NO_FLUSH:br,Z_FINISH:kr,Z_OK:Or,Z_STREAM_END:xr,Z_NEED_DICT:Rr,Z_STREAM_ERROR:Vr,Z_DATA_ERROR:Lr,Z_MEM_ERROR:vr}=Et;function _r(A){this.options=pe({chunkSize:65536,windowBits:15,to:""},A||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||A&&A.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ye,this.strm.avail_out=0;let e=Mr.inflateInit2(this.strm,t.windowBits);if(e!==Or)throw new Error(dt[e]);if(this.header=new mr,Mr.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Fe(t.dictionary):"[object ArrayBuffer]"===yr.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(e=Mr.inflateSetDictionary(this.strm,t.dictionary),e!==Or)))throw new Error(dt[e])}function Sr(A,t){const e=new _r(t);if(e.push(A),e.err)throw e.msg||dt[e.err];return e.result}_r.prototype.push=function(A,t){const e=this.strm,r=this.options.chunkSize,n=this.options.dictionary;let B,g,s;if(this.ended)return!1;for(g=t===~~t?t:!0===t?kr:br,"[object ArrayBuffer]"===yr.call(A)?e.input=new Uint8Array(A):e.input=A,e.next_in=0,e.avail_in=e.input.length;;){for(0===e.avail_out&&(e.output=new Uint8Array(r),e.next_out=0,e.avail_out=r),B=Mr.inflate(e,g),B===Rr&&n&&(B=Mr.inflateSetDictionary(e,n),B===Or?B=Mr.inflate(e,g):B===Lr&&(B=Rr));e.avail_in>0&&B===xr&&e.state.wrap>0&&0!==A[e.next_in];)Mr.inflateReset(e),B=Mr.inflate(e,g);switch(B){case Vr:case Lr:case Rr:case vr:return this.onEnd(B),this.ended=!0,!1}if(s=e.avail_out,e.next_out&&(0===e.avail_out||B===xr))if("string"===this.options.to){let A=Ue(e.output,e.next_out),t=e.next_out-A,n=Ge(e.output,A);e.next_out=t,e.avail_out=r-t,t&&e.output.set(e.output.subarray(A,A+t),0),this.onData(n)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(B!==Or||0!==s){if(B===xr)return B=Mr.inflateEnd(this.strm),this.onEnd(B),this.ended=!0,!0;if(0===e.avail_in)break}}return!0},_r.prototype.onData=function(A){this.chunks.push(A)},_r.prototype.onEnd=function(A){A===Or&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=He(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var Kr={Inflate:_r,inflate:Sr,inflateRaw:function(A,t){return(t=t||{}).raw=!0,Sr(A,t)},ungzip:Sr,constants:Et};const{Deflate:Nr,deflate:Tr,deflateRaw:jr,gzip:Jr}=Se,{Inflate:qr,inflate:Pr,inflateRaw:Wr,ungzip:Zr}=Kr;var zr={Deflate:Nr,deflate:Tr,deflateRaw:jr,gzip:Jr,Inflate:qr,inflate:Pr,inflateRaw:Wr,ungzip:Zr,constants:Et},Xr=e(8287),$r=e(8310);let An={},tn=[],en=!1,rn="",nn=null,Bn=null,gn=null,sn=null,on=null,an=null,cn=null;const wn=1100;let Qn=1024*(wn-100)*64,hn=1024*wn*64,un=0,ln=!1;const Cn=()=>{tn=[],An={},nn=null,Bn=null,gn=null,en=!1,cn=null,sn=null,on=null,ln=!1},fn=(A,t)=>{An[A]=t},dn=A=>{for(const t of tn)if(t.filename==A)return t.content.slice(0,t.position);throw Error(`Could not find file ${A}`)},En=(A,t)=>{const e=ln;ln&&(un-=1,sn.asyncify_stop_rewind(),ln=!1);let r=new Uint8Array;if(An[A])r=An[A];else if(A.match(/\.tfm$/))r=Uint8Array.from(GA(A.replace(/\.tfm$/,"")));else if("r"==t){if(-1==tn.findIndex((t=>t.filename==A&&!t.erstat)))return e||A.startsWith("TeXinputs:")||A.match(/\.(aux|log|dvi)$/)?(tn.push({filename:A,erstat:/\.(aux|log|dvi|tex|sty|def|cls)$/.test(A)?1:0,eof:!0}),tn.length-1):(on&&(on[Qn>>2]=Qn+8,on[Qn+4>>2]=hn),sn.asyncify_start_unwind(Qn),un+=1,ln=!0,setTimeout((async()=>{try{const t=await an(`tex_files/${A}.gz`);An[A]=t}catch{try{const t=await fetch(A);if(!t.ok)throw new Error(`Unable to load ${A}.`);{const e=await t.text();An[A]=e}}catch{}}sn.asyncify_start_rewind(Qn),sn.main()}),0),-1)}return tn.push({filename:A,position:0,position2:0,erstat:0,eoln:!1,content:r,descriptor:tn.length}),tn.length-1},pn=(A,t,e,r)=>{for(void 0===e&&(e=0),void 0===r&&(r=t.length-e);r>A.content.length-A.position;){const t=new Uint8Array(1+2*A.content.length);t.set(A.content),A.content=t}A.content.subarray(A.position).set(t.subarray(e,e+r)),A.position+=r},Hn=A=>{if(en&&(rn+=A,rn.indexOf("\n")>=0)){const A=rn.split("\n");rn=A.pop();for(const t of A)t.length&&postMessage(t)}},Dn=()=>{en=!0},In=A=>{nn=A,on=new Int32Array(A)},Fn=(A,t)=>{Bn=A,t&&(gn=t)},Gn=A=>{an=A},Un=async A=>(sn=A,cn=(()=>{let A,t;const e=new Promise(((e,r)=>{A=e,t=r}));return e.resolve=A,e.reject=t,e})(),sn.main(),sn.asyncify_stop_unwind(),cn),Yn=()=>{const A=new Date;return 60*A.getHours()+A.getMinutes()},Mn=()=>(new Date).getDate(),mn=()=>(new Date).getMonth()+1,yn=()=>(new Date).getFullYear(),bn=(A,t)=>{const e=A<0?{stdout:!0}:tn[A],r=new Uint8Array(nn,t,1)[0],n=new Uint8Array(nn,t+1,r),B=String.fromCharCode.apply(null,n);e.stdout?Hn(B):pn(e,Xr.Buffer.from(B))},kn=(A,t)=>{const e=A<0?{stdout:!0}:tn[A],r=t?"TRUE":"FALSE";e.stdout?Hn(r):pn(e,Xr.Buffer.from(r))},On=(A,t)=>{const e=A<0?{stdout:!0}:tn[A];if(e.stdout)return void Hn(String.fromCharCode(t));const r=Xr.Buffer.alloc(1);r[0]=t,pn(e,r)},xn=(A,t)=>{const e=A<0?{stdout:!0}:tn[A];e.stdout?Hn(t.toString()):pn(e,Xr.Buffer.from(t.toString()))},Rn=(A,t)=>{const e=A<0?{stdout:!0}:tn[A];e.stdout?Hn(t.toString()):pn(e,Xr.Buffer.from(t.toString()))},Vn=(A,t)=>{const e=A<0?{stdout:!0}:tn[A];e.stdout?Hn("\n"):pn(e,Xr.Buffer.from("\n"))},Ln=(A,t)=>{const e=new Uint8Array(nn,t,A);let r=String.fromCharCode.apply(null,e);return r=r.replace(/\000+$/g,""),r.startsWith("{")&&(r=r.replace(/^{/g,""),r=r.replace(/}.*/g,"")),r.startsWith('"')&&(r=r.replace(/^"/g,""),r=r.replace(/".*/g,"")),r=r.replace(/ +$/g,""),r=r.replace(/^\*/,""),r=r.replace(/^TeXfonts:/,""),"TeXformats:TEX.POOL"==r&&(r="tex.pool"),"TTY:"==r?(tn.push({filename:"stdin",stdin:!0,position:0,position2:0,erstat:0,eoln:!1,content:Xr.Buffer.from(Bn)}),tn.length-1):En(r,"r")},vn=(A,t)=>{const e=new Uint8Array(nn,t,A);let r=String.fromCharCode.apply(null,e);return r=r.replace(/ +$/g,""),r.startsWith('"')&&(r=r.replace(/^"/g,""),r=r.replace(/".*/g,"")),"TTY:"==r?(tn.push({filename:"stdout",stdout:!0,erstat:0}),tn.length-1):En(r,"w")},_n=(A,t)=>{const e=new Uint8Array(nn,t,A);let r=String.fromCharCode.apply(null,e);return r.startsWith("{")&&(r=r.replace(/^{/g,""),r=r.replace(/}.*/g,"")),r=r.replace(/ +$/g,""),r=r.replace(/^\*/,""),"TeXformats:TEX.POOL"==r&&(r="tex.pool"),-1!==En(r,"r")?An[r]?.length??0:0},Sn=A=>{const t=tn[A];t.descriptor&&t.descriptor},Kn=A=>tn[A].eof?1:0,Nn=A=>tn[A].erstat,Tn=A=>tn[A].eoln?1:0,jn=(A,t,e,r,n,B,g)=>{const s=tn[A],i=new Uint8Array(nn,e,g),o=new Uint32Array(nn,r,4),a=new Uint32Array(nn,n,4);if(a[0]=o[0],t&&!s.eof&&s.eoln&&(s.position2=s.position2+1),s.eof)return!1;let c=s.content.indexOf(10,s.position2);if(c<0&&(c=s.content.length),s.position2>=s.content.length)return s.stdin&&(gn&&gn(),Pn()),s.eof=!0,!1;for(i.subarray(o[0]).set(s.content.subarray(s.position2,c)),a[0]=o[0]+c-s.position2;32==i[a[0]-1];)a[0]=a[0]-1;return s.position2=c,s.eoln=!0,!0},Jn=(A,t,e)=>{const r=tn[A],n=new Uint8Array(nn);if(r.stdin)r.position>=Bn.length?(n[t]=13,r.eof=!0,gn&&gn(),Pn()):n[t]=Bn[r.position].charCodeAt(0);else{if(!r.descriptor)return r.eof=!0,void(r.eoln=!0);if(0==((A,t,e,r,n)=>(void 0===e&&(e=0),void 0===r&&(r=t.length-e),r>A.content.length-n&&(r=A.content.length-n),t.subarray(e).set(A.content.subarray(n,n+r)),r))(r,n,t,e,r.position))return n[t]=0,r.eof=!0,void(r.eoln=!0)}r.eoln=!1,10==n[t]&&(r.eoln=!0),13==n[t]&&(r.eoln=!0),r.position=r.position+e},qn=(A,t,e)=>{const r=tn[A],n=new Uint8Array(nn);pn(r,n,t,e)},Pn=()=>{rn.length&&Hn("\n"),cn&&cn.resolve()};let Wn,Zn,zn;const Xn=async A=>{const t=await fetch(`${zn}/${A}`);if(t.ok){const A=t.body.getReader(),e=new zr.Inflate;for(;;){const{done:t,value:r}=await A.read();if(t)break;e.push(r)}if(A.releaseLock(),e.err)throw new Error(e.err);return e.result}throw new Error(`Unable to load ${A}. File not available.`)};YA({async load(A){zn=A,Zn=await Xn("tex.wasm.gz"),Wn=new Uint8Array(await Xn("core.dump.gz"),0,65536*wn)},async texify(t,e){const r=e.texPackages?JSON.parse(e.texPackages):{};t=Object.entries(r).reduce(((A,t)=>A+="\\usepackage"+(t[1]?`[${t[1]}]`:"")+`{${t[0]}}`),"")+(e.tikzLibraries?`\\usetikzlibrary{${e.tikzLibraries}}`:"")+(e.addToPreamble||"")+`\\begin{document}\n${t}\n\\end{document}\n`,e.showConsole&&Dn(),fn("input.tex",Xr.Buffer.from(t));const n=new WebAssembly.Memory({initial:wn,maximum:wn});new Uint8Array(n.buffer,0,65536*wn).set(Wn.slice(0)),In(n.buffer),Fn("input.tex\n\\end\n"),Gn(Xn);const B=await WebAssembly.instantiate(Zn,{library:A,env:{memory:n}});await Un(B.instance.exports);const g=dn("input.dvi").buffer;Cn();let s="";const i=new $r.Writable({write(A,t,e){s+=A.toString(),e()}});return await FA(async function*(){yield Xr.Buffer.from(g)}(),i),s}})})()})();\ No newline at end of file
A diagramzip-client-units/tikz/assets/tex.wasm.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amsbsy.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amsfonts.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amsgen.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amsmath.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amsopn.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amssymb.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/amstext.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/array.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/etoolbox.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/expl3.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/hf-tikz.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/ifthen.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/l3backend-dvips.def.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfcalendar.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfcalendar.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfint.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryarrows.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryarrows.meta.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarybbox.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarycurvilinear.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydatavisualization.barcharts.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydatavisualization.formats.functions.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydatavisualization.polar.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.footprints.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.fractals.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.markings.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.pathmorphing.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.pathreplacing.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.shapes.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarydecorations.text.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryfadings.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryfixedpointarithmetic.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryfpu.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryintersections.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarylindenmayersystems.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarypatterns.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarypatterns.meta.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarypgfplots.surfshading.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryplotmarks.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshadings.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.arrows.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.callouts.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.ee.IEC.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.ee.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.logic.IEC.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.logic.US.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.gates.logic.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.geometric.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.misc.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.multipart.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibraryshapes.symbols.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgflibrarysvg.path.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmoduleanimations.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmodulebending.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmoduledatavisualization.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmoduledecorations.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmodulenonlineartransformations.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmoduleoo.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfmoduleparser.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.errorbars.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.markers.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.paths.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.revision.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.scaling.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplots.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsarray.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsbinary.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsbinary.data.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotscolor.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotscolormap.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotscoordprocessing.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotscore.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsdeque.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotslibrary.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsliststructure.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsliststructureext.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsmatrix.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsmeshplothandler.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsmeshplotimage.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsoldpgfsupp_loader.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsoldpgfsupp_pgfutil-common-lists.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsplothandlers.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsstackedplots.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotssysgeneric.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotstableshared.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsticks.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsutil.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfplotsutil.verb.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfsys-luatex.def.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/pgfsysanimations.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikz-3dplot.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikz-cd.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrary3d.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryangles.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryanimations.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryarrows.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryautomata.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarybabel.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarybackgrounds.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarybending.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycalc.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycalendar.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycd.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarychains.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.ee.IEC.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.ee.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.CDH.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.IEC.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.US.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarycircuits.logic.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.3d.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.barcharts.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.formats.functions.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.polar.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydatavisualization.sparklines.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.footprints.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.fractals.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.markings.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.pathmorphing.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.pathreplacing.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.shapes.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarydecorations.text.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryer.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryfadings.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryfit.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryfixedpointarithmetic.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryfolding.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryfpu.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarygraphs.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarygraphs.standard.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryintersections.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarylindenmayersystems.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarymath.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarymatrix.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarymindmap.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarypatterns.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarypatterns.meta.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryperspective.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarypetri.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarypgfplots.contourlua.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryplothandlers.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryplotmarks.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarypositioning.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryquotes.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryrdf.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryscopes.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshadings.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshadows.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.arrows.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.callouts.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.gates.logic.IEC.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.gates.logic.US.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.geometric.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.misc.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.multipart.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryshapes.symbols.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarysnakes.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryspy.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarysvg.path.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarythrough.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibrarytrees.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryturtle.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/tikzlibraryviews.code.tex.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/umsa.fd.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/umsb.fd.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tex_files/xparse.sty.gz +0 -0

Binary file.

A diagramzip-client-units/tikz/assets/tikzjax.js +1 -0
@@ -0,0 +1 @@
1+(()=>{var e={3313:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1601),o=r.n(n),s=r(6314),i=r.n(s)()(o());i.push([e.id,".tikzjax-content svg {\n overflow: visible;\n}\n\n.tikzjax-scaled-content svg {\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n",""]);const a=i},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r="",n=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),n&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),n&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,n,o,s){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(n)for(var a=0;a<this.length;a++){var c=this[a][0];null!=c&&(i[c]=!0)}for(var u=0;u<e.length;u++){var l=[].concat(e[u]);n&&i[l[0]]||(void 0!==s&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=s),r&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=r):l[2]=r),o&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=o):l[4]="".concat(o)),t.push(l))}},t}},1601:e=>{"use strict";e.exports=function(e){return e[1]}},5409:e=>{"use strict";e.exports=e=>!!e&&("symbol"==typeof Symbol.observable&&"function"==typeof e[Symbol.observable]?e===e[Symbol.observable]():"function"==typeof e["@@observable"]&&e===e["@@observable"]())},4527:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Observable:()=>x,Subject:()=>z,filter:()=>E,flatMap:()=>j,interval:()=>M,map:()=>O,merge:()=>F,multicast:()=>I,scan:()=>L,unsubscribe:()=>C});var n=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))};class o{constructor(e){this._baseObserver=e,this._pendingPromises=new Set}complete(){Promise.all(this._pendingPromises).then((()=>this._baseObserver.complete())).catch((e=>this._baseObserver.error(e)))}error(e){this._baseObserver.error(e)}schedule(e){const t=Promise.all(this._pendingPromises),r=[],o=e=>r.push(e),s=Promise.resolve().then((()=>n(this,void 0,void 0,(function*(){yield t,yield e(o),this._pendingPromises.delete(s);for(const e of r)this._baseObserver.next(e)})))).catch((e=>{this._pendingPromises.delete(s),this._baseObserver.error(e)}));this._pendingPromises.add(s)}}const s=()=>"function"==typeof Symbol,i=e=>s()&&Boolean(Symbol[e]),a=e=>i(e)?Symbol[e]:"@@"+e;i("asyncIterator")||(Symbol.asyncIterator=Symbol.asyncIterator||Symbol.for("Symbol.asyncIterator"));const c=a("iterator"),u=a("observable"),l=a("species");function d(e,t){const r=e[t];if(null!=r){if("function"!=typeof r)throw new TypeError(r+" is not a function");return r}}function f(e){let t=e.constructor;return void 0!==t&&(t=t[l],null===t&&(t=void 0)),void 0!==t?t:k}function p(e){p.log?p.log(e):setTimeout((()=>{throw e}),0)}function h(e){Promise.resolve().then((()=>{try{e()}catch(e){p(e)}}))}function m(e){const t=e._cleanup;if(void 0!==t&&(e._cleanup=void 0,t))try{if("function"==typeof t)t();else{const e=d(t,"unsubscribe");e&&e.call(t)}}catch(e){p(e)}}function y(e){e._observer=void 0,e._queue=void 0,e._state="closed"}function v(e,t,r){e._state="running";const n=e._observer;try{const o=n?d(n,t):void 0;switch(t){case"next":o&&o.call(n,r);break;case"error":if(y(e),!o)throw r;o.call(n,r);break;case"complete":y(e),o&&o.call(n)}}catch(e){p(e)}"closed"===e._state?m(e):"running"===e._state&&(e._state="ready")}function b(e,t,r){if("closed"!==e._state)return"buffering"===e._state?(e._queue=e._queue||[],void e._queue.push({type:t,value:r})):"ready"!==e._state?(e._state="buffering",e._queue=[{type:t,value:r}],void h((()=>function(e){const t=e._queue;if(t){e._queue=void 0,e._state="ready";for(const r of t)if(v(e,r.type,r.value),"closed"===e._state)break}}(e)))):void v(e,t,r)}class g{constructor(e,t){this._cleanup=void 0,this._observer=e,this._queue=void 0,this._state="initializing";const r=new w(this);try{this._cleanup=t.call(void 0,r)}catch(e){r.error(e)}"initializing"===this._state&&(this._state="ready")}get closed(){return"closed"===this._state}unsubscribe(){"closed"!==this._state&&(y(this),m(this))}}class w{constructor(e){this._subscription=e}get closed(){return"closed"===this._subscription._state}next(e){b(this._subscription,"next",e)}error(e){b(this._subscription,"error",e)}complete(){b(this._subscription,"complete")}}class k{constructor(e){if(!(this instanceof k))throw new TypeError("Observable cannot be called as a function");if("function"!=typeof e)throw new TypeError("Observable initializer must be a function");this._subscriber=e}subscribe(e,t,r){return"object"==typeof e&&null!==e||(e={next:e,error:t,complete:r}),new g(e,this._subscriber)}pipe(e,...t){let r=this;for(const n of[e,...t])r=n(r);return r}tap(e,t,r){const n="object"!=typeof e||null===e?{next:e,error:t,complete:r}:e;return new k((e=>this.subscribe({next(t){n.next&&n.next(t),e.next(t)},error(t){n.error&&n.error(t),e.error(t)},complete(){n.complete&&n.complete(),e.complete()},start(e){n.start&&n.start(e)}})))}forEach(e){return new Promise(((t,r)=>{if("function"!=typeof e)return void r(new TypeError(e+" is not a function"));function n(){o.unsubscribe(),t(void 0)}const o=this.subscribe({next(t){try{e(t,n)}catch(e){r(e),o.unsubscribe()}},error(e){r(e)},complete(){t(void 0)}})}))}map(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return new(f(this))((t=>this.subscribe({next(r){let n=r;try{n=e(r)}catch(e){return t.error(e)}t.next(n)},error(e){t.error(e)},complete(){t.complete()}})))}filter(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return new(f(this))((t=>this.subscribe({next(r){try{if(!e(r))return}catch(e){return t.error(e)}t.next(r)},error(e){t.error(e)},complete(){t.complete()}})))}reduce(e,t){if("function"!=typeof e)throw new TypeError(e+" is not a function");const r=f(this),n=arguments.length>1;let o=!1,s=t;return new r((t=>this.subscribe({next(r){const i=!o;if(o=!0,!i||n)try{s=e(s,r)}catch(e){return t.error(e)}else s=r},error(e){t.error(e)},complete(){if(!o&&!n)return t.error(new TypeError("Cannot reduce an empty sequence"));t.next(s),t.complete()}})))}concat(...e){const t=f(this);return new t((r=>{let n,o=0;return function s(i){n=i.subscribe({next(e){r.next(e)},error(e){r.error(e)},complete(){o===e.length?(n=void 0,r.complete()):s(t.from(e[o++]))}})}(this),()=>{n&&(n.unsubscribe(),n=void 0)}}))}flatMap(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");const t=f(this);return new t((r=>{const n=[],o=this.subscribe({next(o){let i;if(e)try{i=e(o)}catch(e){return r.error(e)}else i=o;const a=t.from(i).subscribe({next(e){r.next(e)},error(e){r.error(e)},complete(){const e=n.indexOf(a);e>=0&&n.splice(e,1),s()}});n.push(a)},error(e){r.error(e)},complete(){s()}});function s(){o.closed&&0===n.length&&r.complete()}return()=>{n.forEach((e=>e.unsubscribe())),o.unsubscribe()}}))}[(Symbol.observable,u)](){return this}static from(e){const t="function"==typeof this?this:k;if(null==e)throw new TypeError(e+" is not an object");const r=d(e,u);if(r){const n=r.call(e);if(Object(n)!==n)throw new TypeError(n+" is not an object");return function(e){return e instanceof k}(n)&&n.constructor===t?n:new t((e=>n.subscribe(e)))}if(i("iterator")){const r=d(e,c);if(r)return new t((t=>{h((()=>{if(!t.closed){for(const n of r.call(e))if(t.next(n),t.closed)return;t.complete()}}))}))}if(Array.isArray(e))return new t((t=>{h((()=>{if(!t.closed){for(const r of e)if(t.next(r),t.closed)return;t.complete()}}))}));throw new TypeError(e+" is not observable")}static of(...e){return new("function"==typeof this?this:k)((t=>{h((()=>{if(!t.closed){for(const r of e)if(t.next(r),t.closed)return;t.complete()}}))}))}static get[l](){return this}}s()&&Object.defineProperty(k,Symbol("extensions"),{value:{symbol:u,hostReportError:p},configurable:!0});const x=k;const C=function(e){"function"==typeof e?e():e&&"function"==typeof e.unsubscribe&&e.unsubscribe()};var T=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))};const E=function(e){return t=>new x((r=>{const n=new o(r),s=t.subscribe({complete(){n.complete()},error(e){n.error(e)},next(t){n.schedule((r=>T(this,void 0,void 0,(function*(){(yield e(t))&&r(t)}))))}});return()=>C(s)}))};var _=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))},P=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,o,(t=e[r](t)).done,t.value)}))}}};const j=function(e){return t=>new x((r=>{const n=new o(r),s=t.subscribe({complete(){n.complete()},error(e){n.error(e)},next(t){n.schedule((r=>_(this,void 0,void 0,(function*(){var n,o;const s=yield e(t);if((u=s)&&i("iterator")&&u[Symbol.iterator]||function(e){return e&&i("asyncIterator")&&e[Symbol.asyncIterator]}(s))try{for(var a,c=P(s);!(a=yield c.next()).done;){const e=a.value;r(e)}}catch(e){n={error:e}}finally{try{a&&!a.done&&(o=c.return)&&(yield o.call(c))}finally{if(n)throw n.error}}else s.map((e=>r(e)));var u}))))}});return()=>C(s)}))};function M(e){return new k((t=>{let r=0;const n=setInterval((()=>{t.next(r++)}),e);return()=>clearInterval(n)}))}var S=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))};const O=function(e){return t=>new x((r=>{const n=new o(r),s=t.subscribe({complete(){n.complete()},error(e){n.error(e)},next(t){n.schedule((r=>S(this,void 0,void 0,(function*(){const n=yield e(t);r(n)}))))}});return()=>C(s)}))};const F=function(...e){return 0===e.length?k.from([]):new k((t=>{let r=0;const n=e.map((n=>n.subscribe({error(e){t.error(e),o()},next(e){t.next(e)},complete(){++r===e.length&&(t.complete(),o())}}))),o=()=>{n.forEach((e=>C(e)))};return o}))};const z=class extends x{constructor(){super((e=>(this._observers.add(e),()=>this._observers.delete(e)))),this._observers=new Set}next(e){for(const t of this._observers)t.next(e)}error(e){for(const t of this._observers)t.error(e)}complete(){for(const e of this._observers)e.complete()}};const I=function(e){const t=new z;let r,n=0;return new x((o=>{r||(r=e.subscribe(t));const s=t.subscribe(o);return n++,()=>{n--,s.unsubscribe(),0===n&&(C(r),r=void 0)}}))};var W=function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))};const L=function(e,t){return r=>new x((n=>{let s,i=0;const a=new o(n),c=r.subscribe({complete(){a.complete()},error(e){a.error(e)},next(r){a.schedule((n=>W(this,void 0,void 0,(function*(){const o=0===i?void 0===t?r:t:s;s=yield e(o,r,i++),n(s)}))))}});return()=>C(c)}))}},5606:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var a,c=[],u=!1,l=-1;function d(){u&&a&&(u=!1,a.length?c=a.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=i(d);u=!0;for(var t=c.length;t;){for(a=c,c=[];++l<t;)a&&a[l].run();l=-1,t=c.length}a=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function h(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new p(e,t)),1!==c.length||u||i(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=h,n.addListener=h,n.once=h,n.off=h,n.removeListener=h,n.removeAllListeners=h,n.emit=h,n.prependListener=h,n.prependOnceListener=h,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},5072:e=>{"use strict";var t=[];function r(e){for(var r=-1,n=0;n<t.length;n++)if(t[n].identifier===e){r=n;break}return r}function n(e,n){for(var s={},i=[],a=0;a<e.length;a++){var c=e[a],u=n.base?c[0]+n.base:c[0],l=s[u]||0,d="".concat(u," ").concat(l);s[u]=l+1;var f=r(d),p={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==f)t[f].references++,t[f].updater(p);else{var h=o(p,n);n.byIndex=a,t.splice(a,0,{identifier:d,updater:h,references:1})}i.push(d)}return i}function o(e,t){var r=t.domAPI(t);r.update(e);return function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;r.update(e=t)}else r.remove()}}e.exports=function(e,o){var s=n(e=e||[],o=o||{});return function(e){e=e||[];for(var i=0;i<s.length;i++){var a=r(s[i]);t[a].references--}for(var c=n(e,o),u=0;u<s.length;u++){var l=r(s[u]);0===t[l].references&&(t[l].updater(),t.splice(l,1))}s=c}}},7659:e=>{"use strict";var t={};e.exports=function(e,r){var n=function(e){if(void 0===t[e]){var r=document.querySelector(e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}t[e]=r}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(r)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,r)=>{"use strict";e.exports=function(e){var t=r.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(r){!function(e,t,r){var n="";r.supports&&(n+="@supports (".concat(r.supports,") {")),r.media&&(n+="@media ".concat(r.media," {"));var o=void 0!==r.layer;o&&(n+="@layer".concat(r.layer.length>0?" ".concat(r.layer):""," {")),n+=r.css,o&&(n+="}"),r.media&&(n+="}"),r.supports&&(n+="}");var s=r.sourceMap;s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,r)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},9278:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.serialize=t.deserialize=t.registerSerializer=void 0;const n=r(5914);let o=n.DefaultSerializer;t.registerSerializer=function(e){o=n.extendSerializer(o,e)},t.deserialize=function(e){return o.deserialize(e)},t.serialize=function(e){return o.serialize(e)}},447:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.Transfer=t.DefaultSerializer=t.expose=t.registerSerializer=void 0;var s=r(9278);Object.defineProperty(t,"registerSerializer",{enumerable:!0,get:function(){return s.registerSerializer}}),o(r(6838),t);var i=r(1854);Object.defineProperty(t,"expose",{enumerable:!0,get:function(){return i.expose}});var a=r(5914);Object.defineProperty(t,"DefaultSerializer",{enumerable:!0,get:function(){return a.DefaultSerializer}});var c=r(6712);Object.defineProperty(t,"Transfer",{enumerable:!0,get:function(){return c.Transfer}})},1029:(e,t)=>{"use strict";let r;function n(e){return(""+e).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)?\/[^/]+(?:\?.*)?$/,"$1")+"/"}Object.defineProperty(t,"__esModule",{value:!0}),t.getBundleURL=t.getBaseURL=void 0,t.getBundleURL=function(){return r||(r=function(){try{throw new Error}catch(e){const t=(""+e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\/\/[^)\n]+/g);if(t)return n(t[0])}return"/"}()),r},t.getBaseURL=n},1592:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isWorkerRuntime=t.getWorkerImplementation=t.defaultPoolSize=void 0;const n=r(1029);t.defaultPoolSize="undefined"!=typeof navigator&&navigator.hardwareConcurrency?navigator.hardwareConcurrency:4;const o=e=>/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(e);function s(e){const t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}let i;t.getWorkerImplementation=function(){return i||(i=function(){if("undefined"==typeof Worker)return class{constructor(){throw Error("No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.")}};class e extends Worker{constructor(e,t){var r,i;"string"==typeof e&&t&&t._baseURL?e=new URL(e,t._baseURL):"string"==typeof e&&!o(e)&&n.getBundleURL().match(/^file:\/\//i)&&(e=new URL(e,n.getBundleURL().replace(/\/[^\/]+$/,"/")),(null===(r=null==t?void 0:t.CORSWorkaround)||void 0===r||r)&&(e=s(`importScripts(${JSON.stringify(e)});`))),"string"==typeof e&&o(e)&&(null===(i=null==t?void 0:t.CORSWorkaround)||void 0===i||i)&&(e=s(`importScripts(${JSON.stringify(e)});`)),super(e,t)}}class t extends e{constructor(e,t){super(window.URL.createObjectURL(e),t)}static fromText(e,r){const n=new window.Blob([e],{type:"text/javascript"});return new t(n,r)}}return{blob:t,default:e}}()),i},t.isWorkerRuntime=function(){const e="undefined"!=typeof self&&"undefined"!=typeof Window&&self instanceof Window;return!("undefined"==typeof self||!self.postMessage||e)}},6838:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Worker=t.BlobWorker=t.isWorkerRuntime=t.Thread=t.spawn=t.Pool=void 0;const n=r(1592);Object.defineProperty(t,"isWorkerRuntime",{enumerable:!0,get:function(){return n.isWorkerRuntime}});var o=r(2734);Object.defineProperty(t,"Pool",{enumerable:!0,get:function(){return o.Pool}});var s=r(4949);Object.defineProperty(t,"spawn",{enumerable:!0,get:function(){return s.spawn}});var i=r(2996);Object.defineProperty(t,"Thread",{enumerable:!0,get:function(){return i.Thread}}),t.BlobWorker=n.getWorkerImplementation().blob,t.Worker=n.getWorkerImplementation().default},8215:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.createProxyModule=t.createProxyFunction=void 0;const o=n(r(148)),s=r(4527),i=r(9278),a=r(1898),c=r(6712),u=r(2781),l=o.default("threads:master:messages");let d=1;function f(e,t){return new s.Observable((r=>{let n;const o=s=>{var a;if(l("Message from worker:",s.data),s.data&&s.data.uid===t)if((a=s.data)&&a.type===u.WorkerMessageType.running)n=s.data.resultType;else if((e=>e&&e.type===u.WorkerMessageType.result)(s.data))"promise"===n?(void 0!==s.data.payload&&r.next(i.deserialize(s.data.payload)),r.complete(),e.removeEventListener("message",o)):(s.data.payload&&r.next(i.deserialize(s.data.payload)),s.data.complete&&(r.complete(),e.removeEventListener("message",o)));else if((e=>e&&e.type===u.WorkerMessageType.error)(s.data)){const t=i.deserialize(s.data.error);r.error(t),e.removeEventListener("message",o)}};return e.addEventListener("message",o),()=>{if("observable"===n||!n){const r={type:u.MasterMessageType.cancel,uid:t};e.postMessage(r)}e.removeEventListener("message",o)}}))}function p(e,t){return(...r)=>{const n=d++,{args:o,transferables:p}=function(e){if(0===e.length)return{args:[],transferables:[]};const t=[],r=[];for(const n of e)c.isTransferDescriptor(n)?(t.push(i.serialize(n.send)),r.push(...n.transferables)):t.push(i.serialize(n));return{args:t,transferables:0===r.length?r:(n=r,Array.from(new Set(n)))};var n}(r),h={type:u.MasterMessageType.run,uid:n,method:t,args:o};l("Sending command to run function to worker:",h);try{e.postMessage(h,p)}catch(e){return a.ObservablePromise.from(Promise.reject(e))}return a.ObservablePromise.from(s.multicast(f(e,n)))}}t.createProxyFunction=p,t.createProxyModule=function(e,t){const r={};for(const n of t)r[n]=p(e,n);return r}},2882:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PoolEventType=void 0,function(e){e.initialized="initialized",e.taskCanceled="taskCanceled",e.taskCompleted="taskCompleted",e.taskFailed="taskFailed",e.taskQueued="taskQueued",e.taskQueueDrained="taskQueueDrained",e.taskStart="taskStart",e.terminated="terminated"}(t.PoolEventType||(t.PoolEventType={}))},2734:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Pool=t.Thread=t.PoolEventType=void 0;const s=o(r(148)),i=r(4527),a=r(7709),c=r(1592),u=r(2882);Object.defineProperty(t,"PoolEventType",{enumerable:!0,get:function(){return u.PoolEventType}});const l=r(2996);Object.defineProperty(t,"Thread",{enumerable:!0,get:function(){return l.Thread}});let d=1;class f{constructor(e,t){this.eventSubject=new i.Subject,this.initErrors=[],this.isClosing=!1,this.nextTaskID=1,this.taskQueue=[];const r="number"==typeof t?{size:t}:t||{},{size:n=c.defaultPoolSize}=r;var o;this.debug=s.default(`threads:pool:${o=r.name||String(d++),o.replace(/\W/g," ").trim().replace(/\s+/g,"-")}`),this.options=r,this.workers=function(e,t){return function(e){const t=[];for(let r=0;r<e;r++)t.push(r);return t}(t).map((()=>({init:e(),runningTasks:[]})))}(e,n),this.eventObservable=i.multicast(i.Observable.from(this.eventSubject)),Promise.all(this.workers.map((e=>e.init))).then((()=>this.eventSubject.next({type:u.PoolEventType.initialized,size:this.workers.length})),(e=>{this.debug("Error while initializing pool worker:",e),this.eventSubject.error(e),this.initErrors.push(e)}))}findIdlingWorker(){const{concurrency:e=1}=this.options;return this.workers.find((t=>t.runningTasks.length<e))}runPoolTask(e,t){return n(this,void 0,void 0,(function*(){const r=this.workers.indexOf(e)+1;this.debug(`Running task #${t.id} on worker #${r}...`),this.eventSubject.next({type:u.PoolEventType.taskStart,taskID:t.id,workerID:r});try{const n=yield t.run(yield e.init);this.debug(`Task #${t.id} completed successfully`),this.eventSubject.next({type:u.PoolEventType.taskCompleted,returnValue:n,taskID:t.id,workerID:r})}catch(e){this.debug(`Task #${t.id} failed`),this.eventSubject.next({type:u.PoolEventType.taskFailed,taskID:t.id,error:e,workerID:r})}}))}run(e,t){return n(this,void 0,void 0,(function*(){const r=(()=>n(this,void 0,void 0,(function*(){var n;yield(n=0,new Promise((e=>setTimeout(e,n))));try{yield this.runPoolTask(e,t)}finally{e.runningTasks=e.runningTasks.filter((e=>e!==r)),this.isClosing||this.scheduleWork()}})))();e.runningTasks.push(r)}))}scheduleWork(){this.debug("Attempt de-queueing a task in order to run it...");const e=this.findIdlingWorker();if(!e)return;const t=this.taskQueue.shift();if(!t)return this.debug("Task queue is empty"),void this.eventSubject.next({type:u.PoolEventType.taskQueueDrained});this.run(e,t)}taskCompletion(e){return new Promise(((t,r)=>{const n=this.events().subscribe((o=>{o.type===u.PoolEventType.taskCompleted&&o.taskID===e?(n.unsubscribe(),t(o.returnValue)):o.type===u.PoolEventType.taskFailed&&o.taskID===e?(n.unsubscribe(),r(o.error)):o.type===u.PoolEventType.terminated&&(n.unsubscribe(),r(Error("Pool has been terminated before task was run.")))}))}))}settled(e=!1){return n(this,void 0,void 0,(function*(){const t=()=>{return e=this.workers,t=e=>e.runningTasks,e.reduce(((e,r)=>[...e,...t(r)]),[]);var e,t},r=[],n=this.eventObservable.subscribe((e=>{e.type===u.PoolEventType.taskFailed&&r.push(e.error)}));return this.initErrors.length>0?Promise.reject(this.initErrors[0]):e&&0===this.taskQueue.length?(yield a.allSettled(t()),r):(yield new Promise(((e,t)=>{const r=this.eventObservable.subscribe({next(t){t.type===u.PoolEventType.taskQueueDrained&&(r.unsubscribe(),e(void 0))},error:t})})),yield a.allSettled(t()),n.unsubscribe(),r)}))}completed(e=!1){return n(this,void 0,void 0,(function*(){const t=this.settled(e),r=new Promise(((e,r)=>{const n=this.eventObservable.subscribe({next(o){o.type===u.PoolEventType.taskQueueDrained?(n.unsubscribe(),e(t)):o.type===u.PoolEventType.taskFailed&&(n.unsubscribe(),r(o.error))},error:r})})),n=yield Promise.race([t,r]);if(n.length>0)throw n[0]}))}events(){return this.eventObservable}queue(e){const{maxQueuedJobs:t=1/0}=this.options;if(this.isClosing)throw Error("Cannot schedule pool tasks after terminate() has been called.");if(this.initErrors.length>0)throw this.initErrors[0];const r=this.nextTaskID++,n=this.taskCompletion(r);n.catch((e=>{this.debug(`Task #${r} errored:`,e)}));const o={id:r,run:e,cancel:()=>{-1!==this.taskQueue.indexOf(o)&&(this.taskQueue=this.taskQueue.filter((e=>e!==o)),this.eventSubject.next({type:u.PoolEventType.taskCanceled,taskID:o.id}))},then:n.then.bind(n)};if(this.taskQueue.length>=t)throw Error("Maximum number of pool tasks queued. Refusing to queue another one.\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool.");return this.debug(`Queueing task #${o.id}...`),this.taskQueue.push(o),this.eventSubject.next({type:u.PoolEventType.taskQueued,taskID:o.id}),this.scheduleWork(),o}terminate(e){return n(this,void 0,void 0,(function*(){this.isClosing=!0,e||(yield this.completed(!0)),this.eventSubject.next({type:u.PoolEventType.terminated,remainingQueue:[...this.taskQueue]}),this.eventSubject.complete(),yield Promise.all(this.workers.map((e=>n(this,void 0,void 0,(function*(){return l.Thread.terminate(yield e.init)})))))}))}}function p(e,t){return new f(e,t)}f.EventType=u.PoolEventType,p.EventType=u.PoolEventType,t.Pool=p},4949:function(e,t,r){"use strict";var n=r(5606),o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.spawn=void 0;const i=s(r(148)),a=r(4527),c=r(9278),u=r(4238),l=r(3682),d=r(2931),f=r(8215),p=i.default("threads:master:messages"),h=i.default("threads:master:spawn"),m=i.default("threads:master:thread-utils"),y=void 0!==n&&n.env.THREADS_WORKER_INIT_TIMEOUT?Number.parseInt(n.env.THREADS_WORKER_INIT_TIMEOUT,10):1e4;function v(e,t,r,n){const o=r.filter((e=>e.type===d.WorkerEventType.internalError)).map((e=>e.error));return Object.assign(e,{[l.$errors]:o,[l.$events]:r,[l.$terminate]:n,[l.$worker]:t})}t.spawn=function(e,t){return o(this,void 0,void 0,(function*(){h("Initializing new thread");const r=t&&t.timeout?t.timeout:y,n=yield function(e,t,r){return o(this,void 0,void 0,(function*(){let n;const o=new Promise(((e,o)=>{n=setTimeout((()=>o(Error(r))),t)})),s=yield Promise.race([e,o]);return clearTimeout(n),s}))}(function(e){return new Promise(((t,r)=>{const n=o=>{var s;p("Message from worker before finishing initialization:",o.data),(s=o.data)&&"init"===s.type?(e.removeEventListener("message",n),t(o.data)):(e=>e&&"uncaughtError"===e.type)(o.data)&&(e.removeEventListener("message",n),r(c.deserialize(o.data.error)))};e.addEventListener("message",n)}))}(e),r,`Timeout: Did not receive an init message from worker after ${r}ms. Make sure the worker calls expose().`),s=n.exposed,{termination:i,terminate:l}=function(e){const[t,r]=u.createPromiseWithResolver();return{terminate:()=>o(this,void 0,void 0,(function*(){m("Terminating worker"),yield e.terminate(),r()})),termination:t}}(e),b=function(e,t){return new a.Observable((r=>{const n=e=>{const t={type:d.WorkerEventType.message,data:e.data};r.next(t)},o=e=>{m("Unhandled promise rejection event in thread:",e);const t={type:d.WorkerEventType.internalError,error:Error(e.reason)};r.next(t)};e.addEventListener("message",n),e.addEventListener("unhandledrejection",o),t.then((()=>{const t={type:d.WorkerEventType.termination};e.removeEventListener("message",n),e.removeEventListener("unhandledrejection",o),r.next(t),r.complete()}))}))}(e,i);if("function"===s.type){return v(f.createProxyFunction(e),e,b,l)}if("module"===s.type){return v(f.createProxyModule(e,s.methods),e,b,l)}{const e=s.type;throw Error(`Worker init message states unexpected type of expose(): ${e}`)}}))}},2996:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Thread=void 0;const n=r(3682);function o(e){throw Error(e)}t.Thread={errors:e=>e[n.$errors]||o("Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise."),events:e=>e[n.$events]||o("Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise."),terminate:e=>e[n.$terminate]()}},1898:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ObservablePromise=void 0;const n=r(4527),o=()=>{},s=e=>e,i=e=>Promise.resolve().then(e);function a(e){throw e}class c extends n.Observable{constructor(e){super((t=>{const r=this,n=Object.assign(Object.assign({},t),{complete(){t.complete(),r.onCompletion()},error(e){t.error(e),r.onError(e)},next(e){t.next(e),r.onNext(e)}});try{return this.initHasRun=!0,e(n)}catch(e){n.error(e)}})),this.initHasRun=!1,this.fulfillmentCallbacks=[],this.rejectionCallbacks=[],this.firstValueSet=!1,this.state="pending"}onNext(e){this.firstValueSet||(this.firstValue=e,this.firstValueSet=!0)}onError(e){this.state="rejected",this.rejection=e;for(const t of this.rejectionCallbacks)i((()=>t(e)))}onCompletion(){this.state="fulfilled";for(const e of this.fulfillmentCallbacks)i((()=>e(this.firstValue)))}then(e,t){const r=e||s,n=t||a;let o=!1;return new Promise(((e,t)=>{const s=r=>{if(!o){o=!0;try{e(n(r))}catch(e){t(e)}}};return this.initHasRun||this.subscribe({error:s}),"fulfilled"===this.state?e(r(this.firstValue)):"rejected"===this.state?(o=!0,e(n(this.rejection))):(this.fulfillmentCallbacks.push((t=>{try{e(r(t))}catch(e){s(e)}})),void this.rejectionCallbacks.push(s))}))}catch(e){return this.then(void 0,e)}finally(e){const t=e||o;return this.then((e=>(t(),e)),(()=>t()))}static from(e){return function(e){return e&&"function"==typeof e.then}(e)?new c((t=>{e.then((e=>{t.next(e),t.complete()}),(e=>{t.error(e)}))})):super.from(e)}}t.ObservablePromise=c},7709:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.allSettled=void 0,t.allSettled=function(e){return Promise.all(e.map((e=>{const t=e=>({status:"fulfilled",value:e}),r=e=>({status:"rejected",reason:e}),n=Promise.resolve(e);try{return n.then(t,r)}catch(e){return Promise.reject(e)}})))}},4238:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPromiseWithResolver=void 0;const r=()=>{};t.createPromiseWithResolver=function(){let e,t=!1,n=r;return[new Promise((r=>{t?r(e):n=r})),r=>{t=!0,e=r,n(e)}]}},5914:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultSerializer=t.extendSerializer=void 0,t.extendSerializer=function(e,t){const r=e.deserialize.bind(e),n=e.serialize.bind(e);return{deserialize:e=>t.deserialize(e,r),serialize:e=>t.serialize(e,n)}};const r={deserialize:e=>Object.assign(Error(e.message),{name:e.name,stack:e.stack}),serialize:e=>({__error_marker:"$$error",message:e.message,name:e.name,stack:e.stack})};t.DefaultSerializer={deserialize(e){return(t=e)&&"object"==typeof t&&"__error_marker"in t&&"$$error"===t.__error_marker?r.deserialize(e):e;var t},serialize:e=>e instanceof Error?r.serialize(e):e}},3682:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.$worker=t.$transferable=t.$terminate=t.$events=t.$errors=void 0,t.$errors=Symbol("thread.errors"),t.$events=Symbol("thread.events"),t.$terminate=Symbol("thread.terminate"),t.$transferable=Symbol("thread.transferable"),t.$worker=Symbol("thread.worker")},6712:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Transfer=t.isTransferDescriptor=void 0;const n=r(3682);t.isTransferDescriptor=function(e){return e&&"object"==typeof e&&e[n.$transferable]},t.Transfer=function(e,t){if(!t){if(!(r=e)||"object"!=typeof r)throw Error();t=[e]}var r;return{[n.$transferable]:!0,send:e,transferables:t}}},2931:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkerEventType=void 0;r(3682);!function(e){e.internalError="internalError",e.message="message",e.termination="termination"}(t.WorkerEventType||(t.WorkerEventType={}))},2781:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkerMessageType=t.MasterMessageType=void 0,function(e){e.cancel="cancel",e.run="run"}(t.MasterMessageType||(t.MasterMessageType={})),function(e){e.error="error",e.init="init",e.result="result",e.running="running",e.uncaughtError="uncaughtError"}(t.WorkerMessageType||(t.WorkerMessageType={}))},4304:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={isWorkerRuntime:function(){const e="undefined"!=typeof self&&"undefined"!=typeof Window&&self instanceof Window;return!("undefined"==typeof self||!self.postMessage||e)},postMessageToMaster:function(e,t){self.postMessage(e,t)},subscribeToMasterMessages:function(e){const t=t=>{e(t.data)};return self.addEventListener("message",t),()=>{self.removeEventListener("message",t)}}}},1854:function(e,t,r){"use strict";var n=r(5606),o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.expose=t.isWorkerRuntime=t.Transfer=t.registerSerializer=void 0;const i=s(r(5409)),a=r(9278),c=r(6712),u=r(2781),l=s(r(4304));var d=r(9278);Object.defineProperty(t,"registerSerializer",{enumerable:!0,get:function(){return d.registerSerializer}});var f=r(6712);Object.defineProperty(t,"Transfer",{enumerable:!0,get:function(){return f.Transfer}}),t.isWorkerRuntime=l.default.isWorkerRuntime;let p=!1;const h=new Map,m=e=>e&&e.type===u.MasterMessageType.run,y=e=>i.default(e)||function(e){return e&&"object"==typeof e&&"function"==typeof e.subscribe}(e);function v(e){return c.isTransferDescriptor(e)?{payload:e.send,transferables:e.transferables}:{payload:e,transferables:void 0}}function b(e,t){const{payload:r,transferables:n}=v(t),o={type:u.WorkerMessageType.error,uid:e,error:a.serialize(r)};l.default.postMessageToMaster(o,n)}function g(e,t,r){const{payload:n,transferables:o}=v(r),s={type:u.WorkerMessageType.result,uid:e,complete:!!t||void 0,payload:n};l.default.postMessageToMaster(s,o)}function w(e){try{const t={type:u.WorkerMessageType.uncaughtError,error:a.serialize(e)};l.default.postMessageToMaster(t)}catch(t){console.error("Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:",t,"\nOriginal error:",e)}}function k(e,t,r){return o(this,void 0,void 0,(function*(){let n;try{n=t(...r)}catch(t){return b(e,t)}const o=y(n)?"observable":"promise";if(function(e,t){const r={type:u.WorkerMessageType.running,uid:e,resultType:t};l.default.postMessageToMaster(r)}(e,o),y(n)){const t=n.subscribe((t=>g(e,!1,a.serialize(t))),(t=>{b(e,a.serialize(t)),h.delete(e)}),(()=>{g(e,!0),h.delete(e)}));h.set(e,t)}else try{const t=yield n;g(e,!0,a.serialize(t))}catch(t){b(e,a.serialize(t))}}))}t.expose=function(e){if(!l.default.isWorkerRuntime())throw Error("expose() called in the master thread.");if(p)throw Error("expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.");if(p=!0,"function"==typeof e)l.default.subscribeToMasterMessages((t=>{m(t)&&!t.method&&k(t.uid,e,t.args.map(a.deserialize))})),function(){const e={type:u.WorkerMessageType.init,exposed:{type:"function"}};l.default.postMessageToMaster(e)}();else{if("object"!=typeof e||!e)throw Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${e}`);l.default.subscribeToMasterMessages((t=>{m(t)&&t.method&&k(t.uid,e[t.method],t.args.map(a.deserialize))}));!function(e){const t={type:u.WorkerMessageType.init,exposed:{type:"module",methods:e}};l.default.postMessageToMaster(t)}(Object.keys(e).filter((t=>"function"==typeof e[t])))}l.default.subscribeToMasterMessages((e=>{if((t=e)&&t.type===u.MasterMessageType.cancel){const t=e.uid,r=h.get(t);r&&(r.unsubscribe(),h.delete(t))}var t}))},"undefined"!=typeof self&&"function"==typeof self.addEventListener&&l.default.isWorkerRuntime()&&(self.addEventListener("error",(e=>{setTimeout((()=>w(e.error||e)),250)})),self.addEventListener("unhandledrejection",(e=>{const t=e.reason;t&&"string"==typeof t.message&&setTimeout((()=>w(t)),250)}))),void 0!==n&&"function"==typeof n.on&&l.default.isWorkerRuntime()&&(n.on("uncaughtException",(e=>{setTimeout((()=>w(e)),250)})),n.on("unhandledRejection",(e=>{e&&"string"==typeof e.message&&setTimeout((()=>w(e)),250)})))},148:(e,t,r)=>{var n=r(5606);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(5995)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},5995:(e,t,r)=>{e.exports=function(e){function t(e){let r,o,s,i=null;function a(...e){if(!a.enabled)return;const n=a,o=Number(new Date),s=o-(r||o);n.diff=s,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";i++;const s=t.formatters[o];if("function"==typeof s){const t=e[i];r=s.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,s=t.enabled(e)),s),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e,t){let r=0,n=0,o=-1,s=0;for(;r<e.length;)if(n<t.length&&(t[n]===e[r]||"*"===t[n]))"*"===t[n]?(o=n,s=r,n++):(r++,n++);else{if(-1===o)return!1;n=o+1,s++,r=s}for(;n<t.length&&"*"===t[n];)n++;return n===t.length}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names,...t.skips.map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").trim().replace(" ",",").split(",").filter(Boolean);for(const e of r)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const r of t.skips)if(o(e,r))return!1;for(const r of t.names)if(o(e,r))return!0;return!1},t.humanize=r(4010),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}},4010:e=>{var t=1e3,r=60*t,n=60*r,o=24*n,s=7*o,i=365.25*o;function a(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}e.exports=function(e,c){c=c||{};var u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*i;case"weeks":case"week":case"w":return c*s;case"days":case"day":case"d":return c*o;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*r;case"seconds":case"second":case"secs":case"sec":case"s":return c*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(e);if("number"===u&&isFinite(e))return c.long?function(e){var s=Math.abs(e);if(s>=o)return a(e,s,o,"day");if(s>=n)return a(e,s,n,"hour");if(s>=r)return a(e,s,r,"minute");if(s>=t)return a(e,s,t,"second");return e+" ms"}(e):function(e){var s=Math.abs(e);if(s>=o)return Math.round(e/o)+"d";if(s>=n)return Math.round(e/n)+"h";if(s>=r)return Math.round(e/r)+"m";if(s>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={id:n,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0,(()=>{"use strict";var e=r(447);e.registerSerializer;const t=e.spawn,n=(e.BlobWorker,e.DefaultSerializer,e.Pool,e.Thread),o=(e.Transfer,e.Worker),s=(e,t)=>t.some((t=>e instanceof t));let i,a;const c=new WeakMap,u=new WeakMap,l=new WeakMap;let d={get(e,t,r){if(e instanceof IDBTransaction){if("done"===t)return c.get(e);if("store"===t)return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return m(e[t])},set:(e,t,r)=>(e[t]=r,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function f(e){d=e(d)}function p(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(y(this),t),m(this.request)}:function(...t){return m(e.apply(y(this),t))}}function h(e){return"function"==typeof e?p(e):(e instanceof IDBTransaction&&function(e){if(c.has(e))return;const t=new Promise(((t,r)=>{const n=()=>{e.removeEventListener("complete",o),e.removeEventListener("error",s),e.removeEventListener("abort",s)},o=()=>{t(),n()},s=()=>{r(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",o),e.addEventListener("error",s),e.addEventListener("abort",s)}));c.set(e,t)}(e),s(e,i||(i=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,d):e)}function m(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,r)=>{const n=()=>{e.removeEventListener("success",o),e.removeEventListener("error",s)},o=()=>{t(m(e.result)),n()},s=()=>{r(e.error),n()};e.addEventListener("success",o),e.addEventListener("error",s)}));return l.set(t,e),t}(e);if(u.has(e))return u.get(e);const t=h(e);return t!==e&&(u.set(e,t),l.set(t,e)),t}const y=e=>l.get(e);const v=["get","getKey","getAll","getAllKeys","count"],b=["put","add","delete","clear"],g=new Map;function w(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(g.get(t))return g.get(t);const r=t.replace(/FromIndex$/,""),n=t!==r,o=b.includes(r);if(!(r in(n?IDBIndex:IDBObjectStore).prototype)||!o&&!v.includes(r))return;const s=async function(e,...t){const s=this.transaction(e,o?"readwrite":"readonly");let i=s.store;return n&&(i=i.index(t.shift())),(await Promise.all([i[r](...t),o&&s.done]))[0]};return g.set(t,s),s}f((e=>({...e,get:(t,r,n)=>w(t,r)||e.get(t,r,n),has:(t,r)=>!!w(t,r)||e.has(t,r)})));const k=["continue","continuePrimaryKey","advance"],x={},C=new WeakMap,T=new WeakMap,E={get(e,t){if(!k.includes(t))return e[t];let r=x[t];return r||(r=x[t]=function(...e){C.set(this,T.get(this)[t](...e))}),r}};async function*_(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const r=new Proxy(t,E);for(T.set(r,t),l.set(r,y(t));t;)yield r,t=await(C.get(r)||t.continue()),C.delete(r)}function P(e,t){return t===Symbol.asyncIterator&&s(e,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===t&&s(e,[IDBIndex,IDBObjectStore])}f((e=>({...e,get:(t,r,n)=>P(t,r)?_:e.get(t,r,n),has:(t,r)=>P(t,r)||e.has(t,r)})));var j=r(5072),M=r.n(j),S=r(7825),O=r.n(S),F=r(7659),z=r.n(F),I=r(5056),W=r.n(I),L=r(540),D=r.n(L),$=r(1113),R=r.n($),A=r(3313),B={};B.styleTagTransform=R(),B.setAttributes=W(),B.insert=z().bind(null,"head"),B.domAPI=O(),B.insertStyleElement=D();M()(A.A,B);A.A&&A.A.locals&&A.A.locals;if(void 0===document.currentScript){const e=document.getElementsByTagName("script");document.currentScript=e[e.length-1]}const N=new URL(document.currentScript.src),U=function(e,t,{blocked:r,upgrade:n,blocking:o,terminated:s}={}){const i=indexedDB.open(e,t),a=m(i);return n&&i.addEventListener("upgradeneeded",(e=>{n(m(i.result),e.oldVersion,e.newVersion,m(i.transaction),e)})),r&&i.addEventListener("blocked",(e=>r(e.oldVersion,e.newVersion,e))),a.then((e=>{s&&e.addEventListener("close",(()=>s())),o&&e.addEventListener("versionchange",(e=>o(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a}("TikzJax",2,{upgrade(e){e.createObjectStore("svgImages")}}),Q=async e=>(await U).get("svgImages",e),q=[];let V,H=null;const J=async e=>{const t=new Promise((r=>{const n=[],o=async e=>{e.sourceHash=await(async e=>Array.from(new Uint8Array(await window.crypto.subtle.digest("SHA-1",(new TextEncoder).encode(e)))).map((e=>e.toString(16).padStart(2,"0"))).join(""))(JSON.stringify(e.dataset)+e.childNodes[0].nodeValue);const t=e.dataset.disableCache?void 0:await Q(e.sourceHash);if(t){const r=document.createRange().createContextualFragment(t).firstChild;e.replaceWith(r);const n=new Event("tikzjax-load-finished",{bubbles:!0});r.dispatchEvent(n)}else{n.push(e);const t=parseFloat(e.dataset.width)||75,r=parseFloat(e.dataset.height)||75;e.loader=document.createRange().createContextualFragment(`<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${t}pt" height="${r}pt" viewBox="0 0 ${t} ${r}"><rect width="${t}" height="${r}" rx="5pt" ry="5pt" fill="#000" fill-opacity="0.2"/><circle cx="${t/2}" cy="${r/2}" r="15" stroke="#f3f3f3" fill="none" stroke-width="3"/><circle cx="${t/2}" cy="${r/2}" r="15" stroke="#3498db" fill="none" stroke-width="3" stroke-linecap="round"><animate attributeName="stroke-dasharray" begin="0s" dur="2s" values="56.5 37.7;1 93.2;56.5 37.7" keyTimes="0;0.5;1" repeatCount="indefinite"></animate><animate attributeName="stroke-dashoffset" begin="0s" dur="2s" from="0" to="188.5" repeatCount="indefinite"></animate></circle></svg>`).firstChild,e.replaceWith(e.loader)}},s=async e=>{const t=e.childNodes[0].nodeValue,r=e.loader,n=e.dataset.disableCache?void 0:await Q(e.sourceHash);if(n){const e=document.createRange().createContextualFragment(n).firstChild;r.replaceWith(e);const t=new Event("tikzjax-load-finished",{bubbles:!0});return void e.dispatchEvent(t)}let o="";try{o=await V.texify(t,Object.assign({},e.dataset))}catch(e){return console.log(e),void(r.outerHTML='<img src="//invalid.site/img-not-found.png">')}const s=o.match(/\bid="pgf[^"]*"/g);if(s){s.sort(((e,t)=>t.length-e.length));for(const t of s){const r=t.replace(/id="pgf(.*)"/,"$1");o=o.replaceAll("pgf"+r,`pgf${e.sourceHash}${r}`)}}const i=document.createRange().createContextualFragment(o).firstChild;if(i.role="img",e.dataset.ariaLabel){const t=document.createElementNS("http://www.w3.org/2000/svg","title");t.textContent=e.dataset.ariaLabel,i.prepend(t)}if(r.replaceWith(i),!e.dataset.disableCache)try{await(async(e,t)=>(await U).put("svgImages",t,e))(e.sourceHash,i.outerHTML)}catch(e){console.log(e)}const a=new Event("tikzjax-load-finished",{bubbles:!0});i.dispatchEvent(a)};(async()=>{for(const t of e)await o(t);if(!n.length)return r();V=await V,q.push(t),q.length>1&&await q[q.length-2];for(const e of n)await s(e);q.shift(),r()})()}));return t},K=async()=>{J(Array.prototype.slice.call(document.getElementsByTagName("script")).filter((e=>"text/tikz"===e.getAttribute("type")))),H=new MutationObserver((e=>{const t=[];for(const r of e)for(const e of r.addedNodes)e.tagName&&"script"==e.tagName.toLowerCase()&&"text/tikz"==e.type?t.push(e):e.getElementsByTagName&&t.push.apply(t,Array.prototype.slice.call(e.getElementsByTagName("script")).filter((e=>"text/tikz"===e.getAttribute("type"))));J(t)})),H.observe(document.getElementsByTagName("body")[0],{childList:!0,subtree:!0})},Z=async()=>{H&&H.disconnect(),await n.terminate(await V)};window.TikzJax||(window.TikzJax=!0,V=(async()=>{const e=N.href.replace(/\/tikzjax\.js(?:\?.*)?$/,""),r=await t(new o(`${e}/run-tex.js`));n.events(r).subscribe((e=>{"message"==e.type&&"string"==typeof e.data&&console.log(e.data)}));try{await r.load(e)}catch(e){console.log(e)}return r})(),"complete"==document.readyState?K():window.addEventListener("load",K),window.addEventListener("unload",Z))})()})();\ No newline at end of file
A diagramzip-client-units/tikz/package-lock.json +72 -0
@@ -0,0 +1,72 @@
1+{2+ "name": "diagramzip-render-tikz-client",3+ "lockfileVersion": 3,4+ "requires": true,5+ "packages": {6+ "": {7+ "name": "diagramzip-render-tikz-client",8+ "devDependencies": {9+ "esbuild": "0.27.7"10+ }11+ },12+ "node_modules/@esbuild/darwin-arm64": {13+ "version": "0.27.7",14+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",15+ "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",16+ "cpu": [17+ "arm64"18+ ],19+ "dev": true,20+ "license": "MIT",21+ "optional": true,22+ "os": [23+ "darwin"24+ ],25+ "engines": {26+ "node": ">=18"27+ }28+ },29+ "node_modules/esbuild": {30+ "version": "0.27.7",31+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",32+ "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",33+ "dev": true,34+ "hasInstallScript": true,35+ "license": "MIT",36+ "bin": {37+ "esbuild": "bin/esbuild"38+ },39+ "engines": {40+ "node": ">=18"41+ },42+ "optionalDependencies": {43+ "@esbuild/aix-ppc64": "0.27.7",44+ "@esbuild/android-arm": "0.27.7",45+ "@esbuild/android-arm64": "0.27.7",46+ "@esbuild/android-x64": "0.27.7",47+ "@esbuild/darwin-arm64": "0.27.7",48+ "@esbuild/darwin-x64": "0.27.7",49+ "@esbuild/freebsd-arm64": "0.27.7",50+ "@esbuild/freebsd-x64": "0.27.7",51+ "@esbuild/linux-arm": "0.27.7",52+ "@esbuild/linux-arm64": "0.27.7",53+ "@esbuild/linux-ia32": "0.27.7",54+ "@esbuild/linux-loong64": "0.27.7",55+ "@esbuild/linux-mips64el": "0.27.7",56+ "@esbuild/linux-ppc64": "0.27.7",57+ "@esbuild/linux-riscv64": "0.27.7",58+ "@esbuild/linux-s390x": "0.27.7",59+ "@esbuild/linux-x64": "0.27.7",60+ "@esbuild/netbsd-arm64": "0.27.7",61+ "@esbuild/netbsd-x64": "0.27.7",62+ "@esbuild/openbsd-arm64": "0.27.7",63+ "@esbuild/openbsd-x64": "0.27.7",64+ "@esbuild/openharmony-arm64": "0.27.7",65+ "@esbuild/sunos-x64": "0.27.7",66+ "@esbuild/win32-arm64": "0.27.7",67+ "@esbuild/win32-ia32": "0.27.7",68+ "@esbuild/win32-x64": "0.27.7"69+ }70+ }71+ }72+}
A diagramzip-client-units/tikz/package.json +11 -0
A diagramzip-client-units/tikz/scripts/build.mjs +18 -0
A diagramzip-client-units/tikz/scripts/check.mjs +32 -0
A diagramzip-client-units/tikz/src/frame.js +105 -0
@@ -0,0 +1,105 @@
1+const CHANNEL = 'diagram.zip:renderer:v1'2+const ENGINE = 'tikz'3+const VERSION = '@planktimerr/tikzjax@1.0.63'4+const BUILD = 'tikzjax-1.0.63-client-unit-1'5+const MAX_SOURCE_LENGTH = 262_1446+const MAX_OUTPUT_LENGTH = 4_194_3047+const RENDER_TIMEOUT = 20_0008+9+let latest = 010+let queue = Promise.resolve()11+12+function reply(origin, message) {13+ parent.postMessage({ channel: CHANNEL, ...message }, origin)14+}15+16+function allowedOrigin() {17+ try { return document.referrer ? new URL(document.referrer).origin : null } catch { return null }18+}19+20+function normalizedSource(source) {21+ const begin = source.search(/\\begin\s*\{document\}/)22+ if (begin < 0) return { body: source, preamble: '' }23+ const beginMatch = source.slice(begin).match(/^\\begin\s*\{document\}/)24+ const endMatch = source.match(/\\end\s*\{document\}\s*$/)25+ const end = endMatch ? endMatch.index : source.length26+ const preamble = source.slice(0, begin).replace(/^\s*\\documentclass(?:\[[^\]]*\])?\s*\{[^}]*\}\s*/m, '')27+ return { body: source.slice(begin + beginMatch[0].length, end), preamble }28+}29+30+function safeSvg(svg) {31+ if (typeof svg === 'string') {32+ const start = svg.indexOf('<svg')33+ const end = svg.lastIndexOf('</svg>')34+ if (start >= 0 && end > start) svg = svg.slice(start, end + 6)35+ }36+ let documentSvg = typeof svg === 'string'37+ ? new DOMParser().parseFromString(svg, 'image/svg+xml').documentElement38+ : (svg.matches?.('svg') ? svg : svg.querySelector?.('svg'))?.cloneNode(true)39+ if (!documentSvg || documentSvg.nodeName.toLowerCase() !== 'svg') throw new Error('TikZ did not produce an SVG.')40+ for (const element of documentSvg.querySelectorAll('script,foreignObject')) element.remove()41+ for (const element of documentSvg.querySelectorAll('*')) {42+ for (const attribute of [...element.attributes]) {43+ if (/^on/i.test(attribute.name)) element.removeAttribute(attribute.name)44+ if (/^(href|src|xlink:href)$/i.test(attribute.name) && !attribute.value.startsWith('#') && !attribute.value.startsWith('data:')) element.removeAttribute(attribute.name)45+ }46+ }47+ return new XMLSerializer().serializeToString(documentSvg)48+}49+50+async function renderMessage(message, origin, sequence) {51+ if (sequence !== latest) return52+ if (typeof message.source !== 'string' || message.source.length > MAX_SOURCE_LENGTH) throw new Error('TikZ source must be a string no larger than 256 KB.')53+ const { body, preamble } = normalizedSource(message.source)54+ const script = document.createElement('script')55+ script.type = 'text/tikz'56+ script.dataset.disableCache = 'true'57+ if (preamble.length > MAX_SOURCE_LENGTH) throw new Error('TikZ preamble is too large.')58+ if (preamble) script.dataset.addToPreamble = preamble59+ script.textContent = body60+ const container = document.createElement('div')61+ container.hidden = true62+ container.append(script)63+ const finished = new Promise((resolve, reject) => {64+ let timer65+ const cleanup = () => {66+ clearTimeout(timer)67+ document.removeEventListener('tikzjax-load-finished', onFinished)68+ }69+ const onFinished = event => {70+ if (!container.contains(event.target)) return71+ cleanup()72+ resolve(event.target)73+ }74+ timer = setTimeout(() => {75+ cleanup()76+ container.remove()77+ reject(new Error('TikZ rendering timed out.'))78+ }, RENDER_TIMEOUT)79+ document.addEventListener('tikzjax-load-finished', onFinished)80+ })81+ document.body.append(container)82+ try {83+ const svg = await finished84+ if (sequence !== latest) return85+ const output = safeSvg(svg.outerHTML)86+ if (output.length > MAX_OUTPUT_LENGTH) throw new Error('TikZ SVG output is too large.')87+ reply(origin, { type: 'result', requestId: message.requestId, ok: true, svg: output, version: VERSION, build: BUILD, pipeline: [ENGINE] })88+ } finally {89+ container.remove()90+ }91+}92+93+window.addEventListener('message', event => {94+ const message = event.data95+ const origin = allowedOrigin()96+ if (event.source !== parent || message?.channel !== CHANNEL || message?.type !== 'render' || message?.engine !== ENGINE || typeof message?.requestId !== 'string') return97+ const sequence = ++latest98+ queue = queue.then(async () => {99+ if (sequence !== latest) return100+ try { await renderMessage(message, origin ?? '*', sequence) }101+ catch (error) { if (sequence === latest) reply(origin ?? '*', { type: 'result', requestId: message.requestId, ok: false, error: error instanceof Error ? error.message.slice(0, 500) : 'TikZ rendering failed.' }) }102+ })103+})104+105+reply(allowedOrigin() ?? '*', { type: 'ready', engine: ENGINE, version: VERSION, build: BUILD })
A diagramzip-client-units/tikz/unit/_headers +4 -0
A diagramzip-client-units/tikz/unit/index.html +12 -0
A diagramzip-client-units/tikz/unit/worker.js +33 -0
A diagramzip-client-units/tikz/vendor-licenses/GPL-3.0.txt +674 -0
@@ -0,0 +1,674 @@
1+ GNU GENERAL PUBLIC LICENSE2+ Version 3, 29 June 20073+4+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>5+ Everyone is permitted to copy and distribute verbatim copies6+ of this license document, but changing it is not allowed.7+8+ Preamble9+10+ The GNU General Public License is a free, copyleft license for11+software and other kinds of works.12+13+ The licenses for most software and other practical works are designed14+to take away your freedom to share and change the works. By contrast,15+the GNU General Public License is intended to guarantee your freedom to16+share and change all versions of a program--to make sure it remains free17+software for all its users. We, the Free Software Foundation, use the18+GNU General Public License for most of our software; it applies also to19+any other work released this way by its authors. You can apply it to20+your programs, too.21+22+ When we speak of free software, we are referring to freedom, not23+price. Our General Public Licenses are designed to make sure that you24+have the freedom to distribute copies of free software (and charge for25+them if you wish), that you receive source code or can get it if you26+want it, that you can change the software or use pieces of it in new27+free programs, and that you know you can do these things.28+29+ To protect your rights, we need to prevent others from denying you30+these rights or asking you to surrender the rights. Therefore, you have31+certain responsibilities if you distribute copies of the software, or if32+you modify it: responsibilities to respect the freedom of others.33+34+ For example, if you distribute copies of such a program, whether35+gratis or for a fee, you must pass on to the recipients the same36+freedoms that you received. You must make sure that they, too, receive37+or can get the source code. And you must show them these terms so they38+know their rights.39+40+ Developers that use the GNU GPL protect your rights with two steps:41+(1) assert copyright on the software, and (2) offer you this License42+giving you legal permission to copy, distribute and/or modify it.43+44+ For the developers' and authors' protection, the GPL clearly explains45+that there is no warranty for this free software. For both users' and46+authors' sake, the GPL requires that modified versions be marked as47+changed, so that their problems will not be attributed erroneously to48+authors of previous versions.49+50+ Some devices are designed to deny users access to install or run51+modified versions of the software inside them, although the manufacturer52+can do so. This is fundamentally incompatible with the aim of53+protecting users' freedom to change the software. The systematic54+pattern of such abuse occurs in the area of products for individuals to55+use, which is precisely where it is most unacceptable. Therefore, we56+have designed this version of the GPL to prohibit the practice for those57+products. If such problems arise substantially in other domains, we58+stand ready to extend this provision to those domains in future versions59+of the GPL, as needed to protect the freedom of users.60+61+ Finally, every program is threatened constantly by software patents.62+States should not allow patents to restrict development and use of63+software on general-purpose computers, but in those that do, we wish to64+avoid the special danger that patents applied to a free program could65+make it effectively proprietary. To prevent this, the GPL assures that66+patents cannot be used to render the program non-free.67+68+ The precise terms and conditions for copying, distribution and69+modification follow.70+71+ TERMS AND CONDITIONS72+73+ 0. Definitions.74+75+ "This License" refers to version 3 of the GNU General Public License.76+77+ "Copyright" also means copyright-like laws that apply to other kinds of78+works, such as semiconductor masks.79+80+ "The Program" refers to any copyrightable work licensed under this81+License. Each licensee is addressed as "you". "Licensees" and82+"recipients" may be individuals or organizations.83+84+ To "modify" a work means to copy from or adapt all or part of the work85+in a fashion requiring copyright permission, other than the making of an86+exact copy. The resulting work is called a "modified version" of the87+earlier work or a work "based on" the earlier work.88+89+ A "covered work" means either the unmodified Program or a work based90+on the Program.91+92+ To "propagate" a work means to do anything with it that, without93+permission, would make you directly or secondarily liable for94+infringement under applicable copyright law, except executing it on a95+computer or modifying a private copy. Propagation includes copying,96+distribution (with or without modification), making available to the97+public, and in some countries other activities as well.98+99+ To "convey" a work means any kind of propagation that enables other100+parties to make or receive copies. Mere interaction with a user through101+a computer network, with no transfer of a copy, is not conveying.102+103+ An interactive user interface displays "Appropriate Legal Notices"104+to the extent that it includes a convenient and prominently visible105+feature that (1) displays an appropriate copyright notice, and (2)106+tells the user that there is no warranty for the work (except to the107+extent that warranties are provided), that licensees may convey the108+work under this License, and how to view a copy of this License. If109+the interface presents a list of user commands or options, such as a110+menu, a prominent item in the list meets this criterion.111+112+ 1. Source Code.113+114+ The "source code" for a work means the preferred form of the work115+for making modifications to it. "Object code" means any non-source116+form of a work.117+118+ A "Standard Interface" means an interface that either is an official119+standard defined by a recognized standards body, or, in the case of120+interfaces specified for a particular programming language, one that121+is widely used among developers working in that language.122+123+ The "System Libraries" of an executable work include anything, other124+than the work as a whole, that (a) is included in the normal form of125+packaging a Major Component, but which is not part of that Major126+Component, and (b) serves only to enable use of the work with that127+Major Component, or to implement a Standard Interface for which an128+implementation is available to the public in source code form. A129+"Major Component", in this context, means a major essential component130+(kernel, window system, and so on) of the specific operating system131+(if any) on which the executable work runs, or a compiler used to132+produce the work, or an object code interpreter used to run it.133+134+ The "Corresponding Source" for a work in object code form means all135+the source code needed to generate, install, and (for an executable136+work) run the object code and to modify the work, including scripts to137+control those activities. However, it does not include the work's138+System Libraries, or general-purpose tools or generally available free139+programs which are used unmodified in performing those activities but140+which are not part of the work. For example, Corresponding Source141+includes interface definition files associated with source files for142+the work, and the source code for shared libraries and dynamically143+linked subprograms that the work is specifically designed to require,144+such as by intimate data communication or control flow between those145+subprograms and other parts of the work.146+147+ The Corresponding Source need not include anything that users148+can regenerate automatically from other parts of the Corresponding149+Source.150+151+ The Corresponding Source for a work in source code form is that152+same work.153+154+ 2. Basic Permissions.155+156+ All rights granted under this License are granted for the term of157+copyright on the Program, and are irrevocable provided the stated158+conditions are met. This License explicitly affirms your unlimited159+permission to run the unmodified Program. The output from running a160+covered work is covered by this License only if the output, given its161+content, constitutes a covered work. This License acknowledges your162+rights of fair use or other equivalent, as provided by copyright law.163+164+ You may make, run and propagate covered works that you do not165+convey, without conditions so long as your license otherwise remains166+in force. You may convey covered works to others for the sole purpose167+of having them make modifications exclusively for you, or provide you168+with facilities for running those works, provided that you comply with169+the terms of this License in conveying all material for which you do170+not control copyright. Those thus making or running the covered works171+for you must do so exclusively on your behalf, under your direction172+and control, on terms that prohibit them from making any copies of173+your copyrighted material outside their relationship with you.174+175+ Conveying under any other circumstances is permitted solely under176+the conditions stated below. Sublicensing is not allowed; section 10177+makes it unnecessary.178+179+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.180+181+ No covered work shall be deemed part of an effective technological182+measure under any applicable law fulfilling obligations under article183+11 of the WIPO copyright treaty adopted on 20 December 1996, or184+similar laws prohibiting or restricting circumvention of such185+measures.186+187+ When you convey a covered work, you waive any legal power to forbid188+circumvention of technological measures to the extent such circumvention189+is effected by exercising rights under this License with respect to190+the covered work, and you disclaim any intention to limit operation or191+modification of the work as a means of enforcing, against the work's192+users, your or third parties' legal rights to forbid circumvention of193+technological measures.194+195+ 4. Conveying Verbatim Copies.196+197+ You may convey verbatim copies of the Program's source code as you198+receive it, in any medium, provided that you conspicuously and199+appropriately publish on each copy an appropriate copyright notice;200+keep intact all notices stating that this License and any201+non-permissive terms added in accord with section 7 apply to the code;202+keep intact all notices of the absence of any warranty; and give all203+recipients a copy of this License along with the Program.204+205+ You may charge any price or no price for each copy that you convey,206+and you may offer support or warranty protection for a fee.207+208+ 5. Conveying Modified Source Versions.209+210+ You may convey a work based on the Program, or the modifications to211+produce it from the Program, in the form of source code under the212+terms of section 4, provided that you also meet all of these conditions:213+214+ a) The work must carry prominent notices stating that you modified215+ it, and giving a relevant date.216+217+ b) The work must carry prominent notices stating that it is218+ released under this License and any conditions added under section219+ 7. This requirement modifies the requirement in section 4 to220+ "keep intact all notices".221+222+ c) You must license the entire work, as a whole, under this223+ License to anyone who comes into possession of a copy. This224+ License will therefore apply, along with any applicable section 7225+ additional terms, to the whole of the work, and all its parts,226+ regardless of how they are packaged. This License gives no227+ permission to license the work in any other way, but it does not228+ invalidate such permission if you have separately received it.229+230+ d) If the work has interactive user interfaces, each must display231+ Appropriate Legal Notices; however, if the Program has interactive232+ interfaces that do not display Appropriate Legal Notices, your233+ work need not make them do so.234+235+ A compilation of a covered work with other separate and independent236+works, which are not by their nature extensions of the covered work,237+and which are not combined with it such as to form a larger program,238+in or on a volume of a storage or distribution medium, is called an239+"aggregate" if the compilation and its resulting copyright are not240+used to limit the access or legal rights of the compilation's users241+beyond what the individual works permit. Inclusion of a covered work242+in an aggregate does not cause this License to apply to the other243+parts of the aggregate.244+245+ 6. Conveying Non-Source Forms.246+247+ You may convey a covered work in object code form under the terms248+of sections 4 and 5, provided that you also convey the249+machine-readable Corresponding Source under the terms of this License,250+in one of these ways:251+252+ a) Convey the object code in, or embodied in, a physical product253+ (including a physical distribution medium), accompanied by the254+ Corresponding Source fixed on a durable physical medium255+ customarily used for software interchange.256+257+ b) Convey the object code in, or embodied in, a physical product258+ (including a physical distribution medium), accompanied by a259+ written offer, valid for at least three years and valid for as260+ long as you offer spare parts or customer support for that product261+ model, to give anyone who possesses the object code either (1) a262+ copy of the Corresponding Source for all the software in the263+ product that is covered by this License, on a durable physical264+ medium customarily used for software interchange, for a price no265+ more than your reasonable cost of physically performing this266+ conveying of source, or (2) access to copy the267+ Corresponding Source from a network server at no charge.268+269+ c) Convey individual copies of the object code with a copy of the270+ written offer to provide the Corresponding Source. This271+ alternative is allowed only occasionally and noncommercially, and272+ only if you received the object code with such an offer, in accord273+ with subsection 6b.274+275+ d) Convey the object code by offering access from a designated276+ place (gratis or for a charge), and offer equivalent access to the277+ Corresponding Source in the same way through the same place at no278+ further charge. You need not require recipients to copy the279+ Corresponding Source along with the object code. If the place to280+ copy the object code is a network server, the Corresponding Source281+ may be on a different server (operated by you or a third party)282+ that supports equivalent copying facilities, provided you maintain283+ clear directions next to the object code saying where to find the284+ Corresponding Source. Regardless of what server hosts the285+ Corresponding Source, you remain obligated to ensure that it is286+ available for as long as needed to satisfy these requirements.287+288+ e) Convey the object code using peer-to-peer transmission, provided289+ you inform other peers where the object code and Corresponding290+ Source of the work are being offered to the general public at no291+ charge under subsection 6d.292+293+ A separable portion of the object code, whose source code is excluded294+from the Corresponding Source as a System Library, need not be295+included in conveying the object code work.296+297+ A "User Product" is either (1) a "consumer product", which means any298+tangible personal property which is normally used for personal, family,299+or household purposes, or (2) anything designed or sold for incorporation300+into a dwelling. In determining whether a product is a consumer product,301+doubtful cases shall be resolved in favor of coverage. For a particular302+product received by a particular user, "normally used" refers to a303+typical or common use of that class of product, regardless of the status304+of the particular user or of the way in which the particular user305+actually uses, or expects or is expected to use, the product. A product306+is a consumer product regardless of whether the product has substantial307+commercial, industrial or non-consumer uses, unless such uses represent308+the only significant mode of use of the product.309+310+ "Installation Information" for a User Product means any methods,311+procedures, authorization keys, or other information required to install312+and execute modified versions of a covered work in that User Product from313+a modified version of its Corresponding Source. The information must314+suffice to ensure that the continued functioning of the modified object315+code is in no case prevented or interfered with solely because316+modification has been made.317+318+ If you convey an object code work under this section in, or with, or319+specifically for use in, a User Product, and the conveying occurs as320+part of a transaction in which the right of possession and use of the321+User Product is transferred to the recipient in perpetuity or for a322+fixed term (regardless of how the transaction is characterized), the323+Corresponding Source conveyed under this section must be accompanied324+by the Installation Information. But this requirement does not apply325+if neither you nor any third party retains the ability to install326+modified object code on the User Product (for example, the work has327+been installed in ROM).328+329+ The requirement to provide Installation Information does not include a330+requirement to continue to provide support service, warranty, or updates331+for a work that has been modified or installed by the recipient, or for332+the User Product in which it has been modified or installed. Access to a333+network may be denied when the modification itself materially and334+adversely affects the operation of the network or violates the rules and335+protocols for communication across the network.336+337+ Corresponding Source conveyed, and Installation Information provided,338+in accord with this section must be in a format that is publicly339+documented (and with an implementation available to the public in340+source code form), and must require no special password or key for341+unpacking, reading or copying.342+343+ 7. Additional Terms.344+345+ "Additional permissions" are terms that supplement the terms of this346+License by making exceptions from one or more of its conditions.347+Additional permissions that are applicable to the entire Program shall348+be treated as though they were included in this License, to the extent349+that they are valid under applicable law. If additional permissions350+apply only to part of the Program, that part may be used separately351+under those permissions, but the entire Program remains governed by352+this License without regard to the additional permissions.353+354+ When you convey a copy of a covered work, you may at your option355+remove any additional permissions from that copy, or from any part of356+it. (Additional permissions may be written to require their own357+removal in certain cases when you modify the work.) You may place358+additional permissions on material, added by you to a covered work,359+for which you have or can give appropriate copyright permission.360+361+ Notwithstanding any other provision of this License, for material you362+add to a covered work, you may (if authorized by the copyright holders of363+that material) supplement the terms of this License with terms:364+365+ a) Disclaiming warranty or limiting liability differently from the366+ terms of sections 15 and 16 of this License; or367+368+ b) Requiring preservation of specified reasonable legal notices or369+ author attributions in that material or in the Appropriate Legal370+ Notices displayed by works containing it; or371+372+ c) Prohibiting misrepresentation of the origin of that material, or373+ requiring that modified versions of such material be marked in374+ reasonable ways as different from the original version; or375+376+ d) Limiting the use for publicity purposes of names of licensors or377+ authors of the material; or378+379+ e) Declining to grant rights under trademark law for use of some380+ trade names, trademarks, or service marks; or381+382+ f) Requiring indemnification of licensors and authors of that383+ material by anyone who conveys the material (or modified versions of384+ it) with contractual assumptions of liability to the recipient, for385+ any liability that these contractual assumptions directly impose on386+ those licensors and authors.387+388+ All other non-permissive additional terms are considered "further389+restrictions" within the meaning of section 10. If the Program as you390+received it, or any part of it, contains a notice stating that it is391+governed by this License along with a term that is a further392+restriction, you may remove that term. If a license document contains393+a further restriction but permits relicensing or conveying under this394+License, you may add to a covered work material governed by the terms395+of that license document, provided that the further restriction does396+not survive such relicensing or conveying.397+398+ If you add terms to a covered work in accord with this section, you399+must place, in the relevant source files, a statement of the400+additional terms that apply to those files, or a notice indicating401+where to find the applicable terms.402+403+ Additional terms, permissive or non-permissive, may be stated in the404+form of a separately written license, or stated as exceptions;405+the above requirements apply either way.406+407+ 8. Termination.408+409+ You may not propagate or modify a covered work except as expressly410+provided under this License. Any attempt otherwise to propagate or411+modify it is void, and will automatically terminate your rights under412+this License (including any patent licenses granted under the third413+paragraph of section 11).414+415+ However, if you cease all violation of this License, then your416+license from a particular copyright holder is reinstated (a)417+provisionally, unless and until the copyright holder explicitly and418+finally terminates your license, and (b) permanently, if the copyright419+holder fails to notify you of the violation by some reasonable means420+prior to 60 days after the cessation.421+422+ Moreover, your license from a particular copyright holder is423+reinstated permanently if the copyright holder notifies you of the424+violation by some reasonable means, this is the first time you have425+received notice of violation of this License (for any work) from that426+copyright holder, and you cure the violation prior to 30 days after427+your receipt of the notice.428+429+ Termination of your rights under this section does not terminate the430+licenses of parties who have received copies or rights from you under431+this License. If your rights have been terminated and not permanently432+reinstated, you do not qualify to receive new licenses for the same433+material under section 10.434+435+ 9. Acceptance Not Required for Having Copies.436+437+ You are not required to accept this License in order to receive or438+run a copy of the Program. Ancillary propagation of a covered work439+occurring solely as a consequence of using peer-to-peer transmission440+to receive a copy likewise does not require acceptance. However,441+nothing other than this License grants you permission to propagate or442+modify any covered work. These actions infringe copyright if you do443+not accept this License. Therefore, by modifying or propagating a444+covered work, you indicate your acceptance of this License to do so.445+446+ 10. Automatic Licensing of Downstream Recipients.447+448+ Each time you convey a covered work, the recipient automatically449+receives a license from the original licensors, to run, modify and450+propagate that work, subject to this License. You are not responsible451+for enforcing compliance by third parties with this License.452+453+ An "entity transaction" is a transaction transferring control of an454+organization, or substantially all assets of one, or subdividing an455+organization, or merging organizations. If propagation of a covered456+work results from an entity transaction, each party to that457+transaction who receives a copy of the work also receives whatever458+licenses to the work the party's predecessor in interest had or could459+give under the previous paragraph, plus a right to possession of the460+Corresponding Source of the work from the predecessor in interest, if461+the predecessor has it or can get it with reasonable efforts.462+463+ You may not impose any further restrictions on the exercise of the464+rights granted or affirmed under this License. For example, you may465+not impose a license fee, royalty, or other charge for exercise of466+rights granted under this License, and you may not initiate litigation467+(including a cross-claim or counterclaim in a lawsuit) alleging that468+any patent claim is infringed by making, using, selling, offering for469+sale, or importing the Program or any portion of it.470+471+ 11. Patents.472+473+ A "contributor" is a copyright holder who authorizes use under this474+License of the Program or a work on which the Program is based. The475+work thus licensed is called the contributor's "contributor version".476+477+ A contributor's "essential patent claims" are all patent claims478+owned or controlled by the contributor, whether already acquired or479+hereafter acquired, that would be infringed by some manner, permitted480+by this License, of making, using, or selling its contributor version,481+but do not include claims that would be infringed only as a482+consequence of further modification of the contributor version. For483+purposes of this definition, "control" includes the right to grant484+patent sublicenses in a manner consistent with the requirements of485+this License.486+487+ Each contributor grants you a non-exclusive, worldwide, royalty-free488+patent license under the contributor's essential patent claims, to489+make, use, sell, offer for sale, import and otherwise run, modify and490+propagate the contents of its contributor version.491+492+ In the following three paragraphs, a "patent license" is any express493+agreement or commitment, however denominated, not to enforce a patent494+(such as an express permission to practice a patent or covenant not to495+sue for patent infringement). To "grant" such a patent license to a496+party means to make such an agreement or commitment not to enforce a497+patent against the party.498+499+ If you convey a covered work, knowingly relying on a patent license,500+and the Corresponding Source of the work is not available for anyone501+to copy, free of charge and under the terms of this License, through a502+publicly available network server or other readily accessible means,503+then you must either (1) cause the Corresponding Source to be so504+available, or (2) arrange to deprive yourself of the benefit of the505+patent license for this particular work, or (3) arrange, in a manner506+consistent with the requirements of this License, to extend the patent507+license to downstream recipients. "Knowingly relying" means you have508+actual knowledge that, but for the patent license, your conveying the509+covered work in a country, or your recipient's use of the covered work510+in a country, would infringe one or more identifiable patents in that511+country that you have reason to believe are valid.512+513+ If, pursuant to or in connection with a single transaction or514+arrangement, you convey, or propagate by procuring conveyance of, a515+covered work, and grant a patent license to some of the parties516+receiving the covered work authorizing them to use, propagate, modify517+or convey a specific copy of the covered work, then the patent license518+you grant is automatically extended to all recipients of the covered519+work and works based on it.520+521+ A patent license is "discriminatory" if it does not include within522+the scope of its coverage, prohibits the exercise of, or is523+conditioned on the non-exercise of one or more of the rights that are524+specifically granted under this License. You may not convey a covered525+work if you are a party to an arrangement with a third party that is526+in the business of distributing software, under which you make payment527+to the third party based on the extent of your activity of conveying528+the work, and under which the third party grants, to any of the529+parties who would receive the covered work from you, a discriminatory530+patent license (a) in connection with copies of the covered work531+conveyed by you (or copies made from those copies), or (b) primarily532+for and in connection with specific products or compilations that533+contain the covered work, unless you entered into that arrangement,534+or that patent license was granted, prior to 28 March 2007.535+536+ Nothing in this License shall be construed as excluding or limiting537+any implied license or other defenses to infringement that may538+otherwise be available to you under applicable patent law.539+540+ 12. No Surrender of Others' Freedom.541+542+ If conditions are imposed on you (whether by court order, agreement or543+otherwise) that contradict the conditions of this License, they do not544+excuse you from the conditions of this License. If you cannot convey a545+covered work so as to satisfy simultaneously your obligations under this546+License and any other pertinent obligations, then as a consequence you may547+not convey it at all. For example, if you agree to terms that obligate you548+to collect a royalty for further conveying from those to whom you convey549+the Program, the only way you could satisfy both those terms and this550+License would be to refrain entirely from conveying the Program.551+552+ 13. Use with the GNU Affero General Public License.553+554+ Notwithstanding any other provision of this License, you have555+permission to link or combine any covered work with a work licensed556+under version 3 of the GNU Affero General Public License into a single557+combined work, and to convey the resulting work. The terms of this558+License will continue to apply to the part which is the covered work,559+but the special requirements of the GNU Affero General Public License,560+section 13, concerning interaction through a network will apply to the561+combination as such.562+563+ 14. Revised Versions of this License.564+565+ The Free Software Foundation may publish revised and/or new versions of566+the GNU General Public License from time to time. Such new versions will567+be similar in spirit to the present version, but may differ in detail to568+address new problems or concerns.569+570+ Each version is given a distinguishing version number. If the571+Program specifies that a certain numbered version of the GNU General572+Public License "or any later version" applies to it, you have the573+option of following the terms and conditions either of that numbered574+version or of any later version published by the Free Software575+Foundation. If the Program does not specify a version number of the576+GNU General Public License, you may choose any version ever published577+by the Free Software Foundation.578+579+ If the Program specifies that a proxy can decide which future580+versions of the GNU General Public License can be used, that proxy's581+public statement of acceptance of a version permanently authorizes you582+to choose that version for the Program.583+584+ Later license versions may give you additional or different585+permissions. However, no additional obligations are imposed on any586+author or copyright holder as a result of your choosing to follow a587+later version.588+589+ 15. Disclaimer of Warranty.590+591+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY592+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT593+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY594+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,595+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR596+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM597+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF598+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.599+600+ 16. Limitation of Liability.601+602+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING603+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS604+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY605+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE606+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF607+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD608+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),609+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF610+SUCH DAMAGES.611+612+ 17. Interpretation of Sections 15 and 16.613+614+ If the disclaimer of warranty and limitation of liability provided615+above cannot be given local legal effect according to their terms,616+reviewing courts shall apply local law that most closely approximates617+an absolute waiver of all civil liability in connection with the618+Program, unless a warranty or assumption of liability accompanies a619+copy of the Program in return for a fee.620+621+ END OF TERMS AND CONDITIONS622+623+ How to Apply These Terms to Your New Programs624+625+ If you develop a new program, and you want it to be of the greatest626+possible use to the public, the best way to achieve this is to make it627+free software which everyone can redistribute and change under these terms.628+629+ To do so, attach the following notices to the program. It is safest630+to attach them to the start of each source file to most effectively631+state the exclusion of warranty; and each file should have at least632+the "copyright" line and a pointer to where the full notice is found.633+634+ <one line to give the program's name and a brief idea of what it does.>635+ Copyright (C) <year> <name of author>636+637+ This program is free software: you can redistribute it and/or modify638+ it under the terms of the GNU General Public License as published by639+ the Free Software Foundation, either version 3 of the License, or640+ (at your option) any later version.641+642+ This program is distributed in the hope that it will be useful,643+ but WITHOUT ANY WARRANTY; without even the implied warranty of644+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the645+ GNU General Public License for more details.646+647+ You should have received a copy of the GNU General Public License648+ along with this program. If not, see <https://www.gnu.org/licenses/>.649+650+Also add information on how to contact you by electronic and paper mail.651+652+ If the program does terminal interaction, make it output a short653+notice like this when it starts in an interactive mode:654+655+ <program> Copyright (C) <year> <name of author>656+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.657+ This is free software, and you are welcome to redistribute it658+ under certain conditions; type `show c' for details.659+660+The hypothetical commands `show w' and `show c' should show the appropriate661+parts of the General Public License. Of course, your program's commands662+might be different; for a GUI interface, you would use an "about box".663+664+ You should also get your employer (if you work as a programmer) or school,665+if any, to sign a "copyright disclaimer" for the program, if necessary.666+For more information on this, and how to apply and follow the GNU GPL, see667+<https://www.gnu.org/licenses/>.668+669+ The GNU General Public License does not permit incorporating your program670+into proprietary programs. If your program is a subroutine library, you671+may consider it more useful to permit linking proprietary applications with672+the library. If this is what you want to do, use the GNU Lesser General673+Public License instead of this License. But first, please read674+<https://www.gnu.org/licenses/why-not-lgpl.html>.
A diagramzip-client-units/tikz/vendor-licenses/LPPL-1.3c.txt +408 -0
@@ -0,0 +1,408 @@
1+# The LaTeX Project Public License2+3+LPPL Version 1.3c 2008-05-044+5+Copyright 1999 2002-2008 LaTeX3 Project6+ Everyone is allowed to distribute verbatim copies of this7+ license document, but modification of it is not allowed.8+9+10+## PREAMBLE11+12+The LaTeX Project Public License (LPPL) is the primary license under13+which the LaTeX kernel and the base LaTeX packages are distributed.14+15+You may use this license for any work of which you hold the copyright16+and which you wish to distribute. This license may be particularly17+suitable if your work is TeX-related (such as a LaTeX package), but18+it is written in such a way that you can use it even if your work is19+unrelated to TeX.20+21+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',22+below, gives instructions, examples, and recommendations for authors23+who are considering distributing their works under this license.24+25+This license gives conditions under which a work may be distributed26+and modified, as well as conditions under which modified versions of27+that work may be distributed.28+29+We, the LaTeX3 Project, believe that the conditions below give you30+the freedom to make and distribute modified versions of your work31+that conform with whatever technical specifications you wish while32+maintaining the availability, integrity, and reliability of33+that work. If you do not see how to achieve your goal while34+meeting these conditions, then read the document `cfgguide.tex'35+and `modguide.tex' in the base LaTeX distribution for suggestions.36+37+38+## DEFINITIONS39+40+41+In this license document the following terms are used:42+43+ `Work'44+ Any work being distributed under this License.45+46+ `Derived Work'47+ Any work that under any applicable law is derived from the Work.48+49+ `Modification'50+ Any procedure that produces a Derived Work under any applicable51+ law -- for example, the production of a file containing an52+ original file associated with the Work or a significant portion of53+ such a file, either verbatim or with modifications and/or54+ translated into another language.55+56+ `Modify'57+ To apply any procedure that produces a Derived Work under any58+ applicable law.59+60+ `Distribution'61+ Making copies of the Work available from one person to another, in62+ whole or in part. Distribution includes (but is not limited to)63+ making any electronic components of the Work accessible by64+ file transfer protocols such as FTP or HTTP or by shared file65+ systems such as Sun's Network File System (NFS).66+67+ `Compiled Work'68+ A version of the Work that has been processed into a form where it69+ is directly usable on a computer system. This processing may70+ include using installation facilities provided by the Work,71+ transformations of the Work, copying of components of the Work, or72+ other activities. Note that modification of any installation73+ facilities provided by the Work constitutes modification of the Work.74+75+ `Current Maintainer'76+ A person or persons nominated as such within the Work. If there is77+ no such explicit nomination then it is the `Copyright Holder' under78+ any applicable law.79+80+ `Base Interpreter'81+ A program or process that is normally needed for running or82+ interpreting a part or the whole of the Work.83+84+ A Base Interpreter may depend on external components but these85+ are not considered part of the Base Interpreter provided that each86+ external component clearly identifies itself whenever it is used87+ interactively. Unless explicitly specified when applying the88+ license to the Work, the only applicable Base Interpreter is a89+ `LaTeX-Format' or in the case of files belonging to the90+ `LaTeX-format' a program implementing the `TeX language'.91+92+93+94+## CONDITIONS ON DISTRIBUTION AND MODIFICATION95+96+97+1. Activities other than distribution and/or modification of the Work98+are not covered by this license; they are outside its scope. In99+particular, the act of running the Work is not restricted and no100+requirements are made concerning any offers of support for the Work.101+102+2. You may distribute a complete, unmodified copy of the Work as you103+received it. Distribution of only part of the Work is considered104+modification of the Work, and no right to distribute such a Derived105+Work may be assumed under the terms of this clause.106+107+3. You may distribute a Compiled Work that has been generated from a108+complete, unmodified copy of the Work as distributed under Clause 2109+above, as long as that Compiled Work is distributed in such a way that110+the recipients may install the Compiled Work on their system exactly111+as it would have been installed if they generated a Compiled Work112+directly from the Work.113+114+4. If you are the Current Maintainer of the Work, you may, without115+restriction, modify the Work, thus creating a Derived Work. You may116+also distribute the Derived Work without restriction, including117+Compiled Works generated from the Derived Work. Derived Works118+distributed in this manner by the Current Maintainer are considered to119+be updated versions of the Work.120+121+5. If you are not the Current Maintainer of the Work, you may modify122+your copy of the Work, thus creating a Derived Work based on the Work,123+and compile this Derived Work, thus creating a Compiled Work based on124+the Derived Work.125+126+6. If you are not the Current Maintainer of the Work, you may127+distribute a Derived Work provided the following conditions are met128+for every component of the Work unless that component clearly states129+in the copyright notice that it is exempt from that condition. Only130+the Current Maintainer is allowed to add such statements of exemption131+to a component of the Work.132+133+ a. If a component of this Derived Work can be a direct replacement134+ for a component of the Work when that component is used with the135+ Base Interpreter, then, wherever this component of the Work136+ identifies itself to the user when used interactively with that137+ Base Interpreter, the replacement component of this Derived Work138+ clearly and unambiguously identifies itself as a modified version139+ of this component to the user when used interactively with that140+ Base Interpreter.141+142+ b. Every component of the Derived Work contains prominent notices143+ detailing the nature of the changes to that component, or a144+ prominent reference to another file that is distributed as part145+ of the Derived Work and that contains a complete and accurate log146+ of the changes.147+148+ c. No information in the Derived Work implies that any persons,149+ including (but not limited to) the authors of the original version150+ of the Work, provide any support, including (but not limited to)151+ the reporting and handling of errors, to recipients of the152+ Derived Work unless those persons have stated explicitly that153+ they do provide such support for the Derived Work.154+155+ d. You distribute at least one of the following with the Derived Work:156+157+ 1. A complete, unmodified copy of the Work;158+ if your distribution of a modified component is made by159+ offering access to copy the modified component from a160+ designated place, then offering equivalent access to copy161+ the Work from the same or some similar place meets this162+ condition, even though third parties are not compelled to163+ copy the Work along with the modified component;164+165+ 2. Information that is sufficient to obtain a complete,166+ unmodified copy of the Work.167+168+7. If you are not the Current Maintainer of the Work, you may169+distribute a Compiled Work generated from a Derived Work, as long as170+the Derived Work is distributed to all recipients of the Compiled171+Work, and as long as the conditions of Clause 6, above, are met with172+regard to the Derived Work.173+174+8. The conditions above are not intended to prohibit, and hence do not175+apply to, the modification, by any method, of any component so that it176+becomes identical to an updated version of that component of the Work as177+it is distributed by the Current Maintainer under Clause 4, above.178+179+9. Distribution of the Work or any Derived Work in an alternative180+format, where the Work or that Derived Work (in whole or in part) is181+then produced by applying some process to that format, does not relax or182+nullify any sections of this license as they pertain to the results of183+applying that process.184+185+10. a. A Derived Work may be distributed under a different license186+ provided that license itself honors the conditions listed in187+ Clause 6 above, in regard to the Work, though it does not have188+ to honor the rest of the conditions in this license.189+190+ b. If a Derived Work is distributed under a different license, that191+ Derived Work must provide sufficient documentation as part of192+ itself to allow each recipient of that Derived Work to honor the193+ restrictions in Clause 6 above, concerning changes from the Work.194+195+11. This license places no restrictions on works that are unrelated to196+the Work, nor does this license place any restrictions on aggregating197+such works with the Work by any means.198+199+12. Nothing in this license is intended to, or may be used to, prevent200+complete compliance by all parties with all applicable laws.201+202+203+## NO WARRANTY204+205+206+There is no warranty for the Work. Except when otherwise stated in207+writing, the Copyright Holder provides the Work `as is', without208+warranty of any kind, either expressed or implied, including, but not209+limited to, the implied warranties of merchantability and fitness for a210+particular purpose. The entire risk as to the quality and performance211+of the Work is with you. Should the Work prove defective, you assume212+the cost of all necessary servicing, repair, or correction.213+214+In no event unless required by applicable law or agreed to in writing215+will The Copyright Holder, or any author named in the components of the216+Work, or any other party who may distribute and/or modify the Work as217+permitted above, be liable to you for damages, including any general,218+special, incidental or consequential damages arising out of any use of219+the Work or out of inability to use the Work (including, but not limited220+to, loss of data, data being rendered inaccurate, or losses sustained by221+anyone as a result of any failure of the Work to operate with any other222+programs), even if the Copyright Holder or said author or said other223+party has been advised of the possibility of such damages.224+225+226+## MAINTENANCE OF THE WORK227+228+229+The Work has the status `author-maintained' if the Copyright Holder230+explicitly and prominently states near the primary copyright notice in231+the Work that the Work can only be maintained by the Copyright Holder232+or simply that it is `author-maintained'.233+234+The Work has the status `maintained' if there is a Current Maintainer235+who has indicated in the Work that they are willing to receive error236+reports for the Work (for example, by supplying a valid e-mail237+address). It is not required for the Current Maintainer to acknowledge238+or act upon these error reports.239+240+The Work changes from status `maintained' to `unmaintained' if there241+is no Current Maintainer, or the person stated to be Current242+Maintainer of the work cannot be reached through the indicated means243+of communication for a period of six months, and there are no other244+significant signs of active maintenance.245+246+You can become the Current Maintainer of the Work by agreement with247+any existing Current Maintainer to take over this role.248+249+If the Work is unmaintained, you can become the Current Maintainer of250+the Work through the following steps:251+252+ 1. Make a reasonable attempt to trace the Current Maintainer (and253+ the Copyright Holder, if the two differ) through the means of254+ an Internet or similar search.255+256+ 2. If this search is successful, then enquire whether the Work257+ is still maintained.258+259+ a. If it is being maintained, then ask the Current Maintainer260+ to update their communication data within one month.261+262+ b. If the search is unsuccessful or no action to resume active263+ maintenance is taken by the Current Maintainer, then announce264+ within the pertinent community your intention to take over265+ maintenance. (If the Work is a LaTeX work, this could be266+ done, for example, by posting to comp.text.tex.)267+268+ 3a. If the Current Maintainer is reachable and agrees to pass269+ maintenance of the Work to you, then this takes effect270+ immediately upon announcement.271+272+ b. If the Current Maintainer is not reachable and the Copyright273+ Holder agrees that maintenance of the Work be passed to you,274+ then this takes effect immediately upon announcement.275+276+ 4. If you make an `intention announcement' as described in 2b. above277+ and after three months your intention is challenged neither by278+ the Current Maintainer nor by the Copyright Holder nor by other279+ people, then you may arrange for the Work to be changed so as280+ to name you as the (new) Current Maintainer.281+282+ 5. If the previously unreachable Current Maintainer becomes283+ reachable once more within three months of a change completed284+ under the terms of 3b) or 4), then that Current Maintainer must285+ become or remain the Current Maintainer upon request provided286+ they then update their communication data within one month.287+288+A change in the Current Maintainer does not, of itself, alter the fact289+that the Work is distributed under the LPPL license.290+291+If you become the Current Maintainer of the Work, you should292+immediately provide, within the Work, a prominent and unambiguous293+statement of your status as Current Maintainer. You should also294+announce your new status to the same pertinent community as295+in 2b) above.296+297+298+## WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE299+300+301+This section contains important instructions, examples, and302+recommendations for authors who are considering distributing their303+works under this license. These authors are addressed as `you' in304+this section.305+306+### Choosing This License or Another License307+308+If for any part of your work you want or need to use *distribution*309+conditions that differ significantly from those in this license, then310+do not refer to this license anywhere in your work but, instead,311+distribute your work under a different license. You may use the text312+of this license as a model for your own license, but your license313+should not refer to the LPPL or otherwise give the impression that314+your work is distributed under the LPPL.315+316+The document `modguide.tex' in the base LaTeX distribution explains317+the motivation behind the conditions of this license. It explains,318+for example, why distributing LaTeX under the GNU General Public319+License (GPL) was considered inappropriate. Even if your work is320+unrelated to LaTeX, the discussion in `modguide.tex' may still be321+relevant, and authors intending to distribute their works under any322+license are encouraged to read it.323+324+### A Recommendation on Modification Without Distribution325+326+It is wise never to modify a component of the Work, even for your own327+personal use, without also meeting the above conditions for328+distributing the modified component. While you might intend that such329+modifications will never be distributed, often this will happen by330+accident -- you may forget that you have modified that component; or331+it may not occur to you when allowing others to access the modified332+version that you are thus distributing it and violating the conditions333+of this license in ways that could have legal implications and, worse,334+cause problems for the community. It is therefore usually in your335+best interest to keep your copy of the Work identical with the public336+one. Many works provide ways to control the behavior of that work337+without altering any of its licensed components.338+339+### How to Use This License340+341+To use this license, place in each of the components of your work both342+an explicit copyright notice including your name and the year the work343+was authored and/or last substantially modified. Include also a344+statement that the distribution and/or modification of that345+component is constrained by the conditions in this license.346+347+Here is an example of such a notice and statement:348+349+ %% pig.dtx350+ %% Copyright 2005 M. Y. Name351+ %352+ % This work may be distributed and/or modified under the353+ % conditions of the LaTeX Project Public License, either version 1.3354+ % of this license or (at your option) any later version.355+ % The latest version of this license is in356+ % http://www.latex-project.org/lppl.txt357+ % and version 1.3 or later is part of all distributions of LaTeX358+ % version 2005/12/01 or later.359+ %360+ % This work has the LPPL maintenance status `maintained'.361+ %362+ % The Current Maintainer of this work is M. Y. Name.363+ %364+ % This work consists of the files pig.dtx and pig.ins365+ % and the derived file pig.sty.366+367+Given such a notice and statement in a file, the conditions368+given in this license document would apply, with the `Work' referring369+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being370+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'371+referring to any `LaTeX-Format', and both `Copyright Holder' and372+`Current Maintainer' referring to the person `M. Y. Name'.373+374+If you do not want the Maintenance section of LPPL to apply to your375+Work, change `maintained' above into `author-maintained'.376+However, we recommend that you use `maintained', as the Maintenance377+section was added in order to ensure that your Work remains useful to378+the community even when you can no longer maintain and support it379+yourself.380+381+### Derived Works That Are Not Replacements382+383+Several clauses of the LPPL specify means to provide reliability and384+stability for the user community. They therefore concern themselves385+with the case that a Derived Work is intended to be used as a386+(compatible or incompatible) replacement of the original Work. If387+this is not the case (e.g., if a few lines of code are reused for a388+completely different task), then clauses 6b and 6d shall not apply.389+390+391+### Important Recommendations392+393+ Defining What Constitutes the Work394+395+ The LPPL requires that distributions of the Work contain all the396+ files of the Work. It is therefore important that you provide a397+ way for the licensee to determine which files constitute the Work.398+ This could, for example, be achieved by explicitly listing all the399+ files of the Work near the copyright notice of each file or by400+ using a line such as:401+402+ % This work consists of all files listed in manifest.txt.403+404+ in that place. In the absence of an unequivocal list it might be405+ impossible for the licensee to determine what is considered by you406+ to comprise the Work and, in such a case, the licensee would be407+ entitled to make reasonable conjectures as to which files comprise408+ the Work.
A diagramzip-client-units/tikz/wrangler.jsonc +15 -0
M diagramzip-docs/scripts/check-rendered-examples.mjs +16 -4
@@ -1,19 +1,31 @@
11 import { readFile, readdir } from 'node:fs/promises'22 import { dirname, join } from 'node:path'33 import { fileURLToPath } from 'node:url'4+import { CLIENT_RENDERERS, httpRendererUrlFor } from '../src/components/DiagramExample/rendererRouting.mjs'45 56 const site = join(dirname(fileURLToPath(import.meta.url)), '..')67 const examplesDir = join(site, 'static', 'examples')7-const endpoint = 'https://diagram.zip/render/v1/svg'88 const names = (await readdir(examplesDir)).filter((name) => name.endsWith('.json')).sort()99 1010 async function check(name) {1111 const example = JSON.parse(await readFile(join(examplesDir, name), 'utf8'))12- const response = await fetch(endpoint, {12+ if (CLIENT_RENDERERS[example.engine]) {13+ const frameUrl = CLIENT_RENDERERS[example.engine]14+ const response = await fetch(frameUrl)15+ const body = await response.text()16+ const scriptMatch = body.match(/<script[^>]+src="([^"]+)"/i)17+ const scriptUrl = scriptMatch && new URL(scriptMatch[1], frameUrl).href18+ const scriptResponse = scriptUrl && await fetch(scriptUrl)19+ const script = scriptResponse ? await scriptResponse.text() : ''20+ if (!response.ok || !scriptResponse?.ok || !script.includes('diagram.zip:renderer:v1')) {21+ throw new Error(`${example.engine}: client frame unavailable (HTTP ${response.status})`)22+ }23+ return `${example.engine} client frame`24+ }25+ const response = await fetch(httpRendererUrlFor(example.engine), {1326 method: 'POST',1427 headers: { Accept: 'image/svg+xml', 'Content-Type': 'application/json' },1528 body: JSON.stringify({16- engine: example.engine,1729 source: example.source,1830 format: 'svg',1931 options: {},
@@ -34,7 +46,7 @@ for (let index = 0; index < names.length; index += 5) {
3446 const results = await Promise.allSettled(group.map(check))3547 results.forEach((result) => {3648 if (result.status === 'rejected') failures.push(result.reason.message)37- else console.log(`Rendered ${result.value}.`)49+ else console.log(`Checked ${result.value}.`)3850 })3951 }4052
M diagramzip-docs/src/components/DiagramExample/index.js +120 -16
@@ -1,8 +1,106 @@
11 import React, {useCallback, useEffect, useRef, useState} from 'react';22 import {fitView, zoomView} from './viewMath.mjs';3+import {clientFrameUrlFor, httpRendererUrlFor} from './rendererRouting.mjs';34 import styles from './styles.module.css';45 5-const RENDER_URL = 'https://diagram.zip/render/v1/svg';6+const CHANNEL = 'diagram.zip:renderer:v1';7+const RENDER_TIMEOUT = 20_000;8+const clientFrames = new Map();9+10+class RendererFrame {11+ constructor(frameUrl) {12+ this.frameUrl = frameUrl;13+ this.frame = null;14+ this.ready = null;15+ this.pending = new Map();16+ this.sequence = 0;17+ this.handleMessage = (event) => this.receive(event);18+ window.addEventListener('message', this.handleMessage);19+ }20+21+ ensureFrame() {22+ if (this.frame) return this.ready;23+ const frame = document.createElement('iframe');24+ frame.title = 'Diagram renderer';25+ frame.setAttribute('sandbox', 'allow-scripts');26+ frame.setAttribute('aria-hidden', 'true');27+ frame.tabIndex = -1;28+ Object.assign(frame.style, {29+ position: 'fixed', left: '-200vw', top: '0', width: '1280px', height: '800px',30+ border: '0', pointerEvents: 'none', visibility: 'hidden',31+ });32+ this.ready = new Promise((resolve, reject) => {33+ this.resolveReady = resolve;34+ this.rejectReady = reject;35+ });36+ frame.addEventListener('error', () => this.rejectReady?.(new Error('The client renderer could not be loaded.')), {once: true});37+ frame.src = this.frameUrl;38+ this.frame = frame;39+ document.body.append(frame);40+ return this.ready;41+ }42+43+ receive(event) {44+ if (!this.frame || event.source !== this.frame.contentWindow || event.data?.channel !== CHANNEL) return;45+ if (event.data.type === 'ready') {46+ this.resolveReady?.();47+ this.resolveReady = null;48+ this.rejectReady = null;49+ return;50+ }51+ if (event.data.type !== 'result') return;52+ const pending = this.pending.get(event.data.requestId);53+ if (!pending) return;54+ this.pending.delete(event.data.requestId);55+ pending.finish();56+ if (event.data.ok && typeof event.data.svg === 'string') pending.resolve(event.data.svg);57+ else pending.reject(new Error(event.data.error || 'Client rendering failed.'));58+ }59+60+ async render(engine, source, signal) {61+ let loadTimeout;62+ try {63+ await Promise.race([64+ this.ensureFrame(),65+ new Promise((_, reject) => { loadTimeout = setTimeout(() => reject(new Error('The client renderer timed out while loading.')), RENDER_TIMEOUT); }),66+ ]);67+ } finally {68+ clearTimeout(loadTimeout);69+ }70+ if (signal.aborted) throw signal.reason || new DOMException('Render superseded.', 'AbortError');71+ const requestId = `${Date.now().toString(36)}-${++this.sequence}`;72+ return new Promise((resolve, reject) => {73+ const timeout = setTimeout(() => {74+ this.pending.delete(requestId);75+ signal.removeEventListener('abort', onAbort);76+ reject(new Error('The client renderer timed out.'));77+ }, RENDER_TIMEOUT);78+ const onAbort = () => {79+ this.pending.delete(requestId);80+ clearTimeout(timeout);81+ reject(signal.reason || new DOMException('Render superseded.', 'AbortError'));82+ };83+ const finish = () => {84+ clearTimeout(timeout);85+ signal.removeEventListener('abort', onAbort);86+ };87+ signal.addEventListener('abort', onAbort, {once: true});88+ this.pending.set(requestId, {resolve, reject, finish});89+ this.frame.contentWindow.postMessage({channel: CHANNEL, type: 'render', requestId, engine, source}, '*');90+ });91+ }92+}93+94+function clientRendererFor(engine) {95+ const frameUrl = clientFrameUrlFor(engine);96+ if (!frameUrl) return null;97+ let renderer = clientFrames.get(frameUrl);98+ if (!renderer) {99+ renderer = new RendererFrame(frameUrl);100+ clientFrames.set(frameUrl, renderer);101+ }102+ return renderer;103+}6104 7105 function normalizeSvg(source) {8106 const document = new DOMParser().parseFromString(source, 'image/svg+xml');
@@ -69,21 +167,27 @@ export default function DiagramExample({engine, label, sourceUrl}) {
69167 const exampleResponse = await fetch(sourceUrl, {signal: abortController.signal});70168 if (!exampleResponse.ok) throw new Error('The example source is not available.');71169 const example = await exampleResponse.json();72- const renderResponse = await fetch(RENDER_URL, {73- method: 'POST',74- headers: {Accept: 'image/svg+xml', 'Content-Type': 'application/json'},75- body: JSON.stringify({76- engine,77- source: example.source,78- format: 'svg',79- options: {},80- metadata: {},81- presentation: {background: '', padding: 24, frame: false},82- }),83- signal: abortController.signal,84- });85- if (!renderResponse.ok) throw new Error(await responseError(renderResponse));86- const source = normalizeSvg(await renderResponse.text());170+ const clientRenderer = clientRendererFor(engine);171+ let source;172+ if (clientRenderer) {173+ source = await clientRenderer.render(engine, example.source, abortController.signal);174+ } else {175+ const renderResponse = await fetch(httpRendererUrlFor(engine), {176+ method: 'POST',177+ headers: {Accept: 'image/svg+xml', 'Content-Type': 'application/json'},178+ body: JSON.stringify({179+ source: example.source,180+ format: 'svg',181+ options: {},182+ metadata: {},183+ presentation: {background: '', padding: 24, frame: false},184+ }),185+ signal: abortController.signal,186+ });187+ if (!renderResponse.ok) throw new Error(await responseError(renderResponse));188+ source = await renderResponse.text();189+ }190+ source = normalizeSvg(source);87191 const objectUrl = URL.createObjectURL(new Blob([source], {type: 'image/svg+xml'}));88192 if (objectUrlRef.current) URL.revokeObjectURL(objectUrlRef.current);89193 objectUrlRef.current = objectUrl;
A diagramzip-docs/src/components/DiagramExample/rendererRouting.mjs +18 -0
M diagramzip-docs/static/_headers +1 -1
M diagramzip-docs/test/diagram-example.test.mjs +10 -0
M diagramzip-render/README.md +73 -76
@@ -1,16 +1,22 @@
11 # diagramzip-render22 3-Cloudflare Worker rendering plane for diagram.zip. Every catalog engine owns4-`https://{engine}.render.diagram.zip`. The hostname selects the engine; the5-editor never sends an engine selector. Engines that ship as one dependency or6-runtime share a Worker deployment while retaining distinct hostnames. The older7-`/render/v1/svg` gateway remains only as a temporary migration path for engines8-that have not yet moved; an extracted engine cannot fall back through it.9-10-The catalog deliberately contains all 30 diagram types. An engine does not11-disappear while its replacement is incomplete: its small compatibility unit12-proxies only the corresponding Fly endpoint. Known migration loss is exposed13-by the unit's `/v1/capabilities` response and the gateway catalog.3+This directory contains the Cloudflare renderer plane for diagram.zip.4+5+All 30 catalog engines have a final renderer path. No renderer uses the Fly.io application. No renderer can use an origin fallback.6+7+Each engine has a hostname:8+9+```text10+https://{engine}.render.diagram.zip11+```12+13+The hostname selects the engine. A render request does not contain an engine selector.14+15+The Worker at `diagram.zip/render/v1/*` is a catalog service. It provides health and catalog routes. It does not provide a render proxy.16+17+## Validation18+19+Run these commands from this directory:1420 1521 ```sh1622 npm install
@@ -18,70 +24,61 @@ npm run cf-typegen
1824 npm run check1925 npm test2026 npm run deploy:dry21-npm run deploy:worker-units22-npm run deploy:python-units23-npm run dev -- --port 878824-npm run smoke2527 ```2628 27-The smoke command sends one existing repository fixture for every engine and28-checks only structural SVG coverage. It does not perform pixel comparisons.29-30-## Unit contract31-32-Server-rendered units expose `GET /v1/health`, `GET /v1/capabilities`, and33-`POST /v1/svg`. The POST body contains source, options, metadata, and34-presentation, but never an engine field. Responses identify the dependency unit,35-build, and pipeline with `X-Diagram-Unit`, `X-Renderer-Build`, and36-`X-Diagram-Pipeline`.37-38-Browser-rendered units expose the same health and capability routes plus one39-sandboxed frame. The frame accepts only its own engine over the versioned40-postMessage protocol. Mermaid, BPMN, Excalidraw, and diagrams.net have separate packages,41-bundles, CSPs, deployments, and subdomains.42-43-A unit may expose multiple catalog hostnames when those engines share the same44-dependency stack. BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, and RackDiag45-share `blockdiag-family`; GraphViz, DBML, and the ERD-to-DOT translator share46-`graphviz-family`; PlantUML and C4 PlantUML share `plantuml-family`; Svgbob and47-the bounded Ditaa translation share `svgbob-family`; Vega and Vega-Lite share48-`vega-family`. Requests are still selected only by a dedicated49-hostname, so a caller cannot choose an unrelated engine in the body.50-51-A unit may translate into another renderer. Translation is declared as an52-ordered pipeline whose first stage is the deployable unit. Vega-Lite therefore53-reports `vega-family,vega`. WireViz preserves its upstream Python parser/model,54-emits DOT, and reports `wireviz,graphviz-family,graphviz`; service binding keeps55-the GraphViz dependency internal. `X-Diagram-Engine` still reports the selected56-catalog engine.57-58-## Current runtime split59-60-| Runtime | Engines |61-| --- | --- |62-| Worker JavaScript | Bytefield, Nomnoml, Vega family (Vega and Vega-Lite → Vega), WaveDrom |63-| Worker Python | BlockDiag family (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag); Symbolator; WireViz → DOT → GraphViz |64-| Worker WebAssembly | PlantUML family (PlantUML and bounded C4 → PlantUML); GraphViz family (GraphViz, DBML → DOT → GraphViz, and ERD → DOT → GraphViz); D2; GoAT; Pikchr; Svgbob family (Svgbob and bounded Ditaa → Svgbob) |65-| Sandboxed browser unit | Mermaid, BPMN, Excalidraw, diagrams.net |66-| Compatibility unit | 2 dependency units covering the remaining 2 engines |67-68-The current split is 28/30 engines off Fly and 2/30 still dependent on it.69-Compatibility units are extraction seams, not final runtimes or fallbacks for70-an engine after cutover. DBML retains the upstream parser/checker/DOT model in71-an explicitly rebuilt Worker bundle, then shares the GraphViz-Wasm runtime.72-GraphViz73-uses a precompiled Worker module; ERD lowers its upstream-compatible source74-language to DOT and reuses the same in-process GraphViz runtime. WireViz runs75-its vendored upstream parser and DOT composer in a separate Python Worker, then76-calls that same GraphViz deployment through a service binding. Pikchr compiles77-the pinned upstream C source into a small, isolated precompiled Wasm unit.78-PlantUML runs its pinned TeaVM browser core with a precompiled GraphViz module;79-C4-PlantUML lowers a bounded, documented macro surface into ordinary PlantUML80-inside the same dependency unit.81-82-Renderer output is either generated by a bounded unit or passed through the83-shared sanitizer. Scripts, event handlers, external resources, and active84-embedded HTML are not allowed. Mermaid's85-`foreignObject` labels retain only a narrow formatting allowlist, with links and86-resource-loading elements stripped. Any observed engine-specific loss belongs87-in the catalog.29+Run `npm run smoke:units` after all units are deployed. This command checks one repository fixture or capability response for each catalog engine. It checks coverage and SVG structure. It does not compare pixels.30+31+Run `npm run smoke` against a local catalog Worker. This command checks the health route, the 30-engine catalog, and the absence of the old render proxy.32+33+## HTTP unit contract34+35+An HTTP renderer provides these routes:36+37+- `GET /v1/health`38+- `GET /v1/capabilities`39+- `POST /v1/svg`40+41+The POST body contains source, options, metadata, and presentation settings. It does not contain an engine field.42+43+The response headers identify the unit, build, and pipeline:44+45+- `X-Diagram-Unit`46+- `X-Renderer-Build`47+- `X-Diagram-Pipeline`48+49+## Client unit contract50+51+A client renderer provides the health route, the capabilities route, and a sandboxed frame. The frame uses the `diagram.zip:renderer:v1` message protocol. The frame accepts only its assigned engine.52+53+The application loads each frame with `sandbox="allow-scripts"`. The frame does not receive same-origin access. A failed client render does not switch to an HTTP renderer.54+55+The client engines are Mermaid, BPMN, Excalidraw, diagrams.net, and TikZ.56+57+## Dependency groups58+59+One Worker can serve several hostnames when the engines use the same dependency stack.60+61+- `blockdiag-family` serves BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, and RackDiag.62+- `graphviz-family` serves GraphViz, DBML, and ERD.63+- `plantuml-family` serves PlantUML and C4 PlantUML.64+- `svgbob-family` serves Svgbob and the Ditaa translation.65+- `vega-family` serves Vega and Vega-Lite.66+67+Some units translate source into another engine. The pipeline header lists each stage in order. WireViz translates to GraphViz. Structurizr translates to PlantUML. DBML and ERD translate to GraphViz. Ditaa translates to Svgbob.68+69+## Runtime split70+71+| Runtime | Count | Engines |72+| --- | ---: | --- |73+| Worker JavaScript | 7 | Bytefield, Nomnoml, Structurizr, UMLet, Vega, Vega-Lite, WaveDrom |74+| Worker Python | 8 | BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag, Symbolator, WireViz |75+| Worker WebAssembly | 10 | PlantUML, C4 PlantUML, GraphViz, DBML, ERD, D2, Ditaa, GoAT, Pikchr, Svgbob |76+| Sandboxed client | 5 | Mermaid, BPMN, Excalidraw, diagrams.net, TikZ |77+78+The total is 30 of 30 engines. The Fly.io Java rendering image is not part of this renderer plane.79+80+## Output policy81+82+Every renderer returns SVG. Each HTTP unit sanitizes and decorates its output. Each client unit sanitizes its output before it sends the result to the application.83+84+Scripts, event handlers, active embedded HTML, and external resources are not allowed. Renderer-specific losses are listed in the catalog and in each unit's capabilities response.
M diagramzip-render/package.json +0 -1
D diagramzip-render/scripts/deploy-compatibility-units.mjs +0 -39
M diagramzip-render/scripts/deploy-worker-units.mjs +1 -2
M diagramzip-render/scripts/smoke-units.mjs +10 -1
@@ -4,6 +4,7 @@ import { resolve } from 'node:path'
44 const fixtureDirectory = resolve(import.meta.dirname, '../../ci/tests/diagrams')55 const fixtures = {66 plantuml: 'architecture.puml',7+ mermaid: 'contribute.mmd',78 graphviz: 'hello.dot',89 d2: 'connections.d2',910 c4plantuml: 'banking-system.puml',
@@ -13,11 +14,13 @@ const fixtures = {
1314 nwdiag: 'network.diag',1415 packetdiag: 'packet.diag',1516 rackdiag: 'rack.diag',17+ bpmn: 'example.bpmn',1618 bytefield: 'bytefield.bf',1719 dbml: 'dbml.dbml',1820 diagramsnet: 'diagramsnet-venn.xml',1921 ditaa: 'components.ditaa',2022 erd: 'schema.erd',23+ excalidraw: 'venn.excalidraw',2124 goat: 'components.goat',2225 nomnoml: 'pirate.nomnoml',2326 pikchr: 'diamond.pikchr',
@@ -62,6 +65,8 @@ const plantumlEngines = new Set(['plantuml', 'c4plantuml'])
6265 const structurizrEngines = new Set(['structurizr'])6366 const d2Engines = new Set(['d2'])6467 const symbolatorEngines = new Set(['symbolator'])68+const umletEngines = new Set(['umlet'])69+const clientEngines = new Set(['mermaid', 'bpmn', 'excalidraw', 'diagramsnet', 'tikz'])6570 6671 async function smokeClientUnit(engine) {6772 const base = `https://${engine}.render.diagram.zip`
@@ -79,7 +84,7 @@ async function smokeClientUnit(engine) {
7984 }8085 8186 async function smoke([engine, filename]) {82- if (engine === 'diagramsnet') return smokeClientUnit(engine)87+ if (clientEngines.has(engine)) return smokeClientUnit(engine)8388 const source = await readFile(resolve(fixtureDirectory, filename), 'utf8')8489 const endpoint = `https://${engine}.render.diagram.zip/v1/svg`8590 const response = await fetch(endpoint, {
@@ -183,6 +188,10 @@ async function smoke([engine, filename]) {
183188 if (response.headers.get('X-Diagram-Renderer') !== 'edge-python') throw new Error(`${engine}: expected edge-python renderer, received ${response.headers.get('X-Diagram-Renderer')}`)184189 if (!response.headers.get('X-Renderer-Build')?.startsWith('symbolator-python-')) throw new Error(`${engine}: unexpected Symbolator Worker build ${response.headers.get('X-Renderer-Build')}`)185190 }191+ if (umletEngines.has(engine)) {192+ if (response.headers.get('X-Diagram-Renderer') !== 'edge-js') throw new Error(`${engine}: expected edge-js renderer, received ${response.headers.get('X-Diagram-Renderer')}`)193+ if (!response.headers.get('X-Renderer-Build')?.startsWith('umlet-direct-svg-')) throw new Error(`${engine}: unexpected UMLet Worker build ${response.headers.get('X-Renderer-Build')}`)194+ }186195 return `${engine.padEnd(10)} ${response.headers.get('X-Diagram-Cache')?.padEnd(4)} ${body.length} bytes`187196 }188197
M diagramzip-render/scripts/smoke.mjs +20 -114
@@ -1,121 +1,27 @@
1-import { readFile } from 'node:fs/promises'2-import { resolve } from 'node:path'1+const base = (process.env.DIAGRAMZIP_RENDER_URL ?? 'http://127.0.0.1:8788').replace(/\/$/, '')32 4-const endpoint = process.env.DIAGRAMZIP_RENDER_URL ?? 'http://127.0.0.1:8788/render/v1/svg'5-const fixtureDirectory = resolve(import.meta.dirname, '../../ci/tests/diagrams')6-7-const fixtures = {8- plantuml: 'architecture.puml',9- mermaid: 'contribute.mmd',10- graphviz: 'hello.dot',11- d2: 'connections.d2',12- c4plantuml: 'banking-system.puml',13- blockdiag: 'kroki.diag',14- seqdiag: 'sequence.diag',15- actdiag: 'actions.diag',16- nwdiag: 'network.diag',17- packetdiag: 'packet.diag',18- rackdiag: 'rack.diag',19- bpmn: 'example.bpmn',20- bytefield: 'bytefield.bf',21- dbml: 'dbml.dbml',22- diagramsnet: 'diagramsnet-venn.xml',23- ditaa: 'components.ditaa',24- erd: 'schema.erd',25- excalidraw: 'venn.excalidraw',26- goat: 'components.goat',27- nomnoml: 'pirate.nomnoml',28- pikchr: 'diamond.pikchr',29- structurizr: 'gettingstarted.structurizr',30- svgbob: 'cloud.bob',31- symbolator: 'component.sv',32- tikz: 'periodic-table.tex',33- umlet: 'umlet.xml',34- vega: 'bar-chart.vega',35- vegalite: 'discretizing-scale.vlite',36- wavedrom: 'wavedrom.json5',37- wireviz: 'wireviz.yaml',38-}39-40-const expectedLabels = {41- mermaid: 'How to contribute?',42- d2: 'dogs',43- ditaa: 'Kroki',44- symbolator: 'Clocking',45- tikz: 'Hydrogen',46-}3+const [healthResponse, catalogResponse, removedRenderResponse] = await Promise.all([4+ fetch(`${base}/render/v1/health`),5+ fetch(`${base}/render/v1/catalog`),6+ fetch(`${base}/render/v1/svg`, {7+ method: 'POST',8+ headers: { 'Content-Type': 'application/json' },9+ body: JSON.stringify({ engine: 'graphviz', source: 'digraph { a -> b }', format: 'svg' }),10+ }),11+])4712 48-const canvasEngines = new Set(['graphviz', 'd2', 'ditaa', 'svgbob', 'symbolator'])13+if (!healthResponse.ok) throw new Error(`Health check returned HTTP ${healthResponse.status}.`)14+const health = await healthResponse.json()15+if (health.ok !== true) throw new Error('The health response is invalid.')4916 50-async function render([engine, filename]) {51- const source = await readFile(resolve(fixtureDirectory, filename), 'utf8')52- const presentation = canvasEngines.has(engine)53- ? { background: '#f3f3f3', padding: engine === 'svgbob' ? 256 : 24, frame: true }54- : { background: '', padding: 0, frame: false }55- const response = await fetch(endpoint, {56- method: 'POST',57- headers: { Accept: 'image/svg+xml', 'Content-Type': 'application/json' },58- body: JSON.stringify({59- engine,60- source,61- format: 'svg',62- options: {},63- metadata: { title: '', description: '' },64- presentation,65- }),66- })67- const body = await response.text()68- if (!response.ok) throw new Error(`${engine}: HTTP ${response.status}: ${body.slice(0, 240)}`)69- if (!/<svg[\s>]/i.test(body)) throw new Error(`${engine}: response is not SVG`)70- if (!/\bviewBox\s*=|\bwidth\s*=.*\bheight\s*=/is.test(body)) throw new Error(`${engine}: SVG has no usable dimensions`)71- if (expectedLabels[engine] && !body.includes(expectedLabels[engine])) {72- throw new Error(`${engine}: expected label was removed from the SVG`)73- }74- if (engine === 'tikz' && !body.includes('data:application/x-font-woff;base64')) {75- throw new Error('tikz: embedded font stylesheet was removed from the SVG')76- }77- if (engine === 'd2' && (!body.includes('@keyframes dashdraw') || !body.includes('animation: dashdraw'))) {78- throw new Error('d2: animated connection stylesheet was removed from the SVG')79- }80- if (engine === 'symbolator' && !body.includes('.fnt1')) {81- throw new Error('symbolator: embedded stylesheet was removed from the SVG')82- }83- if (canvasEngines.has(engine)) {84- if (!body.includes('background-color:#f3f3f3') || !body.includes('fill="#f3f3f3"')) {85- throw new Error(`${engine}: selected canvas background was not applied`)86- }87- if (/class="backdrop"|<rect[^>]*width="100%"[^>]*height="100%"[^>]*fill="white"|<polygon fill="white" stroke="none"/i.test(body)) {88- throw new Error(`${engine}: renderer backdrop still masks the selected canvas`)89- }90- }91- if (engine === 'svgbob') {92- const root = body.match(/<svg\b[^>]*>/i)?.[0] ?? ''93- if (!/viewBox="-256 -256 /.test(root) || !/width="\d+(?:\.\d+)?"/.test(root) || !/height="\d+(?:\.\d+)?"/.test(root)) {94- throw new Error('svgbob: 256px padding was not applied to the SVG viewport')95- }96- }97- return {98- engine,99- runtime: response.headers.get('X-Diagram-Renderer') ?? 'unknown',100- bytes: new TextEncoder().encode(body).byteLength,101- }17+if (!catalogResponse.ok) throw new Error(`Catalog check returned HTTP ${catalogResponse.status}.`)18+const catalog = await catalogResponse.json()19+if (catalog.format !== 'svg' || !Array.isArray(catalog.engines) || catalog.engines.length !== 30) {20+ throw new Error('The catalog response does not contain all 30 SVG engines.')10221 }10322 104-const entries = Object.entries(fixtures)105-const results = []106-const failures = []107-for (let index = 0; index < entries.length; index += 4) {108- const batch = await Promise.allSettled(entries.slice(index, index + 4).map(render))109- for (const result of batch) {110- if (result.status === 'fulfilled') results.push(result.value)111- else failures.push(result.reason instanceof Error ? result.reason.message : String(result.reason))112- }23+if (removedRenderResponse.status !== 404) {24+ throw new Error(`The removed render proxy returned HTTP ${removedRenderResponse.status}.`)11325 }11426 115-for (const result of results) console.log(`${result.engine.padEnd(13)} ${result.runtime.padEnd(10)} ${String(result.bytes).padStart(8)} bytes`)116-if (failures.length > 0) {117- for (const failure of failures) console.error(failure)118- process.exitCode = 1119-} else {120- console.log(`30/30 engines returned structurally valid SVG through ${endpoint}`)121-}27+console.log('The catalog service is healthy. It lists 30 engines and has no render proxy.')
A diagramzip-render/src/adapters/edge/umlet.ts +22 -0
D diagramzip-render/src/adapters/origin.ts +0 -67
@@ -1,67 +0,0 @@
1-import { RenderError } from '../errors'2-import type { EngineId, RendererAdapter, RenderRequest, RenderResult } from '../types'3-4-const MAX_ORIGIN_RESPONSE_BYTES = 4_194_3045-6-async function boundedText(response: Response): Promise<string> {7- const declaredLength = response.headers.get('Content-Length')8- if (declaredLength !== null && Number(declaredLength) > MAX_ORIGIN_RESPONSE_BYTES) {9- throw new RenderError(413, 'render_too_large', 'Compatibility renderer output is too large.')10- }11- if (response.body === null) throw new RenderError(502, 'empty_render', 'Compatibility renderer returned an empty response.')12- const reader = response.body.getReader()13- const chunks: Uint8Array[] = []14- let length = 015- while (true) {16- const { done, value } = await reader.read()17- if (done) break18- length += value.byteLength19- if (length > MAX_ORIGIN_RESPONSE_BYTES) {20- await reader.cancel('render too large')21- throw new RenderError(413, 'render_too_large', 'Compatibility renderer output is too large.')22- }23- chunks.push(value)24- }25- const bytes = new Uint8Array(length)26- let offset = 027- for (const chunk of chunks) {28- bytes.set(chunk, offset)29- offset += chunk.byteLength30- }31- return new TextDecoder().decode(bytes)32-}33-34-export function originAdapter(id: EngineId, originUrl: string): RendererAdapter {35- return {36- id,37- runtime: 'origin',38- version: 'compatibility-origin',39- async render(request: RenderRequest, signal: AbortSignal): Promise<RenderResult> {40- const url = new URL(`/${encodeURIComponent(id)}/svg`, originUrl)41- for (const [name, value] of Object.entries(request.options)) url.searchParams.append(name, value)42- let response: Response43- try {44- response = await fetch(url, {45- method: 'POST',46- headers: { Accept: 'image/svg+xml', 'Content-Type': 'text/plain; charset=utf-8' },47- body: request.source,48- signal,49- })50- } catch (error) {51- if (signal.aborted) throw error52- throw new RenderError(502, 'origin_unavailable', 'The compatibility renderer is unavailable.')53- }54- if (!response.ok) {55- await response.body?.cancel()56- const status = response.status >= 400 && response.status < 500 ? 422 : 50257- throw new RenderError(status, 'render_failed', `The ${id} renderer could not render this source.`)58- }59- return {60- body: await boundedText(response),61- contentType: 'image/svg+xml',62- engineVersion: response.headers.get('X-Kroki-Version') ?? 'compatibility-origin',63- runtime: 'origin',64- }65- },66- }67-}
M diagramzip-render/src/catalog.ts +23 -8
@@ -5,7 +5,6 @@ export interface EngineCatalogEntry {
55 targetRuntime: EngineRuntime66 activeRuntime: EngineRuntime77 version: string8- fallback: 'origin' | null98 knownLosses: readonly string[]109 }1110
@@ -34,15 +33,15 @@ const targetRuntime: Record<EngineId, EngineRuntime> = {
3433 structurizr: 'edge-js',3534 svgbob: 'edge-wasm',3635 symbolator: 'edge-python',37- tikz: 'origin',38- umlet: 'client',36+ tikz: 'client',37+ umlet: 'edge-js',3938 vega: 'edge-js',4039 vegalite: 'edge-js',4140 wavedrom: 'edge-js',4241 wireviz: 'edge-python',4342 }4443 45-const activeRuntime: Partial<Record<EngineId, EngineRuntime>> = {44+const activeRuntime: Record<EngineId, EngineRuntime> = {4645 plantuml: 'edge-wasm',4746 c4plantuml: 'edge-wasm',4847 mermaid: 'client',
@@ -71,9 +70,11 @@ const activeRuntime: Partial<Record<EngineId, EngineRuntime>> = {
7170 d2: 'edge-wasm',7271 ditaa: 'edge-wasm',7372 symbolator: 'edge-python',73+ tikz: 'client',74+ umlet: 'edge-js',7475 }7576 76-const versions: Partial<Record<EngineId, string>> = {77+const versions: Record<EngineId, string> = {7778 plantuml: 'plantuml@1.2026.6/edge-wasm-1',7879 c4plantuml: 'c4plantuml@2.7.0-lowered+plantuml@1.2026.6/edge-wasm-1',7980 mermaid: 'mermaid@11.17.0',
@@ -102,6 +103,8 @@ const versions: Partial<Record<EngineId, string>> = {
102103 d2: 'd2@0.7.1/custom-grid-1',103104 ditaa: 'ditaa-ascii+svgbob@0.7.6/edge-wasm-1',104105 symbolator: 'symbolator@1.2.2/python-translation-1',106+ tikz: '@planktimerr/tikzjax@1.0.63/client-unit-1',107+ umlet: 'diagramzip-umlet-svg@1',105108 }106109 107110 const losses: Partial<Record<EngineId, readonly string[]>> = {
@@ -196,14 +199,26 @@ const losses: Partial<Record<EngineId, readonly string[]>> = {
196199 'Ditaa shape and color directives are removed; specialized shapes and per-shape colors are not retained.',197200 'Shadows, rounded corners, anti-aliasing, and edge separation flags are accepted for compatibility but have no effect in the Svgbob pipeline.',198201 ],202+ tikz: [203+ 'Only SVG is supported.',204+ 'The browser unit uses the bundled TeX/PGF package set, not a full TeX Live installation.',205+ 'Layout, fonts, and SVG details can differ from the native dvisvgm renderer.',206+ 'External files, shell escape, external links, and resource loads are unavailable.',207+ ],208+ umlet: [209+ 'Only SVG is supported.',210+ 'The bounded translator preserves UXF coordinates but uses browser-independent SVG text metrics, so wrapping and typography differ from UMLet desktop.',211+ 'Known base and repository custom elements have direct SVG shapes; unknown custom Java elements render as visibly labeled generic boxes instead of executing custom code.',212+ 'Advanced PlotGrid and UMLSequenceAllInOne elements render as bounded labeled approximations.',213+ 'Interactive sticking, resizing, Java/GWT facets, themes, and custom class loading are intentionally unavailable.',214+ ],199215 }200216 201217 export const ENGINE_CATALOG: readonly EngineCatalogEntry[] = ENGINE_IDS.map(id => ({202218 id,203219 targetRuntime: targetRuntime[id],204- activeRuntime: activeRuntime[id] ?? 'origin',205- version: versions[id] ?? 'compatibility-origin',206- fallback: null,220+ activeRuntime: activeRuntime[id],221+ version: versions[id],207222 knownLosses: losses[id] ?? [],208223 }))209224
M diagramzip-render/src/index.ts +6 -111
@@ -1,11 +1,4 @@
1-import { ENGINE_CATALOG, ENGINE_CATALOG_BY_ID } from './catalog'2-import { originAdapter } from './adapters/origin'3-import { RenderError, RequestError } from './errors'4-import { sanitizeAndDecorateSvg } from './svg'5-import type { EngineId, RendererAdapter, RenderRequest } from './types'6-import { parseRenderRequest } from './validation'7-8-const CACHE_MAX_AGE = 1_8001+import { ENGINE_CATALOG } from './catalog'92 103 function json(value: unknown, init: ResponseInit = {}): Response {114 const headers = new Headers(init.headers)
@@ -15,92 +8,6 @@ function json(value: unknown, init: ResponseInit = {}): Response {
158 return Response.json(value, { ...init, headers })169 }1710 18-function errorResponse(error: unknown): Response {19- if (error instanceof RequestError || error instanceof RenderError) {20- return json({ error: { code: error.code, message: error.message } }, { status: error.status })21- }22- return json({ error: { code: 'internal_error', message: 'The diagram could not be rendered.' } }, { status: 500 })23-}24-25-function assertGatewayRoutable(id: EngineId): void {26- const entry = ENGINE_CATALOG_BY_ID.get(id)27- if (entry?.activeRuntime !== 'origin') {28- throw new RenderError(503, 'renderer_unit_required', `The ${id} renderer is available through its dedicated renderer unit.`)29- }30-}31-32-function adapterFor(id: EngineId, env: Env): RendererAdapter {33- assertGatewayRoutable(id)34- return originAdapter(id, env.ORIGIN_URL)35-}36-37-function canonicalRequest(request: RenderRequest): string {38- const options = Object.fromEntries(Object.entries(request.options).sort(([left], [right]) => left.localeCompare(right)))39- return JSON.stringify({ ...request, options })40-}41-42-function base64Url(bytes: Uint8Array): string {43- let binary = ''44- for (const byte of bytes) binary += String.fromCharCode(byte)45- return btoa(binary).replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '')46-}47-48-async function cacheRequestFor(request: RenderRequest, env: Env): Promise<Request> {49- const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(canonicalRequest(request)))50- return new Request(`https://diagramzip-render-cache.invalid/${encodeURIComponent(env.RENDERER_BUILD)}/${base64Url(new Uint8Array(digest))}`, {51- method: 'GET',52- })53-}54-55-function responseWithCacheStatus(response: Response, status: 'HIT' | 'MISS'): Response {56- const headers = new Headers(response.headers)57- headers.set('X-Diagram-Cache', status)58- return new Response(response.body, { status: response.status, statusText: response.statusText, headers })59-}60-61-async function render(request: RenderRequest, env: Env, signal: AbortSignal): Promise<Response> {62- const entry = ENGINE_CATALOG_BY_ID.get(request.engine)63- if (entry === undefined) throw new RequestError(400, 'unknown_engine', `Unknown diagram engine: ${request.engine}.`)64- let adapter = adapterFor(request.engine, env)65- let rendered66- try {67- rendered = await adapter.render(request, signal)68- } catch (error) {69- if (!(error instanceof RenderError) || error.code !== 'origin_required' || entry.fallback !== 'origin') throw error70- console.log(JSON.stringify({ message: 'renderer fallback', engine: request.engine, from: adapter.runtime, to: 'origin', reason: error.message }))71- adapter = originAdapter(request.engine, env.ORIGIN_URL)72- rendered = await adapter.render(request, signal)73- }74- if (signal.aborted) throw signal.reason75- const body = sanitizeAndDecorateSvg(rendered.body, request.metadata, request.presentation, request.engine)76- return new Response(body, {77- headers: {78- 'Access-Control-Allow-Origin': '*',79- 'Cache-Control': `public, max-age=${CACHE_MAX_AGE}`,80- 'Content-Security-Policy': "default-src 'none'; style-src 'unsafe-inline'; sandbox",81- 'Content-Type': 'image/svg+xml; charset=utf-8',82- 'X-Content-Type-Options': 'nosniff',83- 'X-Diagram-Engine': request.engine,84- 'X-Diagram-Engine-Version': rendered.engineVersion,85- 'X-Diagram-Renderer': rendered.runtime,86- 'X-Renderer-Build': env.RENDERER_BUILD,87- },88- })89-}90-91-async function renderRoute(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {92- const input = await parseRenderRequest(request)93- // Check before consulting the gateway cache so a pre-cutover response cannot94- // hide the dedicated-unit boundary.95- assertGatewayRoutable(input.engine)96- const cacheKey = await cacheRequestFor(input, env)97- const cached = await caches.default.match(cacheKey)98- if (cached !== undefined) return responseWithCacheStatus(cached, 'HIT')99- const response = await render(input, env, request.signal)100- ctx.waitUntil(caches.default.put(cacheKey, response.clone()))101- return responseWithCacheStatus(response, 'MISS')102-}103-10411 function catalogResponse(): Response {10512 return json({ format: 'svg', engines: ENGINE_CATALOG }, {10613 headers: { 'Cache-Control': 'public, max-age=300' },
@@ -108,33 +15,21 @@ function catalogResponse(): Response {
10815 }10916 11017 export default {111- async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {18+ async fetch(request: Request): Promise<Response> {11219 const url = new URL(request.url)11320 if (request.method === 'OPTIONS') {11421 return new Response(null, {11522 status: 204,11623 headers: {11724 'Access-Control-Allow-Headers': 'Accept, Content-Type',118- 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',25+ 'Access-Control-Allow-Methods': 'GET, OPTIONS',11926 'Access-Control-Allow-Origin': '*',12027 'Access-Control-Max-Age': '86400',12128 },12229 })12330 }124- try {125- if (request.method === 'GET' && url.pathname === '/render/v1/health') return json({ ok: true })126- if (request.method === 'GET' && url.pathname === '/render/v1/catalog') return catalogResponse()127- if (request.method === 'POST' && url.pathname === '/render/v1/svg') return await renderRoute(request, env, ctx)128- return json({ error: { code: 'not_found', message: 'Route not found.' } }, { status: 404 })129- } catch (error) {130- if (!(error instanceof RequestError || error instanceof RenderError)) {131- console.error(JSON.stringify({132- message: 'unhandled render error',133- error: error instanceof Error ? error.message : String(error),134- path: url.pathname,135- }))136- }137- return errorResponse(error)138- }31+ if (request.method === 'GET' && url.pathname === '/render/v1/health') return json({ ok: true })32+ if (request.method === 'GET' && url.pathname === '/render/v1/catalog') return catalogResponse()33+ return json({ error: { code: 'not_found', message: 'Route not found.' } }, { status: 404 })13934 },14035 } satisfies ExportedHandler<Env>
M diagramzip-render/src/types.ts +1 -1
A diagramzip-render/src/umlet.ts +361 -0
@@ -0,0 +1,361 @@
1+import { SaxesParser, type SaxesTagPlain } from 'saxes'2+import { RenderError } from './errors'3+4+const MAX_SOURCE_BYTES = 262_1445+const MAX_ELEMENTS = 1_0006+const MAX_XML_NODES = 12_0007+const MAX_ELEMENT_TEXT = 32_7688+const MAX_TOTAL_TEXT = 262_1449+const MAX_COORDINATE = 8_19210+const MAX_OUTPUT_LENGTH = 4_194_30411+const MARGIN = 2012+13+interface XmlNode {14+ name: string15+ text: string16+ children: XmlNode[]17+}18+19+interface UmletElement {20+ rawType: string21+ kind: string22+ x: number23+ y: number24+ width: number25+ height: number26+ panel: string27+ additional: string28+}29+30+interface Panel {31+ controls: Map<string, string>32+ lines: string[]33+}34+35+const LEGACY_TYPES = new Map<string, string>([36+ ['com.umlet.element.base.Relation', 'Relation'],37+ ['com.umlet.element.base.Class', 'UMLClass'],38+ ['com.umlet.element.base.UseCase', 'UMLUseCase'],39+ ['com.umlet.element.base.Interface', 'UMLInterface'],40+ ['com.umlet.element.base.Actor', 'UMLActor'],41+ ['com.umlet.element.base.State', 'UMLState'],42+ ['com.umlet.element.base.Object', 'UMLObject'],43+ ['com.umlet.element.base.Timer', 'UMLTimer'],44+ ['com.umlet.element.base.SpecialState', 'UMLSpecialState'],45+ ['com.umlet.element.base.Note', 'UMLNote'],46+ ['com.umlet.element.base.Package', 'UMLPackage'],47+ ['com.umlet.element.base.Frame', 'UMLFrame'],48+ ['com.umlet.element.base.Deployment', 'UMLDeployment'],49+ ['com.umlet.element.base.Generic', 'UMLGeneric'],50+ ['com.umlet.element.base.Hierarchy', 'UMLHierarchy'],51+ ['com.umlet.element.base.Text', 'Text'],52+ ['com.umlet.element.base.SequenceAllInOne', 'UMLSequenceAllInOne'],53+ ['com.umlet.element.custom.State', 'CustomState'],54+ ['com.umlet.element.custom.FinalState', 'CustomFinalState'],55+ ['com.umlet.element.custom.InitialState', 'CustomInitialState'],56+ ['com.umlet.element.custom.HistoryState', 'CustomHistoryState'],57+ ['com.umlet.element.custom.ThreeWayRelation', 'CustomThreeWayRelation'],58+])59+60+const STANDARD_IDS = new Set([61+ 'Relation', 'UMLClass', 'UMLUseCase', 'UMLInterface', 'UMLActor', 'UMLState',62+ 'UMLObject', 'UMLTimer', 'UMLSpecialState', 'UMLNote', 'UMLSyncBarHorizontal',63+ 'UMLSyncBarVertical', 'UMLPackage', 'UMLFrame', 'UMLDeployment', 'UMLGeneric',64+ 'UMLHierarchy', 'Text', 'PlotGrid', 'UMLSequenceAllInOne',65+])66+67+const CONTROL_KEYS = new Set([68+ 'bg', 'fg', 'fontsize', 'halign', 'valign', 'lt', 'type', 'style', 'layer',69+ 'group', 'transparentselection',70+])71+72+function fail(code: string, message: string): never {73+ throw new RenderError(422, code, message)74+}75+76+function child(node: XmlNode, name: string): XmlNode | undefined {77+ return node.children.find(value => value.name.toLowerCase() === name)78+}79+80+function content(node: XmlNode | undefined): string {81+ if (!node) return ''82+ return `${node.text}${node.children.map(content).join('')}`83+}84+85+function integer(value: string, name: string): number {86+ if (!/^-?\d+$/.test(value.trim())) fail('invalid_source', `UMLet ${name} must be an integer.`)87+ const parsed = Number(value)88+ if (!Number.isSafeInteger(parsed)) fail('invalid_source', `UMLet ${name} is outside the supported range.`)89+ return parsed90+}91+92+function parseXml(source: string): XmlNode {93+ if (new TextEncoder().encode(source).byteLength > MAX_SOURCE_BYTES) {94+ throw new RenderError(413, 'source_too_large', 'UMLet source may not exceed 256 KiB.')95+ }96+ if (/<!DOCTYPE|<!ENTITY/i.test(source)) fail('invalid_source', 'UMLet source may not contain a doctype or entity declaration.')97+ let root: XmlNode | null = null98+ const stack: XmlNode[] = []99+ let nodes = 0100+ let parseError: Error | null = null101+ const parser = new SaxesParser({ xmlns: false })102+ parser.on('doctype', () => { parseError = new Error('DOCTYPE is not allowed') })103+ parser.on('processinginstruction', () => { parseError = new Error('Processing instructions are not allowed') })104+ parser.on('opentag', (tag: SaxesTagPlain) => {105+ if (++nodes > MAX_XML_NODES) {106+ parseError = new Error('Too many XML nodes')107+ return108+ }109+ const node: XmlNode = { name: tag.name, text: '', children: [] }110+ const parent = stack.at(-1)111+ if (parent) parent.children.push(node)112+ else if (root === null) root = node113+ else parseError = new Error('Multiple XML roots')114+ stack.push(node)115+ })116+ const append = (value: string) => {117+ const node = stack.at(-1)118+ if (node) node.text += value119+ else if (value.trim()) parseError = new Error('Text outside XML root')120+ }121+ parser.on('text', append)122+ parser.on('cdata', append)123+ parser.on('closetag', () => { stack.pop() })124+ parser.on('error', error => { parseError = error })125+ try { parser.write(source).close() } catch (error) { parseError = error instanceof Error ? error : new Error(String(error)) }126+ if (parseError || !root) fail('invalid_source', 'UMLet source is not valid bounded XML.')127+ return root128+}129+130+export function parseUmlet(source: string): UmletElement[] {131+ const root = parseXml(source)132+ if (!['diagram', 'umlet_diagram'].includes(root.name.toLowerCase())) fail('invalid_source', 'UMLet source must contain a diagram or umlet_diagram root.')133+ const nodes = root.children.filter(node => node.name.toLowerCase() === 'element')134+ if (nodes.length === 0) fail('invalid_source', 'UMLet source contains no elements.')135+ if (nodes.length > MAX_ELEMENTS) throw new RenderError(413, 'source_too_large', `UMLet source may not contain more than ${MAX_ELEMENTS} elements.`)136+ let totalText = 0137+ const elements = nodes.map(node => {138+ const id = content(child(node, 'id')).trim()139+ const type = content(child(node, 'type')).trim()140+ const rawType = id || type141+ if (!rawType) fail('invalid_source', 'Every UMLet element needs an id or type.')142+ const kind = id && STANDARD_IDS.has(id) ? id : LEGACY_TYPES.get(type) ?? (type.startsWith('com.umlet.element.custom.') ? 'CustomFallback' : 'GenericFallback')143+ const coordinates = child(node, 'coordinates')144+ if (!coordinates) fail('invalid_source', `UMLet element ${rawType} has no coordinates.`)145+ const x = integer(content(child(coordinates, 'x')), 'x coordinate')146+ const y = integer(content(child(coordinates, 'y')), 'y coordinate')147+ const width = integer(content(child(coordinates, 'w')), 'width')148+ const height = integer(content(child(coordinates, 'h')), 'height')149+ if (width < 1 || height < 1) fail('invalid_source', 'UMLet element dimensions must be positive.')150+ if (Math.abs(x) > MAX_COORDINATE || Math.abs(y) > MAX_COORDINATE || width > MAX_COORDINATE || height > MAX_COORDINATE || Math.abs(x + width) > MAX_COORDINATE || Math.abs(y + height) > MAX_COORDINATE) {151+ fail('invalid_source', `UMLet coordinates may not exceed ${MAX_COORDINATE}px.`)152+ }153+ const panel = content(child(node, 'panel_attributes'))154+ const additional = content(child(node, 'additional_attributes'))155+ if (panel.length > MAX_ELEMENT_TEXT || additional.length > MAX_ELEMENT_TEXT) fail('invalid_source', 'A UMLet element contains too much text or geometry data.')156+ totalText += panel.length + additional.length157+ return { rawType, kind, x, y, width, height, panel, additional }158+ })159+ if (totalText > MAX_TOTAL_TEXT) throw new RenderError(413, 'source_too_large', 'UMLet source contains too much element text.')160+ return elements161+}162+163+function escape(value: string): string {164+ return value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;')165+}166+167+function panel(value: string): Panel {168+ const controls = new Map<string, string>()169+ const lines: string[] = []170+ for (const raw of value.replaceAll('\r', '').split('\n')) {171+ const line = raw.trimEnd()172+ const match = /^([a-z][a-z0-9_-]*)=(.*)$/i.exec(line.trim())173+ if (match && CONTROL_KEYS.has(match[1]!.toLowerCase())) controls.set(match[1]!.toLowerCase(), match[2]!.trim())174+ else if (line.trim() || lines.length) lines.push(line.trim())175+ }176+ while (lines.at(-1) === '') lines.pop()177+ return { controls, lines }178+}179+180+function color(value: string | undefined, fallback: string): string {181+ if (!value) return fallback182+ const normalized = value.trim()183+ return /^(?:#[0-9a-f]{3,8}|[a-z]{1,20})$/i.test(normalized) ? normalized : fallback184+}185+186+function fontSize(value: string | undefined): number {187+ const parsed = Number(value)188+ return Number.isFinite(parsed) && parsed >= 6 && parsed <= 72 ? parsed : 14189+}190+191+function wrapLine(value: string, width: number, size: number): string[] {192+ if (!value) return ['']193+ const maximum = Math.max(4, Math.floor(width / (size * 0.58)))194+ if (value.length <= maximum) return [value]195+ const result: string[] = []196+ let current = ''197+ for (const word of value.split(/\s+/)) {198+ if (word.length > maximum * 1.5) {199+ if (current) { result.push(current); current = '' }200+ for (let index = 0; index < word.length; index += maximum) result.push(word.slice(index, index + maximum))201+ } else if (!current) current = word202+ else if (`${current} ${word}`.length <= maximum) current += ` ${word}`203+ else { result.push(current); current = word }204+ }205+ if (current) result.push(current)206+ return result207+}208+209+function textBlock(element: UmletElement, parsed: Panel, inset = 8, centered = false): string {210+ let size = fontSize(parsed.controls.get('fontsize'))211+ const available = Math.max(8, element.width - inset * 2)212+ const makeLines = () => parsed.lines.flatMap(line => line === '--' ? ['--'] : wrapLine(line, available, size)).slice(0, 200)213+ let lines = makeLines()214+ const availableHeight = Math.max(8, element.height - inset * 2)215+ if (lines.length * size * 1.25 > availableHeight) {216+ size = Math.max(8, Math.min(size, availableHeight / Math.max(1, lines.length * 1.25)))217+ lines = makeLines()218+ }219+ const lineHeight = size * 1.25220+ const total = lines.length * lineHeight221+ const align = parsed.controls.get('halign') ?? (centered ? 'center' : 'left')222+ const anchor = align === 'right' ? 'end' : align === 'center' ? 'middle' : 'start'223+ const x = align === 'right' ? element.x + element.width - inset : align === 'center' ? element.x + element.width / 2 : element.x + inset224+ let y = parsed.controls.get('valign') === 'center' || centered225+ ? element.y + Math.max(size, (element.height - total) / 2 + size)226+ : element.y + inset + size227+ const output: string[] = []228+ for (const line of lines) {229+ if (line === '--') {230+ output.push(`<line x1="${element.x + inset}" y1="${y - size * 0.45}" x2="${element.x + element.width - inset}" y2="${y - size * 0.45}" class="separator"/>`)231+ } else {232+ output.push(`<text x="${x}" y="${y}" text-anchor="${anchor}" font-size="${size}">${escape(line)}</text>`)233+ }234+ y += lineHeight235+ }236+ return output.join('')237+}238+239+function points(element: UmletElement): Array<[number, number]> {240+ const values = element.additional.split(';').map(value => value.trim()).filter(Boolean)241+ if (values.length < 4 || values.length % 2 !== 0 || values.some(value => !/^-?\d+(?:\.\d+)?$/.test(value))) {242+ return [[element.x, element.y + element.height / 2], [element.x + element.width, element.y + element.height / 2]]243+ }244+ const parsed = values.map(Number)245+ if (parsed.some(value => !Number.isFinite(value) || Math.abs(value) > MAX_COORDINATE)) {246+ return [[element.x, element.y + element.height / 2], [element.x + element.width, element.y + element.height / 2]]247+ }248+ const result: Array<[number, number]> = []249+ for (let index = 0; index < parsed.length; index += 2) result.push([element.x + parsed[index]!, element.y + parsed[index + 1]!])250+ return result251+}252+253+function relation(element: UmletElement, parsed: Panel): string {254+ const relationPoints = points(element)255+ const lineType = parsed.controls.get('lt') ?? '-'256+ const markerStart = lineType.includes('<') ? ' marker-start="url(#arrow)"' : ''257+ const markerEnd = lineType.includes('>') ? ' marker-end="url(#arrow)"' : ''258+ const dash = lineType.includes('.') ? ' stroke-dasharray="2 5"' : lineType.includes('/') ? ' stroke-dasharray="8 5"' : ''259+ const serialized = relationPoints.map(([x, y]) => `${x},${y}`).join(' ')260+ const middle = relationPoints[Math.floor((relationPoints.length - 1) / 2)]!261+ const labels = parsed.lines.filter(line => line !== '--')262+ return `<polyline points="${serialized}" fill="none"${markerStart}${markerEnd}${dash}/>${labels.map((line, index) => `<text x="${middle[0] + 6}" y="${middle[1] - 6 + index * 17}" font-size="13">${escape(line)}</text>`).join('')}`263+}264+265+function specialState(element: UmletElement, mode: string): string {266+ const cx = element.x + element.width / 2267+ const cy = element.y + element.height / 2268+ const radius = Math.max(3, Math.min(element.width, element.height) / 2 - 2)269+ if (mode === 'initial') return `<circle cx="${cx}" cy="${cy}" r="${radius}" class="solid"/>`270+ if (mode === 'final') return `<circle cx="${cx}" cy="${cy}" r="${radius}"/><circle cx="${cx}" cy="${cy}" r="${Math.max(2, radius * 0.55)}" class="solid"/>`271+ if (mode === 'history' || mode === 'history_shallow') return `<circle cx="${cx}" cy="${cy}" r="${radius}"/><text x="${cx}" y="${cy + 5}" text-anchor="middle" font-size="${Math.max(8, radius)}">H</text>`272+ if (mode === 'history_deep') return `<circle cx="${cx}" cy="${cy}" r="${radius}"/><text x="${cx}" y="${cy + 5}" text-anchor="middle" font-size="${Math.max(8, radius)}">H*</text>`273+ if (mode === 'termination') return `<line x1="${cx - radius}" y1="${cy - radius}" x2="${cx + radius}" y2="${cy + radius}"/><line x1="${cx + radius}" y1="${cy - radius}" x2="${cx - radius}" y2="${cy + radius}"/>`274+ return `<path d="M ${cx} ${cy - radius} L ${cx + radius} ${cy} L ${cx} ${cy + radius} L ${cx - radius} ${cy} Z"/>`275+}276+277+function generic(element: UmletElement, parsed: Panel, label?: string): string {278+ const heading = label ? `<text x="${element.x + 7}" y="${element.y + 14}" font-size="10" class="fallback-label">${escape(label)}</text>` : ''279+ const shifted = label ? { ...element, y: element.y + 10, height: Math.max(1, element.height - 10) } : element280+ return `<rect x="${element.x}" y="${element.y}" width="${element.width}" height="${element.height}" rx="3"${label ? ' stroke-dasharray="5 4"' : ''}/>${heading}${textBlock(shifted, parsed, 7)}`281+}282+283+function draw(element: UmletElement): string {284+ const parsed = panel(element.panel)285+ const fill = color(parsed.controls.get('bg'), 'white')286+ const stroke = color(parsed.controls.get('fg'), '#111827')287+ const open = `<g fill="${fill}" stroke="${stroke}" color="${stroke}">`288+ switch (element.kind) {289+ case 'Relation': return `${open}${relation(element, parsed)}</g>`290+ case 'CustomThreeWayRelation': {291+ const cx = element.x + element.width / 2; const cy = element.y + element.height / 2292+ return `${open}<path d="M ${cx} ${element.y} L ${cx} ${cy} M ${element.x} ${cy} L ${element.x + element.width} ${cy} M ${cx} ${cy} L ${cx} ${element.y + element.height}"/><circle cx="${cx}" cy="${cy}" r="2" class="solid"/></g>`293+ }294+ case 'CustomInitialState': return `${open}${specialState(element, 'initial')}</g>`295+ case 'CustomFinalState': return `${open}${specialState(element, 'final')}</g>`296+ case 'CustomHistoryState': return `${open}${specialState(element, 'history')}</g>`297+ case 'UMLSpecialState': return `${open}${specialState(element, (parsed.controls.get('type') ?? 'decision').toLowerCase())}</g>`298+ case 'UMLUseCase': return `${open}<ellipse cx="${element.x + element.width / 2}" cy="${element.y + element.height / 2}" rx="${element.width / 2}" ry="${element.height / 2}"/>${textBlock(element, parsed, 8, true)}</g>`299+ case 'UMLActor': {300+ const cx = element.x + element.width / 2; const top = element.y + 5; const unit = Math.min(element.width, element.height) / 5301+ return `${open}<circle cx="${cx}" cy="${top + unit}" r="${unit * 0.55}"/><path d="M ${cx} ${top + unit * 1.55} L ${cx} ${top + unit * 3.1} M ${cx - unit} ${top + unit * 2.1} L ${cx + unit} ${top + unit * 2.1} M ${cx} ${top + unit * 3.1} L ${cx - unit} ${top + unit * 4.2} M ${cx} ${top + unit * 3.1} L ${cx + unit} ${top + unit * 4.2}"/>${textBlock({ ...element, y: element.y + element.height * 0.72, height: element.height * 0.28 }, parsed, 4, true)}</g>`302+ }303+ case 'UMLInterface': {304+ const cx = element.x + element.width / 2; const radius = Math.min(element.width, element.height) * 0.18305+ return `${open}<circle cx="${cx}" cy="${element.y + radius + 3}" r="${radius}"/><line x1="${cx}" y1="${element.y + radius * 2 + 3}" x2="${cx}" y2="${element.y + radius * 3 + 3}"/>${textBlock({ ...element, y: element.y + radius * 3, height: element.height - radius * 3 }, parsed, 4, true)}</g>`306+ }307+ case 'UMLNote': {308+ const fold = Math.min(18, element.width / 4, element.height / 4)309+ return `${open}<path d="M ${element.x} ${element.y} H ${element.x + element.width - fold} L ${element.x + element.width} ${element.y + fold} V ${element.y + element.height} H ${element.x} Z M ${element.x + element.width - fold} ${element.y} V ${element.y + fold} H ${element.x + element.width}"/>${textBlock(element, parsed)}</g>`310+ }311+ case 'UMLPackage': {312+ const tab = Math.min(element.width * 0.45, 90); const tabHeight = Math.min(18, element.height * 0.25)313+ return `${open}<path d="M ${element.x} ${element.y + tabHeight} V ${element.y} H ${element.x + tab} L ${element.x + tab + 8} ${element.y + tabHeight} H ${element.x + element.width} V ${element.y + element.height} H ${element.x} Z"/>${textBlock({ ...element, y: element.y + tabHeight, height: element.height - tabHeight }, parsed)}</g>`314+ }315+ case 'UMLDeployment': return `${open}<path d="M ${element.x + 8} ${element.y} H ${element.x + element.width} V ${element.y + element.height - 8} L ${element.x + element.width - 8} ${element.y + element.height} H ${element.x} V ${element.y + 8} Z M ${element.x} ${element.y + 8} L ${element.x + 8} ${element.y} M ${element.x + element.width - 8} ${element.y + element.height} L ${element.x + element.width} ${element.y + element.height - 8}"/>${textBlock(element, parsed)}</g>`316+ case 'UMLSyncBarHorizontal': return `${open}<rect x="${element.x}" y="${element.y}" width="${element.width}" height="${element.height}" class="solid"/></g>`317+ case 'UMLSyncBarVertical': return `${open}<rect x="${element.x}" y="${element.y}" width="${element.width}" height="${element.height}" class="solid"/></g>`318+ case 'UMLTimer': {319+ const cx = element.x + element.width / 2; const cy = element.y + element.height / 2; const r = Math.max(4, Math.min(element.width, element.height) / 2 - 3)320+ return `${open}<circle cx="${cx}" cy="${cy}" r="${r}"/><path d="M ${cx} ${cy} V ${cy - r * 0.65} M ${cx} ${cy} L ${cx + r * 0.55} ${cy + r * 0.3}"/>${textBlock(element, parsed, 4, true)}</g>`321+ }322+ case 'UMLHierarchy': {323+ const cx = element.x + element.width / 2; const mid = element.y + element.height / 2324+ return `${open}<path d="M ${cx} ${element.y + 4} V ${mid} M ${element.x + 8} ${mid} H ${element.x + element.width - 8} M ${element.x + 8} ${mid} V ${element.y + element.height - 4} M ${element.x + element.width - 8} ${mid} V ${element.y + element.height - 4}"/>${textBlock(element, parsed, 4, true)}</g>`325+ }326+ case 'Text': return `${open}${textBlock(element, parsed, 0)}</g>`327+ case 'CustomState':328+ case 'UMLState': return `${open}<rect x="${element.x}" y="${element.y}" width="${element.width}" height="${element.height}" rx="${Math.min(14, element.height / 3)}"/>${textBlock(element, parsed)}</g>`329+ case 'UMLClass':330+ case 'UMLObject':331+ case 'UMLFrame':332+ case 'UMLGeneric': return `${open}${generic(element, parsed)}</g>`333+ case 'PlotGrid':334+ case 'UMLSequenceAllInOne': return `${open}${generic(element, parsed, `approximated ${element.kind}`)}</g>`335+ case 'CustomFallback': return `${open}${generic(element, parsed, `custom ${element.rawType.split('.').at(-1)}`)}</g>`336+ default: return `${open}${generic(element, parsed, `unknown ${element.rawType.split('.').at(-1)}`)}</g>`337+ }338+}339+340+export function renderUmlet(source: string): string {341+ const elements = parseUmlet(source)342+ let minX = Infinity; let minY = Infinity; let maxX = -Infinity; let maxY = -Infinity343+ for (const element of elements) {344+ minX = Math.min(minX, element.x); minY = Math.min(minY, element.y)345+ maxX = Math.max(maxX, element.x + element.width); maxY = Math.max(maxY, element.y + element.height)346+ if (element.kind === 'Relation') {347+ const relationPoints = points(element)348+ for (const [pointX, pointY] of relationPoints) { minX = Math.min(minX, pointX); minY = Math.min(minY, pointY); maxX = Math.max(maxX, pointX); maxY = Math.max(maxY, pointY) }349+ const labels = panel(element.panel).lines.filter(line => line !== '--')350+ const middle = relationPoints[Math.floor((relationPoints.length - 1) / 2)]!351+ maxX = Math.max(maxX, middle[0] + 12 + Math.max(0, ...labels.map(label => label.length * 7.5)))352+ minY = Math.min(minY, middle[1] - 20)353+ maxY = Math.max(maxY, middle[1] + labels.length * 18)354+ }355+ }356+ const x = minX - MARGIN; const y = minY - MARGIN; const width = maxX - minX + MARGIN * 2; const height = maxY - minY + MARGIN * 2357+ const body = elements.map(draw).join('')358+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="${x} ${y} ${width} ${height}"><defs><marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 1 1 L 9 5 L 1 9" fill="none" stroke="context-stroke"/></marker></defs><style>g{stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}text{fill:currentColor;stroke:none;font-family:Arial,sans-serif}.solid{fill:currentColor}.separator{stroke:currentColor}.fallback-label{fill:#6b7280}</style>${body}</svg>`359+ if (svg.length > MAX_OUTPUT_LENGTH) throw new RenderError(413, 'render_too_large', 'Rendered UMLet SVG is too large.')360+ return svg361+}
M diagramzip-render/src/unit.ts +1 -1
D diagramzip-render/src/units/compatibility-group.ts +0 -15
D diagramzip-render/src/units/compatibility.ts +0 -14
A diagramzip-render/src/units/umlet.ts +15 -0
M diagramzip-render/test/catalog.test.ts +13 -8
@@ -51,7 +51,6 @@ describe('engine catalog', () => {
5151 const ditaa = ENGINE_CATALOG.find(engine => engine.id === 'ditaa')!5252 expect(ditaa.activeRuntime).toBe('edge-wasm')5353 expect(ditaa.version).toContain('svgbob@0.7.6')54- expect(ditaa.fallback).toBeNull()5554 })5655 5756 it('marks GoAT as a dedicated edge-Wasm unit', () => {
@@ -64,14 +63,12 @@ describe('engine catalog', () => {
6463 const d2 = ENGINE_CATALOG.find(engine => engine.id === 'd2')!6564 expect(d2.activeRuntime).toBe('edge-wasm')6665 expect(d2.version).toContain('d2@0.7.1/custom-grid')67- expect(d2.fallback).toBeNull()6866 })6967 7068 it('marks Symbolator as a dedicated Python translation unit', () => {7169 const symbolator = ENGINE_CATALOG.find(engine => engine.id === 'symbolator')!7270 expect(symbolator.activeRuntime).toBe('edge-python')7371 expect(symbolator.version).toContain('symbolator@1.2.2/python-translation')74- expect(symbolator.fallback).toBeNull()7572 })7673 7774 it('marks PlantUML and lowered C4 as one edge-Wasm family', () => {
@@ -83,17 +80,25 @@ describe('engine catalog', () => {
8380 }8481 })8582 86- it('marks diagrams.net as an official browser renderer without origin fallback', () => {83+ it('marks diagrams.net as an official browser renderer', () => {8784 const diagramsnet = ENGINE_CATALOG.find(engine => engine.id === 'diagramsnet')!8885 expect(diagramsnet.activeRuntime).toBe('client')8986 expect(diagramsnet.version).toContain('diagrams.net@29.6.1')90- expect(diagramsnet.fallback).toBeNull()9187 })9288 93- it('does not retain a silent origin fallback for any engine', () => {89+ it('marks TikZ as a bundled browser renderer and UMLet as a direct edge translation', () => {90+ const tikz = ENGINE_CATALOG.find(engine => engine.id === 'tikz')!91+ const umlet = ENGINE_CATALOG.find(engine => engine.id === 'umlet')!92+ expect(tikz.activeRuntime).toBe('client')93+ expect(tikz.version).toContain('tikzjax@1.0.63')94+ expect(umlet.activeRuntime).toBe('edge-js')95+ expect(umlet.version).toContain('diagramzip-umlet-svg')96+ })97+98+ it('assigns every engine its final runtime and version', () => {9499 for (const engine of ENGINE_CATALOG) {95- if (engine.activeRuntime === 'origin') expect(engine.version).toBe('compatibility-origin')96- expect(engine.fallback).toBeNull()100+ expect(engine.activeRuntime).toBe(engine.targetRuntime)101+ expect(engine.version).not.toHaveLength(0)97102 }98103 })99104 })
M diagramzip-render/test/gateway.test.ts +15 -30
@@ -1,36 +1,21 @@
11 import { describe, expect, it } from 'vitest'22 import worker from '../src/index'33 4-const migrated = [5- 'mermaid', 'bpmn', 'excalidraw',6- 'plantuml', 'c4plantuml',7- 'bytefield', 'nomnoml', 'vega', 'vegalite', 'wavedrom',8- 'blockdiag', 'seqdiag', 'actdiag', 'nwdiag', 'packetdiag', 'rackdiag',9- 'graphviz', 'erd', 'dbml', 'pikchr', 'svgbob', 'ditaa', 'wireviz', 'structurizr', 'symbolator',10-] as const11-const env = {12- ORIGIN_URL: 'https://diagram-zip.fly.dev',13- RENDERER_BUILD: 'gateway-test',14-} as unknown as Env15-const context = {16- waitUntil() {},17- passThroughOnException() {},18- props: {},19-} as unknown as ExecutionContext4+describe('catalog service boundary', () => {5+ it('does not expose a rendering proxy', async () => {6+ const response = await worker.fetch(new Request('https://diagram.zip/render/v1/svg', {7+ method: 'POST',8+ headers: { 'Content-Type': 'application/json' },9+ body: JSON.stringify({ engine: 'graphviz', source: 'digraph { a -> b }', format: 'svg' }),10+ }))2011 21-describe('gateway renderer boundary', () => {22- for (const engine of migrated) {23- it(`does not proxy ${engine} to the compatibility origin`, async () => {24- const response = await worker.fetch(new Request('https://diagram.zip/render/v1/svg', {25- method: 'POST',26- headers: { 'Content-Type': 'application/json' },27- body: JSON.stringify({ engine, source: 'A -> B', format: 'svg' }),28- }), env, context)12+ expect(response.status).toBe(404)13+ await expect(response.json()).resolves.toMatchObject({ error: { code: 'not_found' } })14+ })2915 30- expect(response.status).toBe(503)31- await expect(response.json()).resolves.toMatchObject({32- error: { code: 'renderer_unit_required' },33- })34- })35- }16+ it('publishes the complete catalog', async () => {17+ const response = await worker.fetch(new Request('https://diagram.zip/render/v1/catalog'))18+ expect(response.status).toBe(200)19+ await expect(response.json()).resolves.toMatchObject({ format: 'svg', engines: { length: 30 } })20+ })3621 })
A diagramzip-render/test/umlet.test.ts +41 -0
@@ -0,0 +1,41 @@
1+import { describe, expect, it } from 'vitest'2+import fixture from '../../ci/tests/diagrams/umlet.xml?raw'3+import { parseUmlet, renderUmlet } from '../src/umlet'4+5+describe('bounded UMLet UXF translation', () => {6+ it('covers every element in the repository fixture without Java or a browser', () => {7+ const elements = parseUmlet(fixture)8+ expect(elements).toHaveLength(28)9+ const svg = renderUmlet(fixture)10+ expect(svg).toContain('<svg')11+ expect(svg).toContain('viewBox=')12+ expect(svg).toContain('read boarding')13+ expect(svg).toContain('>pass</text>')14+ expect(svg).toContain('marker-start="url(#arrow)"')15+ expect(svg).not.toContain('<foreignObject')16+ })17+18+ it('renders the five repository custom classes explicitly', () => {19+ const svg = renderUmlet(fixture)20+ expect(svg).toContain('rx=')21+ expect(svg).toContain('<circle')22+ expect(svg).toContain('>H</text>')23+ expect(svg).not.toContain('custom State')24+ expect(svg).not.toContain('custom FinalState')25+ })26+27+ it('keeps unknown custom elements visible as labeled bounded fallbacks', () => {28+ const svg = renderUmlet(`<diagram><element><type>com.umlet.element.custom.Radar</type><coordinates><x>10</x><y>20</y><w>120</w><h>60</h></coordinates><panel_attributes>signal &amp; range</panel_attributes></element></diagram>`)29+ expect(svg).toContain('custom Radar')30+ expect(svg).toContain('signal &amp;')31+ expect(svg).toContain('>range</text>')32+ expect(svg).toContain('stroke-dasharray="5 4"')33+ })34+35+ it('rejects active XML features, unbounded coordinates, and oversized sources', () => {36+ expect(() => renderUmlet('<!DOCTYPE diagram [<!ENTITY x "y">]><diagram/>')).toThrow(/doctype/i)37+ expect(() => renderUmlet('<diagram><?run x?><element/></diagram>')).toThrow(/processing|valid bounded/i)38+ expect(() => renderUmlet('<diagram><element><id>UMLClass</id><coordinates><x>0</x><y>0</y><w>99999</w><h>10</h></coordinates></element></diagram>')).toThrow(/8192/i)39+ expect(() => renderUmlet('x'.repeat(262_145))).toThrow(/256 KiB/i)40+ })41+})
M diagramzip-render/test/unit.test.ts +4 -4
M diagramzip-render/worker-configuration.d.ts +1 -9
D diagramzip-render/wrangler.compatibility/tikz.jsonc +0 -1
D diagramzip-render/wrangler.compatibility/umlet.jsonc +0 -1
M diagramzip-render/wrangler.jsonc +0 -4
A diagramzip-render/wrangler.units/umlet.jsonc +11 -0
M diagramzip/PERSISTENCE.md +5 -5
M diagramzip/src/client-renderers.js +1 -0
M diagramzip/src/preview.js +17 -41
@@ -1,6 +1,6 @@
11 import { clientAdapterFor } from './client-renderers.js'22 import { sanitizeAndDecorateSvg } from './client-svg.js'3-import { httpRendererUnitFor, requiresDedicatedRenderer } from './renderer-units.js'3+import { httpRendererUnitFor } from './renderer-units.js'44 55 function clamp(value, minimum, maximum) {66 return Math.min(Math.max(value, minimum), maximum)
@@ -86,25 +86,19 @@ export class PreviewController {
8686 const clientAdapter = clientAdapterFor(type)8787 let rendered8888 if (clientAdapter) {89- try {90- const clientRender = await clientAdapter.render({ type, source, options }, abortController.signal)91- rendered = {92- body: sanitizeAndDecorateSvg(clientRender.body, meta, presentation, type),93- identity: {94- unit: type,95- build: clientRender.build || clientRender.version,96- pipeline: Array.isArray(clientRender.pipeline) ? clientRender.pipeline : [type],97- },98- }99- this.status.dataset.cache = 'browser'100- this.status.dataset.renderer = type101- } catch (error) {102- if (error.name === 'AbortError') throw error103- if (requiresDedicatedRenderer(type)) throw error104- rendered = await this.renderThroughGateway({ type, source, options, meta, presentation }, abortController.signal)89+ const clientRender = await clientAdapter.render({ type, source, options }, abortController.signal)90+ rendered = {91+ body: sanitizeAndDecorateSvg(clientRender.body, meta, presentation, type),92+ identity: {93+ unit: type,94+ build: clientRender.build || clientRender.version,95+ pipeline: Array.isArray(clientRender.pipeline) ? clientRender.pipeline : [type],96+ },10597 }98+ this.status.dataset.cache = 'browser'99+ this.status.dataset.renderer = type106100 } else {107- rendered = await this.renderThroughGateway({ type, source, options, meta, presentation }, abortController.signal)101+ rendered = await this.renderThroughUnit({ type, source, options, meta, presentation }, abortController.signal)108102 }109103 if (requestNumber !== this.requestNumber) return110104 const { blob, background } = this.normalizedSvgBlob(rendered.body)
@@ -130,28 +124,10 @@ export class PreviewController {
130124 }131125 }132126 133- async renderThroughGateway({ type, source, options, meta, presentation }, signal) {127+ async renderThroughUnit({ type, source, options, meta, presentation }, signal) {134128 const unitEndpoint = httpRendererUnitFor(type)135- if (unitEndpoint) {136- try {137- const response = await this.renderRequest(138- unitEndpoint,139- { source, format: 'svg', options, metadata: meta, presentation },140- signal,141- )142- if (response.ok || response.status < 500) return await this.renderResponse(response, type)143- await response.body?.cancel()144- } catch (error) {145- if (error.name === 'AbortError') throw error146- if (requiresDedicatedRenderer(type)) throw error147- }148- if (requiresDedicatedRenderer(type)) {149- throw new Error(`The ${type} renderer unit is unavailable.`)150- }151- }152-153- const response = await this.renderRequest('/render/v1/svg', {154- engine: type,129+ if (!unitEndpoint) throw new Error(`No renderer is registered for ${type}.`)130+ const response = await this.renderRequest(unitEndpoint, {155131 source,156132 format: 'svg',157133 options,
@@ -175,7 +151,7 @@ export class PreviewController {
175151 this.status.dataset.cache = response.headers.get('X-Diagram-Cache')?.toLowerCase() ?? 'miss'176152 this.status.dataset.renderer = response.headers.get('X-Diagram-Unit')?.toLowerCase()177153 ?? response.headers.get('X-Diagram-Renderer')?.toLowerCase()178- ?? 'gateway'154+ ?? fallbackUnit179155 const unit = response.headers.get('X-Diagram-Unit')?.toLowerCase()180156 ?? response.headers.get('X-Diagram-Engine')?.toLowerCase()181157 ?? fallbackUnit
@@ -223,7 +199,7 @@ export class PreviewController {
223199 const payload = JSON.parse(body)224200 if (typeof payload?.error?.message === 'string') return payload.error.message225201 } catch {226- // Fall through to the compatibility HTML/plain-text parser.202+ // Use the HTML/plain-text parser below.227203 }228204 }229205 const document = new DOMParser().parseFromString(body, 'text/html')
M diagramzip/src/renderer-units.js +0 -13
M diagramzip/test/client-renderers.test.js +3 -2
M diagramzip/test/preview-routing.test.js +20 -38
@@ -12,11 +12,14 @@ const request = {
1212 function controllerWith(renderRequest) {1313 const controller = Object.create(PreviewController.prototype)1414 controller.renderRequest = renderRequest15- controller.renderResponse = async response => response15+ controller.renderResponse = async response => {16+ if (!response.ok) throw new Error(await response.text())17+ return response18+ }1619 return controller1720 }1821 19-test('does not send a dedicated BlockDiag renderer failure to the gateway', async () => {22+test('surfaces a dedicated BlockDiag renderer failure', async () => {2023 const endpoints = []2124 const controller = controllerWith(async endpoint => {2225 endpoints.push(endpoint)
@@ -24,13 +27,13 @@ test('does not send a dedicated BlockDiag renderer failure to the gateway', asyn
2427 })2528 2629 await assert.rejects(27- controller.renderThroughGateway({ ...request, type: 'blockdiag' }, new AbortController().signal),28- /blockdiag renderer unit is unavailable/,30+ controller.renderThroughUnit({ ...request, type: 'blockdiag' }, new AbortController().signal),31+ /unavailable/,2932 )3033 assert.deepEqual(endpoints, ['https://blockdiag.render.diagram.zip/v1/svg'])3134 })3235 33-test('does not send a dedicated BlockDiag renderer network error to the gateway', async () => {36+test('surfaces a dedicated BlockDiag renderer network error', async () => {3437 const endpoints = []3538 const controller = controllerWith(async endpoint => {3639 endpoints.push(endpoint)
@@ -38,34 +41,13 @@ test('does not send a dedicated BlockDiag renderer network error to the gateway'
3841 })3942 4043 await assert.rejects(41- controller.renderThroughGateway({ ...request, type: 'seqdiag' }, new AbortController().signal),44+ controller.renderThroughUnit({ ...request, type: 'seqdiag' }, new AbortController().signal),4245 /network unavailable/,4346 )4447 assert.deepEqual(endpoints, ['https://seqdiag.render.diagram.zip/v1/svg'])4548 })4649 47-test('keeps the compatibility gateway fallback for a residual engine', async () => {48- const endpoints = []49- const controller = controllerWith(async endpoint => {50- endpoints.push(endpoint)51- return endpoints.length === 152- ? new Response('unavailable', { status: 503 })53- : new Response('<svg></svg>', { status: 200 })54- })55-56- const response = await controller.renderThroughGateway(57- { ...request, type: 'd2' },58- new AbortController().signal,59- )60-61- assert.equal(response.status, 200)62- assert.deepEqual(endpoints, [63- 'https://d2.render.diagram.zip/v1/svg',64- '/render/v1/svg',65- ])66-})67-68-test('does not send a GraphViz-family failure to the gateway', async () => {50+test('surfaces a GraphViz-family renderer failure', async () => {6951 const endpoints = []7052 const controller = controllerWith(async endpoint => {7153 endpoints.push(endpoint)
@@ -73,20 +55,20 @@ test('does not send a GraphViz-family failure to the gateway', async () => {
7355 })7456 7557 await assert.rejects(76- controller.renderThroughGateway({ ...request, type: 'erd' }, new AbortController().signal),77- /erd renderer unit is unavailable/,58+ controller.renderThroughUnit({ ...request, type: 'erd' }, new AbortController().signal),59+ /unavailable/,7860 )7961 assert.deepEqual(endpoints, ['https://erd.render.diagram.zip/v1/svg'])8062 })8163 82-test('does not send a failed client renderer to the gateway', async () => {83- let gatewayCalls = 064+test('does not send a failed client renderer to an HTTP unit', async () => {65+ let unitCalls = 08466 const statuses = []8567 const controller = {8668 abortController: null,8769 stage: { style: { setProperty() {} } },8870 setStatus(message, state) { statuses.push({ message, state }) },89- async renderThroughGateway() { gatewayCalls += 1 },71+ async renderThroughUnit() { unitCalls += 1 },9072 }9173 9274 await PreviewController.prototype.performRender.call(controller, {
@@ -99,18 +81,18 @@ test('does not send a failed client renderer to the gateway', async () => {
9981 requestNumber: 1,10082 })10183 102- assert.equal(gatewayCalls, 0)84+ assert.equal(unitCalls, 0)10385 assert.equal(statuses.at(-1).state, 'error')10486 })10587 106-test('does not send a failed diagrams.net renderer to the gateway', async () => {107- let gatewayCalls = 088+test('does not send a failed diagrams.net renderer to an HTTP unit', async () => {89+ let unitCalls = 010890 const statuses = []10991 const controller = {11092 abortController: null,11193 stage: { style: { setProperty() {} } },11294 setStatus(message, state) { statuses.push({ message, state }) },113- async renderThroughGateway() { gatewayCalls += 1 },95+ async renderThroughUnit() { unitCalls += 1 },11496 }11597 11698 await PreviewController.prototype.performRender.call(controller, {
@@ -123,6 +105,6 @@ test('does not send a failed diagrams.net renderer to the gateway', async () =>
123105 requestNumber: 1,124106 })125107 126- assert.equal(gatewayCalls, 0)108+ assert.equal(unitCalls, 0)127109 assert.equal(statuses.at(-1).state, 'error')128110 })
M diagramzip/test/renderer-units.test.js +16 -17
@@ -1,9 +1,11 @@
11 import assert from 'node:assert/strict'22 import test from 'node:test'3-import { HTTP_RENDERER_UNITS, httpRendererUnitFor, requiresDedicatedRenderer } from '../src/renderer-units.js'3+import { CLIENT_RENDERER_IDS } from '../src/client-renderers.js'4+import { diagramTypes } from '../src/diagram-types.js'5+import { HTTP_RENDERER_UNITS, httpRendererUnitFor } from '../src/renderer-units.js'46 5-test('gives each HTTP renderer its own origin', () => {6- assert.equal(Object.keys(HTTP_RENDERER_UNITS).length, 26)7+test('gives each HTTP renderer its own subdomain', () => {8+ assert.equal(Object.keys(HTTP_RENDERER_UNITS).length, 25)79 for (const [engine, endpoint] of Object.entries(HTTP_RENDERER_UNITS)) {810 assert.equal(new URL(endpoint).hostname, `${engine}.render.diagram.zip`)911 assert.equal(new URL(endpoint).pathname, '/v1/svg')
@@ -19,18 +21,15 @@ test('does not route client renderers through an HTTP unit', () => {
1921 assert.equal(httpRendererUnitFor('diagramsnet'), null)2022 })2123 22-test('requires every migrated engine to stay on its dedicated runtime', () => {23- for (const engine of [24- 'mermaid', 'bpmn', 'excalidraw', 'diagramsnet',25- 'plantuml', 'c4plantuml',26- 'bytefield', 'nomnoml', 'vega', 'vegalite', 'wavedrom',27- 'blockdiag', 'seqdiag', 'actdiag', 'nwdiag', 'packetdiag', 'rackdiag',28- 'graphviz', 'erd', 'dbml', 'pikchr', 'svgbob', 'ditaa', 'wireviz',29- 'structurizr', 'symbolator',30- ]) {31- assert.equal(requiresDedicatedRenderer(engine), true)32- }33- assert.equal(requiresDedicatedRenderer('plantuml'), true)34- assert.equal(requiresDedicatedRenderer('graphviz'), true)35- assert.equal(requiresDedicatedRenderer('erd'), true)24+test('does not invent an endpoint for an unknown renderer', () => {25+ assert.equal(httpRendererUnitFor('unknown'), null)26+})27+28+test('assigns exactly one final renderer path to every diagram type', () => {29+ const http = Object.keys(HTTP_RENDERER_UNITS)30+ const client = [...CLIENT_RENDERER_IDS]31+ assert.equal(http.length, 25)32+ assert.equal(client.length, 5)33+ assert.deepEqual(new Set([...http, ...client]), new Set(diagramTypes.map(({ id }) => id)))34+ assert.equal(http.some(engine => client.includes(engine)), false)3635 })
M diagramzip/vite.config.js +0 -1
M docs/refactor-engines.md +177 -587
@@ -1,653 +1,243 @@
1-# Refactoring diagram engines for diagram.zip v21+# Renderer extraction for diagram.zip22 33 ## Status44 5-This document proposes a TypeScript-first `diagram.zip` v2 targeting Cloudflare. “TypeScript-first” describes the application, control plane, shared contracts, and most renderers; it does not prohibit a purpose-built Python Worker when that lets us run a maintained upstream renderer directly. This is a migration plan, not a commitment to reproduce the current Kroki process topology at the edge.5+The repository assigns a final renderer path to all 30 catalog engines. The application does not contain a Fly.io render fallback. The catalog Worker does not contain a render proxy.66 7-The first target is SVG. PNG conversion can be added later as a shared SVG-to-PNG stage. PDF, JPEG, and renderer-specific binary formats are not part of the initial Cloudflare target.7+Production completion requires these final checks:88 9-The product constraints are:9+1. Deploy the UMLet Worker.10+2. Deploy the TikZ client unit.11+3. Deploy the catalog Worker without the render route.12+4. Deploy the application and documentation.13+5. Run the 30-engine production smoke test.1014 11-- no account or login requirement;12-- short, stable aliases identify diagrams without embedding their contents in the URL;13-- possession of an unguessable write capability authorizes updates; locked diagrams add a browser-held password-derived key;14-- D1 stores alias metadata and content/render pointers, while R2 stores immutable content-addressed source bundles and render blobs;15-- static links work without opening the editor;16-- diagram metadata and presentation settings survive in static SVGs;17-- renderer-defined colors and styles remain intact;18-- live editing should not wait on a server when an official browser renderer exists.15+Pixel comparison is not a completion gate. Structural coverage is the completion gate. Each known loss must be visible in the catalog.1916 20-## Decision17+## Product requirements2118 22-Do not translate each existing sidecar into one Worker. The current containers describe deployment history, not the ideal responsibility boundaries for a browser-and-edge product.19+- The product does not require an account.20+- Each diagram type remains available.21+- Each engine has one selected renderer path.22+- A renderer failure must not select another renderer.23+- A client renderer must run in a script-only sandbox.24+- An HTTP renderer must accept only its assigned engine hostname.25+- A render result must use the standard SVG viewer contract.26+- A renderer must not add engine-specific application UI.27+- A renderer must not load remote or filesystem resources unless the unit contract permits them.28+- A saved render must record the unit, build, and pipeline.2329 24-For each diagram family, choose the closest maintained rendering path in this order:30+## Runtime selection2531 26-1. Render in the browser with the official implementation.27-2. Render in a Worker with a JavaScript/TypeScript library.28-3. Run a compatible upstream library in its supported Worker language.29-4. Render in a Worker with precompiled WebAssembly.30-5. Port a small, well-defined upstream parser or renderer when the original runtime is unsuitable.31-6. Use a narrowly scoped compatibility unit only until that engine's replacement32- is live, then remove its origin path instead of retaining a silent fallback.32+Use the closest maintained implementation in this order:3333 34-Workers should own routing, decoding, request validation, SVG sanitization, presentation, caching, and the edge-native engines. The browser should own interactive rendering wherever practical. Fly.io or Cloudflare Containers should temporarily retain engines whose real responsibility is a native toolchain, a JVM, an unproven WebAssembly port, or TeX. Python alone is no longer a reason to require an origin now that Cloudflare has Python Workers, but each dependency still needs a compatibility and performance spike.34+1. Use the official browser implementation.35+2. Use a JavaScript or TypeScript library in a Worker.36+3. Use the maintained Python library in a Python Worker.37+4. Use a precompiled WebAssembly module in a Worker.38+5. Translate a bounded source language into a migrated engine.3539 36-This gives v2 a coherent product during the extraction: all engines remain37-available through a runtime adapter, while each completed cutover permanently38-shrinks the set that can reach the origin.40+Do not keep a compatibility service after an engine has a final path.3941 40-## Separate the four product responsibilities41-42-The current API shape makes one renderer endpoint serve several different jobs. V2 should distinguish them explicitly.43-44-### Interactive preview45-46-The editor needs fast, cancellable feedback. Prefer an official renderer running locally in a sandboxed browser frame. If the renderer is edge-native, call a Worker. Reach the origin only for engines that have no viable browser or Worker implementation.47-48-### Persisted editable state49-50-An alias such as `/d/7Mpk2q` resolves to immutable content and render objects. An open diagram's source and metadata are stored server-side; a locked diagram stores only browser-encrypted content, metadata, and renders. The read URL contains the alias only. An unguessable write capability remains in the URL fragment (and local storage on the editing device), so it is not sent while reading a diagram and there is no account dependency.51-52-### Durable static SVG53-54-An open alias exposes its saved, sanitized SVG at a stable route such as `/api/v1/aliases/{alias}/renders/svg`. The response resolves a D1 pointer to an immutable R2 blob and can be cached at the edge. Locked diagrams store an encrypted render blob; they can be opened and decrypted by the editor with the same password, but cannot be embedded because an image request cannot present that password. The share dialog states this restriction plainly.55-56-### Transient source render57-58-The transient gateway keeps the familiar engine/source rendering contract:42+## Final topology5943 6044 ```text61-/render/v1/svg45+diagram.zip application46+ |- client renderer frame at {engine}.render.diagram.zip47+ |- HTTP renderer at {engine}.render.diagram.zip/v1/svg48+ |- persistence Worker at diagram.zip/api/v1/*49+ `- catalog Worker at diagram.zip/render/v1/{health|catalog}6250 ```6351 64-The editor POSTs a bounded JSON request to the selected engine's dedicated65-hostname. Only engines not yet extracted may fall through the legacy gateway to66-the compatibility origin. Completed units surface their own failures and are67-structurally barred from that fallback. The result is transient until a68-successful alias save uploads the immutable content-addressed render blob.69-70-## Proposed runtime topology71-72-```text73-browser74- |- client renderer adapters75- |- persistence Worker -> D1 aliases/pointers -> R2 immutable blobs76- |- {engine}.render.diagram.zip -> dependency-grouped renderer units77- `- /render/v1/svg gateway -> residual-only compatibility origin78-```79-80-Each engine owns a public renderer hostname and knows only its own contract.81-Engines with the same dependencies may share one Worker deployment behind82-multiple hostnames. Grouping by dependency and failure boundary avoids both83-one-Worker-per-engine sprawl and a single bundle containing every dependency.84-85-Suggested deployable units:52+The catalog Worker does not render diagrams. `POST /render/v1/svg` returns `404`.8653 87-- `diagram-zip-web`: UI assets, alias flows, client-side encryption, and browser renderer adapters.88-- `diagram-zip-persistence`: D1 alias metadata and R2 content-addressed source/render storage.89-- `diagram-zip-render`: the shared 30-engine catalog and a temporary gateway90- that accepts only residual origin engines.91-- dependency-grouped JavaScript units: Bytefield, Nomnoml, WaveDrom, Vega,92- and Vega-Lite, each reached only through its engine hostname.93-- `graphviz-family`: GraphViz and its in-process ERD-to-DOT translator. WireViz has a separate Python translation unit and calls this family through a service binding.94-- additional dependency-grouped WebAssembly units for D2, Pikchr, Svgbob, and GoAT only after their separate compatibility spikes.95-- `blockdiag-family`: the upstream BlockDiag suite, isolated because Pyodide, Pillow, fonts, and its shared renderer registry form one dependency family.96-- `wireviz`: a separate Python YAML-to-DOT translator that depends on PyYAML and WireViz's model, then calls `graphviz-family` through a service binding.97-- `diagram-zip-render-origin`: the remaining native/JVM/TeX renderers, initially consolidated in one Fly app or equivalent container group.98-99-Static assets should not be included in Worker script bundles. Before deploying, validate each bundle against the current Worker compressed-size, uncompressed-size, memory, CPU, and startup limits rather than relying on values copied into this design document.54+Each engine has a public renderer hostname. Engines can share one Worker deployment when they have the same dependencies and failure boundary. The request body does not select an engine.10055 10156 ## Engine inventory10257 103-### JavaScript already bundled behind executable wrappers104-105-These engines already call JavaScript libraries. Their current process boundary is packaging, not an essential part of rendering:106-107-| Catalog type | Existing library/path | V2 responsibility | Confidence |108-| --- | --- | --- | --- |109-| Bytefield | `bytefield-svg` in `bytefield/index.js` | Direct Worker library call | Medium; bundle and runtime compatibility spike |110-| DBML | `@softwaretechnik/dbml-renderer` in `dbml/index.js` | Direct Worker library call | Medium; bundle and runtime compatibility spike |111-| Nomnoml | `nomnoml.renderSvg()` in `nomnoml/index.js` | Direct Worker library call | High |112-| WaveDrom | JSON5 + `wavedrom.renderAny()` + ONML serialization | Direct Worker library call | High |113-| Vega | `vega.View(...).toSVG()` in the Deno executable | Worker library call with `vega-interpreter` | Medium-high |114-| Vega-Lite | Compile to Vega, then the same SVG path | Worker library call with `vega-interpreter` | Medium-high |115-116-Standard Vega expressions use dynamic function generation, which is not allowed in Workers. The Worker implementation must use `vega-interpreter` and must define a strict policy for URL-based data loading. SVG is the initial output; Canvas-backed PNG/PDF is a separate concern.117-118-### TypeScript adapters around WebAssembly119-120-| Catalog type | V2 renderer | Preview | Static SVG | Confidence and caveat |121-| --- | --- | --- | --- | --- |122-| GraphViz | `@viz-js/viz` | Browser or edge | Worker | High |123-| D2 | Official D2 WebAssembly | Browser | Worker adapter blocked | The 0.1.33 package initializes as precompiled Wasm in Workerd, but both Dagre and ELK request prohibited runtime code generation; it also reports D2 `v0.7.0-HEAD` versus the Docker `v0.7.1` reference |124-| Pikchr | Existing C/WebAssembly build | Browser or edge | Worker | High |125-| Svgbob | Existing Rust/WebAssembly build | Browser or edge | Worker | Medium; parity-test fonts, layout, and SVG structure |126-| GoAT | Pinned GoAT 0.5.1 via TinyGo | Browser or edge | Worker | Proven against the Docker reference byte-for-byte; a four-iterator slice adaptation removes the goroutine runtime from the precompiled module |127-128-Cloudflare Workers require WebAssembly modules to be compiled ahead of time and imported with the bundle. Adapters must not depend on runtime compilation, browser worker threads, or shared-memory threading.129-130-### Official client-side renderers131-132-These engines should primarily stop being live-preview server responsibilities.133-134-| Catalog type | Browser implementation | Static SVG plan | Caveat |135-| --- | --- | --- | --- |136-| Mermaid | Official `mermaid.render()` | Worker/browser-render service initially, then a compatible edge adapter if justified | Use the official renderer; alternative Mermaid-like renderers have syntax and visual differences |137-| PlantUML | Official TeaVM/browser implementation using Viz.js | Dependency-grouped edge-Wasm Worker | The pinned core runs with a bounded DOM shim and a precompiled GraphViz module; remote, filesystem, and arbitrary standard-library includes are disabled |138-| C4-PlantUML | Bounded C4-to-ordinary-PlantUML lowering | Shared PlantUML edge-Wasm Worker | Core people, systems, containers, components, boundaries, relationships, tags, technology labels, and palette are retained; advanced macros and sprites fail explicitly |139-| BPMN | `bpmn-js`: import XML and export SVG | Frozen SVG or browser-render service | No backend renderer is required for normal preview/export |140-| Excalidraw | Official `exportToSvg()` | Frozen SVG or browser-render service | Lazy-load fonts and assets; preserve Excalidraw semantics |141-| diagrams.net | Pinned diagrams.net 29.6.1 export application in a sandboxed iframe | Existing origin fallback initially | The official export application is browser/DOM-bound; keep its immutable asset tree isolated from the core application bundle |142-| UMLet | UMLetino/GWT web implementation | Origin initially | Requires an adapter and parity spike before removing the fallback |143-144-Untrusted source must be rendered in a sandboxed iframe, not directly in the application document. The frame should receive source by `postMessage`, render with self-hosted immutable assets, block external requests in secure mode, serialize the result, and return it to the parent. The parent should sanitize the SVG and display it through a Blob-backed image rather than inserting raw renderer markup into the application DOM.145-146-### Reuse the upstream ERD and BlockDiag implementations147-148-ERD and the `*Diag` family should not remain origin responsibilities merely because their current implementations are Haskell or Python. The first choice should be to preserve and reuse upstream behavior, not to translate their languages into a merely similar renderer.149-150-#### What Kroki currently does151-152-Kroki does not contain a separate ERD or BlockDiag renderer:153-154-- `Erd.java` invokes the upstream `erd` executable with `--fmt=<format>`.155-- `Blockdiag.java` invokes one bundled executable with `--module=blockdiag|seqdiag|actdiag|nwdiag|packetdiag|rackdiag`.156-- The current Docker image's `erd` binary reports 0.2.1.0; the extraction tests use that containerized binary as the behavior reference.157-- The server image downloads `yuzutech/blockdiag` 3.4.2, a maintained packaging/compatibility fork of the Apache-licensed BlockDiag core. Its release workflow installs the upstream SeqDiag, ActDiag, and NwDiag packages and compiles all six commands into one Nuitka binary.158-159-The existing Java code is therefore a process adapter. V2 can remove the Java/subprocess/container boundary while retaining the upstream parsers, models, layout, and SVG behavior.160-161-#### ERD: port the small upstream seam, keep GraphViz162-163-[BurntSushi/erd](https://github.com/BurntSushi/erd) is Unlicense-licensed and already delegates visualization to GraphViz. The useful source seams are compact:164-165-| Upstream module | Approximate size | Responsibility to preserve |166-| --- | ---: | --- |167-| `src/Text/Parsec/Erd/Parser.hs` | 162 lines | Entities, attributes, relations, directives, quoted identifiers, comments, and source errors |168-| `src/Erd/ER.hs` | 201 lines | Domain model, option validation/defaults, PK/FK flags, and four cardinalities |169-| `src/Erd/Parse.hs` | 88 lines | AST-to-model conversion, ordering, defaults, and relationship validation |170-| `app/Main.hs` plus `src/Erd/Render.hs` | roughly 180 relevant lines | DOT graph construction, HTML-table entity labels, UML/IE cardinalities, and GraphViz attributes |171-172-The v2 ERD path should therefore be:173-174-```text175-upstream-compatible `er` parser176- -> upstream-compatible ER model/defaults177- -> typed DOT builder178- -> GraphViz WASM179- -> sanitize/decorate SVG180-```181-182-This is a source-guided TypeScript port, not a new ERD design. Port the upstream tests and examples first. Use a typed DOT builder or strict escaping instead of concatenating user strings into DOT. Preserve the current Kroki contract: source directives are accepted, but arbitrary filesystem configuration is not exposed. Mermaid ER can remain an optional future presentation backend; it should not be the compatibility implementation.183-184-#### BlockDiag family: run upstream Python in a Worker first185-186-The BlockDiag organization publishes four Apache-2.0 projects:187-188-- `blockdiag`, containing the shared parser, model, layout, shape renderers, and SVG backend;189-- `seqdiag`;190-- `actdiag`;191-- `nwdiag`, which also contains `packetdiag` and `rackdiag`.192-193-The packages already have the separation a Worker adapter needs:194-195-```text196-parser.py197- -> builder.py + elements.py198- -> metrics.py (layout and routing)199- -> drawer.py + node renderers200- -> imagedraw/svg.py201- -> SVG string202-```203-204-The production packages are not tiny—approximately 8.5K Python source lines for BlockDiag core, 1.7K for SeqDiag, 1.0K for ActDiag, and 3.0K for the NwDiag/PacketDiag/RackDiag package, excluding tests. Reimplementing that behavior in TypeScript before attempting direct reuse would create unnecessary compatibility risk.205-206-A dedicated Python Worker is plausible:207-208-- Python Workers run CPython through Pyodide and snapshot imported modules at deployment to reduce cold-start initialization.209-- The BlockDiag-family packages, `funcparserlib`, and `webcolors` are pure Python.210-- SVG output is produced directly; it does not require GraphViz or a subprocess.211-- Pillow supplies font metrics, and Pillow is included in current Pyodide builds.212-- ReportLab is optional and can be omitted because v2 is SVG-first.213-- The Kroki-maintained BlockDiag fork already changed the SVG path to return a string when no output filename is supplied and already supports selecting the six modules from one entry point.214-215-Research smoke check on 2026-08-20: the BlockDiag 3.4.2 fork and the source checkouts of SeqDiag, ActDiag, and NwDiag 3.0.0 were installed into a clean CPython 3.14 virtual environment without the Nuitka bundle. The repository's seven-line-to-medium examples were passed through each source-installed module in SVG mode:216-217-| Module | Exit | Parsed SVG | Output size |218-| --- | ---: | --- | ---: |219-| BlockDiag | 0 | yes | 3,675 bytes |220-| SeqDiag | 0 | yes | 4,013 bytes |221-| ActDiag | 0 | yes | 3,427 bytes |222-| NwDiag | 0 | yes | 5,260 bytes |223-| PacketDiag | 0 | yes | 13,314 bytes |224-| RackDiag | 0 | yes | 5,741 bytes |225-226-This proves the source packages do not depend on Kroki's compiled bundle for SVG rendering. It does not prove Pyodide compatibility or acceptable Worker performance; those remain the purpose of the Cloudflare spike.227-228-The Worker should import the library rather than emulate its command line. Add a narrow entry point such as:229-230-```py231-def render_svg(source: str, module: str, options: dict[str, object]) -> str:232- parsed = module.parser.parse_string(source)233- diagram = module.builder.ScreenNodeBuilder.build(parsed, options)234- drawer = module.drawer.DiagramDraw("SVG", diagram, filename=None, ...)235- drawer.draw()236- return drawer.save()237-```238-239-That sketch is illustrative; the adapter must construct the upstream option and font-map objects correctly rather than passing an arbitrary dictionary into APIs that do not accept it.240-241-The Python Worker spike must settle these issues before this path is declared production-ready:242-243-- Pin and vendor the BlockDiag 3.4.2 compatibility fork plus the 3.0.0 SeqDiag, ActDiag, and NwDiag-family sources. Do not resolve unpinned PyPI packages at runtime.244-- Bundle the same known font used by the current service and verify Pillow can load it in Pyodide. Font metrics affect layout and are part of output compatibility.245-- Replace dynamic package-entry-point discovery with a static allowlist of SVG drawers, node renderers, and the six known modules.246-- Disable filesystem paths and remote image loading. Upstream can open URLs synchronously and cache temporary files; that is both incompatible with the Worker security model and outside diagram.zip's no-surprise network policy.247-- Remove ReportLab, PNG, antialias, config-file, and CLI-only paths from the deployed package graph. Keep the upstream source behavior for SVG rather than carrying unused output stacks.248-- Audit module-level caches and registries for isolate concurrency. Initialization can be shared; request-specific source, diagrams, files, and output cannot.249-- Normalize parser failures into source-positioned diagram.zip errors and sanitize every returned SVG.250-- Measure compressed bundle size, snapshot/startup time, warm CPU, peak memory, and cancellation behavior for every module.251-252-The production Python Worker now proves the pinned Pyodide/Pillow package can253-render all six structural fixtures. Its cutover deliberately has no origin254-fallback: unsupported image resources fail clearly. If a future platform255-constraint invalidates this path, replace the unit explicitly with a256-TypeScript port of the upstream parser/model/layout/SVG layers rather than257-silently routing requests back to Java.258-259-#### Reuse decision260-261-| Catalog type | Primary v2 target | Current state | Later replacement if Python Workers fail |262-| --- | --- | --- | --- |263-| ERD | Upstream-guided TypeScript parser/model/DOT emitter + GraphViz WASM | Compatibility unit | None needed unless upstream parity proves unexpectedly difficult |264-| BlockDiag | Upstream Python package in `blockdiag-family` | Edge Python, no origin fallback | Port upstream layout/SVG implementation to TypeScript |265-| SeqDiag | Upstream Python package in `blockdiag-family` | Edge Python, no origin fallback | Port upstream implementation; Mermaid lowering only if explicitly accepted as non-identical |266-| ActDiag | Upstream Python package in `blockdiag-family` | Edge Python, no origin fallback | Port upstream implementation; alternative activity renderer only if explicitly accepted |267-| NwDiag | Upstream Python package in `blockdiag-family` | Edge Python, no origin fallback | Port upstream implementation; D2/GraphViz lowering is secondary |268-| PacketDiag | Upstream Python package in `blockdiag-family` | Edge Python, no origin fallback | Port its deterministic geometry to TypeScript |269-| RackDiag | Upstream Python package in `blockdiag-family` | Edge Python, no origin fallback | Port its deterministic geometry to TypeScript |270-271-Unsupported source features must fail clearly after cutover; they must not be272-silently dropped or routed back to the compatibility origin. Preserve upstream273-licenses and notices in vendored packages and document the exact upstream274-commit and local patch set used to build each Worker.275-276-### Structurizr: compile the DSL to PlantUML in TypeScript277-278-Structurizr does not need a dedicated renderer in v2. Kroki already treats it as a compiler front end for PlantUML:279-280-```text281-Structurizr DSL282- -> StructurizrDslParser283- -> Workspace model and view selection284- -> bundled theme application285- -> StructurizrPlantUMLExporter286- -> PlantUML source for the diagram or legend287- -> the normal PlantUML renderer288-```289-290-The current adapter supports six view classes: system landscape, system context, container, component, dynamic, and deployment. It selects the first view by default or the view named by `view-key`, supports `output=diagram|legend`, applies a small allowlist of bundled Structurizr themes, and then hands the generated definition to the same PlantUML command used elsewhere. The dedicated Structurizr responsibility ends before graphics rendering begins.291-292-The v2 replacement should preserve that boundary as a reusable TypeScript package:58+| Engine | Runtime | Unit or pipeline |59+| --- | --- | --- |60+| PlantUML | Worker WebAssembly | `plantuml-family` |61+| Mermaid | Client | `mermaid` |62+| GraphViz | Worker WebAssembly | `graphviz-family` |63+| D2 | Worker WebAssembly | `d2` with the bounded grid layout |64+| C4 PlantUML | Worker WebAssembly | `plantuml-family` through the C4 lowerer |65+| BlockDiag | Worker Python | `blockdiag-family` |66+| SeqDiag | Worker Python | `blockdiag-family` |67+| ActDiag | Worker Python | `blockdiag-family` |68+| NwDiag | Worker Python | `blockdiag-family` |69+| PacketDiag | Worker Python | `blockdiag-family` |70+| RackDiag | Worker Python | `blockdiag-family` |71+| BPMN | Client | `bpmn` |72+| Bytefield | Worker JavaScript | `bytefield` |73+| DBML | Worker WebAssembly | `graphviz-family,dbml,graphviz` |74+| diagrams.net | Client | `diagramsnet` |75+| Ditaa | Worker WebAssembly | `svgbob-family,svgbob` |76+| ERD | Worker WebAssembly | `graphviz-family,erd,graphviz` |77+| Excalidraw | Client | `excalidraw` |78+| GoAT | Worker WebAssembly | `goat` |79+| Nomnoml | Worker JavaScript | `nomnoml` |80+| Pikchr | Worker WebAssembly | `pikchr` |81+| Structurizr | Worker JavaScript and WebAssembly | `structurizr,plantuml-family,plantuml` |82+| Svgbob | Worker WebAssembly | `svgbob-family` |83+| Symbolator | Worker Python | `symbolator` |84+| TikZ | Client | `tikz` with the bundled TikZJax runtime |85+| UMLet | Worker JavaScript | `umlet` UXF-to-SVG translator |86+| Vega | Worker JavaScript | `vega-family` |87+| Vega-Lite | Worker JavaScript | `vega-family,vega` |88+| WaveDrom | Worker JavaScript | `wavedrom` |89+| WireViz | Worker Python and WebAssembly | `wireviz,graphviz-family,graphviz` |90+91+## Dependency groups92+93+The BlockDiag family shares Python, Pillow, fonts, plugins, and renderer registration. It uses one Worker deployment and six hostnames.94+95+The GraphViz family shares one precompiled GraphViz module. GraphViz, DBML, and ERD use the same deployment. WireViz calls this deployment through a service binding.96+97+The PlantUML family shares one PlantUML runtime. C4 PlantUML lowers a bounded C4 macro set into PlantUML.98+99+The Svgbob family shares one precompiled Svgbob module. Ditaa lowers bounded ASCII input into Svgbob input.100+101+The Vega family shares the Vega runtime. Vega-Lite compiles into Vega.102+103+Other engines use separate units because they do not share a runtime or failure boundary.104+105+## HTTP unit contract106+107+An HTTP unit provides these routes:108+109+- `GET /v1/health`110+- `GET /v1/capabilities`111+- `POST /v1/svg`112+113+The POST body has this form:293114 294115 ```ts295-interface StructurizrCompileOptions {296- viewKey?: string;297- output?: "diagram" | "legend";298- colorScheme?: "light" | "dark";299-}300-301-interface StructurizrCompileResult {302- plantuml: string;303- viewKey: string;304- viewType:305- | "system-landscape"306- | "system-context"307- | "container"308- | "component"309- | "dynamic"310- | "deployment";311- warnings: Array<{ message: string; line?: number; column?: number }>;116+interface UnitRenderRequest {117+ source: string;118+ format: "svg";119+ options: Record<string, string>;120+ metadata: {121+ title: string;122+ description: string;123+ };124+ presentation: {125+ background: string;126+ padding: number;127+ frame: boolean;128+ };312129 }313-314-declare function compileStructurizr(315- source: string,316- options?: StructurizrCompileOptions,317-): StructurizrCompileResult;318130 ```319131 320-The package should be runtime-neutral and deterministic. Browser preview can run it in a Web Worker and pass the result to the PlantUML TeaVM renderer. A Cloudflare Worker can run the same compiler for static requests and pass the generated PlantUML to the shared PlantUML compatibility origin until the static PlantUML path itself moves off origin. This removes a Structurizr-specific JVM service even before PlantUML becomes fully edge-native.321-322-#### Existing non-Java implementations are seeds, not replacements323-324-There are useful community projects, but none should be adopted as the compatibility implementation without substantial work:132+The body does not contain an engine field. The hostname selects the engine.325133 326-| Project | Useful part | Gap for diagram.zip |327-| --- | --- | --- |328-| [`structurizr-parser`](https://github.com/gerry-rohling/structurizr-parser) | MIT-licensed TypeScript lexer/parser/interpreter built with Chevrotain; already produces a Structurizr JSON-shaped workspace | Explicitly beta and incomplete; no PlantUML exporter and incomplete current DSL semantics |329-| [`structurizr-typescript`](https://github.com/ChristianEder/structurizr-typescript) | TypeScript model classes and some view/style concepts | It is a code-first model API, not a Structurizr DSL parser; its documented exclusions include dynamic diagrams |330-| [`tree-sitter-structurizr`](https://github.com/sinon/tree-sitter-structurizr) | Strong syntax grammar and editor-oriented symbol/reference analysis | Its own design explicitly avoids becoming an unofficial Structurizr runtime; useful for highlighting, not view execution |331-| [`structurizr-rs`](https://github.com/Helms-AI/structurizr-rs) | Rust parser/model and a compact C4-PlantUML exporter that may supply tests or implementation ideas | Its exporter emits C4-PlantUML rather than Structurizr PlantUML, and its current parser is not compatible with the Kroki corpus |332-333-Research spike on 2026-08-20:334-335-- `structurizr-parser` 0.4.0 built to approximately 54 KB of ESM JavaScript and its own 13 tests passed.336-- Running its lexer, parser, and interpreter against Kroki's seven Structurizr fixtures resulted in one complete pass (`bigbank.structurizr`). The basic current getting-started source, default theme placement, AWS deployment-node tags, documentation directive, and script fixture exposed unsupported or incompatible grammar paths.337-- The current `structurizr-rs` parser accepted one of the seven fixtures in the same smoke check; its PlantUML exporter is a roughly 900-line C4-PlantUML emitter and is not output-compatible with Kroki's `StructurizrPlantUMLExporter`.338-- The official Structurizr 6.2.2 source remains the conformance reference. Its Apache-2.0 Java implementation contains approximately 11.5K DSL lines, 14.3K core-model lines, and 2.4K lines in the PlantUML exporter package. Those totals include behavior diagram.zip does not need, but demonstrate that this is a semantic compiler rather than a small grammar substitution.339-340-Use `structurizr-parser` as a forked lexer/CST starting point, not as an unmodified dependency. Upgrade its dependencies, remove build-only packages from the runtime graph, and replace or extend its interpreter against the official Structurizr JSON schema and Java tests. The official Apache-2.0 parser, model, and exporter are the behavioral specification; the existing TypeScript package is an implementation accelerator.134+The response contains these identity headers:341135 342-#### Port boundary136+- `X-Diagram-Engine`137+- `X-Diagram-Unit`138+- `X-Diagram-Pipeline`139+- `X-Diagram-Renderer`140+- `X-Renderer-Build`343141 344-The first compatible package needs these layers:142+## Client unit contract345143 346-1. A line-aware lexer and parser with Structurizr's optional positional arguments, case-insensitive keywords, comments, identifiers, nested blocks, and source-positioned errors.347-2. A workspace model for people, software systems, containers, components, deployment nodes and instances, infrastructure nodes, relationships, groups, tags, properties, and the six supported view types.348-3. Identifier/reference resolution, implied relationships, include/exclude view expressions, animation steps, automatic-layout properties, and view selection.349-4. Element and relationship style cascading plus deterministic application of pinned, locally bundled themes.350-5. A source-guided TypeScript port of `StructurizrPlantUMLExporter`, including titles, boundaries, groups, sequence/collaboration handling, icons, styles, links, automatic diagram legends, and PlantUML escaping.144+A client unit provides the health route, the capabilities route, and `index.html`. The frame uses the `diagram.zip:renderer:v1` message protocol.351145 352-Do not initially implement execution-oriented or storage-oriented features that do not fit diagram.zip: plugins, scripts, component finders, filesystem includes, workspace extension, documentation, ADR imports, or arbitrary network theme/icon loading. Reject these with precise diagnostics and use the compatibility origin only during the migration window. Built-in themes and any allowed standard-library assets should be pinned into the deployment so identical static links do not change as remote content changes.146+The application sets `sandbox="allow-scripts"`. It does not set `allow-same-origin`. The frame is hidden and cannot navigate the application. The frame returns an SVG result through `postMessage`.353147 354-#### Parity and rollout148+The standard diagram.zip viewer displays the returned SVG. A client unit does not provide editor controls or a separate viewer.355149 356-Add a small Java fixture tool before writing the TypeScript exporter. For each source, view key, output mode, and color scheme, it should save the official intermediate PlantUML definition in addition to the final SVG. The TypeScript compiler then has two independent gates:150+## Presentation and SVG policy357151 358-- normalized PlantUML parity for structure, styles, labels, and escaping;359-- SVG or perceptual parity after both definitions pass through the same pinned PlantUML build.360-361-Build the corpus from Kroki's current fixtures plus the upstream Structurizr DSL and exporter tests. Cover all six supported view types, nested identifiers, relationship expressions, deployment instances, groups, custom styles, every bundled theme, diagram and legend output, missing views, and rejected unsafe directives. Ship the TypeScript path behind an engine flag; fall back only for recognized unsupported syntax, never after an arbitrary compiler exception.362-363-The resulting primary path is:152+Base rendering and presentation are separate stages:364153 365154 ```text366-Structurizr DSL367- -> @diagram-zip/structurizr (TypeScript)368- -> PlantUML definition369- -> browser PlantUML for live preview370- -> shared PlantUML static path for immutable SVG155+validate -> render base SVG -> sanitize -> decorate -> sanitize -> respond371156 ```372157 373-This is substantial compatibility work, but it is bounded and removes Structurizr from the list of engines needing its own retained JVM origin.374-375-### Residual compatibility origin376-377-| Catalog type | Reason | Potential replacement |378-| --- | --- | --- |379-| Ditaa | Java/native ASCII-art recognition behavior | A compatible TypeScript ASCII renderer after a parity corpus exists |380-| Symbolator | Python/native dependencies | Keep on origin until traffic justifies a rewrite |381-| TikZ | Full TeX toolchain | Keep on origin; it is not a reasonable Worker port |382-383-The origin is a compatibility bridge, not the target architecture for standardized diagram families. It should be consolidated for organization and operational efficiency. A separate public Fly app per renderer is not a product requirement. One application can contain grouped machines or services, with internal routing and enough isolation for the few engines that need it. Split an engine only when its resource profile, security boundary, release cadence, or failure mode warrants independent deployment.384-385-## All 30 catalog types at a glance386-387-| Type | Primary v2 path | Initial fallback |388-| --- | --- | --- |389-| PlantUML | Dependency-grouped edge WebAssembly Worker | None after cutover |390-| Mermaid | Client | Browser-render/origin |391-| GraphViz | Edge WebAssembly | Origin |392-| D2 | Client + edge WebAssembly adapter | Origin |393-| C4-PlantUML | Bounded lowering → PlantUML edge WebAssembly Worker | None after cutover |394-| BlockDiag | Upstream Python Worker | None after cutover |395-| SeqDiag | Upstream Python Worker | None after cutover |396-| ActDiag | Upstream Python Worker | None after cutover |397-| NwDiag | Upstream Python Worker | None after cutover |398-| PacketDiag | Upstream Python Worker | None after cutover |399-| RackDiag | Upstream Python Worker | None after cutover |400-| BPMN | Client | Browser-render/origin |401-| Bytefield | Edge JavaScript | Origin |402-| DBML | Upstream DBML parser/checker/DOT composer → GraphViz WebAssembly | None after cutover |403-| diagrams.net | Client | Origin |404-| Ditaa | Origin | Origin |405-| ERD | Upstream-guided TypeScript port to GraphViz WASM | Existing ERD executable |406-| Excalidraw | Client | Browser-render/origin |407-| GoAT | Dedicated precompiled WebAssembly Worker | None after cutover |408-| Nomnoml | Edge JavaScript | Origin |409-| Pikchr | Edge WebAssembly | None after cutover |410-| Structurizr | TypeScript DSL-to-PlantUML compiler; browser PlantUML preview | Existing Structurizr/PlantUML path |411-| Svgbob | Edge WebAssembly | Origin |412-| Symbolator | Origin | Origin |413-| TikZ | Origin | Origin |414-| UMLet | Client | Origin |415-| Vega | Edge JavaScript with interpreter | Origin |416-| Vega-Lite | Edge JavaScript with interpreter | Origin |417-| WaveDrom | Edge JavaScript | Origin |418-| WireViz | Upstream Python parser/model/DOT composer → GraphViz service binding | None after cutover |419-420-The first coverage milestone puts all 30 catalog types behind one contract and keeps unsupported edge engines on the origin. Its first native cohort is Bytefield, Nomnoml, WaveDrom, Vega, and Vega-Lite. DBML now retains its upstream parser/checker/DOT composer and shares the GraphViz WebAssembly runtime. GraphViz imports its WebAssembly as a precompiled Worker module, ERD lowers into that same runtime, and Pikchr, Svgbob, and GoAT have separate pinned WebAssembly units. The published D2 package is not promoted: Workerd accepts its precompiled module, but its layout engines attempt prohibited runtime code generation and its embedded version does not match the Docker reference. Seven engines can later move interactive preview into the browser: Mermaid, PlantUML, C4-PlantUML, BPMN, Excalidraw, diagrams.net, and UMLet.421-422-The upstream-reuse milestone moves all six BlockDiag-family types into one Python Worker, moves ERD to an upstream-guided TypeScript/GraphViz implementation, and preserves WireViz coverage in a dependency-isolated Python translator that reuses GraphViz through a service binding. Structurizr remains a later PlantUML translation target.423-424-## Rendering contract425-426-The application should depend on one adapter contract instead of process-specific clients:427-428-```ts429-type EngineRuntime = "edge-js" | "edge-wasm" | "edge-python" | "client" | "origin";430-431-interface RenderRequest {432- engine: EngineId;433- source: string;434- format: "svg";435- options: Record<string, string>;436-}437-438-interface RenderResult {439- body: string | Uint8Array;440- contentType: "image/svg+xml";441- engineVersion: string;442-}443-444-interface RendererAdapter {445- id: EngineId;446- runtime: EngineRuntime;447- version: string;448- render(request: RenderRequest, signal: AbortSignal): Promise<RenderResult>;449-}450-```451-452-Source-dialect compatibility is a separate interface from rendering:453-454-```ts455-interface SourceCompiler<TIntermediate, TTarget> {456- parse(source: string): TIntermediate;457- lower(intermediate: TIntermediate): TTarget;458-}459-```460-461-Keeping these contracts separate lets ERD port its upstream parser and DOT mapping without coupling them to GraphViz execution. The BlockDiag Python path uses the upstream model directly and does not need this TypeScript compiler interface. Parser errors should retain offsets into the original source; backend errors should be translated into the diagram.zip error envelope.462-463-Base rendering and presentation must remain separate:464-465-```text466-decode -> validate -> render base SVG -> sanitize -> decorate -> sanitize -> respond467-```158+The presentation stage can add a title, description, canvas background, padding, and frame. It must not replace renderer colors.468159 469-The base render cache key should include engine, renderer version, source, render-affecting options, and output format. Title, description, background, padding, and framing can be applied after the base cache so presentation variants do not repeat expensive rendering.160+The sanitizer removes scripts, event handlers, active embedded HTML, and external resources. A unit must reject unsafe source features before rendering when the underlying engine can load resources.470161 471-Do not recolor the diagram to match the application theme. Presentation may set the canvas background and padding, but renderer output remains authoritative. Dark-mode support is a renderer-capability problem and remains a TODO until it can be implemented without generic SVG color rewriting.162+## Coverage policy472163 473-## Caching and storage policy164+The migration uses structural checks. Each engine must meet these requirements:474165 475-Use the Worker Cache API for transient render responses. Cache entries are data-center-local, so the implementation tolerates misses and never relies on the cache for correctness. Keys include the full normalized render request and a renderer-build version; splitting base-render and presentation caches is a later optimization.166+- The final route or frame is available.167+- The repository fixture returns SVG or a valid client capability response.168+- The SVG has usable dimensions.169+- The response identifies the expected unit and pipeline.170+- The output does not contain prohibited active content.171+- A documented renderer feature is not silently removed.476172 477-D1 is the durable alias/control plane. R2 stores immutable, content-addressed source bundles and saved SVG/PNG render blobs. Alias updates create new objects and atomically repoint metadata; they do not overwrite content-addressed data. R2 object names are hashes, while public aliases remain short random identifiers. Locked objects are encrypted in the browser before upload. KV is not authoritative alias storage because its eventual consistency is a poor fit for compare-and-swap updates.173+The migration does not require pixel equality with the Docker image. Docker remains available for bounded reference checks. Java reference checks must run in Docker.478174 479-Cache only successful, size-bounded, sanitized outputs. Normalize errors at the edge so implementation details, internal hostnames, commands, stack traces, and raw Kroki configuration messages never reach the user.175+## Known loss policy480176 481-## Cancellation and concurrency177+Each loss belongs to one engine catalog entry. The unit capabilities response must return the same loss list.482178 483-Every adapter receives an `AbortSignal`. The browser cancels the preceding render when source, engine, or options change. The web Worker propagates cancellation through service bindings and origin fetches. Adapters should check cancellation around expensive phases where the underlying library cannot be interrupted directly.179+Examples include these losses:484180 485-Worker modules may keep immutable initialized renderer state or a concurrency-safe initialization promise at module scope. They must not put request-specific mutable state in globals. CPU-heavy adapters need per-request limits and input-size limits even when the public URL itself is within bounds.181+- D2 uses the bounded grid layout. Dagre and ELK are not available in the Worker.182+- Ditaa uses a bounded translation into Svgbob. Some Ditaa shapes and styles are not retained.183+- UMLet uses browser-independent text metrics. Unknown custom Java elements become labeled generic boxes.184+- TikZ uses the bundled TikZJax package set. It does not use a complete TeX Live installation.185+- GraphViz rejects external image and filesystem options.186+- PlantUML rejects remote includes, filesystem includes, and arbitrary theme directives.187+- Symbolator uses deterministic SVG text estimates instead of Cairo and Pango.486188 487-## Migration plan189+A loss must not trigger a request to Fly.io. A loss must not select a different engine without an explicit translation pipeline.488190 489-### Phase 0: coverage plane and smoke matrix191+## UMLet boundary490192 491-- Register all 30 catalog engines behind one runtime-neutral request and response contract.492-- Send one real repository fixture through every route and require successful, structurally valid, dimensioned SVG.493-- Sanitize every output and reject prohibited active or external content.494-- Record known feature loss per engine when encountered; do not make byte, pixel, or perceptual parity a gate for this push.495-- Measure only hard platform feasibility constraints during migration: bundle size, startup failure, runtime incompatibility, timeouts, and resource-limit violations.496-- Add focused regressions for failures observed in the product, including Pikchr image loading and Svgbob presentation padding.193+UMLet accepts UXF and returns ordinary SVG. It does not load UMLetino or a UMLet user interface.497194 498-### Phase 1: direct JavaScript engines195+The repository fixture uses these custom elements:499196 500-Move Nomnoml, WaveDrom, and Bytefield, then Vega and Vega-Lite using `vega-interpreter` and a no-network data policy. Keep DBML on the compatibility origin until its mixed-module package can be safely repackaged.197+- `com.umlet.element.custom.State`198+- `com.umlet.element.custom.InitialState`199+- `com.umlet.element.custom.FinalState`200+- `com.umlet.element.custom.HistoryState`201+- `com.umlet.element.custom.ThreeWayRelation`501202 502-### Phase 2: WebAssembly engines203+The translator handles all five elements directly. An unknown custom Java class becomes a labeled generic box. The translator does not execute custom Java code.503204 504-Move GraphViz and Pikchr, then Svgbob. Adapt D2's underlying WebAssembly directly for the edge instead of assuming its browser Web Worker wrapper will run in a Worker.205+## TikZ boundary505206 506-### Phase 3: upstream BlockDiag Python Worker207+TikZ runs in a dedicated client unit. The unit bundles the official TikZJax assets. The unit accepts source through the standard client protocol and returns ordinary SVG.507208 508-Build an SVG-only Python Worker from the pinned BlockDiag-family sources. Run509-structural fixtures across all six engines in CPython and real workerd, then510-smoke each production hostname. Document loss instead of making pixel parity a511-gate. Once the production unit passes, remove the six gateway/origin paths as512-one dependency-family cutover.209+The unit does not add a TikZ editor or viewer. The diagram.zip viewer displays the result.513210 514-### Phase 4: upstream-guided ERD port211+## Fly.io removal boundary515212 516-Port the upstream ERD grammar, model, defaults, validation, and DOT mapping to TypeScript. Import its tests and examples, compare generated DOT and SVG semantics with the containerized ERD 0.2.1.0 reference, and render through the GraphViz WebAssembly adapter. Do not broaden the language during the compatibility phase.213+The main Fly.io application can continue to serve the diagram.zip web application during a separate hosting migration. It is not a renderer dependency.517214 518-### Phase 5: client-native preview215+The renderer extraction is complete only when all of these statements are true:519216 520-Move Mermaid first because of its likely usage and mature browser API. Follow with BPMN and Excalidraw, then UMLet and diagrams.net. PlantUML/C4 now use their shared direct Worker and no longer need a browser-render fallback.217+- The application has no `/render/v1/svg` request path.218+- The catalog Worker has no `POST /render/v1/svg` implementation.219+- The repository has no origin adapter.220+- The repository has no compatibility unit.221+- The renderer catalog has no `origin` runtime.222+- All 30 engines pass the production route audit.521223 522-### Phase 6: consolidate the origin224+## Deployment and rollback523225 524-Place the residual engines behind one private compatibility service with grouped machines. Preserve independent resource limits and subprocess isolation inside the service. Remove public engine-specific applications after traffic, health checks, and rollback behavior are proven.226+Deploy each final unit before the application cutover. Then deploy the catalog Worker, application, and documentation.525227 526-### Phase 7: replace origin engines by value228+Rollback uses a prior version of the same final unit. Rollback does not restore the Fly.io render fallback.527229 528-Use production traffic and latency data to choose the remaining rewrites. WireViz is promising because GraphViz WebAssembly can absorb its layout responsibility. TikZ should remain containerized.230+## Completion checks529231 530-## Acceptance criteria232+Run these checks before completion:531233 532-- Existing source and render-affecting options work across the compatibility corpus.533-- Client-native engines make no renderer server call during normal live preview.534-- A static link renders cold without loading the editor application.535-- Title, description, background, padding, and framing survive in a saved SVG.536-- Renderer-defined colors are not overwritten by application theming.537-- Secure mode blocks scripts, event handlers, external resources, and arbitrary remote includes.538-- Superseded renders are cancelled and do not replace newer output.539-- Open diagrams persist source, metadata, and saved renders through D1 pointers and immutable R2 objects; locked diagrams persist only browser-encrypted equivalents.540-- Cache keys include the renderer version and every render-affecting option.541-- Errors use a stable product envelope and do not leak Kroki or infrastructure internals.542-- Each Worker remains within current Cloudflare bundle, startup, memory, and CPU limits.543-- Every engine has an explicit runtime and fallback; there is no silent substitution with a merely similar renderer.544-- Vendored upstream renderer code records its exact version or commit, license, local patches, and imported upstream test corpus.545-- The BlockDiag-family Worker passes structural coverage for all six hostnames,546- declares its losses, and has no gateway/origin fallback.547-- The GraphViz-family Worker passes structural GraphViz and ERD fixtures under548- real workerd, declares its version drift and unsupported asset-loading modes,549- and has no gateway/origin fallback.550-551-## Open design questions552-553-- Whether transient source renders promise renderer-version stability or always use the current renderer.554-- Whether Browser Rendering is acceptable as a temporary static-export service for client-only engines, given its latency and cost relative to saved SVG blobs.555-- What level of visual drift is acceptable when an official browser renderer and the current origin renderer use different versions or layout engines.556-- Whether Python Workers have left beta and whether the pinned Pyodide/Pillow combination meets the measured BlockDiag cold-start, memory, and CPU budget at implementation time.557-558-## Implementation status — 2026-08-20559-560-The coverage plane is implemented across dedicated renderer hostnames. Twenty-three561-of 30 catalog engines no longer depend on Fly: five execute in JavaScript562-Workers, six share the `blockdiag-family` Python Worker, GraphViz, DBML, and ERD share563-the `graphviz-family` WebAssembly Worker, PlantUML and bounded C4 share the564-`plantuml-family` WebAssembly Worker, GoAT, Pikchr, and Svgbob run in dedicated WebAssembly Workers, and Mermaid, BPMN, and Excalidraw565-render in sandboxed browser units. WireViz preserves its upstream Python parser566-and DOT composer, then calls GraphViz through an internal service binding. The567-remaining 7 engines use 7568-dependency-grouped compatibility units. Repository and production smokes require569-structurally valid SVG; pixel comparison remains intentionally deferred.570-571-The BlockDiag family is deployed from pinned vendored sources with static572-drawer/node/plugin registration, a bundled DejaVu Serif font, bounded streaming573-input, Cache API storage, SVG sanitization, and explicit remote/filesystem image574-rejection. All six production hostnames report `edge-python` and the575-`blockdiag-family` unit, and none can fall back through the gateway.576-The GraphViz family imports GraphViz 15.1.1 as a precompiled Worker module. ERD577-uses an upstream-guided TypeScript grammar/model/DOT lowering and calls the same578-in-process runtime rather than a second deployment. Both hostnames were checked579-under real workerd, including cache behavior, presentation, HTML labels and580-ports, malformed input, and unsafe image rejection. The family dry-run is about581-1.19 MB uncompressed and 0.47 MB compressed.582-583-The Pikchr unit compiles the pinned upstream C source revision into a dedicated584-precompiled Emscripten WebAssembly module. It calls the public `pikchr()` API,585-uses plaintext parser errors and bounded source input, rejects renderer options586-and assets, and frees all returned buffers. The browser fiddle's dynamic Wasm587-loader is not used; the module is statically imported by the Worker.588-589-The Svgbob unit compiles upstream 0.7.6 from its pinned commit through a590-small Rust/wasm-bindgen wrapper around the pure library API. It preserves ASCII591-whitespace, maps the six Kroki settings, uses explicit byte/resource limits,592-and removes the upstream backdrop when presentation background is applied.593-594-The GoAT unit compiles upstream 0.5.1 through a pinned TinyGo Docker image into595-a zero-import, precompiled `wasm-unknown` module. Its only source adaptation596-replaces four goroutine/channel iterators with slices in the same traversal597-order. The full repository fixture is byte-identical to the Docker renderer,598-including the light/dark media CSS, and the Worker retains GoAT's three exposed599-options while rejecting CSS color injection.600-601-The WireViz unit vendors the actual `yuzutech/WireViz` v0.3.3 release source,602-whose own runtime version is 0.3.2, and stops before external `dot` execution.603-It rejects filesystem images and raw GraphViz tweaks, bounds YAML expansion,604-and forwards generated DOT to `graphviz-family`. BOM, HTML, and PNG sidecars605-remain outside the SVG rendering contract.606-607-The same hard boundary now applies to all twenty-three migrated engines: direct608-unit or client-renderer failure is surfaced to the editor, the gateway rejects609-their engine IDs before consulting its cache or origin adapter, and every610-catalog fallback is `null`.611-612-The first feasibility findings are already reflected in routing and the loss ledger. DBML's parser/checker/DOT path is deterministically repacked without its legacy Viz.js SVG branch and shares GraphViz 15.1.1. GraphViz's published wrapper required a small vendored backend change so Wrangler could bind the binary as a precompiled module; version drift, unsupported `scale`, and the lack of an image asset loader are explicit losses rather than hidden fallbacks. D2 remains on its compatibility unit because the official Wasm package both embeds the wrong renderer version and invokes runtime code generation from its Dagre and ELK layout paths, which Workerd rejects during rendering. A future D2 extraction needs a no-eval layout build or a semantics-preserving lowering that retains nested-board animation.613-614-The PlantUML-family unit vendors the official `@plantuml/core` 1.2026.6 TeaVM615-artifact and supplies its extracted GraphViz module as a precompiled Worker616-module. The same deployment serves PlantUML and C4-PlantUML through distinct617-hostnames. C4 source is lowered to ordinary PlantUML for the documented core618-macro surface; arbitrary includes, advanced style macros, and icon sprites are619-rejected. Real workerd checks cover sequence, class, repeated rendering, the620-repository banking C4 fixture, presentation, syntax-error handling, and both621-hostname identities.622-623-The SVG compatibility boundary preserves CDATA-backed text and embedded font styles used by Ditaa, Symbolator, diagrams.net, and TikZ. Mermaid retains a narrow allowlist of XHTML label formatting inside `foreignObject`, while scripts, event handlers, external links, and resource-loading elements remain blocked. When a user selects a canvas color, known full-size white renderer backdrops are removed before the chosen background is applied; internal white diagram shapes are left intact.624-625-## Primary implementation references626-627-- [Cloudflare Workers TypeScript](https://developers.cloudflare.com/workers/languages/typescript/)628-- [Cloudflare Python Workers](https://developers.cloudflare.com/workers/languages/python/)629-- [How Python Workers run and snapshot Pyodide](https://developers.cloudflare.com/workers/languages/python/how-python-workers-work/)630-- [Packages supported in Python Workers](https://developers.cloudflare.com/workers/languages/python/packages/)631-- [Packages included with Pyodide](https://pyodide.org/en/stable/usage/packages-in-pyodide.html)632-- [Cloudflare Workers limits](https://developers.cloudflare.com/workers/platform/limits/)633-- [WebAssembly in Workers](https://developers.cloudflare.com/workers/runtime-apis/webassembly/)634-- [Cloudflare bindings and service bindings](https://developers.cloudflare.com/workers/runtime-apis/bindings/)635-- [Mermaid browser usage](https://mermaid.js.org/config/usage.html)636-- [Mermaid entity-relationship diagrams](https://mermaid.js.org/syntax/entityRelationshipDiagram.html)637-- [Mermaid sequence diagrams](https://mermaid.js.org/syntax/sequenceDiagram.html)638-- [BurntSushi ERD](https://github.com/BurntSushi/erd)639-- [BlockDiag](https://github.com/blockdiag/blockdiag)640-- [SeqDiag](https://github.com/blockdiag/seqdiag)641-- [ActDiag](https://github.com/blockdiag/actdiag)642-- [NwDiag, PacketDiag, and RackDiag](https://github.com/blockdiag/nwdiag)643-- [Kroki-maintained BlockDiag compatibility fork](https://github.com/yuzutech/blockdiag)644-- [PlantUML browser API](https://plantuml.github.io/plantuml/javadoc/net/sourceforge/plantuml/teavm/browser/PlantUMLBrowser.html)645-- [bpmn-js walkthrough](https://bpmn.io/toolkit/bpmn-js/walkthrough/)646-- [Excalidraw](https://github.com/excalidraw/excalidraw)647-- [diagrams.net](https://github.com/jgraph/drawio)648-- [Viz.js](https://github.com/mdaines/viz-js)649-- [D2 WebAssembly package](https://www.npmjs.com/package/@terrastruct/d2)650-- [Pikchr WebAssembly build](https://fossil-scm.org/home/doc/pikchrshow-wasm/www/build.wiki)651-- [Vega interpreter](https://www.npmjs.com/package/vega-interpreter)652-- [Nomnoml](https://www.npmjs.com/package/nomnoml)653-- [WaveDrom](https://www.npmjs.com/package/wavedrom)234+1. Run all renderer tests.235+2. Run all application tests.236+3. Run all documentation tests and the production build.237+4. Run Wrangler dry-runs for every Worker unit.238+5. Run build and protocol checks for every client unit.239+6. Search the application and renderer code for origin and compatibility paths.240+7. Deploy the final units.241+8. Run the 30-engine production smoke test.242+9. Confirm that `POST https://diagram.zip/render/v1/svg` returns `404`.243+10. Confirm that the documentation examples use direct units or client frames.
M server/src/main/resources/web/diagramzip/assets/index-CzBQjn0p.js +6 -2
@@ -1627,12 +1627,13 @@ Rel(bob, tandem, "Completes tasks")
16271627 +--------+--------+16281628 | Shared Tasks |16291629 | {s} |1630- +-----------------+`,d2:c,nwdiag:h,packetdiag:ee,rackdiag:g,bpmn:o.replaceAll(`Examine Situation`,`Bob Agent tests Tandem`).replaceAll(`Things OK?`,`Tests pass?`).replaceAll(`Notification Sent`,`Alice and Bob share tasks`).replaceAll(`Error Propagated`,`Alice Agent revises flow`).replaceAll(`Klaus`,`Alice`).replaceAll(`Walter`,`Bob`),bytefield:s,dbml:l,diagramsnet:u,erd:d,excalidraw:f,goat:p,nomnoml:m,pikchr:te,svgbob:_,symbolator:ne,tikz:re,umlet:ie,vega:ae,vegalite:v,wavedrom:oe,wireviz:se},st={plantuml:[`Tandem task sync`,`Alice and Bob coordinate shared tasks through their agents.`],mermaid:[`Shared task flow`,`A compact view of ideas moving through the Tandem team.`],graphviz:[`Tandem collaboration graph`,`People and agents converge on one synchronized task list.`],d2:[`Connection styles`,`D2 connection, arrowhead, shape, and animation syntax.`],c4plantuml:[`Tandem system context`,`The people and software systems surrounding Tandem.`],blockdiag:[`Tandem block flow`,`A block-oriented view of the shared task workflow.`],seqdiag:[`Tandem task sequence`,`A task moves from Alice to Bob and back through Tandem.`],actdiag:[`Tandem delivery activities`,`Work crosses Alice, Alice Agent, and Bob Agent lanes.`],nwdiag:[`Network layout`,`A sample network topology and its connected address ranges.`],packetdiag:[`TCP packet structure`,`The bit-level layout of a TCP packet header.`],rackdiag:[`Rack layout`,`A sample equipment rack rendered from rackdiag syntax.`],bpmn:[`Agent-assisted review`,`A BPMN review flow that branches on test results.`],bytefield:[`Byte field layout`,`A compact byte-oriented protocol field example.`],dbml:[`Database schema`,`Tables and relationships expressed with DBML.`],diagramsnet:[`Venn diagram`,`An overlapping-set example imported from diagrams.net.`],ditaa:[`Tandem ASCII architecture`,`An ASCII sketch becomes a rendered system diagram.`],erd:[`Data model`,`Entities and relationships in a small relational schema.`],excalidraw:[`Venn sketch`,`A hand-drawn overlapping-set diagram.`],goat:[`Component shapes`,`GoAT exercises boxes, connectors, curves, and symbols.`],nomnoml:[`Pirate class diagram`,`A playful class diagram demonstrating Nomnoml syntax.`],pikchr:[`Cardinal points`,`A diamond marks north, east, south, and west.`],structurizr:[`Tandem landscape`,`A software landscape linking people, agents, and Tandem.`],svgbob:[`Cloud network`,`An ASCII cloud connects clients and services.`],symbolator:[`Hardware component`,`A component symbol generated from interface declarations.`],tikz:[`Periodic table`,`A color-coded periodic table rendered with TikZ.`],umlet:[`UML example`,`A UMLet document rendered directly from its XML form.`],vega:[`Bar chart`,`A declarative bar chart expressed with Vega.`],vegalite:[`Discretizing scale`,`A Vega-Lite example comparing discretized values.`],wavedrom:[`Timing diagram`,`Digital signals and timing relationships rendered by WaveDrom.`],wireviz:[`Wiring harness`,`Connections, cables, and pins described with WireViz.`]};function ct(e){return ot[e]??at}function lt(e){let t=n.findIndex(t=>t.id===e),[r,i]=st[e]??[`Diagram example`,`A diagram.zip catalog example.`];return{type:e,source:ct(e),options:{},...le(Math.max(t,0),{title:r,description:i})}}function ut({search:e=globalThis.location?.search??``,coarsePointer:t=globalThis.matchMedia?.(`(pointer: coarse)`).matches??!1}={}){let n=new URLSearchParams(e).get(`editor`);return n===`textarea`||n===`monaco`?n:t?`textarea`:`monaco`}async function dt(e){let t=ut();try{return await ft(t,e)}catch(n){if(t===`textarea`)throw n;return console.warn(`Monaco Editor is unavailable; using the basic text editor.`,n),ft(`textarea`,e)}}async function ft(e,n){let r=await(e===`textarea`?await t(()=>import(`./textarea-editor-BTXrLHn4.js`),[]):await t(()=>import(`./monaco-editor-C7iaFm9N.js`),__vite__mapDeps([0,1,2,3,4,5]))).createEditor(n);return n.element.dataset.editorBackend=e,r}function pt(e,t,n,r,i){return e.set(t,{...r,type:t}),e.get(n)??i(n)}var mt=`/api/v1`,U=/^[A-Za-z0-9_-]{16}$/,ht=/^[A-Za-z0-9_-]{43}$/;function gt(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}function _t(){return gt(crypto.getRandomValues(new Uint8Array(32)))}function vt(e){return e.match(/^\/d\/([A-Za-z0-9_-]{16})\/?$/)?.[1]??null}function yt(e,t){if(!U.test(t))throw Error(`Invalid diagram alias.`);return new URL(`/d/${t}`,e).toString()}function bt(e,t,n){if(!ht.test(n))throw Error(`Invalid write capability.`);let r=new URL(yt(e,t));return r.hash=`w=${n}`,r.toString()}function xt(e,t,n=`svg`){if(!U.test(t))throw Error(`Invalid diagram alias.`);if(n!==`svg`&&n!==`png`)throw Error(`Invalid render format.`);return new URL(`${mt}/aliases/${t}/renders/${n}`,e).toString()}function St(e){return e.match(/^#w=([A-Za-z0-9_-]{43})$/)?.[1]??null}var Ct=class extends Error{constructor(e,{status:t,code:n}={}){super(e),this.status=t,this.code=n}};function wt(e){if(!e||typeof e!=`object`||typeof e.type!=`string`||typeof e.source!=`string`)throw Error(`Invalid diagram state.`);return{mode:`open`,diagram:{type:e.type,source:e.source,options:e.options??{},presentation:H(e.presentation)},metadata:V(e.meta)}}function Tt(e){if(!e||typeof e!=`object`||!U.test(e.aliasId)||!ht.test(e.contentId)||!ht.test(e.renderId)||!Number.isSafeInteger(e.revision)||e.mode!==`open`&&e.mode!==`locked`)throw new Ct(`The persistence service returned an invalid response.`,{code:`invalid_response`});let t={aliasId:e.aliasId,contentId:e.contentId,renderId:e.renderId,revision:e.revision,mode:e.mode,createdAt:e.createdAt,updatedAt:e.updatedAt};if(e.mode===`locked`){if(!e.encryptedContent||!e.encryptedMetadata||!e.keyEnvelope)throw new Ct(`The persistence service returned an invalid locked diagram.`,{code:`invalid_response`});return{...t,encryptedContent:e.encryptedContent,encryptedMetadata:e.encryptedMetadata,keyEnvelope:e.keyEnvelope}}if(!e.diagram||typeof e.diagram!=`object`)throw new Ct(`The persistence service returned an invalid open diagram.`,{code:`invalid_response`});return{...t,state:{type:e.diagram.type,source:e.diagram.source,options:e.diagram.options??{},presentation:H(e.diagram.presentation),meta:V(e.metadata)}}}var Et=class{constructor({fetchImpl:e=globalThis.fetch,origin:t=globalThis.location?.origin??`http://localhost`,apiPrefix:n=mt}={}){this.fetch=(...t)=>e(...t),this.origin=t,this.apiPrefix=n.replace(/\/$/,``)}url(e=``){return new URL(`${this.apiPrefix}/aliases${e}`,this.origin)}async request(e,t){let n=await this.fetch(e,t),r=await n.json().catch(()=>null);if(!n.ok)throw new Ct(r?.error?.message||`Persistence request failed with HTTP ${n.status}.`,{status:n.status,code:r?.error?.code});return Tt(r)}async errorFor(e){let t=await e.json().catch(()=>null);return new Ct(t?.error?.message||`Persistence request failed with HTTP ${e.status}.`,{status:e.status,code:t?.error?.code})}async createPayload(e){let t=_t();return{...await this.request(this.url(),{method:`POST`,headers:{Authorization:`Bearer ${t}`,"Content-Type":`application/json`},body:JSON.stringify(e)}),writeCapability:t}}createAlias(e){return this.createPayload(wt(e))}createLockedAlias(e){if(e?.mode!==`locked`)throw Error(`Invalid locked diagram payload.`);return this.createPayload(e)}getAlias(e){if(!U.test(e))throw Error(`Invalid diagram alias.`);return this.request(this.url(`/${e}`),{headers:{Accept:`application/json`}})}updatePayload(e,t,n,r){if(!U.test(e))throw Error(`Invalid diagram alias.`);if(!Number.isSafeInteger(n)||n<1)throw Error(`Invalid alias revision.`);if(!ht.test(r))throw Error(`Invalid write capability.`);return this.request(this.url(`/${e}`),{method:`PUT`,headers:{Accept:`application/json`,Authorization:`Bearer ${r}`,"Content-Type":`application/json`,"If-Match":`"${n}"`},body:JSON.stringify(t)})}updateAlias(e,t,n,r){return this.updatePayload(e,wt(t),n,r)}updateLockedAlias(e,t,n,r){if(t?.mode!==`locked`)throw Error(`Invalid locked diagram payload.`);return this.updatePayload(e,t,n,r)}async uploadRender({aliasId:e,renderId:t,revision:n,writeCapability:r,format:i,mode:a,render:o,renderer:s}){if(!U.test(e))throw Error(`Invalid diagram alias.`);if(!ht.test(t))throw Error(`Invalid render ID.`);if(!Number.isSafeInteger(n)||n<1)throw Error(`Invalid alias revision.`);if(!ht.test(r))throw Error(`Invalid write capability.`);if(i!==`svg`&&i!==`png`)throw Error(`Invalid render format.`);if(a!==`open`&&a!==`locked`)throw Error(`Invalid diagram mode.`);if(!s||!/^[a-z][a-z0-9-]{0,31}$/.test(s.unit)||typeof s.build!=`string`||!/^[A-Za-z0-9][A-Za-z0-9._@+-]{0,127}$/.test(s.build)||!Array.isArray(s.pipeline)||s.pipeline.length<1||s.pipeline.some(e=>!/^[a-z][a-z0-9-]{0,31}$/.test(e)))throw Error(`Invalid renderer identity.`);let c=a===`locked`?`application/json`:i===`svg`?`image/svg+xml`:`image/png`,l=a===`locked`?JSON.stringify(o):o,u=await this.fetch(this.url(`/${e}/renders/${i}`),{method:`PUT`,headers:{Authorization:`Bearer ${r}`,"Content-Type":c,"If-Match":`"${n}"`,"X-Render-Id":t,"X-Renderer-Unit":s.unit,"X-Renderer-Build":s.build,"X-Renderer-Pipeline":s.pipeline.join(`,`)},body:l});if(!u.ok)throw await this.errorFor(u)}async getEncryptedRender(e,t){if(!U.test(e))throw Error(`Invalid diagram alias.`);if(t!==`svg`&&t!==`png`)throw Error(`Invalid render format.`);let n=this.url(`/${e}/renders/${t}`);n.searchParams.set(`encrypted`,`1`);let r=await this.fetch(n,{headers:{Accept:`application/json`}});if(!r.ok)throw await this.errorFor(r);return r.json()}},Dt=6e5,Ot=new TextEncoder,kt=new TextDecoder,At=Ot.encode(`diagram.zip:content:v1`),jt=Ot.encode(`diagram.zip:metadata:v1`),Mt=Ot.encode(`diagram.zip:bundle-key:v1`);function Nt(e){if(e!==`svg`&&e!==`png`)throw Error(`Invalid render format.`);return Ot.encode(`diagram.zip:render:${e}:v1`)}function Pt(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}function Ft(e){if(typeof e!=`string`||!/^[A-Za-z0-9_-]+$/.test(e))throw Error(`Invalid encrypted diagram.`);let t=e.replaceAll(`-`,`+`).replaceAll(`_`,`/`),n=t+`=`.repeat((4-t.length%4)%4),r=atob(n),i=Uint8Array.from(r,e=>e.charCodeAt(0));if(Pt(i)!==e)throw Error(`Invalid encrypted diagram.`);return i}function It(e){return crypto.getRandomValues(new Uint8Array(e))}async function Lt(e,t){if(!(e instanceof Uint8Array)||e.byteLength!==32)throw Error(`Invalid diagram key.`);return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,t)}async function Rt(e,{iterations:t,salt:n}){if(typeof e!=`string`)throw Error(`Password is required.`);let r=await crypto.subtle.importKey(`raw`,Ot.encode(e),`PBKDF2`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`PBKDF2`,hash:`SHA-256`,iterations:t,salt:n},r,{name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`])}async function zt(e,t,n){let r=It(12),i=await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n,tagLength:128},t,e);return{v:1,alg:`A256GCM`,iv:Pt(r),ciphertext:Pt(new Uint8Array(i))}}async function Bt(e,t,n){if(!e||e.v!==1||e.alg!==`A256GCM`)throw Error(`Invalid encrypted diagram.`);let r=Ft(e.iv);if(r.byteLength!==12)throw Error(`Invalid encrypted diagram.`);let i=Ft(e.ciphertext);if(i.byteLength<16)throw Error(`Invalid encrypted diagram.`);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n,tagLength:128},t,i))}async function Vt(e,t,n){return zt(Ot.encode(JSON.stringify(e)),t,n)}async function Ht(e,t,n){return JSON.parse(kt.decode(await Bt(e,t,n)))}function Ut(e,t){if(!e||typeof e!=`object`||!r(e.type)||typeof e.source!=`string`||!e.options||typeof e.options!=`object`||Array.isArray(e.options))throw Error(`Invalid encrypted diagram.`);return{type:e.type,source:e.source,options:e.options,presentation:H(e.presentation),meta:V(t)}}async function Wt(e,t){if(typeof t!=`string`||t.length<8)throw Error(`Password must be at least 8 characters.`);let n=It(16),r={name:`PBKDF2`,hash:`SHA-256`,iterations:Dt,salt:Pt(n)};return{v:1,kdf:r,wrap:await zt(e,await Rt(t,{iterations:r.iterations,salt:n}),Mt)}}async function Gt(e,t){if(!e||e.v!==1||e.kdf?.name!==`PBKDF2`||e.kdf.hash!==`SHA-256`||!Number.isInteger(e.kdf.iterations)||e.kdf.iterations<1e5||e.kdf.iterations>5e6)throw Error(`Invalid encrypted diagram.`);let n=Ft(e.kdf.salt);if(n.byteLength!==16)throw Error(`Invalid encrypted diagram.`);let r=await Rt(t,{iterations:e.kdf.iterations,salt:n}),i=await Bt(e.wrap,r,Mt);if(i.byteLength!==32)throw Error(`Invalid encrypted diagram.`);return i}async function Kt(e,t,n){let r=Ut({type:e.type,source:e.source,options:e.options??{},presentation:e.presentation},e.meta),i=await Lt(t,[`encrypt`]);return{mode:`locked`,encryptedContent:await Vt({type:r.type,source:r.source,options:r.options,presentation:r.presentation},i,At),encryptedMetadata:await Vt(r.meta,i,jt),keyEnvelope:n}}async function qt(e,t){let n=It(32);return{bundleKey:n,payload:await Kt(e,n,await Wt(n,t))}}async function Jt(e,t){if(!e||e.mode!==`locked`)throw Error(`Invalid encrypted diagram.`);try{let n=await Gt(e.keyEnvelope,t),r=await Lt(n,[`decrypt`]),[i,a]=await Promise.all([Ht(e.encryptedContent,r,At),Ht(e.encryptedMetadata,r,jt)]);return{bundleKey:n,state:Ut(i,a)}}catch{throw Error(`Wrong password or damaged diagram.`)}}async function Yt(e,t,n){if(!(e instanceof Blob))throw Error(`Invalid rendered image.`);let r=await Lt(t,[`encrypt`]);return zt(new Uint8Array(await e.arrayBuffer()),r,Nt(n))}var Xt=`diagram.zip:renderer:v1`,Zt=2e4,Qt=Object.freeze({mermaid:Object.freeze({frameUrl:`https://mermaid.render.diagram.zip/index.html?v=1`}),bpmn:Object.freeze({frameUrl:`https://bpmn.render.diagram.zip/index.html?v=1`}),excalidraw:Object.freeze({frameUrl:`https://excalidraw.render.diagram.zip/index.html?v=3`}),diagramsnet:Object.freeze({frameUrl:`https://diagramsnet.render.diagram.zip/index.html?v=1`})});Object.freeze(Object.keys(Qt));function $t(e){return e?.name===`AbortError`?e:new DOMException(`Render superseded.`,`AbortError`)}var en=class{constructor({documentObject:e=document,windowObject:t=window,frameUrl:n}={}){this.document=e,this.window=t,this.frameUrl=n,this.frame=null,this.ready=null,this.resolveReady=null,this.rejectReady=null,this.sequence=0,this.pending=new Map,this.handleMessage=e=>this.receive(e),this.window.addEventListener(`message`,this.handleMessage)}ensureFrame(){if(this.frame)return this.ready;let e=this.document.createElement(`iframe`);return e.title=`Diagram renderer`,e.setAttribute(`sandbox`,`allow-scripts`),e.setAttribute(`aria-hidden`,`true`),e.tabIndex=-1,Object.assign(e.style,{position:`fixed`,left:`-200vw`,top:`0`,width:`1280px`,height:`800px`,border:`0`,pointerEvents:`none`,visibility:`hidden`}),this.ready=new Promise((e,t)=>{this.resolveReady=e,this.rejectReady=t}),e.addEventListener(`error`,()=>this.rejectReady?.(Error(`The client renderer could not be loaded.`)),{once:!0}),e.src=this.frameUrl,this.frame=e,this.document.body.append(e),this.ready}receive(e){if(!this.frame||e.source!==this.frame.contentWindow||e.data?.channel!==Xt)return;if(e.data.type===`ready`){this.resolveReady?.(),this.resolveReady=null,this.rejectReady=null;return}if(e.data.type!==`result`)return;let t=this.pending.get(e.data.requestId);t&&(this.pending.delete(e.data.requestId),t.finish(),e.data.ok&&typeof e.data.svg==`string`?t.resolve({body:e.data.svg,version:e.data.version,build:e.data.build,pipeline:e.data.pipeline,runtime:`client`}):t.reject(Error(e.data.error||`Client rendering failed.`)))}async render(e,t,n){let r;try{await Promise.race([this.ensureFrame(),new Promise((e,t)=>{r=setTimeout(()=>t(Error(`The client renderer timed out while loading.`)),Zt)})])}finally{clearTimeout(r)}if(n.aborted)throw $t(n.reason);let i=`${Date.now().toString(36)}-${++this.sequence}`;return new Promise((r,a)=>{let o=setTimeout(()=>{this.pending.delete(i),n.removeEventListener(`abort`,s),a(Error(`The client renderer timed out.`))},Zt),s=()=>{this.pending.delete(i),clearTimeout(o),a($t(n.reason))};n.addEventListener(`abort`,s,{once:!0}),this.pending.set(i,{resolve:r,reject:a,finish:()=>{clearTimeout(o),n.removeEventListener(`abort`,s)}}),this.frame.contentWindow.postMessage({channel:Xt,type:`render`,requestId:i,engine:e,source:t},`*`)})}},tn=new Map;function nn(e){let t=Qt[e];if(!t)return null;let n=tn.get(t.frameUrl);return n||(n=new en({frameUrl:t.frameUrl}),tn.set(t.frameUrl,n)),{id:e,runtime:`client`,render:({source:t},r)=>n.render(e,t,r)}}var rn=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CHAR=` 1630+ +-----------------+`,d2:c,nwdiag:h,packetdiag:ee,rackdiag:g,bpmn:o.replaceAll(`Examine Situation`,`Bob Agent tests Tandem`).replaceAll(`Things OK?`,`Tests pass?`).replaceAll(`Notification Sent`,`Alice and Bob share tasks`).replaceAll(`Error Propagated`,`Alice Agent revises flow`).replaceAll(`Klaus`,`Alice`).replaceAll(`Walter`,`Bob`),bytefield:s,dbml:l,diagramsnet:u,erd:d,excalidraw:f,goat:p,nomnoml:m,pikchr:te,svgbob:_,symbolator:ne,tikz:re,umlet:ie,vega:ae,vegalite:v,wavedrom:oe,wireviz:se},st={plantuml:[`Tandem task sync`,`Alice and Bob coordinate shared tasks through their agents.`],mermaid:[`Shared task flow`,`A compact view of ideas moving through the Tandem team.`],graphviz:[`Tandem collaboration graph`,`People and agents converge on one synchronized task list.`],d2:[`Connection styles`,`D2 connection, arrowhead, shape, and animation syntax.`],c4plantuml:[`Tandem system context`,`The people and software systems surrounding Tandem.`],blockdiag:[`Tandem block flow`,`A block-oriented view of the shared task workflow.`],seqdiag:[`Tandem task sequence`,`A task moves from Alice to Bob and back through Tandem.`],actdiag:[`Tandem delivery activities`,`Work crosses Alice, Alice Agent, and Bob Agent lanes.`],nwdiag:[`Network layout`,`A sample network topology and its connected address ranges.`],packetdiag:[`TCP packet structure`,`The bit-level layout of a TCP packet header.`],rackdiag:[`Rack layout`,`A sample equipment rack rendered from rackdiag syntax.`],bpmn:[`Agent-assisted review`,`A BPMN review flow that branches on test results.`],bytefield:[`Byte field layout`,`A compact byte-oriented protocol field example.`],dbml:[`Database schema`,`Tables and relationships expressed with DBML.`],diagramsnet:[`Venn diagram`,`An overlapping-set example imported from diagrams.net.`],ditaa:[`Tandem ASCII architecture`,`An ASCII sketch becomes a rendered system diagram.`],erd:[`Data model`,`Entities and relationships in a small relational schema.`],excalidraw:[`Venn sketch`,`A hand-drawn overlapping-set diagram.`],goat:[`Component shapes`,`GoAT exercises boxes, connectors, curves, and symbols.`],nomnoml:[`Pirate class diagram`,`A playful class diagram demonstrating Nomnoml syntax.`],pikchr:[`Cardinal points`,`A diamond marks north, east, south, and west.`],structurizr:[`Tandem landscape`,`A software landscape linking people, agents, and Tandem.`],svgbob:[`Cloud network`,`An ASCII cloud connects clients and services.`],symbolator:[`Hardware component`,`A component symbol generated from interface declarations.`],tikz:[`Periodic table`,`A color-coded periodic table rendered with TikZ.`],umlet:[`UML example`,`A UMLet document rendered directly from its XML form.`],vega:[`Bar chart`,`A declarative bar chart expressed with Vega.`],vegalite:[`Discretizing scale`,`A Vega-Lite example comparing discretized values.`],wavedrom:[`Timing diagram`,`Digital signals and timing relationships rendered by WaveDrom.`],wireviz:[`Wiring harness`,`Connections, cables, and pins described with WireViz.`]};function ct(e){return ot[e]??at}function lt(e){let t=n.findIndex(t=>t.id===e),[r,i]=st[e]??[`Diagram example`,`A diagram.zip catalog example.`];return{type:e,source:ct(e),options:{},...le(Math.max(t,0),{title:r,description:i})}}function ut({search:e=globalThis.location?.search??``,coarsePointer:t=globalThis.matchMedia?.(`(pointer: coarse)`).matches??!1}={}){let n=new URLSearchParams(e).get(`editor`);return n===`textarea`||n===`monaco`?n:t?`textarea`:`monaco`}async function dt(e){let t=ut();try{return await ft(t,e)}catch(n){if(t===`textarea`)throw n;return console.warn(`Monaco Editor is unavailable; using the basic text editor.`,n),ft(`textarea`,e)}}async function ft(e,n){let r=await(e===`textarea`?await t(()=>import(`./textarea-editor-BTXrLHn4.js`),[]):await t(()=>import(`./monaco-editor-C7iaFm9N.js`),__vite__mapDeps([0,1,2,3,4,5]))).createEditor(n);return n.element.dataset.editorBackend=e,r}function pt(e,t,n,r,i){return e.set(t,{...r,type:t}),e.get(n)??i(n)}var mt=`/api/v1`,U=/^[A-Za-z0-9_-]{16}$/,ht=/^[A-Za-z0-9_-]{43}$/;function gt(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}function _t(){return gt(crypto.getRandomValues(new Uint8Array(32)))}function vt(e){return e.match(/^\/d\/([A-Za-z0-9_-]{16})\/?$/)?.[1]??null}function yt(e,t){if(!U.test(t))throw Error(`Invalid diagram alias.`);return new URL(`/d/${t}`,e).toString()}function bt(e,t,n){if(!ht.test(n))throw Error(`Invalid write capability.`);let r=new URL(yt(e,t));return r.hash=`w=${n}`,r.toString()}function xt(e,t,n=`svg`){if(!U.test(t))throw Error(`Invalid diagram alias.`);if(n!==`svg`&&n!==`png`)throw Error(`Invalid render format.`);return new URL(`${mt}/aliases/${t}/renders/${n}`,e).toString()}function St(e){return e.match(/^#w=([A-Za-z0-9_-]{43})$/)?.[1]??null}var Ct=class extends Error{constructor(e,{status:t,code:n}={}){super(e),this.status=t,this.code=n}};function wt(e){if(!e||typeof e!=`object`||typeof e.type!=`string`||typeof e.source!=`string`)throw Error(`Invalid diagram state.`);return{mode:`open`,diagram:{type:e.type,source:e.source,options:e.options??{},presentation:H(e.presentation)},metadata:V(e.meta)}}function Tt(e){if(!e||typeof e!=`object`||!U.test(e.aliasId)||!ht.test(e.contentId)||!ht.test(e.renderId)||!Number.isSafeInteger(e.revision)||e.mode!==`open`&&e.mode!==`locked`)throw new Ct(`The persistence service returned an invalid response.`,{code:`invalid_response`});let t={aliasId:e.aliasId,contentId:e.contentId,renderId:e.renderId,revision:e.revision,mode:e.mode,createdAt:e.createdAt,updatedAt:e.updatedAt};if(e.mode===`locked`){if(!e.encryptedContent||!e.encryptedMetadata||!e.keyEnvelope)throw new Ct(`The persistence service returned an invalid locked diagram.`,{code:`invalid_response`});return{...t,encryptedContent:e.encryptedContent,encryptedMetadata:e.encryptedMetadata,keyEnvelope:e.keyEnvelope}}if(!e.diagram||typeof e.diagram!=`object`)throw new Ct(`The persistence service returned an invalid open diagram.`,{code:`invalid_response`});return{...t,state:{type:e.diagram.type,source:e.diagram.source,options:e.diagram.options??{},presentation:H(e.diagram.presentation),meta:V(e.metadata)}}}var Et=class{constructor({fetchImpl:e=globalThis.fetch,origin:t=globalThis.location?.origin??`http://localhost`,apiPrefix:n=mt}={}){this.fetch=(...t)=>e(...t),this.origin=t,this.apiPrefix=n.replace(/\/$/,``)}url(e=``){return new URL(`${this.apiPrefix}/aliases${e}`,this.origin)}async request(e,t){let n=await this.fetch(e,t),r=await n.json().catch(()=>null);if(!n.ok)throw new Ct(r?.error?.message||`Persistence request failed with HTTP ${n.status}.`,{status:n.status,code:r?.error?.code});return Tt(r)}async errorFor(e){let t=await e.json().catch(()=>null);return new Ct(t?.error?.message||`Persistence request failed with HTTP ${e.status}.`,{status:e.status,code:t?.error?.code})}async createPayload(e){let t=_t();return{...await this.request(this.url(),{method:`POST`,headers:{Authorization:`Bearer ${t}`,"Content-Type":`application/json`},body:JSON.stringify(e)}),writeCapability:t}}createAlias(e){return this.createPayload(wt(e))}createLockedAlias(e){if(e?.mode!==`locked`)throw Error(`Invalid locked diagram payload.`);return this.createPayload(e)}getAlias(e){if(!U.test(e))throw Error(`Invalid diagram alias.`);return this.request(this.url(`/${e}`),{headers:{Accept:`application/json`}})}updatePayload(e,t,n,r){if(!U.test(e))throw Error(`Invalid diagram alias.`);if(!Number.isSafeInteger(n)||n<1)throw Error(`Invalid alias revision.`);if(!ht.test(r))throw Error(`Invalid write capability.`);return this.request(this.url(`/${e}`),{method:`PUT`,headers:{Accept:`application/json`,Authorization:`Bearer ${r}`,"Content-Type":`application/json`,"If-Match":`"${n}"`},body:JSON.stringify(t)})}updateAlias(e,t,n,r){return this.updatePayload(e,wt(t),n,r)}updateLockedAlias(e,t,n,r){if(t?.mode!==`locked`)throw Error(`Invalid locked diagram payload.`);return this.updatePayload(e,t,n,r)}async uploadRender({aliasId:e,renderId:t,revision:n,writeCapability:r,format:i,mode:a,render:o,renderer:s}){if(!U.test(e))throw Error(`Invalid diagram alias.`);if(!ht.test(t))throw Error(`Invalid render ID.`);if(!Number.isSafeInteger(n)||n<1)throw Error(`Invalid alias revision.`);if(!ht.test(r))throw Error(`Invalid write capability.`);if(i!==`svg`&&i!==`png`)throw Error(`Invalid render format.`);if(a!==`open`&&a!==`locked`)throw Error(`Invalid diagram mode.`);if(!s||!/^[a-z][a-z0-9-]{0,31}$/.test(s.unit)||typeof s.build!=`string`||!/^[A-Za-z0-9][A-Za-z0-9._@+-]{0,127}$/.test(s.build)||!Array.isArray(s.pipeline)||s.pipeline.length<1||s.pipeline.some(e=>!/^[a-z][a-z0-9-]{0,31}$/.test(e)))throw Error(`Invalid renderer identity.`);let c=a===`locked`?`application/json`:i===`svg`?`image/svg+xml`:`image/png`,l=a===`locked`?JSON.stringify(o):o,u=await this.fetch(this.url(`/${e}/renders/${i}`),{method:`PUT`,headers:{Authorization:`Bearer ${r}`,"Content-Type":c,"If-Match":`"${n}"`,"X-Render-Id":t,"X-Renderer-Unit":s.unit,"X-Renderer-Build":s.build,"X-Renderer-Pipeline":s.pipeline.join(`,`)},body:l});if(!u.ok)throw await this.errorFor(u)}async getEncryptedRender(e,t){if(!U.test(e))throw Error(`Invalid diagram alias.`);if(t!==`svg`&&t!==`png`)throw Error(`Invalid render format.`);let n=this.url(`/${e}/renders/${t}`);n.searchParams.set(`encrypted`,`1`);let r=await this.fetch(n,{headers:{Accept:`application/json`}});if(!r.ok)throw await this.errorFor(r);return r.json()}},Dt=6e5,Ot=new TextEncoder,kt=new TextDecoder,At=Ot.encode(`diagram.zip:content:v1`),jt=Ot.encode(`diagram.zip:metadata:v1`),Mt=Ot.encode(`diagram.zip:bundle-key:v1`);function Nt(e){if(e!==`svg`&&e!==`png`)throw Error(`Invalid render format.`);return Ot.encode(`diagram.zip:render:${e}:v1`)}function Pt(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}function Ft(e){if(typeof e!=`string`||!/^[A-Za-z0-9_-]+$/.test(e))throw Error(`Invalid encrypted diagram.`);let t=e.replaceAll(`-`,`+`).replaceAll(`_`,`/`),n=t+`=`.repeat((4-t.length%4)%4),r=atob(n),i=Uint8Array.from(r,e=>e.charCodeAt(0));if(Pt(i)!==e)throw Error(`Invalid encrypted diagram.`);return i}function It(e){return crypto.getRandomValues(new Uint8Array(e))}async function Lt(e,t){if(!(e instanceof Uint8Array)||e.byteLength!==32)throw Error(`Invalid diagram key.`);return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,t)}async function Rt(e,{iterations:t,salt:n}){if(typeof e!=`string`)throw Error(`Password is required.`);let r=await crypto.subtle.importKey(`raw`,Ot.encode(e),`PBKDF2`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`PBKDF2`,hash:`SHA-256`,iterations:t,salt:n},r,{name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`])}async function zt(e,t,n){let r=It(12),i=await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n,tagLength:128},t,e);return{v:1,alg:`A256GCM`,iv:Pt(r),ciphertext:Pt(new Uint8Array(i))}}async function Bt(e,t,n){if(!e||e.v!==1||e.alg!==`A256GCM`)throw Error(`Invalid encrypted diagram.`);let r=Ft(e.iv);if(r.byteLength!==12)throw Error(`Invalid encrypted diagram.`);let i=Ft(e.ciphertext);if(i.byteLength<16)throw Error(`Invalid encrypted diagram.`);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n,tagLength:128},t,i))}async function Vt(e,t,n){return zt(Ot.encode(JSON.stringify(e)),t,n)}async function Ht(e,t,n){return JSON.parse(kt.decode(await Bt(e,t,n)))}function Ut(e,t){if(!e||typeof e!=`object`||!r(e.type)||typeof e.source!=`string`||!e.options||typeof e.options!=`object`||Array.isArray(e.options))throw Error(`Invalid encrypted diagram.`);return{type:e.type,source:e.source,options:e.options,presentation:H(e.presentation),meta:V(t)}}async function Wt(e,t){if(typeof t!=`string`||t.length<8)throw Error(`Password must be at least 8 characters.`);let n=It(16),r={name:`PBKDF2`,hash:`SHA-256`,iterations:Dt,salt:Pt(n)};return{v:1,kdf:r,wrap:await zt(e,await Rt(t,{iterations:r.iterations,salt:n}),Mt)}}async function Gt(e,t){if(!e||e.v!==1||e.kdf?.name!==`PBKDF2`||e.kdf.hash!==`SHA-256`||!Number.isInteger(e.kdf.iterations)||e.kdf.iterations<1e5||e.kdf.iterations>5e6)throw Error(`Invalid encrypted diagram.`);let n=Ft(e.kdf.salt);if(n.byteLength!==16)throw Error(`Invalid encrypted diagram.`);let r=await Rt(t,{iterations:e.kdf.iterations,salt:n}),i=await Bt(e.wrap,r,Mt);if(i.byteLength!==32)throw Error(`Invalid encrypted diagram.`);return i}async function Kt(e,t,n){let r=Ut({type:e.type,source:e.source,options:e.options??{},presentation:e.presentation},e.meta),i=await Lt(t,[`encrypt`]);return{mode:`locked`,encryptedContent:await Vt({type:r.type,source:r.source,options:r.options,presentation:r.presentation},i,At),encryptedMetadata:await Vt(r.meta,i,jt),keyEnvelope:n}}async function qt(e,t){let n=It(32);return{bundleKey:n,payload:await Kt(e,n,await Wt(n,t))}}async function Jt(e,t){if(!e||e.mode!==`locked`)throw Error(`Invalid encrypted diagram.`);try{let n=await Gt(e.keyEnvelope,t),r=await Lt(n,[`decrypt`]),[i,a]=await Promise.all([Ht(e.encryptedContent,r,At),Ht(e.encryptedMetadata,r,jt)]);return{bundleKey:n,state:Ut(i,a)}}catch{throw Error(`Wrong password or damaged diagram.`)}}async function Yt(e,t,n){if(!(e instanceof Blob))throw Error(`Invalid rendered image.`);let r=await Lt(t,[`encrypt`]);return zt(new Uint8Array(await e.arrayBuffer()),r,Nt(n))}var Xt=`diagram.zip:renderer:v1`,Zt=2e4,Qt=Object.freeze({mermaid:Object.freeze({frameUrl:`https://mermaid.render.diagram.zip/index.html?v=1`}),bpmn:Object.freeze({frameUrl:`https://bpmn.render.diagram.zip/index.html?v=1`}),excalidraw:Object.freeze({frameUrl:`https://excalidraw.render.diagram.zip/index.html?v=3`}),diagramsnet:Object.freeze({frameUrl:`https://diagramsnet.render.diagram.zip/index.html?v=1`}),tikz:Object.freeze({frameUrl:`https://tikz.render.diagram.zip/index.html?v=1`})});Object.freeze(Object.keys(Qt));function $t(e){return e?.name===`AbortError`?e:new DOMException(`Render superseded.`,`AbortError`)}var en=class{constructor({documentObject:e=document,windowObject:t=window,frameUrl:n}={}){this.document=e,this.window=t,this.frameUrl=n,this.frame=null,this.ready=null,this.resolveReady=null,this.rejectReady=null,this.sequence=0,this.pending=new Map,this.handleMessage=e=>this.receive(e),this.window.addEventListener(`message`,this.handleMessage)}ensureFrame(){if(this.frame)return this.ready;let e=this.document.createElement(`iframe`);return e.title=`Diagram renderer`,e.setAttribute(`sandbox`,`allow-scripts`),e.setAttribute(`aria-hidden`,`true`),e.tabIndex=-1,Object.assign(e.style,{position:`fixed`,left:`-200vw`,top:`0`,width:`1280px`,height:`800px`,border:`0`,pointerEvents:`none`,visibility:`hidden`}),this.ready=new Promise((e,t)=>{this.resolveReady=e,this.rejectReady=t}),e.addEventListener(`error`,()=>this.rejectReady?.(Error(`The client renderer could not be loaded.`)),{once:!0}),e.src=this.frameUrl,this.frame=e,this.document.body.append(e),this.ready}receive(e){if(!this.frame||e.source!==this.frame.contentWindow||e.data?.channel!==Xt)return;if(e.data.type===`ready`){this.resolveReady?.(),this.resolveReady=null,this.rejectReady=null;return}if(e.data.type!==`result`)return;let t=this.pending.get(e.data.requestId);t&&(this.pending.delete(e.data.requestId),t.finish(),e.data.ok&&typeof e.data.svg==`string`?t.resolve({body:e.data.svg,version:e.data.version,build:e.data.build,pipeline:e.data.pipeline,runtime:`client`}):t.reject(Error(e.data.error||`Client rendering failed.`)))}async render(e,t,n){let r;try{await Promise.race([this.ensureFrame(),new Promise((e,t)=>{r=setTimeout(()=>t(Error(`The client renderer timed out while loading.`)),Zt)})])}finally{clearTimeout(r)}if(n.aborted)throw $t(n.reason);let i=`${Date.now().toString(36)}-${++this.sequence}`;return new Promise((r,a)=>{let o=setTimeout(()=>{this.pending.delete(i),n.removeEventListener(`abort`,s),a(Error(`The client renderer timed out.`))},Zt),s=()=>{this.pending.delete(i),clearTimeout(o),a($t(n.reason))};n.addEventListener(`abort`,s,{once:!0}),this.pending.set(i,{resolve:r,reject:a,finish:()=>{clearTimeout(o),n.removeEventListener(`abort`,s)}}),this.frame.contentWindow.postMessage({channel:Xt,type:`render`,requestId:i,engine:e,source:t},`*`)})}},tn=new Map;function nn(e){let t=Qt[e];if(!t)return null;let n=tn.get(t.frameUrl);return n||(n=new en({frameUrl:t.frameUrl}),tn.set(t.frameUrl,n)),{id:e,runtime:`client`,render:({source:t},r)=>n.render(e,t,r)}}var rn=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CHAR=` 16311631 \r -퟿-�𐀀-􏿿`,e.S=` \r16321632 `,e.NAME_START_CHAR=`:A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿`,e.NAME_CHAR=`-`+e.NAME_START_CHAR+`.0-9·̀-ͯ‿-⁀`,e.CHAR_RE=RegExp(`^[`+e.CHAR+`]$`,`u`),e.S_RE=RegExp(`^[`+e.S+`]+$`,`u`),e.NAME_START_CHAR_RE=RegExp(`^[`+e.NAME_START_CHAR+`]$`,`u`),e.NAME_CHAR_RE=RegExp(`^[`+e.NAME_CHAR+`]$`,`u`),e.NAME_RE=RegExp(`^[`+e.NAME_START_CHAR+`][`+e.NAME_CHAR+`]*$`,`u`),e.NMTOKEN_RE=RegExp(`^[`+e.NAME_CHAR+`]+$`,`u`);var t=9,n=10,r=13,i=32;e.S_LIST=[i,n,r,t];function a(e){return e>=i&&e<=55295||e===n||e===r||e===t||e>=57344&&e<=65533||e>=65536&&e<=1114111}e.isChar=a;function o(e){return e===i||e===n||e===r||e===t}e.isS=o;function s(e){return e>=65&&e<=90||e>=97&&e<=122||e===58||e===95||e===8204||e===8205||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}e.isNameStartChar=s;function c(e){return s(e)||e>=48&&e<=57||e===45||e===46||e===183||e>=768&&e<=879||e>=8255&&e<=8256}e.isNameChar=c})),an=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CHAR=`-퟿-�𐀀-􏿿`,e.RESTRICTED_CHAR=`-\b\v\f--„†-Ÿ`,e.S=` \r16331633 `,e.NAME_START_CHAR=`:A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿`,e.NAME_CHAR=`-`+e.NAME_START_CHAR+`.0-9·̀-ͯ‿-⁀`,e.CHAR_RE=RegExp(`^[`+e.CHAR+`]$`,`u`),e.RESTRICTED_CHAR_RE=RegExp(`^[`+e.RESTRICTED_CHAR+`]$`,`u`),e.S_RE=RegExp(`^[`+e.S+`]+$`,`u`),e.NAME_START_CHAR_RE=RegExp(`^[`+e.NAME_START_CHAR+`]$`,`u`),e.NAME_CHAR_RE=RegExp(`^[`+e.NAME_CHAR+`]$`,`u`),e.NAME_RE=RegExp(`^[`+e.NAME_START_CHAR+`][`+e.NAME_CHAR+`]*$`,`u`),e.NMTOKEN_RE=RegExp(`^[`+e.NAME_CHAR+`]+$`,`u`);var t=9,n=10,r=13,i=32;e.S_LIST=[i,n,r,t];function a(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}e.isChar=a;function o(e){return e>=1&&e<=8||e===11||e===12||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159}e.isRestrictedChar=o;function s(e){return e===9||e===10||e===13||e>31&&e<127||e===133||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}e.isCharAndNotRestricted=s;function c(e){return e===i||e===n||e===r||e===t}e.isS=c;function l(e){return e>=65&&e<=90||e>=97&&e<=122||e===58||e===95||e===8204||e===8205||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}e.isNameStartChar=l;function u(e){return l(e)||e>=48&&e<=57||e===45||e===46||e===183||e>=768&&e<=879||e>=8255&&e<=8256}e.isNameChar=u})),on=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NC_NAME_START_CHAR=`A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿`,e.NC_NAME_CHAR=`-`+e.NC_NAME_START_CHAR+`.0-9·̀-ͯ‿-⁀`,e.NC_NAME_START_CHAR_RE=RegExp(`^[`+e.NC_NAME_START_CHAR+`]$`,`u`),e.NC_NAME_CHAR_RE=RegExp(`^[`+e.NC_NAME_CHAR+`]$`,`u`),e.NC_NAME_RE=RegExp(`^[`+e.NC_NAME_START_CHAR+`][`+e.NC_NAME_CHAR+`]*$`,`u`);function t(e){return e>=65&&e<=90||e===95||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}e.isNCNameStartChar=t;function n(e){return t(e)||e===45||e===46||e>=48&&e<=57||e===183||e>=768&&e<=879||e>=8255&&e<=8256}e.isNCNameChar=n})),sn=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SaxesParser=e.EVENTS=void 0;var t=rn(),n=an(),r=on(),i=t.isS,a=t.isChar,o=t.isNameStartChar,s=t.isNameChar,c=t.S_LIST,l=t.NAME_RE,u=n.isChar,d=r.isNCNameStartChar,f=r.isNCNameChar,p=r.NC_NAME_RE,m=`http://www.w3.org/XML/1998/namespace`,h=`http://www.w3.org/2000/xmlns/`,ee={__proto__:null,xml:m,xmlns:h},te={__proto__:null,amp:`&`,gt:`>`,lt:`<`,quot:`"`,apos:`'`},g=-1,_=-2,ne=0,re=1,ie=2,ae=3,v=4,oe=5,se=6,ce=7,le=8,ue=9,de=10,fe=11,pe=12,y=13,me=14,he=15,ge=16,_e=17,ve=18,ye=19,be=20,xe=21,Se=22,Ce=23,we=24,Te=25,Ee=26,De=27,Oe=28,ke=29,Ae=30,je=31,Me=32,b=33,Ne=34,Pe=35,x=36,S=37,C=38,w=39,Fe=40,Ie=41,Le=42,Re=43,ze=44,Be=9,T=10,Ve=13,He=32,Ue=33,We=34,Ge=38,Ke=39,qe=45,E=47,Je=59,D=60,O=61,k=62,A=63,j=91,M=93,N=133,P=8232,F=e=>e===We||e===Ke,Ye=[We,Ke],Xe=[...Ye,j,k],Ze=[...Ye,D,M],Qe=[O,A,...c],I=[...c,k,Ge,D];function $e(e,t,n){switch(t){case`xml`:n!==m&&e.fail(`xml prefix must be bound to ${m}.`);break;case`xmlns`:n!==h&&e.fail(`xmlns prefix must be bound to ${h}.`)}switch(n){case h:e.fail(t===``?`the default namespace may not be set to ${n}.`:`may not assign a prefix (even "xmlns") to the URI \16341634 <<<<<<<< HEAD:server/src/main/resources/web/diagramzip/assets/index-CzBQjn0p.js16351635 <<<<<<<< HEAD:server/src/main/resources/web/diagramzip/assets/index-CzBQjn0p.js1636+<<<<<<<< HEAD:server/src/main/resources/web/diagramzip/assets/index-CzBQjn0p.js16361637 ${h}.`);break;case m:switch(t){case`xml`:break;case``:e.fail(`the default namespace may not be set to ${n}.`);break;default:e.fail(`may not assign the xml namespace to another prefix.`)}}}function L(e,t){for(let n of Object.keys(t))$e(e,n,t[n])}var et=e=>p.test(e),tt=e=>l.test(e),R=0,nt=1,rt=2;e.EVENTS=[`xmldecl`,`text`,`processinginstruction`,`doctype`,`comment`,`opentagstart`,`attribute`,`opentag`,`closetag`,`cdata`,`error`,`end`,`ready`];var z={xmldecl:`xmldeclHandler`,text:`textHandler`,processinginstruction:`piHandler`,doctype:`doctypeHandler`,comment:`commentHandler`,opentagstart:`openTagStartHandler`,attribute:`attributeHandler`,opentag:`openTagHandler`,closetag:`closeTagHandler`,cdata:`cdataHandler`,error:`errorHandler`,end:`endHandler`,ready:`readyHandler`};e.SaxesParser=class{constructor(e){this.opt=e??{},this.fragmentOpt=!!this.opt.fragment;let t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=this.opt.position!==!1,this.fileName=this.opt.fileName,t){this.nameStartCheck=d,this.nameCheck=f,this.isName=et,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},ee);let e=this.opt.additionalNamespaces;e!=null&&(L(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=o,this.nameCheck=s,this.isName=tt,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var e;this.openWakaBang=``,this.text=``,this.name=``,this.piTarget=``,this.entity=``,this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk=``,this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=R,this.attribList=[];let{fragmentOpt:t}=this;this.state=t?y:ne,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=[`version`],this.entityReturnState=void 0;let{defaultXMLVersion:n}=this.opt;if(n===void 0){if(this.opt.forceXMLVersion===!0)throw Error(`forceXMLVersion set but defaultXMLVersion is not set`);n=`1.0`}this.setXMLVersion(n),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(te),(e=this.readyHandler)==null||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[z[e]]=t}off(e){this[z[e]]=void 0}makeError(e){let t=this.fileName??``;return this.trackPosition&&(t.length>0&&(t+=`:`),t+=`${this.line}:${this.column}`),t.length>0&&(t+=`: `),Error(t+e)}fail(e){let t=this.makeError(e),n=this.errorHandler;if(n===void 0)throw t;return n(t),this}write(e){if(this.closed)return this.fail(`cannot write after close; assign an onready handler.`);let t=!1;e===null?(t=!0,e=``):typeof e==`object`&&(e=e.toString()),this.carriedFromPrevious!==void 0&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let n=e.length,r=e.charCodeAt(n-1);!t&&(r===Ve||r>=55296&&r<=56319)&&(this.carriedFromPrevious=e[n-1],n--,e=e.slice(0,n));let{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i<n;)i[this.state].call(this);return this.chunkPosition+=n,t?this.end():this}close(){return this.write(null)}getCode10(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>=He||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:return e.charCodeAt(t+1)===T&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCode11(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>31&&n<127||n>159&&n!==P||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:{let n=e.charCodeAt(t+1);(n===T||n===N)&&(this.i=t+2)}case N:case P:return this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCodeNorm(){let e=this.getCode();return e===_?T:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode(),i=r===_,a=i?T:r;if(a===g||e.includes(a))return this.text+=n.slice(t,this.prevI),a;i&&(this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i)}}captureToChar(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode();switch(r){case _:this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i,r=T;break;case g:return this.text+=n.slice(t),!1}if(r===e)return this.text+=n.slice(t,this.prevI),!0}}captureNameChars(){let{chunk:e,i:t}=this;for(;;){let n=this.getCode();if(n===g)return this.name+=e.slice(t),g;if(!s(n))return this.name+=e.slice(t,this.prevI),n===_?T:n}}skipSpaces(){for(;;){let e=this.getCodeNorm();if(e===g||!i(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,e===`1.0`?(this.isChar=a,this.getCode=this.getCode10):(this.isChar=u,this.getCode=this.getCode11)}sBegin(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=re}sBeginWhitespace(){let e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case D:if(this.state=he,this.text.length!==0)throw Error(`no-empty text at start`);break;case g:break;default:this.unget(),this.state=y,this.xmlDeclPossible=!1}}sDoctype(){var e;let t=this.captureTo(Xe);switch(t){case k:(e=this.doctypeHandler)==null||e.call(this,this.text),this.text=``,this.state=y,this.doctype=!0;break;case g:break;default:this.text+=String.fromCodePoint(t),t===j?this.state=v:F(t)&&(this.state=ae,this.q=t)}}sDoctypeQuote(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=ie)}sDTD(){let e=this.captureTo(Ze);e!==g&&(this.text+=String.fromCodePoint(e),e===M?this.state=ie:e===D?this.state=se:F(e)&&(this.state=oe,this.q=e))}sDTDQuoted(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=v,this.q=null)}sDTDOpenWaka(){let e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case Ue:this.state=ce,this.openWakaBang=``;break;case A:this.state=fe;break;default:this.state=v}}sDTDOpenWakaBang(){let e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,t!==`-`&&(this.state=t===`--`?le:v,this.openWakaBang=``)}sDTDComment(){this.captureToChar(qe)&&(this.text+=`-`,this.state=ue)}sDTDCommentEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=e===qe?de:le}sDTDCommentEnded(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k?this.state=v:(this.fail(`malformed comment.`),this.state=le)}sDTDPI(){this.captureToChar(A)&&(this.text+=`?`,this.state=pe)}sDTDPIEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k&&(this.state=v)}sText(){this.tags.length===0?this.handleTextOutsideRoot():this.handleTextInRoot()}sEntity(){let{i:e}=this,{chunk:t}=this;loop:for(;;)switch(this.getCode()){case _:this.entity+=`${t.slice(e,this.prevI)}\n`,e=this.i;break;case Je:{let{entityReturnState:n}=this,r=this.entity+t.slice(e,this.prevI);this.state=n;let i;r===``?(this.fail(`empty entity name.`),i=`&;`):(i=this.parseEntity(r),this.entity=``),(n!==y||this.textHandler!==void 0)&&(this.text+=i);break loop}case g:this.entity+=t.slice(e);break loop}}sOpenWaka(){let e=this.getCode();if(o(e))this.state=Ne,this.unget(),this.xmlDeclPossible=!1;else switch(e){case E:this.state=Re,this.xmlDeclPossible=!1;break;case Ue:this.state=ge,this.openWakaBang=``,this.xmlDeclPossible=!1;break;case A:this.state=Ce;break;default:this.fail(`disallowed character in tag name`),this.state=y,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case`[CDATA[`:!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0),this.state=be,this.openWakaBang=``;break;case`--`:this.state=_e,this.openWakaBang=``;break;case`DOCTYPE`:this.state=ie,(this.doctype||this.sawRoot)&&this.fail(`inappropriately located doctype declaration.`),this.openWakaBang=``;break;default:this.openWakaBang.length>=7&&this.fail(`incorrect syntax.`)}}sComment(){this.captureToChar(qe)&&(this.state=ve)}sCommentEnding(){var e;let t=this.getCodeNorm();t===qe?(this.state=ye,(e=this.commentHandler)==null||e.call(this,this.text),this.text=``):(this.text+=`-${String.fromCodePoint(t)}`,this.state=_e)}sCommentEnded(){let e=this.getCodeNorm();e===k?this.state=y:(this.fail(`malformed comment.`),this.text+=`--${String.fromCodePoint(e)}`,this.state=_e)}sCData(){this.captureToChar(M)&&(this.state=xe)}sCDataEnding(){let e=this.getCodeNorm();e===M?this.state=Se:(this.text+=`]${String.fromCodePoint(e)}`,this.state=be)}sCDataEnding2(){var e;let t=this.getCodeNorm();switch(t){case k:(e=this.cdataHandler)==null||e.call(this,this.text),this.text=``,this.state=y;break;case M:this.text+=`]`;break;default:this.text+=`]]${String.fromCodePoint(t)}`,this.state=be}}sPIFirstChar(){let e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=we):e===A||i(e)?(this.fail(`processing instruction without a target.`),this.state=e===A?Ee:Te):(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(e),this.state=we)}sPIRest(){let{chunk:e,i:t}=this;for(;;){let n=this.getCodeNorm();if(n===g){this.piTarget+=e.slice(t);return}if(!this.nameCheck(n)){this.piTarget+=e.slice(t,this.prevI);let r=n===A;r||i(n)?this.piTarget===`xml`?(this.xmlDeclPossible||this.fail(`an XML declaration must be at the start of the document.`),this.state=r?b:De):this.state=r?Ee:Te:(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(n));break}}}sPIBody(){if(this.text.length===0){let e=this.getCodeNorm();e===A?this.state=Ee:i(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(A)&&(this.state=Ee)}sPIEnding(){var e;let t=this.getCodeNorm();if(t===k){let{piTarget:t}=this;t.toLowerCase()===`xml`&&this.fail(`the XML declaration must appear at the start of the document.`),(e=this.piHandler)==null||e.call(this,{target:t,body:this.text}),this.piTarget=this.text=``,this.state=y}else t===A?this.text+=`?`:(this.text+=`?${String.fromCodePoint(t)}`,this.state=Te);this.xmlDeclPossible=!1}sXMLDeclNameStart(){let e=this.skipSpaces();if(e===A){this.state=b;return}e!==g&&(this.state=Oe,this.name=String.fromCodePoint(e))}sXMLDeclName(){let e=this.captureTo(Qe);if(e===A){this.state=b,this.name+=this.text,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(i(e)||e===O){if(this.name+=this.text,this.text=``,!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail(`did not expect any more name/value pairs.`);break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(`, `)}`)}this.state=e===O?Ae:ke}}sXMLDeclEq(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(e!==O&&this.fail(`value required.`),this.state=Ae)}sXMLDeclValueStart(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(F(e)?this.q=e:(this.fail(`value must be quoted.`),this.q=He),this.state=je)}sXMLDeclValue(){let e=this.captureTo([this.q,A]);if(e===A){this.state=b,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(e===g)return;let t=this.text;switch(this.text=``,this.name){case`version`:{this.xmlDeclExpects=[`encoding`,`standalone`];let e=t;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail(`version number must match /^1\\.[0-9]+$/.`);break}case`encoding`:/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail(`encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/.`),this.xmlDeclExpects=[`standalone`],this.xmlDecl.encoding=t;break;case`standalone`:t!==`yes`&&t!==`no`&&this.fail(`standalone value must match "yes" or "no".`),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name=``,this.state=Me}sXMLDeclSeparator(){let e=this.getCodeNorm();if(e===A){this.state=b;return}i(e)||(this.fail(`whitespace required.`),this.unget()),this.state=De}sXMLDeclEnding(){var e;this.getCodeNorm()===k?(this.piTarget===`xml`?this.name!==`version`&&this.xmlDeclExpects.includes(`version`)&&this.fail(`XML declaration must contain a version.`):this.fail(`processing instructions are not allowed before root.`),(e=this.xmldeclHandler)==null||e.call(this,this.xmlDecl),this.name=``,this.piTarget=this.text=``,this.state=y):this.fail(`The character ? is disallowed anywhere in XML declarations.`),this.xmlDeclPossible=!1}sOpenTag(){var e;let t=this.captureNameChars();if(t===g)return;let n=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name=``,this.xmlnsOpt&&(this.topNS=n.ns=Object.create(null)),(e=this.openTagStartHandler)==null||e.call(this,n),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail(`documents may contain only one root.`),t){case k:this.openTag();break;case E:this.state=Pe;break;default:i(t)||this.fail(`disallowed character in tag name.`),this.state=x}}sOpenTagSlash(){this.getCode()===k?this.openSelfClosingTag():(this.fail(`forward-slash in opening tag not followed by >.`),this.state=x)}sAttrib(){let e=this.skipSpaces();e!==g&&(o(e)?(this.unget(),this.state=S):e===k?this.openTag():e===E?this.state=Pe:this.fail(`disallowed character in attribute name.`))}sAttribName(){let e=this.captureNameChars();e===O?this.state=w:i(e)?this.state=C:e===k?(this.fail(`attribute without value.`),this.pushAttrib(this.name,this.name),this.name=this.text=``,this.openTag()):e!==g&&this.fail(`disallowed character in attribute name.`)}sAttribNameSawWhite(){let e=this.skipSpaces();switch(e){case g:return;case O:this.state=w;break;default:this.fail(`attribute without value.`),this.text=``,this.name=``,e===k?this.openTag():o(e)?(this.unget(),this.state=S):(this.fail(`disallowed character in attribute name.`),this.state=x)}}sAttribValue(){let e=this.getCodeNorm();F(e)?(this.q=e,this.state=Fe):i(e)||(this.fail(`unquoted attribute value.`),this.state=Le,this.unget())}sAttribValueQuoted(){let{q:e,chunk:t}=this,{i:n}=this;for(;;)switch(this.getCode()){case e:this.pushAttrib(this.name,this.text+t.slice(n,this.prevI)),this.name=this.text=``,this.q=null,this.state=Ie;return;case Ge:this.text+=t.slice(n,this.prevI),this.state=me,this.entityReturnState=Fe;return;case T:case _:case Be:this.text+=`${t.slice(n,this.prevI)} `,n=this.i;break;case D:this.text+=t.slice(n,this.prevI),this.fail(`disallowed character.`);return;case g:this.text+=t.slice(n);return}}sAttribValueClosed(){let e=this.getCodeNorm();i(e)?this.state=x:e===k?this.openTag():e===E?this.state=Pe:o(e)?(this.fail(`no whitespace between attributes.`),this.unget(),this.state=S):this.fail(`disallowed character in attribute name.`)}sAttribValueUnquoted(){let e=this.captureTo(I);switch(e){case Ge:this.state=me,this.entityReturnState=Le;break;case D:this.fail(`disallowed character.`);break;case g:break;default:this.text.includes(`]]>`)&&this.fail(`the string "]]>" is disallowed in char data.`),this.pushAttrib(this.name,this.text),this.name=this.text=``,e===k?this.openTag():this.state=x}}sCloseTag(){let e=this.captureNameChars();e===k?this.closeTag():i(e)?this.state=ze:e!==g&&this.fail(`disallowed character in closing tag.`)}sCloseTagSawWhite(){switch(this.skipSpaces()){case k:this.closeTag();break;case g:break;default:this.fail(`disallowed character in closing tag.`)}}handleTextInRoot(){let{i:e,forbiddenState:t}=this,{chunk:n,textHandler:r}=this;scanLoop:for(;;)switch(this.getCode()){case D:if(this.state=he,r!==void 0){let{text:t}=this,i=n.slice(e,this.prevI);t.length===0?i.length!==0&&r(i):(r(t+i),this.text=``)}t=R;break scanLoop;case Ge:this.state=me,this.entityReturnState=y,r!==void 0&&(this.text+=n.slice(e,this.prevI)),t=R;break scanLoop;case M:switch(t){case R:t=nt;break;case nt:t=rt;break;case rt:break;default:throw Error(`impossible state`)}break;case k:t===rt&&this.fail(`the string "]]>" is disallowed in char data.`),t=R;break;case _:r!==void 0&&(this.text+=`${n.slice(e,this.prevI)}\n`),e=this.i,t=R;break;case g:r!==void 0&&(this.text+=n.slice(e));break scanLoop;default:t=R}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this,{chunk:t,textHandler:n}=this,r=!1;outRootLoop:for(;;){let a=this.getCode();switch(a){case D:if(this.state=he,n!==void 0){let{text:r}=this,i=t.slice(e,this.prevI);r.length===0?i.length!==0&&n(i):(n(r+i),this.text=``)}break outRootLoop;case Ge:this.state=me,this.entityReturnState=y,n!==void 0&&(this.text+=t.slice(e,this.prevI)),r=!0;break outRootLoop;case _:n!==void 0&&(this.text+=`${t.slice(e,this.prevI)}\n`),e=this.i;break;case g:n!==void 0&&(this.text+=t.slice(e));break outRootLoop;default:i(a)||(r=!0)}}r&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var n;let{prefix:r,local:i}=this.qname(e),a={name:e,prefix:r,local:i,value:t};if(this.attribList.push(a),(n=this.attributeHandler)==null||n.call(this,a),r===`xmlns`){let e=t.trim();this.currentXMLVersion===`1.0`&&e===``&&this.fail(`invalid attempt to undefine prefix in XML 1.0`),this.topNS[i]=e,$e(this,i,e)}else if(e===`xmlns`){let e=t.trim();this.topNS[``]=e,$e(this,``,e)}}pushAttribPlain(e,t){var n;let r={name:e,value:t};this.attribList.push(r),(n=this.attributeHandler)==null||n.call(this,r)}end(){var e,t;this.sawRoot||this.fail(`document must contain a root element.`);let{tags:n}=this;for(;n.length>0;){let e=n.pop();this.fail(`unclosed tag: ${e.name}`)}this.state!==ne&&this.state!==y&&this.fail(`unexpected end.`);let{text:r}=this;return r.length!==0&&((e=this.textHandler)==null||e.call(this,r),this.text=``),this._closed=!0,(t=this.endHandler)==null||t.call(this),this._init(),this}resolve(e){var t;let n=this.topNS[e];if(n!==void 0)return n;let{tags:r}=this;for(let t=r.length-1;t>=0;t--)if(n=r[t].ns[e],n!==void 0)return n;return n=this.ns[e],n===void 0?(t=this.opt).resolvePrefix?.call(t,e):n}qname(e){let t=e.indexOf(`:`);if(t===-1)return{prefix:``,local:e};let n=e.slice(t+1),r=e.slice(0,t);return(r===``||n===``||n.includes(`:`))&&this.fail(`malformed name: ${e}.`),{prefix:r,local:n}}processAttribsNS(){let{attribList:e}=this,t=this.tag;{let{prefix:e,local:n}=this.qname(t.name);t.prefix=e,t.local=n;let r=t.uri=this.resolve(e)??``;e!==``&&(e===`xmlns`&&this.fail(`tags may not have "xmlns" as prefix.`),r===``&&(this.fail(`unbound namespace prefix: ${JSON.stringify(e)}.`),t.uri=e))}if(e.length===0)return;let{attributes:n}=t,r=new Set;for(let t of e){let{name:e,prefix:i,local:a}=t,o,s;i===``?(o=e===`xmlns`?h:``,s=e):(o=this.resolve(i),o===void 0&&(this.fail(`unbound namespace prefix: ${JSON.stringify(i)}.`),o=i),s=`{${o}}${a}`),r.has(s)&&this.fail(`duplicate attribute: ${s}.`),r.add(s),t.uri=o,n[e]=t}this.attribList=[]}processAttribsPlain(){let{attribList:e}=this,t=this.tag.attributes;for(let{name:n,value:r}of e)t[n]!==void 0&&this.fail(`duplicate attribute: ${n}.`),t[n]=r;this.attribList=[]}openTag(){var e;this.processAttribs();let{tags:t}=this,n=this.tag;n.isSelfClosing=!1,(e=this.openTagHandler)==null||e.call(this,n),t.push(n),this.state=y,this.name=``}openSelfClosingTag(){var e,t;this.processAttribs();let{tags:n}=this,r=this.tag;r.isSelfClosing=!0,(e=this.openTagHandler)==null||e.call(this,r),(t=this.closeTagHandler)==null||t.call(this,r),(this.tag=n[n.length-1]??null)===null&&(this.closedRoot=!0),this.state=y,this.name=``}closeTag(){let{tags:e,name:t}=this;if(this.state=y,this.name=``,t===``){this.fail(`weird empty close tag.`),this.text+=`</>`;return}let n=this.closeTagHandler,r=e.length;for(;r-->0;){let r=this.tag=e.pop();if(this.topNS=r.ns,n?.(r),r.name===t)break;this.fail(`unexpected close tag.`)}r===0?this.closedRoot=!0:r<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=`</${t}>`)}parseEntity(e){if(e[0]!==`#`){let t=this.ENTITIES[e];return t===void 0?(this.fail(this.isName(e)?`undefined entity.`:`disallowed character in entity name.`),`&${e};`):t}let t=NaN;return e[1]===`x`&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail(`malformed character entity.`),`&${e};`)}}}))(),cn=4194304,ln=new Set([`script`,`iframe`,`object`,`embed`,`audio`,`video`]),un=new Set([`foreignobject`,`div`,`span`,`p`,`br`,`b`,`strong`,`i`,`em`,`small`,`sub`,`sup`,`code`,`ul`,`ol`,`li`,`a`]),dn=/^data:image\/(?:png|jpeg|gif|webp);base64,[a-z0-9+/=\s]+$/i,fn=/^data:(?:font\/(?:woff2?|opentype|truetype)|application\/(?:x-)?font-woff2?);base64,[a-z0-9+/=\s]+$/i,pn=class extends Error{constructor(e){super(e),this.name=`ClientSvgError`}};function mn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)||fn.test(t)}function hn(e){if(/@import|expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|-moz-binding/i.test(e))return!0;let t=/url\s*\(\s*(['"]?)(.*?)\1\s*\)/gi;for(let n of e.matchAll(t))if(!mn(n[2]??``))return!0;return/url\s*\(/i.test(e.replace(t,``))}function gn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)}function _n(e,t){let n=e.toLowerCase();return n.startsWith(`on`)?!1:n===`href`||n===`xlink:href`||n===`src`?gn(t):[`style`,`filter`,`fill`,`stroke`,`clip-path`,`mask`].includes(n)?!hn(t):n!==`xml:base`&&!/javascript\s*:/i.test(t)}function vn(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}function yn(e){return vn(e).replaceAll(`"`,`&quot;`)}function bn(e){if(e.type===`text`)return vn(e.value);let t=[...e.attributes].map(([e,t])=>` ${e}="${yn(t)}"`).join(``);return`<${e.name}${t}>${e.children.map(bn).join(``)}</${e.name}>`}function xn(e){return e.name.toLowerCase().split(`:`).at(-1)??e.name.toLowerCase()}function Sn(e){if(e===void 0||!/^-?\d+(?:\.\d+)?(?:px)?$/.test(e.trim()))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function Cn(e){let t=e.attributes.get(`viewBox`)?.trim().split(/[\s,]+/).map(Number);if(t?.length===4&&t.every(Number.isFinite)&&t[2]>0&&t[3]>0)return t;let n=Sn(e.attributes.get(`width`)),r=Sn(e.attributes.get(`height`));return n!==null&&r!==null?[0,0,n,r]:null}function wn(e,t){let n=e.attributes.get(`style`);if(!n)return null;for(let e of n.split(`;`)){let n=e.indexOf(`:`);if(n>=0&&e.slice(0,n).trim().toLowerCase()===t)return e.slice(n+1).trim()}return null}function Tn(e){let t=(e.attributes.get(`fill`)??wn(e,`fill`)??``).replaceAll(` `,``).toLowerCase();return t===`white`||t===`#fff`||t===`#ffffff`||t===`rgb(255,255,255)`}function En(e){if(e===void 0||!/^-?\d+(?:\.\d+)?$/.test(e.trim()))return null;let t=Number(e);return Number.isFinite(t)?t:null}function Dn(e,t){let n=e.attributes.get(`width`)?.trim(),r=e.attributes.get(`height`)?.trim();if(n===`100%`&&r===`100%`)return!0;let i=En(e.attributes.get(`x`)??`0`),a=En(e.attributes.get(`y`)??`0`),o=En(n),s=En(r);if([i,a,o,s].some(e=>e===null))return!1;let[c,l,u,d]=t,f=.01;return i<=c+f&&a<=l+f&&i+o>=c+u-f&&a+s>=l+d-f}function On(e,t,n){let r=xn(e),i=new Set((e.attributes.get(`class`)??``).toLowerCase().split(/\s+/));return r===`rect`&&i.has(`backdrop`)||r===`rect`&&t!==null&&Tn(e)&&Dn(e,t)?!0:n===`graphviz`&&r===`polygon`&&Tn(e)&&(e.attributes.get(`stroke`)??``).toLowerCase()===`none`}function kn(e,t,n){let r=xn(e)===`svg`?Cn(e)??t:t;e.children=e.children.filter(e=>e.type===`text`||!On(e,r,n)&&(kn(e,r,n),!0))}function An(e,t){let n=(e.attributes.get(`style`)??``).split(`;`).map(e=>e.trim()).filter(Boolean).filter(e=>!/^background(?:-color)?\s*:/i.test(e));n.push(`background-color:${t}`),e.attributes.set(`style`,`${n.join(`;`)};`)}function jn(e,t=[],n=[]){return{type:`element`,name:e,attributes:new Map(t),children:n}}function Mn(e,t,n,r){let i=[],a=null;t.title&&i.push(jn(`title`,[],[{type:`text`,value:t.title}])),t.description&&i.push(jn(`desc`,[],[{type:`text`,value:t.description}]));let o=Cn(e);if((n.padding||n.background||n.frame)&&o===null)throw new pn(`Renderer output has no usable SVG dimensions for presentation settings.`);if(o!==null){let[t,r,s,c]=o,l=n.padding,u=[t-l,r-l,s+l*2,c+l*2];e.attributes.set(`viewBox`,u.join(` `)),e.attributes.has(`width`)&&e.attributes.set(`width`,String(u[2])),e.attributes.has(`height`)&&e.attributes.set(`height`,String(u[3])),n.background&&i.push(jn(`rect`,[[`x`,String(u[0])],[`y`,String(u[1])],[`width`,String(u[2])],[`height`,String(u[3])],[`fill`,n.background]])),n.frame&&(a=jn(`rect`,[[`x`,String(u[0]+.5)],[`y`,String(u[1]+.5)],[`width`,String(Math.max(0,u[2]-1))],[`height`,String(Math.max(0,u[3]-1))],[`fill`,`none`],[`stroke`,`#000000`],[`stroke-width`,`1`],[`vector-effect`,`non-scaling-stroke`]]))}n.background&&(kn(e,o,r),An(e,n.background)),e.children.unshift(...i),a&&e.children.push(a)}function Nn(e,t,n,r){if(e.length>cn)throw new pn(`Rendered SVG is too large.`);let i=null,a=[],o=0,s=null,c=new sn.SaxesParser({xmlns:!0});c.on(`doctype`,e=>{e.includes(`[`)&&(s=Error(`Internal DOCTYPE subsets are not allowed`))}),c.on(`opentag`,e=>{let t=e.local.toLowerCase(),n=t===`foreignobject`||a.some(e=>xn(e)===`foreignobject`);if(o>0||ln.has(t)||n&&!un.has(t)){o++;return}let r=jn(e.name);for(let t of Object.values(e.attributes))_n(t.name,t.value)&&r.attributes.set(t.name,t.value);let c=a.at(-1);c?c.children.push(r):i===null?i=r:s=Error(`Multiple root elements`),a.push(r)});let l=e=>{if(o>0||e===``)return;let t=a.at(-1);if(t){if(xn(t)===`style`&&hn(e))throw new pn(`Renderer output contains unsafe CSS.`);t.children.push({type:`text`,value:e})}else e.trim()!==``&&(s=Error(`Text outside root element`))};c.on(`text`,l),c.on(`cdata`,l),c.on(`closetag`,()=>{o>0?o--:a.pop()}),c.on(`error`,e=>{s=e});try{c.write(e).close()}catch(e){if(e instanceof pn)throw e;s=e}if(s!==null||i===null||xn(i)!==`svg`)throw new pn(`Renderer returned invalid SVG.`);return Mn(i,t,n,r),bn(i)}var Pn=Object.freeze({plantuml:`https://plantuml.render.diagram.zip/v1/svg`,graphviz:`https://graphviz.render.diagram.zip/v1/svg`,d2:`https://d2.render.diagram.zip/v1/svg`,c4plantuml:`https://c4plantuml.render.diagram.zip/v1/svg`,blockdiag:`https://blockdiag.render.diagram.zip/v1/svg`,seqdiag:`https://seqdiag.render.diagram.zip/v1/svg`,actdiag:`https://actdiag.render.diagram.zip/v1/svg`,nwdiag:`https://nwdiag.render.diagram.zip/v1/svg`,packetdiag:`https://packetdiag.render.diagram.zip/v1/svg`,rackdiag:`https://rackdiag.render.diagram.zip/v1/svg`,bytefield:`https://bytefield.render.diagram.zip/v1/svg`,dbml:`https://dbml.render.diagram.zip/v1/svg`,diagramsnet:`https://diagramsnet.render.diagram.zip/v1/svg`,ditaa:`https://ditaa.render.diagram.zip/v1/svg`,erd:`https://erd.render.diagram.zip/v1/svg`,goat:`https://goat.render.diagram.zip/v1/svg`,nomnoml:`https://nomnoml.render.diagram.zip/v1/svg`,pikchr:`https://pikchr.render.diagram.zip/v1/svg`,structurizr:`https://structurizr.render.diagram.zip/v1/svg`,svgbob:`https://svgbob.render.diagram.zip/v1/svg`,symbolator:`https://symbolator.render.diagram.zip/v1/svg`,tikz:`https://tikz.render.diagram.zip/v1/svg`,umlet:`https://umlet.render.diagram.zip/v1/svg`,vega:`https://vega.render.diagram.zip/v1/svg`,vegalite:`https://vegalite.render.diagram.zip/v1/svg`,wavedrom:`https://wavedrom.render.diagram.zip/v1/svg`,wireviz:`https://wireviz.render.diagram.zip/v1/svg`}),Fn=Object.freeze([`mermaid`,`bpmn`,`excalidraw`,`bytefield`,`nomnoml`,`vega`,`vegalite`,`wavedrom`,`blockdiag`,`seqdiag`,`actdiag`,`nwdiag`,`packetdiag`,`rackdiag`,`graphviz`,`erd`,`pikchr`,`svgbob`,`wireviz`]);function In(e){return Fn.includes(e)}function Ln(e){return Pn[e]??null}function W(e,t,n){return Math.min(Math.max(e,t),n)}var Rn=class{constructor({stage:e,image:t,status:n,minimap:r,minimapImage:i,minimapViewport:a}){this.stage=e,this.image=t,this.status=n,this.minimap=r,this.minimapImage=i,this.minimapViewport=a,this.scale=1,this.x=0,this.y=0,this.objectUrl=null,this.abortController=null,this.requestNumber=0,this.pendingRender=null,this.renderLoop=null,this.latestRenderKey=null,this.latestSvgBlob=null,this.latestRendererIdentity=null,this.imageFallbackUrl=null,this.activeImageUrl=null,this.drag=null,this.image.addEventListener(`load`,()=>{this.image.src===this.activeImageUrl&&(this.imageFallbackUrl=null,this.setStatus(`Rendered`,`ready`),this.fit())}),this.image.addEventListener(`error`,()=>this.retryBlockedImage()),this.stage.addEventListener(`pointerdown`,e=>this.startPan(e)),this.stage.addEventListener(`pointermove`,e=>this.pan(e)),this.stage.addEventListener(`pointerup`,e=>this.endPan(e)),this.stage.addEventListener(`pointercancel`,e=>this.endPan(e)),this.stage.addEventListener(`wheel`,e=>this.wheelZoom(e),{passive:!1}),this.minimap.addEventListener(`pointerdown`,e=>this.moveFromMinimap(e)),new ResizeObserver(()=>this.updateTransform()).observe(this.stage)}render({type:e,source:t,options:n={},meta:r={},presentation:i={}}){if(!t.trim()){this.requestNumber++,this.pendingRender=null,this.abortController?.abort(),this.setStatus(`Write something to render.`,`idle`);return}let a=JSON.stringify({type:e,source:t,options:n,meta:r,presentation:i});return this.latestRenderKey===a&&this.latestSvgBlob?Promise.resolve():(this.pendingRender={type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:++this.requestNumber},this.abortController?.abort(),this.renderLoop||=this.drainRenderQueue(),this.renderLoop)}async drainRenderQueue(){try{for(;this.pendingRender;){let e=this.pendingRender;this.pendingRender=null,await this.performRender(e)}}finally{this.renderLoop=null,this.pendingRender&&(this.renderLoop=this.drainRenderQueue())}}async performRender({type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:o}){let s=new AbortController;this.abortController=s,this.setStatus(`Rendering…`,`loading`),this.stage.style.setProperty(`--render-background`,`var(--preview-bg)`);try{let c=nn(e),l;if(c)try{let a=await c.render({type:e,source:t,options:n},s.signal);l={body:Nn(a.body,r,i,e),identity:{unit:e,build:a.build||a.version,pipeline:Array.isArray(a.pipeline)?a.pipeline:[e]}},this.status.dataset.cache=`browser`,this.status.dataset.renderer=e}catch(a){if(a.name===`AbortError`||In(e))throw a;l=await this.renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},s.signal)}else l=await this.renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},s.signal);if(o!==this.requestNumber)return;let{blob:u,background:d}=this.normalizedSvgBlob(l.body);this.latestRenderKey=a,this.latestSvgBlob=u,this.latestRendererIdentity=l.identity,this.imageFallbackUrl=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(await u.text())}`,this.stage.style.setProperty(`--render-background`,d);let f=URL.createObjectURL(u),p=this.objectUrl;this.objectUrl=f,this.activeImageUrl=f,this.image.src=f,this.minimapImage.src=f,this.image.hidden=!1,this.setStatus(`Loading image…`,`loading`),p&&URL.revokeObjectURL(p)}catch(e){if(e.name===`AbortError`)return;this.setStatus(e.message||`Could not render this diagram.`,`error`)}finally{this.abortController===s&&(this.abortController=null)}}async renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},a){let o=Ln(e);if(o){try{let s=await this.renderRequest(o,{source:t,format:`svg`,options:n,metadata:r,presentation:i},a);if(s.ok||s.status<500)return await this.renderResponse(s,e);await s.body?.cancel()}catch(t){if(t.name===`AbortError`||In(e))throw t}if(In(e))throw Error(`The ${e} renderer unit is unavailable.`)}let s=await this.renderRequest(`/render/v1/svg`,{engine:e,source:t,format:`svg`,options:n,metadata:r,presentation:i},a);return this.renderResponse(s,e)}renderRequest(e,t,n){return fetch(e,{method:`POST`,headers:{Accept:`image/svg+xml`,"Content-Type":`application/json`},body:JSON.stringify(t),signal:n})}async renderResponse(e,t){if(!e.ok)throw Error(await this.errorMessage(e));this.status.dataset.cache=e.headers.get(`X-Diagram-Cache`)?.toLowerCase()??`miss`,this.status.dataset.renderer=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Renderer`)?.toLowerCase()??`gateway`;let n=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Engine`)?.toLowerCase()??t,r=e.headers.get(`X-Renderer-Build`)??e.headers.get(`X-Diagram-Engine-Version`)??`${n}-unknown`,i=(e.headers.get(`X-Diagram-Pipeline`)??n).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return{body:await e.text(),identity:{unit:n,build:r,pipeline:i}}}retryBlockedImage(){if(this.image.src===this.activeImageUrl){if(this.imageFallbackUrl&&this.activeImageUrl.startsWith(`blob:`)){let e=this.imageFallbackUrl;this.imageFallbackUrl=null,this.objectUrl&&URL.revokeObjectURL(this.objectUrl),this.objectUrl=null,this.activeImageUrl=e,this.image.src=e,this.minimapImage.src=e;return}this.setStatus(`The rendered image was blocked or invalid.`,`error`)}}svgBlobFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestSvgBlob:null}rendererIdentityFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestRendererIdentity:null}async errorMessage(e){let t=await e.text();if(e.headers.get(`Content-Type`)?.includes(`application/json`))try{let e=JSON.parse(t);if(typeof e?.error?.message==`string`)return e.error.message}catch{}return new DOMParser().parseFromString(t,`text/html`).body.textContent.trim().replace(/\s+/g,` `)||`Render failed with HTTP ${e.status}.`}normalizedSvgBlob(e){let t=new DOMParser().parseFromString(e,`image/svg+xml`).documentElement,n=t.getAttribute(`viewBox`)?.trim().split(/[\s,]+/).map(Number);t.nodeName===`svg`&&n?.length===4&&n.every(Number.isFinite)&&(t.hasAttribute(`width`)||t.setAttribute(`width`,String(n[2])),t.hasAttribute(`height`)||t.setAttribute(`height`,String(n[3])),e=new XMLSerializer().serializeToString(t));let r=t.style.backgroundColor||t.style.background,i=r&&r!==`transparent`?r:`#ffffff`;return{blob:new Blob([e],{type:`image/svg+xml`}),background:i}}setStatus(e,t){this.status.textContent=e,this.status.dataset.state=t}zoom(e){if(this.image.hidden)return;let t=this.stage.getBoundingClientRect();this.zoomAt(e,t.width/2,t.height/2)}zoomAt(e,t,n){let r=W(this.scale*e,.1,8),i=(t-this.x)/this.scale,a=(n-this.y)/this.scale;this.x=t-i*r,this.y=n-a*r,this.scale=r,this.updateTransform()}wheelZoom(e){if(this.image.hidden||e.target.closest(`.preview-toolbar, .minimap`))return;e.preventDefault();let t=this.stage.getBoundingClientRect(),n=e.deltaY*(e.deltaMode===WheelEvent.DOM_DELTA_LINE?16:e.deltaMode===WheelEvent.DOM_DELTA_PAGE?t.height:1);this.zoomAt(Math.exp(-W(n,-240,240)*.002),e.clientX-t.left,e.clientY-t.top)}oneToOne(){if(this.image.hidden)return;let e=this.stage.getBoundingClientRect();this.scale=1,this.x=(e.width-this.image.naturalWidth)/2,this.y=(e.height-this.image.naturalHeight)/2,this.updateTransform()}fit(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=Math.min(64,e.width*.12);this.scale=W(Math.min((e.width-t*2)/this.image.naturalWidth,(e.height-t*2)/this.image.naturalHeight),.1,2),this.x=(e.width-this.image.naturalWidth*this.scale)/2,this.y=(e.height-this.image.naturalHeight*this.scale)/2,this.updateTransform()}updateTransform(){this.image.style.transform=`translate(${this.x}px, ${this.y}px) scale(${this.scale})`,this.updateMinimap()}startPan(e){this.image.hidden||e.button!==0||e.target.closest(`.preview-toolbar, .minimap`)||(this.drag={pointerId:e.pointerId,x:e.clientX,y:e.clientY,originX:this.x,originY:this.y},this.stage.setPointerCapture(e.pointerId),this.stage.dataset.dragging=`true`)}pan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.x=this.drag.originX+e.clientX-this.drag.x,this.y=this.drag.originY+e.clientY-this.drag.y,this.updateTransform())}endPan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.drag=null,delete this.stage.dataset.dragging)}moveFromMinimap(e){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let t=this.minimap.getBoundingClientRect(),n=Math.min(t.width/this.image.naturalWidth,t.height/this.image.naturalHeight),r=(t.width-this.image.naturalWidth*n)/2,i=(t.height-this.image.naturalHeight*n)/2,a=(e.clientX-t.left-r)/n,o=(e.clientY-t.top-i)/n,s=this.stage.getBoundingClientRect();this.x=s.width/2-a*this.scale,this.y=s.height/2-o*this.scale,this.updateTransform()}updateMinimap(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=this.image.naturalWidth*this.scale,n=this.image.naturalHeight*this.scale,r=this.x>=0&&this.y>=0&&this.x+t<=e.width&&this.y+n<=e.height;if(this.minimap.hidden=r,r)return;let i=this.minimap.getBoundingClientRect(),a=Math.min(i.width/this.image.naturalWidth,i.height/this.image.naturalHeight),o=(i.width-this.image.naturalWidth*a)/2,s=(i.height-this.image.naturalHeight*a)/2,c=W(-this.x/this.scale,0,this.image.naturalWidth),l=W(-this.y/this.scale,0,this.image.naturalHeight),u=W((e.width-this.x)/this.scale,0,this.image.naturalWidth),d=W((e.height-this.y)/this.scale,0,this.image.naturalHeight);this.minimapViewport.style.left=`${o+c*a}px`,this.minimapViewport.style.top=`${s+l*a}px`,this.minimapViewport.style.width=`${Math.max(4,(u-c)*a)}px`,this.minimapViewport.style.height=`${Math.max(4,(d-l)*a)}px`}},zn=`diagram.zip:draft:local:v2`,G=`diagram.zip:draft:alias:v1:`,Bn=`diagram.zip:write:v1:`,K=new Et,Vn,Hn,q=!1,Un=``,J={aliasId:null,contentId:null,renderId:null,revision:null,mode:`open`,savedMode:null,writeCapability:null,savedState:null,savedSnapshot:null,bundleKey:null,keyEnvelope:null,encryptedContent:null,encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!0},Wn=new Map;document.querySelector(`#app`).innerHTML=`16371638 ========16381639 ${h}.`);break;case m:switch(t){case`xml`:break;case``:e.fail(`the default namespace may not be set to ${n}.`);break;default:e.fail(`may not assign the xml namespace to another prefix.`)}}}function L(e,t){for(let n of Object.keys(t))$e(e,n,t[n])}var et=e=>p.test(e),tt=e=>l.test(e),R=0,nt=1,rt=2;e.EVENTS=[`xmldecl`,`text`,`processinginstruction`,`doctype`,`comment`,`opentagstart`,`attribute`,`opentag`,`closetag`,`cdata`,`error`,`end`,`ready`];var z={xmldecl:`xmldeclHandler`,text:`textHandler`,processinginstruction:`piHandler`,doctype:`doctypeHandler`,comment:`commentHandler`,opentagstart:`openTagStartHandler`,attribute:`attributeHandler`,opentag:`openTagHandler`,closetag:`closeTagHandler`,cdata:`cdataHandler`,error:`errorHandler`,end:`endHandler`,ready:`readyHandler`};e.SaxesParser=class{constructor(e){this.opt=e??{},this.fragmentOpt=!!this.opt.fragment;let t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=this.opt.position!==!1,this.fileName=this.opt.fileName,t){this.nameStartCheck=d,this.nameCheck=f,this.isName=et,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},ee);let e=this.opt.additionalNamespaces;e!=null&&(L(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=o,this.nameCheck=s,this.isName=tt,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var e;this.openWakaBang=``,this.text=``,this.name=``,this.piTarget=``,this.entity=``,this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk=``,this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=R,this.attribList=[];let{fragmentOpt:t}=this;this.state=t?y:ne,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=[`version`],this.entityReturnState=void 0;let{defaultXMLVersion:n}=this.opt;if(n===void 0){if(this.opt.forceXMLVersion===!0)throw Error(`forceXMLVersion set but defaultXMLVersion is not set`);n=`1.0`}this.setXMLVersion(n),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(te),(e=this.readyHandler)==null||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[z[e]]=t}off(e){this[z[e]]=void 0}makeError(e){let t=this.fileName??``;return this.trackPosition&&(t.length>0&&(t+=`:`),t+=`${this.line}:${this.column}`),t.length>0&&(t+=`: `),Error(t+e)}fail(e){let t=this.makeError(e),n=this.errorHandler;if(n===void 0)throw t;return n(t),this}write(e){if(this.closed)return this.fail(`cannot write after close; assign an onready handler.`);let t=!1;e===null?(t=!0,e=``):typeof e==`object`&&(e=e.toString()),this.carriedFromPrevious!==void 0&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let n=e.length,r=e.charCodeAt(n-1);!t&&(r===Ve||r>=55296&&r<=56319)&&(this.carriedFromPrevious=e[n-1],n--,e=e.slice(0,n));let{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i<n;)i[this.state].call(this);return this.chunkPosition+=n,t?this.end():this}close(){return this.write(null)}getCode10(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>=He||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:return e.charCodeAt(t+1)===T&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCode11(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>31&&n<127||n>159&&n!==P||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:{let n=e.charCodeAt(t+1);(n===T||n===N)&&(this.i=t+2)}case N:case P:return this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCodeNorm(){let e=this.getCode();return e===_?T:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode(),i=r===_,a=i?T:r;if(a===g||e.includes(a))return this.text+=n.slice(t,this.prevI),a;i&&(this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i)}}captureToChar(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode();switch(r){case _:this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i,r=T;break;case g:return this.text+=n.slice(t),!1}if(r===e)return this.text+=n.slice(t,this.prevI),!0}}captureNameChars(){let{chunk:e,i:t}=this;for(;;){let n=this.getCode();if(n===g)return this.name+=e.slice(t),g;if(!s(n))return this.name+=e.slice(t,this.prevI),n===_?T:n}}skipSpaces(){for(;;){let e=this.getCodeNorm();if(e===g||!i(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,e===`1.0`?(this.isChar=a,this.getCode=this.getCode10):(this.isChar=u,this.getCode=this.getCode11)}sBegin(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=re}sBeginWhitespace(){let e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case D:if(this.state=he,this.text.length!==0)throw Error(`no-empty text at start`);break;case g:break;default:this.unget(),this.state=y,this.xmlDeclPossible=!1}}sDoctype(){var e;let t=this.captureTo(Xe);switch(t){case k:(e=this.doctypeHandler)==null||e.call(this,this.text),this.text=``,this.state=y,this.doctype=!0;break;case g:break;default:this.text+=String.fromCodePoint(t),t===j?this.state=v:F(t)&&(this.state=ae,this.q=t)}}sDoctypeQuote(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=ie)}sDTD(){let e=this.captureTo(Ze);e!==g&&(this.text+=String.fromCodePoint(e),e===M?this.state=ie:e===D?this.state=se:F(e)&&(this.state=oe,this.q=e))}sDTDQuoted(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=v,this.q=null)}sDTDOpenWaka(){let e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case Ue:this.state=ce,this.openWakaBang=``;break;case A:this.state=fe;break;default:this.state=v}}sDTDOpenWakaBang(){let e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,t!==`-`&&(this.state=t===`--`?le:v,this.openWakaBang=``)}sDTDComment(){this.captureToChar(qe)&&(this.text+=`-`,this.state=ue)}sDTDCommentEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=e===qe?de:le}sDTDCommentEnded(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k?this.state=v:(this.fail(`malformed comment.`),this.state=le)}sDTDPI(){this.captureToChar(A)&&(this.text+=`?`,this.state=pe)}sDTDPIEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k&&(this.state=v)}sText(){this.tags.length===0?this.handleTextOutsideRoot():this.handleTextInRoot()}sEntity(){let{i:e}=this,{chunk:t}=this;loop:for(;;)switch(this.getCode()){case _:this.entity+=`${t.slice(e,this.prevI)}\n`,e=this.i;break;case Je:{let{entityReturnState:n}=this,r=this.entity+t.slice(e,this.prevI);this.state=n;let i;r===``?(this.fail(`empty entity name.`),i=`&;`):(i=this.parseEntity(r),this.entity=``),(n!==y||this.textHandler!==void 0)&&(this.text+=i);break loop}case g:this.entity+=t.slice(e);break loop}}sOpenWaka(){let e=this.getCode();if(o(e))this.state=Ne,this.unget(),this.xmlDeclPossible=!1;else switch(e){case E:this.state=Re,this.xmlDeclPossible=!1;break;case Ue:this.state=ge,this.openWakaBang=``,this.xmlDeclPossible=!1;break;case A:this.state=Ce;break;default:this.fail(`disallowed character in tag name`),this.state=y,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case`[CDATA[`:!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0),this.state=be,this.openWakaBang=``;break;case`--`:this.state=_e,this.openWakaBang=``;break;case`DOCTYPE`:this.state=ie,(this.doctype||this.sawRoot)&&this.fail(`inappropriately located doctype declaration.`),this.openWakaBang=``;break;default:this.openWakaBang.length>=7&&this.fail(`incorrect syntax.`)}}sComment(){this.captureToChar(qe)&&(this.state=ve)}sCommentEnding(){var e;let t=this.getCodeNorm();t===qe?(this.state=ye,(e=this.commentHandler)==null||e.call(this,this.text),this.text=``):(this.text+=`-${String.fromCodePoint(t)}`,this.state=_e)}sCommentEnded(){let e=this.getCodeNorm();e===k?this.state=y:(this.fail(`malformed comment.`),this.text+=`--${String.fromCodePoint(e)}`,this.state=_e)}sCData(){this.captureToChar(M)&&(this.state=xe)}sCDataEnding(){let e=this.getCodeNorm();e===M?this.state=Se:(this.text+=`]${String.fromCodePoint(e)}`,this.state=be)}sCDataEnding2(){var e;let t=this.getCodeNorm();switch(t){case k:(e=this.cdataHandler)==null||e.call(this,this.text),this.text=``,this.state=y;break;case M:this.text+=`]`;break;default:this.text+=`]]${String.fromCodePoint(t)}`,this.state=be}}sPIFirstChar(){let e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=we):e===A||i(e)?(this.fail(`processing instruction without a target.`),this.state=e===A?Ee:Te):(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(e),this.state=we)}sPIRest(){let{chunk:e,i:t}=this;for(;;){let n=this.getCodeNorm();if(n===g){this.piTarget+=e.slice(t);return}if(!this.nameCheck(n)){this.piTarget+=e.slice(t,this.prevI);let r=n===A;r||i(n)?this.piTarget===`xml`?(this.xmlDeclPossible||this.fail(`an XML declaration must be at the start of the document.`),this.state=r?b:De):this.state=r?Ee:Te:(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(n));break}}}sPIBody(){if(this.text.length===0){let e=this.getCodeNorm();e===A?this.state=Ee:i(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(A)&&(this.state=Ee)}sPIEnding(){var e;let t=this.getCodeNorm();if(t===k){let{piTarget:t}=this;t.toLowerCase()===`xml`&&this.fail(`the XML declaration must appear at the start of the document.`),(e=this.piHandler)==null||e.call(this,{target:t,body:this.text}),this.piTarget=this.text=``,this.state=y}else t===A?this.text+=`?`:(this.text+=`?${String.fromCodePoint(t)}`,this.state=Te);this.xmlDeclPossible=!1}sXMLDeclNameStart(){let e=this.skipSpaces();if(e===A){this.state=b;return}e!==g&&(this.state=Oe,this.name=String.fromCodePoint(e))}sXMLDeclName(){let e=this.captureTo(Qe);if(e===A){this.state=b,this.name+=this.text,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(i(e)||e===O){if(this.name+=this.text,this.text=``,!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail(`did not expect any more name/value pairs.`);break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(`, `)}`)}this.state=e===O?Ae:ke}}sXMLDeclEq(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(e!==O&&this.fail(`value required.`),this.state=Ae)}sXMLDeclValueStart(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(F(e)?this.q=e:(this.fail(`value must be quoted.`),this.q=He),this.state=je)}sXMLDeclValue(){let e=this.captureTo([this.q,A]);if(e===A){this.state=b,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(e===g)return;let t=this.text;switch(this.text=``,this.name){case`version`:{this.xmlDeclExpects=[`encoding`,`standalone`];let e=t;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail(`version number must match /^1\\.[0-9]+$/.`);break}case`encoding`:/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail(`encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/.`),this.xmlDeclExpects=[`standalone`],this.xmlDecl.encoding=t;break;case`standalone`:t!==`yes`&&t!==`no`&&this.fail(`standalone value must match "yes" or "no".`),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name=``,this.state=Me}sXMLDeclSeparator(){let e=this.getCodeNorm();if(e===A){this.state=b;return}i(e)||(this.fail(`whitespace required.`),this.unget()),this.state=De}sXMLDeclEnding(){var e;this.getCodeNorm()===k?(this.piTarget===`xml`?this.name!==`version`&&this.xmlDeclExpects.includes(`version`)&&this.fail(`XML declaration must contain a version.`):this.fail(`processing instructions are not allowed before root.`),(e=this.xmldeclHandler)==null||e.call(this,this.xmlDecl),this.name=``,this.piTarget=this.text=``,this.state=y):this.fail(`The character ? is disallowed anywhere in XML declarations.`),this.xmlDeclPossible=!1}sOpenTag(){var e;let t=this.captureNameChars();if(t===g)return;let n=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name=``,this.xmlnsOpt&&(this.topNS=n.ns=Object.create(null)),(e=this.openTagStartHandler)==null||e.call(this,n),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail(`documents may contain only one root.`),t){case k:this.openTag();break;case E:this.state=Pe;break;default:i(t)||this.fail(`disallowed character in tag name.`),this.state=x}}sOpenTagSlash(){this.getCode()===k?this.openSelfClosingTag():(this.fail(`forward-slash in opening tag not followed by >.`),this.state=x)}sAttrib(){let e=this.skipSpaces();e!==g&&(o(e)?(this.unget(),this.state=S):e===k?this.openTag():e===E?this.state=Pe:this.fail(`disallowed character in attribute name.`))}sAttribName(){let e=this.captureNameChars();e===O?this.state=w:i(e)?this.state=C:e===k?(this.fail(`attribute without value.`),this.pushAttrib(this.name,this.name),this.name=this.text=``,this.openTag()):e!==g&&this.fail(`disallowed character in attribute name.`)}sAttribNameSawWhite(){let e=this.skipSpaces();switch(e){case g:return;case O:this.state=w;break;default:this.fail(`attribute without value.`),this.text=``,this.name=``,e===k?this.openTag():o(e)?(this.unget(),this.state=S):(this.fail(`disallowed character in attribute name.`),this.state=x)}}sAttribValue(){let e=this.getCodeNorm();F(e)?(this.q=e,this.state=Fe):i(e)||(this.fail(`unquoted attribute value.`),this.state=Le,this.unget())}sAttribValueQuoted(){let{q:e,chunk:t}=this,{i:n}=this;for(;;)switch(this.getCode()){case e:this.pushAttrib(this.name,this.text+t.slice(n,this.prevI)),this.name=this.text=``,this.q=null,this.state=Ie;return;case Ge:this.text+=t.slice(n,this.prevI),this.state=me,this.entityReturnState=Fe;return;case T:case _:case Be:this.text+=`${t.slice(n,this.prevI)} `,n=this.i;break;case D:this.text+=t.slice(n,this.prevI),this.fail(`disallowed character.`);return;case g:this.text+=t.slice(n);return}}sAttribValueClosed(){let e=this.getCodeNorm();i(e)?this.state=x:e===k?this.openTag():e===E?this.state=Pe:o(e)?(this.fail(`no whitespace between attributes.`),this.unget(),this.state=S):this.fail(`disallowed character in attribute name.`)}sAttribValueUnquoted(){let e=this.captureTo(I);switch(e){case Ge:this.state=me,this.entityReturnState=Le;break;case D:this.fail(`disallowed character.`);break;case g:break;default:this.text.includes(`]]>`)&&this.fail(`the string "]]>" is disallowed in char data.`),this.pushAttrib(this.name,this.text),this.name=this.text=``,e===k?this.openTag():this.state=x}}sCloseTag(){let e=this.captureNameChars();e===k?this.closeTag():i(e)?this.state=ze:e!==g&&this.fail(`disallowed character in closing tag.`)}sCloseTagSawWhite(){switch(this.skipSpaces()){case k:this.closeTag();break;case g:break;default:this.fail(`disallowed character in closing tag.`)}}handleTextInRoot(){let{i:e,forbiddenState:t}=this,{chunk:n,textHandler:r}=this;scanLoop:for(;;)switch(this.getCode()){case D:if(this.state=he,r!==void 0){let{text:t}=this,i=n.slice(e,this.prevI);t.length===0?i.length!==0&&r(i):(r(t+i),this.text=``)}t=R;break scanLoop;case Ge:this.state=me,this.entityReturnState=y,r!==void 0&&(this.text+=n.slice(e,this.prevI)),t=R;break scanLoop;case M:switch(t){case R:t=nt;break;case nt:t=rt;break;case rt:break;default:throw Error(`impossible state`)}break;case k:t===rt&&this.fail(`the string "]]>" is disallowed in char data.`),t=R;break;case _:r!==void 0&&(this.text+=`${n.slice(e,this.prevI)}\n`),e=this.i,t=R;break;case g:r!==void 0&&(this.text+=n.slice(e));break scanLoop;default:t=R}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this,{chunk:t,textHandler:n}=this,r=!1;outRootLoop:for(;;){let a=this.getCode();switch(a){case D:if(this.state=he,n!==void 0){let{text:r}=this,i=t.slice(e,this.prevI);r.length===0?i.length!==0&&n(i):(n(r+i),this.text=``)}break outRootLoop;case Ge:this.state=me,this.entityReturnState=y,n!==void 0&&(this.text+=t.slice(e,this.prevI)),r=!0;break outRootLoop;case _:n!==void 0&&(this.text+=`${t.slice(e,this.prevI)}\n`),e=this.i;break;case g:n!==void 0&&(this.text+=t.slice(e));break outRootLoop;default:i(a)||(r=!0)}}r&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var n;let{prefix:r,local:i}=this.qname(e),a={name:e,prefix:r,local:i,value:t};if(this.attribList.push(a),(n=this.attributeHandler)==null||n.call(this,a),r===`xmlns`){let e=t.trim();this.currentXMLVersion===`1.0`&&e===``&&this.fail(`invalid attempt to undefine prefix in XML 1.0`),this.topNS[i]=e,$e(this,i,e)}else if(e===`xmlns`){let e=t.trim();this.topNS[``]=e,$e(this,``,e)}}pushAttribPlain(e,t){var n;let r={name:e,value:t};this.attribList.push(r),(n=this.attributeHandler)==null||n.call(this,r)}end(){var e,t;this.sawRoot||this.fail(`document must contain a root element.`);let{tags:n}=this;for(;n.length>0;){let e=n.pop();this.fail(`unclosed tag: ${e.name}`)}this.state!==ne&&this.state!==y&&this.fail(`unexpected end.`);let{text:r}=this;return r.length!==0&&((e=this.textHandler)==null||e.call(this,r),this.text=``),this._closed=!0,(t=this.endHandler)==null||t.call(this),this._init(),this}resolve(e){var t;let n=this.topNS[e];if(n!==void 0)return n;let{tags:r}=this;for(let t=r.length-1;t>=0;t--)if(n=r[t].ns[e],n!==void 0)return n;return n=this.ns[e],n===void 0?(t=this.opt).resolvePrefix?.call(t,e):n}qname(e){let t=e.indexOf(`:`);if(t===-1)return{prefix:``,local:e};let n=e.slice(t+1),r=e.slice(0,t);return(r===``||n===``||n.includes(`:`))&&this.fail(`malformed name: ${e}.`),{prefix:r,local:n}}processAttribsNS(){let{attribList:e}=this,t=this.tag;{let{prefix:e,local:n}=this.qname(t.name);t.prefix=e,t.local=n;let r=t.uri=this.resolve(e)??``;e!==``&&(e===`xmlns`&&this.fail(`tags may not have "xmlns" as prefix.`),r===``&&(this.fail(`unbound namespace prefix: ${JSON.stringify(e)}.`),t.uri=e))}if(e.length===0)return;let{attributes:n}=t,r=new Set;for(let t of e){let{name:e,prefix:i,local:a}=t,o,s;i===``?(o=e===`xmlns`?h:``,s=e):(o=this.resolve(i),o===void 0&&(this.fail(`unbound namespace prefix: ${JSON.stringify(i)}.`),o=i),s=`{${o}}${a}`),r.has(s)&&this.fail(`duplicate attribute: ${s}.`),r.add(s),t.uri=o,n[e]=t}this.attribList=[]}processAttribsPlain(){let{attribList:e}=this,t=this.tag.attributes;for(let{name:n,value:r}of e)t[n]!==void 0&&this.fail(`duplicate attribute: ${n}.`),t[n]=r;this.attribList=[]}openTag(){var e;this.processAttribs();let{tags:t}=this,n=this.tag;n.isSelfClosing=!1,(e=this.openTagHandler)==null||e.call(this,n),t.push(n),this.state=y,this.name=``}openSelfClosingTag(){var e,t;this.processAttribs();let{tags:n}=this,r=this.tag;r.isSelfClosing=!0,(e=this.openTagHandler)==null||e.call(this,r),(t=this.closeTagHandler)==null||t.call(this,r),(this.tag=n[n.length-1]??null)===null&&(this.closedRoot=!0),this.state=y,this.name=``}closeTag(){let{tags:e,name:t}=this;if(this.state=y,this.name=``,t===``){this.fail(`weird empty close tag.`),this.text+=`</>`;return}let n=this.closeTagHandler,r=e.length;for(;r-->0;){let r=this.tag=e.pop();if(this.topNS=r.ns,n?.(r),r.name===t)break;this.fail(`unexpected close tag.`)}r===0?this.closedRoot=!0:r<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=`</${t}>`)}parseEntity(e){if(e[0]!==`#`){let t=this.ENTITIES[e];return t===void 0?(this.fail(this.isName(e)?`undefined entity.`:`disallowed character in entity name.`),`&${e};`):t}let t=NaN;return e[1]===`x`&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail(`malformed character entity.`),`&${e};`)}}}))(),cn=4194304,ln=new Set([`script`,`iframe`,`object`,`embed`,`audio`,`video`]),un=new Set([`foreignobject`,`div`,`span`,`p`,`br`,`b`,`strong`,`i`,`em`,`small`,`sub`,`sup`,`code`,`ul`,`ol`,`li`,`a`]),dn=/^data:image\/(?:png|jpeg|gif|webp);base64,[a-z0-9+/=\s]+$/i,fn=/^data:(?:font\/(?:woff2?|opentype|truetype)|application\/(?:x-)?font-woff2?);base64,[a-z0-9+/=\s]+$/i,pn=class extends Error{constructor(e){super(e),this.name=`ClientSvgError`}};function mn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)||fn.test(t)}function hn(e){if(/@import|expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|-moz-binding/i.test(e))return!0;let t=/url\s*\(\s*(['"]?)(.*?)\1\s*\)/gi;for(let n of e.matchAll(t))if(!mn(n[2]??``))return!0;return/url\s*\(/i.test(e.replace(t,``))}function gn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)}function _n(e,t){let n=e.toLowerCase();return n.startsWith(`on`)?!1:n===`href`||n===`xlink:href`||n===`src`?gn(t):[`style`,`filter`,`fill`,`stroke`,`clip-path`,`mask`].includes(n)?!hn(t):n!==`xml:base`&&!/javascript\s*:/i.test(t)}function vn(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}function yn(e){return vn(e).replaceAll(`"`,`&quot;`)}function bn(e){if(e.type===`text`)return vn(e.value);let t=[...e.attributes].map(([e,t])=>` ${e}="${yn(t)}"`).join(``);return`<${e.name}${t}>${e.children.map(bn).join(``)}</${e.name}>`}function xn(e){return e.name.toLowerCase().split(`:`).at(-1)??e.name.toLowerCase()}function Sn(e){if(e===void 0||!/^-?\d+(?:\.\d+)?(?:px)?$/.test(e.trim()))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function Cn(e){let t=e.attributes.get(`viewBox`)?.trim().split(/[\s,]+/).map(Number);if(t?.length===4&&t.every(Number.isFinite)&&t[2]>0&&t[3]>0)return t;let n=Sn(e.attributes.get(`width`)),r=Sn(e.attributes.get(`height`));return n!==null&&r!==null?[0,0,n,r]:null}function wn(e,t){let n=e.attributes.get(`style`);if(!n)return null;for(let e of n.split(`;`)){let n=e.indexOf(`:`);if(n>=0&&e.slice(0,n).trim().toLowerCase()===t)return e.slice(n+1).trim()}return null}function Tn(e){let t=(e.attributes.get(`fill`)??wn(e,`fill`)??``).replaceAll(` `,``).toLowerCase();return t===`white`||t===`#fff`||t===`#ffffff`||t===`rgb(255,255,255)`}function En(e){if(e===void 0||!/^-?\d+(?:\.\d+)?$/.test(e.trim()))return null;let t=Number(e);return Number.isFinite(t)?t:null}function Dn(e,t){let n=e.attributes.get(`width`)?.trim(),r=e.attributes.get(`height`)?.trim();if(n===`100%`&&r===`100%`)return!0;let i=En(e.attributes.get(`x`)??`0`),a=En(e.attributes.get(`y`)??`0`),o=En(n),s=En(r);if([i,a,o,s].some(e=>e===null))return!1;let[c,l,u,d]=t,f=.01;return i<=c+f&&a<=l+f&&i+o>=c+u-f&&a+s>=l+d-f}function On(e,t,n){let r=xn(e),i=new Set((e.attributes.get(`class`)??``).toLowerCase().split(/\s+/));return r===`rect`&&i.has(`backdrop`)||r===`rect`&&t!==null&&Tn(e)&&Dn(e,t)?!0:n===`graphviz`&&r===`polygon`&&Tn(e)&&(e.attributes.get(`stroke`)??``).toLowerCase()===`none`}function kn(e,t,n){let r=xn(e)===`svg`?Cn(e)??t:t;e.children=e.children.filter(e=>e.type===`text`||!On(e,r,n)&&(kn(e,r,n),!0))}function An(e,t){let n=(e.attributes.get(`style`)??``).split(`;`).map(e=>e.trim()).filter(Boolean).filter(e=>!/^background(?:-color)?\s*:/i.test(e));n.push(`background-color:${t}`),e.attributes.set(`style`,`${n.join(`;`)};`)}function jn(e,t=[],n=[]){return{type:`element`,name:e,attributes:new Map(t),children:n}}function Mn(e,t,n,r){let i=[],a=null;t.title&&i.push(jn(`title`,[],[{type:`text`,value:t.title}])),t.description&&i.push(jn(`desc`,[],[{type:`text`,value:t.description}]));let o=Cn(e);if((n.padding||n.background||n.frame)&&o===null)throw new pn(`Renderer output has no usable SVG dimensions for presentation settings.`);if(o!==null){let[t,r,s,c]=o,l=n.padding,u=[t-l,r-l,s+l*2,c+l*2];e.attributes.set(`viewBox`,u.join(` `)),e.attributes.has(`width`)&&e.attributes.set(`width`,String(u[2])),e.attributes.has(`height`)&&e.attributes.set(`height`,String(u[3])),n.background&&i.push(jn(`rect`,[[`x`,String(u[0])],[`y`,String(u[1])],[`width`,String(u[2])],[`height`,String(u[3])],[`fill`,n.background]])),n.frame&&(a=jn(`rect`,[[`x`,String(u[0]+.5)],[`y`,String(u[1]+.5)],[`width`,String(Math.max(0,u[2]-1))],[`height`,String(Math.max(0,u[3]-1))],[`fill`,`none`],[`stroke`,`#000000`],[`stroke-width`,`1`],[`vector-effect`,`non-scaling-stroke`]]))}n.background&&(kn(e,o,r),An(e,n.background)),e.children.unshift(...i),a&&e.children.push(a)}function Nn(e,t,n,r){if(e.length>cn)throw new pn(`Rendered SVG is too large.`);let i=null,a=[],o=0,s=null,c=new sn.SaxesParser({xmlns:!0});c.on(`doctype`,e=>{e.includes(`[`)&&(s=Error(`Internal DOCTYPE subsets are not allowed`))}),c.on(`opentag`,e=>{let t=e.local.toLowerCase(),n=t===`foreignobject`||a.some(e=>xn(e)===`foreignobject`);if(o>0||ln.has(t)||n&&!un.has(t)){o++;return}let r=jn(e.name);for(let t of Object.values(e.attributes))_n(t.name,t.value)&&r.attributes.set(t.name,t.value);let c=a.at(-1);c?c.children.push(r):i===null?i=r:s=Error(`Multiple root elements`),a.push(r)});let l=e=>{if(o>0||e===``)return;let t=a.at(-1);if(t){if(xn(t)===`style`&&hn(e))throw new pn(`Renderer output contains unsafe CSS.`);t.children.push({type:`text`,value:e})}else e.trim()!==``&&(s=Error(`Text outside root element`))};c.on(`text`,l),c.on(`cdata`,l),c.on(`closetag`,()=>{o>0?o--:a.pop()}),c.on(`error`,e=>{s=e});try{c.write(e).close()}catch(e){if(e instanceof pn)throw e;s=e}if(s!==null||i===null||xn(i)!==`svg`)throw new pn(`Renderer returned invalid SVG.`);return Mn(i,t,n,r),bn(i)}var Pn=Object.freeze({plantuml:`https://plantuml.render.diagram.zip/v1/svg`,graphviz:`https://graphviz.render.diagram.zip/v1/svg`,d2:`https://d2.render.diagram.zip/v1/svg`,c4plantuml:`https://c4plantuml.render.diagram.zip/v1/svg`,blockdiag:`https://blockdiag.render.diagram.zip/v1/svg`,seqdiag:`https://seqdiag.render.diagram.zip/v1/svg`,actdiag:`https://actdiag.render.diagram.zip/v1/svg`,nwdiag:`https://nwdiag.render.diagram.zip/v1/svg`,packetdiag:`https://packetdiag.render.diagram.zip/v1/svg`,rackdiag:`https://rackdiag.render.diagram.zip/v1/svg`,bytefield:`https://bytefield.render.diagram.zip/v1/svg`,dbml:`https://dbml.render.diagram.zip/v1/svg`,diagramsnet:`https://diagramsnet.render.diagram.zip/v1/svg`,ditaa:`https://ditaa.render.diagram.zip/v1/svg`,erd:`https://erd.render.diagram.zip/v1/svg`,goat:`https://goat.render.diagram.zip/v1/svg`,nomnoml:`https://nomnoml.render.diagram.zip/v1/svg`,pikchr:`https://pikchr.render.diagram.zip/v1/svg`,structurizr:`https://structurizr.render.diagram.zip/v1/svg`,svgbob:`https://svgbob.render.diagram.zip/v1/svg`,symbolator:`https://symbolator.render.diagram.zip/v1/svg`,tikz:`https://tikz.render.diagram.zip/v1/svg`,umlet:`https://umlet.render.diagram.zip/v1/svg`,vega:`https://vega.render.diagram.zip/v1/svg`,vegalite:`https://vegalite.render.diagram.zip/v1/svg`,wavedrom:`https://wavedrom.render.diagram.zip/v1/svg`,wireviz:`https://wireviz.render.diagram.zip/v1/svg`}),Fn=Object.freeze([`mermaid`,`bpmn`,`excalidraw`,`plantuml`,`c4plantuml`,`bytefield`,`nomnoml`,`vega`,`vegalite`,`wavedrom`,`blockdiag`,`seqdiag`,`actdiag`,`nwdiag`,`packetdiag`,`rackdiag`,`graphviz`,`erd`,`dbml`,`goat`,`pikchr`,`svgbob`,`wireviz`]);function In(e){return Fn.includes(e)}function Ln(e){return Pn[e]??null}function W(e,t,n){return Math.min(Math.max(e,t),n)}var Rn=class{constructor({stage:e,image:t,status:n,minimap:r,minimapImage:i,minimapViewport:a}){this.stage=e,this.image=t,this.status=n,this.minimap=r,this.minimapImage=i,this.minimapViewport=a,this.scale=1,this.x=0,this.y=0,this.objectUrl=null,this.abortController=null,this.requestNumber=0,this.pendingRender=null,this.renderLoop=null,this.latestRenderKey=null,this.latestSvgBlob=null,this.latestRendererIdentity=null,this.imageFallbackUrl=null,this.activeImageUrl=null,this.drag=null,this.image.addEventListener(`load`,()=>{this.image.src===this.activeImageUrl&&(this.imageFallbackUrl=null,this.setStatus(`Rendered`,`ready`),this.fit())}),this.image.addEventListener(`error`,()=>this.retryBlockedImage()),this.stage.addEventListener(`pointerdown`,e=>this.startPan(e)),this.stage.addEventListener(`pointermove`,e=>this.pan(e)),this.stage.addEventListener(`pointerup`,e=>this.endPan(e)),this.stage.addEventListener(`pointercancel`,e=>this.endPan(e)),this.stage.addEventListener(`wheel`,e=>this.wheelZoom(e),{passive:!1}),this.minimap.addEventListener(`pointerdown`,e=>this.moveFromMinimap(e)),new ResizeObserver(()=>this.updateTransform()).observe(this.stage)}render({type:e,source:t,options:n={},meta:r={},presentation:i={}}){if(!t.trim()){this.requestNumber++,this.pendingRender=null,this.abortController?.abort(),this.setStatus(`Write something to render.`,`idle`);return}let a=JSON.stringify({type:e,source:t,options:n,meta:r,presentation:i});return this.latestRenderKey===a&&this.latestSvgBlob?Promise.resolve():(this.pendingRender={type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:++this.requestNumber},this.abortController?.abort(),this.renderLoop||=this.drainRenderQueue(),this.renderLoop)}async drainRenderQueue(){try{for(;this.pendingRender;){let e=this.pendingRender;this.pendingRender=null,await this.performRender(e)}}finally{this.renderLoop=null,this.pendingRender&&(this.renderLoop=this.drainRenderQueue())}}async performRender({type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:o}){let s=new AbortController;this.abortController=s,this.setStatus(`Rendering…`,`loading`),this.stage.style.setProperty(`--render-background`,`var(--preview-bg)`);try{let c=nn(e),l;if(c)try{let a=await c.render({type:e,source:t,options:n},s.signal);l={body:Nn(a.body,r,i,e),identity:{unit:e,build:a.build||a.version,pipeline:Array.isArray(a.pipeline)?a.pipeline:[e]}},this.status.dataset.cache=`browser`,this.status.dataset.renderer=e}catch(a){if(a.name===`AbortError`||In(e))throw a;l=await this.renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},s.signal)}else l=await this.renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},s.signal);if(o!==this.requestNumber)return;let{blob:u,background:d}=this.normalizedSvgBlob(l.body);this.latestRenderKey=a,this.latestSvgBlob=u,this.latestRendererIdentity=l.identity,this.imageFallbackUrl=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(await u.text())}`,this.stage.style.setProperty(`--render-background`,d);let f=URL.createObjectURL(u),p=this.objectUrl;this.objectUrl=f,this.activeImageUrl=f,this.image.src=f,this.minimapImage.src=f,this.image.hidden=!1,this.setStatus(`Loading image…`,`loading`),p&&URL.revokeObjectURL(p)}catch(e){if(e.name===`AbortError`)return;this.setStatus(e.message||`Could not render this diagram.`,`error`)}finally{this.abortController===s&&(this.abortController=null)}}async renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},a){let o=Ln(e);if(o){try{let s=await this.renderRequest(o,{source:t,format:`svg`,options:n,metadata:r,presentation:i},a);if(s.ok||s.status<500)return await this.renderResponse(s,e);await s.body?.cancel()}catch(t){if(t.name===`AbortError`||In(e))throw t}if(In(e))throw Error(`The ${e} renderer unit is unavailable.`)}let s=await this.renderRequest(`/render/v1/svg`,{engine:e,source:t,format:`svg`,options:n,metadata:r,presentation:i},a);return this.renderResponse(s,e)}renderRequest(e,t,n){return fetch(e,{method:`POST`,headers:{Accept:`image/svg+xml`,"Content-Type":`application/json`},body:JSON.stringify(t),signal:n})}async renderResponse(e,t){if(!e.ok)throw Error(await this.errorMessage(e));this.status.dataset.cache=e.headers.get(`X-Diagram-Cache`)?.toLowerCase()??`miss`,this.status.dataset.renderer=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Renderer`)?.toLowerCase()??`gateway`;let n=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Engine`)?.toLowerCase()??t,r=e.headers.get(`X-Renderer-Build`)??e.headers.get(`X-Diagram-Engine-Version`)??`${n}-unknown`,i=(e.headers.get(`X-Diagram-Pipeline`)??n).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return{body:await e.text(),identity:{unit:n,build:r,pipeline:i}}}retryBlockedImage(){if(this.image.src===this.activeImageUrl){if(this.imageFallbackUrl&&this.activeImageUrl.startsWith(`blob:`)){let e=this.imageFallbackUrl;this.imageFallbackUrl=null,this.objectUrl&&URL.revokeObjectURL(this.objectUrl),this.objectUrl=null,this.activeImageUrl=e,this.image.src=e,this.minimapImage.src=e;return}this.setStatus(`The rendered image was blocked or invalid.`,`error`)}}svgBlobFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestSvgBlob:null}rendererIdentityFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestRendererIdentity:null}async errorMessage(e){let t=await e.text();if(e.headers.get(`Content-Type`)?.includes(`application/json`))try{let e=JSON.parse(t);if(typeof e?.error?.message==`string`)return e.error.message}catch{}return new DOMParser().parseFromString(t,`text/html`).body.textContent.trim().replace(/\s+/g,` `)||`Render failed with HTTP ${e.status}.`}normalizedSvgBlob(e){let t=new DOMParser().parseFromString(e,`image/svg+xml`).documentElement,n=t.getAttribute(`viewBox`)?.trim().split(/[\s,]+/).map(Number);t.nodeName===`svg`&&n?.length===4&&n.every(Number.isFinite)&&(t.hasAttribute(`width`)||t.setAttribute(`width`,String(n[2])),t.hasAttribute(`height`)||t.setAttribute(`height`,String(n[3])),e=new XMLSerializer().serializeToString(t));let r=t.style.backgroundColor||t.style.background,i=r&&r!==`transparent`?r:`#ffffff`;return{blob:new Blob([e],{type:`image/svg+xml`}),background:i}}setStatus(e,t){this.status.textContent=e,this.status.dataset.state=t}zoom(e){if(this.image.hidden)return;let t=this.stage.getBoundingClientRect();this.zoomAt(e,t.width/2,t.height/2)}zoomAt(e,t,n){let r=W(this.scale*e,.1,8),i=(t-this.x)/this.scale,a=(n-this.y)/this.scale;this.x=t-i*r,this.y=n-a*r,this.scale=r,this.updateTransform()}wheelZoom(e){if(this.image.hidden||e.target.closest(`.preview-toolbar, .minimap`))return;e.preventDefault();let t=this.stage.getBoundingClientRect(),n=e.deltaY*(e.deltaMode===WheelEvent.DOM_DELTA_LINE?16:e.deltaMode===WheelEvent.DOM_DELTA_PAGE?t.height:1);this.zoomAt(Math.exp(-W(n,-240,240)*.002),e.clientX-t.left,e.clientY-t.top)}oneToOne(){if(this.image.hidden)return;let e=this.stage.getBoundingClientRect();this.scale=1,this.x=(e.width-this.image.naturalWidth)/2,this.y=(e.height-this.image.naturalHeight)/2,this.updateTransform()}fit(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=Math.min(64,e.width*.12);this.scale=W(Math.min((e.width-t*2)/this.image.naturalWidth,(e.height-t*2)/this.image.naturalHeight),.1,2),this.x=(e.width-this.image.naturalWidth*this.scale)/2,this.y=(e.height-this.image.naturalHeight*this.scale)/2,this.updateTransform()}updateTransform(){this.image.style.transform=`translate(${this.x}px, ${this.y}px) scale(${this.scale})`,this.updateMinimap()}startPan(e){this.image.hidden||e.button!==0||e.target.closest(`.preview-toolbar, .minimap`)||(this.drag={pointerId:e.pointerId,x:e.clientX,y:e.clientY,originX:this.x,originY:this.y},this.stage.setPointerCapture(e.pointerId),this.stage.dataset.dragging=`true`)}pan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.x=this.drag.originX+e.clientX-this.drag.x,this.y=this.drag.originY+e.clientY-this.drag.y,this.updateTransform())}endPan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.drag=null,delete this.stage.dataset.dragging)}moveFromMinimap(e){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let t=this.minimap.getBoundingClientRect(),n=Math.min(t.width/this.image.naturalWidth,t.height/this.image.naturalHeight),r=(t.width-this.image.naturalWidth*n)/2,i=(t.height-this.image.naturalHeight*n)/2,a=(e.clientX-t.left-r)/n,o=(e.clientY-t.top-i)/n,s=this.stage.getBoundingClientRect();this.x=s.width/2-a*this.scale,this.y=s.height/2-o*this.scale,this.updateTransform()}updateMinimap(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=this.image.naturalWidth*this.scale,n=this.image.naturalHeight*this.scale,r=this.x>=0&&this.y>=0&&this.x+t<=e.width&&this.y+n<=e.height;if(this.minimap.hidden=r,r)return;let i=this.minimap.getBoundingClientRect(),a=Math.min(i.width/this.image.naturalWidth,i.height/this.image.naturalHeight),o=(i.width-this.image.naturalWidth*a)/2,s=(i.height-this.image.naturalHeight*a)/2,c=W(-this.x/this.scale,0,this.image.naturalWidth),l=W(-this.y/this.scale,0,this.image.naturalHeight),u=W((e.width-this.x)/this.scale,0,this.image.naturalWidth),d=W((e.height-this.y)/this.scale,0,this.image.naturalHeight);this.minimapViewport.style.left=`${o+c*a}px`,this.minimapViewport.style.top=`${s+l*a}px`,this.minimapViewport.style.width=`${Math.max(4,(u-c)*a)}px`,this.minimapViewport.style.height=`${Math.max(4,(d-l)*a)}px`}},zn=`diagram.zip:draft:local:v2`,G=`diagram.zip:draft:alias:v1:`,Bn=`diagram.zip:write:v1:`,K=new Et,Vn,Hn,q=!1,Un=``,J={aliasId:null,contentId:null,renderId:null,revision:null,mode:`open`,savedMode:null,writeCapability:null,savedState:null,savedSnapshot:null,bundleKey:null,keyEnvelope:null,encryptedContent:null,encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!0},Wn=new Map;document.querySelector(`#app`).innerHTML=`
@@ -1640,6 +1641,9 @@ ${h}.`);break;case m:switch(t){case`xml`:break;case``:e.fail(`the default namesp
16401641 ========16411642 ${h}.`);break;case m:switch(t){case`xml`:break;case``:e.fail(`the default namespace may not be set to ${n}.`);break;default:e.fail(`may not assign the xml namespace to another prefix.`)}}}function L(e,t){for(let n of Object.keys(t))$e(e,n,t[n])}var et=e=>p.test(e),tt=e=>l.test(e),R=0,nt=1,rt=2;e.EVENTS=[`xmldecl`,`text`,`processinginstruction`,`doctype`,`comment`,`opentagstart`,`attribute`,`opentag`,`closetag`,`cdata`,`error`,`end`,`ready`];var z={xmldecl:`xmldeclHandler`,text:`textHandler`,processinginstruction:`piHandler`,doctype:`doctypeHandler`,comment:`commentHandler`,opentagstart:`openTagStartHandler`,attribute:`attributeHandler`,opentag:`openTagHandler`,closetag:`closeTagHandler`,cdata:`cdataHandler`,error:`errorHandler`,end:`endHandler`,ready:`readyHandler`};e.SaxesParser=class{constructor(e){this.opt=e??{},this.fragmentOpt=!!this.opt.fragment;let t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=this.opt.position!==!1,this.fileName=this.opt.fileName,t){this.nameStartCheck=d,this.nameCheck=f,this.isName=et,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},ee);let e=this.opt.additionalNamespaces;e!=null&&(L(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=o,this.nameCheck=s,this.isName=tt,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var e;this.openWakaBang=``,this.text=``,this.name=``,this.piTarget=``,this.entity=``,this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk=``,this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=R,this.attribList=[];let{fragmentOpt:t}=this;this.state=t?y:ne,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=[`version`],this.entityReturnState=void 0;let{defaultXMLVersion:n}=this.opt;if(n===void 0){if(this.opt.forceXMLVersion===!0)throw Error(`forceXMLVersion set but defaultXMLVersion is not set`);n=`1.0`}this.setXMLVersion(n),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(te),(e=this.readyHandler)==null||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[z[e]]=t}off(e){this[z[e]]=void 0}makeError(e){let t=this.fileName??``;return this.trackPosition&&(t.length>0&&(t+=`:`),t+=`${this.line}:${this.column}`),t.length>0&&(t+=`: `),Error(t+e)}fail(e){let t=this.makeError(e),n=this.errorHandler;if(n===void 0)throw t;return n(t),this}write(e){if(this.closed)return this.fail(`cannot write after close; assign an onready handler.`);let t=!1;e===null?(t=!0,e=``):typeof e==`object`&&(e=e.toString()),this.carriedFromPrevious!==void 0&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let n=e.length,r=e.charCodeAt(n-1);!t&&(r===Ve||r>=55296&&r<=56319)&&(this.carriedFromPrevious=e[n-1],n--,e=e.slice(0,n));let{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i<n;)i[this.state].call(this);return this.chunkPosition+=n,t?this.end():this}close(){return this.write(null)}getCode10(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>=He||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:return e.charCodeAt(t+1)===T&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCode11(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>31&&n<127||n>159&&n!==P||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:{let n=e.charCodeAt(t+1);(n===T||n===N)&&(this.i=t+2)}case N:case P:return this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCodeNorm(){let e=this.getCode();return e===_?T:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode(),i=r===_,a=i?T:r;if(a===g||e.includes(a))return this.text+=n.slice(t,this.prevI),a;i&&(this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i)}}captureToChar(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode();switch(r){case _:this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i,r=T;break;case g:return this.text+=n.slice(t),!1}if(r===e)return this.text+=n.slice(t,this.prevI),!0}}captureNameChars(){let{chunk:e,i:t}=this;for(;;){let n=this.getCode();if(n===g)return this.name+=e.slice(t),g;if(!s(n))return this.name+=e.slice(t,this.prevI),n===_?T:n}}skipSpaces(){for(;;){let e=this.getCodeNorm();if(e===g||!i(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,e===`1.0`?(this.isChar=a,this.getCode=this.getCode10):(this.isChar=u,this.getCode=this.getCode11)}sBegin(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=re}sBeginWhitespace(){let e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case D:if(this.state=he,this.text.length!==0)throw Error(`no-empty text at start`);break;case g:break;default:this.unget(),this.state=y,this.xmlDeclPossible=!1}}sDoctype(){var e;let t=this.captureTo(Xe);switch(t){case k:(e=this.doctypeHandler)==null||e.call(this,this.text),this.text=``,this.state=y,this.doctype=!0;break;case g:break;default:this.text+=String.fromCodePoint(t),t===j?this.state=v:F(t)&&(this.state=ae,this.q=t)}}sDoctypeQuote(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=ie)}sDTD(){let e=this.captureTo(Ze);e!==g&&(this.text+=String.fromCodePoint(e),e===M?this.state=ie:e===D?this.state=se:F(e)&&(this.state=oe,this.q=e))}sDTDQuoted(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=v,this.q=null)}sDTDOpenWaka(){let e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case Ue:this.state=ce,this.openWakaBang=``;break;case A:this.state=fe;break;default:this.state=v}}sDTDOpenWakaBang(){let e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,t!==`-`&&(this.state=t===`--`?le:v,this.openWakaBang=``)}sDTDComment(){this.captureToChar(qe)&&(this.text+=`-`,this.state=ue)}sDTDCommentEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=e===qe?de:le}sDTDCommentEnded(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k?this.state=v:(this.fail(`malformed comment.`),this.state=le)}sDTDPI(){this.captureToChar(A)&&(this.text+=`?`,this.state=pe)}sDTDPIEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k&&(this.state=v)}sText(){this.tags.length===0?this.handleTextOutsideRoot():this.handleTextInRoot()}sEntity(){let{i:e}=this,{chunk:t}=this;loop:for(;;)switch(this.getCode()){case _:this.entity+=`${t.slice(e,this.prevI)}\n`,e=this.i;break;case Je:{let{entityReturnState:n}=this,r=this.entity+t.slice(e,this.prevI);this.state=n;let i;r===``?(this.fail(`empty entity name.`),i=`&;`):(i=this.parseEntity(r),this.entity=``),(n!==y||this.textHandler!==void 0)&&(this.text+=i);break loop}case g:this.entity+=t.slice(e);break loop}}sOpenWaka(){let e=this.getCode();if(o(e))this.state=Ne,this.unget(),this.xmlDeclPossible=!1;else switch(e){case E:this.state=Re,this.xmlDeclPossible=!1;break;case Ue:this.state=ge,this.openWakaBang=``,this.xmlDeclPossible=!1;break;case A:this.state=Ce;break;default:this.fail(`disallowed character in tag name`),this.state=y,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case`[CDATA[`:!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0),this.state=be,this.openWakaBang=``;break;case`--`:this.state=_e,this.openWakaBang=``;break;case`DOCTYPE`:this.state=ie,(this.doctype||this.sawRoot)&&this.fail(`inappropriately located doctype declaration.`),this.openWakaBang=``;break;default:this.openWakaBang.length>=7&&this.fail(`incorrect syntax.`)}}sComment(){this.captureToChar(qe)&&(this.state=ve)}sCommentEnding(){var e;let t=this.getCodeNorm();t===qe?(this.state=ye,(e=this.commentHandler)==null||e.call(this,this.text),this.text=``):(this.text+=`-${String.fromCodePoint(t)}`,this.state=_e)}sCommentEnded(){let e=this.getCodeNorm();e===k?this.state=y:(this.fail(`malformed comment.`),this.text+=`--${String.fromCodePoint(e)}`,this.state=_e)}sCData(){this.captureToChar(M)&&(this.state=xe)}sCDataEnding(){let e=this.getCodeNorm();e===M?this.state=Se:(this.text+=`]${String.fromCodePoint(e)}`,this.state=be)}sCDataEnding2(){var e;let t=this.getCodeNorm();switch(t){case k:(e=this.cdataHandler)==null||e.call(this,this.text),this.text=``,this.state=y;break;case M:this.text+=`]`;break;default:this.text+=`]]${String.fromCodePoint(t)}`,this.state=be}}sPIFirstChar(){let e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=we):e===A||i(e)?(this.fail(`processing instruction without a target.`),this.state=e===A?Ee:Te):(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(e),this.state=we)}sPIRest(){let{chunk:e,i:t}=this;for(;;){let n=this.getCodeNorm();if(n===g){this.piTarget+=e.slice(t);return}if(!this.nameCheck(n)){this.piTarget+=e.slice(t,this.prevI);let r=n===A;r||i(n)?this.piTarget===`xml`?(this.xmlDeclPossible||this.fail(`an XML declaration must be at the start of the document.`),this.state=r?b:De):this.state=r?Ee:Te:(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(n));break}}}sPIBody(){if(this.text.length===0){let e=this.getCodeNorm();e===A?this.state=Ee:i(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(A)&&(this.state=Ee)}sPIEnding(){var e;let t=this.getCodeNorm();if(t===k){let{piTarget:t}=this;t.toLowerCase()===`xml`&&this.fail(`the XML declaration must appear at the start of the document.`),(e=this.piHandler)==null||e.call(this,{target:t,body:this.text}),this.piTarget=this.text=``,this.state=y}else t===A?this.text+=`?`:(this.text+=`?${String.fromCodePoint(t)}`,this.state=Te);this.xmlDeclPossible=!1}sXMLDeclNameStart(){let e=this.skipSpaces();if(e===A){this.state=b;return}e!==g&&(this.state=Oe,this.name=String.fromCodePoint(e))}sXMLDeclName(){let e=this.captureTo(Qe);if(e===A){this.state=b,this.name+=this.text,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(i(e)||e===O){if(this.name+=this.text,this.text=``,!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail(`did not expect any more name/value pairs.`);break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(`, `)}`)}this.state=e===O?Ae:ke}}sXMLDeclEq(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(e!==O&&this.fail(`value required.`),this.state=Ae)}sXMLDeclValueStart(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(F(e)?this.q=e:(this.fail(`value must be quoted.`),this.q=He),this.state=je)}sXMLDeclValue(){let e=this.captureTo([this.q,A]);if(e===A){this.state=b,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(e===g)return;let t=this.text;switch(this.text=``,this.name){case`version`:{this.xmlDeclExpects=[`encoding`,`standalone`];let e=t;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail(`version number must match /^1\\.[0-9]+$/.`);break}case`encoding`:/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail(`encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/.`),this.xmlDeclExpects=[`standalone`],this.xmlDecl.encoding=t;break;case`standalone`:t!==`yes`&&t!==`no`&&this.fail(`standalone value must match "yes" or "no".`),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name=``,this.state=Me}sXMLDeclSeparator(){let e=this.getCodeNorm();if(e===A){this.state=b;return}i(e)||(this.fail(`whitespace required.`),this.unget()),this.state=De}sXMLDeclEnding(){var e;this.getCodeNorm()===k?(this.piTarget===`xml`?this.name!==`version`&&this.xmlDeclExpects.includes(`version`)&&this.fail(`XML declaration must contain a version.`):this.fail(`processing instructions are not allowed before root.`),(e=this.xmldeclHandler)==null||e.call(this,this.xmlDecl),this.name=``,this.piTarget=this.text=``,this.state=y):this.fail(`The character ? is disallowed anywhere in XML declarations.`),this.xmlDeclPossible=!1}sOpenTag(){var e;let t=this.captureNameChars();if(t===g)return;let n=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name=``,this.xmlnsOpt&&(this.topNS=n.ns=Object.create(null)),(e=this.openTagStartHandler)==null||e.call(this,n),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail(`documents may contain only one root.`),t){case k:this.openTag();break;case E:this.state=Pe;break;default:i(t)||this.fail(`disallowed character in tag name.`),this.state=x}}sOpenTagSlash(){this.getCode()===k?this.openSelfClosingTag():(this.fail(`forward-slash in opening tag not followed by >.`),this.state=x)}sAttrib(){let e=this.skipSpaces();e!==g&&(o(e)?(this.unget(),this.state=S):e===k?this.openTag():e===E?this.state=Pe:this.fail(`disallowed character in attribute name.`))}sAttribName(){let e=this.captureNameChars();e===O?this.state=w:i(e)?this.state=C:e===k?(this.fail(`attribute without value.`),this.pushAttrib(this.name,this.name),this.name=this.text=``,this.openTag()):e!==g&&this.fail(`disallowed character in attribute name.`)}sAttribNameSawWhite(){let e=this.skipSpaces();switch(e){case g:return;case O:this.state=w;break;default:this.fail(`attribute without value.`),this.text=``,this.name=``,e===k?this.openTag():o(e)?(this.unget(),this.state=S):(this.fail(`disallowed character in attribute name.`),this.state=x)}}sAttribValue(){let e=this.getCodeNorm();F(e)?(this.q=e,this.state=Fe):i(e)||(this.fail(`unquoted attribute value.`),this.state=Le,this.unget())}sAttribValueQuoted(){let{q:e,chunk:t}=this,{i:n}=this;for(;;)switch(this.getCode()){case e:this.pushAttrib(this.name,this.text+t.slice(n,this.prevI)),this.name=this.text=``,this.q=null,this.state=Ie;return;case Ge:this.text+=t.slice(n,this.prevI),this.state=me,this.entityReturnState=Fe;return;case T:case _:case Be:this.text+=`${t.slice(n,this.prevI)} `,n=this.i;break;case D:this.text+=t.slice(n,this.prevI),this.fail(`disallowed character.`);return;case g:this.text+=t.slice(n);return}}sAttribValueClosed(){let e=this.getCodeNorm();i(e)?this.state=x:e===k?this.openTag():e===E?this.state=Pe:o(e)?(this.fail(`no whitespace between attributes.`),this.unget(),this.state=S):this.fail(`disallowed character in attribute name.`)}sAttribValueUnquoted(){let e=this.captureTo(I);switch(e){case Ge:this.state=me,this.entityReturnState=Le;break;case D:this.fail(`disallowed character.`);break;case g:break;default:this.text.includes(`]]>`)&&this.fail(`the string "]]>" is disallowed in char data.`),this.pushAttrib(this.name,this.text),this.name=this.text=``,e===k?this.openTag():this.state=x}}sCloseTag(){let e=this.captureNameChars();e===k?this.closeTag():i(e)?this.state=ze:e!==g&&this.fail(`disallowed character in closing tag.`)}sCloseTagSawWhite(){switch(this.skipSpaces()){case k:this.closeTag();break;case g:break;default:this.fail(`disallowed character in closing tag.`)}}handleTextInRoot(){let{i:e,forbiddenState:t}=this,{chunk:n,textHandler:r}=this;scanLoop:for(;;)switch(this.getCode()){case D:if(this.state=he,r!==void 0){let{text:t}=this,i=n.slice(e,this.prevI);t.length===0?i.length!==0&&r(i):(r(t+i),this.text=``)}t=R;break scanLoop;case Ge:this.state=me,this.entityReturnState=y,r!==void 0&&(this.text+=n.slice(e,this.prevI)),t=R;break scanLoop;case M:switch(t){case R:t=nt;break;case nt:t=rt;break;case rt:break;default:throw Error(`impossible state`)}break;case k:t===rt&&this.fail(`the string "]]>" is disallowed in char data.`),t=R;break;case _:r!==void 0&&(this.text+=`${n.slice(e,this.prevI)}\n`),e=this.i,t=R;break;case g:r!==void 0&&(this.text+=n.slice(e));break scanLoop;default:t=R}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this,{chunk:t,textHandler:n}=this,r=!1;outRootLoop:for(;;){let a=this.getCode();switch(a){case D:if(this.state=he,n!==void 0){let{text:r}=this,i=t.slice(e,this.prevI);r.length===0?i.length!==0&&n(i):(n(r+i),this.text=``)}break outRootLoop;case Ge:this.state=me,this.entityReturnState=y,n!==void 0&&(this.text+=t.slice(e,this.prevI)),r=!0;break outRootLoop;case _:n!==void 0&&(this.text+=`${t.slice(e,this.prevI)}\n`),e=this.i;break;case g:n!==void 0&&(this.text+=t.slice(e));break outRootLoop;default:i(a)||(r=!0)}}r&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var n;let{prefix:r,local:i}=this.qname(e),a={name:e,prefix:r,local:i,value:t};if(this.attribList.push(a),(n=this.attributeHandler)==null||n.call(this,a),r===`xmlns`){let e=t.trim();this.currentXMLVersion===`1.0`&&e===``&&this.fail(`invalid attempt to undefine prefix in XML 1.0`),this.topNS[i]=e,$e(this,i,e)}else if(e===`xmlns`){let e=t.trim();this.topNS[``]=e,$e(this,``,e)}}pushAttribPlain(e,t){var n;let r={name:e,value:t};this.attribList.push(r),(n=this.attributeHandler)==null||n.call(this,r)}end(){var e,t;this.sawRoot||this.fail(`document must contain a root element.`);let{tags:n}=this;for(;n.length>0;){let e=n.pop();this.fail(`unclosed tag: ${e.name}`)}this.state!==ne&&this.state!==y&&this.fail(`unexpected end.`);let{text:r}=this;return r.length!==0&&((e=this.textHandler)==null||e.call(this,r),this.text=``),this._closed=!0,(t=this.endHandler)==null||t.call(this),this._init(),this}resolve(e){var t;let n=this.topNS[e];if(n!==void 0)return n;let{tags:r}=this;for(let t=r.length-1;t>=0;t--)if(n=r[t].ns[e],n!==void 0)return n;return n=this.ns[e],n===void 0?(t=this.opt).resolvePrefix?.call(t,e):n}qname(e){let t=e.indexOf(`:`);if(t===-1)return{prefix:``,local:e};let n=e.slice(t+1),r=e.slice(0,t);return(r===``||n===``||n.includes(`:`))&&this.fail(`malformed name: ${e}.`),{prefix:r,local:n}}processAttribsNS(){let{attribList:e}=this,t=this.tag;{let{prefix:e,local:n}=this.qname(t.name);t.prefix=e,t.local=n;let r=t.uri=this.resolve(e)??``;e!==``&&(e===`xmlns`&&this.fail(`tags may not have "xmlns" as prefix.`),r===``&&(this.fail(`unbound namespace prefix: ${JSON.stringify(e)}.`),t.uri=e))}if(e.length===0)return;let{attributes:n}=t,r=new Set;for(let t of e){let{name:e,prefix:i,local:a}=t,o,s;i===``?(o=e===`xmlns`?h:``,s=e):(o=this.resolve(i),o===void 0&&(this.fail(`unbound namespace prefix: ${JSON.stringify(i)}.`),o=i),s=`{${o}}${a}`),r.has(s)&&this.fail(`duplicate attribute: ${s}.`),r.add(s),t.uri=o,n[e]=t}this.attribList=[]}processAttribsPlain(){let{attribList:e}=this,t=this.tag.attributes;for(let{name:n,value:r}of e)t[n]!==void 0&&this.fail(`duplicate attribute: ${n}.`),t[n]=r;this.attribList=[]}openTag(){var e;this.processAttribs();let{tags:t}=this,n=this.tag;n.isSelfClosing=!1,(e=this.openTagHandler)==null||e.call(this,n),t.push(n),this.state=y,this.name=``}openSelfClosingTag(){var e,t;this.processAttribs();let{tags:n}=this,r=this.tag;r.isSelfClosing=!0,(e=this.openTagHandler)==null||e.call(this,r),(t=this.closeTagHandler)==null||t.call(this,r),(this.tag=n[n.length-1]??null)===null&&(this.closedRoot=!0),this.state=y,this.name=``}closeTag(){let{tags:e,name:t}=this;if(this.state=y,this.name=``,t===``){this.fail(`weird empty close tag.`),this.text+=`</>`;return}let n=this.closeTagHandler,r=e.length;for(;r-->0;){let r=this.tag=e.pop();if(this.topNS=r.ns,n?.(r),r.name===t)break;this.fail(`unexpected close tag.`)}r===0?this.closedRoot=!0:r<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=`</${t}>`)}parseEntity(e){if(e[0]!==`#`){let t=this.ENTITIES[e];return t===void 0?(this.fail(this.isName(e)?`undefined entity.`:`disallowed character in entity name.`),`&${e};`):t}let t=NaN;return e[1]===`x`&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail(`malformed character entity.`),`&${e};`)}}}))(),cn=4194304,ln=new Set([`script`,`iframe`,`object`,`embed`,`audio`,`video`]),un=new Set([`foreignobject`,`div`,`span`,`p`,`br`,`b`,`strong`,`i`,`em`,`small`,`sub`,`sup`,`code`,`ul`,`ol`,`li`,`a`]),dn=/^data:image\/(?:png|jpeg|gif|webp);base64,[a-z0-9+/=\s]+$/i,fn=/^data:(?:font\/(?:woff2?|opentype|truetype)|application\/(?:x-)?font-woff2?);base64,[a-z0-9+/=\s]+$/i,pn=class extends Error{constructor(e){super(e),this.name=`ClientSvgError`}};function mn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)||fn.test(t)}function hn(e){if(/@import|expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|-moz-binding/i.test(e))return!0;let t=/url\s*\(\s*(['"]?)(.*?)\1\s*\)/gi;for(let n of e.matchAll(t))if(!mn(n[2]??``))return!0;return/url\s*\(/i.test(e.replace(t,``))}function gn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)}function _n(e,t){let n=e.toLowerCase();return n.startsWith(`on`)?!1:n===`href`||n===`xlink:href`||n===`src`?gn(t):[`style`,`filter`,`fill`,`stroke`,`clip-path`,`mask`].includes(n)?!hn(t):n!==`xml:base`&&!/javascript\s*:/i.test(t)}function vn(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}function yn(e){return vn(e).replaceAll(`"`,`&quot;`)}function bn(e){if(e.type===`text`)return vn(e.value);let t=[...e.attributes].map(([e,t])=>` ${e}="${yn(t)}"`).join(``);return`<${e.name}${t}>${e.children.map(bn).join(``)}</${e.name}>`}function xn(e){return e.name.toLowerCase().split(`:`).at(-1)??e.name.toLowerCase()}function Sn(e){if(e===void 0||!/^-?\d+(?:\.\d+)?(?:px)?$/.test(e.trim()))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function Cn(e){let t=e.attributes.get(`viewBox`)?.trim().split(/[\s,]+/).map(Number);if(t?.length===4&&t.every(Number.isFinite)&&t[2]>0&&t[3]>0)return t;let n=Sn(e.attributes.get(`width`)),r=Sn(e.attributes.get(`height`));return n!==null&&r!==null?[0,0,n,r]:null}function wn(e,t){let n=e.attributes.get(`style`);if(!n)return null;for(let e of n.split(`;`)){let n=e.indexOf(`:`);if(n>=0&&e.slice(0,n).trim().toLowerCase()===t)return e.slice(n+1).trim()}return null}function Tn(e){let t=(e.attributes.get(`fill`)??wn(e,`fill`)??``).replaceAll(` `,``).toLowerCase();return t===`white`||t===`#fff`||t===`#ffffff`||t===`rgb(255,255,255)`}function En(e){if(e===void 0||!/^-?\d+(?:\.\d+)?$/.test(e.trim()))return null;let t=Number(e);return Number.isFinite(t)?t:null}function Dn(e,t){let n=e.attributes.get(`width`)?.trim(),r=e.attributes.get(`height`)?.trim();if(n===`100%`&&r===`100%`)return!0;let i=En(e.attributes.get(`x`)??`0`),a=En(e.attributes.get(`y`)??`0`),o=En(n),s=En(r);if([i,a,o,s].some(e=>e===null))return!1;let[c,l,u,d]=t,f=.01;return i<=c+f&&a<=l+f&&i+o>=c+u-f&&a+s>=l+d-f}function On(e,t,n){let r=xn(e),i=new Set((e.attributes.get(`class`)??``).toLowerCase().split(/\s+/));return r===`rect`&&i.has(`backdrop`)||r===`rect`&&t!==null&&Tn(e)&&Dn(e,t)?!0:n===`graphviz`&&r===`polygon`&&Tn(e)&&(e.attributes.get(`stroke`)??``).toLowerCase()===`none`}function kn(e,t,n){let r=xn(e)===`svg`?Cn(e)??t:t;e.children=e.children.filter(e=>e.type===`text`||!On(e,r,n)&&(kn(e,r,n),!0))}function An(e,t){let n=(e.attributes.get(`style`)??``).split(`;`).map(e=>e.trim()).filter(Boolean).filter(e=>!/^background(?:-color)?\s*:/i.test(e));n.push(`background-color:${t}`),e.attributes.set(`style`,`${n.join(`;`)};`)}function jn(e,t=[],n=[]){return{type:`element`,name:e,attributes:new Map(t),children:n}}function Mn(e,t,n,r){let i=[],a=null;t.title&&i.push(jn(`title`,[],[{type:`text`,value:t.title}])),t.description&&i.push(jn(`desc`,[],[{type:`text`,value:t.description}]));let o=Cn(e);if((n.padding||n.background||n.frame)&&o===null)throw new pn(`Renderer output has no usable SVG dimensions for presentation settings.`);if(o!==null){let[t,r,s,c]=o,l=n.padding,u=[t-l,r-l,s+l*2,c+l*2];e.attributes.set(`viewBox`,u.join(` `)),e.attributes.has(`width`)&&e.attributes.set(`width`,String(u[2])),e.attributes.has(`height`)&&e.attributes.set(`height`,String(u[3])),n.background&&i.push(jn(`rect`,[[`x`,String(u[0])],[`y`,String(u[1])],[`width`,String(u[2])],[`height`,String(u[3])],[`fill`,n.background]])),n.frame&&(a=jn(`rect`,[[`x`,String(u[0]+.5)],[`y`,String(u[1]+.5)],[`width`,String(Math.max(0,u[2]-1))],[`height`,String(Math.max(0,u[3]-1))],[`fill`,`none`],[`stroke`,`#000000`],[`stroke-width`,`1`],[`vector-effect`,`non-scaling-stroke`]]))}n.background&&(kn(e,o,r),An(e,n.background)),e.children.unshift(...i),a&&e.children.push(a)}function Nn(e,t,n,r){if(e.length>cn)throw new pn(`Rendered SVG is too large.`);let i=null,a=[],o=0,s=null,c=new sn.SaxesParser({xmlns:!0});c.on(`doctype`,e=>{e.includes(`[`)&&(s=Error(`Internal DOCTYPE subsets are not allowed`))}),c.on(`opentag`,e=>{let t=e.local.toLowerCase(),n=t===`foreignobject`||a.some(e=>xn(e)===`foreignobject`);if(o>0||ln.has(t)||n&&!un.has(t)){o++;return}let r=jn(e.name);for(let t of Object.values(e.attributes))_n(t.name,t.value)&&r.attributes.set(t.name,t.value);let c=a.at(-1);c?c.children.push(r):i===null?i=r:s=Error(`Multiple root elements`),a.push(r)});let l=e=>{if(o>0||e===``)return;let t=a.at(-1);if(t){if(xn(t)===`style`&&hn(e))throw new pn(`Renderer output contains unsafe CSS.`);t.children.push({type:`text`,value:e})}else e.trim()!==``&&(s=Error(`Text outside root element`))};c.on(`text`,l),c.on(`cdata`,l),c.on(`closetag`,()=>{o>0?o--:a.pop()}),c.on(`error`,e=>{s=e});try{c.write(e).close()}catch(e){if(e instanceof pn)throw e;s=e}if(s!==null||i===null||xn(i)!==`svg`)throw new pn(`Renderer returned invalid SVG.`);return Mn(i,t,n,r),bn(i)}var Pn=Object.freeze({plantuml:`https://plantuml.render.diagram.zip/v1/svg`,graphviz:`https://graphviz.render.diagram.zip/v1/svg`,d2:`https://d2.render.diagram.zip/v1/svg`,c4plantuml:`https://c4plantuml.render.diagram.zip/v1/svg`,blockdiag:`https://blockdiag.render.diagram.zip/v1/svg`,seqdiag:`https://seqdiag.render.diagram.zip/v1/svg`,actdiag:`https://actdiag.render.diagram.zip/v1/svg`,nwdiag:`https://nwdiag.render.diagram.zip/v1/svg`,packetdiag:`https://packetdiag.render.diagram.zip/v1/svg`,rackdiag:`https://rackdiag.render.diagram.zip/v1/svg`,bytefield:`https://bytefield.render.diagram.zip/v1/svg`,dbml:`https://dbml.render.diagram.zip/v1/svg`,ditaa:`https://ditaa.render.diagram.zip/v1/svg`,erd:`https://erd.render.diagram.zip/v1/svg`,goat:`https://goat.render.diagram.zip/v1/svg`,nomnoml:`https://nomnoml.render.diagram.zip/v1/svg`,pikchr:`https://pikchr.render.diagram.zip/v1/svg`,structurizr:`https://structurizr.render.diagram.zip/v1/svg`,svgbob:`https://svgbob.render.diagram.zip/v1/svg`,symbolator:`https://symbolator.render.diagram.zip/v1/svg`,tikz:`https://tikz.render.diagram.zip/v1/svg`,umlet:`https://umlet.render.diagram.zip/v1/svg`,vega:`https://vega.render.diagram.zip/v1/svg`,vegalite:`https://vegalite.render.diagram.zip/v1/svg`,wavedrom:`https://wavedrom.render.diagram.zip/v1/svg`,wireviz:`https://wireviz.render.diagram.zip/v1/svg`}),Fn=Object.freeze(`mermaid.bpmn.excalidraw.diagramsnet.plantuml.c4plantuml.bytefield.nomnoml.vega.vegalite.wavedrom.blockdiag.seqdiag.actdiag.nwdiag.packetdiag.rackdiag.graphviz.erd.dbml.goat.pikchr.svgbob.ditaa.wireviz.structurizr.symbolator`.split(`.`));function In(e){return Fn.includes(e)}function Ln(e){return Pn[e]??null}function W(e,t,n){return Math.min(Math.max(e,t),n)}var Rn=class{constructor({stage:e,image:t,status:n,minimap:r,minimapImage:i,minimapViewport:a}){this.stage=e,this.image=t,this.status=n,this.minimap=r,this.minimapImage=i,this.minimapViewport=a,this.scale=1,this.x=0,this.y=0,this.objectUrl=null,this.abortController=null,this.requestNumber=0,this.pendingRender=null,this.renderLoop=null,this.latestRenderKey=null,this.latestSvgBlob=null,this.latestRendererIdentity=null,this.imageFallbackUrl=null,this.activeImageUrl=null,this.drag=null,this.image.addEventListener(`load`,()=>{this.image.src===this.activeImageUrl&&(this.imageFallbackUrl=null,this.setStatus(`Rendered`,`ready`),this.fit())}),this.image.addEventListener(`error`,()=>this.retryBlockedImage()),this.stage.addEventListener(`pointerdown`,e=>this.startPan(e)),this.stage.addEventListener(`pointermove`,e=>this.pan(e)),this.stage.addEventListener(`pointerup`,e=>this.endPan(e)),this.stage.addEventListener(`pointercancel`,e=>this.endPan(e)),this.stage.addEventListener(`wheel`,e=>this.wheelZoom(e),{passive:!1}),this.minimap.addEventListener(`pointerdown`,e=>this.moveFromMinimap(e)),new ResizeObserver(()=>this.updateTransform()).observe(this.stage)}render({type:e,source:t,options:n={},meta:r={},presentation:i={}}){if(!t.trim()){this.requestNumber++,this.pendingRender=null,this.abortController?.abort(),this.setStatus(`Write something to render.`,`idle`);return}let a=JSON.stringify({type:e,source:t,options:n,meta:r,presentation:i});return this.latestRenderKey===a&&this.latestSvgBlob?Promise.resolve():(this.pendingRender={type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:++this.requestNumber},this.abortController?.abort(),this.renderLoop||=this.drainRenderQueue(),this.renderLoop)}async drainRenderQueue(){try{for(;this.pendingRender;){let e=this.pendingRender;this.pendingRender=null,await this.performRender(e)}}finally{this.renderLoop=null,this.pendingRender&&(this.renderLoop=this.drainRenderQueue())}}async performRender({type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:o}){let s=new AbortController;this.abortController=s,this.setStatus(`Rendering…`,`loading`),this.stage.style.setProperty(`--render-background`,`var(--preview-bg)`);try{let c=nn(e),l;if(c)try{let a=await c.render({type:e,source:t,options:n},s.signal);l={body:Nn(a.body,r,i,e),identity:{unit:e,build:a.build||a.version,pipeline:Array.isArray(a.pipeline)?a.pipeline:[e]}},this.status.dataset.cache=`browser`,this.status.dataset.renderer=e}catch(a){if(a.name===`AbortError`||In(e))throw a;l=await this.renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},s.signal)}else l=await this.renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},s.signal);if(o!==this.requestNumber)return;let{blob:u,background:d}=this.normalizedSvgBlob(l.body);this.latestRenderKey=a,this.latestSvgBlob=u,this.latestRendererIdentity=l.identity,this.imageFallbackUrl=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(await u.text())}`,this.stage.style.setProperty(`--render-background`,d);let f=URL.createObjectURL(u),p=this.objectUrl;this.objectUrl=f,this.activeImageUrl=f,this.image.src=f,this.minimapImage.src=f,this.image.hidden=!1,this.setStatus(`Loading image…`,`loading`),p&&URL.revokeObjectURL(p)}catch(e){if(e.name===`AbortError`)return;this.setStatus(e.message||`Could not render this diagram.`,`error`)}finally{this.abortController===s&&(this.abortController=null)}}async renderThroughGateway({type:e,source:t,options:n,meta:r,presentation:i},a){let o=Ln(e);if(o){try{let s=await this.renderRequest(o,{source:t,format:`svg`,options:n,metadata:r,presentation:i},a);if(s.ok||s.status<500)return await this.renderResponse(s,e);await s.body?.cancel()}catch(t){if(t.name===`AbortError`||In(e))throw t}if(In(e))throw Error(`The ${e} renderer unit is unavailable.`)}let s=await this.renderRequest(`/render/v1/svg`,{engine:e,source:t,format:`svg`,options:n,metadata:r,presentation:i},a);return this.renderResponse(s,e)}renderRequest(e,t,n){return fetch(e,{method:`POST`,headers:{Accept:`image/svg+xml`,"Content-Type":`application/json`},body:JSON.stringify(t),signal:n})}async renderResponse(e,t){if(!e.ok)throw Error(await this.errorMessage(e));this.status.dataset.cache=e.headers.get(`X-Diagram-Cache`)?.toLowerCase()??`miss`,this.status.dataset.renderer=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Renderer`)?.toLowerCase()??`gateway`;let n=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Engine`)?.toLowerCase()??t,r=e.headers.get(`X-Renderer-Build`)??e.headers.get(`X-Diagram-Engine-Version`)??`${n}-unknown`,i=(e.headers.get(`X-Diagram-Pipeline`)??n).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return{body:await e.text(),identity:{unit:n,build:r,pipeline:i}}}retryBlockedImage(){if(this.image.src===this.activeImageUrl){if(this.imageFallbackUrl&&this.activeImageUrl.startsWith(`blob:`)){let e=this.imageFallbackUrl;this.imageFallbackUrl=null,this.objectUrl&&URL.revokeObjectURL(this.objectUrl),this.objectUrl=null,this.activeImageUrl=e,this.image.src=e,this.minimapImage.src=e;return}this.setStatus(`The rendered image was blocked or invalid.`,`error`)}}svgBlobFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestSvgBlob:null}rendererIdentityFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestRendererIdentity:null}async errorMessage(e){let t=await e.text();if(e.headers.get(`Content-Type`)?.includes(`application/json`))try{let e=JSON.parse(t);if(typeof e?.error?.message==`string`)return e.error.message}catch{}return new DOMParser().parseFromString(t,`text/html`).body.textContent.trim().replace(/\s+/g,` `)||`Render failed with HTTP ${e.status}.`}normalizedSvgBlob(e){let t=new DOMParser().parseFromString(e,`image/svg+xml`).documentElement,n=t.getAttribute(`viewBox`)?.trim().split(/[\s,]+/).map(Number);t.nodeName===`svg`&&n?.length===4&&n.every(Number.isFinite)&&(t.hasAttribute(`width`)||t.setAttribute(`width`,String(n[2])),t.hasAttribute(`height`)||t.setAttribute(`height`,String(n[3])),e=new XMLSerializer().serializeToString(t));let r=t.style.backgroundColor||t.style.background,i=r&&r!==`transparent`?r:`#ffffff`;return{blob:new Blob([e],{type:`image/svg+xml`}),background:i}}setStatus(e,t){this.status.textContent=e,this.status.dataset.state=t}zoom(e){if(this.image.hidden)return;let t=this.stage.getBoundingClientRect();this.zoomAt(e,t.width/2,t.height/2)}zoomAt(e,t,n){let r=W(this.scale*e,.1,8),i=(t-this.x)/this.scale,a=(n-this.y)/this.scale;this.x=t-i*r,this.y=n-a*r,this.scale=r,this.updateTransform()}wheelZoom(e){if(this.image.hidden||e.target.closest(`.preview-toolbar, .minimap`))return;e.preventDefault();let t=this.stage.getBoundingClientRect(),n=e.deltaY*(e.deltaMode===WheelEvent.DOM_DELTA_LINE?16:e.deltaMode===WheelEvent.DOM_DELTA_PAGE?t.height:1);this.zoomAt(Math.exp(-W(n,-240,240)*.002),e.clientX-t.left,e.clientY-t.top)}oneToOne(){if(this.image.hidden)return;let e=this.stage.getBoundingClientRect();this.scale=1,this.x=(e.width-this.image.naturalWidth)/2,this.y=(e.height-this.image.naturalHeight)/2,this.updateTransform()}fit(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=Math.min(64,e.width*.12);this.scale=W(Math.min((e.width-t*2)/this.image.naturalWidth,(e.height-t*2)/this.image.naturalHeight),.1,2),this.x=(e.width-this.image.naturalWidth*this.scale)/2,this.y=(e.height-this.image.naturalHeight*this.scale)/2,this.updateTransform()}updateTransform(){this.image.style.transform=`translate(${this.x}px, ${this.y}px) scale(${this.scale})`,this.updateMinimap()}startPan(e){this.image.hidden||e.button!==0||e.target.closest(`.preview-toolbar, .minimap`)||(this.drag={pointerId:e.pointerId,x:e.clientX,y:e.clientY,originX:this.x,originY:this.y},this.stage.setPointerCapture(e.pointerId),this.stage.dataset.dragging=`true`)}pan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.x=this.drag.originX+e.clientX-this.drag.x,this.y=this.drag.originY+e.clientY-this.drag.y,this.updateTransform())}endPan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.drag=null,delete this.stage.dataset.dragging)}moveFromMinimap(e){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let t=this.minimap.getBoundingClientRect(),n=Math.min(t.width/this.image.naturalWidth,t.height/this.image.naturalHeight),r=(t.width-this.image.naturalWidth*n)/2,i=(t.height-this.image.naturalHeight*n)/2,a=(e.clientX-t.left-r)/n,o=(e.clientY-t.top-i)/n,s=this.stage.getBoundingClientRect();this.x=s.width/2-a*this.scale,this.y=s.height/2-o*this.scale,this.updateTransform()}updateMinimap(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=this.image.naturalWidth*this.scale,n=this.image.naturalHeight*this.scale,r=this.x>=0&&this.y>=0&&this.x+t<=e.width&&this.y+n<=e.height;if(this.minimap.hidden=r,r)return;let i=this.minimap.getBoundingClientRect(),a=Math.min(i.width/this.image.naturalWidth,i.height/this.image.naturalHeight),o=(i.width-this.image.naturalWidth*a)/2,s=(i.height-this.image.naturalHeight*a)/2,c=W(-this.x/this.scale,0,this.image.naturalWidth),l=W(-this.y/this.scale,0,this.image.naturalHeight),u=W((e.width-this.x)/this.scale,0,this.image.naturalWidth),d=W((e.height-this.y)/this.scale,0,this.image.naturalHeight);this.minimapViewport.style.left=`${o+c*a}px`,this.minimapViewport.style.top=`${s+l*a}px`,this.minimapViewport.style.width=`${Math.max(4,(u-c)*a)}px`,this.minimapViewport.style.height=`${Math.max(4,(d-l)*a)}px`}},zn=`diagram.zip:draft:local:v2`,G=`diagram.zip:draft:alias:v1:`,Bn=`diagram.zip:write:v1:`,K=new Et,Vn,Hn,q=!1,Un=``,J={aliasId:null,contentId:null,renderId:null,revision:null,mode:`open`,savedMode:null,writeCapability:null,savedState:null,savedSnapshot:null,bundleKey:null,keyEnvelope:null,encryptedContent:null,encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!0},Wn=new Map;document.querySelector(`#app`).innerHTML=`16421643 >>>>>>>> 169205c2 (migrate four renderers off Fly):server/src/main/resources/web/diagramzip/assets/index-Bl_7m9cX.js1644+========1645+${h}.`);break;case m:switch(t){case`xml`:break;case``:e.fail(`the default namespace may not be set to ${n}.`);break;default:e.fail(`may not assign the xml namespace to another prefix.`)}}}function L(e,t){for(let n of Object.keys(t))$e(e,n,t[n])}var et=e=>p.test(e),tt=e=>l.test(e),R=0,nt=1,rt=2;e.EVENTS=[`xmldecl`,`text`,`processinginstruction`,`doctype`,`comment`,`opentagstart`,`attribute`,`opentag`,`closetag`,`cdata`,`error`,`end`,`ready`];var z={xmldecl:`xmldeclHandler`,text:`textHandler`,processinginstruction:`piHandler`,doctype:`doctypeHandler`,comment:`commentHandler`,opentagstart:`openTagStartHandler`,attribute:`attributeHandler`,opentag:`openTagHandler`,closetag:`closeTagHandler`,cdata:`cdataHandler`,error:`errorHandler`,end:`endHandler`,ready:`readyHandler`};e.SaxesParser=class{constructor(e){this.opt=e??{},this.fragmentOpt=!!this.opt.fragment;let t=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=this.opt.position!==!1,this.fileName=this.opt.fileName,t){this.nameStartCheck=d,this.nameCheck=f,this.isName=et,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},ee);let e=this.opt.additionalNamespaces;e!=null&&(L(this,e),Object.assign(this.ns,e))}else this.nameStartCheck=o,this.nameCheck=s,this.isName=tt,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var e;this.openWakaBang=``,this.text=``,this.name=``,this.piTarget=``,this.entity=``,this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk=``,this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=R,this.attribList=[];let{fragmentOpt:t}=this;this.state=t?y:ne,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=t,this.xmlDeclPossible=!t,this.xmlDeclExpects=[`version`],this.entityReturnState=void 0;let{defaultXMLVersion:n}=this.opt;if(n===void 0){if(this.opt.forceXMLVersion===!0)throw Error(`forceXMLVersion set but defaultXMLVersion is not set`);n=`1.0`}this.setXMLVersion(n),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(te),(e=this.readyHandler)==null||e.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(e,t){this[z[e]]=t}off(e){this[z[e]]=void 0}makeError(e){let t=this.fileName??``;return this.trackPosition&&(t.length>0&&(t+=`:`),t+=`${this.line}:${this.column}`),t.length>0&&(t+=`: `),Error(t+e)}fail(e){let t=this.makeError(e),n=this.errorHandler;if(n===void 0)throw t;return n(t),this}write(e){if(this.closed)return this.fail(`cannot write after close; assign an onready handler.`);let t=!1;e===null?(t=!0,e=``):typeof e==`object`&&(e=e.toString()),this.carriedFromPrevious!==void 0&&(e=`${this.carriedFromPrevious}${e}`,this.carriedFromPrevious=void 0);let n=e.length,r=e.charCodeAt(n-1);!t&&(r===Ve||r>=55296&&r<=56319)&&(this.carriedFromPrevious=e[n-1],n--,e=e.slice(0,n));let{stateTable:i}=this;for(this.chunk=e,this.i=0;this.i<n;)i[this.state].call(this);return this.chunkPosition+=n,t?this.end():this}close(){return this.write(null)}getCode10(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>=He||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:return e.charCodeAt(t+1)===T&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCode11(){let{chunk:e,i:t}=this;if(this.prevI=t,this.i=t+1,t>=e.length)return g;let n=e.charCodeAt(t);if(this.column++,n<55296){if(n>31&&n<127||n>159&&n!==P||n===Be)return n;switch(n){case T:return this.line++,this.column=0,this.positionAtNewLine=this.position,T;case Ve:{let n=e.charCodeAt(t+1);(n===T||n===N)&&(this.i=t+2)}case N:case P:return this.line++,this.column=0,this.positionAtNewLine=this.position,_;default:return this.fail(`disallowed character.`),n}}if(n>56319)return n>=57344&&n<=65533||this.fail(`disallowed character.`),n;let r=65536+(n-55296)*1024+(e.charCodeAt(t+1)-56320);return this.i=t+2,r>1114111&&this.fail(`disallowed character.`),r}getCodeNorm(){let e=this.getCode();return e===_?T:e}unget(){this.i=this.prevI,this.column--}captureTo(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode(),i=r===_,a=i?T:r;if(a===g||e.includes(a))return this.text+=n.slice(t,this.prevI),a;i&&(this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i)}}captureToChar(e){let{i:t}=this,{chunk:n}=this;for(;;){let r=this.getCode();switch(r){case _:this.text+=`${n.slice(t,this.prevI)}\n`,t=this.i,r=T;break;case g:return this.text+=n.slice(t),!1}if(r===e)return this.text+=n.slice(t,this.prevI),!0}}captureNameChars(){let{chunk:e,i:t}=this;for(;;){let n=this.getCode();if(n===g)return this.name+=e.slice(t),g;if(!s(n))return this.name+=e.slice(t,this.prevI),n===_?T:n}}skipSpaces(){for(;;){let e=this.getCodeNorm();if(e===g||!i(e))return e}}setXMLVersion(e){this.currentXMLVersion=e,e===`1.0`?(this.isChar=a,this.getCode=this.getCode10):(this.isChar=u,this.getCode=this.getCode11)}sBegin(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=re}sBeginWhitespace(){let e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case D:if(this.state=he,this.text.length!==0)throw Error(`no-empty text at start`);break;case g:break;default:this.unget(),this.state=y,this.xmlDeclPossible=!1}}sDoctype(){var e;let t=this.captureTo(Xe);switch(t){case k:(e=this.doctypeHandler)==null||e.call(this,this.text),this.text=``,this.state=y,this.doctype=!0;break;case g:break;default:this.text+=String.fromCodePoint(t),t===j?this.state=v:F(t)&&(this.state=ae,this.q=t)}}sDoctypeQuote(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=ie)}sDTD(){let e=this.captureTo(Ze);e!==g&&(this.text+=String.fromCodePoint(e),e===M?this.state=ie:e===D?this.state=se:F(e)&&(this.state=oe,this.q=e))}sDTDQuoted(){let e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=v,this.q=null)}sDTDOpenWaka(){let e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case Ue:this.state=ce,this.openWakaBang=``;break;case A:this.state=fe;break;default:this.state=v}}sDTDOpenWakaBang(){let e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,t!==`-`&&(this.state=t===`--`?le:v,this.openWakaBang=``)}sDTDComment(){this.captureToChar(qe)&&(this.text+=`-`,this.state=ue)}sDTDCommentEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=e===qe?de:le}sDTDCommentEnded(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k?this.state=v:(this.fail(`malformed comment.`),this.state=le)}sDTDPI(){this.captureToChar(A)&&(this.text+=`?`,this.state=pe)}sDTDPIEnding(){let e=this.getCodeNorm();this.text+=String.fromCodePoint(e),e===k&&(this.state=v)}sText(){this.tags.length===0?this.handleTextOutsideRoot():this.handleTextInRoot()}sEntity(){let{i:e}=this,{chunk:t}=this;loop:for(;;)switch(this.getCode()){case _:this.entity+=`${t.slice(e,this.prevI)}\n`,e=this.i;break;case Je:{let{entityReturnState:n}=this,r=this.entity+t.slice(e,this.prevI);this.state=n;let i;r===``?(this.fail(`empty entity name.`),i=`&;`):(i=this.parseEntity(r),this.entity=``),(n!==y||this.textHandler!==void 0)&&(this.text+=i);break loop}case g:this.entity+=t.slice(e);break loop}}sOpenWaka(){let e=this.getCode();if(o(e))this.state=Ne,this.unget(),this.xmlDeclPossible=!1;else switch(e){case E:this.state=Re,this.xmlDeclPossible=!1;break;case Ue:this.state=ge,this.openWakaBang=``,this.xmlDeclPossible=!1;break;case A:this.state=Ce;break;default:this.fail(`disallowed character in tag name`),this.state=y,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case`[CDATA[`:!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0),this.state=be,this.openWakaBang=``;break;case`--`:this.state=_e,this.openWakaBang=``;break;case`DOCTYPE`:this.state=ie,(this.doctype||this.sawRoot)&&this.fail(`inappropriately located doctype declaration.`),this.openWakaBang=``;break;default:this.openWakaBang.length>=7&&this.fail(`incorrect syntax.`)}}sComment(){this.captureToChar(qe)&&(this.state=ve)}sCommentEnding(){var e;let t=this.getCodeNorm();t===qe?(this.state=ye,(e=this.commentHandler)==null||e.call(this,this.text),this.text=``):(this.text+=`-${String.fromCodePoint(t)}`,this.state=_e)}sCommentEnded(){let e=this.getCodeNorm();e===k?this.state=y:(this.fail(`malformed comment.`),this.text+=`--${String.fromCodePoint(e)}`,this.state=_e)}sCData(){this.captureToChar(M)&&(this.state=xe)}sCDataEnding(){let e=this.getCodeNorm();e===M?this.state=Se:(this.text+=`]${String.fromCodePoint(e)}`,this.state=be)}sCDataEnding2(){var e;let t=this.getCodeNorm();switch(t){case k:(e=this.cdataHandler)==null||e.call(this,this.text),this.text=``,this.state=y;break;case M:this.text+=`]`;break;default:this.text+=`]]${String.fromCodePoint(t)}`,this.state=be}}sPIFirstChar(){let e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=we):e===A||i(e)?(this.fail(`processing instruction without a target.`),this.state=e===A?Ee:Te):(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(e),this.state=we)}sPIRest(){let{chunk:e,i:t}=this;for(;;){let n=this.getCodeNorm();if(n===g){this.piTarget+=e.slice(t);return}if(!this.nameCheck(n)){this.piTarget+=e.slice(t,this.prevI);let r=n===A;r||i(n)?this.piTarget===`xml`?(this.xmlDeclPossible||this.fail(`an XML declaration must be at the start of the document.`),this.state=r?b:De):this.state=r?Ee:Te:(this.fail(`disallowed character in processing instruction name.`),this.piTarget+=String.fromCodePoint(n));break}}}sPIBody(){if(this.text.length===0){let e=this.getCodeNorm();e===A?this.state=Ee:i(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(A)&&(this.state=Ee)}sPIEnding(){var e;let t=this.getCodeNorm();if(t===k){let{piTarget:t}=this;t.toLowerCase()===`xml`&&this.fail(`the XML declaration must appear at the start of the document.`),(e=this.piHandler)==null||e.call(this,{target:t,body:this.text}),this.piTarget=this.text=``,this.state=y}else t===A?this.text+=`?`:(this.text+=`?${String.fromCodePoint(t)}`,this.state=Te);this.xmlDeclPossible=!1}sXMLDeclNameStart(){let e=this.skipSpaces();if(e===A){this.state=b;return}e!==g&&(this.state=Oe,this.name=String.fromCodePoint(e))}sXMLDeclName(){let e=this.captureTo(Qe);if(e===A){this.state=b,this.name+=this.text,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(i(e)||e===O){if(this.name+=this.text,this.text=``,!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail(`did not expect any more name/value pairs.`);break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(`, `)}`)}this.state=e===O?Ae:ke}}sXMLDeclEq(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(e!==O&&this.fail(`value required.`),this.state=Ae)}sXMLDeclValueStart(){let e=this.getCodeNorm();if(e===A){this.state=b,this.fail(`XML declaration is incomplete.`);return}i(e)||(F(e)?this.q=e:(this.fail(`value must be quoted.`),this.q=He),this.state=je)}sXMLDeclValue(){let e=this.captureTo([this.q,A]);if(e===A){this.state=b,this.text=``,this.fail(`XML declaration is incomplete.`);return}if(e===g)return;let t=this.text;switch(this.text=``,this.name){case`version`:{this.xmlDeclExpects=[`encoding`,`standalone`];let e=t;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail(`version number must match /^1\\.[0-9]+$/.`);break}case`encoding`:/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail(`encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/.`),this.xmlDeclExpects=[`standalone`],this.xmlDecl.encoding=t;break;case`standalone`:t!==`yes`&&t!==`no`&&this.fail(`standalone value must match "yes" or "no".`),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name=``,this.state=Me}sXMLDeclSeparator(){let e=this.getCodeNorm();if(e===A){this.state=b;return}i(e)||(this.fail(`whitespace required.`),this.unget()),this.state=De}sXMLDeclEnding(){var e;this.getCodeNorm()===k?(this.piTarget===`xml`?this.name!==`version`&&this.xmlDeclExpects.includes(`version`)&&this.fail(`XML declaration must contain a version.`):this.fail(`processing instructions are not allowed before root.`),(e=this.xmldeclHandler)==null||e.call(this,this.xmlDecl),this.name=``,this.piTarget=this.text=``,this.state=y):this.fail(`The character ? is disallowed anywhere in XML declarations.`),this.xmlDeclPossible=!1}sOpenTag(){var e;let t=this.captureNameChars();if(t===g)return;let n=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name=``,this.xmlnsOpt&&(this.topNS=n.ns=Object.create(null)),(e=this.openTagStartHandler)==null||e.call(this,n),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail(`documents may contain only one root.`),t){case k:this.openTag();break;case E:this.state=Pe;break;default:i(t)||this.fail(`disallowed character in tag name.`),this.state=x}}sOpenTagSlash(){this.getCode()===k?this.openSelfClosingTag():(this.fail(`forward-slash in opening tag not followed by >.`),this.state=x)}sAttrib(){let e=this.skipSpaces();e!==g&&(o(e)?(this.unget(),this.state=S):e===k?this.openTag():e===E?this.state=Pe:this.fail(`disallowed character in attribute name.`))}sAttribName(){let e=this.captureNameChars();e===O?this.state=w:i(e)?this.state=C:e===k?(this.fail(`attribute without value.`),this.pushAttrib(this.name,this.name),this.name=this.text=``,this.openTag()):e!==g&&this.fail(`disallowed character in attribute name.`)}sAttribNameSawWhite(){let e=this.skipSpaces();switch(e){case g:return;case O:this.state=w;break;default:this.fail(`attribute without value.`),this.text=``,this.name=``,e===k?this.openTag():o(e)?(this.unget(),this.state=S):(this.fail(`disallowed character in attribute name.`),this.state=x)}}sAttribValue(){let e=this.getCodeNorm();F(e)?(this.q=e,this.state=Fe):i(e)||(this.fail(`unquoted attribute value.`),this.state=Le,this.unget())}sAttribValueQuoted(){let{q:e,chunk:t}=this,{i:n}=this;for(;;)switch(this.getCode()){case e:this.pushAttrib(this.name,this.text+t.slice(n,this.prevI)),this.name=this.text=``,this.q=null,this.state=Ie;return;case Ge:this.text+=t.slice(n,this.prevI),this.state=me,this.entityReturnState=Fe;return;case T:case _:case Be:this.text+=`${t.slice(n,this.prevI)} `,n=this.i;break;case D:this.text+=t.slice(n,this.prevI),this.fail(`disallowed character.`);return;case g:this.text+=t.slice(n);return}}sAttribValueClosed(){let e=this.getCodeNorm();i(e)?this.state=x:e===k?this.openTag():e===E?this.state=Pe:o(e)?(this.fail(`no whitespace between attributes.`),this.unget(),this.state=S):this.fail(`disallowed character in attribute name.`)}sAttribValueUnquoted(){let e=this.captureTo(I);switch(e){case Ge:this.state=me,this.entityReturnState=Le;break;case D:this.fail(`disallowed character.`);break;case g:break;default:this.text.includes(`]]>`)&&this.fail(`the string "]]>" is disallowed in char data.`),this.pushAttrib(this.name,this.text),this.name=this.text=``,e===k?this.openTag():this.state=x}}sCloseTag(){let e=this.captureNameChars();e===k?this.closeTag():i(e)?this.state=ze:e!==g&&this.fail(`disallowed character in closing tag.`)}sCloseTagSawWhite(){switch(this.skipSpaces()){case k:this.closeTag();break;case g:break;default:this.fail(`disallowed character in closing tag.`)}}handleTextInRoot(){let{i:e,forbiddenState:t}=this,{chunk:n,textHandler:r}=this;scanLoop:for(;;)switch(this.getCode()){case D:if(this.state=he,r!==void 0){let{text:t}=this,i=n.slice(e,this.prevI);t.length===0?i.length!==0&&r(i):(r(t+i),this.text=``)}t=R;break scanLoop;case Ge:this.state=me,this.entityReturnState=y,r!==void 0&&(this.text+=n.slice(e,this.prevI)),t=R;break scanLoop;case M:switch(t){case R:t=nt;break;case nt:t=rt;break;case rt:break;default:throw Error(`impossible state`)}break;case k:t===rt&&this.fail(`the string "]]>" is disallowed in char data.`),t=R;break;case _:r!==void 0&&(this.text+=`${n.slice(e,this.prevI)}\n`),e=this.i,t=R;break;case g:r!==void 0&&(this.text+=n.slice(e));break scanLoop;default:t=R}this.forbiddenState=t}handleTextOutsideRoot(){let{i:e}=this,{chunk:t,textHandler:n}=this,r=!1;outRootLoop:for(;;){let a=this.getCode();switch(a){case D:if(this.state=he,n!==void 0){let{text:r}=this,i=t.slice(e,this.prevI);r.length===0?i.length!==0&&n(i):(n(r+i),this.text=``)}break outRootLoop;case Ge:this.state=me,this.entityReturnState=y,n!==void 0&&(this.text+=t.slice(e,this.prevI)),r=!0;break outRootLoop;case _:n!==void 0&&(this.text+=`${t.slice(e,this.prevI)}\n`),e=this.i;break;case g:n!==void 0&&(this.text+=t.slice(e));break outRootLoop;default:i(a)||(r=!0)}}r&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail(`text data outside of root node.`),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(`text data outside of root node.`),this.reportedTextAfterRoot=!0))}pushAttribNS(e,t){var n;let{prefix:r,local:i}=this.qname(e),a={name:e,prefix:r,local:i,value:t};if(this.attribList.push(a),(n=this.attributeHandler)==null||n.call(this,a),r===`xmlns`){let e=t.trim();this.currentXMLVersion===`1.0`&&e===``&&this.fail(`invalid attempt to undefine prefix in XML 1.0`),this.topNS[i]=e,$e(this,i,e)}else if(e===`xmlns`){let e=t.trim();this.topNS[``]=e,$e(this,``,e)}}pushAttribPlain(e,t){var n;let r={name:e,value:t};this.attribList.push(r),(n=this.attributeHandler)==null||n.call(this,r)}end(){var e,t;this.sawRoot||this.fail(`document must contain a root element.`);let{tags:n}=this;for(;n.length>0;){let e=n.pop();this.fail(`unclosed tag: ${e.name}`)}this.state!==ne&&this.state!==y&&this.fail(`unexpected end.`);let{text:r}=this;return r.length!==0&&((e=this.textHandler)==null||e.call(this,r),this.text=``),this._closed=!0,(t=this.endHandler)==null||t.call(this),this._init(),this}resolve(e){var t;let n=this.topNS[e];if(n!==void 0)return n;let{tags:r}=this;for(let t=r.length-1;t>=0;t--)if(n=r[t].ns[e],n!==void 0)return n;return n=this.ns[e],n===void 0?(t=this.opt).resolvePrefix?.call(t,e):n}qname(e){let t=e.indexOf(`:`);if(t===-1)return{prefix:``,local:e};let n=e.slice(t+1),r=e.slice(0,t);return(r===``||n===``||n.includes(`:`))&&this.fail(`malformed name: ${e}.`),{prefix:r,local:n}}processAttribsNS(){let{attribList:e}=this,t=this.tag;{let{prefix:e,local:n}=this.qname(t.name);t.prefix=e,t.local=n;let r=t.uri=this.resolve(e)??``;e!==``&&(e===`xmlns`&&this.fail(`tags may not have "xmlns" as prefix.`),r===``&&(this.fail(`unbound namespace prefix: ${JSON.stringify(e)}.`),t.uri=e))}if(e.length===0)return;let{attributes:n}=t,r=new Set;for(let t of e){let{name:e,prefix:i,local:a}=t,o,s;i===``?(o=e===`xmlns`?h:``,s=e):(o=this.resolve(i),o===void 0&&(this.fail(`unbound namespace prefix: ${JSON.stringify(i)}.`),o=i),s=`{${o}}${a}`),r.has(s)&&this.fail(`duplicate attribute: ${s}.`),r.add(s),t.uri=o,n[e]=t}this.attribList=[]}processAttribsPlain(){let{attribList:e}=this,t=this.tag.attributes;for(let{name:n,value:r}of e)t[n]!==void 0&&this.fail(`duplicate attribute: ${n}.`),t[n]=r;this.attribList=[]}openTag(){var e;this.processAttribs();let{tags:t}=this,n=this.tag;n.isSelfClosing=!1,(e=this.openTagHandler)==null||e.call(this,n),t.push(n),this.state=y,this.name=``}openSelfClosingTag(){var e,t;this.processAttribs();let{tags:n}=this,r=this.tag;r.isSelfClosing=!0,(e=this.openTagHandler)==null||e.call(this,r),(t=this.closeTagHandler)==null||t.call(this,r),(this.tag=n[n.length-1]??null)===null&&(this.closedRoot=!0),this.state=y,this.name=``}closeTag(){let{tags:e,name:t}=this;if(this.state=y,this.name=``,t===``){this.fail(`weird empty close tag.`),this.text+=`</>`;return}let n=this.closeTagHandler,r=e.length;for(;r-->0;){let r=this.tag=e.pop();if(this.topNS=r.ns,n?.(r),r.name===t)break;this.fail(`unexpected close tag.`)}r===0?this.closedRoot=!0:r<0&&(this.fail(`unmatched closing tag: ${t}.`),this.text+=`</${t}>`)}parseEntity(e){if(e[0]!==`#`){let t=this.ENTITIES[e];return t===void 0?(this.fail(this.isName(e)?`undefined entity.`:`disallowed character in entity name.`),`&${e};`):t}let t=NaN;return e[1]===`x`&&/^#x[0-9a-f]+$/i.test(e)?t=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(t=parseInt(e.slice(1),10)),this.isChar(t)?String.fromCodePoint(t):(this.fail(`malformed character entity.`),`&${e};`)}}}))(),cn=4194304,ln=new Set([`script`,`iframe`,`object`,`embed`,`audio`,`video`]),un=new Set([`foreignobject`,`div`,`span`,`p`,`br`,`b`,`strong`,`i`,`em`,`small`,`sub`,`sup`,`code`,`ul`,`ol`,`li`,`a`]),dn=/^data:image\/(?:png|jpeg|gif|webp);base64,[a-z0-9+/=\s]+$/i,fn=/^data:(?:font\/(?:woff2?|opentype|truetype)|application\/(?:x-)?font-woff2?);base64,[a-z0-9+/=\s]+$/i,pn=class extends Error{constructor(e){super(e),this.name=`ClientSvgError`}};function mn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)||fn.test(t)}function hn(e){if(/@import|expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|-moz-binding/i.test(e))return!0;let t=/url\s*\(\s*(['"]?)(.*?)\1\s*\)/gi;for(let n of e.matchAll(t))if(!mn(n[2]??``))return!0;return/url\s*\(/i.test(e.replace(t,``))}function gn(e){let t=e.trim();return t.startsWith(`#`)||dn.test(t)}function _n(e,t){let n=e.toLowerCase();return n.startsWith(`on`)?!1:n===`href`||n===`xlink:href`||n===`src`?gn(t):[`style`,`filter`,`fill`,`stroke`,`clip-path`,`mask`].includes(n)?!hn(t):n!==`xml:base`&&!/javascript\s*:/i.test(t)}function vn(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}function yn(e){return vn(e).replaceAll(`"`,`&quot;`)}function bn(e){if(e.type===`text`)return vn(e.value);let t=[...e.attributes].map(([e,t])=>` ${e}="${yn(t)}"`).join(``);return`<${e.name}${t}>${e.children.map(bn).join(``)}</${e.name}>`}function xn(e){return e.name.toLowerCase().split(`:`).at(-1)??e.name.toLowerCase()}function Sn(e){if(e===void 0||!/^-?\d+(?:\.\d+)?(?:px)?$/.test(e.trim()))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function Cn(e){let t=e.attributes.get(`viewBox`)?.trim().split(/[\s,]+/).map(Number);if(t?.length===4&&t.every(Number.isFinite)&&t[2]>0&&t[3]>0)return t;let n=Sn(e.attributes.get(`width`)),r=Sn(e.attributes.get(`height`));return n!==null&&r!==null?[0,0,n,r]:null}function wn(e,t){let n=e.attributes.get(`style`);if(!n)return null;for(let e of n.split(`;`)){let n=e.indexOf(`:`);if(n>=0&&e.slice(0,n).trim().toLowerCase()===t)return e.slice(n+1).trim()}return null}function Tn(e){let t=(e.attributes.get(`fill`)??wn(e,`fill`)??``).replaceAll(` `,``).toLowerCase();return t===`white`||t===`#fff`||t===`#ffffff`||t===`rgb(255,255,255)`}function En(e){if(e===void 0||!/^-?\d+(?:\.\d+)?$/.test(e.trim()))return null;let t=Number(e);return Number.isFinite(t)?t:null}function Dn(e,t){let n=e.attributes.get(`width`)?.trim(),r=e.attributes.get(`height`)?.trim();if(n===`100%`&&r===`100%`)return!0;let i=En(e.attributes.get(`x`)??`0`),a=En(e.attributes.get(`y`)??`0`),o=En(n),s=En(r);if([i,a,o,s].some(e=>e===null))return!1;let[c,l,u,d]=t,f=.01;return i<=c+f&&a<=l+f&&i+o>=c+u-f&&a+s>=l+d-f}function On(e,t,n){let r=xn(e),i=new Set((e.attributes.get(`class`)??``).toLowerCase().split(/\s+/));return r===`rect`&&i.has(`backdrop`)||r===`rect`&&t!==null&&Tn(e)&&Dn(e,t)?!0:n===`graphviz`&&r===`polygon`&&Tn(e)&&(e.attributes.get(`stroke`)??``).toLowerCase()===`none`}function kn(e,t,n){let r=xn(e)===`svg`?Cn(e)??t:t;e.children=e.children.filter(e=>e.type===`text`||!On(e,r,n)&&(kn(e,r,n),!0))}function An(e,t){let n=(e.attributes.get(`style`)??``).split(`;`).map(e=>e.trim()).filter(Boolean).filter(e=>!/^background(?:-color)?\s*:/i.test(e));n.push(`background-color:${t}`),e.attributes.set(`style`,`${n.join(`;`)};`)}function jn(e,t=[],n=[]){return{type:`element`,name:e,attributes:new Map(t),children:n}}function Mn(e,t,n,r){let i=[],a=null;t.title&&i.push(jn(`title`,[],[{type:`text`,value:t.title}])),t.description&&i.push(jn(`desc`,[],[{type:`text`,value:t.description}]));let o=Cn(e);if((n.padding||n.background||n.frame)&&o===null)throw new pn(`Renderer output has no usable SVG dimensions for presentation settings.`);if(o!==null){let[t,r,s,c]=o,l=n.padding,u=[t-l,r-l,s+l*2,c+l*2];e.attributes.set(`viewBox`,u.join(` `)),e.attributes.has(`width`)&&e.attributes.set(`width`,String(u[2])),e.attributes.has(`height`)&&e.attributes.set(`height`,String(u[3])),n.background&&i.push(jn(`rect`,[[`x`,String(u[0])],[`y`,String(u[1])],[`width`,String(u[2])],[`height`,String(u[3])],[`fill`,n.background]])),n.frame&&(a=jn(`rect`,[[`x`,String(u[0]+.5)],[`y`,String(u[1]+.5)],[`width`,String(Math.max(0,u[2]-1))],[`height`,String(Math.max(0,u[3]-1))],[`fill`,`none`],[`stroke`,`#000000`],[`stroke-width`,`1`],[`vector-effect`,`non-scaling-stroke`]]))}n.background&&(kn(e,o,r),An(e,n.background)),e.children.unshift(...i),a&&e.children.push(a)}function Nn(e,t,n,r){if(e.length>cn)throw new pn(`Rendered SVG is too large.`);let i=null,a=[],o=0,s=null,c=new sn.SaxesParser({xmlns:!0});c.on(`doctype`,e=>{e.includes(`[`)&&(s=Error(`Internal DOCTYPE subsets are not allowed`))}),c.on(`opentag`,e=>{let t=e.local.toLowerCase(),n=t===`foreignobject`||a.some(e=>xn(e)===`foreignobject`);if(o>0||ln.has(t)||n&&!un.has(t)){o++;return}let r=jn(e.name);for(let t of Object.values(e.attributes))_n(t.name,t.value)&&r.attributes.set(t.name,t.value);let c=a.at(-1);c?c.children.push(r):i===null?i=r:s=Error(`Multiple root elements`),a.push(r)});let l=e=>{if(o>0||e===``)return;let t=a.at(-1);if(t){if(xn(t)===`style`&&hn(e))throw new pn(`Renderer output contains unsafe CSS.`);t.children.push({type:`text`,value:e})}else e.trim()!==``&&(s=Error(`Text outside root element`))};c.on(`text`,l),c.on(`cdata`,l),c.on(`closetag`,()=>{o>0?o--:a.pop()}),c.on(`error`,e=>{s=e});try{c.write(e).close()}catch(e){if(e instanceof pn)throw e;s=e}if(s!==null||i===null||xn(i)!==`svg`)throw new pn(`Renderer returned invalid SVG.`);return Mn(i,t,n,r),bn(i)}var Pn=Object.freeze({plantuml:`https://plantuml.render.diagram.zip/v1/svg`,graphviz:`https://graphviz.render.diagram.zip/v1/svg`,d2:`https://d2.render.diagram.zip/v1/svg`,c4plantuml:`https://c4plantuml.render.diagram.zip/v1/svg`,blockdiag:`https://blockdiag.render.diagram.zip/v1/svg`,seqdiag:`https://seqdiag.render.diagram.zip/v1/svg`,actdiag:`https://actdiag.render.diagram.zip/v1/svg`,nwdiag:`https://nwdiag.render.diagram.zip/v1/svg`,packetdiag:`https://packetdiag.render.diagram.zip/v1/svg`,rackdiag:`https://rackdiag.render.diagram.zip/v1/svg`,bytefield:`https://bytefield.render.diagram.zip/v1/svg`,dbml:`https://dbml.render.diagram.zip/v1/svg`,ditaa:`https://ditaa.render.diagram.zip/v1/svg`,erd:`https://erd.render.diagram.zip/v1/svg`,goat:`https://goat.render.diagram.zip/v1/svg`,nomnoml:`https://nomnoml.render.diagram.zip/v1/svg`,pikchr:`https://pikchr.render.diagram.zip/v1/svg`,structurizr:`https://structurizr.render.diagram.zip/v1/svg`,svgbob:`https://svgbob.render.diagram.zip/v1/svg`,symbolator:`https://symbolator.render.diagram.zip/v1/svg`,umlet:`https://umlet.render.diagram.zip/v1/svg`,vega:`https://vega.render.diagram.zip/v1/svg`,vegalite:`https://vegalite.render.diagram.zip/v1/svg`,wavedrom:`https://wavedrom.render.diagram.zip/v1/svg`,wireviz:`https://wireviz.render.diagram.zip/v1/svg`});function Fn(e){return Pn[e]??null}function W(e,t,n){return Math.min(Math.max(e,t),n)}var In=class{constructor({stage:e,image:t,status:n,minimap:r,minimapImage:i,minimapViewport:a}){this.stage=e,this.image=t,this.status=n,this.minimap=r,this.minimapImage=i,this.minimapViewport=a,this.scale=1,this.x=0,this.y=0,this.objectUrl=null,this.abortController=null,this.requestNumber=0,this.pendingRender=null,this.renderLoop=null,this.latestRenderKey=null,this.latestSvgBlob=null,this.latestRendererIdentity=null,this.imageFallbackUrl=null,this.activeImageUrl=null,this.drag=null,this.image.addEventListener(`load`,()=>{this.image.src===this.activeImageUrl&&(this.imageFallbackUrl=null,this.setStatus(`Rendered`,`ready`),this.fit())}),this.image.addEventListener(`error`,()=>this.retryBlockedImage()),this.stage.addEventListener(`pointerdown`,e=>this.startPan(e)),this.stage.addEventListener(`pointermove`,e=>this.pan(e)),this.stage.addEventListener(`pointerup`,e=>this.endPan(e)),this.stage.addEventListener(`pointercancel`,e=>this.endPan(e)),this.stage.addEventListener(`wheel`,e=>this.wheelZoom(e),{passive:!1}),this.minimap.addEventListener(`pointerdown`,e=>this.moveFromMinimap(e)),new ResizeObserver(()=>this.updateTransform()).observe(this.stage)}render({type:e,source:t,options:n={},meta:r={},presentation:i={}}){if(!t.trim()){this.requestNumber++,this.pendingRender=null,this.abortController?.abort(),this.setStatus(`Write something to render.`,`idle`);return}let a=JSON.stringify({type:e,source:t,options:n,meta:r,presentation:i});return this.latestRenderKey===a&&this.latestSvgBlob?Promise.resolve():(this.pendingRender={type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:++this.requestNumber},this.abortController?.abort(),this.renderLoop||=this.drainRenderQueue(),this.renderLoop)}async drainRenderQueue(){try{for(;this.pendingRender;){let e=this.pendingRender;this.pendingRender=null,await this.performRender(e)}}finally{this.renderLoop=null,this.pendingRender&&(this.renderLoop=this.drainRenderQueue())}}async performRender({type:e,source:t,options:n,meta:r,presentation:i,renderKey:a,requestNumber:o}){let s=new AbortController;this.abortController=s,this.setStatus(`Rendering…`,`loading`),this.stage.style.setProperty(`--render-background`,`var(--preview-bg)`);try{let c=nn(e),l;if(c){let a=await c.render({type:e,source:t,options:n},s.signal);l={body:Nn(a.body,r,i,e),identity:{unit:e,build:a.build||a.version,pipeline:Array.isArray(a.pipeline)?a.pipeline:[e]}},this.status.dataset.cache=`browser`,this.status.dataset.renderer=e}else l=await this.renderThroughUnit({type:e,source:t,options:n,meta:r,presentation:i},s.signal);if(o!==this.requestNumber)return;let{blob:u,background:d}=this.normalizedSvgBlob(l.body);this.latestRenderKey=a,this.latestSvgBlob=u,this.latestRendererIdentity=l.identity,this.imageFallbackUrl=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(await u.text())}`,this.stage.style.setProperty(`--render-background`,d);let f=URL.createObjectURL(u),p=this.objectUrl;this.objectUrl=f,this.activeImageUrl=f,this.image.src=f,this.minimapImage.src=f,this.image.hidden=!1,this.setStatus(`Loading image…`,`loading`),p&&URL.revokeObjectURL(p)}catch(e){if(e.name===`AbortError`)return;this.setStatus(e.message||`Could not render this diagram.`,`error`)}finally{this.abortController===s&&(this.abortController=null)}}async renderThroughUnit({type:e,source:t,options:n,meta:r,presentation:i},a){let o=Fn(e);if(!o)throw Error(`No renderer is registered for ${e}.`);let s=await this.renderRequest(o,{source:t,format:`svg`,options:n,metadata:r,presentation:i},a);return this.renderResponse(s,e)}renderRequest(e,t,n){return fetch(e,{method:`POST`,headers:{Accept:`image/svg+xml`,"Content-Type":`application/json`},body:JSON.stringify(t),signal:n})}async renderResponse(e,t){if(!e.ok)throw Error(await this.errorMessage(e));this.status.dataset.cache=e.headers.get(`X-Diagram-Cache`)?.toLowerCase()??`miss`,this.status.dataset.renderer=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Renderer`)?.toLowerCase()??t;let n=e.headers.get(`X-Diagram-Unit`)?.toLowerCase()??e.headers.get(`X-Diagram-Engine`)?.toLowerCase()??t,r=e.headers.get(`X-Renderer-Build`)??e.headers.get(`X-Diagram-Engine-Version`)??`${n}-unknown`,i=(e.headers.get(`X-Diagram-Pipeline`)??n).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return{body:await e.text(),identity:{unit:n,build:r,pipeline:i}}}retryBlockedImage(){if(this.image.src===this.activeImageUrl){if(this.imageFallbackUrl&&this.activeImageUrl.startsWith(`blob:`)){let e=this.imageFallbackUrl;this.imageFallbackUrl=null,this.objectUrl&&URL.revokeObjectURL(this.objectUrl),this.objectUrl=null,this.activeImageUrl=e,this.image.src=e,this.minimapImage.src=e;return}this.setStatus(`The rendered image was blocked or invalid.`,`error`)}}svgBlobFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestSvgBlob:null}rendererIdentityFor(e){let{type:t,source:n,options:r={},meta:i={},presentation:a={}}=e,o=JSON.stringify({type:t,source:n,options:r,meta:i,presentation:a});return this.latestRenderKey===o?this.latestRendererIdentity:null}async errorMessage(e){let t=await e.text();if(e.headers.get(`Content-Type`)?.includes(`application/json`))try{let e=JSON.parse(t);if(typeof e?.error?.message==`string`)return e.error.message}catch{}return new DOMParser().parseFromString(t,`text/html`).body.textContent.trim().replace(/\s+/g,` `)||`Render failed with HTTP ${e.status}.`}normalizedSvgBlob(e){let t=new DOMParser().parseFromString(e,`image/svg+xml`).documentElement,n=t.getAttribute(`viewBox`)?.trim().split(/[\s,]+/).map(Number);t.nodeName===`svg`&&n?.length===4&&n.every(Number.isFinite)&&(t.hasAttribute(`width`)||t.setAttribute(`width`,String(n[2])),t.hasAttribute(`height`)||t.setAttribute(`height`,String(n[3])),e=new XMLSerializer().serializeToString(t));let r=t.style.backgroundColor||t.style.background,i=r&&r!==`transparent`?r:`#ffffff`;return{blob:new Blob([e],{type:`image/svg+xml`}),background:i}}setStatus(e,t){this.status.textContent=e,this.status.dataset.state=t}zoom(e){if(this.image.hidden)return;let t=this.stage.getBoundingClientRect();this.zoomAt(e,t.width/2,t.height/2)}zoomAt(e,t,n){let r=W(this.scale*e,.1,8),i=(t-this.x)/this.scale,a=(n-this.y)/this.scale;this.x=t-i*r,this.y=n-a*r,this.scale=r,this.updateTransform()}wheelZoom(e){if(this.image.hidden||e.target.closest(`.preview-toolbar, .minimap`))return;e.preventDefault();let t=this.stage.getBoundingClientRect(),n=e.deltaY*(e.deltaMode===WheelEvent.DOM_DELTA_LINE?16:e.deltaMode===WheelEvent.DOM_DELTA_PAGE?t.height:1);this.zoomAt(Math.exp(-W(n,-240,240)*.002),e.clientX-t.left,e.clientY-t.top)}oneToOne(){if(this.image.hidden)return;let e=this.stage.getBoundingClientRect();this.scale=1,this.x=(e.width-this.image.naturalWidth)/2,this.y=(e.height-this.image.naturalHeight)/2,this.updateTransform()}fit(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=Math.min(64,e.width*.12);this.scale=W(Math.min((e.width-t*2)/this.image.naturalWidth,(e.height-t*2)/this.image.naturalHeight),.1,2),this.x=(e.width-this.image.naturalWidth*this.scale)/2,this.y=(e.height-this.image.naturalHeight*this.scale)/2,this.updateTransform()}updateTransform(){this.image.style.transform=`translate(${this.x}px, ${this.y}px) scale(${this.scale})`,this.updateMinimap()}startPan(e){this.image.hidden||e.button!==0||e.target.closest(`.preview-toolbar, .minimap`)||(this.drag={pointerId:e.pointerId,x:e.clientX,y:e.clientY,originX:this.x,originY:this.y},this.stage.setPointerCapture(e.pointerId),this.stage.dataset.dragging=`true`)}pan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.x=this.drag.originX+e.clientX-this.drag.x,this.y=this.drag.originY+e.clientY-this.drag.y,this.updateTransform())}endPan(e){!this.drag||e.pointerId!==this.drag.pointerId||(this.drag=null,delete this.stage.dataset.dragging)}moveFromMinimap(e){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let t=this.minimap.getBoundingClientRect(),n=Math.min(t.width/this.image.naturalWidth,t.height/this.image.naturalHeight),r=(t.width-this.image.naturalWidth*n)/2,i=(t.height-this.image.naturalHeight*n)/2,a=(e.clientX-t.left-r)/n,o=(e.clientY-t.top-i)/n,s=this.stage.getBoundingClientRect();this.x=s.width/2-a*this.scale,this.y=s.height/2-o*this.scale,this.updateTransform()}updateMinimap(){if(!this.image.naturalWidth||!this.image.naturalHeight)return;let e=this.stage.getBoundingClientRect(),t=this.image.naturalWidth*this.scale,n=this.image.naturalHeight*this.scale,r=this.x>=0&&this.y>=0&&this.x+t<=e.width&&this.y+n<=e.height;if(this.minimap.hidden=r,r)return;let i=this.minimap.getBoundingClientRect(),a=Math.min(i.width/this.image.naturalWidth,i.height/this.image.naturalHeight),o=(i.width-this.image.naturalWidth*a)/2,s=(i.height-this.image.naturalHeight*a)/2,c=W(-this.x/this.scale,0,this.image.naturalWidth),l=W(-this.y/this.scale,0,this.image.naturalHeight),u=W((e.width-this.x)/this.scale,0,this.image.naturalWidth),d=W((e.height-this.y)/this.scale,0,this.image.naturalHeight);this.minimapViewport.style.left=`${o+c*a}px`,this.minimapViewport.style.top=`${s+l*a}px`,this.minimapViewport.style.width=`${Math.max(4,(u-c)*a)}px`,this.minimapViewport.style.height=`${Math.max(4,(d-l)*a)}px`}},Ln=`diagram.zip:draft:local:v2`,G=`diagram.zip:draft:alias:v1:`,Rn=`diagram.zip:write:v1:`,K=new Et,zn,Bn,q=!1,Vn=``,J={aliasId:null,contentId:null,renderId:null,revision:null,mode:`open`,savedMode:null,writeCapability:null,savedState:null,savedSnapshot:null,bundleKey:null,keyEnvelope:null,encryptedContent:null,encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!0},Hn=new Map;document.querySelector(`#app`).innerHTML=`1646+>>>>>>>> 2ae62c42 (finish renderer extraction from Fly):server/src/main/resources/web/diagramzip/assets/index-2FiPr3LF.js16431647 <main class="app-shell">16441648 <header class="app-header">16451649 <a class="brand" href="/" aria-label="New diagram"><img class="brand-mark" src="/diagram.zip/icon.svg?v=2" alt=""><span>diagram.zip</span></a>
@@ -1799,4 +1803,4 @@ ${h}.`);break;case m:switch(t){case`xml`:break;case``:e.fail(`the default namesp
17991803 </dialog>18001804 18011805 <div class="toast" id="toast" role="status" aria-live="polite"></div>1802-`;var Gn=document.querySelector(`#diagram-type`),Kn=document.querySelector(`#diagram-title`),qn=document.querySelector(`#diagram-description`),Jn=document.querySelector(`#diagram-background`),Yn=document.querySelector(`#diagram-padding`),Xn=document.querySelector(`#diagram-frame`);for(let{id:e,label:t}of n)Gn.add(new Option(t,e));var Y=await rr(),Zn=V(Y.meta),Qn=H(Y.presentation);Gn.value=Y.type,Kn.value=Zn.title,qn.value=Zn.description,Jn.value=Qn.background,Yn.value=String(Qn.padding),Xn.checked=Qn.frame,Nr(),Hn=Y.type,Wn.set(Y.type,Y);var $n=await dt({element:document.querySelector(`#editor`),source:Y.source,diagramType:Y.type,onChange:tr,onSave:cr}),X=new Rn({stage:document.querySelector(`#preview-stage`),image:document.querySelector(`#preview-image`),status:document.querySelector(`.render-status`),minimap:document.querySelector(`#minimap`),minimapImage:document.querySelector(`#minimap-image`),minimapViewport:document.querySelector(`#minimap-viewport`)});Gn.addEventListener(`change`,()=>{let e=Gn.value;history.replaceState(null,``,a(location.href,e)),ir(pt(Wn,Hn,e,er(),lt))}),document.querySelector(`#details`).addEventListener(`click`,()=>{document.querySelector(`#details-dialog`).showModal(),Kn.focus()});for(let e of[Kn,qn,Jn,Yn,Xn])e.addEventListener(`input`,()=>{Nr(),clearTimeout(nr.timeout),nr.timeout=setTimeout(nr,220)});document.querySelector(`#details-dialog`).addEventListener(`close`,nr),document.querySelector(`#lock-diagram`).addEventListener(`click`,pr),document.querySelector(`#change-password`).addEventListener(`click`,mr),document.querySelector(`#unlock-diagram`).addEventListener(`click`,hr),document.querySelector(`#save`).addEventListener(`click`,()=>cr()),document.querySelector(`#restore-saved`).addEventListener(`click`,kr),document.querySelector(`#make-copy`).addEventListener(`click`,Ar),document.querySelector(`#share`).addEventListener(`click`,ar),document.querySelector(`#share-save`).addEventListener(`click`,async()=>{await cr(),or()}),document.querySelector(`.brand`).addEventListener(`click`,e=>{e.preventDefault(),confirm(`Start a new diagram?`)&&Mr()}),document.querySelectorAll(`[data-preview-action]`).forEach(e=>{e.addEventListener(`click`,()=>{let t=e.dataset.previewAction;t===`zoom-out`&&X.zoom(.8),t===`zoom-in`&&X.zoom(1.25),t===`fit`&&X.fit(),t===`one-to-one`&&X.oneToOne()})}),document.querySelectorAll(`.mobile-tabs button`).forEach(e=>{e.addEventListener(`click`,()=>{document.querySelector(`.workspace`).dataset.mobilePanel=e.dataset.panel,document.querySelectorAll(`.mobile-tabs button`).forEach(t=>{t.setAttribute(`aria-selected`,String(t===e))}),e.dataset.panel===`preview`&&X.fit(),e.dataset.panel===`editor`&&$n.layout()})}),document.querySelectorAll(`[data-copy]`).forEach(e=>{e.addEventListener(`click`,async()=>{let t=document.querySelector(`#${e.dataset.copy}`);t.value&&(await Pr(t.value),$(`Copied`))})}),window.addEventListener(`popstate`,()=>location.reload()),window.addEventListener(`keydown`,e=>{e.defaultPrevented||(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),cr())});function er(){let e=Math.min(256,Math.max(0,Number.parseInt(Yn.value,10)||0));return{type:Gn.value,source:$n.getValue(),options:{},meta:V({title:Kn.value,description:qn.value}),presentation:H({background:Jn.value,padding:e,frame:Xn.checked})}}function tr(e=1200){clearTimeout(Vn),Vn=setTimeout(Z,e)}function Z(e=!0){let t=er();Cr(t),J.dirty=J.keyEnvelopeDirty||J.savedSnapshot!==br(t,J.mode),Q(),jr(),e&&X.render(t)}function nr(){clearTimeout(nr.timeout),Z()}async function rr(){let e=vt(location.pathname);if(e){let t=St(location.hash);t&&Tr(e,t),location.hash&&history.replaceState(null,``,`${location.pathname}${location.search}`);try{let n=await K.getAlias(e),r=t??Er(e);if(n.mode===`locked`){let e=await gr(n);return e?(Dr(n,r,e.state,e.bundleKey),e.state):(Un=`A password is required to open this diagram.`,lt(it))}Dr(n,r,n.state);let i=Sr(`${G}${e}`);return i?.revision===n.revision?i.state:n.state}catch(e){Un=e instanceof Ct?e.message:`This saved diagram could not be loaded.`}}location.hash&&history.replaceState(null,``,`${location.pathname}${location.search}`);let t=i(location.search),n=Sr(zn);return t?n?.state.type===t?n.state:lt(t):n?n.state:lt(it)}function ir(e,t=!0){if(!r(e.type))throw Error(`Unsupported diagram type.`);let n=V(e.meta),i=H(e.presentation);Hn=e.type,Wn.set(e.type,{...e,meta:n,presentation:i}),Gn.value=e.type,Kn.value=n.title,qn.value=n.description,Jn.value=i.background,Yn.value=String(i.padding),Xn.checked=i.frame,Nr(),$n.setDocument({source:e.source,diagramType:e.type}),t?Z():X.render(er())}function ar(){Z(),or(),document.querySelector(`#share-dialog`).showModal()}function or(){let e=!!J.aliasId,t=e&&J.savedMode===`locked`,n=e?yt(location.origin,J.aliasId):``,r=e&&J.writeCapability?bt(location.origin,J.aliasId,J.writeCapability):``,i=t?null:J.savedState,a=i?xt(location.origin,J.aliasId,`svg`):``,o=document.querySelector(`#image-link`),s=document.querySelector(`#markdown-link`),c=i?.meta.title.trim().replace(/[\[\]\r\n]/g,` `)||`Diagram`;sr(`viewer-link`,n,`Save to create a read link`),sr(`editor-link`,r,e?`No write capability on this device`:`Save to create an edit link`),sr(`image-link`,a,t?`Encrypted diagrams cannot be embedded`:e?`Unavailable for this diagram`:`Save to create an image link`),sr(`markdown-link`,a?`![${c}](${a})`:``,t?`Encrypted diagrams cannot be embedded`:e?`Unavailable for this diagram`:`Save to create Markdown`),document.querySelector(`#editor-link-note`).textContent=r?`Anyone with this link can update the diagram.`:e?`This device has read-only access. Save a copy to create a new edit link.`:`The edit link is a bearer credential and appears after saving.`,document.querySelector(`#image-link-note`).textContent=t?`This diagram is encrypted in your browser. Image embeds are disabled because they cannot ask for its password.`:``,o.dataset.state=t?`unavailable`:`ready`,s.dataset.state=t?`unavailable`:`ready`;let l=document.querySelector(`#share-status`),u=document.querySelector(`#share-save`);u.hidden=e&&!J.dirty,e?J.dirty&&J.writeCapability?(l.textContent=`These links show the last saved version. Save your changes before sharing.`,u.textContent=`Save changes`):J.dirty?(l.textContent=`You are editing a read-only diagram. Save a copy to share your changes.`,u.textContent=`Save as new`):l.textContent=t?J.writeCapability?`The read link asks for the password. The edit link also grants permission to save changes.`:`The read link asks for the password. This device has read-only access.`:J.writeCapability?`Copy a read link, or share the edit capability carefully.`:`This diagram is read-only on this device.`:(l.textContent=`Save this diagram to create stable share links.`,u.textContent=`Save diagram`)}function sr(e,t,n){let r=document.querySelector(`#${e}`),i=document.querySelector(`[data-copy="${e}"]`);r.value=t,r.placeholder=t?``:n,i.disabled=!t}async function cr(){if(q)return!1;Z(!1);let e=er();if(J.aliasId&&!J.dirty)return $(`Already saved`),!0;q=!0,Q();try{if(J.aliasId&&J.writeCapability)return Dr(J.mode===`locked`?await K.updateLockedAlias(J.aliasId,await ur(e),J.revision,J.writeCapability):await K.updateAlias(J.aliasId,e,J.revision,J.writeCapability),J.writeCapability,e,J.mode===`locked`?J.bundleKey:null),wr(`${G}${J.aliasId}`),await dr(e),$(`Saved`),!0;let t=!!J.aliasId;return await lr(e),$(t?`Saved as a new diagram`:`Saved`),!0}catch(t){return t instanceof Ct&&t.status===412&&J.aliasId?await vr(e):($(t instanceof Error?t.message:`Could not save this diagram.`),!1)}finally{q=!1,Q()}}async function lr(e){let t=J.aliasId,n=t?`${G}${t}`:zn,r=J.bundleKey,i=J.mode===`locked`?await K.createLockedAlias(await ur(e)):await K.createAlias(e);Dr(i,i.writeCapability,e,J.mode===`locked`?r:null),Tr(i.aliasId,i.writeCapability),wr(n),history.pushState(null,``,a(`/d/${i.aliasId}`,e.type)),await dr(e)}async function ur(e){if(!(J.bundleKey instanceof Uint8Array)||!J.keyEnvelope)throw Error(`This diagram is missing its browser encryption key.`);return J.savedMode===`locked`&&J.savedSnapshot===br(e,`locked`)&&J.encryptedContent&&J.encryptedMetadata?{mode:`locked`,encryptedContent:J.encryptedContent,encryptedMetadata:J.encryptedMetadata,keyEnvelope:J.keyEnvelope}:Kt(e,J.bundleKey,J.keyEnvelope)}async function dr(e){if(!J.aliasId||!J.writeCapability)return;await X.render(e);let t=X.svgBlobFor(e),n=X.rendererIdentityFor(e);if(!t||!n)return;let r=[[`svg`,t]];try{r.push([`png`,await fr(t)])}catch{}let i=r.map(async([e,t])=>{let r=J.mode===`locked`?await Yt(t,J.bundleKey,e):t;return K.uploadRender({aliasId:J.aliasId,renderId:J.renderId,revision:J.revision,writeCapability:J.writeCapability,format:e,mode:J.mode,render:r,renderer:n})});(await Promise.allSettled(i)).every(e=>e.status===`rejected`)&&X.setStatus(`Saved; render cache unavailable`,`ready`)}async function fr(e){let t=URL.createObjectURL(e);try{let e=new Image;e.src=t,await e.decode();let n=Math.min(1,4096/Math.max(e.naturalWidth,e.naturalHeight)),r=Math.max(1,Math.round(e.naturalWidth*n)),i=Math.max(1,Math.round(e.naturalHeight*n)),a=document.createElement(`canvas`);a.width=r,a.height=i;let o=a.getContext(`2d`);if(!o)throw Error(`Canvas is unavailable.`);o.drawImage(e,0,0,r,i);let s=await new Promise(e=>a.toBlob(e,`image/png`));if(!s)throw Error(`Could not create a PNG render.`);return s}finally{URL.revokeObjectURL(t)}}async function pr(){let e=await _r({title:`Lock diagram`,copy:`The source, metadata, and saved render will be encrypted in this browser. The password cannot be recovered.`,submitLabel:`Lock diagram`,confirm:!0});if(e!==null)try{let{bundleKey:t,payload:n}=await qt(er(),e);J.mode=`locked`,J.bundleKey=t,J.keyEnvelope=n.keyEnvelope,J.encryptedContent=n.encryptedContent,J.encryptedMetadata=n.encryptedMetadata,J.keyEnvelopeDirty=!0,wr(J.aliasId?`${G}${J.aliasId}`:zn),Z(!1),$(`Locked in this browser — save to persist`)}catch(e){$(e instanceof Error?e.message:`Could not lock this diagram.`)}}async function mr(){if(J.mode!==`locked`||!(J.bundleKey instanceof Uint8Array))return;let e=await _r({title:`Change password`,copy:`Only the encrypted bundle key will be rewrapped. The diagram content does not need to be re-encrypted.`,submitLabel:`Change password`,confirm:!0});if(e!==null)try{J.keyEnvelope=await Wt(J.bundleKey,e),J.keyEnvelopeDirty=!0,Z(!1),$(`Password changed — save to persist`)}catch(e){$(e instanceof Error?e.message:`Could not change the password.`)}}function hr(){J.mode===`locked`&&confirm(`Remove password protection? The next save will store the diagram in plaintext.`)&&(J.mode=`open`,J.keyEnvelopeDirty=!1,Z(!1),$(`Password removed — save to persist`))}async function gr(e){for(;;){let t=await _r({title:`Unlock diagram`,copy:`Decryption happens only in this browser. The password is never sent to diagram.zip.`,submitLabel:`Unlock`,confirm:!1});if(t===null)return null;try{return await Jt(e,t)}catch(e){$(e instanceof Error?e.message:`Could not unlock this diagram.`)}}}function _r({title:e,copy:t,submitLabel:n,confirm:r}){let i=document.querySelector(`#password-dialog`),a=document.querySelector(`#password-form`),o=document.querySelector(`#diagram-password`),s=document.querySelector(`#diagram-password-confirm`),c=document.querySelector(`#password-confirm-field`),l=document.querySelector(`#password-error`);return document.querySelector(`#password-title`).textContent=e,document.querySelector(`#password-copy`).textContent=t,document.querySelector(`#password-submit`).textContent=n,c.hidden=!r,o.autocomplete=r?`new-password`:`current-password`,o.value=``,s.value=``,l.textContent=``,new Promise(e=>{let t=!1,n=n=>{t||(t=!0,a.removeEventListener(`submit`,c),document.querySelector(`#password-cancel`).removeEventListener(`click`,u),i.removeEventListener(`cancel`,u),i.removeEventListener(`close`,d),e(n))},c=e=>{e.preventDefault();let t=o.value;if(r&&t.length<8){l.textContent=`Use at least 8 characters.`,o.focus();return}if(r&&t!==s.value){l.textContent=`The passwords do not match.`,s.focus();return}i.close(),n(t)},u=e=>{e.preventDefault(),i.close(),n(null)},d=()=>n(null);a.addEventListener(`submit`,c),document.querySelector(`#password-cancel`).addEventListener(`click`,u),i.addEventListener(`cancel`,u),i.addEventListener(`close`,d),i.showModal(),o.focus()})}async function vr(e){let t=await yr();if(t===`reload`){let e=J.aliasId,t=J.writeCapability;try{let n=await K.getAlias(e),r=n.state,i=null;if(n.mode===`locked`){let e=await gr(n);if(!e)return!1;r=e.state,i=e.bundleKey}return Dr(n,t,r,i),wr(`${G}${e}`),ir(r,!1),Q(),$(`Reloaded saved diagram`),!0}catch(e){return $(e instanceof Error?e.message:`Could not reload this diagram.`),!1}}return t===`copy`&&(await lr(e),$(`Saved as a new diagram`),!0)}function yr(){let e=document.querySelector(`#conflict-dialog`);return e.returnValue=``,e.showModal(),new Promise(t=>{e.addEventListener(`close`,()=>t(e.returnValue),{once:!0})})}function br(e,t=`open`){return JSON.stringify({mode:t,type:e.type,source:e.source,options:e.options??{},meta:V(e.meta),presentation:H(e.presentation)})}function xr(e){if(!e||typeof e!=`object`||!r(e.type)||typeof e.source!=`string`)return null;try{return{type:e.type,source:e.source,options:e.options??{},meta:V(e.meta),presentation:H(e.presentation)}}catch{return null}}function Sr(e){try{let t=JSON.parse(localStorage.getItem(e)),n=xr(t?.state);return n?{state:n,revision:t.revision??null}:null}catch{return null}}function Cr(e){if(J.mode===`locked`)return;let t=J.aliasId?`${G}${J.aliasId}`:zn;try{localStorage.setItem(t,JSON.stringify({state:e,revision:J.revision}))}catch{}}function wr(e){try{localStorage.removeItem(e)}catch{}}function Tr(e,t){try{localStorage.setItem(`${Bn}${e}`,t)}catch{}}function Er(e){try{return St(`#w=${localStorage.getItem(`${Bn}${e}`)??``}`)}catch{return null}}function Dr(e,t,n,r=null){J={aliasId:e.aliasId,contentId:e.contentId,renderId:e.renderId,revision:e.revision,mode:e.mode,savedMode:e.mode,writeCapability:t,savedState:n,savedSnapshot:br(n,e.mode),bundleKey:r,keyEnvelope:e.mode===`locked`?e.keyEnvelope:null,encryptedContent:e.mode===`locked`?e.encryptedContent:null,encryptedMetadata:e.mode===`locked`?e.encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!1},jr(),Q()}function Q(){let e=document.querySelector(`#save`);if(Or(),q){e.textContent=`Saving…`,e.disabled=!0;return}if(J.aliasId&&!J.dirty){e.textContent=`Saved`,e.disabled=!0;return}e.textContent=J.aliasId&&!J.writeCapability?`Save copy`:`Save`,e.disabled=!1}function Or(){let e=document.querySelector(`#draft-bar`);e.hidden=!(J.aliasId&&J.savedState&&J.dirty),document.querySelector(`#restore-saved`).disabled=q,document.querySelector(`#make-copy`).disabled=q}function kr(){!J.aliasId||!J.savedState||!J.dirty||(clearTimeout(Vn),clearTimeout(nr.timeout),J.mode=J.savedMode,J.keyEnvelopeDirty=!1,J.dirty=!1,wr(`${G}${J.aliasId}`),Wn.clear(),ir(J.savedState,!1),history.replaceState(null,``,a(location.href,J.savedState.type)),jr(),Q(),$(`Restored saved diagram`))}async function Ar(){if(q||!J.aliasId||!J.dirty)return;Z(!1);let e=er();q=!0,Q();try{await lr(e),$(`Saved as a new diagram`)}catch(e){$(e instanceof Error?e.message:`Could not make a copy.`)}finally{q=!1,Q()}}function jr(){let e=J.mode===`locked`;document.querySelector(`#privacy-label`).textContent=e?`Password locked`:`Open`,document.querySelector(`#privacy-description`).textContent=e?`Source, metadata, and saved renders are encrypted in your browser. Password-locked diagrams cannot be embedded.`:`Anyone with the read link can open and embed this diagram.`,document.querySelector(`#lock-diagram`).hidden=e,document.querySelector(`#change-password`).hidden=!e,document.querySelector(`#unlock-diagram`).hidden=!e}function Mr(){J={aliasId:null,contentId:null,renderId:null,revision:null,mode:`open`,savedMode:null,writeCapability:null,savedState:null,savedSnapshot:null,bundleKey:null,keyEnvelope:null,encryptedContent:null,encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!0},Wn.clear(),history.pushState(null,``,a(`/`,it)),ir(lt(it))}function Nr(){let e=Kn.value.trim(),t=qn.value.trim();document.title=e?`${e} — diagram.zip`:`diagram.zip`,document.querySelector(`meta[name="description"]`).content=t||`Create diagrams from text and share them as a link.`}async function Pr(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);t.value=e,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove()}function $(e){let t=document.querySelector(`#toast`);t.textContent=e,t.dataset.visible=`true`,clearTimeout($.timeout),$.timeout=setTimeout(()=>delete t.dataset.visible,1800)}Z(),Un&&$(Un);\ No newline at end of file1806+`;var Un=document.querySelector(`#diagram-type`),Wn=document.querySelector(`#diagram-title`),Gn=document.querySelector(`#diagram-description`),Kn=document.querySelector(`#diagram-background`),qn=document.querySelector(`#diagram-padding`),Jn=document.querySelector(`#diagram-frame`);for(let{id:e,label:t}of n)Un.add(new Option(t,e));var Y=await tr(),Yn=V(Y.meta),Xn=H(Y.presentation);Un.value=Y.type,Wn.value=Yn.title,Gn.value=Yn.description,Kn.value=Xn.background,qn.value=String(Xn.padding),Jn.checked=Xn.frame,jr(),Bn=Y.type,Hn.set(Y.type,Y);var Zn=await dt({element:document.querySelector(`#editor`),source:Y.source,diagramType:Y.type,onChange:$n,onSave:or}),X=new In({stage:document.querySelector(`#preview-stage`),image:document.querySelector(`#preview-image`),status:document.querySelector(`.render-status`),minimap:document.querySelector(`#minimap`),minimapImage:document.querySelector(`#minimap-image`),minimapViewport:document.querySelector(`#minimap-viewport`)});Un.addEventListener(`change`,()=>{let e=Un.value;history.replaceState(null,``,a(location.href,e)),nr(pt(Hn,Bn,e,Qn(),lt))}),document.querySelector(`#details`).addEventListener(`click`,()=>{document.querySelector(`#details-dialog`).showModal(),Wn.focus()});for(let e of[Wn,Gn,Kn,qn,Jn])e.addEventListener(`input`,()=>{jr(),clearTimeout(er.timeout),er.timeout=setTimeout(er,220)});document.querySelector(`#details-dialog`).addEventListener(`close`,er),document.querySelector(`#lock-diagram`).addEventListener(`click`,dr),document.querySelector(`#change-password`).addEventListener(`click`,fr),document.querySelector(`#unlock-diagram`).addEventListener(`click`,pr),document.querySelector(`#save`).addEventListener(`click`,()=>or()),document.querySelector(`#restore-saved`).addEventListener(`click`,Dr),document.querySelector(`#make-copy`).addEventListener(`click`,Or),document.querySelector(`#share`).addEventListener(`click`,rr),document.querySelector(`#share-save`).addEventListener(`click`,async()=>{await or(),ir()}),document.querySelector(`.brand`).addEventListener(`click`,e=>{e.preventDefault(),confirm(`Start a new diagram?`)&&Ar()}),document.querySelectorAll(`[data-preview-action]`).forEach(e=>{e.addEventListener(`click`,()=>{let t=e.dataset.previewAction;t===`zoom-out`&&X.zoom(.8),t===`zoom-in`&&X.zoom(1.25),t===`fit`&&X.fit(),t===`one-to-one`&&X.oneToOne()})}),document.querySelectorAll(`.mobile-tabs button`).forEach(e=>{e.addEventListener(`click`,()=>{document.querySelector(`.workspace`).dataset.mobilePanel=e.dataset.panel,document.querySelectorAll(`.mobile-tabs button`).forEach(t=>{t.setAttribute(`aria-selected`,String(t===e))}),e.dataset.panel===`preview`&&X.fit(),e.dataset.panel===`editor`&&Zn.layout()})}),document.querySelectorAll(`[data-copy]`).forEach(e=>{e.addEventListener(`click`,async()=>{let t=document.querySelector(`#${e.dataset.copy}`);t.value&&(await Mr(t.value),$(`Copied`))})}),window.addEventListener(`popstate`,()=>location.reload()),window.addEventListener(`keydown`,e=>{e.defaultPrevented||(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),or())});function Qn(){let e=Math.min(256,Math.max(0,Number.parseInt(qn.value,10)||0));return{type:Un.value,source:Zn.getValue(),options:{},meta:V({title:Wn.value,description:Gn.value}),presentation:H({background:Kn.value,padding:e,frame:Jn.checked})}}function $n(e=1200){clearTimeout(zn),zn=setTimeout(Z,e)}function Z(e=!0){let t=Qn();xr(t),J.dirty=J.keyEnvelopeDirty||J.savedSnapshot!==vr(t,J.mode),Q(),kr(),e&&X.render(t)}function er(){clearTimeout(er.timeout),Z()}async function tr(){let e=vt(location.pathname);if(e){let t=St(location.hash);t&&Cr(e,t),location.hash&&history.replaceState(null,``,`${location.pathname}${location.search}`);try{let n=await K.getAlias(e),r=t??wr(e);if(n.mode===`locked`){let e=await mr(n);return e?(Tr(n,r,e.state,e.bundleKey),e.state):(Vn=`A password is required to open this diagram.`,lt(it))}Tr(n,r,n.state);let i=br(`${G}${e}`);return i?.revision===n.revision?i.state:n.state}catch(e){Vn=e instanceof Ct?e.message:`This saved diagram could not be loaded.`}}location.hash&&history.replaceState(null,``,`${location.pathname}${location.search}`);let t=i(location.search),n=br(Ln);return t?n?.state.type===t?n.state:lt(t):n?n.state:lt(it)}function nr(e,t=!0){if(!r(e.type))throw Error(`Unsupported diagram type.`);let n=V(e.meta),i=H(e.presentation);Bn=e.type,Hn.set(e.type,{...e,meta:n,presentation:i}),Un.value=e.type,Wn.value=n.title,Gn.value=n.description,Kn.value=i.background,qn.value=String(i.padding),Jn.checked=i.frame,jr(),Zn.setDocument({source:e.source,diagramType:e.type}),t?Z():X.render(Qn())}function rr(){Z(),ir(),document.querySelector(`#share-dialog`).showModal()}function ir(){let e=!!J.aliasId,t=e&&J.savedMode===`locked`,n=e?yt(location.origin,J.aliasId):``,r=e&&J.writeCapability?bt(location.origin,J.aliasId,J.writeCapability):``,i=t?null:J.savedState,a=i?xt(location.origin,J.aliasId,`svg`):``,o=document.querySelector(`#image-link`),s=document.querySelector(`#markdown-link`),c=i?.meta.title.trim().replace(/[\[\]\r\n]/g,` `)||`Diagram`;ar(`viewer-link`,n,`Save to create a read link`),ar(`editor-link`,r,e?`No write capability on this device`:`Save to create an edit link`),ar(`image-link`,a,t?`Encrypted diagrams cannot be embedded`:e?`Unavailable for this diagram`:`Save to create an image link`),ar(`markdown-link`,a?`![${c}](${a})`:``,t?`Encrypted diagrams cannot be embedded`:e?`Unavailable for this diagram`:`Save to create Markdown`),document.querySelector(`#editor-link-note`).textContent=r?`Anyone with this link can update the diagram.`:e?`This device has read-only access. Save a copy to create a new edit link.`:`The edit link is a bearer credential and appears after saving.`,document.querySelector(`#image-link-note`).textContent=t?`This diagram is encrypted in your browser. Image embeds are disabled because they cannot ask for its password.`:``,o.dataset.state=t?`unavailable`:`ready`,s.dataset.state=t?`unavailable`:`ready`;let l=document.querySelector(`#share-status`),u=document.querySelector(`#share-save`);u.hidden=e&&!J.dirty,e?J.dirty&&J.writeCapability?(l.textContent=`These links show the last saved version. Save your changes before sharing.`,u.textContent=`Save changes`):J.dirty?(l.textContent=`You are editing a read-only diagram. Save a copy to share your changes.`,u.textContent=`Save as new`):l.textContent=t?J.writeCapability?`The read link asks for the password. The edit link also grants permission to save changes.`:`The read link asks for the password. This device has read-only access.`:J.writeCapability?`Copy a read link, or share the edit capability carefully.`:`This diagram is read-only on this device.`:(l.textContent=`Save this diagram to create stable share links.`,u.textContent=`Save diagram`)}function ar(e,t,n){let r=document.querySelector(`#${e}`),i=document.querySelector(`[data-copy="${e}"]`);r.value=t,r.placeholder=t?``:n,i.disabled=!t}async function or(){if(q)return!1;Z(!1);let e=Qn();if(J.aliasId&&!J.dirty)return $(`Already saved`),!0;q=!0,Q();try{if(J.aliasId&&J.writeCapability)return Tr(J.mode===`locked`?await K.updateLockedAlias(J.aliasId,await cr(e),J.revision,J.writeCapability):await K.updateAlias(J.aliasId,e,J.revision,J.writeCapability),J.writeCapability,e,J.mode===`locked`?J.bundleKey:null),Sr(`${G}${J.aliasId}`),await lr(e),$(`Saved`),!0;let t=!!J.aliasId;return await sr(e),$(t?`Saved as a new diagram`:`Saved`),!0}catch(t){return t instanceof Ct&&t.status===412&&J.aliasId?await gr(e):($(t instanceof Error?t.message:`Could not save this diagram.`),!1)}finally{q=!1,Q()}}async function sr(e){let t=J.aliasId,n=t?`${G}${t}`:Ln,r=J.bundleKey,i=J.mode===`locked`?await K.createLockedAlias(await cr(e)):await K.createAlias(e);Tr(i,i.writeCapability,e,J.mode===`locked`?r:null),Cr(i.aliasId,i.writeCapability),Sr(n),history.pushState(null,``,a(`/d/${i.aliasId}`,e.type)),await lr(e)}async function cr(e){if(!(J.bundleKey instanceof Uint8Array)||!J.keyEnvelope)throw Error(`This diagram is missing its browser encryption key.`);return J.savedMode===`locked`&&J.savedSnapshot===vr(e,`locked`)&&J.encryptedContent&&J.encryptedMetadata?{mode:`locked`,encryptedContent:J.encryptedContent,encryptedMetadata:J.encryptedMetadata,keyEnvelope:J.keyEnvelope}:Kt(e,J.bundleKey,J.keyEnvelope)}async function lr(e){if(!J.aliasId||!J.writeCapability)return;await X.render(e);let t=X.svgBlobFor(e),n=X.rendererIdentityFor(e);if(!t||!n)return;let r=[[`svg`,t]];try{r.push([`png`,await ur(t)])}catch{}let i=r.map(async([e,t])=>{let r=J.mode===`locked`?await Yt(t,J.bundleKey,e):t;return K.uploadRender({aliasId:J.aliasId,renderId:J.renderId,revision:J.revision,writeCapability:J.writeCapability,format:e,mode:J.mode,render:r,renderer:n})});(await Promise.allSettled(i)).every(e=>e.status===`rejected`)&&X.setStatus(`Saved; render cache unavailable`,`ready`)}async function ur(e){let t=URL.createObjectURL(e);try{let e=new Image;e.src=t,await e.decode();let n=Math.min(1,4096/Math.max(e.naturalWidth,e.naturalHeight)),r=Math.max(1,Math.round(e.naturalWidth*n)),i=Math.max(1,Math.round(e.naturalHeight*n)),a=document.createElement(`canvas`);a.width=r,a.height=i;let o=a.getContext(`2d`);if(!o)throw Error(`Canvas is unavailable.`);o.drawImage(e,0,0,r,i);let s=await new Promise(e=>a.toBlob(e,`image/png`));if(!s)throw Error(`Could not create a PNG render.`);return s}finally{URL.revokeObjectURL(t)}}async function dr(){let e=await hr({title:`Lock diagram`,copy:`The source, metadata, and saved render will be encrypted in this browser. The password cannot be recovered.`,submitLabel:`Lock diagram`,confirm:!0});if(e!==null)try{let{bundleKey:t,payload:n}=await qt(Qn(),e);J.mode=`locked`,J.bundleKey=t,J.keyEnvelope=n.keyEnvelope,J.encryptedContent=n.encryptedContent,J.encryptedMetadata=n.encryptedMetadata,J.keyEnvelopeDirty=!0,Sr(J.aliasId?`${G}${J.aliasId}`:Ln),Z(!1),$(`Locked in this browser — save to persist`)}catch(e){$(e instanceof Error?e.message:`Could not lock this diagram.`)}}async function fr(){if(J.mode!==`locked`||!(J.bundleKey instanceof Uint8Array))return;let e=await hr({title:`Change password`,copy:`Only the encrypted bundle key will be rewrapped. The diagram content does not need to be re-encrypted.`,submitLabel:`Change password`,confirm:!0});if(e!==null)try{J.keyEnvelope=await Wt(J.bundleKey,e),J.keyEnvelopeDirty=!0,Z(!1),$(`Password changed — save to persist`)}catch(e){$(e instanceof Error?e.message:`Could not change the password.`)}}function pr(){J.mode===`locked`&&confirm(`Remove password protection? The next save will store the diagram in plaintext.`)&&(J.mode=`open`,J.keyEnvelopeDirty=!1,Z(!1),$(`Password removed — save to persist`))}async function mr(e){for(;;){let t=await hr({title:`Unlock diagram`,copy:`Decryption happens only in this browser. The password is never sent to diagram.zip.`,submitLabel:`Unlock`,confirm:!1});if(t===null)return null;try{return await Jt(e,t)}catch(e){$(e instanceof Error?e.message:`Could not unlock this diagram.`)}}}function hr({title:e,copy:t,submitLabel:n,confirm:r}){let i=document.querySelector(`#password-dialog`),a=document.querySelector(`#password-form`),o=document.querySelector(`#diagram-password`),s=document.querySelector(`#diagram-password-confirm`),c=document.querySelector(`#password-confirm-field`),l=document.querySelector(`#password-error`);return document.querySelector(`#password-title`).textContent=e,document.querySelector(`#password-copy`).textContent=t,document.querySelector(`#password-submit`).textContent=n,c.hidden=!r,o.autocomplete=r?`new-password`:`current-password`,o.value=``,s.value=``,l.textContent=``,new Promise(e=>{let t=!1,n=n=>{t||(t=!0,a.removeEventListener(`submit`,c),document.querySelector(`#password-cancel`).removeEventListener(`click`,u),i.removeEventListener(`cancel`,u),i.removeEventListener(`close`,d),e(n))},c=e=>{e.preventDefault();let t=o.value;if(r&&t.length<8){l.textContent=`Use at least 8 characters.`,o.focus();return}if(r&&t!==s.value){l.textContent=`The passwords do not match.`,s.focus();return}i.close(),n(t)},u=e=>{e.preventDefault(),i.close(),n(null)},d=()=>n(null);a.addEventListener(`submit`,c),document.querySelector(`#password-cancel`).addEventListener(`click`,u),i.addEventListener(`cancel`,u),i.addEventListener(`close`,d),i.showModal(),o.focus()})}async function gr(e){let t=await _r();if(t===`reload`){let e=J.aliasId,t=J.writeCapability;try{let n=await K.getAlias(e),r=n.state,i=null;if(n.mode===`locked`){let e=await mr(n);if(!e)return!1;r=e.state,i=e.bundleKey}return Tr(n,t,r,i),Sr(`${G}${e}`),nr(r,!1),Q(),$(`Reloaded saved diagram`),!0}catch(e){return $(e instanceof Error?e.message:`Could not reload this diagram.`),!1}}return t===`copy`&&(await sr(e),$(`Saved as a new diagram`),!0)}function _r(){let e=document.querySelector(`#conflict-dialog`);return e.returnValue=``,e.showModal(),new Promise(t=>{e.addEventListener(`close`,()=>t(e.returnValue),{once:!0})})}function vr(e,t=`open`){return JSON.stringify({mode:t,type:e.type,source:e.source,options:e.options??{},meta:V(e.meta),presentation:H(e.presentation)})}function yr(e){if(!e||typeof e!=`object`||!r(e.type)||typeof e.source!=`string`)return null;try{return{type:e.type,source:e.source,options:e.options??{},meta:V(e.meta),presentation:H(e.presentation)}}catch{return null}}function br(e){try{let t=JSON.parse(localStorage.getItem(e)),n=yr(t?.state);return n?{state:n,revision:t.revision??null}:null}catch{return null}}function xr(e){if(J.mode===`locked`)return;let t=J.aliasId?`${G}${J.aliasId}`:Ln;try{localStorage.setItem(t,JSON.stringify({state:e,revision:J.revision}))}catch{}}function Sr(e){try{localStorage.removeItem(e)}catch{}}function Cr(e,t){try{localStorage.setItem(`${Rn}${e}`,t)}catch{}}function wr(e){try{return St(`#w=${localStorage.getItem(`${Rn}${e}`)??``}`)}catch{return null}}function Tr(e,t,n,r=null){J={aliasId:e.aliasId,contentId:e.contentId,renderId:e.renderId,revision:e.revision,mode:e.mode,savedMode:e.mode,writeCapability:t,savedState:n,savedSnapshot:vr(n,e.mode),bundleKey:r,keyEnvelope:e.mode===`locked`?e.keyEnvelope:null,encryptedContent:e.mode===`locked`?e.encryptedContent:null,encryptedMetadata:e.mode===`locked`?e.encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!1},kr(),Q()}function Q(){let e=document.querySelector(`#save`);if(Er(),q){e.textContent=`Saving…`,e.disabled=!0;return}if(J.aliasId&&!J.dirty){e.textContent=`Saved`,e.disabled=!0;return}e.textContent=J.aliasId&&!J.writeCapability?`Save copy`:`Save`,e.disabled=!1}function Er(){let e=document.querySelector(`#draft-bar`);e.hidden=!(J.aliasId&&J.savedState&&J.dirty),document.querySelector(`#restore-saved`).disabled=q,document.querySelector(`#make-copy`).disabled=q}function Dr(){!J.aliasId||!J.savedState||!J.dirty||(clearTimeout(zn),clearTimeout(er.timeout),J.mode=J.savedMode,J.keyEnvelopeDirty=!1,J.dirty=!1,Sr(`${G}${J.aliasId}`),Hn.clear(),nr(J.savedState,!1),history.replaceState(null,``,a(location.href,J.savedState.type)),kr(),Q(),$(`Restored saved diagram`))}async function Or(){if(q||!J.aliasId||!J.dirty)return;Z(!1);let e=Qn();q=!0,Q();try{await sr(e),$(`Saved as a new diagram`)}catch(e){$(e instanceof Error?e.message:`Could not make a copy.`)}finally{q=!1,Q()}}function kr(){let e=J.mode===`locked`;document.querySelector(`#privacy-label`).textContent=e?`Password locked`:`Open`,document.querySelector(`#privacy-description`).textContent=e?`Source, metadata, and saved renders are encrypted in your browser. Password-locked diagrams cannot be embedded.`:`Anyone with the read link can open and embed this diagram.`,document.querySelector(`#lock-diagram`).hidden=e,document.querySelector(`#change-password`).hidden=!e,document.querySelector(`#unlock-diagram`).hidden=!e}function Ar(){J={aliasId:null,contentId:null,renderId:null,revision:null,mode:`open`,savedMode:null,writeCapability:null,savedState:null,savedSnapshot:null,bundleKey:null,keyEnvelope:null,encryptedContent:null,encryptedMetadata:null,keyEnvelopeDirty:!1,dirty:!0},Hn.clear(),history.pushState(null,``,a(`/`,it)),nr(lt(it))}function jr(){let e=Wn.value.trim(),t=Gn.value.trim();document.title=e?`${e} — diagram.zip`:`diagram.zip`,document.querySelector(`meta[name="description"]`).content=t||`Create diagrams from text and share them as a link.`}async function Mr(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);t.value=e,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove()}function $(e){let t=document.querySelector(`#toast`);t.textContent=e,t.dataset.visible=`true`,clearTimeout($.timeout),$.timeout=setTimeout(()=>delete t.dataset.visible,1800)}Z(),Vn&&$(Vn);\ No newline at end of file