{"version":3,"file":"static/js/main.e7361cd2.js","mappings":"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AAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,M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AAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,KAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,KAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,KAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,KAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,KAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,MAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SAASnsF,EAAQ,OAC3BotF,EAAUjB,SA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+6E,QAAQ,EACRpB,MAAO,WAET4L,MAAO,CACLvlF,QAASm7E,OACP,YAAY9xE,OACV,MACA,CAEE67E,EACA,wBAAwB77E,OAAS67E,EACjC,6CAA6C77E,OAC3C27E,EACA,MAAM37E,OACN67E,EACF,QAAQ77E,OACN67E,EACA,cAAc77E,OACd27E,EACA,YAAY37E,OACd,SAASA,OACP67E,EACA,cAAc77E,OACd27E,EACA,MAAM37E,OACN67E,EACA,gBAAgB77E,OAChB67E,EACF,QAAQ77E,OACN27E,EACA,MAAM37E,OACN67E,EACA,MACA,UAAU77E,OACV,MACA,WAAWA,OACX27E,EACA,KACA,MAAM37E,OACN67E,EACA,MACFv2F,KAAK,KACP,KAEJ6rF,YAAY,EACZO,QAAQ,EACRC,OAAQ,CACNP,QAAS,QACT+D,OAAQoG,IAGZxG,UAAW,CACTp+E,QACE,wKACFw6E,YAAY,EACZO,QAAQ,EACRC,OAAQ,CACNP,QAAS,QACT+D,OAAQoG,IAGZ75F,MAAO,CACLiV,QAASm7E,OACP,YAAY9xE,OACV,kBAAkBA,OAClB,MACA,QAAQA,OACR,IACA27E,EALF,OAQE,eAAe37E,OACf,IACA27E,EACA,IACAC,EACA,IACAE,EACAH,EACA,MAEJxK,YAAY,EACZO,QAAQ,EACRpB,MAAO,WACPqB,OAAQ,CACNP,QAAS,KACT+D,OAAQoG,IAGZ,oBAAqB,CACnB5kF,QAAS,iBACTw6E,YAAY,EACZb,MAAO,cAGXhB,EAAMY,UAAUiM,MAAQ7M,EAAMY,UAAUsL,MACzC,CA7MA,CA6MElM,EACL,CAtNAxtF,EAAOC,QAAUy5F,EACjBA,EAAOj1F,YAAc,SACrBi1F,EAAOjK,QAAU,CAAC,wCCClB,SAAS6K,EAAI9M,IAWV,SAAWA,GAKV,SAAS5tF,EAAMse,GACb,OAAO8xE,OACL,UAAU9xE,OAAS,MAAQA,EAAS,IAAM,cAAcA,OACxD,IAEJ,CACAsvE,EAAMY,UAAUkM,IAAM,CACpBrH,UAAW,CACTp+E,QACE,6ZACFw6E,YAAY,EACZb,MAAO,YAET90E,OAAQ,CACN7E,QAASjV,EAAM,qBAAqBse,QACpCmxE,YAAY,GAEdkL,KAAM,CACJ1lF,QAASjV,EAAM,SAASse,QACxBmxE,YAAY,EACZb,MAAO,WAETn/E,MAAO,CACLwF,QAASjV,EAAM,oBAAoBse,QACnCmxE,YAAY,EACZb,MAAO,UAETgM,KAAM,CACJ3lF,QAASjV,EAAM,iCAAiCse,QAChDmxE,YAAY,EACZb,MAAO,UAETvzD,KAAM,CACJpmB,QAASjV,EACP,kCAAkCse,OAChC,IACA,cAAcA,OACd,IACA,0DAA0DA,QAE9DmxE,YAAY,EACZb,MAAO,MACPqB,OAAQ,CACN2D,UAAW,OAGflE,QAAS,CACP,CACEz6E,QAASjV,EAAM,mBAAmBse,QAClCmxE,YAAY,EACZb,MAAO,UAET,CACE35E,QAASjV,EAAM,YAAYse,QAC3BmxE,YAAY,EACZb,MAAO,SAGXgB,YAAa,IAEhB,CAjEA,CAiEEhC,EACL,CAhFAxtF,EAAOC,QAAUq6F,EACjBA,EAAI71F,YAAc,MAClB61F,EAAI7K,QAAU,kCCCd,SAASgL,EAAUjN,IAChB,SAAWA,GACV,IACIkN,EADA13C,EAAS,gDAEbwqC,EAAMY,UAAUP,IAAIltF,SAAW,CAC7BkU,QAAS24E,EAAMY,UAAUP,IAAIltF,SAASkU,QACtCw6E,YAAY,EACZQ,OAAS6K,EAAiB,CACxB,iBACE,+DACF,eAAgB,UAChBC,MAAO,WACPp5F,GAAI,UACJiE,UAAW,CACTqP,QAASm7E,OAAO,oBAAsBhtC,EAAO9kC,OAAS,SACtD0xE,QAAQ,EACRC,OAAQ,CACNL,YAAa,UACb,mBAAoB,CAClB36E,QAAS,aACTw6E,YAAY,EACZb,MAAO,WAETtiE,UAAW,CACTrX,QAAS,4CACTw6E,YAAY,EACZQ,OAAQ,CACNL,YAAa,QAGjB,YAAa,CACX36E,QAAS,oCACTw6E,YAAY,GAEd,aAAc,CACZrsC,EACA,CACEnuC,QAAS,4CACTw6E,YAAY,IAGhBE,SAAU,cAGd,OAAQ,CACN,CACE16E,QAAS,kDACTw6E,YAAY,EACZQ,OAAQ,CACN5rF,OAAQ,SACRsrF,SAAU,SAGd,CACE16E,QAAS,gCACTw6E,YAAY,IAGhBuL,WAAY,cAIZpL,YAAa,UAGjBhC,EAAMY,UAAUP,IAAY,OAAEgC,OAAO,8BAA8BA,OACjE6K,EACFlN,EAAMY,UAAUl/C,aAAa,MAAO,WAAY,CAC9CkhD,SAAU,CACRv7E,QACE,8EACFw6E,YAAY,KAGhB,IAAIwL,EAAO,CACThmF,QAAS,+BACTw6E,YAAY,GAEVprF,EAAS,CACX4Q,QAAS,uCACTw6E,YAAY,GAEd7B,EAAMY,UAAUl/C,aAAa,MAAO,WAAY,CAC9CqgD,SAAU,CACR16E,QAAS,qBACTw6E,YAAY,GAIdyL,QAAS,CACPjmF,QAAS,qBACT25E,MAAO,SAETt2E,MAAO,CACL,CACErD,QACE,o6CACFw6E,YAAY,GAEd,CACEx6E,QACE,4JACFg7E,OAAQ,CACNgL,KAAMA,EACN52F,OAAQA,EACRqsF,SAAU,eACVd,YAAa,WAKnB5vE,OAAQ,kBACRi7E,KAAMA,EACN52F,OAAQA,GAEX,CAlHA,CAkHEupF,EACL,CAvHAxtF,EAAOC,QAAUw6F,EACjBA,EAAUh2F,YAAc,YACxBg2F,EAAUhL,QAAU,kCCCpB,SAAS5B,EAAIL,IACV,SAAWA,GACV,IAAIxqC,EACF,8EACFwqC,EAAMY,UAAUP,IAAM,CACpB/uE,QAAS,mBACTi8E,OAAQ,CACNlmF,QAAS,iDACTg7E,OAAQ,CACNI,KAAM,WACN,6BAA8B,CAC5Bp7E,QACE,4FACFw6E,YAAY,EACZb,MAAO,YAETc,QAAS,CACPz6E,QAAS,yCACTw6E,YAAY,KAIlB9uB,IAAK,CAEH1rD,QAASm7E,OACP,eACEhtC,EAAO9kC,OACP,IACA,8BAA8BA,OAC9B,OACF,KAEF0xE,QAAQ,EACRC,OAAQ,CACNS,SAAU,QACVd,YAAa,UACbxsC,OAAQ,CACNnuC,QAASm7E,OAAO,IAAMhtC,EAAO9kC,OAAS,KACtCswE,MAAO,SAIb7tF,SAAU,CACRkU,QAASm7E,OACP,qDACEhtC,EAAO9kC,OACP,iBAEJmxE,YAAY,GAEdrsC,OAAQ,CACNnuC,QAASmuC,EACT4sC,QAAQ,GAEVjtF,SAAU,CACRkS,QACE,oFACFw6E,YAAY,GAEdmE,UAAW,gBACXlD,SAAU,CACRz7E,QAAS,kCACTw6E,YAAY,GAEdG,YAAa,aAEfhC,EAAMY,UAAUP,IAAY,OAAEgC,OAAOiD,KAAOtF,EAAMY,UAAUP,IAC5D,IAAID,EAASJ,EAAMY,UAAUR,OACzBA,IACFA,EAAOxlC,IAAI4yC,WAAW,QAAS,OAC/BpN,EAAOxlC,IAAI6yC,aAAa,QAAS,OAEpC,CAvEA,CAuEEzN,EACL,CA5EAxtF,EAAOC,QAAU4tF,EACjBA,EAAIppF,YAAc,MAClBopF,EAAI4B,QAAU,iCCCd,SAASyL,EAAI1N,GAEXA,EAAMY,UAAU8M,IAAM,CACpBt7F,MAAO,iCACP4vF,YAAa,IAEjB,CATAxvF,EAAOC,QAAUi7F,EACjBA,EAAIz2F,YAAc,MAClBy2F,EAAIzL,QAAU,kCCCd,SAAS0L,EAAO3N,GACdA,EAAMY,UAAU+M,OAAS,CAEvBr8E,QAAS,SACTkkC,OAAQ,CACNnuC,QAAS,8CACT+6E,QAAQ,GAEV,aAAc,CACZ/6E,QAAS,8CACTw6E,YAAY,EACZO,QAAQ,GAEVwL,aAAc,CACZvmF,QACE,kFACFw6E,YAAY,EACZO,QAAQ,EACRpB,MAAO,YAETmD,WAAY,CACV98E,QAAS,oBACT+6E,QAAQ,GAEVQ,SAAU,QAEVd,QACE,4YACFgB,SAAU,mBACVjsF,QAAS,2BACTJ,OAAQ,uDAERsrF,SAAU,8CACVC,YAAa,eAEjB,CAtCAxvF,EAAOC,QAAUk7F,EACjBA,EAAO12F,YAAc,SACrB02F,EAAO1L,QAAU,kCCCjB,SAAS3qC,EAAE0oC,GACTA,EAAMY,UAAUtpC,EAAI0oC,EAAMY,UAAUluF,OAAO,QAAS,CAClD4e,QAAS,CACP,CAEEjK,QAAS,WACT+6E,QAAQ,GAEV,CACE/6E,QAASm7E,OACP,YAAY9xE,OACV,MACA,CAGE,0DAA0DA,OAC1D,SAASA,OACT,mBAAmBA,QACnB1a,KAAK,KACP,KAEJ6rF,YAAY,EACZO,QAAQ,IAGZ5sC,OAAQ,CACN,CACEnuC,QAASm7E,OACP,CAEE,qCAAqC9xE,OACrC,6DAA6DA,OAG7D,+BAA+BA,OAE/B,qBAAqBA,OACrB,0CAA0CA,QAC1C1a,KAAK,KACP,KAEFosF,QAAQ,GAEV,CACE/6E,QAAS,+BACT+6E,QAAQ,EACRpB,MAAO,iBAIXc,QACE,u0BACFrrF,OAAQ,CAGN,2EACA,CACE4Q,QACE,2FACFw6E,YAAY,IAGhBE,SACE,sHAEJ/B,EAAMY,UAAUl/C,aAAa,IAAK,SAAU,CAG1Cv3B,KAAM,6BAER61E,EAAMY,UAAUl/C,aAAa,IAAK,UAAW,CAC3CvsC,SAAU,WAEZ6qF,EAAMY,UAAUl/C,aAAa,IAAK,WAAY,CAC5Cg/C,SAAU,CAERr5E,QACE,sNACF25E,MAAO,aAGb,CApFAxuF,EAAOC,QAAU6kD,EACjBA,EAAErgD,YAAc,IAChBqgD,EAAE2qC,QAAU,iCCCZ,SAAS4L,EAAK7N,IACX,SAAWA,GACV,IAAIwD,EAAW,CACb,2BACA,8WAEEsK,EAAgB,uDACjBp9E,OACC1c,EAAY,CACdqT,QAASm7E,OAAOsL,EAAgB,gCAAgCp9E,QAChEmxE,YAAY,EACZQ,OAAQ,CACN3jE,UAAW,CACTrX,QAAS,2CACTg7E,OAAQ,CACNL,YAAa,SAKrBhC,EAAMY,UAAUiN,KAAO7N,EAAMY,UAAUluF,OAAO,QAAS,CACrD,aAAc,CACZsB,EACA,CAGEqT,QAASm7E,OACPsL,EAAgB,+BAA+Bp9E,QAEjDmxE,YAAY,EACZQ,OAAQruF,EAAUquF,SAGtBP,QAAS0B,EACTzB,SACE,mFAEJ/B,EAAMY,UAAUl/C,aAAa,OAAQ,SAAU,CAC7C,iBAAkB,CAChBr6B,QACE,mEACF+6E,QAAQ,EACRC,OAAQ,CACNkF,cAAe,CACblgF,QACE,6DACFw6E,YAAY,EACZQ,OAAQ,CACNL,YAAa,aACbwF,WAAY,CACVngF,QAAS,UACTg7E,OAAQrC,EAAMY,UAAUiN,QAI9Br4C,OAAQ,YAGZA,YAAQ5/C,IAEVoqF,EAAMY,UAAUl/C,aAAa,OAAQ,aAAc,CACjDkmD,SAAU,CACRvgF,QAAS,OACT25E,MAAO,cAGXhB,EAAMY,UAAUl/C,aAAa,OAAQ,aAAc,CACjDqsD,SAAU,CACR1mF,QACE,sEACFg7E,OAAQ,CACN,aAAcruF,EACd8tF,QAAS0B,EACTxB,YAAa,YACbD,SAAU,WAIjB,CA7EA,CA6EE/B,EACL,CAlFAxtF,EAAOC,QAAUo7F,EACjBA,EAAK52F,YAAc,OACnB42F,EAAK5L,QAAU,kCCCf,SAAS+L,EAAUhO,IAChB,SAAWA,GACVA,EAAMY,UAAUoN,UAAY,CAC1Bj7B,IAAK,iDACL59D,SAAU,CACRkS,QAAS,wDACT+6E,QAAQ,GAEV5sC,OAAQ,CACNnuC,QAAS,qCACT+6E,QAAQ,GAEV,YACE,8DACF7vB,KAAM,CACJlrD,QAAS,eACT+6E,QAAQ,GAEV9wE,QAAS,CACP,CACEjK,QAAS,kCACTw6E,YAAY,EACZO,QAAQ,GAEV,CACE/6E,QAAS,mBACTw6E,YAAY,EACZO,QAAQ,IAGZiB,MAAO,CACLh8E,QAAS,iCACT+6E,QAAQ,GAEVN,QACE,0GACFgB,SAAU,wBACVrsF,OAAQ,qCACRurF,YAAa,iBACbD,SAAU,wCACVlrF,QAAS,qBAEZ,CAzCA,CAyCEmpF,EACL,CA9CAxtF,EAAOC,QAAUu7F,EACjBA,EAAU/2F,YAAc,YACxB+2F,EAAU/L,QAAU,kCCCpB,SAASgM,EAAIjO,GACXA,EAAMY,UAAUqN,IAAM,CACpB38E,QAAS,CACPjK,QAAS,8CACTw6E,YAAY,GAEd,aAAc,CACZx6E,QACE,yEACF25E,MAAO,UAETkN,QAAS,CACP7mF,QAAS,wBACT25E,MAAO,YAETxrC,OAAQ,CACNnuC,QAAS,sBACT+6E,QAAQ,GAEVU,SACE,ywFACFhB,QACE,6EACFjrF,QAAS,CACPwQ,QAAS,2BACT25E,MAAO,YAETvqF,OAAQ,4BACRsrF,SAAU,6DACVC,YAAa,iBAEjB,CAlCAxvF,EAAOC,QAAUw7F,EACjBA,EAAIh3F,YAAc,MAClBg3F,EAAIhM,QAAU,kCCCd,SAASkM,EAAMnO,GAGbA,EAAMY,UAAUuN,MAAQ,CAItB78E,QACE,yEACFkkC,OAAQ,CACNnuC,QAAS,4DACT+6E,QAAQ,EACRC,OAAQ,CACNkF,cAAe,CACblgF,QAAS,eACTg7E,OAAQ,CACNmF,WAAY,CACVngF,QAAS,wBACTw6E,YAAY,EACZb,MAAO,iBACPqB,OAAQ,MAEVL,YAAa,cAKrBnhF,MAAO,CACLwG,QAAS,UACT+6E,QAAQ,GAEVrvB,IAAK,CAEH1rD,QACE,yFACF+6E,QAAQ,GAEVd,IAAK,CAEHj6E,QAAS,yCACT+6E,QAAQ,EACRC,OAAQ,CACNS,SAAU,OACVf,SAAU,KACVa,SAAU,YAGdoK,KAAM,CAEJ3lF,QAAS,4BACTg7E,OAAQ,CACNS,SAAU,SACVf,SAAU,IACVtrF,OAAQ,mBAIZqrF,QACE,qFACFwC,QAAS,oBACTztF,QAAS,qBACTJ,OACE,gFACFsrF,SACE,qGACFC,YAAa,qBAEb,aAAc,gBAEhBhC,EAAMY,UAAUuN,MAAM34C,OAAO6sC,OAAOkF,cAAclF,OAAOmF,WAAWnF,OAClErC,EAAMY,UAAUuN,KACpB,CA1EA37F,EAAOC,QAAU07F,EACjBA,EAAMl3F,YAAc,QACpBk3F,EAAMlM,QAAU,kCCChB,SAASruE,EAAKosE,IACX,SAAWA,GACVA,EAAMY,UAAUhtE,KAAO,CACrBw6E,MAAO,CAEL,4BACA,YACA,YAQJ,IAAIC,EAAW,CACb,eAAgB,IAChB,gBAAiB,IACjB,gBAAiB,IACjB,iBAAkB,IAClBC,UAAW,IACX16E,KAAM,KAERhjB,OAAOkkC,KAAKu5D,GAAUr5D,SAAQ,SAAU/iC,GACtC,IAAIib,EAASmhF,EAASp8F,GAClB+uF,EAAQ,GACP,QAAQlpF,KAAK7F,IAEhB+uF,EAAM/sF,KAAK,MAAML,KAAK3B,GAAM,IAEjB,SAATA,GACF+uF,EAAM/sF,KAAK,QAEb+rF,EAAMY,UAAUhtE,KAAK3hB,GAAQ,CAC3BoV,QAASm7E,OACP,QAAUt1E,EAAS,iCACnB,KAEF8zE,MAAOA,EACPqB,OAAQ,CACN9xE,KAAM,CACJlJ,QAAS,+BACTw6E,YAAY,GAEd30E,OAAQ,CACN7F,QAAS,SACT25E,MAAO,MAAMptF,KAAK3B,GAAM,KAIhC,IACArB,OAAOK,eAAe+uF,EAAMY,UAAUhtE,KAAM,WAAY,CACtDxhB,MAAOi8F,GAEV,CArDA,CAqDErO,EACL,CA1DAxtF,EAAOC,QAAUmhB,EACjBA,EAAK3c,YAAc,OACnB2c,EAAKquE,QAAU,sCCHf,IAAIsM,EAA4Bh6F,EAAQ,KAIxC,SAASi6F,EAAOxO,GACdA,EAAMU,SAAS6N,GAGd,SAAWvO,GACVA,EAAMY,UAAU4N,OAAS,CACvBl9E,QAAS,mBACTspC,IAAK,CACHvzC,QAAS,oBACTw6E,YAAY,EACZb,MAAO,WAET+G,UAAW,CACT1gF,QAAS,4BACT25E,MAAO,eAETxrC,OAAQ,CACNnuC,QAAS,kCACT+6E,QAAQ,GAEVqM,OAAQ,CACNpnF,QAAS,UACTw6E,YAAY,EACZb,MAAO,YAETlpF,KAAM,CACJuP,QAAS,mCACTw6E,YAAY,EACZb,MAAO,YAET8B,SAAU,wBACVhB,QACE,gFACFC,SAAU,oDACVtrF,OAAQ,oBACRI,QAAS,2BACT+rF,SAAU,UACVZ,YAAa,iBAEf,IAAI36E,EAAU,kDACVqnF,EAAmB1O,EAAMY,UAAU,qBACvCZ,EAAMyB,MAAM3qC,IAAI,mBAAmB,SAAUwqC,GAC3CoN,EAAiBC,kBAAkBrN,EAAK,SAAUj6E,EACpD,IACA24E,EAAMyB,MAAM3qC,IAAI,kBAAkB,SAAUwqC,GAC1CoN,EAAiBE,qBAAqBtN,EAAK,SAC7C,IACAtB,EAAMY,UAAUiO,OAAS7O,EAAMY,UAAU4N,OACzCxO,EAAMyB,MAAM3qC,IAAI,mBAAmB,SAAUwqC,GAC3CoN,EAAiBC,kBAAkBrN,EAAK,SAAUj6E,EACpD,IACA24E,EAAMyB,MAAM3qC,IAAI,kBAAkB,SAAUwqC,GAC1CoN,EAAiBE,qBAAqBtN,EAAK,SAC7C,GACD,CAlDA,CAkDEtB,EACL,CA1DAxtF,EAAOC,QAAU+7F,EACjBA,EAAOv3F,YAAc,SACrBu3F,EAAOvM,QAAU,CAAC,yCCClB,SAAS6M,EAAY9O,GACnBA,EAAMY,UAAU,iBAAmB,CACjCtvE,QAAS,MACTkkC,OAAQ,CACNnuC,QAAS,wBACT+6E,QAAQ,GAEVQ,SAAU,CACR,CACEv7E,QAAS,wBACTw6E,YAAY,GAEd,CACEx6E,QAAS,kBACTw6E,YAAY,IAGhBC,QAAS,qCACTqL,MAAO,CAEL9lF,QAAS,gCACTw6E,YAAY,EACZb,MAAO,WAET9sF,KAAM,CAEJmT,QACE,2XACFw6E,YAAY,EACZb,MAAO,WAETgB,YAAa,QAEfhC,EAAMY,UAAU,YAAcZ,EAAMY,UAAU,gBAChD,CArCApuF,EAAOC,QAAUq8F,EACjBA,EAAY73F,YAAc,cAC1B63F,EAAY7M,QAAU,kCCCtB,SAAS8M,EAAO/O,IACb,SAAWA,GAGV,IAAIgP,EACF,sDAAsDt+E,OACpDpU,EAAQ,0CAA0CoU,OAAOzY,QAC3D,YACA,WACE,OAAO+2F,CACT,IAEEx5C,EACF,0EACG9kC,OACDoC,EAAS,8CAA8CpC,OAAOzY,QAChE,UACA,WACE,OAAOu9C,CACT,IAEEy5C,EAAa,CACf5nF,QAASm7E,OAAOhtC,GAChB4sC,QAAQ,GAEN8M,EAAc,CAChB7nF,QAAS,gBACTw6E,YAAY,EACZO,QAAQ,GAOV,SAASlxE,EAAGR,EAAQuzC,GAQlB,OAPAvzC,EAASA,EACNzY,QAAQ,UAAU,WACjB,OAAO6a,CACT,IACC7a,QAAQ,SAAS,WAChB,OAAOqE,CACT,IACKkmF,OAAO9xE,EAAQuzC,EACxB,CACA+7B,EAAMY,UAAUmO,OAAS,CACvBI,YAAa,CACX9nF,QACE,kNACFw6E,YAAY,EACZO,QAAQ,EACRC,OAAQ,CACNrwF,QAAS,CACPqV,QAAS6J,EACP,gDAAgDR,OAChD,KAEFmxE,YAAY,EACZO,QAAQ,EACRC,OAAQ,CACNltF,SAAU,CACRkS,QAAS,iBACTw6E,YAAY,GAEdrsC,OAAQ,CACNy5C,EACA,CACE5nF,QAAS,8BACTw6E,YAAY,IAGhBE,SAAU,OACVC,YAAa,MAGjBF,QAAS,CACP,CAEEz6E,QAAS6J,EACP,iEACGR,OACH,KAEFmxE,YAAY,EACZO,QAAQ,GAEV,CAEE/6E,QAAS6J,EACP,iEACGR,OACH,KAEFmxE,YAAY,EACZO,QAAQ,GAEV,CAEE/6E,QAAS6J,EAAG,oBAAoBR,OAAQ,KACxCmxE,YAAY,EACZO,QAAQ,GAEV,CACE/6E,QAAS,OACT+6E,QAAQ,IAGZ9wE,QAAS49E,EACT15C,OAAQy5C,EACRrM,SAAU,2BACVb,SAAU,SAGdzwE,QAAS49E,GAEXlP,EAAMY,UAAUwO,WAAapP,EAAMY,UAAUmO,MAC9C,CAnHA,CAmHE/O,EACL,CAxHAxtF,EAAOC,QAAUs8F,EACjBA,EAAO93F,YAAc,SACrB83F,EAAO9M,QAAU,CAAC,6CCClB,SAASoN,EAAIrP,IAEV,SAAWA,GACV,IAAIsP,EACF,MACA,CAEE,uCAAuC5+E,OACvC,4BAA4BA,OAC5B,gCAAgCA,OAChC,+EACGA,QACH1a,KAAK,KACP,IACEu5F,EAAW,CACbnP,OAAQ,CACN/4E,QAAS,oBACTw6E,YAAY,EACZb,MAAO,CAAC,kBAAmB,gBAAiB,gBAC5CqB,OAAQrC,EAAMY,UAAUR,SAQ5B,SAASoP,EAAO9+E,EAAQuzC,GACtB,OAAOu+B,OACL9xE,EAAOzY,QAAQ,SAAS,WACtB,OAAOq3F,CACT,IACArrC,EAEJ,CACA+7B,EAAMY,UAAUyO,IAAM,CACpB/9E,QAAS,CACPjK,QAAS,gCACT+6E,QAAQ,GAEV,aAAc,CACZ/6E,QAASmoF,EACP,+CAA+C9+E,OAC/C,KAEFmxE,YAAY,EACZO,QAAQ,EACRpB,MAAO,aACPqB,OAAQkN,GAEV,aAAc,CACZloF,QAASmoF,EAAO,oBAAoB9+E,QACpCmxE,YAAY,EACZO,QAAQ,EACRC,OAAQkN,GAEV,YAAa,CACXloF,QAASmoF,EAAO,qCAAqC9+E,QACrDmxE,YAAY,EACZO,QAAQ,EACRC,OAAQkN,GAEVzN,QAAS,mDACT,gBAAiB,CACfz6E,QAAS,uDACTw6E,YAAY,EACZb,MAAO,WAET5rF,KAAM,CACJiS,QAASmoF,EAAO,+BAA+B9+E,QAC/CmxE,YAAY,EACZO,QAAQ,EACRC,OAAQkN,GAEVxN,SAAU,aACVC,YAAa,cAEfhC,EAAMY,UAAU6O,GAAKzP,EAAMY,UAAUyO,GACtC,CA5EA,CA4EErP,EACL,CAlFAxtF,EAAOC,QAAU48F,EACjBA,EAAIp4F,YAAc,MAClBo4F,EAAIpN,QAAU,CAAC,qCCCf,SAASyN,EAAK1P,GACZA,EAAMY,UAAU8O,KAAO,CACrBp+E,QAAS,mBACTkkC,OAAQ,CACNnuC,QAAS,0BACT+6E,QAAQ,GAEVuN,QAAS,CACPtoF,QAAS,gBACT+6E,QAAQ,EACRpB,MAAO,cAETxzE,WAAY,CACVnG,QAAS,iDACTw6E,YAAY,EACZb,MAAO,CAAC,OAAQ,YAElByB,KAAM,mCACNT,YAAa,6BACbD,SAAU,WAEd,CAxBAvvF,EAAOC,QAAUi9F,EACjBA,EAAKz4F,YAAc,OACnBy4F,EAAKzN,QAAU,kCCCf,SAAS2N,EAAa5P,GACpBA,EAAMY,UAAUgP,aAAe,CAE7Bt+E,QAAS,SACTu+E,QAAS,CACPxoF,QAAS,mBACTw6E,YAAY,EACZb,MAAO,WACPqB,OAAQ,CACNgB,MAAO,oBAEPtB,SAAU,oBACVC,YAAa,cAGjBtwF,IAAK,CACH2V,QAAS,+BACTw6E,YAAY,EACZb,MAAO,aAET5uF,MAAO,CACLiV,QAAS,MACT25E,MAAO,aACPqB,OAAQ,CACNL,YAAa,OAIrB,CA/BAxvF,EAAOC,QAAUm9F,EACjBA,EAAa34F,YAAc,eAC3B24F,EAAa3N,QAAU,kCCCvB,SAAS6N,EAAO9P,GACdA,EAAMY,UAAUkP,OAAS,CACvBx+E,QAAS,OACTkkC,OAAQ,CAEN,CACEnuC,QAAS,0BACT+6E,QAAQ,GAEV,CACE/6E,QAAS,0BACT+6E,QAAQ,GAEV,CACE/6E,QAAS,4CACT+6E,QAAQ,IAIZj4E,KAAM,sBACN23E,QACE,+YACFjrF,QAAS,sBAET,aAAc,qBACdJ,OAAQ,CAEN,mCACA,oFAEFurF,YAAa,+CACbD,SAAU,+CAEd,CApCAvvF,EAAOC,QAAUq9F,EACjBA,EAAO74F,YAAc,SACrB64F,EAAO7N,QAAU,sCCHjB,IAAIsM,EAA4Bh6F,EAAQ,KAIxC,SAASw7F,EAAI/P,GACXA,EAAMU,SAAS6N,GACd,SAAWvO,GACVA,EAAMY,UAAUmP,IAAM,CACpBhI,UAAW,CACT1gF,QAAS,qBACT25E,MAAO,eAET1vE,QAAS,YACT,sBAAuB,CACrBjK,QAAS,UACTg7E,OAAQrC,EAAMY,UAAUkF,aAG5B9F,EAAMyB,MAAM3qC,IAAI,mBAAmB,SAAUwqC,GAE3CtB,EAAMY,UAAU,qBAAqB+N,kBACnCrN,EACA,MAHe,qBAMnB,IACAtB,EAAMyB,MAAM3qC,IAAI,kBAAkB,SAAUwqC,GAC1CtB,EAAMY,UAAU,qBAAqBgO,qBAAqBtN,EAAK,MACjE,IACAtB,EAAMY,UAAUoP,IAAMhQ,EAAMY,UAAUmP,GACvC,CAxBA,CAwBE/P,EACL,CA9BAxtF,EAAOC,QAAUs9F,EACjBA,EAAI94F,YAAc,MAClB84F,EAAI9N,QAAU,CAAC,sCCCf,SAASgO,EAAOjQ,GACdA,EAAMY,UAAUqP,OAAS,CACvBC,IAAK,CACH7oF,QACE,6FACFg7E,OAAQ,CACNrqF,UAAW,QACXw9C,OAAQ,gBAGZlkC,QAAS,CACPjK,QAAS,MACT+6E,QAAQ,GAGViB,MAAO,CACLh8E,QACE,6LACF+6E,QAAQ,GAEV5sC,OAAQ,CACN,CAEEnuC,QACE,iNACF+6E,QAAQ,EACRC,OAAQ,CAER,GAEF,CACEh7E,QAAS,sBACT+6E,QAAQ,EACRC,OAAQ,CAER,GAEF,CAEEh7E,QAAS,gDACT+6E,QAAQ,EACRC,OAAQ,CAER,IAGJ8N,KAAM,CAEJ9oF,QAAS,eACTw6E,YAAY,EACZb,MAAO,UAETxuF,OAAQ,CACN6U,QAAS,eACT25E,MAAO,cAGT,YAAa,iBACbqF,SAAU,CAERh/E,QAAS,eACTw6E,YAAY,EACZb,MAAO,YAEThpF,UAAW,CACTqP,QAAS,OACT25E,MAAO,YAET8B,SAAU,sDACVrsF,OAAQ,kEACRqrF,QACE,kNACFjrF,QAAS,yBACTkrF,SAAU,CACR,2FACA,CAEE16E,QAAS,eACTw6E,YAAY,GAEd,CAEEx6E,QAAS,eACTw6E,YAAY,IAGhBG,YAAa,uBAEfhC,EAAMY,UAAUqP,OAAOz6C,OAAOxgB,SAAQ,SAAUqwD,GAC9CA,EAAEhD,OAAS,CACTkF,cAAe,CACblgF,QAAS,aACTg7E,OAAQ,CACN0F,UAAW,CACT1gF,QAAS,WACT25E,MAAO,eAETsE,KAAMtF,EAAMY,UAAUqP,SAI9B,GACF,CAzGAz9F,EAAOC,QAAUw9F,EACjBA,EAAOh5F,YAAc,SACrBg5F,EAAOhO,QAAU,kCCCjB,SAASmO,EAAIpQ,GACXA,EAAMY,UAAUwP,IAAM,CACpB9+E,QAAS,sBACTnH,KAAM,CACJ9C,QACE,0EACF+6E,QAAQ,GAEV5sC,OAAQ,CACN,CAEEnuC,QAAS,iBACT+6E,QAAQ,GAEV,CACE/6E,QAAS,wBACT+6E,QAAQ,IAGZ,mBAAoB,CAIlB/6E,QACE,wGACFw6E,YAAY,EACZQ,OAAQ,CACNP,QAAS,+BAGbA,QACE,kFAEFwC,QACE,0PAEF7tF,OAAQ,mDAQRsrF,SAAU,0DAEVsO,UAAW,8BACXnN,SAAU,8BACVlB,YAAa,gBAEjB,CArDAxvF,EAAOC,QAAU29F,EACjBA,EAAIn5F,YAAc,MAClBm5F,EAAInO,QAAU,sCCHd,IAAI6H,EAAgBv1F,EAAQ,MACxBg6F,EAA4Bh6F,EAAQ,KAIxC,SAAS+7F,EAAItQ,GACXA,EAAMU,SAASoJ,GACf9J,EAAMU,SAAS6N,GACd,SAAWvO,GACVA,EAAMY,UAAU0P,IAAM,CACpBvI,UAAW,CACT1gF,QAAS,wBACTw6E,YAAY,EACZb,MAAO,eAETgJ,KAAM,CACJ3iF,QAAS,eACT25E,MAAO,gBACPqB,OAAQrC,EAAMY,UAAUoJ,OAG5BhK,EAAMyB,MAAM3qC,IAAI,mBAAmB,SAAUwqC,GAG3CtB,EAAMY,UAAU,qBAAqB+N,kBACnCrN,EACA,MAHA,4FAMJ,IACAtB,EAAMyB,MAAM3qC,IAAI,kBAAkB,SAAUwqC,GAC1CtB,EAAMY,UAAU,qBAAqBgO,qBAAqBtN,EAAK,MACjE,GACD,CAzBA,CAyBEtB,EACL,CAhCAxtF,EAAOC,QAAU69F,EACjBA,EAAIr5F,YAAc,MAClBq5F,EAAIrO,QAAU,iCCAd,SAASsO,EAAOvQ,GACdA,EAAMY,UAAU2P,OAAS,CACvBj/E,QAAS,MACTkkC,OAAQ,CACNnuC,QAAS,wBACT+6E,QAAQ,GAEV,kBAAmB,CACjB/6E,QAAS,8BACT25E,MAAO,YAET,cAAe,CACb35E,QAAS,wBACT25E,MAAO,QAETnqF,QAAS,qBACTirF,QAAS,0DACTrrF,OAAQ,CACN,SACA,mBACA,8CAEFqsF,SAAU,sBACVF,SAAU,CAERv7E,QAAS,gCACTw6E,YAAY,GAEdE,SAAU,CACR,+GACA,CAEE16E,QAAS,iBACTw6E,YAAY,GAEd,CAEEx6E,QAAS,iBACTw6E,YAAY,IAGhBsO,KAAM,gBACNnO,YAAa,wBAEjB,CA/CAxvF,EAAOC,QAAU89F,EACjBA,EAAOt5F,YAAc,SACrBs5F,EAAOtO,QAAU,sCCHjB,IAAIuO,EAAej8F,EAAQ,MACvBg6F,EAA4Bh6F,EAAQ,KAIxC,SAASk8F,EAAMzQ,GACbA,EAAMU,SAAS8P,GACfxQ,EAAMU,SAAS6N,GACd,SAAWvO,GACVA,EAAMY,UAAU6P,MAAQ,CACtB1I,UAAW,CACT1gF,QAAS,iBACT25E,MAAO,eAET,eAAgB,CACd35E,QAAS,UACTg7E,OAAQrC,EAAMY,UAAU8P,MAG5B1Q,EAAMyB,MAAM3qC,IAAI,mBAAmB,SAAUwqC,GAE3CtB,EAAMY,UAAU,qBAAqB+N,kBACnCrN,EACA,QAHY,gBAMhB,IACAtB,EAAMyB,MAAM3qC,IAAI,kBAAkB,SAAUwqC,GAC1CtB,EAAMY,UAAU,qBAAqBgO,qBAAqBtN,EAAK,QACjE,GACD,CAtBA,CAsBEtB,EACL,CA7BAxtF,EAAOC,QAAUg+F,EACjBA,EAAMx5F,YAAc,QACpBw5F,EAAMxO,QAAU,kCCAhB,SAAS0O,EAAa3Q,GACpBA,EAAMY,UAAU,iBAAmB,CACjCtvE,QAAS,CACPjK,QAAS,qCACTw6E,YAAY,EACZO,QAAQ,GAEV5sC,OAAQ,CACNnuC,QAAS,sBACT+6E,QAAQ,GAEV/uE,UAAW,CAQThM,QACE,uEACF+6E,QAAQ,EACRpB,MAAO,SACPqB,OAAQ,CACNN,SAAU,KACVC,YAAa,IACb4O,MAAO,CACLvpF,QAAS,WACT25E,MAAO,YAET6P,KAAM,CACJxpF,QAAS,eACTg7E,OAAQ,CACNL,YAAa,UAGjB8O,KAAM,YAGV,gBAAiB,CACfzpF,QAAS,oBACT25E,MAAO,WAETpuB,MAAO,CACLvrD,QACE,uEACF25E,MAAO,WACPqB,OAAQ,CACNN,SAAU,IACVgP,KAAM,mBACN7gF,OAAQ,aACR8gF,IAAK,WAGTD,KAAM,CAGJ1pF,QAAS,uDACT25E,MAAO,YAETvqF,OAAQ,+CACRI,QAAS,sBACTkrF,SAAU,yBACVC,YAAa,eAEfhC,EAAMY,UAAgB,KAAIZ,EAAMY,UAAe,IAC7CZ,EAAMY,UAAU,gBACpB,CAtEApuF,EAAOC,QAAUk+F,EACjBA,EAAa15F,YAAc,eAC3B05F,EAAa1O,QAAU,kCCCvB,SAASgP,EAAOjR,IACb,SAAWA,GACV,IAAIkR,EAAiB,CACnBpO,SACE,iFAEAqO,EAAgB,CAClB16F,OAAQ,gBAENw6F,EAAS,CACX3/E,QAAS,CACP,CAEEjK,QAAS,oBACTw6E,YAAY,EACZQ,OAAQ6O,GAGV,CAEE7pF,QAAS,mCACTw6E,YAAY,EACZO,QAAQ,EACRC,OAAQ6O,GAEV,CAEE7pF,QAAS,8CACTw6E,YAAY,EACZO,QAAQ,EACRC,OAAQ6O,IAGZz6F,OAAQ,CACN,CAEE4Q,QAAS,yBACTw6E,YAAY,GAEd,CAEEx6E,QAAS,yDACTw6E,YAAY,GAEd,CAEEx6E,QAAS,iCACTw6E,YAAY,GAEd,CAEEx6E,QAAS,iCACTw6E,YAAY,GAEd,CAEEx6E,QAAS,8BACTw6E,YAAY,GAEd,CAGEx6E,QACE,8DACFw6E,YAAY,GAEd,CAEEx6E,QAAS,mCACTw6E,YAAY,GAEd,CAOEx6E,QACE,yEACFw6E,YAAY,IAIhBuP,OAAQ,CACN/pF,QACE,sEACFw6E,YAAY,EACZb,MAAO,SACPqB,OAAQ,CACNO,SAAU,OACVd,QAAS,oBACTC,SAAU,CACR16E,QAAS,6BACTw6E,YAAY,KAIlBhrF,QAAS,CACPwQ,QAAS,qBACTw6E,YAAY,GAGd,gBAAiB,CACfx6E,QAAS,wCACTw6E,YAAY,EACZO,QAAQ,EACRpB,MAAO,SACPqB,OAAQ,CACN5rF,OAAQ,gBAGZ,mBAAoB,CAClB,CAEE4Q,QAAS,0DACTw6E,YAAY,EACZO,QAAQ,EACRpB,MAAO,SACPqB,OAAQ,CACN5rF,OAAQ06F,EAAc16F,OAEtB,wBAAyB,CACvB4Q,QAAS,0BACTw6E,YAAY,EACZb,MAAO,cAIb,CAEE35E,QAAS,6DACTw6E,YAAY,EACZO,QAAQ,EACRpB,MAAO,SACPqB,OAAQ8O,GAEV,CAEE9pF,QAAS,6CACTw6E,YAAY,EACZO,QAAQ,EACRpB,MAAO,SACPqB,OAAQ8O,IAGZ,gBAAiB,CACf9pF,QAAS,yCACTw6E,YAAY,EACZb,MAAO,WACPqB,OAAQ,CAGN7sC,OAAQ,CACNnuC,QAAS,cACTw6E,YAAY,KAkBlB,yBAA0B,CACxB,CAEEx6E,QAAS,uCACTw6E,YAAY,EACZb,MAAO,YAET,CAEE35E,QAAS,eACTw6E,YAAY,EACZb,MAAO,YAET,CAEE35E,QAAS,iBACTw6E,YAAY,EACZb,MAAO,aAGXqQ,YAAa,CACXhqF,QAAS,KACTw6E,YAAY,EACZb,MAAO,WAET,iBAAkB,CAChB35E,QAAS,KACTw6E,YAAY,EACZb,MAAO,YAET,oBAAqB,CACnB35E,QAAS,KACTw6E,YAAY,EACZb,MAAO,YAET,eAAgB,CACd35E,QAAS,KACTw6E,YAAY,EACZb,MAAO,YAET,mBAAoB,CAElB35E,QAAS,iCACTw6E,YAAY,EACZb,MAAO,WAET,uBAAwB,CACtB35E,QAAS,KACTw6E,YAAY,EACZb,MAAO,YA0BT,4BAA6B,CAC3B35E,QACE,0MACFw6E,YAAY,EACZb,MAAO,WAET,eAAgB,CACd35E,QAAS,6DACTw6E,YAAY,EACZO,QAAQ,EACRpB,MAAO,YAET,wBAAyB,CACvB35E,QAAS,uBACTw6E,YAAY,EACZb,MAAO,YAGT,gCAAiC,CAC/B,CAEE35E,QAAS,wBACTw6E,YAAY,EACZb,MAAO,YAET,CAEE35E,QAAS,iBACTw6E,YAAY,EACZb,MAAO,aAIX,sBAAuB,CACrB,CAEE35E,QAAS,iBACTw6E,YAAY,EACZb,MAAO,YAET,CAEE35E,QAAS,iBACTw6E,YAAY,EACZb,MAAO,aAGX,cAAe,CACb35E,QAAS,0BACTw6E,YAAY,GAiBdrsC,OAAQ,CACNnuC,QAAS,qBACT+6E,QAAQ,EACRC,OAAQ8O,IAGRjT,EAAS,SAAUnuE,GACrB,OAAQA,EAAM,IAAI9X,QAAQ,4BAA6B,OACzD,EACIq5F,EAAmB,SAAUjgG,GAC/B,OAAO,IAAImxF,OAAO,aAAenxF,EAAIitF,IAAIJ,GAAQloF,KAAK,KAAO,aAC/D,EACIu7F,EAAW,CACb,iBAAkB,CAChB,KACA,QACA,QACA,OACA,UACA,MACA,WACA,kBACA,MACA,OACA,YACA,aACA,OACA,WACA,OACA,OACA,QACA,WACA,OACA,QACA,OACA,MACA,IACA,IACA,QACA,QACA,QACA,OACA,kBACA,MACA,SACA,MACA,QACA,OACA,QACA,SACA,OACA,UACA,UACA,OACA,UACA,MACA,gBACA,WACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,QACA,UACA,YACA,OACA,QACA,OACA,SACA,gBACA,SACA,QACA,YACA,WACA,oBACA,kBACA,OACA,YACA,MACA,QACA,MACA,QACA,MACA,iBACA,WAEF,uBAAwB,CAEtB,UACA,YACA,YACA,KACA,SACA,MACA,IACA,WACA,KACA,SACA,QACA,SACA,YACA,aACA,WACA,SACA,UACA,gBACA,oBACA,YACA,UACA,mBACA,KACA,WACA,IACA,KACA,MAEF,oBAAqB,CACnB,aACA,WACA,SACA,mBACA,SACA,aACA,aACA,YACA,mBACA,kBACA,WACA,aACA,OACA,WACA,UACA,aACA,YACA,WACA,OACA,OACA,MACA,WACA,UACA,SACA,UACA,aACA,aACA,SACA,QACA,UACA,oBACA,aACA,cACA,OACA,SACA,gBACA,oBACA,gCACA,iCACA,YACA,UACA,WACA,SACA,aACA,aACA,UACA,SACA,OACA,eACA,eACA,QACA,OACA,SACA,YACA,UACA,QACA,WACA,cACA,WACA,QACA,YACA,aACA,aACA,qBACA,SACA,SACA,WACA,eACA,UACA,aACA,OACA,UACA,QACA,SACA,SACA,OACA,aACA,WACA,YACA,MACA,aACA,UACA,aACA,SACA,cACA,YACA,OACA,YACA,SACA,YACA,iBACA,UACA,eACA,UACA,gBACA,eACA,YACA,mBACA,UACA,SACA,WACA,OACA,aACA,oBACA,YACA,UACA,UACA,YACA,WACA,WACA,aACA,OACA,cACA,iBACA,QACA,UACA,YACA,gBACA,cACA,oBACA,MACA,UACA,OACA,SACA,OACA,sBACA,aACA,aACA,mBACA,UACA,cACA,SACA,aACA,WACA,kBACA,OACA,OACA,QACA,QACA,QACA,YACA,SACA,eACA,eACA,WACA,WACA,MACA,aACA,YACA,WACA,QACA,oBACA,eACA,OACA,cACA,QACA,UACA,UACA,OACA,cACA,SACA,OACA,gBACA,YACA,eAEF,eAAgB,CACd,UACA,kBACA,MACA,cACA,iBACA,aACA,UACA,eACA,UACA,WACA,cACA,MACA,IACA,IACA,cACA,IACA,MACA,IACA,KACA,SACA,cACA,wBACA,OACA,IACA,OACA,IACA,WACA,SACA,cACA,KACA,QACA,aACA,SACA,QACA,SACA,QACA,QACA,QACA,UACA,SACA,UACA,WACA,KACA,iBACA,KACA,MACA,UACA,aACA,KACA,KACA,MACA,QACA,WACA,SACA,KACA,UACA,UACA,MACA,SACA,KACA,SACA,QACA,OACA,WACA,aACA,UACA,WACA,OACA,YACA,cACA,QACA,MACA,iBACA,YACA,yBACA,aACA,QACA,aACA,QACA,UACA,MACA,SACA,wBACA,MACA,OACA,KACA,OACA,WACA,QACA,YACA,cAGJ3gG,OAAOkkC,KAAKy8D,GAAUv8D,SAAQ,SAAUylB,GACtCw2C,EAAOx2C,GAAGpzC,QAAUiqF,EAAiBC,EAAS92C,GAChD,IAyNAw2C,EAAOI,YAAYhqF,QAAUiqF,EAxNX,CAEhB,MACA,QACA,OACA,MACA,OACA,QACA,QACA,OACA,QACA,UACA,MACA,MACA,OACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,SACA,KACA,UACA,YACA,MACA,OACA,YACA,QACA,OACA,QACA,OACA,QACA,UACA,KACA,QACA,OACA,SACA,aACA,aACA,WACA,QACA,UACA,OACA,KACA,OACA,SACA,QACA,OACA,SACA,MACA,OACA,SACA,MACA,WACA,YACA,iBACA,kBACA,SACA,YACA,QACA,YACA,YACA,WACA,cACA,UACA,YACA,gBACA,mBACA,SACA,MACA,UACA,cACA,aACA,SACA,cACA,OACA,eACA,YACA,UACA,eACA,eACA,aACA,kBACA,QACA,aACA,SACA,eACA,YACA,eACA,WACA,SACA,WACA,aACA,OACA,YACA,gBACA,eACA,OACA,UACA,UACA,YACA,gBACA,iBACA,kBACA,gBACA,UACA,OACA,YACA,cACA,UACA,cACA,aACA,OACA,aACA,iBACA,aACA,OACA,eACA,cACA,WACA,gBACA,YACA,UACA,QACA,aACA,QACA,OACA,aACA,UACA,aACA,aACA,QACA,OACA,YACA,iBACA,YACA,UACA,eACA,cACA,iBACA,YACA,oBACA,kBACA,QACA,iBACA,eACA,gBACA,kBACA,cACA,gBACA,gBACA,kBACA,cACA,OACA,UACA,YACA,YACA,UACA,eACA,iBACA,aACA,OACA,SACA,cACA,qBACA,SACA,mBACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,gBACA,cACA,iBACA,cACA,eACA,aACA,cACA,WACA,iBACA,oBACA,cACA,qBACA,WACA,eACA,mBACA,oBACA,iBACA,UACA,iBACA,iBACA,cACA,SACA,gBACA,eACA,eACA,aACA,aACA,UACA,oBACA,eACA,YACA,cACA,wBACA,oBAGFtR,EAAMY,UAAUqQ,OAASA,CAC1B,CAr5BA,CAq5BEjR,EACL,CA15BAxtF,EAAOC,QAAUw+F,EACjBA,EAAOh6F,YAAc,SACrBg6F,EAAOhP,QAAU,kCCCjB,SAASuP,EAAOxR,IACb,SAAWA,GAMVA,EAAMY,UAAiB,MAAI,CACzBtvE,QAAS,CACPjK,QAAS,aAEXmuC,OAAQ,CACNnuC,QAAS,UACT+6E,QAAQ,GAEV,iBAAkB,CAChB/6E,QAAS,mBACT25E,MAAO,UAET,iBAAkB,CAChB35E,QAAS,OACT25E,MAAO,aAETvqF,OAAQ,MACRsrF,SAAU,sCACVC,YAAa,QACbY,SAAU,QACV,eAAgB,CACdv7E,QAAS,eACT25E,MAAO,QAGZ,CA/BA,CA+BEhB,EACL,CApCAxtF,EAAOC,QAAU++F,EACjBA,EAAOv6F,YAAc,SACrBu6F,EAAOvP,QAAU,kCCCjB,SAAS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CE,s0BACFqF,UAAW,CACT9/E,QAAS,cACT25E,MAAO,YAET4B,SAAU,aACVnsF,OAAQ,gBACRsrF,SAAU,mBACVC,YAAa,wBAEjB,CAjBAxvF,EAAOC,QAAUswG,EACjBA,EAAM9rG,YAAc,QACpB8rG,EAAM9gB,QAAU,kCCChB,SAAS+gB,EAAQhjB,IACd,SAAWA,GACV,IAAIijB,EAAY,CAEd,MACA,MACA,OACA,MACA,MACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,UACA,QACA,QACA,cACA,OACA,SACA,QACA,SACA,iBACA,aACA,QACA,cACA,OACA,aACA,QACA,gBACA,cACA,gBACA,cACA,WACA,aACA,QACA,SACA,eACA,OACA,OACA,OACA,OACA,UACA,OACA,eACA,SACA,YACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,OACA,aACA,UACA,cACA,aACA,SACA,aACA,SACA,WACA,eACA,SACA,cACA,SACA,qBACA,gBACA,UACA,SACA,SACA,OACA,kBACA,WACA,UACA,eACA,eACA,UACA,OACA,QACA,QACA,eACA,aACA,SACA,UACA,mBACA,OACA,eACA,QACA,SACA,OACA,YACA,mBACA,OACA,kBACA,eACA,iBACA,QACA,SACA,QACA,SACA,SACA,OACA,cACA,YACA,QACA,OACA,UACA,gBACA,QACA,WACA,OACA,iBACA,eACA,kBACA,gBACA,cACA,aACA,aACA,oBACA,UACA,MACA,OACA,UACA,SACA,SACA,YACA,MACA,OACA,QACA,UACA,MACA,gBACA,gBACA,aACA,WACA,YACA,gBACA,WACA,eACA,QACA,QACA,OACA,WACA,MACA,OACA,SACA,MACA,OACA,SACA,OACA,OACA,gBACA,QACA,OACA,eACA,UACA,OACA,SACA,YACA,MACA,OACA,iBACA,MACA,OACA,QACA,oBACA,SACA,UACA,aACA,gBACA,cACA,cACA,cACA,gBACA,SACA,SACA,UACA,iBACA,aACA,mBACA,eACA,YACA,QACA,OACA,SACA,SACA,QACA,aACA,cACA,cA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G6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,IAAK,GAAG6E,OAAO7E,EAAI,GAAI,KAAK6E,OAAO7E,EAAI,GAAI,KAA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","sources":["../node_modules/extend/index.js","../node_modules/hast-util-parse-selector/index.js","../node_modules/hastscript/factory.js","../node_modules/hastscript/html.js","../node_modules/hastscript/index.js","../node_modules/hastscript/node_modules/comma-separated-tokens/index.js","../node_modules/hastscript/node_modules/property-information/find.js","../node_modules/hastscript/node_modules/property-information/html.js","../node_modules/hastscript/node_modules/property-information/lib/aria.js","../node_modules/hastscript/node_modules/property-information/lib/html.js","../node_modules/hastscript/node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/hastscript/node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/hastscript/node_modules/property-information/lib/util/create.js","../node_modules/hastscript/node_modules/property-information/lib/util/defined-info.js","../node_modules/hastscript/node_modules/property-information/lib/util/info.js","../node_modules/hastscript/node_modules/property-information/lib/util/merge.js","../node_modules/hastscript/node_modules/property-information/lib/util/schema.js","../node_modules/hastscript/node_modules/property-information/lib/util/types.js","../node_modules/hastscript/node_modules/property-information/lib/xlink.js","../node_modules/hastscript/node_modules/property-information/lib/xml.js","../node_modules/hastscript/node_modules/property-information/lib/xmlns.js","../node_modules/hastscript/node_modules/property-information/normalize.js","../node_modules/hastscript/node_modules/space-separated-tokens/index.js","../node_modules/inline-style-parser/index.js","../node_modules/is-alphabetical/index.js","../node_modules/is-alphanumerical/index.js","../node_modules/is-buffer/index.js","../node_modules/is-decimal/index.js","../node_modules/is-hexadecimal/index.js","../node_modules/parse-entities/decode-entity.browser.js","../node_modules/parse-entities/index.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/parse5/lib/common/html.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/style-to-object/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/refractor/core.js","../node_modules/refractor/index.js","../node_modules/refractor/lang/abap.js","../node_modules/refractor/lang/abnf.js","../node_modules/refractor/lang/actionscript.js","../node_modules/refractor/lang/ada.js","../node_modules/refractor/lang/agda.js","../node_modules/refractor/lang/al.js","../node_modules/refractor/lang/antlr4.js","../node_modules/refractor/lang/apacheconf.js","../node_modules/refractor/lang/apex.js","../node_modules/refractor/lang/apl.js","../node_modules/refractor/lang/applescript.js","../node_modules/refractor/lang/aql.js","../node_modules/refractor/lang/arduino.js","../node_modules/refractor/lang/arff.js","../node_modules/refractor/lang/asciidoc.js","../node_modules/refractor/lang/asm6502.js","../node_modules/refractor/lang/asmatmel.js","../node_modules/refractor/lang/aspnet.js","../node_modules/refractor/lang/autohotkey.js","../node_modules/refractor/lang/autoit.js","../node_modules/refractor/lang/avisynth.js","../node_modules/refractor/lang/avro-idl.js","../node_modules/refractor/lang/bash.js","../node_modules/refractor/lang/basic.js","../node_modules/refractor/lang/batch.js","../node_modules/refractor/lang/bbcode.js","../node_modules/refractor/lang/bicep.js","../node_modules/refractor/lang/birb.js","../node_modules/refractor/lang/bison.js","../node_modules/refractor/lang/bnf.js","../node_modules/refractor/lang/brainfuck.js","../node_modules/refractor/lang/brightscript.js","../node_modules/refractor/lang/bro.js","../node_modules/refractor/lang/bsl.js","../node_modules/refractor/lang/c.js","../node_modules/refractor/lang/cfscript.js","../node_modules/refractor/lang/chaiscript.js","../node_modules/refractor/lang/cil.js","../node_modules/refractor/lang/clike.js","../node_modules/refractor/lang/clojure.js","../node_modules/refractor/lang/cmake.js","../node_modules/refractor/lang/cobol.js","../node_modules/refractor/lang/coffeescript.js","../node_modules/refractor/lang/concurnas.js","../node_modules/refractor/lang/coq.js","../node_modules/refractor/lang/cpp.js","../node_modules/refractor/lang/crystal.js","../node_modules/refractor/lang/csharp.js","../node_modules/refractor/lang/cshtml.js","../node_modules/refractor/lang/csp.js","../node_modules/refractor/lang/css-extras.js","../node_modules/refractor/lang/css.js","../node_modules/refractor/lang/csv.js","../node_modules/refractor/lang/cypher.js","../node_modules/refractor/lang/d.js","../node_modules/refractor/lang/dart.js","../node_modules/refractor/lang/dataweave.js","../node_modules/refractor/lang/dax.js","../node_modules/refractor/lang/dhall.js","../node_modules/refractor/lang/diff.js","../node_modules/refractor/lang/django.js","../node_modules/refractor/lang/dns-zone-file.js","../node_modules/refractor/lang/docker.js","../node_modules/refractor/lang/dot.js","../node_modules/refractor/lang/ebnf.js","../node_modules/refractor/lang/editorconfig.js","../node_modules/refractor/lang/eiffel.js","../node_modules/refractor/lang/ejs.js","../node_modules/refractor/lang/elixir.js","../node_modules/refractor/lang/elm.js","../node_modules/refractor/lang/erb.js","../node_modules/refractor/lang/erlang.js","../node_modules/refractor/lang/etlua.js","../node_modules/refractor/lang/excel-formula.js","../node_modules/refractor/lang/factor.js","../node_modules/refractor/lang/false.js","../node_modules/refractor/lang/firestore-security-rules.js","../node_modules/refractor/lang/flow.js","../node_modules/refractor/lang/fortran.js","../node_modules/refractor/lang/fsharp.js","../node_modules/refractor/lang/ftl.js","../node_modules/refractor/lang/gap.js","../node_modules/refractor/lang/gcode.js","../node_modules/refractor/lang/gdscript.js","../node_modules/refractor/lang/gedcom.js","../node_modules/refractor/lang/gherkin.js","../node_modules/refractor/lang/git.js","../node_modules/refractor/lang/glsl.js","../node_modules/refractor/lang/gml.js","../node_modules/refractor/lang/gn.js","../node_modules/refractor/lang/go-module.js","../node_modules/refractor/lang/go.js","../node_modules/refractor/lang/graphql.js","../node_modules/refractor/lang/groovy.js","../node_modules/refractor/lang/haml.js","../node_modules/refractor/lang/handlebars.js","../node_modules/refractor/lang/haskell.js","../node_modules/refractor/lang/haxe.js","../node_modules/refractor/lang/hcl.js","../node_modules/refractor/lang/hlsl.js","../node_modules/refractor/lang/hoon.js","../node_modules/refractor/lang/hpkp.js","../node_modules/refractor/lang/hsts.js","../node_modules/refractor/lang/http.js","../node_modules/refractor/lang/ichigojam.js","../node_modules/refractor/lang/icon.js","../node_modules/refractor/lang/icu-message-format.js","../node_modules/refractor/lang/idris.js","../node_modules/refractor/lang/iecst.js","../node_modules/refractor/lang/ignore.js","../node_modules/refractor/lang/inform7.js","../node_modules/refractor/lang/ini.js","../node_modules/refractor/lang/io.js","../node_modules/refractor/lang/j.js","../node_modules/refractor/lang/java.js","../node_modules/refractor/lang/javadoc.js","../node_modules/refractor/lang/javadoclike.js","../node_modules/refractor/lang/javascript.js","../node_modules/refractor/lang/javastacktrace.js","../node_modules/refractor/lang/jexl.js","../node_modules/refractor/lang/jolie.js","../node_modules/refractor/lang/jq.js","../node_modules/refractor/lang/js-extras.js","../node_modules/refractor/lang/js-templates.js","../node_modules/refractor/lang/jsdoc.js","../node_modules/refractor/lang/json.js","../node_modules/refractor/lang/json5.js","../node_modules/refractor/lang/jsonp.js","../node_modules/refractor/lang/jsstacktrace.js","../node_modules/refractor/lang/jsx.js","../node_modules/refractor/lang/julia.js","../node_modules/refractor/lang/keepalived.js","../node_modules/refractor/lang/keyman.js","../node_modules/refractor/lang/kotlin.js","../node_modules/refractor/lang/kumir.js","../node_modules/refractor/lang/kusto.js","../node_modules/refractor/lang/latex.js","../node_modules/refractor/lang/latte.js","../node_modules/refractor/lang/less.js","../node_modules/refractor/lang/lilypond.js","../node_modules/refractor/lang/liquid.js","../node_modules/refractor/lang/lisp.js","../node_modules/refractor/lang/livescript.js","../node_modules/refractor/lang/llvm.js","../node_modules/refractor/lang/log.js","../node_modules/refractor/lang/lolcode.js","../node_modules/refractor/lang/lua.js","../node_modules/refractor/lang/magma.js","../node_modules/refractor/lang/makefile.js","../node_modules/refractor/lang/markdown.js","../node_modules/refractor/lang/markup-templating.js","../node_modules/refractor/lang/markup.js","../node_modules/refractor/lang/matlab.js","../node_modules/refractor/lang/maxscript.js","../node_modules/refractor/lang/mel.js","../node_modules/refractor/lang/mermaid.js","../node_modules/refractor/lang/mizar.js","../node_modules/refractor/lang/mongodb.js","../node_modules/refractor/lang/monkey.js","../node_modules/refractor/lang/moonscript.js","../node_modules/refractor/lang/n1ql.js","../node_modules/refractor/lang/n4js.js","../node_modules/refractor/lang/nand2tetris-hdl.js","../node_modules/refractor/lang/naniscript.js","../node_modules/refractor/lang/nasm.js","../node_modules/refractor/lang/neon.js","../node_modules/refractor/lang/nevod.js","../node_modules/refractor/lang/nginx.js","../node_modules/refractor/lang/nim.js","../node_modules/refractor/lang/nix.js","../node_modules/refractor/lang/nsis.js","../node_modules/refractor/lang/objectivec.js","../node_modules/refractor/lang/ocaml.js","../node_modules/refractor/lang/opencl.js","../node_modules/refractor/lang/openqasm.js","../node_modules/refractor/lang/oz.js","../node_modules/refractor/lang/parigp.js","../node_modules/refractor/lang/parser.js","../node_modules/refractor/lang/pascal.js","../node_modules/refractor/lang/pascaligo.js","../node_modules/refractor/lang/pcaxis.js","../node_modules/refractor/lang/peoplecode.js","../node_modules/refractor/lang/perl.js","../node_modules/refractor/lang/php-extras.js","../node_modules/refractor/lang/php.js","../node_modules/refractor/lang/phpdoc.js","../node_modules/refractor/lang/plsql.js","../node_modules/refractor/lang/powerquery.js","../node_modules/refractor/lang/powershell.js","../node_modules/refractor/lang/processing.js","../node_modules/refractor/lang/prolog.js","../node_modules/refractor/lang/promql.js","../node_modules/refractor/lang/properties.js","../node_modules/refractor/lang/protobuf.js","../node_modules/refractor/lang/psl.js","../node_modules/refractor/lang/pug.js","../node_modules/refractor/lang/puppet.js","../node_modules/refractor/lang/pure.js","../node_modules/refractor/lang/purebasic.js","../node_modules/refractor/lang/purescript.js","../node_modules/refractor/lang/python.js","../node_modules/refractor/lang/q.js","../node_modules/refractor/lang/qml.js","../node_modules/refractor/lang/qore.js","../node_modules/refractor/lang/qsharp.js","../node_modules/refractor/lang/r.js","../node_modules/refractor/lang/racket.js","../node_modules/refractor/lang/reason.js","../node_modules/refractor/lang/regex.js","../node_modules/refractor/lang/rego.js","../node_modules/refractor/lang/renpy.js","../node_modules/refractor/lang/rest.js","../node_modules/refractor/lang/rip.js","../node_modules/refractor/lang/roboconf.js","../node_modules/refractor/lang/robotframework.js","../node_modules/refractor/lang/ruby.js","../node_modules/refractor/lang/rust.js","../node_modules/refractor/lang/sas.js","../node_modules/refractor/lang/sass.js","../node_modules/refractor/lang/scala.js","../node_modules/refractor/lang/scheme.js","../node_modules/refractor/lang/scss.js","../node_modules/refractor/lang/shell-session.js","../node_modules/refractor/lang/smali.js","../node_modules/refractor/lang/smalltalk.js","../node_modules/refractor/lang/smarty.js","../node_modules/refractor/lang/sml.js","../node_modules/refractor/lang/solidity.js","../node_modules/refractor/lang/solution-file.js","../node_modules/refractor/lang/soy.js","../node_modules/refractor/lang/sparql.js","../node_modules/refractor/lang/splunk-spl.js","../node_modules/refractor/lang/sqf.js","../node_modules/refractor/lang/sql.js","../node_modules/refractor/lang/squirrel.js","../node_modules/refractor/lang/stan.js","../node_modules/refractor/lang/stylus.js","../node_modules/refractor/lang/swift.js","../node_modules/refractor/lang/systemd.js","../node_modules/refractor/lang/t4-cs.js","../node_modules/refractor/lang/t4-templating.js","../node_modules/refractor/lang/t4-vb.js","../node_modules/refractor/lang/tap.js","../node_modules/refractor/lang/tcl.js","../node_modules/refractor/lang/textile.js","../node_modules/refractor/lang/toml.js","../node_modules/refractor/lang/tremor.js","../node_modules/refractor/lang/tsx.js","../node_modules/refractor/lang/tt2.js","../node_modules/refractor/lang/turtle.js","../node_modules/refractor/lang/twig.js","../node_modules/refractor/lang/typescript.js","../node_modules/refractor/lang/typoscript.js","../node_modules/refractor/lang/unrealscript.js","../node_modules/refractor/lang/uorazor.js","../node_modules/refractor/lang/uri.js","../node_modules/refractor/lang/v.js","../node_modules/refractor/lang/vala.js","../node_modules/refractor/lang/vbnet.js","../node_modules/refractor/lang/velocity.js","../node_modules/refractor/lang/verilog.js","../node_modules/refractor/lang/vhdl.js","../node_modules/refractor/lang/vim.js","../node_modules/refractor/lang/visual-basic.js","../node_modules/refractor/lang/warpscript.js","../node_modules/refractor/lang/wasm.js","../node_modules/refractor/lang/web-idl.js","../node_modules/refractor/lang/wiki.js","../node_modules/refractor/lang/wolfram.js","../node_modules/refractor/lang/wren.js","../node_modules/refractor/lang/xeora.js","../node_modules/refractor/lang/xml-doc.js","../node_modules/refractor/lang/xojo.js","../node_modules/refractor/lang/xquery.js","../node_modules/refractor/lang/yaml.js","../node_modules/refractor/lang/yang.js","../node_modules/refractor/lang/zig.js","../node_modules/refractor/node_modules/prismjs/components/prism-core.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/index.js","../node_modules/xtend/immutable.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/typeof.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","data.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/unified/lib/index.js","../node_modules/mdast-util-to-string/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/unist-util-is/index.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/unist-util-visit/index.js","../node_modules/unist-util-position/index.js","../node_modules/mdast-util-definitions/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/unist-util-generated/lib/index.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/remark-rehype/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/react-markdown/lib/rehype-filter.js","../node_modules/hast-util-whitespace/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/space-separated-tokens/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/react-markdown/node_modules/style-to-object/index.mjs","../node_modules/react-markdown/lib/uri-transformer.js","../node_modules/react-markdown/lib/ast-to-react.js","../node_modules/react-markdown/lib/react-markdown.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-syntax-highlighter/dist/esm/create-element.js","../node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js","../node_modules/react-syntax-highlighter/dist/esm/highlight.js","../node_modules/react-syntax-highlighter/dist/esm/styles/prism/prism.js","../node_modules/react-syntax-highlighter/dist/esm/prism.js","../node_modules/react-syntax-highlighter/dist/esm/languages/prism/supported-languages.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/react-syntax-highlighter/dist/esm/styles/prism/coldark-dark.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/index.js","../node_modules/mdast-util-to-markdown/lib/util/association.js","../node_modules/mdast-util-to-markdown/lib/util/track.js","../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/util/safe.js","../node_modules/mdast-util-gfm-footnote/index.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/mdast-util-gfm-strikethrough/index.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-gfm-task-list-item/index.js","../node_modules/mdast-util-gfm/lib/index.js","../node_modules/remark-gfm/index.js","../node_modules/hast-util-from-parse5/node_modules/hast-util-parse-selector/index.js","../node_modules/hast-util-from-parse5/node_modules/hastscript/lib/core.js","../node_modules/hast-util-from-parse5/node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/hast-util-from-parse5/node_modules/hastscript/lib/svg.js","../node_modules/hast-util-from-parse5/node_modules/hastscript/lib/html.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/vfile-location/index.js","../node_modules/hast-to-hyperscript/index.js","../node_modules/zwitch/index.js","../node_modules/hast-util-to-parse5/lib/index.js","../node_modules/html-void-elements/index.js","../node_modules/hast-util-raw/lib/index.js","../node_modules/rehype-raw/index.js","components/right_arrow.js","components/down_arrow.js","App.js","index.js"],"sourcesContent":["'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict'\n\nmodule.exports = parse\n\nvar search = /[#.]/g\n\n// Create a hast element from a simple CSS selector.\nfunction parse(selector, defaultTagName) {\n  var value = selector || ''\n  var name = defaultTagName || 'div'\n  var props = {}\n  var start = 0\n  var subvalue\n  var previous\n  var match\n\n  while (start < value.length) {\n    search.lastIndex = start\n    match = search.exec(value)\n    subvalue = value.slice(start, match ? match.index : value.length)\n\n    if (subvalue) {\n      if (!previous) {\n        name = subvalue\n      } else if (previous === '#') {\n        props.id = subvalue\n      } else if (props.className) {\n        props.className.push(subvalue)\n      } else {\n        props.className = [subvalue]\n      }\n\n      start += subvalue.length\n    }\n\n    if (match) {\n      previous = match[0]\n      start++\n    }\n  }\n\n  return {type: 'element', tagName: name, properties: props, children: []}\n}\n","'use strict'\n\nvar find = require('property-information/find')\nvar normalize = require('property-information/normalize')\nvar parseSelector = require('hast-util-parse-selector')\nvar spaces = require('space-separated-tokens').parse\nvar commas = require('comma-separated-tokens').parse\n\nmodule.exports = factory\n\nvar own = {}.hasOwnProperty\n\nfunction factory(schema, defaultTagName, caseSensitive) {\n  var adjust = caseSensitive ? createAdjustMap(caseSensitive) : null\n\n  return h\n\n  // Hyperscript compatible DSL for creating virtual hast trees.\n  function h(selector, properties) {\n    var node = parseSelector(selector, defaultTagName)\n    var children = Array.prototype.slice.call(arguments, 2)\n    var name = node.tagName.toLowerCase()\n    var property\n\n    node.tagName = adjust && own.call(adjust, name) ? adjust[name] : name\n\n    if (properties && isChildren(properties, node)) {\n      children.unshift(properties)\n      properties = null\n    }\n\n    if (properties) {\n      for (property in properties) {\n        addProperty(node.properties, property, properties[property])\n      }\n    }\n\n    addChild(node.children, children)\n\n    if (node.tagName === 'template') {\n      node.content = {type: 'root', children: node.children}\n      node.children = []\n    }\n\n    return node\n  }\n\n  function addProperty(properties, key, value) {\n    var info\n    var property\n    var result\n\n    // Ignore nullish and NaN values.\n    if (value === null || value === undefined || value !== value) {\n      return\n    }\n\n    info = find(schema, key)\n    property = info.property\n    result = value\n\n    // Handle list values.\n    if (typeof result === 'string') {\n      if (info.spaceSeparated) {\n        result = spaces(result)\n      } else if (info.commaSeparated) {\n        result = commas(result)\n      } else if (info.commaOrSpaceSeparated) {\n        result = spaces(commas(result).join(' '))\n      }\n    }\n\n    // Accept `object` on style.\n    if (property === 'style' && typeof value !== 'string') {\n      result = style(result)\n    }\n\n    // Class-names (which can be added both on the `selector` and here).\n    if (property === 'className' && properties.className) {\n      result = properties.className.concat(result)\n    }\n\n    properties[property] = parsePrimitives(info, property, result)\n  }\n}\n\nfunction isChildren(value, node) {\n  return (\n    typeof value === 'string' ||\n    'length' in value ||\n    isNode(node.tagName, value)\n  )\n}\n\nfunction isNode(tagName, value) {\n  var type = value.type\n\n  if (tagName === 'input' || !type || typeof type !== 'string') {\n    return false\n  }\n\n  if (typeof value.children === 'object' && 'length' in value.children) {\n    return true\n  }\n\n  type = type.toLowerCase()\n\n  if (tagName === 'button') {\n    return (\n      type !== 'menu' &&\n      type !== 'submit' &&\n      type !== 'reset' &&\n      type !== 'button'\n    )\n  }\n\n  return 'value' in value\n}\n\nfunction addChild(nodes, value) {\n  var index\n  var length\n\n  if (typeof value === 'string' || typeof value === 'number') {\n    nodes.push({type: 'text', value: String(value)})\n    return\n  }\n\n  if (typeof value === 'object' && 'length' in value) {\n    index = -1\n    length = value.length\n\n    while (++index < length) {\n      addChild(nodes, value[index])\n    }\n\n    return\n  }\n\n  if (typeof value !== 'object' || !('type' in value)) {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n\n  nodes.push(value)\n}\n\n// Parse a (list of) primitives.\nfunction parsePrimitives(info, name, value) {\n  var index\n  var length\n  var result\n\n  if (typeof value !== 'object' || !('length' in value)) {\n    return parsePrimitive(info, name, value)\n  }\n\n  length = value.length\n  index = -1\n  result = []\n\n  while (++index < length) {\n    result[index] = parsePrimitive(info, name, value[index])\n  }\n\n  return result\n}\n\n// Parse a single primitives.\nfunction parsePrimitive(info, name, value) {\n  var result = value\n\n  if (info.number || info.positiveNumber) {\n    if (!isNaN(result) && result !== '') {\n      result = Number(result)\n    }\n  } else if (info.boolean || info.overloadedBoolean) {\n    // Accept `boolean` and `string`.\n    if (\n      typeof result === 'string' &&\n      (result === '' || normalize(value) === normalize(name))\n    ) {\n      result = true\n    }\n  }\n\n  return result\n}\n\nfunction style(value) {\n  var result = []\n  var key\n\n  for (key in value) {\n    result.push([key, value[key]].join(': '))\n  }\n\n  return result.join('; ')\n}\n\nfunction createAdjustMap(values) {\n  var length = values.length\n  var index = -1\n  var result = {}\n  var value\n\n  while (++index < length) {\n    value = values[index]\n    result[value.toLowerCase()] = value\n  }\n\n  return result\n}\n","'use strict'\n\nvar schema = require('property-information/html')\nvar factory = require('./factory')\n\nvar html = factory(schema, 'div')\nhtml.displayName = 'html'\n\nmodule.exports = html\n","'use strict'\n\nmodule.exports = require('./html')\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n  var values = []\n  var input = String(value || empty)\n  var index = input.indexOf(comma)\n  var lastIndex = 0\n  var end = false\n  var val\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    val = input.slice(lastIndex, index).trim()\n\n    if (val || !end) {\n      values.push(val)\n    }\n\n    lastIndex = index + 1\n    index = input.indexOf(comma, lastIndex)\n  }\n\n  return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n  var settings = options || {}\n  var left = settings.padLeft === false ? empty : space\n  var right = settings.padRight ? space : empty\n\n  // Ensure the last empty entry is seen.\n  if (values[values.length - 1] === empty) {\n    values = values.concat(empty)\n  }\n\n  return values.join(right + comma + left).trim()\n}\n","'use strict'\n\nvar normalize = require('./normalize')\nvar DefinedInfo = require('./lib/util/defined-info')\nvar Info = require('./lib/util/info')\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n  var normal = normalize(value)\n  var prop = value\n  var Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      prop = datasetToProperty(value)\n    } else {\n      value = datasetToAttribute(value)\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n  var value = attribute.slice(5).replace(dash, camelcase)\n  return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n  var value = property.slice(4)\n\n  if (dash.test(value)) {\n    return property\n  }\n\n  value = value.replace(cap, kebab)\n\n  if (value.charAt(0) !== '-') {\n    value = '-' + value\n  }\n\n  return data + value\n}\n\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar html = require('./lib/html')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n  transform: ariaTransform,\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n\nfunction ariaTransform(_, prop) {\n  return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    capture: boolean,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: commaSeparated,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforePrint: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextMenu: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: commaSeparated,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n","'use strict'\n\nvar caseSensitiveTransform = require('./case-sensitive-transform')\n\nmodule.exports = caseInsensitiveTransform\n\nfunction caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","'use strict'\n\nmodule.exports = caseSensitiveTransform\n\nfunction caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","'use strict'\n\nvar normalize = require('../../normalize')\nvar Schema = require('./schema')\nvar DefinedInfo = require('./defined-info')\n\nmodule.exports = create\n\nfunction create(definition) {\n  var space = definition.space\n  var mustUseProperty = definition.mustUseProperty || []\n  var attributes = definition.attributes || {}\n  var props = definition.properties\n  var transform = definition.transform\n  var property = {}\n  var normal = {}\n  var prop\n  var info\n\n  for (prop in props) {\n    info = new DefinedInfo(\n      prop,\n      transform(attributes, prop),\n      props[prop],\n      space\n    )\n\n    if (mustUseProperty.indexOf(prop) !== -1) {\n      info.mustUseProperty = true\n    }\n\n    property[prop] = info\n\n    normal[normalize(prop)] = prop\n    normal[normalize(info.attribute)] = prop\n  }\n\n  return new Schema(property, normal, space)\n}\n","'use strict'\n\nvar Info = require('./info')\nvar types = require('./types')\n\nmodule.exports = DefinedInfo\n\nDefinedInfo.prototype = new Info()\nDefinedInfo.prototype.defined = true\n\nvar checks = [\n  'boolean',\n  'booleanish',\n  'overloadedBoolean',\n  'number',\n  'commaSeparated',\n  'spaceSeparated',\n  'commaOrSpaceSeparated'\n]\nvar checksLength = checks.length\n\nfunction DefinedInfo(property, attribute, mask, space) {\n  var index = -1\n  var check\n\n  mark(this, 'space', space)\n\n  Info.call(this, property, attribute)\n\n  while (++index < checksLength) {\n    check = checks[index]\n    mark(this, check, (mask & types[check]) === types[check])\n  }\n}\n\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n","'use strict'\n\nmodule.exports = Info\n\nvar proto = Info.prototype\n\nproto.space = null\nproto.attribute = null\nproto.property = null\nproto.boolean = false\nproto.booleanish = false\nproto.overloadedBoolean = false\nproto.number = false\nproto.commaSeparated = false\nproto.spaceSeparated = false\nproto.commaOrSpaceSeparated = false\nproto.mustUseProperty = false\nproto.defined = false\n\nfunction Info(property, attribute) {\n  this.property = property\n  this.attribute = attribute\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar Schema = require('./schema')\n\nmodule.exports = merge\n\nfunction merge(definitions) {\n  var length = definitions.length\n  var property = []\n  var normal = []\n  var index = -1\n  var info\n  var space\n\n  while (++index < length) {\n    info = definitions[index]\n    property.push(info.property)\n    normal.push(info.normal)\n    space = info.space\n  }\n\n  return new Schema(\n    xtend.apply(null, property),\n    xtend.apply(null, normal),\n    space\n  )\n}\n","'use strict'\n\nmodule.exports = Schema\n\nvar proto = Schema.prototype\n\nproto.space = null\nproto.normal = {}\nproto.property = {}\n\nfunction Schema(property, normal, space) {\n  this.property = property\n  this.normal = normal\n\n  if (space) {\n    this.space = space\n  }\n}\n","'use strict'\n\nvar powers = 0\n\nexports.boolean = increment()\nexports.booleanish = increment()\nexports.overloadedBoolean = increment()\nexports.number = increment()\nexports.spaceSeparated = increment()\nexports.commaSeparated = increment()\nexports.commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return Math.pow(2, ++powers)\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n  space: 'xlink',\n  transform: xlinkTransform,\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n\nfunction xlinkTransform(_, prop) {\n  return 'xlink:' + prop.slice(5).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n  space: 'xml',\n  transform: xmlTransform,\n  properties: {\n    xmlLang: null,\n    xmlBase: null,\n    xmlSpace: null\n  }\n})\n\nfunction xmlTransform(_, prop) {\n  return 'xml:' + prop.slice(3).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nmodule.exports = create({\n  space: 'xmlns',\n  attributes: {\n    xmlnsxlink: 'xmlns:xlink'\n  },\n  transform: caseInsensitiveTransform,\n  properties: {\n    xmlns: null,\n    xmlnsXLink: null\n  }\n})\n","'use strict'\n\nmodule.exports = normalize\n\nfunction normalize(value) {\n  return value.toLowerCase()\n}\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar empty = ''\nvar space = ' '\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g\n\nfunction parse(value) {\n  var input = String(value || empty).trim()\n  return input === empty ? [] : input.split(whiteSpace)\n}\n\nfunction stringify(values) {\n  return values.join(space).trim()\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function(node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","'use strict'\n\nmodule.exports = alphabetical\n\n// Check if the given character code, or the character code at the first\n// character, is alphabetical.\nfunction alphabetical(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 && code <= 122) /* a-z */ ||\n    (code >= 65 && code <= 90) /* A-Z */\n  )\n}\n","'use strict'\n\nvar alphabetical = require('is-alphabetical')\nvar decimal = require('is-decimal')\n\nmodule.exports = alphanumerical\n\n// Check if the given character code, or the character code at the first\n// character, is alphanumerical.\nfunction alphanumerical(character) {\n  return alphabetical(character) || decimal(character)\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict'\n\nmodule.exports = decimal\n\n// Check if the given character code, or the character code at the first\n// character, is decimal.\nfunction decimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return code >= 48 && code <= 57 /* 0-9 */\n}\n","'use strict'\n\nmodule.exports = hexadecimal\n\n// Check if the given character code, or the character code at the first\n// character, is hexadecimal.\nfunction hexadecimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 /* a */ && code <= 102) /* z */ ||\n    (code >= 65 /* A */ && code <= 70) /* Z */ ||\n    (code >= 48 /* A */ && code <= 57) /* Z */\n  )\n}\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 //  ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n  var entity = '&' + characters + ';'\n  var char\n\n  el = el || document.createElement('i')\n  el.innerHTML = entity\n  char = el.textContent\n\n  // Some entities do not require the closing semicolon (`&not` - for instance),\n  // which leads to situations where parsing the assumed entity of &notit; will\n  // result in the string `¬it;`.  When we encounter a trailing semicolon after\n  // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n  // assume that the matching was incomplete\n  if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the entity was not valid\n  return char === entity ? false : char\n}\n","'use strict'\n\nvar legacy = require('character-entities-legacy')\nvar invalid = require('character-reference-invalid')\nvar decimal = require('is-decimal')\nvar hexadecimal = require('is-hexadecimal')\nvar alphanumerical = require('is-alphanumerical')\nvar decodeEntity = require('./decode-entity')\n\nmodule.exports = parseEntities\n\nvar own = {}.hasOwnProperty\nvar fromCharCode = String.fromCharCode\nvar noop = Function.prototype\n\n// Default settings.\nvar defaults = {\n  warning: null,\n  reference: null,\n  text: null,\n  warningContext: null,\n  referenceContext: null,\n  textContext: null,\n  position: {},\n  additional: null,\n  attribute: false,\n  nonTerminated: true\n}\n\n// Characters.\nvar tab = 9 // '\\t'\nvar lineFeed = 10 // '\\n'\nvar formFeed = 12 // '\\f'\nvar space = 32 // ' '\nvar ampersand = 38 // '&'\nvar semicolon = 59 // ';'\nvar lessThan = 60 // '<'\nvar equalsTo = 61 // '='\nvar numberSign = 35 // '#'\nvar uppercaseX = 88 // 'X'\nvar lowercaseX = 120 // 'x'\nvar replacementCharacter = 65533 // '�'\n\n// Reference types.\nvar name = 'named'\nvar hexa = 'hexadecimal'\nvar deci = 'decimal'\n\n// Map of bases.\nvar bases = {}\n\nbases[hexa] = 16\nbases[deci] = 10\n\n// Map of types to tests.\n// Each type of character reference accepts different characters.\n// This test is used to detect whether a reference has ended (as the semicolon\n// is not strictly needed).\nvar tests = {}\n\ntests[name] = alphanumerical\ntests[deci] = decimal\ntests[hexa] = hexadecimal\n\n// Warning types.\nvar namedNotTerminated = 1\nvar numericNotTerminated = 2\nvar namedEmpty = 3\nvar numericEmpty = 4\nvar namedUnknown = 5\nvar numericDisallowed = 6\nvar numericProhibited = 7\n\n// Warning messages.\nvar messages = {}\n\nmessages[namedNotTerminated] =\n  'Named character references must be terminated by a semicolon'\nmessages[numericNotTerminated] =\n  'Numeric character references must be terminated by a semicolon'\nmessages[namedEmpty] = 'Named character references cannot be empty'\nmessages[numericEmpty] = 'Numeric character references cannot be empty'\nmessages[namedUnknown] = 'Named character references must be known'\nmessages[numericDisallowed] =\n  'Numeric character references cannot be disallowed'\nmessages[numericProhibited] =\n  'Numeric character references cannot be outside the permissible Unicode range'\n\n// Wrap to ensure clean parameters are given to `parse`.\nfunction parseEntities(value, options) {\n  var settings = {}\n  var option\n  var key\n\n  if (!options) {\n    options = {}\n  }\n\n  for (key in defaults) {\n    option = options[key]\n    settings[key] =\n      option === null || option === undefined ? defaults[key] : option\n  }\n\n  if (settings.position.indent || settings.position.start) {\n    settings.indent = settings.position.indent || []\n    settings.position = settings.position.start\n  }\n\n  return parse(value, settings)\n}\n\n// Parse entities.\n// eslint-disable-next-line complexity\nfunction parse(value, settings) {\n  var additional = settings.additional\n  var nonTerminated = settings.nonTerminated\n  var handleText = settings.text\n  var handleReference = settings.reference\n  var handleWarning = settings.warning\n  var textContext = settings.textContext\n  var referenceContext = settings.referenceContext\n  var warningContext = settings.warningContext\n  var pos = settings.position\n  var indent = settings.indent || []\n  var length = value.length\n  var index = 0\n  var lines = -1\n  var column = pos.column || 1\n  var line = pos.line || 1\n  var queue = ''\n  var result = []\n  var entityCharacters\n  var namedEntity\n  var terminated\n  var characters\n  var character\n  var reference\n  var following\n  var warning\n  var reason\n  var output\n  var entity\n  var begin\n  var start\n  var type\n  var test\n  var prev\n  var next\n  var diff\n  var end\n\n  if (typeof additional === 'string') {\n    additional = additional.charCodeAt(0)\n  }\n\n  // Cache the current point.\n  prev = now()\n\n  // Wrap `handleWarning`.\n  warning = handleWarning ? parseError : noop\n\n  // Ensure the algorithm walks over the first character and the end\n  // (inclusive).\n  index--\n  length++\n\n  while (++index < length) {\n    // If the previous character was a newline.\n    if (character === lineFeed) {\n      column = indent[lines] || 1\n    }\n\n    character = value.charCodeAt(index)\n\n    if (character === ampersand) {\n      following = value.charCodeAt(index + 1)\n\n      // The behaviour depends on the identity of the next character.\n      if (\n        following === tab ||\n        following === lineFeed ||\n        following === formFeed ||\n        following === space ||\n        following === ampersand ||\n        following === lessThan ||\n        following !== following ||\n        (additional && following === additional)\n      ) {\n        // Not a character reference.\n        // No characters are consumed, and nothing is returned.\n        // This is not an error, either.\n        queue += fromCharCode(character)\n        column++\n\n        continue\n      }\n\n      start = index + 1\n      begin = start\n      end = start\n\n      if (following === numberSign) {\n        // Numerical entity.\n        end = ++begin\n\n        // The behaviour further depends on the next character.\n        following = value.charCodeAt(end)\n\n        if (following === uppercaseX || following === lowercaseX) {\n          // ASCII hex digits.\n          type = hexa\n          end = ++begin\n        } else {\n          // ASCII digits.\n          type = deci\n        }\n      } else {\n        // Named entity.\n        type = name\n      }\n\n      entityCharacters = ''\n      entity = ''\n      characters = ''\n      test = tests[type]\n      end--\n\n      while (++end < length) {\n        following = value.charCodeAt(end)\n\n        if (!test(following)) {\n          break\n        }\n\n        characters += fromCharCode(following)\n\n        // Check if we can match a legacy named reference.\n        // If so, we cache that as the last viable named reference.\n        // This ensures we do not need to walk backwards later.\n        if (type === name && own.call(legacy, characters)) {\n          entityCharacters = characters\n          entity = legacy[characters]\n        }\n      }\n\n      terminated = value.charCodeAt(end) === semicolon\n\n      if (terminated) {\n        end++\n\n        namedEntity = type === name ? decodeEntity(characters) : false\n\n        if (namedEntity) {\n          entityCharacters = characters\n          entity = namedEntity\n        }\n      }\n\n      diff = 1 + end - start\n\n      if (!terminated && !nonTerminated) {\n        // Empty.\n      } else if (!characters) {\n        // An empty (possible) entity is valid, unless it’s numeric (thus an\n        // ampersand followed by an octothorp).\n        if (type !== name) {\n          warning(numericEmpty, diff)\n        }\n      } else if (type === name) {\n        // An ampersand followed by anything unknown, and not terminated, is\n        // invalid.\n        if (terminated && !entity) {\n          warning(namedUnknown, 1)\n        } else {\n          // If theres something after an entity name which is not known, cap\n          // the reference.\n          if (entityCharacters !== characters) {\n            end = begin + entityCharacters.length\n            diff = 1 + end - begin\n            terminated = false\n          }\n\n          // If the reference is not terminated, warn.\n          if (!terminated) {\n            reason = entityCharacters ? namedNotTerminated : namedEmpty\n\n            if (settings.attribute) {\n              following = value.charCodeAt(end)\n\n              if (following === equalsTo) {\n                warning(reason, diff)\n                entity = null\n              } else if (alphanumerical(following)) {\n                entity = null\n              } else {\n                warning(reason, diff)\n              }\n            } else {\n              warning(reason, diff)\n            }\n          }\n        }\n\n        reference = entity\n      } else {\n        if (!terminated) {\n          // All non-terminated numeric entities are not rendered, and trigger a\n          // warning.\n          warning(numericNotTerminated, diff)\n        }\n\n        // When terminated and number, parse as either hexadecimal or decimal.\n        reference = parseInt(characters, bases[type])\n\n        // Trigger a warning when the parsed number is prohibited, and replace\n        // with replacement character.\n        if (prohibited(reference)) {\n          warning(numericProhibited, diff)\n          reference = fromCharCode(replacementCharacter)\n        } else if (reference in invalid) {\n          // Trigger a warning when the parsed number is disallowed, and replace\n          // by an alternative.\n          warning(numericDisallowed, diff)\n          reference = invalid[reference]\n        } else {\n          // Parse the number.\n          output = ''\n\n          // Trigger a warning when the parsed number should not be used.\n          if (disallowed(reference)) {\n            warning(numericDisallowed, diff)\n          }\n\n          // Stringify the number.\n          if (reference > 0xffff) {\n            reference -= 0x10000\n            output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800)\n            reference = 0xdc00 | (reference & 0x3ff)\n          }\n\n          reference = output + fromCharCode(reference)\n        }\n      }\n\n      // Found it!\n      // First eat the queued characters as normal text, then eat an entity.\n      if (reference) {\n        flush()\n\n        prev = now()\n        index = end - 1\n        column += end - start + 1\n        result.push(reference)\n        next = now()\n        next.offset++\n\n        if (handleReference) {\n          handleReference.call(\n            referenceContext,\n            reference,\n            {start: prev, end: next},\n            value.slice(start - 1, end)\n          )\n        }\n\n        prev = next\n      } else {\n        // If we could not find a reference, queue the checked characters (as\n        // normal characters), and move the pointer to their end.\n        // This is possible because we can be certain neither newlines nor\n        // ampersands are included.\n        characters = value.slice(start - 1, end)\n        queue += characters\n        column += characters.length\n        index = end - 1\n      }\n    } else {\n      // Handle anything other than an ampersand, including newlines and EOF.\n      if (\n        character === 10 // Line feed\n      ) {\n        line++\n        lines++\n        column = 0\n      }\n\n      if (character === character) {\n        queue += fromCharCode(character)\n        column++\n      } else {\n        flush()\n      }\n    }\n  }\n\n  // Return the reduced nodes.\n  return result.join('')\n\n  // Get current position.\n  function now() {\n    return {\n      line: line,\n      column: column,\n      offset: index + (pos.offset || 0)\n    }\n  }\n\n  // “Throw” a parse-error: a warning.\n  function parseError(code, offset) {\n    var position = now()\n\n    position.column += offset\n    position.offset += offset\n\n    handleWarning.call(warningContext, messages[code], position, code)\n  }\n\n  // Flush `queue` (normal text).\n  // Macro invoked before each entity and at the end of `value`.\n  // Does nothing when `queue` is empty.\n  function flush() {\n    if (queue) {\n      result.push(queue)\n\n      if (handleText) {\n        handleText.call(textContext, queue, {start: prev, end: now()})\n      }\n\n      queue = ''\n    }\n  }\n}\n\n// Check if `character` is outside the permissible unicode range.\nfunction prohibited(code) {\n  return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n// Check if `character` is disallowed.\nfunction disallowed(code) {\n  return (\n    (code >= 0x0001 && code <= 0x0008) ||\n    code === 0x000b ||\n    (code >= 0x000d && code <= 0x001f) ||\n    (code >= 0x007f && code <= 0x009f) ||\n    (code >= 0xfdd0 && code <= 0xfdef) ||\n    (code & 0xffff) === 0xffff ||\n    (code & 0xffff) === 0xfffe\n  )\n}\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n    '+//silmaril//dtd html pro v0r11 19970101//',\n    '-//as//dtd html 3.0 aswedit + extensions//',\n    '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n    '-//ietf//dtd html 2.0 level 1//',\n    '-//ietf//dtd html 2.0 level 2//',\n    '-//ietf//dtd html 2.0 strict level 1//',\n    '-//ietf//dtd html 2.0 strict level 2//',\n    '-//ietf//dtd html 2.0 strict//',\n    '-//ietf//dtd html 2.0//',\n    '-//ietf//dtd html 2.1e//',\n    '-//ietf//dtd html 3.0//',\n    '-//ietf//dtd html 3.2 final//',\n    '-//ietf//dtd html 3.2//',\n    '-//ietf//dtd html 3//',\n    '-//ietf//dtd html level 0//',\n    '-//ietf//dtd html level 1//',\n    '-//ietf//dtd html level 2//',\n    '-//ietf//dtd html level 3//',\n    '-//ietf//dtd html strict level 0//',\n    '-//ietf//dtd html strict level 1//',\n    '-//ietf//dtd html strict level 2//',\n    '-//ietf//dtd html strict level 3//',\n    '-//ietf//dtd html strict//',\n    '-//ietf//dtd html//',\n    '-//metrius//dtd metrius presentational//',\n    '-//microsoft//dtd internet explorer 2.0 html strict//',\n    '-//microsoft//dtd internet explorer 2.0 html//',\n    '-//microsoft//dtd internet explorer 2.0 tables//',\n    '-//microsoft//dtd internet explorer 3.0 html strict//',\n    '-//microsoft//dtd internet explorer 3.0 html//',\n    '-//microsoft//dtd internet explorer 3.0 tables//',\n    '-//netscape comm. corp.//dtd html//',\n    '-//netscape comm. corp.//dtd strict html//',\n    \"-//o'reilly and associates//dtd html 2.0//\",\n    \"-//o'reilly and associates//dtd html extended 1.0//\",\n    \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n    '-//sq//dtd html 2.0 hotmetal + extensions//',\n    '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n    '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n    '-//spyglass//dtd html 2.0 extended//',\n    '-//sun microsystems corp.//dtd hotjava html//',\n    '-//sun microsystems corp.//dtd hotjava strict html//',\n    '-//w3c//dtd html 3 1995-03-24//',\n    '-//w3c//dtd html 3.2 draft//',\n    '-//w3c//dtd html 3.2 final//',\n    '-//w3c//dtd html 3.2//',\n    '-//w3c//dtd html 3.2s draft//',\n    '-//w3c//dtd html 4.0 frameset//',\n    '-//w3c//dtd html 4.0 transitional//',\n    '-//w3c//dtd html experimental 19960712//',\n    '-//w3c//dtd html experimental 970421//',\n    '-//w3c//dtd w3 html//',\n    '-//w3o//dtd w3 html 3.0//',\n    '-//webtechs//dtd mozilla html 2.0//',\n    '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n    const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n    return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n    for (let i = 0; i < prefixes.length; i++) {\n        if (publicId.indexOf(prefixes[i]) === 0) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\n//API\nexports.isConforming = function(token) {\n    return (\n        token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n    );\n};\n\nexports.getDocumentMode = function(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n\n    const systemId = token.systemId;\n\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n\n    let publicId = token.publicId;\n\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n\n        if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n\n        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n\n        prefixes =\n            systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.LIMITED_QUIRKS;\n        }\n    }\n\n    return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n    let str = '!DOCTYPE ';\n\n    if (name) {\n        str += name;\n    }\n\n    if (publicId) {\n        str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n    } else if (systemId) {\n        str += ' SYSTEM';\n    }\n\n    if (systemId !== null) {\n        str += ' ' + enquoteDoctypeId(systemId);\n    }\n\n    return str;\n};\n","'use strict';\n\nmodule.exports = {\n    controlCharacterInInputStream: 'control-character-in-input-stream',\n    noncharacterInInputStream: 'noncharacter-in-input-stream',\n    surrogateInInputStream: 'surrogate-in-input-stream',\n    nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n    endTagWithAttributes: 'end-tag-with-attributes',\n    endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n    unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n    unexpectedNullCharacter: 'unexpected-null-character',\n    unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n    invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n    unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n    missingEndTagName: 'missing-end-tag-name',\n    unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n    unknownNamedCharacterReference: 'unknown-named-character-reference',\n    missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n    unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n    unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n    eofBeforeTagName: 'eof-before-tag-name',\n    eofInTag: 'eof-in-tag',\n    missingAttributeValue: 'missing-attribute-value',\n    missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n    missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n    missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n        'missing-whitespace-between-doctype-public-and-system-identifiers',\n    missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n    missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n    missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n    missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n    missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n    abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n    abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n    cdataInHtmlContent: 'cdata-in-html-content',\n    incorrectlyOpenedComment: 'incorrectly-opened-comment',\n    eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n    eofInDoctype: 'eof-in-doctype',\n    nestedComment: 'nested-comment',\n    abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n    eofInComment: 'eof-in-comment',\n    incorrectlyClosedComment: 'incorrectly-closed-comment',\n    eofInCdata: 'eof-in-cdata',\n    absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n    nullCharacterReference: 'null-character-reference',\n    surrogateCharacterReference: 'surrogate-character-reference',\n    characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n    controlCharacterReference: 'control-character-reference',\n    noncharacterCharacterReference: 'noncharacter-character-reference',\n    missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n    missingDoctypeName: 'missing-doctype-name',\n    invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n    duplicateAttribute: 'duplicate-attribute',\n    nonConformingDoctype: 'non-conforming-doctype',\n    missingDoctype: 'missing-doctype',\n    misplacedDoctype: 'misplaced-doctype',\n    endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n    closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n    disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n    openElementsLeftAfterEof: 'open-elements-left-after-eof',\n    abandonedHeadElementChild: 'abandoned-head-element-child',\n    misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n    nestedNoscriptInHead: 'nested-noscript-in-head',\n    eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n    attributename: 'attributeName',\n    attributetype: 'attributeType',\n    basefrequency: 'baseFrequency',\n    baseprofile: 'baseProfile',\n    calcmode: 'calcMode',\n    clippathunits: 'clipPathUnits',\n    diffuseconstant: 'diffuseConstant',\n    edgemode: 'edgeMode',\n    filterunits: 'filterUnits',\n    glyphref: 'glyphRef',\n    gradienttransform: 'gradientTransform',\n    gradientunits: 'gradientUnits',\n    kernelmatrix: 'kernelMatrix',\n    kernelunitlength: 'kernelUnitLength',\n    keypoints: 'keyPoints',\n    keysplines: 'keySplines',\n    keytimes: 'keyTimes',\n    lengthadjust: 'lengthAdjust',\n    limitingconeangle: 'limitingConeAngle',\n    markerheight: 'markerHeight',\n    markerunits: 'markerUnits',\n    markerwidth: 'markerWidth',\n    maskcontentunits: 'maskContentUnits',\n    maskunits: 'maskUnits',\n    numoctaves: 'numOctaves',\n    pathlength: 'pathLength',\n    patterncontentunits: 'patternContentUnits',\n    patterntransform: 'patternTransform',\n    patternunits: 'patternUnits',\n    pointsatx: 'pointsAtX',\n    pointsaty: 'pointsAtY',\n    pointsatz: 'pointsAtZ',\n    preservealpha: 'preserveAlpha',\n    preserveaspectratio: 'preserveAspectRatio',\n    primitiveunits: 'primitiveUnits',\n    refx: 'refX',\n    refy: 'refY',\n    repeatcount: 'repeatCount',\n    repeatdur: 'repeatDur',\n    requiredextensions: 'requiredExtensions',\n    requiredfeatures: 'requiredFeatures',\n    specularconstant: 'specularConstant',\n    specularexponent: 'specularExponent',\n    spreadmethod: 'spreadMethod',\n    startoffset: 'startOffset',\n    stddeviation: 'stdDeviation',\n    stitchtiles: 'stitchTiles',\n    surfacescale: 'surfaceScale',\n    systemlanguage: 'systemLanguage',\n    tablevalues: 'tableValues',\n    targetx: 'targetX',\n    targety: 'targetY',\n    textlength: 'textLength',\n    viewbox: 'viewBox',\n    viewtarget: 'viewTarget',\n    xchannelselector: 'xChannelSelector',\n    ychannelselector: 'yChannelSelector',\n    zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n    'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n    'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n    'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n    'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n    'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n    'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n    'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n    'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n    'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n    'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n    xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n    'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n    altglyph: 'altGlyph',\n    altglyphdef: 'altGlyphDef',\n    altglyphitem: 'altGlyphItem',\n    animatecolor: 'animateColor',\n    animatemotion: 'animateMotion',\n    animatetransform: 'animateTransform',\n    clippath: 'clipPath',\n    feblend: 'feBlend',\n    fecolormatrix: 'feColorMatrix',\n    fecomponenttransfer: 'feComponentTransfer',\n    fecomposite: 'feComposite',\n    feconvolvematrix: 'feConvolveMatrix',\n    fediffuselighting: 'feDiffuseLighting',\n    fedisplacementmap: 'feDisplacementMap',\n    fedistantlight: 'feDistantLight',\n    feflood: 'feFlood',\n    fefunca: 'feFuncA',\n    fefuncb: 'feFuncB',\n    fefuncg: 'feFuncG',\n    fefuncr: 'feFuncR',\n    fegaussianblur: 'feGaussianBlur',\n    feimage: 'feImage',\n    femerge: 'feMerge',\n    femergenode: 'feMergeNode',\n    femorphology: 'feMorphology',\n    feoffset: 'feOffset',\n    fepointlight: 'fePointLight',\n    fespecularlighting: 'feSpecularLighting',\n    fespotlight: 'feSpotLight',\n    fetile: 'feTile',\n    feturbulence: 'feTurbulence',\n    foreignobject: 'foreignObject',\n    glyphref: 'glyphRef',\n    lineargradient: 'linearGradient',\n    radialgradient: 'radialGradient',\n    textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n    [$.B]: true,\n    [$.BIG]: true,\n    [$.BLOCKQUOTE]: true,\n    [$.BODY]: true,\n    [$.BR]: true,\n    [$.CENTER]: true,\n    [$.CODE]: true,\n    [$.DD]: true,\n    [$.DIV]: true,\n    [$.DL]: true,\n    [$.DT]: true,\n    [$.EM]: true,\n    [$.EMBED]: true,\n    [$.H1]: true,\n    [$.H2]: true,\n    [$.H3]: true,\n    [$.H4]: true,\n    [$.H5]: true,\n    [$.H6]: true,\n    [$.HEAD]: true,\n    [$.HR]: true,\n    [$.I]: true,\n    [$.IMG]: true,\n    [$.LI]: true,\n    [$.LISTING]: true,\n    [$.MENU]: true,\n    [$.META]: true,\n    [$.NOBR]: true,\n    [$.OL]: true,\n    [$.P]: true,\n    [$.PRE]: true,\n    [$.RUBY]: true,\n    [$.S]: true,\n    [$.SMALL]: true,\n    [$.SPAN]: true,\n    [$.STRONG]: true,\n    [$.STRIKE]: true,\n    [$.SUB]: true,\n    [$.SUP]: true,\n    [$.TABLE]: true,\n    [$.TT]: true,\n    [$.U]: true,\n    [$.UL]: true,\n    [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n    const tn = startTagToken.tagName;\n    const isFontWithAttrs =\n        tn === $.FONT &&\n        (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n            Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n            Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n    return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n        if (adjustedAttrName) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n    if (adjustedTagName) {\n        token.tagName = adjustedTagName;\n    }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                const value = attrs[i].value.toLowerCase();\n\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n\n    return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n    if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n        return true;\n    }\n\n    if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n        return true;\n    }\n\n    return false;\n};\n","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n    HTML: 'http://www.w3.org/1999/xhtml',\n    MATHML: 'http://www.w3.org/1998/Math/MathML',\n    SVG: 'http://www.w3.org/2000/svg',\n    XLINK: 'http://www.w3.org/1999/xlink',\n    XML: 'http://www.w3.org/XML/1998/namespace',\n    XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n    TYPE: 'type',\n    ACTION: 'action',\n    ENCODING: 'encoding',\n    PROMPT: 'prompt',\n    NAME: 'name',\n    COLOR: 'color',\n    FACE: 'face',\n    SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n    NO_QUIRKS: 'no-quirks',\n    QUIRKS: 'quirks',\n    LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n    A: 'a',\n    ADDRESS: 'address',\n    ANNOTATION_XML: 'annotation-xml',\n    APPLET: 'applet',\n    AREA: 'area',\n    ARTICLE: 'article',\n    ASIDE: 'aside',\n\n    B: 'b',\n    BASE: 'base',\n    BASEFONT: 'basefont',\n    BGSOUND: 'bgsound',\n    BIG: 'big',\n    BLOCKQUOTE: 'blockquote',\n    BODY: 'body',\n    BR: 'br',\n    BUTTON: 'button',\n\n    CAPTION: 'caption',\n    CENTER: 'center',\n    CODE: 'code',\n    COL: 'col',\n    COLGROUP: 'colgroup',\n\n    DD: 'dd',\n    DESC: 'desc',\n    DETAILS: 'details',\n    DIALOG: 'dialog',\n    DIR: 'dir',\n    DIV: 'div',\n    DL: 'dl',\n    DT: 'dt',\n\n    EM: 'em',\n    EMBED: 'embed',\n\n    FIELDSET: 'fieldset',\n    FIGCAPTION: 'figcaption',\n    FIGURE: 'figure',\n    FONT: 'font',\n    FOOTER: 'footer',\n    FOREIGN_OBJECT: 'foreignObject',\n    FORM: 'form',\n    FRAME: 'frame',\n    FRAMESET: 'frameset',\n\n    H1: 'h1',\n    H2: 'h2',\n    H3: 'h3',\n    H4: 'h4',\n    H5: 'h5',\n    H6: 'h6',\n    HEAD: 'head',\n    HEADER: 'header',\n    HGROUP: 'hgroup',\n    HR: 'hr',\n    HTML: 'html',\n\n    I: 'i',\n    IMG: 'img',\n    IMAGE: 'image',\n    INPUT: 'input',\n    IFRAME: 'iframe',\n\n    KEYGEN: 'keygen',\n\n    LABEL: 'label',\n    LI: 'li',\n    LINK: 'link',\n    LISTING: 'listing',\n\n    MAIN: 'main',\n    MALIGNMARK: 'malignmark',\n    MARQUEE: 'marquee',\n    MATH: 'math',\n    MENU: 'menu',\n    META: 'meta',\n    MGLYPH: 'mglyph',\n    MI: 'mi',\n    MO: 'mo',\n    MN: 'mn',\n    MS: 'ms',\n    MTEXT: 'mtext',\n\n    NAV: 'nav',\n    NOBR: 'nobr',\n    NOFRAMES: 'noframes',\n    NOEMBED: 'noembed',\n    NOSCRIPT: 'noscript',\n\n    OBJECT: 'object',\n    OL: 'ol',\n    OPTGROUP: 'optgroup',\n    OPTION: 'option',\n\n    P: 'p',\n    PARAM: 'param',\n    PLAINTEXT: 'plaintext',\n    PRE: 'pre',\n\n    RB: 'rb',\n    RP: 'rp',\n    RT: 'rt',\n    RTC: 'rtc',\n    RUBY: 'ruby',\n\n    S: 's',\n    SCRIPT: 'script',\n    SECTION: 'section',\n    SELECT: 'select',\n    SOURCE: 'source',\n    SMALL: 'small',\n    SPAN: 'span',\n    STRIKE: 'strike',\n    STRONG: 'strong',\n    STYLE: 'style',\n    SUB: 'sub',\n    SUMMARY: 'summary',\n    SUP: 'sup',\n\n    TABLE: 'table',\n    TBODY: 'tbody',\n    TEMPLATE: 'template',\n    TEXTAREA: 'textarea',\n    TFOOT: 'tfoot',\n    TD: 'td',\n    TH: 'th',\n    THEAD: 'thead',\n    TITLE: 'title',\n    TR: 'tr',\n    TRACK: 'track',\n    TT: 'tt',\n\n    U: 'u',\n    UL: 'ul',\n\n    SVG: 'svg',\n\n    VAR: 'var',\n\n    WBR: 'wbr',\n\n    XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n    [NS.HTML]: {\n        [$.ADDRESS]: true,\n        [$.APPLET]: true,\n        [$.AREA]: true,\n        [$.ARTICLE]: true,\n        [$.ASIDE]: true,\n        [$.BASE]: true,\n        [$.BASEFONT]: true,\n        [$.BGSOUND]: true,\n        [$.BLOCKQUOTE]: true,\n        [$.BODY]: true,\n        [$.BR]: true,\n        [$.BUTTON]: true,\n        [$.CAPTION]: true,\n        [$.CENTER]: true,\n        [$.COL]: true,\n        [$.COLGROUP]: true,\n        [$.DD]: true,\n        [$.DETAILS]: true,\n        [$.DIR]: true,\n        [$.DIV]: true,\n        [$.DL]: true,\n        [$.DT]: true,\n        [$.EMBED]: true,\n        [$.FIELDSET]: true,\n        [$.FIGCAPTION]: true,\n        [$.FIGURE]: true,\n        [$.FOOTER]: true,\n        [$.FORM]: true,\n        [$.FRAME]: true,\n        [$.FRAMESET]: true,\n        [$.H1]: true,\n        [$.H2]: true,\n        [$.H3]: true,\n        [$.H4]: true,\n        [$.H5]: true,\n        [$.H6]: true,\n        [$.HEAD]: true,\n        [$.HEADER]: true,\n        [$.HGROUP]: true,\n        [$.HR]: true,\n        [$.HTML]: true,\n        [$.IFRAME]: true,\n        [$.IMG]: true,\n        [$.INPUT]: true,\n        [$.LI]: true,\n        [$.LINK]: true,\n        [$.LISTING]: true,\n        [$.MAIN]: true,\n        [$.MARQUEE]: true,\n        [$.MENU]: true,\n        [$.META]: true,\n        [$.NAV]: true,\n        [$.NOEMBED]: true,\n        [$.NOFRAMES]: true,\n        [$.NOSCRIPT]: true,\n        [$.OBJECT]: true,\n        [$.OL]: true,\n        [$.P]: true,\n        [$.PARAM]: true,\n        [$.PLAINTEXT]: true,\n        [$.PRE]: true,\n        [$.SCRIPT]: true,\n        [$.SECTION]: true,\n        [$.SELECT]: true,\n        [$.SOURCE]: true,\n        [$.STYLE]: true,\n        [$.SUMMARY]: true,\n        [$.TABLE]: true,\n        [$.TBODY]: true,\n        [$.TD]: true,\n        [$.TEMPLATE]: true,\n        [$.TEXTAREA]: true,\n        [$.TFOOT]: true,\n        [$.TH]: true,\n        [$.THEAD]: true,\n        [$.TITLE]: true,\n        [$.TR]: true,\n        [$.TRACK]: true,\n        [$.UL]: true,\n        [$.WBR]: true,\n        [$.XMP]: true\n    },\n    [NS.MATHML]: {\n        [$.MI]: true,\n        [$.MO]: true,\n        [$.MN]: true,\n        [$.MS]: true,\n        [$.MTEXT]: true,\n        [$.ANNOTATION_XML]: true\n    },\n    [NS.SVG]: {\n        [$.TITLE]: true,\n        [$.FOREIGN_OBJECT]: true,\n        [$.DESC]: true\n    }\n};\n","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n    0xfffe,\n    0xffff,\n    0x1fffe,\n    0x1ffff,\n    0x2fffe,\n    0x2ffff,\n    0x3fffe,\n    0x3ffff,\n    0x4fffe,\n    0x4ffff,\n    0x5fffe,\n    0x5ffff,\n    0x6fffe,\n    0x6ffff,\n    0x7fffe,\n    0x7ffff,\n    0x8fffe,\n    0x8ffff,\n    0x9fffe,\n    0x9ffff,\n    0xafffe,\n    0xaffff,\n    0xbfffe,\n    0xbffff,\n    0xcfffe,\n    0xcffff,\n    0xdfffe,\n    0xdffff,\n    0xefffe,\n    0xeffff,\n    0xffffe,\n    0xfffff,\n    0x10fffe,\n    0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n    EOF: -1,\n    NULL: 0x00,\n    TABULATION: 0x09,\n    CARRIAGE_RETURN: 0x0d,\n    LINE_FEED: 0x0a,\n    FORM_FEED: 0x0c,\n    SPACE: 0x20,\n    EXCLAMATION_MARK: 0x21,\n    QUOTATION_MARK: 0x22,\n    NUMBER_SIGN: 0x23,\n    AMPERSAND: 0x26,\n    APOSTROPHE: 0x27,\n    HYPHEN_MINUS: 0x2d,\n    SOLIDUS: 0x2f,\n    DIGIT_0: 0x30,\n    DIGIT_9: 0x39,\n    SEMICOLON: 0x3b,\n    LESS_THAN_SIGN: 0x3c,\n    EQUALS_SIGN: 0x3d,\n    GREATER_THAN_SIGN: 0x3e,\n    QUESTION_MARK: 0x3f,\n    LATIN_CAPITAL_A: 0x41,\n    LATIN_CAPITAL_F: 0x46,\n    LATIN_CAPITAL_X: 0x58,\n    LATIN_CAPITAL_Z: 0x5a,\n    RIGHT_SQUARE_BRACKET: 0x5d,\n    GRAVE_ACCENT: 0x60,\n    LATIN_SMALL_A: 0x61,\n    LATIN_SMALL_F: 0x66,\n    LATIN_SMALL_X: 0x78,\n    LATIN_SMALL_Z: 0x7a,\n    REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n    DASH_DASH_STRING: [0x2d, 0x2d], //--\n    DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n    CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n    SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n    PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n    SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n    return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n    return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n    return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n    return (\n        (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f)\n    );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n    return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n    constructor(host, opts) {\n        super(host);\n\n        this.posTracker = null;\n        this.onParseError = opts.onParseError;\n    }\n\n    _setErrorLocation(err) {\n        err.startLine = err.endLine = this.posTracker.line;\n        err.startCol = err.endCol = this.posTracker.col;\n        err.startOffset = err.endOffset = this.posTracker.offset;\n    }\n\n    _reportError(code) {\n        const err = {\n            code: code,\n            startLine: -1,\n            startCol: -1,\n            startOffset: -1,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1\n        };\n\n        this._setErrorLocation(err);\n        this.onParseError(err);\n    }\n\n    _getOverriddenMethods(mxn) {\n        return {\n            _err(code) {\n                mxn._reportError(code);\n            }\n        };\n    }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n    constructor(parser, opts) {\n        super(parser, opts);\n\n        this.opts = opts;\n        this.ctLoc = null;\n        this.locBeforeToken = false;\n    }\n\n    _setErrorLocation(err) {\n        if (this.ctLoc) {\n            err.startLine = this.ctLoc.startLine;\n            err.startCol = this.ctLoc.startCol;\n            err.startOffset = this.ctLoc.startOffset;\n\n            err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n            err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n            err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n        }\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            _bootstrap(document, fragmentContext) {\n                orig._bootstrap.call(this, document, fragmentContext);\n\n                Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n                Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n            },\n\n            _processInputToken(token) {\n                mxn.ctLoc = token.location;\n\n                orig._processInputToken.call(this, token);\n            },\n\n            _err(code, options) {\n                mxn.locBeforeToken = options && options.beforeToken;\n                mxn._reportError(code);\n            }\n        };\n    }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n    constructor(preprocessor, opts) {\n        super(preprocessor, opts);\n\n        this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n        this.lastErrOffset = -1;\n    }\n\n    _reportError(code) {\n        //NOTE: avoid reporting error twice on advance/retreat\n        if (this.lastErrOffset !== this.posTracker.offset) {\n            this.lastErrOffset = this.posTracker.offset;\n            super._reportError(code);\n        }\n    }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n    constructor(tokenizer, opts) {\n        super(tokenizer, opts);\n\n        const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n        this.posTracker = preprocessorMixin.posTracker;\n    }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n    constructor(stack, opts) {\n        super(stack);\n\n        this.onItemPop = opts.onItemPop;\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            pop() {\n                mxn.onItemPop(this.current);\n                orig.pop.call(this);\n            },\n\n            popAllUpToHtmlElement() {\n                for (let i = this.stackTop; i > 0; i--) {\n                    mxn.onItemPop(this.items[i]);\n                }\n\n                orig.popAllUpToHtmlElement.call(this);\n            },\n\n            remove(element) {\n                mxn.onItemPop(this.current);\n                orig.remove.call(this, element);\n            }\n        };\n    }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n    constructor(parser) {\n        super(parser);\n\n        this.parser = parser;\n        this.treeAdapter = this.parser.treeAdapter;\n        this.posTracker = null;\n        this.lastStartTagToken = null;\n        this.lastFosterParentingLocation = null;\n        this.currentToken = null;\n    }\n\n    _setStartLocation(element) {\n        let loc = null;\n\n        if (this.lastStartTagToken) {\n            loc = Object.assign({}, this.lastStartTagToken.location);\n            loc.startTag = this.lastStartTagToken.location;\n        }\n\n        this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n    }\n\n    _setEndLocation(element, closingToken) {\n        const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n        if (loc) {\n            if (closingToken.location) {\n                const ctLoc = closingToken.location;\n                const tn = this.treeAdapter.getTagName(element);\n\n                // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n                // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n                const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n                const endLoc = {};\n                if (isClosingEndTag) {\n                    endLoc.endTag = Object.assign({}, ctLoc);\n                    endLoc.endLine = ctLoc.endLine;\n                    endLoc.endCol = ctLoc.endCol;\n                    endLoc.endOffset = ctLoc.endOffset;\n                } else {\n                    endLoc.endLine = ctLoc.startLine;\n                    endLoc.endCol = ctLoc.startCol;\n                    endLoc.endOffset = ctLoc.startOffset;\n                }\n\n                this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n            }\n        }\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            _bootstrap(document, fragmentContext) {\n                orig._bootstrap.call(this, document, fragmentContext);\n\n                mxn.lastStartTagToken = null;\n                mxn.lastFosterParentingLocation = null;\n                mxn.currentToken = null;\n\n                const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n                mxn.posTracker = tokenizerMixin.posTracker;\n\n                Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n                    onItemPop: function(element) {\n                        mxn._setEndLocation(element, mxn.currentToken);\n                    }\n                });\n            },\n\n            _runParsingLoop(scriptHandler) {\n                orig._runParsingLoop.call(this, scriptHandler);\n\n                // NOTE: generate location info for elements\n                // that remains on open element stack\n                for (let i = this.openElements.stackTop; i >= 0; i--) {\n                    mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n                }\n            },\n\n            //Token processing\n            _processTokenInForeignContent(token) {\n                mxn.currentToken = token;\n                orig._processTokenInForeignContent.call(this, token);\n            },\n\n            _processToken(token) {\n                mxn.currentToken = token;\n                orig._processToken.call(this, token);\n\n                //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n                //their end location explicitly.\n                const requireExplicitUpdate =\n                    token.type === Tokenizer.END_TAG_TOKEN &&\n                    (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n                if (requireExplicitUpdate) {\n                    for (let i = this.openElements.stackTop; i >= 0; i--) {\n                        const element = this.openElements.items[i];\n\n                        if (this.treeAdapter.getTagName(element) === token.tagName) {\n                            mxn._setEndLocation(element, token);\n                            break;\n                        }\n                    }\n                }\n            },\n\n            //Doctype\n            _setDocumentType(token) {\n                orig._setDocumentType.call(this, token);\n\n                const documentChildren = this.treeAdapter.getChildNodes(this.document);\n                const cnLength = documentChildren.length;\n\n                for (let i = 0; i < cnLength; i++) {\n                    const node = documentChildren[i];\n\n                    if (this.treeAdapter.isDocumentTypeNode(node)) {\n                        this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n                        break;\n                    }\n                }\n            },\n\n            //Elements\n            _attachElementToTree(element) {\n                //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n                //So we will use token location stored in this methods for the element.\n                mxn._setStartLocation(element);\n                mxn.lastStartTagToken = null;\n                orig._attachElementToTree.call(this, element);\n            },\n\n            _appendElement(token, namespaceURI) {\n                mxn.lastStartTagToken = token;\n                orig._appendElement.call(this, token, namespaceURI);\n            },\n\n            _insertElement(token, namespaceURI) {\n                mxn.lastStartTagToken = token;\n                orig._insertElement.call(this, token, namespaceURI);\n            },\n\n            _insertTemplate(token) {\n                mxn.lastStartTagToken = token;\n                orig._insertTemplate.call(this, token);\n\n                const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n                this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n            },\n\n            _insertFakeRootElement() {\n                orig._insertFakeRootElement.call(this);\n                this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n            },\n\n            //Comments\n            _appendCommentNode(token, parent) {\n                orig._appendCommentNode.call(this, token, parent);\n\n                const children = this.treeAdapter.getChildNodes(parent);\n                const commentNode = children[children.length - 1];\n\n                this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n            },\n\n            //Text\n            _findFosterParentingLocation() {\n                //NOTE: store last foster parenting location, so we will be able to find inserted text\n                //in case of foster parenting\n                mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n                return mxn.lastFosterParentingLocation;\n            },\n\n            _insertCharacters(token) {\n                orig._insertCharacters.call(this, token);\n\n                const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n                const parent =\n                    (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n                    this.openElements.currentTmplContent ||\n                    this.openElements.current;\n\n                const siblings = this.treeAdapter.getChildNodes(parent);\n\n                const textNodeIdx =\n                    hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n                        ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n                        : siblings.length - 1;\n\n                const textNode = siblings[textNodeIdx];\n\n                //NOTE: if we have location assigned by another token, then just update end position\n                const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n                if (tnLoc) {\n                    const { endLine, endCol, endOffset } = token.location;\n                    this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n                } else {\n                    this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n                }\n            }\n        };\n    }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n    constructor(tokenizer) {\n        super(tokenizer);\n\n        this.tokenizer = tokenizer;\n        this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n        this.currentAttrLocation = null;\n        this.ctLoc = null;\n    }\n\n    _getCurrentLocation() {\n        return {\n            startLine: this.posTracker.line,\n            startCol: this.posTracker.col,\n            startOffset: this.posTracker.offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1\n        };\n    }\n\n    _attachCurrentAttrLocationInfo() {\n        this.currentAttrLocation.endLine = this.posTracker.line;\n        this.currentAttrLocation.endCol = this.posTracker.col;\n        this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n        const currentToken = this.tokenizer.currentToken;\n        const currentAttr = this.tokenizer.currentAttr;\n\n        if (!currentToken.location.attrs) {\n            currentToken.location.attrs = Object.create(null);\n        }\n\n        currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        const methods = {\n            _createStartTagToken() {\n                orig._createStartTagToken.call(this);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createEndTagToken() {\n                orig._createEndTagToken.call(this);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createCommentToken() {\n                orig._createCommentToken.call(this);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createDoctypeToken(initialName) {\n                orig._createDoctypeToken.call(this, initialName);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createCharacterToken(type, ch) {\n                orig._createCharacterToken.call(this, type, ch);\n                this.currentCharacterToken.location = mxn.ctLoc;\n            },\n\n            _createEOFToken() {\n                orig._createEOFToken.call(this);\n                this.currentToken.location = mxn._getCurrentLocation();\n            },\n\n            _createAttr(attrNameFirstCh) {\n                orig._createAttr.call(this, attrNameFirstCh);\n                mxn.currentAttrLocation = mxn._getCurrentLocation();\n            },\n\n            _leaveAttrName(toState) {\n                orig._leaveAttrName.call(this, toState);\n                mxn._attachCurrentAttrLocationInfo();\n            },\n\n            _leaveAttrValue(toState) {\n                orig._leaveAttrValue.call(this, toState);\n                mxn._attachCurrentAttrLocationInfo();\n            },\n\n            _emitCurrentToken() {\n                const ctLoc = this.currentToken.location;\n\n                //NOTE: if we have pending character token make it's end location equal to the\n                //current token's start location.\n                if (this.currentCharacterToken) {\n                    this.currentCharacterToken.location.endLine = ctLoc.startLine;\n                    this.currentCharacterToken.location.endCol = ctLoc.startCol;\n                    this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n                }\n\n                if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n                    ctLoc.endLine = ctLoc.startLine;\n                    ctLoc.endCol = ctLoc.startCol;\n                    ctLoc.endOffset = ctLoc.startOffset;\n                } else {\n                    ctLoc.endLine = mxn.posTracker.line;\n                    ctLoc.endCol = mxn.posTracker.col + 1;\n                    ctLoc.endOffset = mxn.posTracker.offset + 1;\n                }\n\n                orig._emitCurrentToken.call(this);\n            },\n\n            _emitCurrentCharacterToken() {\n                const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n                //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n                //then set it's location at the current preprocessor position.\n                //We don't need to increment preprocessor position, since character token\n                //emission is always forced by the start of the next character token here.\n                //So, we already have advanced position.\n                if (ctLoc && ctLoc.endOffset === -1) {\n                    ctLoc.endLine = mxn.posTracker.line;\n                    ctLoc.endCol = mxn.posTracker.col;\n                    ctLoc.endOffset = mxn.posTracker.offset;\n                }\n\n                orig._emitCurrentCharacterToken.call(this);\n            }\n        };\n\n        //NOTE: patch initial states for each mode to obtain token start position\n        Object.keys(Tokenizer.MODE).forEach(modeName => {\n            const state = Tokenizer.MODE[modeName];\n\n            methods[state] = function(cp) {\n                mxn.ctLoc = mxn._getCurrentLocation();\n                orig[state].call(this, cp);\n            };\n        });\n\n        return methods;\n    }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n    constructor(preprocessor) {\n        super(preprocessor);\n\n        this.preprocessor = preprocessor;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n\n        this.offset = 0;\n        this.col = 0;\n        this.line = 1;\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            advance() {\n                const pos = this.pos + 1;\n                const ch = this.html[pos];\n\n                //NOTE: LF should be in the last column of the line\n                if (mxn.isEol) {\n                    mxn.isEol = false;\n                    mxn.line++;\n                    mxn.lineStartPos = pos;\n                }\n\n                if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n                    mxn.isEol = true;\n                }\n\n                mxn.col = pos - mxn.lineStartPos + 1;\n                mxn.offset = mxn.droppedBufferSize + pos;\n\n                return orig.advance.call(this);\n            },\n\n            retreat() {\n                orig.retreat.call(this);\n\n                mxn.isEol = false;\n                mxn.col = this.pos - mxn.lineStartPos + 1;\n            },\n\n            dropParsedChunk() {\n                const prevPos = this.pos;\n\n                orig.dropParsedChunk.call(this);\n\n                const reduction = prevPos - this.pos;\n\n                mxn.lineStartPos -= reduction;\n                mxn.droppedBufferSize += reduction;\n                mxn.offset = mxn.droppedBufferSize + this.pos;\n            }\n        };\n    }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n    constructor(treeAdapter) {\n        this.length = 0;\n        this.entries = [];\n        this.treeAdapter = treeAdapter;\n        this.bookmark = null;\n    }\n\n    //Noah Ark's condition\n    //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n    //lightweight heuristics without thorough attributes check.\n    _getNoahArkConditionCandidates(newElement) {\n        const candidates = [];\n\n        if (this.length >= NOAH_ARK_CAPACITY) {\n            const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n            const neTagName = this.treeAdapter.getTagName(newElement);\n            const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n            for (let i = this.length - 1; i >= 0; i--) {\n                const entry = this.entries[i];\n\n                if (entry.type === FormattingElementList.MARKER_ENTRY) {\n                    break;\n                }\n\n                const element = entry.element;\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n\n                const isCandidate =\n                    this.treeAdapter.getTagName(element) === neTagName &&\n                    this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n                    elementAttrs.length === neAttrsLength;\n\n                if (isCandidate) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n\n        return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n    }\n\n    _ensureNoahArkCondition(newElement) {\n        const candidates = this._getNoahArkConditionCandidates(newElement);\n        let cLength = candidates.length;\n\n        if (cLength) {\n            const neAttrs = this.treeAdapter.getAttrList(newElement);\n            const neAttrsLength = neAttrs.length;\n            const neAttrsMap = Object.create(null);\n\n            //NOTE: build attrs map for the new element so we can perform fast lookups\n            for (let i = 0; i < neAttrsLength; i++) {\n                const neAttr = neAttrs[i];\n\n                neAttrsMap[neAttr.name] = neAttr.value;\n            }\n\n            for (let i = 0; i < neAttrsLength; i++) {\n                for (let j = 0; j < cLength; j++) {\n                    const cAttr = candidates[j].attrs[i];\n\n                    if (neAttrsMap[cAttr.name] !== cAttr.value) {\n                        candidates.splice(j, 1);\n                        cLength--;\n                    }\n\n                    if (candidates.length < NOAH_ARK_CAPACITY) {\n                        return;\n                    }\n                }\n            }\n\n            //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n            for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n                this.entries.splice(candidates[i].idx, 1);\n                this.length--;\n            }\n        }\n    }\n\n    //Mutations\n    insertMarker() {\n        this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n        this.length++;\n    }\n\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n\n        this.entries.push({\n            type: FormattingElementList.ELEMENT_ENTRY,\n            element: element,\n            token: token\n        });\n\n        this.length++;\n    }\n\n    insertElementAfterBookmark(element, token) {\n        let bookmarkIdx = this.length - 1;\n\n        for (; bookmarkIdx >= 0; bookmarkIdx--) {\n            if (this.entries[bookmarkIdx] === this.bookmark) {\n                break;\n            }\n        }\n\n        this.entries.splice(bookmarkIdx + 1, 0, {\n            type: FormattingElementList.ELEMENT_ENTRY,\n            element: element,\n            token: token\n        });\n\n        this.length++;\n    }\n\n    removeEntry(entry) {\n        for (let i = this.length - 1; i >= 0; i--) {\n            if (this.entries[i] === entry) {\n                this.entries.splice(i, 1);\n                this.length--;\n                break;\n            }\n        }\n    }\n\n    clearToLastMarker() {\n        while (this.length) {\n            const entry = this.entries.pop();\n\n            this.length--;\n\n            if (entry.type === FormattingElementList.MARKER_ENTRY) {\n                break;\n            }\n        }\n    }\n\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        for (let i = this.length - 1; i >= 0; i--) {\n            const entry = this.entries[i];\n\n            if (entry.type === FormattingElementList.MARKER_ENTRY) {\n                return null;\n            }\n\n            if (this.treeAdapter.getTagName(entry.element) === tagName) {\n                return entry;\n            }\n        }\n\n        return null;\n    }\n\n    getElementEntry(element) {\n        for (let i = this.length - 1; i >= 0; i--) {\n            const entry = this.entries[i];\n\n            if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n                return entry;\n            }\n        }\n\n        return null;\n    }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    onParseError: null,\n    treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n    [$.TR]: IN_ROW_MODE,\n    [$.TBODY]: IN_TABLE_BODY_MODE,\n    [$.THEAD]: IN_TABLE_BODY_MODE,\n    [$.TFOOT]: IN_TABLE_BODY_MODE,\n    [$.CAPTION]: IN_CAPTION_MODE,\n    [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n    [$.TABLE]: IN_TABLE_MODE,\n    [$.BODY]: IN_BODY_MODE,\n    [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n    [$.CAPTION]: IN_TABLE_MODE,\n    [$.COLGROUP]: IN_TABLE_MODE,\n    [$.TBODY]: IN_TABLE_MODE,\n    [$.TFOOT]: IN_TABLE_MODE,\n    [$.THEAD]: IN_TABLE_MODE,\n    [$.COL]: IN_COLUMN_GROUP_MODE,\n    [$.TR]: IN_TABLE_BODY_MODE,\n    [$.TD]: IN_ROW_MODE,\n    [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n    [INITIAL_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n        [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n        [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n        [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n    },\n    [BEFORE_HTML_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n        [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n        [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n    },\n    [BEFORE_HEAD_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n        [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n        [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n    },\n    [IN_HEAD_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n        [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n        [Tokenizer.EOF_TOKEN]: tokenInHead\n    },\n    [IN_HEAD_NO_SCRIPT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n        [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n        [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n    },\n    [AFTER_HEAD_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n        [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n        [Tokenizer.EOF_TOKEN]: tokenAfterHead\n    },\n    [IN_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n        [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [TEXT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n        [Tokenizer.END_TAG_TOKEN]: endTagInText,\n        [Tokenizer.EOF_TOKEN]: eofInText\n    },\n    [IN_TABLE_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n        [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_TABLE_TEXT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n        [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n        [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n        [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n        [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n        [Tokenizer.EOF_TOKEN]: tokenInTableText\n    },\n    [IN_CAPTION_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n        [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_COLUMN_GROUP_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n        [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_TABLE_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n        [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_ROW_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n        [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_CELL_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n        [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_SELECT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n        [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_SELECT_IN_TABLE_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n        [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_TEMPLATE_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n        [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n        [Tokenizer.EOF_TOKEN]: eofInTemplate\n    },\n    [AFTER_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n        [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [IN_FRAMESET_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n        [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [AFTER_FRAMESET_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n        [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [AFTER_AFTER_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n        [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [AFTER_AFTER_FRAMESET_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n        [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    }\n};\n\n//Parser\nclass Parser {\n    constructor(options) {\n        this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n        this.treeAdapter = this.options.treeAdapter;\n        this.pendingScript = null;\n\n        if (this.options.sourceCodeLocationInfo) {\n            Mixin.install(this, LocationInfoParserMixin);\n        }\n\n        if (this.options.onParseError) {\n            Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n        }\n    }\n\n    // API\n    parse(html) {\n        const document = this.treeAdapter.createDocument();\n\n        this._bootstrap(document, null);\n        this.tokenizer.write(html, true);\n        this._runParsingLoop(null);\n\n        return document;\n    }\n\n    parseFragment(html, fragmentContext) {\n        //NOTE: use <template> element as a fragment context if context element was not provided,\n        //so we will parse in \"forgiving\" manner\n        if (!fragmentContext) {\n            fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n        }\n\n        //NOTE: create fake element which will be used as 'document' for fragment parsing.\n        //This is important for jsdom there 'document' can't be recreated, therefore\n        //fragment parsing causes messing of the main `document`.\n        const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n        this._bootstrap(documentMock, fragmentContext);\n\n        if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n            this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n        }\n\n        this._initTokenizerForFragmentParsing();\n        this._insertFakeRootElement();\n        this._resetInsertionMode();\n        this._findFormInFragmentContext();\n        this.tokenizer.write(html, true);\n        this._runParsingLoop(null);\n\n        const rootElement = this.treeAdapter.getFirstChild(documentMock);\n        const fragment = this.treeAdapter.createDocumentFragment();\n\n        this._adoptNodes(rootElement, fragment);\n\n        return fragment;\n    }\n\n    //Bootstrap parser\n    _bootstrap(document, fragmentContext) {\n        this.tokenizer = new Tokenizer(this.options);\n\n        this.stopped = false;\n\n        this.insertionMode = INITIAL_MODE;\n        this.originalInsertionMode = '';\n\n        this.document = document;\n        this.fragmentContext = fragmentContext;\n\n        this.headElement = null;\n        this.formElement = null;\n\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n        this.tmplInsertionModeStack = [];\n        this.tmplInsertionModeStackTop = -1;\n        this.currentTmplInsertionMode = null;\n\n        this.pendingCharacterTokens = [];\n        this.hasNonWhitespacePendingCharacterToken = false;\n\n        this.framesetOk = true;\n        this.skipNextNewLine = false;\n        this.fosterParentingEnabled = false;\n    }\n\n    //Errors\n    _err() {\n        // NOTE: err reporting is noop by default. Enabled by mixin.\n    }\n\n    //Parsing loop\n    _runParsingLoop(scriptHandler) {\n        while (!this.stopped) {\n            this._setupTokenizerCDATAMode();\n\n            const token = this.tokenizer.getNextToken();\n\n            if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n                break;\n            }\n\n            if (this.skipNextNewLine) {\n                this.skipNextNewLine = false;\n\n                if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n                    if (token.chars.length === 1) {\n                        continue;\n                    }\n\n                    token.chars = token.chars.substr(1);\n                }\n            }\n\n            this._processInputToken(token);\n\n            if (scriptHandler && this.pendingScript) {\n                break;\n            }\n        }\n    }\n\n    runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n        this._runParsingLoop(scriptHandler);\n\n        if (scriptHandler && this.pendingScript) {\n            const script = this.pendingScript;\n\n            this.pendingScript = null;\n\n            scriptHandler(script);\n\n            return;\n        }\n\n        if (writeCallback) {\n            writeCallback();\n        }\n    }\n\n    //Text parsing\n    _setupTokenizerCDATAMode() {\n        const current = this._getAdjustedCurrentElement();\n\n        this.tokenizer.allowCDATA =\n            current &&\n            current !== this.document &&\n            this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n            !this._isIntegrationPoint(current);\n    }\n\n    _switchToTextParsing(currentToken, nextTokenizerState) {\n        this._insertElement(currentToken, NS.HTML);\n        this.tokenizer.state = nextTokenizerState;\n        this.originalInsertionMode = this.insertionMode;\n        this.insertionMode = TEXT_MODE;\n    }\n\n    switchToPlaintextParsing() {\n        this.insertionMode = TEXT_MODE;\n        this.originalInsertionMode = IN_BODY_MODE;\n        this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n    }\n\n    //Fragment parsing\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n\n        do {\n            if (this.treeAdapter.getTagName(node) === $.FORM) {\n                this.formElement = node;\n                break;\n            }\n\n            node = this.treeAdapter.getParentNode(node);\n        } while (node);\n    }\n\n    _initTokenizerForFragmentParsing() {\n        if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n            const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n            if (tn === $.TITLE || tn === $.TEXTAREA) {\n                this.tokenizer.state = Tokenizer.MODE.RCDATA;\n            } else if (\n                tn === $.STYLE ||\n                tn === $.XMP ||\n                tn === $.IFRAME ||\n                tn === $.NOEMBED ||\n                tn === $.NOFRAMES ||\n                tn === $.NOSCRIPT\n            ) {\n                this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n            } else if (tn === $.SCRIPT) {\n                this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n            } else if (tn === $.PLAINTEXT) {\n                this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n            }\n        }\n    }\n\n    //Tree mutation\n    _setDocumentType(token) {\n        const name = token.name || '';\n        const publicId = token.publicId || '';\n        const systemId = token.systemId || '';\n\n        this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n    }\n\n    _attachElementToTree(element) {\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        } else {\n            const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n            this.treeAdapter.appendChild(parent, element);\n        }\n    }\n\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n        this._attachElementToTree(element);\n    }\n\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n        this._attachElementToTree(element);\n        this.openElements.push(element);\n    }\n\n    _insertFakeElement(tagName) {\n        const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n        this._attachElementToTree(element);\n        this.openElements.push(element);\n    }\n\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl);\n        this.openElements.push(tmpl);\n    }\n\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element);\n    }\n\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n        this.treeAdapter.appendChild(parent, commentNode);\n    }\n\n    _insertCharacters(token) {\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentText(token.chars);\n        } else {\n            const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n    }\n\n    _adoptNodes(donor, recipient) {\n        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n            this.treeAdapter.detachNode(child);\n            this.treeAdapter.appendChild(recipient, child);\n        }\n    }\n\n    //Token processing\n    _shouldProcessTokenInForeignContent(token) {\n        const current = this._getAdjustedCurrentElement();\n\n        if (!current || current === this.document) {\n            return false;\n        }\n\n        const ns = this.treeAdapter.getNamespaceURI(current);\n\n        if (ns === NS.HTML) {\n            return false;\n        }\n\n        if (\n            this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n            ns === NS.MATHML &&\n            token.type === Tokenizer.START_TAG_TOKEN &&\n            token.tagName === $.SVG\n        ) {\n            return false;\n        }\n\n        const isCharacterToken =\n            token.type === Tokenizer.CHARACTER_TOKEN ||\n            token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n            token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n        const isMathMLTextStartTag =\n            token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n        if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n            return false;\n        }\n\n        if (\n            (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n            this._isIntegrationPoint(current, NS.HTML)\n        ) {\n            return false;\n        }\n\n        return token.type !== Tokenizer.EOF_TOKEN;\n    }\n\n    _processToken(token) {\n        TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n    }\n\n    _processTokenInBodyMode(token) {\n        TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n    }\n\n    _processTokenInForeignContent(token) {\n        if (token.type === Tokenizer.CHARACTER_TOKEN) {\n            characterInForeignContent(this, token);\n        } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n            nullCharacterInForeignContent(this, token);\n        } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n            insertCharacters(this, token);\n        } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n            appendComment(this, token);\n        } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n            startTagInForeignContent(this, token);\n        } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n            endTagInForeignContent(this, token);\n        }\n    }\n\n    _processInputToken(token) {\n        if (this._shouldProcessTokenInForeignContent(token)) {\n            this._processTokenInForeignContent(token);\n        } else {\n            this._processToken(token);\n        }\n\n        if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n            this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n\n    //Integration points\n    _isIntegrationPoint(element, foreignNS) {\n        const tn = this.treeAdapter.getTagName(element);\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n\n        return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n    }\n\n    //Active formatting elements reconstruction\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.length;\n\n        if (listLength) {\n            let unopenIdx = listLength;\n            let entry = null;\n\n            do {\n                unopenIdx--;\n                entry = this.activeFormattingElements.entries[unopenIdx];\n\n                if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n                    unopenIdx++;\n                    break;\n                }\n            } while (unopenIdx > 0);\n\n            for (let i = unopenIdx; i < listLength; i++) {\n                entry = this.activeFormattingElements.entries[i];\n                this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n                entry.element = this.openElements.current;\n            }\n        }\n    }\n\n    //Close elements\n    _closeTableCell() {\n        this.openElements.generateImpliedEndTags();\n        this.openElements.popUntilTableCellPopped();\n        this.activeFormattingElements.clearToLastMarker();\n        this.insertionMode = IN_ROW_MODE;\n    }\n\n    _closePElement() {\n        this.openElements.generateImpliedEndTagsWithExclusion($.P);\n        this.openElements.popUntilTagNamePopped($.P);\n    }\n\n    //Insertion modes\n    _resetInsertionMode() {\n        for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n            let element = this.openElements.items[i];\n\n            if (i === 0) {\n                last = true;\n\n                if (this.fragmentContext) {\n                    element = this.fragmentContext;\n                }\n            }\n\n            const tn = this.treeAdapter.getTagName(element);\n            const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n            if (newInsertionMode) {\n                this.insertionMode = newInsertionMode;\n                break;\n            } else if (!last && (tn === $.TD || tn === $.TH)) {\n                this.insertionMode = IN_CELL_MODE;\n                break;\n            } else if (!last && tn === $.HEAD) {\n                this.insertionMode = IN_HEAD_MODE;\n                break;\n            } else if (tn === $.SELECT) {\n                this._resetInsertionModeForSelect(i);\n                break;\n            } else if (tn === $.TEMPLATE) {\n                this.insertionMode = this.currentTmplInsertionMode;\n                break;\n            } else if (tn === $.HTML) {\n                this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n                break;\n            } else if (last) {\n                this.insertionMode = IN_BODY_MODE;\n                break;\n            }\n        }\n    }\n\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const ancestor = this.openElements.items[i];\n                const tn = this.treeAdapter.getTagName(ancestor);\n\n                if (tn === $.TEMPLATE) {\n                    break;\n                } else if (tn === $.TABLE) {\n                    this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n                    return;\n                }\n            }\n        }\n\n        this.insertionMode = IN_SELECT_MODE;\n    }\n\n    _pushTmplInsertionMode(mode) {\n        this.tmplInsertionModeStack.push(mode);\n        this.tmplInsertionModeStackTop++;\n        this.currentTmplInsertionMode = mode;\n    }\n\n    _popTmplInsertionMode() {\n        this.tmplInsertionModeStack.pop();\n        this.tmplInsertionModeStackTop--;\n        this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n    }\n\n    //Foster parenting\n    _isElementCausesFosterParenting(element) {\n        const tn = this.treeAdapter.getTagName(element);\n\n        return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n    }\n\n    _shouldFosterParentOnInsertion() {\n        return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n    }\n\n    _findFosterParentingLocation() {\n        const location = {\n            parent: null,\n            beforeElement: null\n        };\n\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            const tn = this.treeAdapter.getTagName(openElement);\n            const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n            if (tn === $.TEMPLATE && ns === NS.HTML) {\n                location.parent = this.treeAdapter.getTemplateContent(openElement);\n                break;\n            } else if (tn === $.TABLE) {\n                location.parent = this.treeAdapter.getParentNode(openElement);\n\n                if (location.parent) {\n                    location.beforeElement = openElement;\n                } else {\n                    location.parent = this.openElements.items[i - 1];\n                }\n\n                break;\n            }\n        }\n\n        if (!location.parent) {\n            location.parent = this.openElements.items[0];\n        }\n\n        return location;\n    }\n\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        } else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n\n    _fosterParentText(chars) {\n        const location = this._findFosterParentingLocation();\n\n        if (location.beforeElement) {\n            this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n        } else {\n            this.treeAdapter.insertText(location.parent, chars);\n        }\n    }\n\n    //Special elements\n    _isSpecialElement(element) {\n        const tn = this.treeAdapter.getTagName(element);\n        const ns = this.treeAdapter.getNamespaceURI(element);\n\n        return HTML.SPECIAL_ELEMENTS[ns][tn];\n    }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        } else if (!p.openElements.hasInScope(token.tagName)) {\n            formattingElementEntry = null;\n        }\n    } else {\n        genericEndTagInBody(p, token);\n    }\n\n    return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const element = p.openElements.items[i];\n\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n\n        if (p._isSpecialElement(element)) {\n            furthestBlock = element;\n        }\n    }\n\n    if (!furthestBlock) {\n        p.openElements.popUntilElementPopped(formattingElementEntry.element);\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n\n    return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n\n            p.openElements.remove(element);\n        } else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n\n    return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n\n    return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    if (p._isElementCausesFosterParenting(commonAncestor)) {\n        p._fosterParentElement(lastElement);\n    } else {\n        const tn = p.treeAdapter.getTagName(commonAncestor);\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n        if (tn === $.TEMPLATE && ns === NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const token = formattingElementEntry.token;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    let formattingElementEntry;\n\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n        if (!formattingElementEntry) {\n            break;\n        }\n\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n        if (!furthestBlock) {\n            break;\n        }\n\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n        p.treeAdapter.detachNode(lastElement);\n        aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n    //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n    p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n    p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n    p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n\n    const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n    if (!doctype.isConforming(token)) {\n        p._err(ERR.nonConformingDoctype);\n    }\n\n    p.treeAdapter.setDocumentMode(p.document, mode);\n\n    p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n    p._err(ERR.missingDoctype, { beforeToken: true });\n    p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = BEFORE_HTML_MODE;\n    p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagName === $.HTML) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = BEFORE_HEAD_MODE;\n    } else {\n        tokenBeforeHtml(p, token);\n    }\n}\n\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\n\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = BEFORE_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.HEAD) {\n        p._insertElement(token, NS.HTML);\n        p.headElement = p.openElements.current;\n        p.insertionMode = IN_HEAD_MODE;\n    } else {\n        tokenBeforeHead(p, token);\n    }\n}\n\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenBeforeHead(p, token);\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement($.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = IN_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n        p._appendElement(token, NS.HTML);\n        token.ackSelfClosing = true;\n    } else if (tn === $.TITLE) {\n        p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n    } else if (tn === $.NOSCRIPT) {\n        if (p.options.scriptingEnabled) {\n            p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n        } else {\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n        }\n    } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n        p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n    } else if (tn === $.SCRIPT) {\n        p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n    } else if (tn === $.TEMPLATE) {\n        p._insertTemplate(token, NS.HTML);\n        p.activeFormattingElements.insertMarker();\n        p.framesetOk = false;\n        p.insertionMode = IN_TEMPLATE_MODE;\n        p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n    } else if (tn === $.HEAD) {\n        p._err(ERR.misplacedStartTagForHeadElement);\n    } else {\n        tokenInHead(p, token);\n    }\n}\n\nfunction endTagInHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HEAD) {\n        p.openElements.pop();\n        p.insertionMode = AFTER_HEAD_MODE;\n    } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n        tokenInHead(p, token);\n    } else if (tn === $.TEMPLATE) {\n        if (p.openElements.tmplCount > 0) {\n            p.openElements.generateImpliedEndTagsThoroughly();\n\n            if (p.openElements.currentTagName !== $.TEMPLATE) {\n                p._err(ERR.closingOfElementWithOpenChildElements);\n            }\n\n            p.openElements.popUntilTagNamePopped($.TEMPLATE);\n            p.activeFormattingElements.clearToLastMarker();\n            p._popTmplInsertionMode();\n            p._resetInsertionMode();\n        } else {\n            p._err(ERR.endTagWithoutMatchingOpenElement);\n        }\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = AFTER_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (\n        tn === $.BASEFONT ||\n        tn === $.BGSOUND ||\n        tn === $.HEAD ||\n        tn === $.LINK ||\n        tn === $.META ||\n        tn === $.NOFRAMES ||\n        tn === $.STYLE\n    ) {\n        startTagInHead(p, token);\n    } else if (tn === $.NOSCRIPT) {\n        p._err(ERR.nestedNoscriptInHead);\n    } else {\n        tokenInHeadNoScript(p, token);\n    }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.NOSCRIPT) {\n        p.openElements.pop();\n        p.insertionMode = IN_HEAD_MODE;\n    } else if (tn === $.BR) {\n        tokenInHeadNoScript(p, token);\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n    const errCode =\n        token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n    p._err(errCode);\n    p.openElements.pop();\n    p.insertionMode = IN_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.BODY) {\n        p._insertElement(token, NS.HTML);\n        p.framesetOk = false;\n        p.insertionMode = IN_BODY_MODE;\n    } else if (tn === $.FRAMESET) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_FRAMESET_MODE;\n    } else if (\n        tn === $.BASE ||\n        tn === $.BASEFONT ||\n        tn === $.BGSOUND ||\n        tn === $.LINK ||\n        tn === $.META ||\n        tn === $.NOFRAMES ||\n        tn === $.SCRIPT ||\n        tn === $.STYLE ||\n        tn === $.TEMPLATE ||\n        tn === $.TITLE\n    ) {\n        p._err(ERR.abandonedHeadElementChild);\n        p.openElements.push(p.headElement);\n        startTagInHead(p, token);\n        p.openElements.remove(p.headElement);\n    } else if (tn === $.HEAD) {\n        p._err(ERR.misplacedStartTagForHeadElement);\n    } else {\n        tokenAfterHead(p, token);\n    }\n}\n\nfunction endTagAfterHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenAfterHead(p, token);\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement($.BODY);\n    p.insertionMode = IN_BODY_MODE;\n    p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\n\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\n\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_FRAMESET_MODE;\n    }\n}\n\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    const tn = p.openElements.currentTagName;\n\n    if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n        p.openElements.pop();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope($.P)) {\n            p._closePElement();\n        }\n\n        p._insertElement(token, NS.HTML);\n\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\n\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n\n    const tn = token.tagName;\n\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const element = p.openElements.items[i];\n        const elementTn = p.treeAdapter.getTagName(element);\n        let closeTn = null;\n\n        if (tn === $.LI && elementTn === $.LI) {\n            closeTn = $.LI;\n        } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n            closeTn = elementTn;\n        }\n\n        if (closeTn) {\n            p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n            p.openElements.popUntilTagNamePopped(closeTn);\n            break;\n        }\n\n        if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n            break;\n        }\n    }\n\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n    p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped($.BUTTON);\n    }\n\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n\n    if (p.openElements.hasInScope($.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n    if (\n        p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n        p.openElements.hasInButtonScope($.P)\n    ) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n\n    const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n    if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n        p.framesetOk = false;\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, NS.HTML);\n    token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n    token.tagName = $.IMG;\n    areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = Tokenizer.MODE.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n\n    if (\n        p.insertionMode === IN_TABLE_MODE ||\n        p.insertionMode === IN_CAPTION_MODE ||\n        p.insertionMode === IN_TABLE_BODY_MODE ||\n        p.insertionMode === IN_ROW_MODE ||\n        p.insertionMode === IN_CELL_MODE\n    ) {\n        p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n    } else {\n        p.insertionMode = IN_SELECT_MODE;\n    }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagName === $.OPTION) {\n        p.openElements.pop();\n    }\n\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n\n    foreignContent.adjustTokenMathMLAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n\n    if (token.selfClosing) {\n        p._appendElement(token, NS.MATHML);\n    } else {\n        p._insertElement(token, NS.MATHML);\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n\n    foreignContent.adjustTokenSVGAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n\n    if (token.selfClosing) {\n        p._appendElement(token, NS.SVG);\n    } else {\n        p._insertElement(token, NS.SVG);\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n    const tn = token.tagName;\n\n    switch (tn.length) {\n        case 1:\n            if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.P) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.A) {\n                aStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 2:\n            if (tn === $.DL || tn === $.OL || tn === $.UL) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n                numberedHeaderStartTagInBody(p, token);\n            } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n                listItemStartTagInBody(p, token);\n            } else if (tn === $.EM || tn === $.TT) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.BR) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.HR) {\n                hrStartTagInBody(p, token);\n            } else if (tn === $.RB) {\n                rbStartTagInBody(p, token);\n            } else if (tn === $.RT || tn === $.RP) {\n                rtStartTagInBody(p, token);\n            } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 3:\n            if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.PRE) {\n                preStartTagInBody(p, token);\n            } else if (tn === $.BIG) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.IMG || tn === $.WBR) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.XMP) {\n                xmpStartTagInBody(p, token);\n            } else if (tn === $.SVG) {\n                svgStartTagInBody(p, token);\n            } else if (tn === $.RTC) {\n                rbStartTagInBody(p, token);\n            } else if (tn !== $.COL) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.HTML) {\n                htmlStartTagInBody(p, token);\n            } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n                startTagInHead(p, token);\n            } else if (tn === $.BODY) {\n                bodyStartTagInBody(p, token);\n            } else if (tn === $.MAIN || tn === $.MENU) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.FORM) {\n                formStartTagInBody(p, token);\n            } else if (tn === $.CODE || tn === $.FONT) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.NOBR) {\n                nobrStartTagInBody(p, token);\n            } else if (tn === $.AREA) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.MATH) {\n                mathStartTagInBody(p, token);\n            } else if (tn === $.MENU) {\n                menuStartTagInBody(p, token);\n            } else if (tn !== $.HEAD) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.STYLE || tn === $.TITLE) {\n                startTagInHead(p, token);\n            } else if (tn === $.ASIDE) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.SMALL) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.TABLE) {\n                tableStartTagInBody(p, token);\n            } else if (tn === $.EMBED) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.INPUT) {\n                inputStartTagInBody(p, token);\n            } else if (tn === $.PARAM || tn === $.TRACK) {\n                paramStartTagInBody(p, token);\n            } else if (tn === $.IMAGE) {\n                imageStartTagInBody(p, token);\n            } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 6:\n            if (tn === $.SCRIPT) {\n                startTagInHead(p, token);\n            } else if (\n                tn === $.CENTER ||\n                tn === $.FIGURE ||\n                tn === $.FOOTER ||\n                tn === $.HEADER ||\n                tn === $.HGROUP ||\n                tn === $.DIALOG\n            ) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.BUTTON) {\n                buttonStartTagInBody(p, token);\n            } else if (tn === $.STRIKE || tn === $.STRONG) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.APPLET || tn === $.OBJECT) {\n                appletStartTagInBody(p, token);\n            } else if (tn === $.KEYGEN) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.SOURCE) {\n                paramStartTagInBody(p, token);\n            } else if (tn === $.IFRAME) {\n                iframeStartTagInBody(p, token);\n            } else if (tn === $.SELECT) {\n                selectStartTagInBody(p, token);\n            } else if (tn === $.OPTION) {\n                optgroupStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 7:\n            if (tn === $.BGSOUND) {\n                startTagInHead(p, token);\n            } else if (\n                tn === $.DETAILS ||\n                tn === $.ADDRESS ||\n                tn === $.ARTICLE ||\n                tn === $.SECTION ||\n                tn === $.SUMMARY\n            ) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.LISTING) {\n                preStartTagInBody(p, token);\n            } else if (tn === $.MARQUEE) {\n                appletStartTagInBody(p, token);\n            } else if (tn === $.NOEMBED) {\n                noembedStartTagInBody(p, token);\n            } else if (tn !== $.CAPTION) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 8:\n            if (tn === $.BASEFONT) {\n                startTagInHead(p, token);\n            } else if (tn === $.FRAMESET) {\n                framesetStartTagInBody(p, token);\n            } else if (tn === $.FIELDSET) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.TEXTAREA) {\n                textareaStartTagInBody(p, token);\n            } else if (tn === $.TEMPLATE) {\n                startTagInHead(p, token);\n            } else if (tn === $.NOSCRIPT) {\n                if (p.options.scriptingEnabled) {\n                    noembedStartTagInBody(p, token);\n                } else {\n                    genericStartTagInBody(p, token);\n                }\n            } else if (tn === $.OPTGROUP) {\n                optgroupStartTagInBody(p, token);\n            } else if (tn !== $.COLGROUP) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 9:\n            if (tn === $.PLAINTEXT) {\n                plaintextStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 10:\n            if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n                addressStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        default:\n            genericStartTagInBody(p, token);\n    }\n}\n\nfunction bodyEndTagInBody(p) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = AFTER_BODY_MODE;\n    }\n}\n\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = AFTER_BODY_MODE;\n        p._processToken(token);\n    }\n}\n\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\n\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const formElement = p.formElement;\n\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n        p.openElements.generateImpliedEndTags();\n\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped($.FORM);\n        } else {\n            p.openElements.remove(formElement);\n        }\n    }\n}\n\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope($.P)) {\n        p._insertFakeElement($.P);\n    }\n\n    p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope($.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n        p.openElements.popUntilTagNamePopped($.LI);\n    }\n}\n\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\n\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\n\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement($.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n\n        if (p.treeAdapter.getTagName(element) === tn) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tn);\n            p.openElements.popUntilElementPopped(element);\n            break;\n        }\n\n        if (p._isSpecialElement(element)) {\n            break;\n        }\n    }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n    const tn = token.tagName;\n\n    switch (tn.length) {\n        case 1:\n            if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n                callAdoptionAgency(p, token);\n            } else if (tn === $.P) {\n                pEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 2:\n            if (tn === $.DL || tn === $.UL || tn === $.OL) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.LI) {\n                liEndTagInBody(p, token);\n            } else if (tn === $.DD || tn === $.DT) {\n                ddEndTagInBody(p, token);\n            } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n                numberedHeaderEndTagInBody(p, token);\n            } else if (tn === $.BR) {\n                brEndTagInBody(p, token);\n            } else if (tn === $.EM || tn === $.TT) {\n                callAdoptionAgency(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 3:\n            if (tn === $.BIG) {\n                callAdoptionAgency(p, token);\n            } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n                addressEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.BODY) {\n                bodyEndTagInBody(p, token);\n            } else if (tn === $.HTML) {\n                htmlEndTagInBody(p, token);\n            } else if (tn === $.FORM) {\n                formEndTagInBody(p, token);\n            } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n                callAdoptionAgency(p, token);\n            } else if (tn === $.MAIN || tn === $.MENU) {\n                addressEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.ASIDE) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.SMALL) {\n                callAdoptionAgency(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 6:\n            if (\n                tn === $.CENTER ||\n                tn === $.FIGURE ||\n                tn === $.FOOTER ||\n                tn === $.HEADER ||\n                tn === $.HGROUP ||\n                tn === $.DIALOG\n            ) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.APPLET || tn === $.OBJECT) {\n                appletEndTagInBody(p, token);\n            } else if (tn === $.STRIKE || tn === $.STRONG) {\n                callAdoptionAgency(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 7:\n            if (\n                tn === $.ADDRESS ||\n                tn === $.ARTICLE ||\n                tn === $.DETAILS ||\n                tn === $.SECTION ||\n                tn === $.SUMMARY ||\n                tn === $.LISTING\n            ) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.MARQUEE) {\n                appletEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 8:\n            if (tn === $.FIELDSET) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.TEMPLATE) {\n                endTagInHead(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 10:\n            if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n                addressEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        default:\n            genericEndTagInBody(p, token);\n    }\n}\n\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStackTop > -1) {\n        eofInTemplate(p, token);\n    } else {\n        p.stopped = true;\n    }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    if (token.tagName === $.SCRIPT) {\n        p.pendingScript = p.openElements.current;\n    }\n\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n    p._err(ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    const curTn = p.openElements.currentTagName;\n\n    if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n        p.pendingCharacterTokens = [];\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = IN_TABLE_TEXT_MODE;\n        p._processToken(token);\n    } else {\n        tokenInTable(p, token);\n    }\n}\n\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement($.COLGROUP);\n    p.insertionMode = IN_COLUMN_GROUP_MODE;\n    p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement($.TBODY);\n    p.insertionMode = IN_TABLE_BODY_MODE;\n    p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope($.TABLE)) {\n        p.openElements.popUntilTagNamePopped($.TABLE);\n        p._resetInsertionMode();\n        p._processToken(token);\n    }\n}\n\nfunction inputStartTagInTable(p, token) {\n    const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n    if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n        p._appendElement(token, NS.HTML);\n    } else {\n        tokenInTable(p, token);\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\n\nfunction startTagInTable(p, token) {\n    const tn = token.tagName;\n\n    switch (tn.length) {\n        case 2:\n            if (tn === $.TD || tn === $.TH || tn === $.TR) {\n                tdStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 3:\n            if (tn === $.COL) {\n                colStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.FORM) {\n                formStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.TABLE) {\n                tableStartTagInTable(p, token);\n            } else if (tn === $.STYLE) {\n                startTagInHead(p, token);\n            } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n                tbodyStartTagInTable(p, token);\n            } else if (tn === $.INPUT) {\n                inputStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 6:\n            if (tn === $.SCRIPT) {\n                startTagInHead(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 7:\n            if (tn === $.CAPTION) {\n                captionStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 8:\n            if (tn === $.COLGROUP) {\n                colgroupStartTagInTable(p, token);\n            } else if (tn === $.TEMPLATE) {\n                startTagInHead(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        default:\n            tokenInTable(p, token);\n    }\n}\n\nfunction endTagInTable(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TABLE) {\n        if (p.openElements.hasInTableScope($.TABLE)) {\n            p.openElements.popUntilTagNamePopped($.TABLE);\n            p._resetInsertionMode();\n        }\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    } else if (\n        tn !== $.BODY &&\n        tn !== $.CAPTION &&\n        tn !== $.COL &&\n        tn !== $.COLGROUP &&\n        tn !== $.HTML &&\n        tn !== $.TBODY &&\n        tn !== $.TD &&\n        tn !== $.TFOOT &&\n        tn !== $.TH &&\n        tn !== $.THEAD &&\n        tn !== $.TR\n    ) {\n        tokenInTable(p, token);\n    }\n}\n\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n\n    p.fosterParentingEnabled = true;\n    p._processTokenInBodyMode(token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n    let i = 0;\n\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    } else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TD ||\n        tn === $.TFOOT ||\n        tn === $.TH ||\n        tn === $.THEAD ||\n        tn === $.TR\n    ) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = IN_TABLE_MODE;\n            p._processToken(token);\n        }\n    } else {\n        startTagInBody(p, token);\n    }\n}\n\nfunction endTagInCaption(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.CAPTION || tn === $.TABLE) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = IN_TABLE_MODE;\n\n            if (tn === $.TABLE) {\n                p._processToken(token);\n            }\n        }\n    } else if (\n        tn !== $.BODY &&\n        tn !== $.COL &&\n        tn !== $.COLGROUP &&\n        tn !== $.HTML &&\n        tn !== $.TBODY &&\n        tn !== $.TD &&\n        tn !== $.TFOOT &&\n        tn !== $.TH &&\n        tn !== $.THEAD &&\n        tn !== $.TR\n    ) {\n        endTagInBody(p, token);\n    }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.COL) {\n        p._appendElement(token, NS.HTML);\n        token.ackSelfClosing = true;\n    } else if (tn === $.TEMPLATE) {\n        startTagInHead(p, token);\n    } else {\n        tokenInColumnGroup(p, token);\n    }\n}\n\nfunction endTagInColumnGroup(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.COLGROUP) {\n        if (p.openElements.currentTagName === $.COLGROUP) {\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n        }\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    } else if (tn !== $.COL) {\n        tokenInColumnGroup(p, token);\n    }\n}\n\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagName === $.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = IN_TABLE_MODE;\n        p._processToken(token);\n    }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TR) {\n        p.openElements.clearBackToTableBodyContext();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_ROW_MODE;\n    } else if (tn === $.TH || tn === $.TD) {\n        p.openElements.clearBackToTableBodyContext();\n        p._insertFakeElement($.TR);\n        p.insertionMode = IN_ROW_MODE;\n        p._processToken(token);\n    } else if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD\n    ) {\n        if (p.openElements.hasTableBodyContextInTableScope()) {\n            p.openElements.clearBackToTableBodyContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n            p._processToken(token);\n        }\n    } else {\n        startTagInTable(p, token);\n    }\n}\n\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.clearBackToTableBodyContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n        }\n    } else if (tn === $.TABLE) {\n        if (p.openElements.hasTableBodyContextInTableScope()) {\n            p.openElements.clearBackToTableBodyContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n            p._processToken(token);\n        }\n    } else if (\n        (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n        (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n    ) {\n        endTagInTable(p, token);\n    }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TH || tn === $.TD) {\n        p.openElements.clearBackToTableRowContext();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_CELL_MODE;\n        p.activeFormattingElements.insertMarker();\n    } else if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR\n    ) {\n        if (p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n            p._processToken(token);\n        }\n    } else {\n        startTagInTable(p, token);\n    }\n}\n\nfunction endTagInRow(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TR) {\n        if (p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n        }\n    } else if (tn === $.TABLE) {\n        if (p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n            p._processToken(token);\n        }\n    } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n        if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n            p._processToken(token);\n        }\n    } else if (\n        (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n        (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n    ) {\n        endTagInTable(p, token);\n    }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TD ||\n        tn === $.TFOOT ||\n        tn === $.TH ||\n        tn === $.THEAD ||\n        tn === $.TR\n    ) {\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n            p._closeTableCell();\n            p._processToken(token);\n        }\n    } else {\n        startTagInBody(p, token);\n    }\n}\n\nfunction endTagInCell(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TD || tn === $.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped(tn);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = IN_ROW_MODE;\n        }\n    } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p._closeTableCell();\n            p._processToken(token);\n        }\n    } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n        endTagInBody(p, token);\n    }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.OPTION) {\n        if (p.openElements.currentTagName === $.OPTION) {\n            p.openElements.pop();\n        }\n\n        p._insertElement(token, NS.HTML);\n    } else if (tn === $.OPTGROUP) {\n        if (p.openElements.currentTagName === $.OPTION) {\n            p.openElements.pop();\n        }\n\n        if (p.openElements.currentTagName === $.OPTGROUP) {\n            p.openElements.pop();\n        }\n\n        p._insertElement(token, NS.HTML);\n    } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n        if (p.openElements.hasInSelectScope($.SELECT)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n\n            if (tn !== $.SELECT) {\n                p._processToken(token);\n            }\n        }\n    } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n        startTagInHead(p, token);\n    }\n}\n\nfunction endTagInSelect(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.OPTGROUP) {\n        const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n        const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n        if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n            p.openElements.pop();\n        }\n\n        if (p.openElements.currentTagName === $.OPTGROUP) {\n            p.openElements.pop();\n        }\n    } else if (tn === $.OPTION) {\n        if (p.openElements.currentTagName === $.OPTION) {\n            p.openElements.pop();\n        }\n    } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH\n    ) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n        p._processToken(token);\n    } else {\n        startTagInSelect(p, token);\n    }\n}\n\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH\n    ) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n            p._processToken(token);\n        }\n    } else {\n        endTagInSelect(p, token);\n    }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.BASE ||\n        tn === $.BASEFONT ||\n        tn === $.BGSOUND ||\n        tn === $.LINK ||\n        tn === $.META ||\n        tn === $.NOFRAMES ||\n        tn === $.SCRIPT ||\n        tn === $.STYLE ||\n        tn === $.TEMPLATE ||\n        tn === $.TITLE\n    ) {\n        startTagInHead(p, token);\n    } else {\n        const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n        p._popTmplInsertionMode();\n        p._pushTmplInsertionMode(newInsertionMode);\n        p.insertionMode = newInsertionMode;\n        p._processToken(token);\n    }\n}\n\nfunction endTagInTemplate(p, token) {\n    if (token.tagName === $.TEMPLATE) {\n        endTagInHead(p, token);\n    }\n}\n\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p._popTmplInsertionMode();\n        p._resetInsertionMode();\n        p._processToken(token);\n    } else {\n        p.stopped = true;\n    }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagName === $.HTML) {\n        startTagInBody(p, token);\n    } else {\n        tokenAfterBody(p, token);\n    }\n}\n\nfunction endTagAfterBody(p, token) {\n    if (token.tagName === $.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = AFTER_AFTER_BODY_MODE;\n        }\n    } else {\n        tokenAfterBody(p, token);\n    }\n}\n\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = IN_BODY_MODE;\n    p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.FRAMESET) {\n        p._insertElement(token, NS.HTML);\n    } else if (tn === $.FRAME) {\n        p._appendElement(token, NS.HTML);\n        token.ackSelfClosing = true;\n    } else if (tn === $.NOFRAMES) {\n        startTagInHead(p, token);\n    }\n}\n\nfunction endTagInFrameset(p, token) {\n    if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n\n        if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n            p.insertionMode = AFTER_FRAMESET_MODE;\n        }\n    }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.NOFRAMES) {\n        startTagInHead(p, token);\n    }\n}\n\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagName === $.HTML) {\n        p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n    }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagName === $.HTML) {\n        startTagInBody(p, token);\n    } else {\n        tokenAfterAfterBody(p, token);\n    }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = IN_BODY_MODE;\n    p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.NOFRAMES) {\n        startTagInHead(p, token);\n    }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = unicode.REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n    if (foreignContent.causesExit(token) && !p.fragmentContext) {\n        while (\n            p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n            !p._isIntegrationPoint(p.openElements.current)\n        ) {\n            p.openElements.pop();\n        }\n\n        p._processToken(token);\n    } else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n        if (currentNs === NS.MATHML) {\n            foreignContent.adjustTokenMathMLAttrs(token);\n        } else if (currentNs === NS.SVG) {\n            foreignContent.adjustTokenSVGTagName(token);\n            foreignContent.adjustTokenSVGAttrs(token);\n        }\n\n        foreignContent.adjustTokenXMLAttrs(token);\n\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        } else {\n            p._insertElement(token, currentNs);\n        }\n\n        token.ackSelfClosing = true;\n    }\n}\n\nfunction endTagInForeignContent(p, token) {\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n            p._processToken(token);\n            break;\n        }\n\n        if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n            p.openElements.popUntilElementPopped(element);\n            break;\n        }\n    }\n}\n","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n    switch (tn.length) {\n        case 1:\n            return tn === $.P;\n\n        case 2:\n            return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n        case 3:\n            return tn === $.RTC;\n\n        case 6:\n            return tn === $.OPTION;\n\n        case 8:\n            return tn === $.OPTGROUP;\n    }\n\n    return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n    switch (tn.length) {\n        case 1:\n            return tn === $.P;\n\n        case 2:\n            return (\n                tn === $.RB ||\n                tn === $.RP ||\n                tn === $.RT ||\n                tn === $.DD ||\n                tn === $.DT ||\n                tn === $.LI ||\n                tn === $.TD ||\n                tn === $.TH ||\n                tn === $.TR\n            );\n\n        case 3:\n            return tn === $.RTC;\n\n        case 5:\n            return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n        case 6:\n            return tn === $.OPTION;\n\n        case 7:\n            return tn === $.CAPTION;\n\n        case 8:\n            return tn === $.OPTGROUP || tn === $.COLGROUP;\n    }\n\n    return false;\n}\n\nfunction isScopingElement(tn, ns) {\n    switch (tn.length) {\n        case 2:\n            if (tn === $.TD || tn === $.TH) {\n                return ns === NS.HTML;\n            } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n                return ns === NS.MATHML;\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.HTML) {\n                return ns === NS.HTML;\n            } else if (tn === $.DESC) {\n                return ns === NS.SVG;\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.TABLE) {\n                return ns === NS.HTML;\n            } else if (tn === $.MTEXT) {\n                return ns === NS.MATHML;\n            } else if (tn === $.TITLE) {\n                return ns === NS.SVG;\n            }\n\n            break;\n\n        case 6:\n            return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n        case 7:\n            return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n        case 8:\n            return tn === $.TEMPLATE && ns === NS.HTML;\n\n        case 13:\n            return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n        case 14:\n            return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n    }\n\n    return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n    constructor(document, treeAdapter) {\n        this.stackTop = -1;\n        this.items = [];\n        this.current = document;\n        this.currentTagName = null;\n        this.currentTmplContent = null;\n        this.tmplCount = 0;\n        this.treeAdapter = treeAdapter;\n    }\n\n    //Index of element\n    _indexOf(element) {\n        let idx = -1;\n\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.items[i] === element) {\n                idx = i;\n                break;\n            }\n        }\n        return idx;\n    }\n\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n    }\n\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n        this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n    }\n\n    //Mutations\n    push(element) {\n        this.items[++this.stackTop] = element;\n        this._updateCurrentElement();\n\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n    }\n\n    pop() {\n        this.stackTop--;\n\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n\n        this._updateCurrentElement();\n    }\n\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n\n        this.items[idx] = newElement;\n\n        if (idx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n    }\n\n    insertAfter(referenceElement, newElement) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n\n        this.items.splice(insertionIdx, 0, newElement);\n\n        if (insertionIdx === ++this.stackTop) {\n            this._updateCurrentElement();\n        }\n    }\n\n    popUntilTagNamePopped(tagName) {\n        while (this.stackTop > -1) {\n            const tn = this.currentTagName;\n            const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n            this.pop();\n\n            if (tn === tagName && ns === NS.HTML) {\n                break;\n            }\n        }\n    }\n\n    popUntilElementPopped(element) {\n        while (this.stackTop > -1) {\n            const poppedElement = this.current;\n\n            this.pop();\n\n            if (poppedElement === element) {\n                break;\n            }\n        }\n    }\n\n    popUntilNumberedHeaderPopped() {\n        while (this.stackTop > -1) {\n            const tn = this.currentTagName;\n            const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n            this.pop();\n\n            if (\n                tn === $.H1 ||\n                tn === $.H2 ||\n                tn === $.H3 ||\n                tn === $.H4 ||\n                tn === $.H5 ||\n                (tn === $.H6 && ns === NS.HTML)\n            ) {\n                break;\n            }\n        }\n    }\n\n    popUntilTableCellPopped() {\n        while (this.stackTop > -1) {\n            const tn = this.currentTagName;\n            const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n            this.pop();\n\n            if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n                break;\n            }\n        }\n    }\n\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.stackTop = 0;\n        this._updateCurrentElement();\n    }\n\n    clearBackToTableContext() {\n        while (\n            (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n            this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n        ) {\n            this.pop();\n        }\n    }\n\n    clearBackToTableBodyContext() {\n        while (\n            (this.currentTagName !== $.TBODY &&\n                this.currentTagName !== $.TFOOT &&\n                this.currentTagName !== $.THEAD &&\n                this.currentTagName !== $.TEMPLATE &&\n                this.currentTagName !== $.HTML) ||\n            this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n        ) {\n            this.pop();\n        }\n    }\n\n    clearBackToTableRowContext() {\n        while (\n            (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n            this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n        ) {\n            this.pop();\n        }\n    }\n\n    remove(element) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.items[i] === element) {\n                this.items.splice(i, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                break;\n            }\n        }\n    }\n\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        const element = this.items[1];\n\n        return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n    }\n\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n\n    getCommonAncestor(element) {\n        let elementIdx = this._indexOf(element);\n\n        return --elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.currentTagName === $.HTML;\n    }\n\n    //Element in scope\n    hasInScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n\n            if (isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (\n                (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n                ns === NS.HTML\n            ) {\n                return true;\n            }\n\n            if (isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInListItemScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n\n            if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInButtonScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n\n            if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInTableScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (ns !== NS.HTML) {\n                continue;\n            }\n\n            if (tn === tagName) {\n                return true;\n            }\n\n            if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasTableBodyContextInTableScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (ns !== NS.HTML) {\n                continue;\n            }\n\n            if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n                return true;\n            }\n\n            if (tn === $.TABLE || tn === $.HTML) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInSelectScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (ns !== NS.HTML) {\n                continue;\n            }\n\n            if (tn === tagName) {\n                return true;\n            }\n\n            if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (isImpliedEndTagRequired(this.currentTagName)) {\n            this.pop();\n        }\n    }\n\n    generateImpliedEndTagsThoroughly() {\n        while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n            this.pop();\n        }\n    }\n\n    generateImpliedEndTagsWithExclusion(exclusionTagName) {\n        while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n            this.pop();\n        }\n    }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n    0x80: 0x20ac,\n    0x82: 0x201a,\n    0x83: 0x0192,\n    0x84: 0x201e,\n    0x85: 0x2026,\n    0x86: 0x2020,\n    0x87: 0x2021,\n    0x88: 0x02c6,\n    0x89: 0x2030,\n    0x8a: 0x0160,\n    0x8b: 0x2039,\n    0x8c: 0x0152,\n    0x8e: 0x017d,\n    0x91: 0x2018,\n    0x92: 0x2019,\n    0x93: 0x201c,\n    0x94: 0x201d,\n    0x95: 0x2022,\n    0x96: 0x2013,\n    0x97: 0x2014,\n    0x98: 0x02dc,\n    0x99: 0x2122,\n    0x9a: 0x0161,\n    0x9b: 0x203a,\n    0x9c: 0x0153,\n    0x9e: 0x017e,\n    0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n    return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n    return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n    if (cp <= 0xffff) {\n        return String.fromCharCode(cp);\n    }\n\n    cp -= 0x10000;\n    return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n    return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n    const branchCount = neTree[++nodeIx];\n    let lo = ++nodeIx;\n    let hi = lo + branchCount - 1;\n\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midCp = neTree[mid];\n\n        if (midCp < cp) {\n            lo = mid + 1;\n        } else if (midCp > cp) {\n            hi = mid - 1;\n        } else {\n            return neTree[mid + branchCount];\n        }\n    }\n\n    return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n    constructor() {\n        this.preprocessor = new Preprocessor();\n\n        this.tokenQueue = [];\n\n        this.allowCDATA = false;\n\n        this.state = DATA_STATE;\n        this.returnState = '';\n\n        this.charRefCode = -1;\n        this.tempBuff = [];\n        this.lastStartTagName = '';\n\n        this.consumedAfterSnapshot = -1;\n        this.active = false;\n\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = null;\n    }\n\n    //Errors\n    _err() {\n        // NOTE: err reporting is noop by default. Enabled by mixin.\n    }\n\n    _errOnNextCodePoint(err) {\n        this._consume();\n        this._err(err);\n        this._unconsume();\n    }\n\n    //API\n    getNextToken() {\n        while (!this.tokenQueue.length && this.active) {\n            this.consumedAfterSnapshot = 0;\n\n            const cp = this._consume();\n\n            if (!this._ensureHibernation()) {\n                this[this.state](cp);\n            }\n        }\n\n        return this.tokenQueue.shift();\n    }\n\n    write(chunk, isLastChunk) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n    }\n\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n    }\n\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n                this.preprocessor.retreat();\n            }\n\n            this.active = false;\n            this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n            return true;\n        }\n\n        return false;\n    }\n\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n\n    _unconsume() {\n        this.consumedAfterSnapshot--;\n        this.preprocessor.retreat();\n    }\n\n    _reconsumeInState(state) {\n        this.state = state;\n        this._unconsume();\n    }\n\n    _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n        let consumedCount = 0;\n        let isMatch = true;\n        const patternLength = pattern.length;\n        let patternPos = 0;\n        let cp = startCp;\n        let patternCp = void 0;\n\n        for (; patternPos < patternLength; patternPos++) {\n            if (patternPos > 0) {\n                cp = this._consume();\n                consumedCount++;\n            }\n\n            if (cp === $.EOF) {\n                isMatch = false;\n                break;\n            }\n\n            patternCp = pattern[patternPos];\n\n            if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n                isMatch = false;\n                break;\n            }\n        }\n\n        if (!isMatch) {\n            while (consumedCount--) {\n                this._unconsume();\n            }\n        }\n\n        return isMatch;\n    }\n\n    //Temp buffer\n    _isTempBufferEqualToScriptString() {\n        if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n            return false;\n        }\n\n        for (let i = 0; i < this.tempBuff.length; i++) {\n            if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: Tokenizer.START_TAG_TOKEN,\n            tagName: '',\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: []\n        };\n    }\n\n    _createEndTagToken() {\n        this.currentToken = {\n            type: Tokenizer.END_TAG_TOKEN,\n            tagName: '',\n            selfClosing: false,\n            attrs: []\n        };\n    }\n\n    _createCommentToken() {\n        this.currentToken = {\n            type: Tokenizer.COMMENT_TOKEN,\n            data: ''\n        };\n    }\n\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: Tokenizer.DOCTYPE_TOKEN,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null\n        };\n    }\n\n    _createCharacterToken(type, ch) {\n        this.currentCharacterToken = {\n            type: type,\n            chars: ch\n        };\n    }\n\n    _createEOFToken() {\n        this.currentToken = { type: Tokenizer.EOF_TOKEN };\n    }\n\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: ''\n        };\n    }\n\n    _leaveAttrName(toState) {\n        if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n            this.currentToken.attrs.push(this.currentAttr);\n        } else {\n            this._err(ERR.duplicateAttribute);\n        }\n\n        this.state = toState;\n    }\n\n    _leaveAttrValue(toState) {\n        this.state = toState;\n    }\n\n    //Token emission\n    _emitCurrentToken() {\n        this._emitCurrentCharacterToken();\n\n        const ct = this.currentToken;\n\n        this.currentToken = null;\n\n        //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n        if (ct.type === Tokenizer.START_TAG_TOKEN) {\n            this.lastStartTagName = ct.tagName;\n        } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n        }\n\n        this.tokenQueue.push(ct);\n    }\n\n    _emitCurrentCharacterToken() {\n        if (this.currentCharacterToken) {\n            this.tokenQueue.push(this.currentCharacterToken);\n            this.currentCharacterToken = null;\n        }\n    }\n\n    _emitEOFToken() {\n        this._createEOFToken();\n        this._emitCurrentToken();\n    }\n\n    //Characters emission\n\n    //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n    //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n    //If we have a sequence of characters that belong to the same group, parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n            this._emitCurrentCharacterToken();\n        }\n\n        if (this.currentCharacterToken) {\n            this.currentCharacterToken.chars += ch;\n        } else {\n            this._createCharacterToken(type, ch);\n        }\n    }\n\n    _emitCodePoint(cp) {\n        let type = Tokenizer.CHARACTER_TOKEN;\n\n        if (isWhitespace(cp)) {\n            type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n        } else if (cp === $.NULL) {\n            type = Tokenizer.NULL_CHARACTER_TOKEN;\n        }\n\n        this._appendCharToCurrentCharacterToken(type, toChar(cp));\n    }\n\n    _emitSeveralCodePoints(codePoints) {\n        for (let i = 0; i < codePoints.length; i++) {\n            this._emitCodePoint(codePoints[i]);\n        }\n    }\n\n    //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n    //So we can avoid additional checks here.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n    }\n\n    // Character reference helpers\n    _matchNamedCharacterReference(startCp) {\n        let result = null;\n        let excess = 1;\n        let i = findNamedEntityTreeBranch(0, startCp);\n\n        this.tempBuff.push(startCp);\n\n        while (i > -1) {\n            const current = neTree[i];\n            const inNode = current < MAX_BRANCH_MARKER_VALUE;\n            const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n            if (nodeWithData) {\n                //NOTE: we use greedy search, so we continue lookup at this point\n                result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n                excess = 0;\n            }\n\n            const cp = this._consume();\n\n            this.tempBuff.push(cp);\n            excess++;\n\n            if (cp === $.EOF) {\n                break;\n            }\n\n            if (inNode) {\n                i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n            } else {\n                i = cp === current ? ++i : -1;\n            }\n        }\n\n        while (excess--) {\n            this.tempBuff.pop();\n            this._unconsume();\n        }\n\n        return result;\n    }\n\n    _isCharacterReferenceInAttribute() {\n        return (\n            this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n            this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n            this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n        );\n    }\n\n    _isCharacterReferenceAttributeQuirk(withSemicolon) {\n        if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n            const nextCp = this._consume();\n\n            this._unconsume();\n\n            return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n        }\n\n        return false;\n    }\n\n    _flushCodePointsConsumedAsCharacterReference() {\n        if (this._isCharacterReferenceInAttribute()) {\n            for (let i = 0; i < this.tempBuff.length; i++) {\n                this.currentAttr.value += toChar(this.tempBuff[i]);\n            }\n        } else {\n            this._emitSeveralCodePoints(this.tempBuff);\n        }\n\n        this.tempBuff = [];\n    }\n\n    // State machine\n\n    // Data state\n    //------------------------------------------------------------------\n    [DATA_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.LESS_THAN_SIGN) {\n            this.state = TAG_OPEN_STATE;\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = DATA_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitCodePoint(cp);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    //  RCDATA state\n    //------------------------------------------------------------------\n    [RCDATA_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.AMPERSAND) {\n            this.returnState = RCDATA_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = RCDATA_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    [RAWTEXT_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.LESS_THAN_SIGN) {\n            this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    [PLAINTEXT_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Tag open state\n    //------------------------------------------------------------------\n    [TAG_OPEN_STATE](cp) {\n        if (cp === $.EXCLAMATION_MARK) {\n            this.state = MARKUP_DECLARATION_OPEN_STATE;\n        } else if (cp === $.SOLIDUS) {\n            this.state = END_TAG_OPEN_STATE;\n        } else if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this._reconsumeInState(TAG_NAME_STATE);\n        } else if (cp === $.QUESTION_MARK) {\n            this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n            this._createCommentToken();\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofBeforeTagName);\n            this._emitChars('<');\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.invalidFirstCharacterOfTagName);\n            this._emitChars('<');\n            this._reconsumeInState(DATA_STATE);\n        }\n    }\n\n    // End tag open state\n    //------------------------------------------------------------------\n    [END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(TAG_NAME_STATE);\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingEndTagName);\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofBeforeTagName);\n            this._emitChars('</');\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.invalidFirstCharacterOfTagName);\n            this._createCommentToken();\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n        }\n    }\n\n    // Tag name state\n    //------------------------------------------------------------------\n    [TAG_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n        } else if (cp === $.SOLIDUS) {\n            this.state = SELF_CLOSING_START_TAG_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentToken.tagName += toChar(cp);\n        }\n    }\n\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = RCDATA_END_TAG_OPEN_STATE;\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(RCDATA_STATE);\n        }\n    }\n\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    [RCDATA_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(RCDATA_STATE);\n        }\n    }\n\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    [RCDATA_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                }\n\n                if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                }\n\n                if (cp === $.GREATER_THAN_SIGN) {\n                    this.state = DATA_STATE;\n                    this._emitCurrentToken();\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(RCDATA_STATE);\n        }\n    }\n\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = RAWTEXT_END_TAG_OPEN_STATE;\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(RAWTEXT_STATE);\n        }\n    }\n\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(RAWTEXT_STATE);\n        }\n    }\n\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    [RAWTEXT_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                }\n\n                if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                }\n\n                if (cp === $.GREATER_THAN_SIGN) {\n                    this._emitCurrentToken();\n                    this.state = DATA_STATE;\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(RAWTEXT_STATE);\n        }\n    }\n\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n        } else if (cp === $.EXCLAMATION_MARK) {\n            this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n            this._emitChars('<!');\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                } else if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                } else if (cp === $.GREATER_THAN_SIGN) {\n                    this._emitCurrentToken();\n                    this.state = DATA_STATE;\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data escape start state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n            this._emitChars('-');\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n            this._emitChars('-');\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data escaped state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = SCRIPT_DATA_STATE;\n            this._emitChars('>');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n        } else if (isAsciiLetter(cp)) {\n            this.tempBuff = [];\n            this._emitChars('<');\n            this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                }\n\n                if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                }\n\n                if (cp === $.GREATER_THAN_SIGN) {\n                    this._emitCurrentToken();\n                    this.state = DATA_STATE;\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n        if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n            this.state = this._isTempBufferEqualToScriptString()\n                ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n                : SCRIPT_DATA_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        } else if (isAsciiUpper(cp)) {\n            this.tempBuff.push(toAsciiLowerCodePoint(cp));\n            this._emitCodePoint(cp);\n        } else if (isAsciiLower(cp)) {\n            this.tempBuff.push(cp);\n            this._emitCodePoint(cp);\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n            this._emitChars('<');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n            this._emitChars('<');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n            this._emitChars('<');\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = SCRIPT_DATA_STATE;\n            this._emitChars('>');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n            this._emitChars('/');\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n        }\n    }\n\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n        if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n            this.state = this._isTempBufferEqualToScriptString()\n                ? SCRIPT_DATA_ESCAPED_STATE\n                : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n            this._emitCodePoint(cp);\n        } else if (isAsciiUpper(cp)) {\n            this.tempBuff.push(toAsciiLowerCodePoint(cp));\n            this._emitCodePoint(cp);\n        } else if (isAsciiLower(cp)) {\n            this.tempBuff.push(cp);\n            this._emitCodePoint(cp);\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n        }\n    }\n\n    // Before attribute name state\n    //------------------------------------------------------------------\n    [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n            this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n        } else if (cp === $.EQUALS_SIGN) {\n            this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n            this._createAttr('=');\n            this.state = ATTRIBUTE_NAME_STATE;\n        } else {\n            this._createAttr('');\n            this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Attribute name state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_NAME_STATE](cp) {\n        if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n            this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n            this._unconsume();\n        } else if (cp === $.EQUALS_SIGN) {\n            this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n        } else if (isAsciiUpper(cp)) {\n            this.currentAttr.name += toAsciiLowerChar(cp);\n        } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n            this._err(ERR.unexpectedCharacterInAttributeName);\n            this.currentAttr.name += toChar(cp);\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n        } else {\n            this.currentAttr.name += toChar(cp);\n        }\n    }\n\n    // After attribute name state\n    //------------------------------------------------------------------\n    [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.SOLIDUS) {\n            this.state = SELF_CLOSING_START_TAG_STATE;\n        } else if (cp === $.EQUALS_SIGN) {\n            this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this._createAttr('');\n            this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Before attribute value state\n    //------------------------------------------------------------------\n    [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.QUOTATION_MARK) {\n            this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingAttributeValue);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else {\n            this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n        }\n    }\n\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n        if (cp === $.QUOTATION_MARK) {\n            this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentAttr.value += toChar(cp);\n        }\n    }\n\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n        if (cp === $.APOSTROPHE) {\n            this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentAttr.value += toChar(cp);\n        }\n    }\n\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._leaveAttrValue(DATA_STATE);\n            this._emitCurrentToken();\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n        } else if (\n            cp === $.QUOTATION_MARK ||\n            cp === $.APOSTROPHE ||\n            cp === $.LESS_THAN_SIGN ||\n            cp === $.EQUALS_SIGN ||\n            cp === $.GRAVE_ACCENT\n        ) {\n            this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n            this.currentAttr.value += toChar(cp);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentAttr.value += toChar(cp);\n        }\n    }\n\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n        } else if (cp === $.SOLIDUS) {\n            this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._leaveAttrValue(DATA_STATE);\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingWhitespaceBetweenAttributes);\n            this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    [SELF_CLOSING_START_TAG_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.currentToken.selfClosing = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.unexpectedSolidusInTag);\n            this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Bogus comment state\n    //------------------------------------------------------------------\n    [BOGUS_COMMENT_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n        } else {\n            this.currentToken.data += toChar(cp);\n        }\n    }\n\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    [MARKUP_DECLARATION_OPEN_STATE](cp) {\n        if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n            this._createCommentToken();\n            this.state = COMMENT_START_STATE;\n        } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n            this.state = DOCTYPE_STATE;\n        } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n            if (this.allowCDATA) {\n                this.state = CDATA_SECTION_STATE;\n            } else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken();\n                this.currentToken.data = '[CDATA[';\n                this.state = BOGUS_COMMENT_STATE;\n            }\n        }\n\n        //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken();\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n        }\n    }\n\n    // Comment start state\n    //------------------------------------------------------------------\n    [COMMENT_START_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_START_DASH_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptClosingOfEmptyComment);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else {\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment start dash state\n    //------------------------------------------------------------------\n    [COMMENT_START_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_END_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptClosingOfEmptyComment);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '-';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment state\n    //------------------------------------------------------------------\n    [COMMENT_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_END_DASH_STATE;\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.currentToken.data += '<';\n            this.state = COMMENT_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += toChar(cp);\n        }\n    }\n\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.EXCLAMATION_MARK) {\n            this.currentToken.data += '!';\n            this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.currentToken.data += '!';\n        } else {\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n        } else {\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n        } else {\n            this._reconsumeInState(COMMENT_END_DASH_STATE);\n        }\n    }\n\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n        if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n            this._err(ERR.nestedComment);\n        }\n\n        this._reconsumeInState(COMMENT_END_STATE);\n    }\n\n    // Comment end dash state\n    //------------------------------------------------------------------\n    [COMMENT_END_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_END_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '-';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment end state\n    //------------------------------------------------------------------\n    [COMMENT_END_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EXCLAMATION_MARK) {\n            this.state = COMMENT_END_BANG_STATE;\n        } else if (cp === $.HYPHEN_MINUS) {\n            this.currentToken.data += '-';\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '--';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment end bang state\n    //------------------------------------------------------------------\n    [COMMENT_END_BANG_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.currentToken.data += '--!';\n            this.state = COMMENT_END_DASH_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.incorrectlyClosedComment);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '--!';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    [DOCTYPE_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_DOCTYPE_NAME_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this._createDoctypeToken(null);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingWhitespaceBeforeDoctypeName);\n            this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n        }\n    }\n\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    [BEFORE_DOCTYPE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(toAsciiLowerChar(cp));\n            this.state = DOCTYPE_NAME_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n            this.state = DOCTYPE_NAME_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypeName);\n            this._createDoctypeToken(null);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this._createDoctypeToken(null);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._createDoctypeToken(toChar(cp));\n            this.state = DOCTYPE_NAME_STATE;\n        }\n    }\n\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    [DOCTYPE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = AFTER_DOCTYPE_NAME_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (isAsciiUpper(cp)) {\n            this.currentToken.name += toAsciiLowerChar(cp);\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.name += toChar(cp);\n        }\n    }\n\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n            this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n        } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n            this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n        }\n        //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n        } else if (cp === $.QUOTATION_MARK) {\n            this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.QUOTATION_MARK) {\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n        if (cp === $.QUOTATION_MARK) {\n            this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.publicId += toChar(cp);\n        }\n    }\n\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n        if (cp === $.APOSTROPHE) {\n            this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.publicId += toChar(cp);\n        }\n    }\n\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.QUOTATION_MARK) {\n            this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.GREATER_THAN_SIGN) {\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.QUOTATION_MARK) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n        } else if (cp === $.QUOTATION_MARK) {\n            this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.QUOTATION_MARK) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n        if (cp === $.QUOTATION_MARK) {\n            this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.systemId += toChar(cp);\n        }\n    }\n\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n        if (cp === $.APOSTROPHE) {\n            this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.systemId += toChar(cp);\n        }\n    }\n\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.GREATER_THAN_SIGN) {\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    [BOGUS_DOCTYPE_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n        } else if (cp === $.EOF) {\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        }\n    }\n\n    // CDATA section state\n    //------------------------------------------------------------------\n    [CDATA_SECTION_STATE](cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = CDATA_SECTION_BRACKET_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInCdata);\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    [CDATA_SECTION_BRACKET_STATE](cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = CDATA_SECTION_END_STATE;\n        } else {\n            this._emitChars(']');\n            this._reconsumeInState(CDATA_SECTION_STATE);\n        }\n    }\n\n    // CDATA section end state\n    //------------------------------------------------------------------\n    [CDATA_SECTION_END_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n        } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this._emitChars(']');\n        } else {\n            this._emitChars(']]');\n            this._reconsumeInState(CDATA_SECTION_STATE);\n        }\n    }\n\n    // Character reference state\n    //------------------------------------------------------------------\n    [CHARACTER_REFERENCE_STATE](cp) {\n        this.tempBuff = [$.AMPERSAND];\n\n        if (cp === $.NUMBER_SIGN) {\n            this.tempBuff.push(cp);\n            this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n        } else if (isAsciiAlphaNumeric(cp)) {\n            this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n        } else {\n            this._flushCodePointsConsumedAsCharacterReference();\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Named character reference state\n    //------------------------------------------------------------------\n    [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n        const matchResult = this._matchNamedCharacterReference(cp);\n\n        //NOTE: matching can be abrupted by hibernation. In that case match\n        //results are no longer valid and we will need to start over.\n        if (this._ensureHibernation()) {\n            this.tempBuff = [$.AMPERSAND];\n        } else if (matchResult) {\n            const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n            if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n                if (!withSemicolon) {\n                    this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n                }\n\n                this.tempBuff = matchResult;\n            }\n\n            this._flushCodePointsConsumedAsCharacterReference();\n            this.state = this.returnState;\n        } else {\n            this._flushCodePointsConsumedAsCharacterReference();\n            this.state = AMBIGUOUS_AMPERSAND_STATE;\n        }\n    }\n\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    [AMBIGUOUS_AMPERSAND_STATE](cp) {\n        if (isAsciiAlphaNumeric(cp)) {\n            if (this._isCharacterReferenceInAttribute()) {\n                this.currentAttr.value += toChar(cp);\n            } else {\n                this._emitCodePoint(cp);\n            }\n        } else {\n            if (cp === $.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Numeric character reference state\n    //------------------------------------------------------------------\n    [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n        this.charRefCode = 0;\n\n        if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n            this.tempBuff.push(cp);\n            this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n        } else {\n            this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n        }\n    }\n\n    // Hexademical character reference start state\n    //------------------------------------------------------------------\n    [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n        if (isAsciiHexDigit(cp)) {\n            this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n        } else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointsConsumedAsCharacterReference();\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Decimal character reference start state\n    //------------------------------------------------------------------\n    [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n        if (isAsciiDigit(cp)) {\n            this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n        } else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointsConsumedAsCharacterReference();\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Hexademical character reference state\n    //------------------------------------------------------------------\n    [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n        if (isAsciiUpperHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n        } else if (isAsciiLowerHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n        } else if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n        } else if (cp === $.SEMICOLON) {\n            this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n        } else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n        }\n    }\n\n    // Decimal character reference state\n    //------------------------------------------------------------------\n    [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n        if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n        } else if (cp === $.SEMICOLON) {\n            this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n        } else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n        }\n    }\n\n    // Numeric character reference end state\n    //------------------------------------------------------------------\n    [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n        if (this.charRefCode === $.NULL) {\n            this._err(ERR.nullCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        } else if (this.charRefCode > 0x10ffff) {\n            this._err(ERR.characterReferenceOutsideUnicodeRange);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        } else if (unicode.isSurrogate(this.charRefCode)) {\n            this._err(ERR.surrogateCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n            this._err(ERR.noncharacterCharacterReference);\n        } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n            this._err(ERR.controlCharacterReference);\n\n            const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n            if (replacement) {\n                this.charRefCode = replacement;\n            }\n        }\n\n        this.tempBuff = [this.charRefCode];\n\n        this._flushCodePointsConsumedAsCharacterReference();\n        this._reconsumeInState(this.returnState);\n    }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n    DATA: DATA_STATE,\n    RCDATA: RCDATA_STATE,\n    RAWTEXT: RAWTEXT_STATE,\n    SCRIPT_DATA: SCRIPT_DATA_STATE,\n    PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n    for (let i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName) {\n            return token.attrs[i].value;\n        }\n    }\n\n    return null;\n};\n\nmodule.exports = Tokenizer;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n    constructor() {\n        this.html = null;\n\n        this.pos = -1;\n        this.lastGapPos = -1;\n        this.lastCharPos = -1;\n\n        this.gapStack = [];\n\n        this.skipNextNewLine = false;\n\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n    }\n\n    _err() {\n        // NOTE: err reporting is noop by default. Enabled by mixin.\n    }\n\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.lastCharPos) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n\n            if (unicode.isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n\n                //NOTE: add gap that should be avoided during retreat\n                this._addGap();\n\n                return unicode.getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n\n        //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return $.EOF;\n        }\n\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n\n        return cp;\n    }\n\n    dropParsedChunk() {\n        if (this.pos > this.bufferWaterline) {\n            this.lastCharPos -= this.pos;\n            this.html = this.html.substring(this.pos);\n            this.pos = 0;\n            this.lastGapPos = -1;\n            this.gapStack = [];\n        }\n    }\n\n    write(chunk, isLastChunk) {\n        if (this.html) {\n            this.html += chunk;\n        } else {\n            this.html = chunk;\n        }\n\n        this.lastCharPos = this.html.length - 1;\n        this.endOfChunkHit = false;\n        this.lastChunkWritten = isLastChunk;\n    }\n\n    insertHtmlAtCurrentPos(chunk) {\n        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n        this.lastCharPos = this.html.length - 1;\n        this.endOfChunkHit = false;\n    }\n\n    advance() {\n        this.pos++;\n\n        if (this.pos > this.lastCharPos) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n\n        let cp = this.html.charCodeAt(this.pos);\n\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (this.skipNextNewLine && cp === $.LINE_FEED) {\n            this.skipNextNewLine = false;\n            this._addGap();\n            return this.advance();\n        }\n\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === $.CARRIAGE_RETURN) {\n            this.skipNextNewLine = true;\n            return $.LINE_FEED;\n        }\n\n        this.skipNextNewLine = false;\n\n        if (unicode.isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange =\n            (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n\n        return cp;\n    }\n\n    _checkForProblematicCharacters(cp) {\n        if (unicode.isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        } else if (unicode.isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n\n    retreat() {\n        if (this.pos === this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n\n        this.pos--;\n    }\n}\n\nmodule.exports = Preprocessor;\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n    return {\n        nodeName: '#document',\n        mode: DOCUMENT_MODE.NO_QUIRKS,\n        childNodes: []\n    };\n};\n\nexports.createDocumentFragment = function() {\n    return {\n        nodeName: '#document-fragment',\n        childNodes: []\n    };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n    return {\n        nodeName: tagName,\n        tagName: tagName,\n        attrs: attrs,\n        namespaceURI: namespaceURI,\n        childNodes: [],\n        parentNode: null\n    };\n};\n\nexports.createCommentNode = function(data) {\n    return {\n        nodeName: '#comment',\n        data: data,\n        parentNode: null\n    };\n};\n\nconst createTextNode = function(value) {\n    return {\n        nodeName: '#text',\n        value: value,\n        parentNode: null\n    };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n    parentNode.childNodes.push(newNode);\n    newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n    const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n    parentNode.childNodes.splice(insertionIdx, 0, newNode);\n    newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n    templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n    return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n    let doctypeNode = null;\n\n    for (let i = 0; i < document.childNodes.length; i++) {\n        if (document.childNodes[i].nodeName === '#documentType') {\n            doctypeNode = document.childNodes[i];\n            break;\n        }\n    }\n\n    if (doctypeNode) {\n        doctypeNode.name = name;\n        doctypeNode.publicId = publicId;\n        doctypeNode.systemId = systemId;\n    } else {\n        appendChild(document, {\n            nodeName: '#documentType',\n            name: name,\n            publicId: publicId,\n            systemId: systemId\n        });\n    }\n};\n\nexports.setDocumentMode = function(document, mode) {\n    document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n    return document.mode;\n};\n\nexports.detachNode = function(node) {\n    if (node.parentNode) {\n        const idx = node.parentNode.childNodes.indexOf(node);\n\n        node.parentNode.childNodes.splice(idx, 1);\n        node.parentNode = null;\n    }\n};\n\nexports.insertText = function(parentNode, text) {\n    if (parentNode.childNodes.length) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n        if (prevNode.nodeName === '#text') {\n            prevNode.value += text;\n            return;\n        }\n    }\n\n    appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n    const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n    if (prevNode && prevNode.nodeName === '#text') {\n        prevNode.value += text;\n    } else {\n        insertBefore(parentNode, createTextNode(text), referenceNode);\n    }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n    const recipientAttrsMap = [];\n\n    for (let i = 0; i < recipient.attrs.length; i++) {\n        recipientAttrsMap.push(recipient.attrs[i].name);\n    }\n\n    for (let j = 0; j < attrs.length; j++) {\n        if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n            recipient.attrs.push(attrs[j]);\n        }\n    }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n    return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n    return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n    return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n    return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n    return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n    return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n    return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n    return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n    return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n    return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n    return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n    return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n    return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n    return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n    return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n    node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n    return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n    node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n    options = options || Object.create(null);\n\n    return [defaults, options].reduce((merged, optObj) => {\n        Object.keys(optObj).forEach(key => {\n            merged[key] = optObj[key];\n        });\n\n        return merged;\n    }, Object.create(null));\n};\n","'use strict';\n\nclass Mixin {\n    constructor(host) {\n        const originalMethods = {};\n        const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n        for (const key of Object.keys(overriddenMethods)) {\n            if (typeof overriddenMethods[key] === 'function') {\n                originalMethods[key] = host[key];\n                host[key] = overriddenMethods[key];\n            }\n        }\n    }\n\n    _getOverriddenMethods() {\n        throw new Error('Not implemented');\n    }\n}\n\nMixin.install = function(host, Ctor, opts) {\n    if (!host.__mixins) {\n        host.__mixins = [];\n    }\n\n    for (let i = 0; i < host.__mixins.length; i++) {\n        if (host.__mixins[i].constructor === Ctor) {\n            return host.__mixins[i];\n        }\n    }\n\n    const mixin = new Ctor(host, opts);\n\n    host.__mixins.push(mixin);\n\n    return mixin;\n};\n\nmodule.exports = Mixin;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict'\n\n/* global window, self */\n\n// istanbul ignore next - Don't allow Prism to run on page load in browser or\n// to start messaging from workers.\nvar ctx =\n  typeof globalThis === 'object'\n    ? globalThis\n    : typeof self === 'object'\n    ? self\n    : typeof window === 'object'\n    ? window\n    : typeof global === 'object'\n    ? global\n    : {}\n\nvar restore = capture()\n\nctx.Prism = {manual: true, disableWorkerMessageHandler: true}\n\n// Load all stuff in `prism.js` itself, except for `prism-file-highlight.js`.\n// The wrapped non-leaky grammars are loaded instead of Prism’s originals.\nvar h = require('hastscript')\nvar decode = require('parse-entities')\nvar Prism = require('prismjs/components/prism-core')\nvar markup = require('./lang/markup')\nvar css = require('./lang/css')\nvar clike = require('./lang/clike')\nvar js = require('./lang/javascript')\n\nrestore()\n\nvar own = {}.hasOwnProperty\n\n// Inherit.\nfunction Refractor() {}\n\nRefractor.prototype = Prism\n\n// Construct.\nvar refract = new Refractor()\n\n// Expose.\nmodule.exports = refract\n\n// Create.\nrefract.highlight = highlight\nrefract.register = register\nrefract.alias = alias\nrefract.registered = registered\nrefract.listLanguages = listLanguages\n\n// Register bundled grammars.\nregister(markup)\nregister(css)\nregister(clike)\nregister(js)\n\nrefract.util.encode = encode\nrefract.Token.stringify = stringify\n\nfunction register(grammar) {\n  if (typeof grammar !== 'function' || !grammar.displayName) {\n    throw new Error('Expected `function` for `grammar`, got `' + grammar + '`')\n  }\n\n  // Do not duplicate registrations.\n  if (refract.languages[grammar.displayName] === undefined) {\n    grammar(refract)\n  }\n}\n\nfunction alias(name, alias) {\n  var languages = refract.languages\n  var map = name\n  var key\n  var list\n  var length\n  var index\n\n  if (alias) {\n    map = {}\n    map[name] = alias\n  }\n\n  for (key in map) {\n    list = map[key]\n    list = typeof list === 'string' ? [list] : list\n    length = list.length\n    index = -1\n\n    while (++index < length) {\n      languages[list[index]] = languages[key]\n    }\n  }\n}\n\nfunction highlight(value, name) {\n  var sup = Prism.highlight\n  var grammar\n\n  if (typeof value !== 'string') {\n    throw new Error('Expected `string` for `value`, got `' + value + '`')\n  }\n\n  // `name` is a grammar object.\n  if (refract.util.type(name) === 'Object') {\n    grammar = name\n    name = null\n  } else {\n    if (typeof name !== 'string') {\n      throw new Error('Expected `string` for `name`, got `' + name + '`')\n    }\n\n    if (own.call(refract.languages, name)) {\n      grammar = refract.languages[name]\n    } else {\n      throw new Error('Unknown language: `' + name + '` is not registered')\n    }\n  }\n\n  return sup.call(this, value, grammar, name)\n}\n\nfunction registered(language) {\n  if (typeof language !== 'string') {\n    throw new Error('Expected `string` for `language`, got `' + language + '`')\n  }\n\n  return own.call(refract.languages, language)\n}\n\nfunction listLanguages() {\n  var languages = refract.languages\n  var list = []\n  var language\n\n  for (language in languages) {\n    if (\n      own.call(languages, language) &&\n      typeof languages[language] === 'object'\n    ) {\n      list.push(language)\n    }\n  }\n\n  return list\n}\n\nfunction stringify(value, language, parent) {\n  var env\n\n  if (typeof value === 'string') {\n    return {type: 'text', value: value}\n  }\n\n  if (refract.util.type(value) === 'Array') {\n    return stringifyAll(value, language)\n  }\n\n  env = {\n    type: value.type,\n    content: refract.Token.stringify(value.content, language, parent),\n    tag: 'span',\n    classes: ['token', value.type],\n    attributes: {},\n    language: language,\n    parent: parent\n  }\n\n  if (value.alias) {\n    env.classes = env.classes.concat(value.alias)\n  }\n\n  refract.hooks.run('wrap', env)\n\n  return h(\n    env.tag + '.' + env.classes.join('.'),\n    attributes(env.attributes),\n    env.content\n  )\n}\n\nfunction stringifyAll(values, language) {\n  var result = []\n  var length = values.length\n  var index = -1\n  var value\n\n  while (++index < length) {\n    value = values[index]\n\n    if (value !== '' && value !== null && value !== undefined) {\n      result.push(value)\n    }\n  }\n\n  index = -1\n  length = result.length\n\n  while (++index < length) {\n    value = result[index]\n    result[index] = refract.Token.stringify(value, language, result)\n  }\n\n  return result\n}\n\nfunction encode(tokens) {\n  return tokens\n}\n\nfunction attributes(attrs) {\n  var key\n\n  for (key in attrs) {\n    attrs[key] = decode(attrs[key])\n  }\n\n  return attrs\n}\n\nfunction capture() {\n  var defined = 'Prism' in ctx\n  /* istanbul ignore next */\n  var current = defined ? ctx.Prism : undefined\n\n  return restore\n\n  function restore() {\n    /* istanbul ignore else - Clean leaks after Prism. */\n    if (defined) {\n      ctx.Prism = current\n    } else {\n      delete ctx.Prism\n    }\n\n    defined = undefined\n    current = undefined\n  }\n}\n","'use strict'\n\nvar refractor = require('./core.js')\n\nmodule.exports = refractor\n\nrefractor.register(require('./lang/abap.js'))\nrefractor.register(require('./lang/abnf.js'))\nrefractor.register(require('./lang/actionscript.js'))\nrefractor.register(require('./lang/ada.js'))\nrefractor.register(require('./lang/agda.js'))\nrefractor.register(require('./lang/al.js'))\nrefractor.register(require('./lang/antlr4.js'))\nrefractor.register(require('./lang/apacheconf.js'))\nrefractor.register(require('./lang/apex.js'))\nrefractor.register(require('./lang/apl.js'))\nrefractor.register(require('./lang/applescript.js'))\nrefractor.register(require('./lang/aql.js'))\nrefractor.register(require('./lang/arduino.js'))\nrefractor.register(require('./lang/arff.js'))\nrefractor.register(require('./lang/asciidoc.js'))\nrefractor.register(require('./lang/asm6502.js'))\nrefractor.register(require('./lang/asmatmel.js'))\nrefractor.register(require('./lang/aspnet.js'))\nrefractor.register(require('./lang/autohotkey.js'))\nrefractor.register(require('./lang/autoit.js'))\nrefractor.register(require('./lang/avisynth.js'))\nrefractor.register(require('./lang/avro-idl.js'))\nrefractor.register(require('./lang/bash.js'))\nrefractor.register(require('./lang/basic.js'))\nrefractor.register(require('./lang/batch.js'))\nrefractor.register(require('./lang/bbcode.js'))\nrefractor.register(require('./lang/bicep.js'))\nrefractor.register(require('./lang/birb.js'))\nrefractor.register(require('./lang/bison.js'))\nrefractor.register(require('./lang/bnf.js'))\nrefractor.register(require('./lang/brainfuck.js'))\nrefractor.register(require('./lang/brightscript.js'))\nrefractor.register(require('./lang/bro.js'))\nrefractor.register(require('./lang/bsl.js'))\nrefractor.register(require('./lang/c.js'))\nrefractor.register(require('./lang/cfscript.js'))\nrefractor.register(require('./lang/chaiscript.js'))\nrefractor.register(require('./lang/cil.js'))\nrefractor.register(require('./lang/clojure.js'))\nrefractor.register(require('./lang/cmake.js'))\nrefractor.register(require('./lang/cobol.js'))\nrefractor.register(require('./lang/coffeescript.js'))\nrefractor.register(require('./lang/concurnas.js'))\nrefractor.register(require('./lang/coq.js'))\nrefractor.register(require('./lang/cpp.js'))\nrefractor.register(require('./lang/crystal.js'))\nrefractor.register(require('./lang/csharp.js'))\nrefractor.register(require('./lang/cshtml.js'))\nrefractor.register(require('./lang/csp.js'))\nrefractor.register(require('./lang/css-extras.js'))\nrefractor.register(require('./lang/csv.js'))\nrefractor.register(require('./lang/cypher.js'))\nrefractor.register(require('./lang/d.js'))\nrefractor.register(require('./lang/dart.js'))\nrefractor.register(require('./lang/dataweave.js'))\nrefractor.register(require('./lang/dax.js'))\nrefractor.register(require('./lang/dhall.js'))\nrefractor.register(require('./lang/diff.js'))\nrefractor.register(require('./lang/django.js'))\nrefractor.register(require('./lang/dns-zone-file.js'))\nrefractor.register(require('./lang/docker.js'))\nrefractor.register(require('./lang/dot.js'))\nrefractor.register(require('./lang/ebnf.js'))\nrefractor.register(require('./lang/editorconfig.js'))\nrefractor.register(require('./lang/eiffel.js'))\nrefractor.register(require('./lang/ejs.js'))\nrefractor.register(require('./lang/elixir.js'))\nrefractor.register(require('./lang/elm.js'))\nrefractor.register(require('./lang/erb.js'))\nrefractor.register(require('./lang/erlang.js'))\nrefractor.register(require('./lang/etlua.js'))\nrefractor.register(require('./lang/excel-formula.js'))\nrefractor.register(require('./lang/factor.js'))\nrefractor.register(require('./lang/false.js'))\nrefractor.register(require('./lang/firestore-security-rules.js'))\nrefractor.register(require('./lang/flow.js'))\nrefractor.register(require('./lang/fortran.js'))\nrefractor.register(require('./lang/fsharp.js'))\nrefractor.register(require('./lang/ftl.js'))\nrefractor.register(require('./lang/gap.js'))\nrefractor.register(require('./lang/gcode.js'))\nrefractor.register(require('./lang/gdscript.js'))\nrefractor.register(require('./lang/gedcom.js'))\nrefractor.register(require('./lang/gherkin.js'))\nrefractor.register(require('./lang/git.js'))\nrefractor.register(require('./lang/glsl.js'))\nrefractor.register(require('./lang/gml.js'))\nrefractor.register(require('./lang/gn.js'))\nrefractor.register(require('./lang/go-module.js'))\nrefractor.register(require('./lang/go.js'))\nrefractor.register(require('./lang/graphql.js'))\nrefractor.register(require('./lang/groovy.js'))\nrefractor.register(require('./lang/haml.js'))\nrefractor.register(require('./lang/handlebars.js'))\nrefractor.register(require('./lang/haskell.js'))\nrefractor.register(require('./lang/haxe.js'))\nrefractor.register(require('./lang/hcl.js'))\nrefractor.register(require('./lang/hlsl.js'))\nrefractor.register(require('./lang/hoon.js'))\nrefractor.register(require('./lang/hpkp.js'))\nrefractor.register(require('./lang/hsts.js'))\nrefractor.register(require('./lang/http.js'))\nrefractor.register(require('./lang/ichigojam.js'))\nrefractor.register(require('./lang/icon.js'))\nrefractor.register(require('./lang/icu-message-format.js'))\nrefractor.register(require('./lang/idris.js'))\nrefractor.register(require('./lang/iecst.js'))\nrefractor.register(require('./lang/ignore.js'))\nrefractor.register(require('./lang/inform7.js'))\nrefractor.register(require('./lang/ini.js'))\nrefractor.register(require('./lang/io.js'))\nrefractor.register(require('./lang/j.js'))\nrefractor.register(require('./lang/java.js'))\nrefractor.register(require('./lang/javadoc.js'))\nrefractor.register(require('./lang/javadoclike.js'))\nrefractor.register(require('./lang/javastacktrace.js'))\nrefractor.register(require('./lang/jexl.js'))\nrefractor.register(require('./lang/jolie.js'))\nrefractor.register(require('./lang/jq.js'))\nrefractor.register(require('./lang/js-extras.js'))\nrefractor.register(require('./lang/js-templates.js'))\nrefractor.register(require('./lang/jsdoc.js'))\nrefractor.register(require('./lang/json.js'))\nrefractor.register(require('./lang/json5.js'))\nrefractor.register(require('./lang/jsonp.js'))\nrefractor.register(require('./lang/jsstacktrace.js'))\nrefractor.register(require('./lang/jsx.js'))\nrefractor.register(require('./lang/julia.js'))\nrefractor.register(require('./lang/keepalived.js'))\nrefractor.register(require('./lang/keyman.js'))\nrefractor.register(require('./lang/kotlin.js'))\nrefractor.register(require('./lang/kumir.js'))\nrefractor.register(require('./lang/kusto.js'))\nrefractor.register(require('./lang/latex.js'))\nrefractor.register(require('./lang/latte.js'))\nrefractor.register(require('./lang/less.js'))\nrefractor.register(require('./lang/lilypond.js'))\nrefractor.register(require('./lang/liquid.js'))\nrefractor.register(require('./lang/lisp.js'))\nrefractor.register(require('./lang/livescript.js'))\nrefractor.register(require('./lang/llvm.js'))\nrefractor.register(require('./lang/log.js'))\nrefractor.register(require('./lang/lolcode.js'))\nrefractor.register(require('./lang/lua.js'))\nrefractor.register(require('./lang/magma.js'))\nrefractor.register(require('./lang/makefile.js'))\nrefractor.register(require('./lang/markdown.js'))\nrefractor.register(require('./lang/markup-templating.js'))\nrefractor.register(require('./lang/matlab.js'))\nrefractor.register(require('./lang/maxscript.js'))\nrefractor.register(require('./lang/mel.js'))\nrefractor.register(require('./lang/mermaid.js'))\nrefractor.register(require('./lang/mizar.js'))\nrefractor.register(require('./lang/mongodb.js'))\nrefractor.register(require('./lang/monkey.js'))\nrefractor.register(require('./lang/moonscript.js'))\nrefractor.register(require('./lang/n1ql.js'))\nrefractor.register(require('./lang/n4js.js'))\nrefractor.register(require('./lang/nand2tetris-hdl.js'))\nrefractor.register(require('./lang/naniscript.js'))\nrefractor.register(require('./lang/nasm.js'))\nrefractor.register(require('./lang/neon.js'))\nrefractor.register(require('./lang/nevod.js'))\nrefractor.register(require('./lang/nginx.js'))\nrefractor.register(require('./lang/nim.js'))\nrefractor.register(require('./lang/nix.js'))\nrefractor.register(require('./lang/nsis.js'))\nrefractor.register(require('./lang/objectivec.js'))\nrefractor.register(require('./lang/ocaml.js'))\nrefractor.register(require('./lang/opencl.js'))\nrefractor.register(require('./lang/openqasm.js'))\nrefractor.register(require('./lang/oz.js'))\nrefractor.register(require('./lang/parigp.js'))\nrefractor.register(require('./lang/parser.js'))\nrefractor.register(require('./lang/pascal.js'))\nrefractor.register(require('./lang/pascaligo.js'))\nrefractor.register(require('./lang/pcaxis.js'))\nrefractor.register(require('./lang/peoplecode.js'))\nrefractor.register(require('./lang/perl.js'))\nrefractor.register(require('./lang/php-extras.js'))\nrefractor.register(require('./lang/php.js'))\nrefractor.register(require('./lang/phpdoc.js'))\nrefractor.register(require('./lang/plsql.js'))\nrefractor.register(require('./lang/powerquery.js'))\nrefractor.register(require('./lang/powershell.js'))\nrefractor.register(require('./lang/processing.js'))\nrefractor.register(require('./lang/prolog.js'))\nrefractor.register(require('./lang/promql.js'))\nrefractor.register(require('./lang/properties.js'))\nrefractor.register(require('./lang/protobuf.js'))\nrefractor.register(require('./lang/psl.js'))\nrefractor.register(require('./lang/pug.js'))\nrefractor.register(require('./lang/puppet.js'))\nrefractor.register(require('./lang/pure.js'))\nrefractor.register(require('./lang/purebasic.js'))\nrefractor.register(require('./lang/purescript.js'))\nrefractor.register(require('./lang/python.js'))\nrefractor.register(require('./lang/q.js'))\nrefractor.register(require('./lang/qml.js'))\nrefractor.register(require('./lang/qore.js'))\nrefractor.register(require('./lang/qsharp.js'))\nrefractor.register(require('./lang/r.js'))\nrefractor.register(require('./lang/racket.js'))\nrefractor.register(require('./lang/reason.js'))\nrefractor.register(require('./lang/regex.js'))\nrefractor.register(require('./lang/rego.js'))\nrefractor.register(require('./lang/renpy.js'))\nrefractor.register(require('./lang/rest.js'))\nrefractor.register(require('./lang/rip.js'))\nrefractor.register(require('./lang/roboconf.js'))\nrefractor.register(require('./lang/robotframework.js'))\nrefractor.register(require('./lang/ruby.js'))\nrefractor.register(require('./lang/rust.js'))\nrefractor.register(require('./lang/sas.js'))\nrefractor.register(require('./lang/sass.js'))\nrefractor.register(require('./lang/scala.js'))\nrefractor.register(require('./lang/scheme.js'))\nrefractor.register(require('./lang/scss.js'))\nrefractor.register(require('./lang/shell-session.js'))\nrefractor.register(require('./lang/smali.js'))\nrefractor.register(require('./lang/smalltalk.js'))\nrefractor.register(require('./lang/smarty.js'))\nrefractor.register(require('./lang/sml.js'))\nrefractor.register(require('./lang/solidity.js'))\nrefractor.register(require('./lang/solution-file.js'))\nrefractor.register(require('./lang/soy.js'))\nrefractor.register(require('./lang/sparql.js'))\nrefractor.register(require('./lang/splunk-spl.js'))\nrefractor.register(require('./lang/sqf.js'))\nrefractor.register(require('./lang/sql.js'))\nrefractor.register(require('./lang/squirrel.js'))\nrefractor.register(require('./lang/stan.js'))\nrefractor.register(require('./lang/stylus.js'))\nrefractor.register(require('./lang/swift.js'))\nrefractor.register(require('./lang/systemd.js'))\nrefractor.register(require('./lang/t4-cs.js'))\nrefractor.register(require('./lang/t4-templating.js'))\nrefractor.register(require('./lang/t4-vb.js'))\nrefractor.register(require('./lang/tap.js'))\nrefractor.register(require('./lang/tcl.js'))\nrefractor.register(require('./lang/textile.js'))\nrefractor.register(require('./lang/toml.js'))\nrefractor.register(require('./lang/tremor.js'))\nrefractor.register(require('./lang/tsx.js'))\nrefractor.register(require('./lang/tt2.js'))\nrefractor.register(require('./lang/turtle.js'))\nrefractor.register(require('./lang/twig.js'))\nrefractor.register(require('./lang/typescript.js'))\nrefractor.register(require('./lang/typoscript.js'))\nrefractor.register(require('./lang/unrealscript.js'))\nrefractor.register(require('./lang/uorazor.js'))\nrefractor.register(require('./lang/uri.js'))\nrefractor.register(require('./lang/v.js'))\nrefractor.register(require('./lang/vala.js'))\nrefractor.register(require('./lang/vbnet.js'))\nrefractor.register(require('./lang/velocity.js'))\nrefractor.register(require('./lang/verilog.js'))\nrefractor.register(require('./lang/vhdl.js'))\nrefractor.register(require('./lang/vim.js'))\nrefractor.register(require('./lang/visual-basic.js'))\nrefractor.register(require('./lang/warpscript.js'))\nrefractor.register(require('./lang/wasm.js'))\nrefractor.register(require('./lang/web-idl.js'))\nrefractor.register(require('./lang/wiki.js'))\nrefractor.register(require('./lang/wolfram.js'))\nrefractor.register(require('./lang/wren.js'))\nrefractor.register(require('./lang/xeora.js'))\nrefractor.register(require('./lang/xml-doc.js'))\nrefractor.register(require('./lang/xojo.js'))\nrefractor.register(require('./lang/xquery.js'))\nrefractor.register(require('./lang/yaml.js'))\nrefractor.register(require('./lang/yang.js'))\nrefractor.register(require('./lang/zig.js'))\n","'use strict'\n\nmodule.exports = abap\nabap.displayName = 'abap'\nabap.aliases = []\nfunction abap(Prism) {\n  Prism.languages.abap = {\n    comment: /^\\*.*/m,\n    string: /(`|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    'string-template': {\n      pattern: /([|}])(?:\\\\.|[^\\\\|{\\r\\n])*(?=[|{])/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    /* End Of Line comments should not interfere with strings when the\nquote character occurs within them. We assume a string being highlighted\ninside an EOL comment is more acceptable than the opposite.\n*/\n    'eol-comment': {\n      pattern: /(^|\\s)\".*/m,\n      lookbehind: true,\n      alias: 'comment'\n    },\n    keyword: {\n      pattern:\n        /(\\s|\\.|^)(?:SCIENTIFIC_WITH_LEADING_ZERO|SCALE_PRESERVING_SCIENTIFIC|RMC_COMMUNICATION_FAILURE|END-ENHANCEMENT-SECTION|MULTIPLY-CORRESPONDING|SUBTRACT-CORRESPONDING|VERIFICATION-MESSAGE|DIVIDE-CORRESPONDING|ENHANCEMENT-SECTION|CURRENCY_CONVERSION|RMC_SYSTEM_FAILURE|START-OF-SELECTION|MOVE-CORRESPONDING|RMC_INVALID_STATUS|CUSTOMER-FUNCTION|END-OF-DEFINITION|ENHANCEMENT-POINT|SYSTEM-EXCEPTIONS|ADD-CORRESPONDING|SCALE_PRESERVING|SELECTION-SCREEN|CURSOR-SELECTION|END-OF-SELECTION|LOAD-OF-PROGRAM|SCROLL-BOUNDARY|SELECTION-TABLE|EXCEPTION-TABLE|IMPLEMENTATIONS|PARAMETER-TABLE|RIGHT-JUSTIFIED|UNIT_CONVERSION|AUTHORITY-CHECK|LIST-PROCESSING|SIGN_AS_POSTFIX|COL_BACKGROUND|IMPLEMENTATION|INTERFACE-POOL|TRANSFORMATION|IDENTIFICATION|ENDENHANCEMENT|LINE-SELECTION|INITIALIZATION|LEFT-JUSTIFIED|SELECT-OPTIONS|SELECTION-SETS|COMMUNICATION|CORRESPONDING|DECIMAL_SHIFT|PRINT-CONTROL|VALUE-REQUEST|CHAIN-REQUEST|FUNCTION-POOL|FIELD-SYMBOLS|FUNCTIONALITY|INVERTED-DATE|SELECTION-SET|CLASS-METHODS|OUTPUT-LENGTH|CLASS-CODING|COL_NEGATIVE|ERRORMESSAGE|FIELD-GROUPS|HELP-REQUEST|NO-EXTENSION|NO-TOPOFPAGE|REDEFINITION|DISPLAY-MODE|ENDINTERFACE|EXIT-COMMAND|FIELD-SYMBOL|NO-SCROLLING|SHORTDUMP-ID|ACCESSPOLICY|CLASS-EVENTS|COL_POSITIVE|DECLARATIONS|ENHANCEMENTS|FILTER-TABLE|SWITCHSTATES|SYNTAX-CHECK|TRANSPORTING|ASYNCHRONOUS|SYNTAX-TRACE|TOKENIZATION|USER-COMMAND|WITH-HEADING|ABAP-SOURCE|BREAK-POINT|CHAIN-INPUT|COMPRESSION|FIXED-POINT|NEW-SECTION|NON-UNICODE|OCCURRENCES|RESPONSIBLE|SYSTEM-CALL|TRACE-TABLE|ABBREVIATED|CHAR-TO-HEX|END-OF-FILE|ENDFUNCTION|ENVIRONMENT|ASSOCIATION|COL_HEADING|EDITOR-CALL|END-OF-PAGE|ENGINEERING|IMPLEMENTED|INTENSIFIED|RADIOBUTTON|SYSTEM-EXIT|TOP-OF-PAGE|TRANSACTION|APPLICATION|CONCATENATE|DESTINATION|ENHANCEMENT|IMMEDIATELY|NO-GROUPING|PRECOMPILED|REPLACEMENT|TITLE-LINES|ACTIVATION|BYTE-ORDER|CLASS-POOL|CONNECTION|CONVERSION|DEFINITION|DEPARTMENT|EXPIRATION|INHERITING|MESSAGE-ID|NO-HEADING|PERFORMING|QUEUE-ONLY|RIGHTSPACE|SCIENTIFIC|STATUSINFO|STRUCTURES|SYNCPOINTS|WITH-TITLE|ATTRIBUTES|BOUNDARIES|CLASS-DATA|COL_NORMAL|DD\\/MM\\/YYYY|DESCENDING|INTERFACES|LINE-COUNT|MM\\/DD\\/YYYY|NON-UNIQUE|PRESERVING|SELECTIONS|STATEMENTS|SUBROUTINE|TRUNCATION|TYPE-POOLS|ARITHMETIC|BACKGROUND|ENDPROVIDE|EXCEPTIONS|IDENTIFIER|INDEX-LINE|OBLIGATORY|PARAMETERS|PERCENTAGE|PUSHBUTTON|RESOLUTION|COMPONENTS|DEALLOCATE|DISCONNECT|DUPLICATES|FIRST-LINE|HEAD-LINES|NO-DISPLAY|OCCURRENCE|RESPECTING|RETURNCODE|SUBMATCHES|TRACE-FILE|ASCENDING|BYPASSING|ENDMODULE|EXCEPTION|EXCLUDING|EXPORTING|INCREMENT|MATCHCODE|PARAMETER|PARTIALLY|PREFERRED|REFERENCE|REPLACING|RETURNING|SELECTION|SEPARATED|SPECIFIED|STATEMENT|TIMESTAMP|TYPE-POOL|ACCEPTING|APPENDAGE|ASSIGNING|COL_GROUP|COMPARING|CONSTANTS|DANGEROUS|IMPORTING|INSTANCES|LEFTSPACE|LOG-POINT|QUICKINFO|READ-ONLY|SCROLLING|SQLSCRIPT|STEP-LOOP|TOP-LINES|TRANSLATE|APPENDING|AUTHORITY|CHARACTER|COMPONENT|CONDITION|DIRECTORY|DUPLICATE|MESSAGING|RECEIVING|SUBSCREEN|ACCORDING|COL_TOTAL|END-LINES|ENDMETHOD|ENDSELECT|EXPANDING|EXTENSION|INCLUDING|INFOTYPES|INTERFACE|INTERVALS|LINE-SIZE|PF-STATUS|PROCEDURE|PROTECTED|REQUESTED|RESUMABLE|RIGHTPLUS|SAP-SPOOL|SECONDARY|STRUCTURE|SUBSTRING|TABLEVIEW|NUMOFCHAR|ADJACENT|ANALYSIS|ASSIGNED|BACKWARD|CHANNELS|CHECKBOX|CONTINUE|CRITICAL|DATAINFO|DD\\/MM\\/YY|DURATION|ENCODING|ENDCLASS|FUNCTION|LEFTPLUS|LINEFEED|MM\\/DD\\/YY|OVERFLOW|RECEIVED|SKIPPING|SORTABLE|STANDARD|SUBTRACT|SUPPRESS|TABSTRIP|TITLEBAR|TRUNCATE|UNASSIGN|WHENEVER|ANALYZER|COALESCE|COMMENTS|CONDENSE|DECIMALS|DEFERRED|ENDWHILE|EXPLICIT|KEYWORDS|MESSAGES|POSITION|PRIORITY|RECEIVER|RENAMING|TIMEZONE|TRAILING|ALLOCATE|CENTERED|CIRCULAR|CONTROLS|CURRENCY|DELETING|DESCRIBE|DISTANCE|ENDCATCH|EXPONENT|EXTENDED|GENERATE|IGNORING|INCLUDES|INTERNAL|MAJOR-ID|MODIFIER|NEW-LINE|OPTIONAL|PROPERTY|ROLLBACK|STARTING|SUPPLIED|ABSTRACT|CHANGING|CONTEXTS|CREATING|CUSTOMER|DATABASE|DAYLIGHT|DEFINING|DISTINCT|DIVISION|ENABLING|ENDCHAIN|ESCAPING|HARMLESS|IMPLICIT|INACTIVE|LANGUAGE|MINOR-ID|MULTIPLY|NEW-PAGE|NO-TITLE|POS_HIGH|SEPARATE|TEXTPOOL|TRANSFER|SELECTOR|DBMAXLEN|ITERATOR|ARCHIVE|BIT-XOR|BYTE-CO|COLLECT|COMMENT|CURRENT|DEFAULT|DISPLAY|ENDFORM|EXTRACT|LEADING|LISTBOX|LOCATOR|MEMBERS|METHODS|NESTING|POS_LOW|PROCESS|PROVIDE|RAISING|RESERVE|SECONDS|SUMMARY|VISIBLE|BETWEEN|BIT-AND|BYTE-CS|CLEANUP|COMPUTE|CONTROL|CONVERT|DATASET|ENDCASE|FORWARD|HEADERS|HOTSPOT|INCLUDE|INVERSE|KEEPING|NO-ZERO|OBJECTS|OVERLAY|PADDING|PATTERN|PROGRAM|REFRESH|SECTION|SUMMING|TESTING|VERSION|WINDOWS|WITHOUT|BIT-NOT|BYTE-CA|BYTE-NA|CASTING|CONTEXT|COUNTRY|DYNAMIC|ENABLED|ENDLOOP|EXECUTE|FRIENDS|HANDLER|HEADING|INITIAL|\\*-INPUT|LOGFILE|MAXIMUM|MINIMUM|NO-GAPS|NO-SIGN|PRAGMAS|PRIMARY|PRIVATE|REDUCED|REPLACE|REQUEST|RESULTS|UNICODE|WARNING|ALIASES|BYTE-CN|BYTE-NS|CALLING|COL_KEY|COLUMNS|CONNECT|ENDEXEC|ENTRIES|EXCLUDE|FILTERS|FURTHER|HELP-ID|LOGICAL|MAPPING|MESSAGE|NAMETAB|OPTIONS|PACKAGE|PERFORM|RECEIVE|STATICS|VARYING|BINDING|CHARLEN|GREATER|XSTRLEN|ACCEPT|APPEND|DETAIL|ELSEIF|ENDING|ENDTRY|FORMAT|FRAMES|GIVING|HASHED|HEADER|IMPORT|INSERT|MARGIN|MODULE|NATIVE|OBJECT|OFFSET|REMOTE|RESUME|SAVING|SIMPLE|SUBMIT|TABBED|TOKENS|UNIQUE|UNPACK|UPDATE|WINDOW|YELLOW|ACTUAL|ASPECT|CENTER|CURSOR|DELETE|DIALOG|DIVIDE|DURING|ERRORS|EVENTS|EXTEND|FILTER|HANDLE|HAVING|IGNORE|LITTLE|MEMORY|NO-GAP|OCCURS|OPTION|PERSON|PLACES|PUBLIC|REDUCE|REPORT|RESULT|SINGLE|SORTED|SWITCH|SYNTAX|TARGET|VALUES|WRITER|ASSERT|BLOCKS|BOUNDS|BUFFER|CHANGE|COLUMN|COMMIT|CONCAT|COPIES|CREATE|DDMMYY|DEFINE|ENDIAN|ESCAPE|EXPAND|KERNEL|LAYOUT|LEGACY|LEVELS|MMDDYY|NUMBER|OUTPUT|RANGES|READER|RETURN|SCREEN|SEARCH|SELECT|SHARED|SOURCE|STABLE|STATIC|SUBKEY|SUFFIX|TABLES|UNWIND|YYMMDD|ASSIGN|BACKUP|BEFORE|BINARY|BIT-OR|BLANKS|CLIENT|CODING|COMMON|DEMAND|DYNPRO|EXCEPT|EXISTS|EXPORT|FIELDS|GLOBAL|GROUPS|LENGTH|LOCALE|MEDIUM|METHOD|MODIFY|NESTED|OTHERS|REJECT|SCROLL|SUPPLY|SYMBOL|ENDFOR|STRLEN|ALIGN|BEGIN|BOUND|ENDAT|ENTRY|EVENT|FINAL|FLUSH|GRANT|INNER|SHORT|USING|WRITE|AFTER|BLACK|BLOCK|CLOCK|COLOR|COUNT|DUMMY|EMPTY|ENDDO|ENDON|GREEN|INDEX|INOUT|LEAVE|LEVEL|LINES|MODIF|ORDER|OUTER|RANGE|RESET|RETRY|RIGHT|SMART|SPLIT|STYLE|TABLE|THROW|UNDER|UNTIL|UPPER|UTF-8|WHERE|ALIAS|BLANK|CLEAR|CLOSE|EXACT|FETCH|FIRST|FOUND|GROUP|LLANG|LOCAL|OTHER|REGEX|SPOOL|TITLE|TYPES|VALID|WHILE|ALPHA|BOXED|CATCH|CHAIN|CHECK|CLASS|COVER|ENDIF|EQUIV|FIELD|FLOOR|FRAME|INPUT|LOWER|MATCH|NODES|PAGES|PRINT|RAISE|ROUND|SHIFT|SPACE|SPOTS|STAMP|STATE|TASKS|TIMES|TRMAC|ULINE|UNION|VALUE|WIDTH|EQUAL|LOG10|TRUNC|BLOB|CASE|CEIL|CLOB|COND|EXIT|FILE|GAPS|HOLD|INCL|INTO|KEEP|KEYS|LAST|LINE|LONG|LPAD|MAIL|MODE|OPEN|PINK|READ|ROWS|TEST|THEN|ZERO|AREA|BACK|BADI|BYTE|CAST|EDIT|EXEC|FAIL|FIND|FKEQ|FONT|FREE|GKEQ|HIDE|INIT|ITNO|LATE|LOOP|MAIN|MARK|MOVE|NEXT|NULL|RISK|ROLE|UNIT|WAIT|ZONE|BASE|CALL|CODE|DATA|DATE|FKGE|GKGE|HIGH|KIND|LEFT|LIST|MASK|MESH|NAME|NODE|PACK|PAGE|POOL|SEND|SIGN|SIZE|SOME|STOP|TASK|TEXT|TIME|USER|VARY|WITH|WORD|BLUE|CONV|COPY|DEEP|ELSE|FORM|FROM|HINT|ICON|JOIN|LIKE|LOAD|ONLY|PART|SCAN|SKIP|SORT|TYPE|UNIX|VIEW|WHEN|WORK|ACOS|ASIN|ATAN|COSH|EACH|FRAC|LESS|RTTI|SINH|SQRT|TANH|AVG|BIT|DIV|ISO|LET|OUT|PAD|SQL|ALL|CI_|CPI|END|LOB|LPI|MAX|MIN|NEW|OLE|RUN|SET|\\?TO|YES|ABS|ADD|AND|BIG|FOR|HDB|JOB|LOW|NOT|SAP|TRY|VIA|XML|ANY|GET|IDS|KEY|MOD|OFF|PUT|RAW|RED|REF|SUM|TAB|XSD|CNT|COS|EXP|LOG|SIN|TAN|XOR|AT|CO|CP|DO|GT|ID|IF|NS|OR|BT|CA|CS|GE|NA|NB|EQ|IN|LT|NE|NO|OF|ON|PF|TO|AS|BY|CN|IS|LE|NP|UP|E|I|M|O|Z|C|X)\\b/i,\n      lookbehind: true\n    },\n    /* Numbers can be only integers. Decimal or Hex appear only as strings */\n    number: /\\b\\d+\\b/,\n    /* Operators must always be surrounded by whitespace, they cannot be put\nadjacent to operands.\n*/\n    operator: {\n      pattern: /(\\s)(?:\\*\\*?|<[=>]?|>=?|\\?=|[-+\\/=])(?=\\s)/,\n      lookbehind: true\n    },\n    'string-operator': {\n      pattern: /(\\s)&&?(?=\\s)/,\n      lookbehind: true,\n      /* The official editor highlights */\n      alias: 'keyword'\n    },\n    'token-operator': [\n      {\n        /* Special operators used to access structure components, class methods/attributes, etc. */\n        pattern: /(\\w)(?:->?|=>|[~|{}])(?=\\w)/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      {\n        /* Special tokens used do delimit string templates */\n        pattern: /[|{}]/,\n        alias: 'punctuation'\n      }\n    ],\n    punctuation: /[,.:()]/\n  }\n}\n","'use strict'\n\nmodule.exports = abnf\nabnf.displayName = 'abnf'\nabnf.aliases = []\nfunction abnf(Prism) {\n  ;(function (Prism) {\n    var coreRules =\n      '(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)'\n    Prism.languages.abnf = {\n      comment: /;.*/,\n      string: {\n        pattern: /(?:%[is])?\"[^\"\\n\\r]*\"/,\n        greedy: true,\n        inside: {\n          punctuation: /^%[is]/\n        }\n      },\n      range: {\n        pattern: /%(?:b[01]+-[01]+|d\\d+-\\d+|x[A-F\\d]+-[A-F\\d]+)/i,\n        alias: 'number'\n      },\n      terminal: {\n        pattern:\n          /%(?:b[01]+(?:\\.[01]+)*|d\\d+(?:\\.\\d+)*|x[A-F\\d]+(?:\\.[A-F\\d]+)*)/i,\n        alias: 'number'\n      },\n      repetition: {\n        pattern: /(^|[^\\w-])(?:\\d*\\*\\d*|\\d+)/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      definition: {\n        pattern: /(^[ \\t]*)(?:[a-z][\\w-]*|<[^<>\\r\\n]*>)(?=\\s*=)/m,\n        lookbehind: true,\n        alias: 'keyword',\n        inside: {\n          punctuation: /<|>/\n        }\n      },\n      'core-rule': {\n        pattern: RegExp(\n          '(?:(^|[^<\\\\w-])' + coreRules + '|<' + coreRules + '>)(?![\\\\w-])',\n          'i'\n        ),\n        lookbehind: true,\n        alias: ['rule', 'constant'],\n        inside: {\n          punctuation: /<|>/\n        }\n      },\n      rule: {\n        pattern: /(^|[^<\\w-])[a-z][\\w-]*|<[^<>\\r\\n]*>/i,\n        lookbehind: true,\n        inside: {\n          punctuation: /<|>/\n        }\n      },\n      operator: /=\\/?|\\//,\n      punctuation: /[()\\[\\]]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = actionscript\nactionscript.displayName = 'actionscript'\nactionscript.aliases = []\nfunction actionscript(Prism) {\n  Prism.languages.actionscript = Prism.languages.extend('javascript', {\n    keyword:\n      /\\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\\b/,\n    operator: /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n  })\n  Prism.languages.actionscript['class-name'].alias = 'function' // doesn't work with AS because AS is too complex\n  delete Prism.languages.actionscript['parameter']\n  delete Prism.languages.actionscript['literal-property']\n  if (Prism.languages.markup) {\n    Prism.languages.insertBefore('actionscript', 'string', {\n      xml: {\n        pattern:\n          /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n        lookbehind: true,\n        inside: Prism.languages.markup\n      }\n    })\n  }\n}\n","'use strict'\n\nmodule.exports = ada\nada.displayName = 'ada'\nada.aliases = []\nfunction ada(Prism) {\n  Prism.languages.ada = {\n    comment: /--.*/,\n    string: /\"(?:\"\"|[^\"\\r\\f\\n])*\"/,\n    number: [\n      {\n        pattern:\n          /\\b\\d(?:_?\\d)*#[\\dA-F](?:_?[\\dA-F])*(?:\\.[\\dA-F](?:_?[\\dA-F])*)?#(?:E[+-]?\\d(?:_?\\d)*)?/i\n      },\n      {\n        pattern: /\\b\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:E[+-]?\\d(?:_?\\d)*)?\\b/i\n      }\n    ],\n    'attr-name': /\\b'\\w+/,\n    keyword:\n      /\\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    operator: /<[=>]?|>=?|=>?|:=|\\/=?|\\*\\*?|[&+-]/,\n    punctuation: /\\.\\.?|[,;():]/,\n    char: /'.'/,\n    variable: /\\b[a-z](?:\\w)*\\b/i\n  }\n}\n","'use strict'\n\nmodule.exports = agda\nagda.displayName = 'agda'\nagda.aliases = []\nfunction agda(Prism) {\n  ;(function (Prism) {\n    Prism.languages.agda = {\n      comment: /\\{-[\\s\\S]*?(?:-\\}|$)|--.*/,\n      string: {\n        pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n        greedy: true\n      },\n      punctuation: /[(){}⦃⦄.;@]/,\n      'class-name': {\n        pattern: /((?:data|record) +)\\S+/,\n        lookbehind: true\n      },\n      function: {\n        pattern: /(^[ \\t]*)(?!\\s)[^:\\r\\n]+(?=:)/m,\n        lookbehind: true\n      },\n      operator: {\n        pattern: /(^\\s*|\\s)(?:[=|:∀→λ\\\\?_]|->)(?=\\s)/,\n        lookbehind: true\n      },\n      keyword:\n        /\\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\\b/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = al\nal.displayName = 'al'\nal.aliases = []\nfunction al(Prism) {\n  // based on https://github.com/microsoft/AL/blob/master/grammar/alsyntax.tmlanguage\n  Prism.languages.al = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    string: {\n      pattern: /'(?:''|[^'\\r\\n])*'(?!')|\"(?:\"\"|[^\"\\r\\n])*\"(?!\")/,\n      greedy: true\n    },\n    function: {\n      pattern:\n        /(\\b(?:event|procedure|trigger)\\s+|(?:^|[^.])\\.\\s*)[a-z_]\\w*(?=\\s*\\()/i,\n      lookbehind: true\n    },\n    keyword: [\n      // keywords\n      /\\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\\b/i, // objects and metadata that are used like keywords\n      /\\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\\b/i\n    ],\n    number:\n      /\\b(?:0x[\\da-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)(?:F|LL?|U(?:LL?)?)?\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    variable: /\\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\\b/,\n    'class-name':\n      /\\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\\b/i,\n    operator: /\\.\\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\\b(?:and|div|mod|not|or|xor)\\b/i,\n    punctuation: /[()\\[\\]{}:.;,]/\n  }\n}\n","'use strict'\n\nmodule.exports = antlr4\nantlr4.displayName = 'antlr4'\nantlr4.aliases = ['g4']\nfunction antlr4(Prism) {\n  Prism.languages.antlr4 = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    string: {\n      pattern: /'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n      greedy: true\n    },\n    'character-class': {\n      pattern: /\\[(?:\\\\.|[^\\\\\\]\\r\\n])*\\]/,\n      greedy: true,\n      alias: 'regex',\n      inside: {\n        range: {\n          pattern: /([^[]|(?:^|[^\\\\])(?:\\\\\\\\)*\\\\\\[)-(?!\\])/,\n          lookbehind: true,\n          alias: 'punctuation'\n        },\n        escape:\n          /\\\\(?:u(?:[a-fA-F\\d]{4}|\\{[a-fA-F\\d]+\\})|[pP]\\{[=\\w-]+\\}|[^\\r\\nupP])/,\n        punctuation: /[\\[\\]]/\n      }\n    },\n    action: {\n      pattern: /\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\}/,\n      greedy: true,\n      inside: {\n        content: {\n          // this might be C, C++, Python, Java, C#, or any other language ANTLR4 compiles to\n          pattern: /(\\{)[\\s\\S]+(?=\\})/,\n          lookbehind: true\n        },\n        punctuation: /[{}]/\n      }\n    },\n    command: {\n      pattern:\n        /(->\\s*(?!\\s))(?:\\s*(?:,\\s*)?\\b[a-z]\\w*(?:\\s*\\([^()\\r\\n]*\\))?)+(?=\\s*;)/i,\n      lookbehind: true,\n      inside: {\n        function: /\\b\\w+(?=\\s*(?:[,(]|$))/,\n        punctuation: /[,()]/\n      }\n    },\n    annotation: {\n      pattern: /@\\w+(?:::\\w+)*/,\n      alias: 'keyword'\n    },\n    label: {\n      pattern: /#[ \\t]*\\w+/,\n      alias: 'punctuation'\n    },\n    keyword:\n      /\\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\\b/,\n    definition: [\n      {\n        pattern: /\\b[a-z]\\w*(?=\\s*:)/,\n        alias: ['rule', 'class-name']\n      },\n      {\n        pattern: /\\b[A-Z]\\w*(?=\\s*:)/,\n        alias: ['token', 'constant']\n      }\n    ],\n    constant: /\\b[A-Z][A-Z_]*\\b/,\n    operator: /\\.\\.|->|[|~]|[*+?]\\??/,\n    punctuation: /[;:()=]/\n  }\n  Prism.languages.g4 = Prism.languages.antlr4\n}\n","'use strict'\n\nmodule.exports = apacheconf\napacheconf.displayName = 'apacheconf'\napacheconf.aliases = []\nfunction apacheconf(Prism) {\n  Prism.languages.apacheconf = {\n    comment: /#.*/,\n    'directive-inline': {\n      pattern:\n        /(^[\\t ]*)\\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\\b/im,\n      lookbehind: true,\n      alias: 'property'\n    },\n    'directive-block': {\n      pattern:\n        /<\\/?\\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\\b.*>/i,\n      inside: {\n        'directive-block': {\n          pattern: /^<\\/?\\w+/,\n          inside: {\n            punctuation: /^<\\/?/\n          },\n          alias: 'tag'\n        },\n        'directive-block-parameter': {\n          pattern: /.*[^>]/,\n          inside: {\n            punctuation: /:/,\n            string: {\n              pattern: /(\"|').*\\1/,\n              inside: {\n                variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/\n              }\n            }\n          },\n          alias: 'attr-value'\n        },\n        punctuation: />/\n      },\n      alias: 'tag'\n    },\n    'directive-flags': {\n      pattern: /\\[(?:[\\w=],?)+\\]/,\n      alias: 'keyword'\n    },\n    string: {\n      pattern: /(\"|').*\\1/,\n      inside: {\n        variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/\n      }\n    },\n    variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/,\n    regex: /\\^?.*\\$|\\^.*\\$?/\n  }\n}\n","'use strict'\nvar refractorSql = require('./sql.js')\nmodule.exports = apex\napex.displayName = 'apex'\napex.aliases = []\nfunction apex(Prism) {\n  Prism.register(refractorSql)\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:(?:after|before)(?=\\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\\s+sharing)\\b/i\n    var className =\n      /\\b(?:(?=[a-z_]\\w*\\s*[<\\[])|(?!<keyword>))[A-Z_]\\w*(?:\\s*\\.\\s*[A-Z_]\\w*)*\\b(?:\\s*(?:\\[\\s*\\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*/.source.replace(\n        /<keyword>/g,\n        function () {\n          return keywords.source\n        }\n      )\n    /** @param {string} pattern */\n    function insertClassName(pattern) {\n      return RegExp(\n        pattern.replace(/<CLASS-NAME>/g, function () {\n          return className\n        }),\n        'i'\n      )\n    }\n    var classNameInside = {\n      keyword: keywords,\n      punctuation: /[()\\[\\]{};,:.<>]/\n    }\n    Prism.languages.apex = {\n      comment: Prism.languages.clike.comment,\n      string: Prism.languages.clike.string,\n      sql: {\n        pattern: /((?:[=,({:]|\\breturn)\\s*)\\[[^\\[\\]]*\\]/i,\n        lookbehind: true,\n        greedy: true,\n        alias: 'language-sql',\n        inside: Prism.languages.sql\n      },\n      annotation: {\n        pattern: /@\\w+\\b/,\n        alias: 'punctuation'\n      },\n      'class-name': [\n        {\n          pattern: insertClassName(\n            /(\\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\\s+\\w+\\s+on)\\s+)<CLASS-NAME>/\n              .source\n          ),\n          lookbehind: true,\n          inside: classNameInside\n        },\n        {\n          // cast\n          pattern: insertClassName(\n            /(\\(\\s*)<CLASS-NAME>(?=\\s*\\)\\s*[\\w(])/.source\n          ),\n          lookbehind: true,\n          inside: classNameInside\n        },\n        {\n          // variable/parameter declaration and return types\n          pattern: insertClassName(/<CLASS-NAME>(?=\\s*\\w+\\s*[;=,(){:])/.source),\n          inside: classNameInside\n        }\n      ],\n      trigger: {\n        pattern: /(\\btrigger\\s+)\\w+\\b/i,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      keyword: keywords,\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n      boolean: /\\b(?:false|true)\\b/i,\n      number: /(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d+|L)?)\\b/i,\n      operator:\n        /[!=](?:==?)?|\\?\\.?|&&|\\|\\||--|\\+\\+|[-+*/^&|]=?|:|<<?=?|>{1,3}=?/,\n      punctuation: /[()\\[\\]{};,.]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = apl\napl.displayName = 'apl'\napl.aliases = []\nfunction apl(Prism) {\n  Prism.languages.apl = {\n    comment: /(?:⍝|#[! ]).*$/m,\n    string: {\n      pattern: /'(?:[^'\\r\\n]|'')*'/,\n      greedy: true\n    },\n    number:\n      /¯?(?:\\d*\\.?\\b\\d+(?:e[+¯]?\\d+)?|¯|∞)(?:j¯?(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+¯]?\\d+)?|¯|∞))?/i,\n    statement: /:[A-Z][a-z][A-Za-z]*\\b/,\n    'system-function': {\n      pattern: /⎕[A-Z]+/i,\n      alias: 'function'\n    },\n    constant: /[⍬⌾#⎕⍞]/,\n    function: /[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,\n    'monadic-operator': {\n      pattern: /[\\\\\\/⌿⍀¨⍨⌶&∥]/,\n      alias: 'operator'\n    },\n    'dyadic-operator': {\n      pattern: /[.⍣⍠⍤∘⌸@⌺⍥]/,\n      alias: 'operator'\n    },\n    assignment: {\n      pattern: /←/,\n      alias: 'keyword'\n    },\n    punctuation: /[\\[;\\]()◇⋄]/,\n    dfn: {\n      pattern: /[{}⍺⍵⍶⍹∇⍫:]/,\n      alias: 'builtin'\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = applescript\napplescript.displayName = 'applescript'\napplescript.aliases = []\nfunction applescript(Prism) {\n  Prism.languages.applescript = {\n    comment: [\n      // Allow one level of nesting\n      /\\(\\*(?:\\(\\*(?:[^*]|\\*(?!\\)))*\\*\\)|(?!\\(\\*)[\\s\\S])*?\\*\\)/,\n      /--.+/,\n      /#.+/\n    ],\n    string: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e-?\\d+)?\\b/i,\n    operator: [\n      /[&=≠≤≥*+\\-\\/÷^]|[<>]=?/,\n      /\\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\\b/\n    ],\n    keyword:\n      /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n    'class-name':\n      /\\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\\b/,\n    punctuation: /[{}():,¬«»《》]/\n  }\n}\n","'use strict'\n\nmodule.exports = aql\naql.displayName = 'aql'\naql.aliases = []\nfunction aql(Prism) {\n  Prism.languages.aql = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    property: {\n      pattern:\n        /([{,]\\s*)(?:(?!\\d)\\w+|([\"'´`])(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2)(?=\\s*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\.)*\\1/,\n      greedy: true\n    },\n    identifier: {\n      pattern: /([´`])(?:(?!\\1)[^\\\\\\r\\n]|\\\\.)*\\1/,\n      greedy: true\n    },\n    variable: /@@?\\w+/,\n    keyword: [\n      {\n        pattern: /(\\bWITH\\s+)COUNT(?=\\s+INTO\\b)/i,\n        lookbehind: true\n      },\n      /\\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\\b/i, // pseudo keywords get a lookbehind to avoid false positives\n      {\n        pattern: /(^|[^\\w.[])(?:KEEP|PRUNE|SEARCH|TO)\\b/i,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\w.[])(?:CURRENT|NEW|OLD)\\b/,\n        lookbehind: true\n      },\n      {\n        pattern: /\\bOPTIONS(?=\\s*\\{)/i\n      }\n    ],\n    function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n    boolean: /\\b(?:false|true)\\b/i,\n    range: {\n      pattern: /\\.\\./,\n      alias: 'operator'\n    },\n    number: [\n      /\\b0b[01]+/i,\n      /\\b0x[0-9a-f]+/i,\n      /(?:\\B\\.\\d+|\\b(?:0|[1-9]\\d*)(?:\\.\\d+)?)(?:e[+-]?\\d+)?/i\n    ],\n    operator: /\\*{2,}|[=!]~|[!=<>]=?|&&|\\|\\||[-+*/%]/,\n    punctuation: /::|[?.:,;()[\\]{}]/\n  }\n}\n","'use strict'\nvar refractorCpp = require('./cpp.js')\nmodule.exports = arduino\narduino.displayName = 'arduino'\narduino.aliases = ['ino']\nfunction arduino(Prism) {\n  Prism.register(refractorCpp)\n  Prism.languages.arduino = Prism.languages.extend('cpp', {\n    keyword:\n      /\\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\\b/,\n    constant:\n      /\\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\\b/,\n    builtin:\n      /\\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\\b/\n  })\n  Prism.languages.ino = Prism.languages.arduino\n}\n","'use strict'\n\nmodule.exports = arff\narff.displayName = 'arff'\narff.aliases = []\nfunction arff(Prism) {\n  Prism.languages.arff = {\n    comment: /%.*/,\n    string: {\n      pattern: /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword: /@(?:attribute|data|end|relation)\\b/i,\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    punctuation: /[{},]/\n  }\n}\n","'use strict'\n\nmodule.exports = asciidoc\nasciidoc.displayName = 'asciidoc'\nasciidoc.aliases = ['adoc']\nfunction asciidoc(Prism) {\n  ;(function (Prism) {\n    var attributes = {\n      pattern:\n        /(^[ \\t]*)\\[(?!\\[)(?:([\"'$`])(?:(?!\\2)[^\\\\]|\\\\.)*\\2|\\[(?:[^\\[\\]\\\\]|\\\\.)*\\]|[^\\[\\]\\\\\"'$`]|\\\\.)*\\]/m,\n      lookbehind: true,\n      inside: {\n        quoted: {\n          pattern: /([$`])(?:(?!\\1)[^\\\\]|\\\\.)*\\1/,\n          inside: {\n            punctuation: /^[$`]|[$`]$/\n          }\n        },\n        interpreted: {\n          pattern: /'(?:[^'\\\\]|\\\\.)*'/,\n          inside: {\n            punctuation: /^'|'$/ // See rest below\n          }\n        },\n        string: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        variable: /\\w+(?==)/,\n        punctuation: /^\\[|\\]$|,/,\n        operator: /=/,\n        // The negative look-ahead prevents blank matches\n        'attr-value': /(?!^\\s+$).+/\n      }\n    }\n    var asciidoc = (Prism.languages.asciidoc = {\n      'comment-block': {\n        pattern: /^(\\/{4,})(?:\\r?\\n|\\r)(?:[\\s\\S]*(?:\\r?\\n|\\r))??\\1/m,\n        alias: 'comment'\n      },\n      table: {\n        pattern: /^\\|={3,}(?:(?:\\r?\\n|\\r(?!\\n)).*)*?(?:\\r?\\n|\\r)\\|={3,}$/m,\n        inside: {\n          specifiers: {\n            pattern:\n              /(?:(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)[+*](?:[<^>](?:\\.[<^>])?|\\.[<^>])?|[<^>](?:\\.[<^>])?|\\.[<^>])[a-z]*|[a-z]+)(?=\\|)/,\n            alias: 'attr-value'\n          },\n          punctuation: {\n            pattern: /(^|[^\\\\])[|!]=*/,\n            lookbehind: true\n          } // See rest below\n        }\n      },\n      'passthrough-block': {\n        pattern: /^(\\+{4,})(?:\\r?\\n|\\r)(?:[\\s\\S]*(?:\\r?\\n|\\r))??\\1$/m,\n        inside: {\n          punctuation: /^\\++|\\++$/ // See rest below\n        }\n      },\n      // Literal blocks and listing blocks\n      'literal-block': {\n        pattern: /^(-{4,}|\\.{4,})(?:\\r?\\n|\\r)(?:[\\s\\S]*(?:\\r?\\n|\\r))??\\1$/m,\n        inside: {\n          punctuation: /^(?:-+|\\.+)|(?:-+|\\.+)$/ // See rest below\n        }\n      },\n      // Sidebar blocks, quote blocks, example blocks and open blocks\n      'other-block': {\n        pattern:\n          /^(--|\\*{4,}|_{4,}|={4,})(?:\\r?\\n|\\r)(?:[\\s\\S]*(?:\\r?\\n|\\r))??\\1$/m,\n        inside: {\n          punctuation: /^(?:-+|\\*+|_+|=+)|(?:-+|\\*+|_+|=+)$/ // See rest below\n        }\n      },\n      // list-punctuation and list-label must appear before indented-block\n      'list-punctuation': {\n        pattern:\n          /(^[ \\t]*)(?:-|\\*{1,5}|\\.{1,5}|(?:[a-z]|\\d+)\\.|[xvi]+\\))(?= )/im,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      'list-label': {\n        pattern: /(^[ \\t]*)[a-z\\d].+(?::{2,4}|;;)(?=\\s)/im,\n        lookbehind: true,\n        alias: 'symbol'\n      },\n      'indented-block': {\n        pattern: /((\\r?\\n|\\r)\\2)([ \\t]+)\\S.*(?:(?:\\r?\\n|\\r)\\3.+)*(?=\\2{2}|$)/,\n        lookbehind: true\n      },\n      comment: /^\\/\\/.*/m,\n      title: {\n        pattern:\n          /^.+(?:\\r?\\n|\\r)(?:={3,}|-{3,}|~{3,}|\\^{3,}|\\+{3,})$|^={1,5} .+|^\\.(?![\\s.]).*/m,\n        alias: 'important',\n        inside: {\n          punctuation: /^(?:\\.|=+)|(?:=+|-+|~+|\\^+|\\++)$/ // See rest below\n        }\n      },\n      'attribute-entry': {\n        pattern: /^:[^:\\r\\n]+:(?: .*?(?: \\+(?:\\r?\\n|\\r).*?)*)?$/m,\n        alias: 'tag'\n      },\n      attributes: attributes,\n      hr: {\n        pattern: /^'{3,}$/m,\n        alias: 'punctuation'\n      },\n      'page-break': {\n        pattern: /^<{3,}$/m,\n        alias: 'punctuation'\n      },\n      admonition: {\n        pattern: /^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,\n        alias: 'keyword'\n      },\n      callout: [\n        {\n          pattern: /(^[ \\t]*)<?\\d*>/m,\n          lookbehind: true,\n          alias: 'symbol'\n        },\n        {\n          pattern: /<\\d+>/,\n          alias: 'symbol'\n        }\n      ],\n      macro: {\n        pattern:\n          /\\b[a-z\\d][a-z\\d-]*::?(?:[^\\s\\[\\]]*\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*\\1|\\\\.)*\\])/,\n        inside: {\n          function: /^[a-z\\d-]+(?=:)/,\n          punctuation: /^::?/,\n          attributes: {\n            pattern: /(?:\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*\\1|\\\\.)*\\])/,\n            inside: attributes.inside\n          }\n        }\n      },\n      inline: {\n        /*\nThe initial look-behind prevents the highlighting of escaped quoted text.\nQuoted text can be multi-line but cannot span an empty line.\nAll quoted text can have attributes before [foobar, 'foobar', baz=\"bar\"].\nFirst, we handle the constrained quotes.\nThose must be bounded by non-word chars and cannot have spaces between the delimiter and the first char.\nThey are, in order: _emphasis_, ``double quotes'', `single quotes', `monospace`, 'emphasis', *strong*, +monospace+ and #unquoted#\nThen we handle the unconstrained quotes.\nThose do not have the restrictions of the constrained quotes.\nThey are, in order: __emphasis__, **strong**, ++monospace++, +++passthrough+++, ##unquoted##, $$passthrough$$, ~subscript~, ^superscript^, {attribute-reference}, [[anchor]], [[[bibliography anchor]]], <<xref>>, (((indexes))) and ((indexes))\n*/\n        pattern:\n          /(^|[^\\\\])(?:(?:\\B\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\2)[^\\\\]|\\\\.)*\\2|\\\\.)*\\])?(?:\\b_(?!\\s)(?: _|[^_\\\\\\r\\n]|\\\\.)+(?:(?:\\r?\\n|\\r)(?: _|[^_\\\\\\r\\n]|\\\\.)+)*_\\b|\\B``(?!\\s).+?(?:(?:\\r?\\n|\\r).+?)*''\\B|\\B`(?!\\s)(?:[^`'\\s]|\\s+\\S)+['`]\\B|\\B(['*+#])(?!\\s)(?: \\3|(?!\\3)[^\\\\\\r\\n]|\\\\.)+(?:(?:\\r?\\n|\\r)(?: \\3|(?!\\3)[^\\\\\\r\\n]|\\\\.)+)*\\3\\B)|(?:\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\4)[^\\\\]|\\\\.)*\\4|\\\\.)*\\])?(?:(__|\\*\\*|\\+\\+\\+?|##|\\$\\$|[~^]).+?(?:(?:\\r?\\n|\\r).+?)*\\5|\\{[^}\\r\\n]+\\}|\\[\\[\\[?.+?(?:(?:\\r?\\n|\\r).+?)*\\]?\\]\\]|<<.+?(?:(?:\\r?\\n|\\r).+?)*>>|\\(\\(\\(?.+?(?:(?:\\r?\\n|\\r).+?)*\\)?\\)\\)))/m,\n        lookbehind: true,\n        inside: {\n          attributes: attributes,\n          url: {\n            pattern: /^(?:\\[\\[\\[?.+?\\]?\\]\\]|<<.+?>>)$/,\n            inside: {\n              punctuation: /^(?:\\[\\[\\[?|<<)|(?:\\]\\]\\]?|>>)$/\n            }\n          },\n          'attribute-ref': {\n            pattern: /^\\{.+\\}$/,\n            inside: {\n              variable: {\n                pattern: /(^\\{)[a-z\\d,+_-]+/,\n                lookbehind: true\n              },\n              operator: /^[=?!#%@$]|!(?=[:}])/,\n              punctuation: /^\\{|\\}$|::?/\n            }\n          },\n          italic: {\n            pattern: /^(['_])[\\s\\S]+\\1$/,\n            inside: {\n              punctuation: /^(?:''?|__?)|(?:''?|__?)$/\n            }\n          },\n          bold: {\n            pattern: /^\\*[\\s\\S]+\\*$/,\n            inside: {\n              punctuation: /^\\*\\*?|\\*\\*?$/\n            }\n          },\n          punctuation:\n            /^(?:``?|\\+{1,3}|##?|\\$\\$|[~^]|\\(\\(\\(?)|(?:''?|\\+{1,3}|##?|\\$\\$|[~^`]|\\)?\\)\\))$/\n        }\n      },\n      replacement: {\n        pattern: /\\((?:C|R|TM)\\)/,\n        alias: 'builtin'\n      },\n      entity: /&#?[\\da-z]{1,8};/i,\n      'line-continuation': {\n        pattern: /(^| )\\+$/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      }\n    }) // Allow some nesting. There is no recursion though, so cloning should not be needed.\n    function copyFromAsciiDoc(keys) {\n      keys = keys.split(' ')\n      var o = {}\n      for (var i = 0, l = keys.length; i < l; i++) {\n        o[keys[i]] = asciidoc[keys[i]]\n      }\n      return o\n    }\n    attributes.inside['interpreted'].inside.rest = copyFromAsciiDoc(\n      'macro inline replacement entity'\n    )\n    asciidoc['passthrough-block'].inside.rest = copyFromAsciiDoc('macro')\n    asciidoc['literal-block'].inside.rest = copyFromAsciiDoc('callout')\n    asciidoc['table'].inside.rest = copyFromAsciiDoc(\n      'comment-block passthrough-block literal-block other-block list-punctuation indented-block comment title attribute-entry attributes hr page-break admonition list-label callout macro inline replacement entity line-continuation'\n    )\n    asciidoc['other-block'].inside.rest = copyFromAsciiDoc(\n      'table list-punctuation indented-block comment attribute-entry attributes hr page-break admonition list-label macro inline replacement entity line-continuation'\n    )\n    asciidoc['title'].inside.rest = copyFromAsciiDoc(\n      'macro inline replacement entity'\n    ) // Plugin to make entity title show the real entity, idea by Roman Komarov\n    Prism.hooks.add('wrap', function (env) {\n      if (env.type === 'entity') {\n        env.attributes['title'] = env.content.value.replace(/&amp;/, '&')\n      }\n    })\n    Prism.languages.adoc = Prism.languages.asciidoc\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = asm6502\nasm6502.displayName = 'asm6502'\nasm6502.aliases = []\nfunction asm6502(Prism) {\n  Prism.languages.asm6502 = {\n    comment: /;.*/,\n    directive: {\n      pattern: /\\.\\w+(?= )/,\n      alias: 'property'\n    },\n    string: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    'op-code': {\n      pattern:\n        /\\b(?:ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA|adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya)\\b/,\n      alias: 'keyword'\n    },\n    'hex-number': {\n      pattern: /#?\\$[\\da-f]{1,4}\\b/i,\n      alias: 'number'\n    },\n    'binary-number': {\n      pattern: /#?%[01]+\\b/,\n      alias: 'number'\n    },\n    'decimal-number': {\n      pattern: /#?\\b\\d+\\b/,\n      alias: 'number'\n    },\n    register: {\n      pattern: /\\b[xya]\\b/i,\n      alias: 'variable'\n    },\n    punctuation: /[(),:]/\n  }\n}\n","'use strict'\n\nmodule.exports = asmatmel\nasmatmel.displayName = 'asmatmel'\nasmatmel.aliases = []\nfunction asmatmel(Prism) {\n  Prism.languages.asmatmel = {\n    comment: {\n      pattern: /;.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    constant: /\\b(?:PORT[A-Z]|DDR[A-Z]|(?:DD|P)[A-Z](?:\\d|[0-2]\\d|3[01]))\\b/,\n    directive: {\n      pattern: /\\.\\w+(?= )/,\n      alias: 'property'\n    },\n    'r-register': {\n      pattern: /\\br(?:\\d|[12]\\d|3[01])\\b/,\n      alias: 'variable'\n    },\n    'op-code': {\n      pattern:\n        /\\b(?:ADC|ADD|ADIW|AND|ANDI|ASR|BCLR|BLD|BRBC|BRBS|BRCC|BRCS|BREAK|BREQ|BRGE|BRHC|BRHS|BRID|BRIE|BRLO|BRLT|BRMI|BRNE|BRPL|BRSH|BRTC|BRTS|BRVC|BRVS|BSET|BST|CALL|CBI|CBR|CLC|CLH|CLI|CLN|CLR|CLS|CLT|CLV|CLZ|COM|CP|CPC|CPI|CPSE|DEC|DES|EICALL|EIJMP|ELPM|EOR|FMUL|FMULS|FMULSU|ICALL|IJMP|IN|INC|JMP|LAC|LAS|LAT|LD|LD[A-Za-z0-9]|LPM|LSL|LSR|MOV|MOVW|MUL|MULS|MULSU|NEG|NOP|OR|ORI|OUT|POP|PUSH|RCALL|RET|RETI|RJMP|ROL|ROR|SBC|SBCI|SBI|SBIC|SBIS|SBIW|SBR|SBRC|SBRS|SEC|SEH|SEI|SEN|SER|SES|SET|SEV|SEZ|SLEEP|SPM|ST|ST[A-Z0-9]|SUB|SUBI|SWAP|TST|WDR|XCH|adc|add|adiw|and|andi|asr|bclr|bld|brbc|brbs|brcc|brcs|break|breq|brge|brhc|brhs|brid|brie|brlo|brlt|brmi|brne|brpl|brsh|brtc|brts|brvc|brvs|bset|bst|call|cbi|cbr|clc|clh|cli|cln|clr|cls|clt|clv|clz|com|cp|cpc|cpi|cpse|dec|des|eicall|eijmp|elpm|eor|fmul|fmuls|fmulsu|icall|ijmp|in|inc|jmp|lac|las|lat|ld|ld[a-z0-9]|lpm|lsl|lsr|mov|movw|mul|muls|mulsu|neg|nop|or|ori|out|pop|push|rcall|ret|reti|rjmp|rol|ror|sbc|sbci|sbi|sbic|sbis|sbiw|sbr|sbrc|sbrs|sec|seh|sei|sen|ser|ses|set|sev|sez|sleep|spm|st|st[a-zA-Z0-9]|sub|subi|swap|tst|wdr|xch)\\b/,\n      alias: 'keyword'\n    },\n    'hex-number': {\n      pattern: /#?\\$[\\da-f]{2,4}\\b/i,\n      alias: 'number'\n    },\n    'binary-number': {\n      pattern: /#?%[01]+\\b/,\n      alias: 'number'\n    },\n    'decimal-number': {\n      pattern: /#?\\b\\d+\\b/,\n      alias: 'number'\n    },\n    register: {\n      pattern: /\\b[acznvshtixy]\\b/i,\n      alias: 'variable'\n    },\n    operator: />>=?|<<=?|&&?|\\|\\|?|[-+*/%&|^!=<>?]=?/,\n    punctuation: /[(),:]/\n  }\n}\n","'use strict'\nvar refractorCsharp = require('./csharp.js')\nmodule.exports = aspnet\naspnet.displayName = 'aspnet'\naspnet.aliases = []\nfunction aspnet(Prism) {\n  Prism.register(refractorCsharp)\n  Prism.languages.aspnet = Prism.languages.extend('markup', {\n    'page-directive': {\n      pattern: /<%\\s*@.*%>/,\n      alias: 'tag',\n      inside: {\n        'page-directive': {\n          pattern:\n            /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n          alias: 'tag'\n        },\n        rest: Prism.languages.markup.tag.inside\n      }\n    },\n    directive: {\n      pattern: /<%.*%>/,\n      alias: 'tag',\n      inside: {\n        directive: {\n          pattern: /<%\\s*?[$=%#:]{0,2}|%>/,\n          alias: 'tag'\n        },\n        rest: Prism.languages.csharp\n      }\n    }\n  }) // Regexp copied from prism-markup, with a negative look-ahead added\n  Prism.languages.aspnet.tag.pattern =\n    /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/ // match directives of attribute value foo=\"<% Bar %>\"\n  Prism.languages.insertBefore(\n    'inside',\n    'punctuation',\n    {\n      directive: Prism.languages.aspnet['directive']\n    },\n    Prism.languages.aspnet.tag.inside['attr-value']\n  )\n  Prism.languages.insertBefore('aspnet', 'comment', {\n    'asp-comment': {\n      pattern: /<%--[\\s\\S]*?--%>/,\n      alias: ['asp', 'comment']\n    }\n  }) // script runat=\"server\" contains csharp, not javascript\n  Prism.languages.insertBefore(\n    'aspnet',\n    Prism.languages.javascript ? 'script' : 'tag',\n    {\n      'asp-script': {\n        pattern:\n          /(<script(?=.*runat=['\"]?server\\b)[^>]*>)[\\s\\S]*?(?=<\\/script>)/i,\n        lookbehind: true,\n        alias: ['asp', 'script'],\n        inside: Prism.languages.csharp || {}\n      }\n    }\n  )\n}\n","'use strict'\n\nmodule.exports = autohotkey\nautohotkey.displayName = 'autohotkey'\nautohotkey.aliases = []\nfunction autohotkey(Prism) {\n  // NOTES - follows first-first highlight method, block is locked after highlight, different from SyntaxHl\n  Prism.languages.autohotkey = {\n    comment: [\n      {\n        pattern: /(^|\\s);.*/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^[\\t ]*)\\/\\*(?:[\\r\\n](?![ \\t]*\\*\\/)|[^\\r\\n])*(?:[\\r\\n][ \\t]*\\*\\/)?/m,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    tag: {\n      // labels\n      pattern: /^([ \\t]*)[^\\s,`\":]+(?=:[ \\t]*$)/m,\n      lookbehind: true\n    },\n    string: /\"(?:[^\"\\n\\r]|\"\")*\"/,\n    variable: /%\\w+%/,\n    number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n    operator:\n      /\\?|\\/\\/?=?|:=|\\|[=|]?|&[=&]?|\\+[=+]?|-[=-]?|\\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\\b(?:AND|NOT|OR)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    selector:\n      /\\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\\b/i,\n    constant:\n      /\\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\\b/i,\n    builtin:\n      /\\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\\b/i,\n    symbol:\n      /\\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\\b/i,\n    important:\n      /#\\b(?:AllowSameLineComments|ClipboardTimeout|CommentFlag|DerefChar|ErrorStdOut|EscapeChar|HotkeyInterval|HotkeyModifierTimeout|Hotstring|If|IfTimeout|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Include|IncludeAgain|InputLevel|InstallKeybdHook|InstallMouseHook|KeyHistory|MaxHotkeysPerInterval|MaxMem|MaxThreads|MaxThreadsBuffer|MaxThreadsPerHotkey|MenuMaskKey|NoEnv|NoTrayIcon|Persistent|SingleInstance|UseHook|Warn|WinActivateForce)\\b/i,\n    keyword:\n      /\\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\\b/i,\n    function: /[^(); \\t,\\n+*\\-=?>:\\\\\\/<&%\\[\\]]+(?=\\()/,\n    punctuation: /[{}[\\]():,]/\n  }\n}\n","'use strict'\n\nmodule.exports = autoit\nautoit.displayName = 'autoit'\nautoit.aliases = []\nfunction autoit(Prism) {\n  Prism.languages.autoit = {\n    comment: [\n      /;.*/,\n      {\n        // The multi-line comments delimiters can actually be commented out with \";\"\n        pattern:\n          /(^[\\t ]*)#(?:comments-start|cs)[\\s\\S]*?^[ \\t]*#(?:ce|comments-end)/m,\n        lookbehind: true\n      }\n    ],\n    url: {\n      pattern: /(^[\\t ]*#include\\s+)(?:<[^\\r\\n>]+>|\"[^\\r\\n\"]+\")/m,\n      lookbehind: true\n    },\n    string: {\n      pattern: /([\"'])(?:\\1\\1|(?!\\1)[^\\r\\n])*\\1/,\n      greedy: true,\n      inside: {\n        variable: /([%$@])\\w+\\1/\n      }\n    },\n    directive: {\n      pattern: /(^[\\t ]*)#[\\w-]+/m,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    function: /\\b\\w+(?=\\()/,\n    // Variables and macros\n    variable: /[$@]\\w+/,\n    keyword:\n      /\\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\\b/i,\n    number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i,\n    boolean: /\\b(?:False|True)\\b/i,\n    operator: /<[=>]?|[-+*\\/=&>]=?|[?^]|\\b(?:And|Not|Or)\\b/i,\n    punctuation: /[\\[\\]().,:]/\n  }\n}\n","'use strict'\n\nmodule.exports = avisynth\navisynth.displayName = 'avisynth'\navisynth.aliases = ['avs']\nfunction avisynth(Prism) {\n  // http://avisynth.nl/index.php/The_full_AviSynth_grammar\n  ;(function (Prism) {\n    function replace(pattern, replacements) {\n      return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n        return replacements[+index]\n      })\n    }\n    function re(pattern, replacements, flags) {\n      return RegExp(replace(pattern, replacements), flags || '')\n    }\n    var types = /bool|clip|float|int|string|val/.source\n    var internals = [\n      // bools\n      /is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?/\n        .source, // control\n      /apply|assert|default|eval|import|nop|select|undefined/.source, // global\n      /opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)/\n        .source, // conv\n      /hex(?:value)?|value/.source, // numeric\n      /abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt/\n        .source, // trig\n      /a?sinh?|a?cosh?|a?tan[2h]?/.source, // bit\n      /(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))/\n        .source, // runtime\n      /average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)/\n        .source, // script\n      /getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams/\n        .source, // string\n      /chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)/\n        .source, // version\n      /isversionorgreater|version(?:number|string)/.source, // helper\n      /buildpixeltype|colorspacenametopixeltype/.source, // avsplus\n      /addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode/.source\n    ].join('|')\n    var properties = [\n      // content\n      /has(?:audio|video)/.source, // resolution\n      /height|width/.source, // framerate\n      /frame(?:count|rate)|framerate(?:denominator|numerator)/.source, // interlacing\n      /getparity|is(?:field|frame)based/.source, // color format\n      /bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype/\n        .source, // audio\n      /audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)/\n        .source\n    ].join('|')\n    var filters = [\n      // source\n      /avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource/\n        .source, // color\n      /coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv/\n        .source, // overlay\n      /(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract/.source, // geometry\n      /addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)/\n        .source, // pixel\n      /blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen/\n        .source, // timeline\n      /trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)/\n        .source, // interlace\n      /assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?/\n        .source, // audio\n      /amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch/\n        .source, // conditional\n      /animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?/\n        .source, // export\n      /imagewriter/.source, // debug\n      /blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version/\n        .source\n    ].join('|')\n    var allinternals = [internals, properties, filters].join('|')\n    Prism.languages.avisynth = {\n      comment: [\n        {\n          // Matches [* *] nestable block comments, but only supports 1 level of nested comments\n          // /\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\])|<self>)*\\*\\]/\n          pattern:\n            /(^|[^\\\\])\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\])|\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\]))*\\*\\])*\\*\\]/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // Matches /* */ block comments\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // Matches # comments\n          pattern: /(^|[^\\\\$])#.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      // Handle before strings because optional arguments are surrounded by double quotes\n      argument: {\n        pattern: re(/\\b(?:<<0>>)\\s+(\"?)\\w+\\1/.source, [types], 'i'),\n        inside: {\n          keyword: /^\\w+/\n        }\n      },\n      // Optional argument assignment\n      'argument-label': {\n        pattern: /([,(][\\s\\\\]*)\\w+\\s*=(?!=)/,\n        lookbehind: true,\n        inside: {\n          'argument-name': {\n            pattern: /^\\w+/,\n            alias: 'punctuation'\n          },\n          punctuation: /=$/\n        }\n      },\n      string: [\n        {\n          // triple double-quoted\n          pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n          greedy: true\n        },\n        {\n          // single double-quoted\n          pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n          greedy: true,\n          inside: {\n            constant: {\n              // These *are* case-sensitive!\n              pattern:\n                /\\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\\b/\n            }\n          }\n        }\n      ],\n      // The special \"last\" variable that takes the value of the last implicitly returned clip\n      variable: /\\b(?:last)\\b/i,\n      boolean: /\\b(?:false|no|true|yes)\\b/i,\n      keyword:\n        /\\b(?:catch|else|for|function|global|if|return|try|while|__END__)\\b/i,\n      constant: /\\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\\b/,\n      // AviSynth's internal functions, filters, and properties\n      'builtin-function': {\n        pattern: re(/\\b(?:<<0>>)\\b/.source, [allinternals], 'i'),\n        alias: 'function'\n      },\n      'type-cast': {\n        pattern: re(/\\b(?:<<0>>)(?=\\s*\\()/.source, [types], 'i'),\n        alias: 'keyword'\n      },\n      // External/user-defined filters\n      function: {\n        pattern: /\\b[a-z_]\\w*(?=\\s*\\()|(\\.)[a-z_]\\w*\\b/i,\n        lookbehind: true\n      },\n      // Matches a \\ as the first or last character on a line\n      'line-continuation': {\n        pattern: /(^[ \\t]*)\\\\|\\\\(?=[ \\t]*$)/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      number:\n        /\\B\\$(?:[\\da-f]{6}|[\\da-f]{8})\\b|(?:(?:\\b|\\B-)\\d+(?:\\.\\d*)?\\b|\\B\\.\\d+\\b)/i,\n      operator: /\\+\\+?|[!=<>]=?|&&|\\|\\||[?:*/%-]/,\n      punctuation: /[{}\\[\\]();,.]/\n    }\n    Prism.languages.avs = Prism.languages.avisynth\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = avroIdl\navroIdl.displayName = 'avroIdl'\navroIdl.aliases = []\nfunction avroIdl(Prism) {\n  // GitHub: https://github.com/apache/avro\n  // Docs: https://avro.apache.org/docs/current/idl.html\n  Prism.languages['avro-idl'] = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:[^\\r\\n\"\\\\]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    annotation: {\n      pattern: /@(?:[$\\w.-]|`[^\\r\\n`]+`)+/,\n      greedy: true,\n      alias: 'function'\n    },\n    'function-identifier': {\n      pattern: /`[^\\r\\n`]+`(?=\\s*\\()/,\n      greedy: true,\n      alias: 'function'\n    },\n    identifier: {\n      pattern: /`[^\\r\\n`]+`/,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(\\b(?:enum|error|protocol|record|throws)\\b\\s+)[$\\w]+/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: [\n      {\n        pattern:\n          /(^|[^\\w.])-?(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|0x(?:[a-f0-9]+(?:\\.[a-f0-9]*)?|\\.[a-f0-9]+)(?:p[+-]?\\d+)?)[dfl]?(?![\\w.])/i,\n        lookbehind: true\n      },\n      /-?\\b(?:Infinity|NaN)\\b/\n    ],\n    operator: /=/,\n    punctuation: /[()\\[\\]{}<>.:,;-]/\n  }\n  Prism.languages.avdl = Prism.languages['avro-idl']\n}\n","'use strict'\n\nmodule.exports = bash\nbash.displayName = 'bash'\nbash.aliases = ['shell']\nfunction bash(Prism) {\n  ;(function (Prism) {\n    // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n    // + LC_ALL, RANDOM, REPLY, SECONDS.\n    // + make sure PS1..4 are here as they are not always set,\n    // - some useless things.\n    var envVars =\n      '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b'\n    var commandAfterHeredoc = {\n      pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n      lookbehind: true,\n      alias: 'punctuation',\n      // this looks reasonably well in all themes\n      inside: null // see below\n    }\n    var insideString = {\n      bash: commandAfterHeredoc,\n      environment: {\n        pattern: RegExp('\\\\$' + envVars),\n        alias: 'constant'\n      },\n      variable: [\n        // [0]: Arithmetic Environment\n        {\n          pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n          greedy: true,\n          inside: {\n            // If there is a $ sign at the beginning highlight $(( and )) as variable\n            variable: [\n              {\n                pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n                lookbehind: true\n              },\n              /^\\$\\(\\(/\n            ],\n            number:\n              /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n            // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n            operator:\n              /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n            // If there is no $ sign at the beginning highlight (( and )) as punctuation\n            punctuation: /\\(\\(?|\\)\\)?|,|;/\n          }\n        }, // [1]: Command Substitution\n        {\n          pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n          greedy: true,\n          inside: {\n            variable: /^\\$\\(|^`|\\)$|`$/\n          }\n        }, // [2]: Brace expansion\n        {\n          pattern: /\\$\\{[^}]+\\}/,\n          greedy: true,\n          inside: {\n            operator: /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n            punctuation: /[\\[\\]]/,\n            environment: {\n              pattern: RegExp('(\\\\{)' + envVars),\n              lookbehind: true,\n              alias: 'constant'\n            }\n          }\n        },\n        /\\$(?:\\w+|[#?*!@$])/\n      ],\n      // Escape sequences from echo and printf's manuals, and escaped quotes.\n      entity:\n        /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n    }\n    Prism.languages.bash = {\n      shebang: {\n        pattern: /^#!\\s*\\/.*/,\n        alias: 'important'\n      },\n      comment: {\n        pattern: /(^|[^\"{\\\\$])#.*/,\n        lookbehind: true\n      },\n      'function-name': [\n        // a) function foo {\n        // b) foo() {\n        // c) function foo() {\n        // but not “foo {”\n        {\n          // a) and c)\n          pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n          lookbehind: true,\n          alias: 'function'\n        },\n        {\n          // b)\n          pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n          alias: 'function'\n        }\n      ],\n      // Highlight variable names as variables in for and select beginnings.\n      'for-or-select': {\n        pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n        alias: 'variable',\n        lookbehind: true\n      },\n      // Highlight variable names as variables in the left-hand part\n      // of assignments (“=” and “+=”).\n      'assign-left': {\n        pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n        inside: {\n          environment: {\n            pattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n            lookbehind: true,\n            alias: 'constant'\n          }\n        },\n        alias: 'variable',\n        lookbehind: true\n      },\n      string: [\n        // Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n        {\n          pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n          lookbehind: true,\n          greedy: true,\n          inside: insideString\n        }, // Here-document with quotes around the tag\n        // → No expansion (so no “inside”).\n        {\n          pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n          lookbehind: true,\n          greedy: true,\n          inside: {\n            bash: commandAfterHeredoc\n          }\n        }, // “Normal” string\n        {\n          // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n          pattern:\n            /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n          lookbehind: true,\n          greedy: true,\n          inside: insideString\n        },\n        {\n          // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n          pattern: /(^|[^$\\\\])'[^']*'/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n          pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n          greedy: true,\n          inside: {\n            entity: insideString.entity\n          }\n        }\n      ],\n      environment: {\n        pattern: RegExp('\\\\$?' + envVars),\n        alias: 'constant'\n      },\n      variable: insideString.variable,\n      function: {\n        pattern:\n          /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n        lookbehind: true\n      },\n      keyword: {\n        pattern:\n          /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n        lookbehind: true\n      },\n      // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n      builtin: {\n        pattern:\n          /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n        lookbehind: true,\n        // Alias added to make those easier to distinguish from strings.\n        alias: 'class-name'\n      },\n      boolean: {\n        pattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n        lookbehind: true\n      },\n      'file-descriptor': {\n        pattern: /\\B&\\d\\b/,\n        alias: 'important'\n      },\n      operator: {\n        // Lots of redirections here, but not just that.\n        pattern:\n          /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n        inside: {\n          'file-descriptor': {\n            pattern: /^\\d/,\n            alias: 'important'\n          }\n        }\n      },\n      punctuation: /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n      number: {\n        pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n        lookbehind: true\n      }\n    }\n    commandAfterHeredoc.inside = Prism.languages.bash\n    /* Patterns in command substitution. */\n    var toBeCopied = [\n      'comment',\n      'function-name',\n      'for-or-select',\n      'assign-left',\n      'string',\n      'environment',\n      'function',\n      'keyword',\n      'builtin',\n      'boolean',\n      'file-descriptor',\n      'operator',\n      'punctuation',\n      'number'\n    ]\n    var inside = insideString.variable[1].inside\n    for (var i = 0; i < toBeCopied.length; i++) {\n      inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]]\n    }\n    Prism.languages.shell = Prism.languages.bash\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = basic\nbasic.displayName = 'basic'\nbasic.aliases = []\nfunction basic(Prism) {\n  Prism.languages.basic = {\n    comment: {\n      pattern: /(?:!|REM\\b).+/i,\n      inside: {\n        keyword: /^REM/i\n      }\n    },\n    string: {\n      pattern: /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^\\w +\\-.])*\"/,\n      greedy: true\n    },\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n    keyword:\n      /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n    function:\n      /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n    operator: /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n    punctuation: /[,;:()]/\n  }\n}\n","'use strict'\n\nmodule.exports = batch\nbatch.displayName = 'batch'\nbatch.aliases = []\nfunction batch(Prism) {\n  ;(function (Prism) {\n    var variable = /%%?[~:\\w]+%?|!\\S+!/\n    var parameter = {\n      pattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n      alias: 'attr-name',\n      inside: {\n        punctuation: /:/\n      }\n    }\n    var string = /\"(?:[\\\\\"]\"|[^\"])*\"(?!\")/\n    var number = /(?:\\b|-)\\d+\\b/\n    Prism.languages.batch = {\n      comment: [\n        /^::.*/m,\n        {\n          pattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n          lookbehind: true\n        }\n      ],\n      label: {\n        pattern: /^:.*/m,\n        alias: 'property'\n      },\n      command: [\n        {\n          // FOR command\n          pattern:\n            /((?:^|[&(])[ \\t]*)for(?: \\/[a-z?](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* \\S+ in \\([^)]+\\) do/im,\n          lookbehind: true,\n          inside: {\n            keyword: /\\b(?:do|in)\\b|^for\\b/i,\n            string: string,\n            parameter: parameter,\n            variable: variable,\n            number: number,\n            punctuation: /[()',]/\n          }\n        },\n        {\n          // IF command\n          pattern:\n            /((?:^|[&(])[ \\t]*)if(?: \\/[a-z?](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|(?!\")(?:(?!==)\\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:\"[^\"]*\"|[^\\s\"]\\S*))/im,\n          lookbehind: true,\n          inside: {\n            keyword:\n              /\\b(?:cmdextversion|defined|errorlevel|exist|not)\\b|^if\\b/i,\n            string: string,\n            parameter: parameter,\n            variable: variable,\n            number: number,\n            operator: /\\^|==|\\b(?:equ|geq|gtr|leq|lss|neq)\\b/i\n          }\n        },\n        {\n          // ELSE command\n          pattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n          lookbehind: true,\n          inside: {\n            keyword: /^else\\b/i\n          }\n        },\n        {\n          // SET command\n          pattern:\n            /((?:^|[&(])[ \\t]*)set(?: \\/[a-z](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n          lookbehind: true,\n          inside: {\n            keyword: /^set\\b/i,\n            string: string,\n            parameter: parameter,\n            variable: [variable, /\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/],\n            number: number,\n            operator: /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n            punctuation: /[()',]/\n          }\n        },\n        {\n          // Other commands\n          pattern:\n            /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:\"(?:[\\\\\"]\"|[^\"])*\"(?!\")|[^\"^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/m,\n          lookbehind: true,\n          inside: {\n            keyword: /^\\w+\\b/,\n            string: string,\n            parameter: parameter,\n            label: {\n              pattern: /(^\\s*):\\S+/m,\n              lookbehind: true,\n              alias: 'property'\n            },\n            variable: variable,\n            number: number,\n            operator: /\\^/\n          }\n        }\n      ],\n      operator: /[&@]/,\n      punctuation: /[()']/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = bbcode\nbbcode.displayName = 'bbcode'\nbbcode.aliases = ['shortcode']\nfunction bbcode(Prism) {\n  Prism.languages.bbcode = {\n    tag: {\n      pattern:\n        /\\[\\/?[^\\s=\\]]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+))?(?:\\s+[^\\s=\\]]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+))*\\s*\\]/,\n      inside: {\n        tag: {\n          pattern: /^\\[\\/?[^\\s=\\]]+/,\n          inside: {\n            punctuation: /^\\[\\/?/\n          }\n        },\n        'attr-value': {\n          pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+)/,\n          inside: {\n            punctuation: [\n              /^=/,\n              {\n                pattern: /^(\\s*)[\"']|[\"']$/,\n                lookbehind: true\n              }\n            ]\n          }\n        },\n        punctuation: /\\]/,\n        'attr-name': /[^\\s=\\]]+/\n      }\n    }\n  }\n  Prism.languages.shortcode = Prism.languages.bbcode\n}\n","'use strict'\n\nmodule.exports = bicep\nbicep.displayName = 'bicep'\nbicep.aliases = []\nfunction bicep(Prism) {\n  // based loosely upon: https://github.com/Azure/bicep/blob/main/src/textmate/bicep.tmlanguage\n  Prism.languages.bicep = {\n    comment: [\n      {\n        // multiline comments eg /* ASDF */\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        // singleline comments eg // ASDF\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    property: [\n      {\n        pattern: /([\\r\\n][ \\t]*)[a-z_]\\w*(?=[ \\t]*:)/i,\n        lookbehind: true\n      },\n      {\n        pattern: /([\\r\\n][ \\t]*)'(?:\\\\.|\\$(?!\\{)|[^'\\\\\\r\\n$])*'(?=[ \\t]*:)/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: [\n      {\n        pattern: /'''[^'][\\s\\S]*?'''/,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\'])'(?:\\\\.|\\$(?!\\{)|[^'\\\\\\r\\n$])*'/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    'interpolated-string': {\n      pattern: /(^|[^\\\\'])'(?:\\\\.|\\$(?:(?!\\{)|\\{[^{}\\r\\n]*\\})|[^'\\\\\\r\\n$])*'/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{[^{}\\r\\n]*\\}/,\n          inside: {\n            expression: {\n              pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true\n            },\n            punctuation: /^\\$\\{|\\}$/\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    datatype: {\n      pattern: /(\\b(?:output|param)\\b[ \\t]+\\w+[ \\t]+)\\w+\\b/,\n      lookbehind: true,\n      alias: 'class-name'\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    // https://github.com/Azure/bicep/blob/114a3251b4e6e30082a58729f19a8cc4e374ffa6/src/textmate/bicep.tmlanguage#L184\n    keyword:\n      /\\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\\b/,\n    decorator: /@\\w+\\b/,\n    function: /\\b[a-z_]\\w*(?=[ \\t]*\\()/i,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n    operator:\n      /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.bicep['interpolated-string'].inside['interpolation'].inside[\n    'expression'\n  ].inside = Prism.languages.bicep\n}\n","'use strict'\n\nmodule.exports = birb\nbirb.displayName = 'birb'\nbirb.aliases = []\nfunction birb(Prism) {\n  Prism.languages.birb = Prism.languages.extend('clike', {\n    string: {\n      pattern: /r?(\"|')(?:\\\\.|(?!\\1)[^\\\\])*\\1/,\n      greedy: true\n    },\n    'class-name': [\n      /\\b[A-Z](?:[\\d_]*[a-zA-Z]\\w*)?\\b/, // matches variable and function return types (parameters as well).\n      /\\b(?:[A-Z]\\w*|(?!(?:var|void)\\b)[a-z]\\w*)(?=\\s+\\w+\\s*[;,=()])/\n    ],\n    keyword:\n      /\\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\\b/,\n    operator: /\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?|:/,\n    variable: /\\b[a-z_]\\w*\\b/\n  })\n  Prism.languages.insertBefore('birb', 'function', {\n    metadata: {\n      pattern: /<\\w+>/,\n      greedy: true,\n      alias: 'symbol'\n    }\n  })\n}\n","'use strict'\nvar refractorC = require('./c.js')\nmodule.exports = bison\nbison.displayName = 'bison'\nbison.aliases = []\nfunction bison(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.bison = Prism.languages.extend('c', {})\n  Prism.languages.insertBefore('bison', 'comment', {\n    bison: {\n      // This should match all the beginning of the file\n      // including the prologue(s), the bison declarations and\n      // the grammar rules.\n      pattern: /^(?:[^%]|%(?!%))*%%[\\s\\S]*?%%/,\n      inside: {\n        c: {\n          // Allow for one level of nested braces\n          pattern: /%\\{[\\s\\S]*?%\\}|\\{(?:\\{[^}]*\\}|[^{}])*\\}/,\n          inside: {\n            delimiter: {\n              pattern: /^%?\\{|%?\\}$/,\n              alias: 'punctuation'\n            },\n            'bison-variable': {\n              pattern: /[$@](?:<[^\\s>]+>)?[\\w$]+/,\n              alias: 'variable',\n              inside: {\n                punctuation: /<|>/\n              }\n            },\n            rest: Prism.languages.c\n          }\n        },\n        comment: Prism.languages.c.comment,\n        string: Prism.languages.c.string,\n        property: /\\S+(?=:)/,\n        keyword: /%\\w+/,\n        number: {\n          pattern: /(^|[^@])\\b(?:0x[\\da-f]+|\\d+)/i,\n          lookbehind: true\n        },\n        punctuation: /%[%?]|[|:;\\[\\]<>]/\n      }\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = bnf\nbnf.displayName = 'bnf'\nbnf.aliases = ['rbnf']\nfunction bnf(Prism) {\n  Prism.languages.bnf = {\n    string: {\n      pattern: /\"[^\\r\\n\"]*\"|'[^\\r\\n']*'/\n    },\n    definition: {\n      pattern: /<[^<>\\r\\n\\t]+>(?=\\s*::=)/,\n      alias: ['rule', 'keyword'],\n      inside: {\n        punctuation: /^<|>$/\n      }\n    },\n    rule: {\n      pattern: /<[^<>\\r\\n\\t]+>/,\n      inside: {\n        punctuation: /^<|>$/\n      }\n    },\n    operator: /::=|[|()[\\]{}*+?]|\\.{3}/\n  }\n  Prism.languages.rbnf = Prism.languages.bnf\n}\n","'use strict'\n\nmodule.exports = brainfuck\nbrainfuck.displayName = 'brainfuck'\nbrainfuck.aliases = []\nfunction brainfuck(Prism) {\n  Prism.languages.brainfuck = {\n    pointer: {\n      pattern: /<|>/,\n      alias: 'keyword'\n    },\n    increment: {\n      pattern: /\\+/,\n      alias: 'inserted'\n    },\n    decrement: {\n      pattern: /-/,\n      alias: 'deleted'\n    },\n    branching: {\n      pattern: /\\[|\\]/,\n      alias: 'important'\n    },\n    operator: /[.,]/,\n    comment: /\\S+/\n  }\n}\n","'use strict'\n\nmodule.exports = brightscript\nbrightscript.displayName = 'brightscript'\nbrightscript.aliases = []\nfunction brightscript(Prism) {\n  Prism.languages.brightscript = {\n    comment: /(?:\\brem|').*/i,\n    'directive-statement': {\n      pattern: /(^[\\t ]*)#(?:const|else(?:[\\t ]+if)?|end[\\t ]+if|error|if).*/im,\n      lookbehind: true,\n      alias: 'property',\n      inside: {\n        'error-message': {\n          pattern: /(^#error).+/,\n          lookbehind: true\n        },\n        directive: {\n          pattern: /^#(?:const|else(?:[\\t ]+if)?|end[\\t ]+if|error|if)/,\n          alias: 'keyword'\n        },\n        expression: {\n          pattern: /[\\s\\S]+/,\n          inside: null // see below\n        }\n      }\n    },\n    property: {\n      pattern:\n        /([\\r\\n{,][\\t ]*)(?:(?!\\d)\\w+|\"(?:[^\"\\r\\n]|\"\")*\"(?!\"))(?=[ \\t]*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(\\bAs[\\t ]+)\\w+/i,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    function: /\\b(?!\\d)\\w+(?=[\\t ]*\\()/,\n    number: /(?:\\b\\d+(?:\\.\\d+)?(?:[ed][+-]\\d+)?|&h[a-f\\d]+)\\b[%&!#]?/i,\n    operator:\n      /--|\\+\\+|>>=?|<<=?|<>|[-+*/\\\\<>]=?|[:^=?]|\\b(?:and|mod|not|or)\\b/i,\n    punctuation: /[.,;()[\\]{}]/,\n    constant: /\\b(?:LINE_NUM)\\b/i\n  }\n  Prism.languages.brightscript['directive-statement'].inside.expression.inside =\n    Prism.languages.brightscript\n}\n","'use strict'\n\nmodule.exports = bro\nbro.displayName = 'bro'\nbro.aliases = []\nfunction bro(Prism) {\n  Prism.languages.bro = {\n    comment: {\n      pattern: /(^|[^\\\\$])#.*/,\n      lookbehind: true,\n      inside: {\n        italic: /\\b(?:FIXME|TODO|XXX)\\b/\n      }\n    },\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    boolean: /\\b[TF]\\b/,\n    function: {\n      pattern: /(\\b(?:event|function|hook)[ \\t]+)\\w+(?:::\\w+)?/,\n      lookbehind: true\n    },\n    builtin:\n      /(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,\n    constant: {\n      pattern: /(\\bconst[ \\t]+)\\w+/i,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\\b/,\n    operator: /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = bsl\nbsl.displayName = 'bsl'\nbsl.aliases = []\nfunction bsl(Prism) {\n  /* eslint-disable no-misleading-character-class */\n  // 1C:Enterprise\n  // https://github.com/Diversus23/\n  //\n  Prism.languages.bsl = {\n    comment: /\\/\\/.*/,\n    string: [\n      // Строки\n      // Strings\n      {\n        pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n        greedy: true\n      }, // Дата и время\n      // Date & time\n      {\n        pattern: /'(?:[^'\\r\\n\\\\]|\\\\.)*'/\n      }\n    ],\n    keyword: [\n      {\n        // RU\n        pattern:\n          /(^|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])/i,\n        lookbehind: true\n      },\n      {\n        // EN\n        pattern:\n          /\\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\\b/i\n      }\n    ],\n    number: {\n      pattern:\n        /(^(?=\\d)|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:E[+-]?\\d+)?/i,\n      lookbehind: true\n    },\n    operator: [\n      /[<>+\\-*/]=?|[%=]/, // RU\n      {\n        pattern:\n          /(^|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:и|или|не)(?![\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])/i,\n        lookbehind: true\n      }, // EN\n      {\n        pattern: /\\b(?:and|not|or)\\b/i\n      }\n    ],\n    punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.]/,\n    directive: [\n      // Теги препроцессора вида &Клиент, &Сервер, ...\n      // Preprocessor tags of the type &Client, &Server, ...\n      {\n        pattern: /^([ \\t]*)&.*/m,\n        lookbehind: true,\n        greedy: true,\n        alias: 'important'\n      }, // Инструкции препроцессора вида:\n      // #Если Сервер Тогда\n      // ...\n      // #КонецЕсли\n      // Preprocessor instructions of the form:\n      // #If Server Then\n      // ...\n      // #EndIf\n      {\n        pattern: /^([ \\t]*)#.*/gm,\n        lookbehind: true,\n        greedy: true,\n        alias: 'important'\n      }\n    ]\n  }\n  Prism.languages.oscript = Prism.languages['bsl']\n}\n","'use strict'\n\nmodule.exports = c\nc.displayName = 'c'\nc.aliases = []\nfunction c(Prism) {\n  Prism.languages.c = Prism.languages.extend('clike', {\n    comment: {\n      pattern:\n        /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n      greedy: true\n    },\n    string: {\n      // https://en.cppreference.com/w/c/language/string_literal\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number:\n      /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n    operator: />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n  })\n  Prism.languages.insertBefore('c', 'string', {\n    char: {\n      // https://en.cppreference.com/w/c/language/character_constant\n      pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n      greedy: true\n    }\n  })\n  Prism.languages.insertBefore('c', 'string', {\n    macro: {\n      // allow for multiline macro definitions\n      // spaces after the # character compile fine with gcc\n      pattern:\n        /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property',\n      inside: {\n        string: [\n          {\n            // highlight the path of the include statement as a string\n            pattern: /^(#\\s*include\\s*)<[^>]+>/,\n            lookbehind: true\n          },\n          Prism.languages.c['string']\n        ],\n        char: Prism.languages.c['char'],\n        comment: Prism.languages.c['comment'],\n        'macro-name': [\n          {\n            pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n            lookbehind: true\n          },\n          {\n            pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n            lookbehind: true,\n            alias: 'function'\n          }\n        ],\n        // highlight macro directives as keywords\n        directive: {\n          pattern: /^(#\\s*)[a-z]+/,\n          lookbehind: true,\n          alias: 'keyword'\n        },\n        'directive-hash': /^#/,\n        punctuation: /##|\\\\(?=[\\r\\n])/,\n        expression: {\n          pattern: /\\S[\\s\\S]*/,\n          inside: Prism.languages.c\n        }\n      }\n    }\n  })\n  Prism.languages.insertBefore('c', 'function', {\n    // highlight predefined macros as constants\n    constant:\n      /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n  })\n  delete Prism.languages.c['boolean']\n}\n","'use strict'\n\nmodule.exports = cfscript\ncfscript.displayName = 'cfscript'\ncfscript.aliases = []\nfunction cfscript(Prism) {\n  // https://cfdocs.org/script\n  Prism.languages.cfscript = Prism.languages.extend('clike', {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n        lookbehind: true,\n        inside: {\n          annotation: {\n            pattern: /(?:^|[^.])@[\\w\\.]+/,\n            alias: 'punctuation'\n          }\n        }\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    keyword:\n      /\\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\\b(?!\\s*=)/,\n    operator: [\n      /\\+\\+|--|&&|\\|\\||::|=>|[!=]==|<=?|>=?|[-+*/%&|^!=<>]=?|\\?(?:\\.|:)?|[?:]/,\n      /\\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\\b/\n    ],\n    scope: {\n      pattern:\n        /\\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\\b/,\n      alias: 'global'\n    },\n    type: {\n      pattern:\n        /\\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\\b/,\n      alias: 'builtin'\n    }\n  })\n  Prism.languages.insertBefore('cfscript', 'keyword', {\n    // This must be declared before keyword because we use \"function\" inside the lookahead\n    'function-variable': {\n      pattern:\n        /[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n      alias: 'function'\n    }\n  })\n  delete Prism.languages.cfscript['class-name']\n  Prism.languages.cfc = Prism.languages['cfscript']\n}\n","'use strict'\nvar refractorCpp = require('./cpp.js')\nmodule.exports = chaiscript\nchaiscript.displayName = 'chaiscript'\nchaiscript.aliases = []\nfunction chaiscript(Prism) {\n  Prism.register(refractorCpp)\n  Prism.languages.chaiscript = Prism.languages.extend('clike', {\n    string: {\n      pattern: /(^|[^\\\\])'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n      lookbehind: true,\n      greedy: true\n    },\n    'class-name': [\n      {\n        // e.g. class Rectangle { ... }\n        pattern: /(\\bclass\\s+)\\w+/,\n        lookbehind: true\n      },\n      {\n        // e.g. attr Rectangle::height, def Rectangle::area() { ... }\n        pattern: /(\\b(?:attr|def)\\s+)\\w+(?=\\s*::)/,\n        lookbehind: true\n      }\n    ],\n    keyword:\n      /\\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\\b/,\n    number: [Prism.languages.cpp.number, /\\b(?:Infinity|NaN)\\b/],\n    operator:\n      />>=?|<<=?|\\|\\||&&|:[:=]?|--|\\+\\+|[=!<>+\\-*/%|&^]=?|[?~]|`[^`\\r\\n]{1,4}`/\n  })\n  Prism.languages.insertBefore('chaiscript', 'operator', {\n    'parameter-type': {\n      // e.g. def foo(int x, Vector y) {...}\n      pattern: /([,(]\\s*)\\w+(?=\\s+\\w)/,\n      lookbehind: true,\n      alias: 'class-name'\n    }\n  })\n  Prism.languages.insertBefore('chaiscript', 'string', {\n    'string-interpolation': {\n      pattern:\n        /(^|[^\\\\])\"(?:[^\"$\\\\]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\"/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\}/,\n          lookbehind: true,\n          inside: {\n            'interpolation-expression': {\n              pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true,\n              inside: Prism.languages.chaiscript\n            },\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'punctuation'\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = cil\ncil.displayName = 'cil'\ncil.aliases = []\nfunction cil(Prism) {\n  Prism.languages.cil = {\n    comment: /\\/\\/.*/,\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    directive: {\n      pattern: /(^|\\W)\\.[a-z]+(?=\\s)/,\n      lookbehind: true,\n      alias: 'class-name'\n    },\n    // Actually an assembly reference\n    variable: /\\[[\\w\\.]+\\]/,\n    keyword:\n      /\\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\\b/,\n    function:\n      /\\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\\.)?(?:conv\\.(?:[iu][1248]?|ovf\\.[iu][1248]?(?:\\.un)?|r\\.un|r4|r8)|ldc\\.(?:i4(?:\\.\\d+|\\.[mM]1|\\.s)?|i8|r4|r8)|ldelem(?:\\.[iu][1248]?|\\.r[48]|\\.ref|a)?|ldind\\.(?:[iu][1248]?|r[48]|ref)|stelem\\.?(?:i[1248]?|r[48]|ref)?|stind\\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\\.[0-3s]|a(?:\\.s)?)?|ldloc(?:\\.\\d+|\\.s)?|sub(?:\\.ovf(?:\\.un)?)?|mul(?:\\.ovf(?:\\.un)?)?|add(?:\\.ovf(?:\\.un)?)?|stloc(?:\\.[0-3s])?|refany(?:type|val)|blt(?:\\.un)?(?:\\.s)?|ble(?:\\.un)?(?:\\.s)?|bgt(?:\\.un)?(?:\\.s)?|bge(?:\\.un)?(?:\\.s)?|unbox(?:\\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\\.s)?|bne\\.un(?:\\.s)?|ldloca(?:\\.s)?|brzero(?:\\.s)?|brtrue(?:\\.s)?|brnull(?:\\.s)?|brinst(?:\\.s)?|starg(?:\\.s)?|leave(?:\\.s)?|shr(?:\\.un)?|rem(?:\\.un)?|div(?:\\.un)?|clt(?:\\.un)?|alignment|castclass|ldvirtftn|beq(?:\\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number: /\\b-?(?:0x[0-9a-f]+|\\d+)(?:\\.[0-9a-f]+)?\\b/i,\n    punctuation: /[{}[\\];(),:=]|IL_[0-9A-Za-z]+/\n  }\n}\n","'use strict'\n\nmodule.exports = clike\nclike.displayName = 'clike'\nclike.aliases = []\nfunction clike(Prism) {\n  Prism.languages.clike = {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n      lookbehind: true,\n      inside: {\n        punctuation: /[.\\\\]/\n      }\n    },\n    keyword:\n      /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: /\\b\\w+(?=\\()/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = clojure\nclojure.displayName = 'clojure'\nclojure.aliases = []\nfunction clojure(Prism) {\n  // Copied from https://github.com/jeluard/prism-clojure\n  Prism.languages.clojure = {\n    comment: {\n      pattern: /;.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n      greedy: true\n    },\n    char: /\\\\\\w+/,\n    symbol: {\n      pattern: /(^|[\\s()\\[\\]{},])::?[\\w*+!?'<>=/.-]+/,\n      lookbehind: true\n    },\n    keyword: {\n      pattern:\n        /(\\()(?:-|->|->>|\\.|\\.\\.|\\*|\\/|\\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\\?|ensure|eval|every\\?|false\\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\\?|new|newline|next|nil\\?|node|not|not-any\\?|not-every\\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\\?|split-at|split-with|str|string\\?|struct|struct-map|subs|subvec|symbol|symbol\\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\\?|vector|vector-zip|vector\\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\\?|zipmap|zipper)(?=[\\s)]|$)/,\n      lookbehind: true\n    },\n    boolean: /\\b(?:false|nil|true)\\b/,\n    number: {\n      pattern:\n        /(^|[^\\w$@])(?:\\d+(?:[/.]\\d+)?(?:e[+-]?\\d+)?|0x[a-f0-9]+|[1-9]\\d?r[a-z0-9]+)[lmn]?(?![\\w$@])/i,\n      lookbehind: true\n    },\n    function: {\n      pattern: /((?:^|[^'])\\()[\\w*+!?'<>=/.-]+(?=[\\s)]|$)/,\n      lookbehind: true\n    },\n    operator: /[#@^`~]/,\n    punctuation: /[{}\\[\\](),]/\n  }\n}\n","'use strict'\n\nmodule.exports = cmake\ncmake.displayName = 'cmake'\ncmake.aliases = []\nfunction cmake(Prism) {\n  Prism.languages.cmake = {\n    comment: /#.*/,\n    string: {\n      pattern: /\"(?:[^\\\\\"]|\\\\.)*\"/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{(?:[^{}$]|\\$\\{[^{}$]*\\})*\\}/,\n          inside: {\n            punctuation: /\\$\\{|\\}/,\n            variable: /\\w+/\n          }\n        }\n      }\n    },\n    variable:\n      /\\b(?:CMAKE_\\w+|\\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\\b/,\n    property:\n      /\\b(?:cxx_\\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\\w+|\\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\\b/,\n    keyword:\n      /\\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\\s*\\()\\b/,\n    boolean: /\\b(?:FALSE|OFF|ON|TRUE)\\b/,\n    namespace:\n      /\\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\\b/,\n    operator:\n      /\\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\\b/,\n    inserted: {\n      pattern: /\\b\\w+::\\w+\\b/,\n      alias: 'class-name'\n    },\n    number: /\\b\\d+(?:\\.\\d+)*\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()\\b/i,\n    punctuation: /[()>}]|\\$[<{]/\n  }\n}\n","'use strict'\n\nmodule.exports = cobol\ncobol.displayName = 'cobol'\ncobol.aliases = []\nfunction cobol(Prism) {\n  Prism.languages.cobol = {\n    comment: {\n      pattern: /\\*>.*|(^[ \\t]*)\\*.*/m,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /[xzgn]?(?:\"(?:[^\\r\\n\"]|\"\")*\"(?!\")|'(?:[^\\r\\n']|'')*'(?!'))/i,\n      greedy: true\n    },\n    level: {\n      pattern: /(^[ \\t]*)\\d+\\b/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'number'\n    },\n    'class-name': {\n      // https://github.com/antlr/grammars-v4/blob/42edd5b687d183b5fa679e858a82297bd27141e7/cobol85/Cobol85.g4#L1015\n      pattern:\n        /(\\bpic(?:ture)?\\s+)(?:(?:[-\\w$/,:*+<>]|\\.(?!\\s|$))(?:\\(\\d+\\))?)+/i,\n      lookbehind: true,\n      inside: {\n        number: {\n          pattern: /(\\()\\d+/,\n          lookbehind: true\n        },\n        punctuation: /[()]/\n      }\n    },\n    keyword: {\n      pattern:\n        /(^|[^\\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\\w-])/i,\n      lookbehind: true\n    },\n    boolean: {\n      pattern: /(^|[^\\w-])(?:false|true)(?![\\w-])/i,\n      lookbehind: true\n    },\n    number: {\n      pattern:\n        /(^|[^\\w-])(?:[+-]?(?:(?:\\d+(?:[.,]\\d+)?|[.,]\\d+)(?:e[+-]?\\d+)?|zero))(?![\\w-])/i,\n      lookbehind: true\n    },\n    operator: [\n      /<>|[<>]=?|[=+*/&]/,\n      {\n        pattern: /(^|[^\\w-])(?:-|and|equal|greater|less|not|or|than)(?![\\w-])/i,\n        lookbehind: true\n      }\n    ],\n    punctuation: /[.:,()]/\n  }\n}\n","'use strict'\n\nmodule.exports = coffeescript\ncoffeescript.displayName = 'coffeescript'\ncoffeescript.aliases = ['coffee']\nfunction coffeescript(Prism) {\n  ;(function (Prism) {\n    // Ignore comments starting with { to privilege string interpolation highlighting\n    var comment = /#(?!\\{).+/\n    var interpolation = {\n      pattern: /#\\{[^}]+\\}/,\n      alias: 'variable'\n    }\n    Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n      comment: comment,\n      string: [\n        // Strings are multiline\n        {\n          pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n          greedy: true\n        },\n        {\n          // Strings are multiline\n          pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n          greedy: true,\n          inside: {\n            interpolation: interpolation\n          }\n        }\n      ],\n      keyword:\n        /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n      'class-member': {\n        pattern: /@(?!\\d)\\w+/,\n        alias: 'variable'\n      }\n    })\n    Prism.languages.insertBefore('coffeescript', 'comment', {\n      'multiline-comment': {\n        pattern: /###[\\s\\S]+?###/,\n        alias: 'comment'\n      },\n      // Block regexp can contain comments and interpolation\n      'block-regex': {\n        pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n        alias: 'regex',\n        inside: {\n          comment: comment,\n          interpolation: interpolation\n        }\n      }\n    })\n    Prism.languages.insertBefore('coffeescript', 'string', {\n      'inline-javascript': {\n        pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n        inside: {\n          delimiter: {\n            pattern: /^`|`$/,\n            alias: 'punctuation'\n          },\n          script: {\n            pattern: /[\\s\\S]+/,\n            alias: 'language-javascript',\n            inside: Prism.languages.javascript\n          }\n        }\n      },\n      // Block strings\n      'multiline-string': [\n        {\n          pattern: /'''[\\s\\S]*?'''/,\n          greedy: true,\n          alias: 'string'\n        },\n        {\n          pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n          greedy: true,\n          alias: 'string',\n          inside: {\n            interpolation: interpolation\n          }\n        }\n      ]\n    })\n    Prism.languages.insertBefore('coffeescript', 'keyword', {\n      // Object property\n      property: /(?!\\d)\\w+(?=\\s*:(?!:))/\n    })\n    delete Prism.languages.coffeescript['template-string']\n    Prism.languages.coffee = Prism.languages.coffeescript\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = concurnas\nconcurnas.displayName = 'concurnas'\nconcurnas.aliases = ['conc']\nfunction concurnas(Prism) {\n  Prism.languages.concurnas = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\/\\/.*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    langext: {\n      pattern: /\\b\\w+\\s*\\|\\|[\\s\\S]+?\\|\\|/,\n      greedy: true,\n      inside: {\n        'class-name': /^\\w+/,\n        string: {\n          pattern: /(^\\s*\\|\\|)[\\s\\S]+(?=\\|\\|$)/,\n          lookbehind: true\n        },\n        punctuation: /\\|\\|/\n      }\n    },\n    function: {\n      pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number:\n      /\\b0b[01][01_]*L?\\b|\\b0x(?:[\\da-f_]*\\.)?[\\da-f_p+-]+\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfls]?/i,\n    punctuation: /[{}[\\];(),.:]/,\n    operator:\n      /<==|>==|=>|->|<-|<>|&==|&<>|\\?:?|\\.\\?|\\+\\+|--|[-+*/=<>]=?|[!^~]|\\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\\b=?/,\n    annotation: {\n      pattern: /@(?:\\w+:)?(?:\\w+|\\[[^\\]]+\\])?/,\n      alias: 'builtin'\n    }\n  }\n  Prism.languages.insertBefore('concurnas', 'langext', {\n    'regex-literal': {\n      pattern: /\\br(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: Prism.languages.concurnas\n        },\n        regex: /[\\s\\S]+/\n      }\n    },\n    'string-literal': {\n      pattern: /(?:\\B|\\bs)(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: Prism.languages.concurnas\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.conc = Prism.languages.concurnas\n}\n","'use strict'\n\nmodule.exports = coq\ncoq.displayName = 'coq'\ncoq.aliases = []\nfunction coq(Prism) {\n  ;(function (Prism) {\n    // https://github.com/coq/coq\n    var commentSource = /\\(\\*(?:[^(*]|\\((?!\\*)|\\*(?!\\))|<self>)*\\*\\)/.source\n    for (var i = 0; i < 2; i++) {\n      commentSource = commentSource.replace(/<self>/g, function () {\n        return commentSource\n      })\n    }\n    commentSource = commentSource.replace(/<self>/g, '[]')\n    Prism.languages.coq = {\n      comment: RegExp(commentSource),\n      string: {\n        pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n        greedy: true\n      },\n      attribute: [\n        {\n          pattern: RegExp(\n            /#\\[(?:[^\\[\\](\"]|\"(?:[^\"]|\"\")*\"(?!\")|\\((?!\\*)|<comment>)*\\]/.source.replace(\n              /<comment>/g,\n              function () {\n                return commentSource\n              }\n            )\n          ),\n          greedy: true,\n          alias: 'attr-name',\n          inside: {\n            comment: RegExp(commentSource),\n            string: {\n              pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n              greedy: true\n            },\n            operator: /=/,\n            punctuation: /^#\\[|\\]$|[,()]/\n          }\n        },\n        {\n          pattern:\n            /\\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\\b/,\n          alias: 'attr-name'\n        }\n      ],\n      keyword:\n        /\\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\\b/,\n      number:\n        /\\b(?:0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]+)?(?:p[+-]?\\d[\\d_]*)?|\\d[\\d_]*(?:\\.[\\d_]+)?(?:e[+-]?\\d[\\d_]*)?)\\b/i,\n      punct: {\n        pattern: /@\\{|\\{\\||\\[=|:>/,\n        alias: 'punctuation'\n      },\n      operator:\n        /\\/\\\\|\\\\\\/|\\.{2,3}|:{1,2}=|\\*\\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\\|[-|]?|[-!%&*+/<=>?@^~']/,\n      punctuation: /\\.\\(|`\\(|@\\{|`\\{|\\{\\||\\[=|:>|[:.,;(){}\\[\\]]/\n    }\n  })(Prism)\n}\n","'use strict'\nvar refractorC = require('./c.js')\nmodule.exports = cpp\ncpp.displayName = 'cpp'\ncpp.aliases = []\nfunction cpp(Prism) {\n  Prism.register(refractorC)\n  ;(function (Prism) {\n    var keyword =\n      /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/\n    var modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(\n      /<keyword>/g,\n      function () {\n        return keyword.source\n      }\n    )\n    Prism.languages.cpp = Prism.languages.extend('c', {\n      'class-name': [\n        {\n          pattern: RegExp(\n            /(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(\n              /<keyword>/g,\n              function () {\n                return keyword.source\n              }\n            )\n          ),\n          lookbehind: true\n        }, // This is intended to capture the class name of method implementations like:\n        //   void foo::bar() const {}\n        // However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n        // it starts with an uppercase letter. This approximation should give decent results.\n        /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/, // This will capture the class name before destructors like:\n        //   Foo::~Foo() {}\n        /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i, // This also intends to capture the class name of method implementations but here the class has template\n        // parameters, so it can't be a namespace (until C++ adds generic namespaces).\n        /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n      ],\n      keyword: keyword,\n      number: {\n        pattern:\n          /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n        greedy: true\n      },\n      operator:\n        />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n      boolean: /\\b(?:false|true)\\b/\n    })\n    Prism.languages.insertBefore('cpp', 'string', {\n      module: {\n        // https://en.cppreference.com/w/cpp/language/modules\n        pattern: RegExp(\n          /(\\b(?:import|module)\\s+)/.source +\n            '(?:' + // header-name\n            /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source +\n            '|' + // module name or partition or both\n            /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(\n              /<mod-name>/g,\n              function () {\n                return modName\n              }\n            ) +\n            ')'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          string: /^[<\"][\\s\\S]+/,\n          operator: /:/,\n          punctuation: /\\./\n        }\n      },\n      'raw-string': {\n        pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n        alias: 'string',\n        greedy: true\n      }\n    })\n    Prism.languages.insertBefore('cpp', 'keyword', {\n      'generic-function': {\n        pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n        inside: {\n          function: /^\\w+/,\n          generic: {\n            pattern: /<[\\s\\S]+/,\n            alias: 'class-name',\n            inside: Prism.languages.cpp\n          }\n        }\n      }\n    })\n    Prism.languages.insertBefore('cpp', 'operator', {\n      'double-colon': {\n        pattern: /::/,\n        alias: 'punctuation'\n      }\n    })\n    Prism.languages.insertBefore('cpp', 'class-name', {\n      // the base clause is an optional list of parent classes\n      // https://en.cppreference.com/w/cpp/language/class\n      'base-clause': {\n        pattern:\n          /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n        lookbehind: true,\n        greedy: true,\n        inside: Prism.languages.extend('cpp', {})\n      }\n    })\n    Prism.languages.insertBefore(\n      'inside',\n      'double-colon',\n      {\n        // All untokenized words that are not namespaces should be class names\n        'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n      },\n      Prism.languages.cpp['base-clause']\n    )\n  })(Prism)\n}\n","'use strict'\nvar refractorRuby = require('./ruby.js')\nmodule.exports = crystal\ncrystal.displayName = 'crystal'\ncrystal.aliases = []\nfunction crystal(Prism) {\n  Prism.register(refractorRuby)\n  ;(function (Prism) {\n    Prism.languages.crystal = Prism.languages.extend('ruby', {\n      keyword: [\n        /\\b(?:__DIR__|__END_LINE__|__FILE__|__LINE__|abstract|alias|annotation|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|ptr|require|rescue|return|select|self|sizeof|struct|super|then|type|typeof|undef|uninitialized|union|unless|until|when|while|with|yield)\\b/,\n        {\n          pattern: /(\\.\\s*)(?:is_a|responds_to)\\?/,\n          lookbehind: true\n        }\n      ],\n      number:\n        /\\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\\da-fA-F_]*[\\da-fA-F]|(?:\\d(?:[\\d_]*\\d)?)(?:\\.[\\d_]*\\d)?(?:[eE][+-]?[\\d_]*\\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\\b/,\n      operator: [/->/, Prism.languages.ruby.operator],\n      punctuation: /[(){}[\\].,;\\\\]/\n    })\n    Prism.languages.insertBefore('crystal', 'string-literal', {\n      attribute: {\n        pattern: /@\\[.*?\\]/,\n        inside: {\n          delimiter: {\n            pattern: /^@\\[|\\]$/,\n            alias: 'punctuation'\n          },\n          attribute: {\n            pattern: /^(\\s*)\\w+/,\n            lookbehind: true,\n            alias: 'class-name'\n          },\n          args: {\n            pattern: /\\S(?:[\\s\\S]*\\S)?/,\n            inside: Prism.languages.crystal\n          }\n        }\n      },\n      expansion: {\n        pattern: /\\{(?:\\{.*?\\}|%.*?%)\\}/,\n        inside: {\n          content: {\n            pattern: /^(\\{.)[\\s\\S]+(?=.\\}$)/,\n            lookbehind: true,\n            inside: Prism.languages.crystal\n          },\n          delimiter: {\n            pattern: /^\\{[\\{%]|[\\}%]\\}$/,\n            alias: 'operator'\n          }\n        }\n      },\n      char: {\n        pattern:\n          /'(?:[^\\\\\\r\\n]{1,2}|\\\\(?:.|u(?:[A-Fa-f0-9]{1,4}|\\{[A-Fa-f0-9]{1,6}\\})))'/,\n        greedy: true\n      }\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = csharp\ncsharp.displayName = 'csharp'\ncsharp.aliases = ['dotnet', 'cs']\nfunction csharp(Prism) {\n  ;(function (Prism) {\n    /**\n     * Replaces all placeholders \"<<n>>\" of given pattern with the n-th replacement (zero based).\n     *\n     * Note: This is a simple text based replacement. Be careful when using backreferences!\n     *\n     * @param {string} pattern the given pattern.\n     * @param {string[]} replacements a list of replacement which can be inserted into the given pattern.\n     * @returns {string} the pattern with all placeholders replaced with their corresponding replacements.\n     * @example replace(/a<<0>>a/.source, [/b+/.source]) === /a(?:b+)a/.source\n     */\n    function replace(pattern, replacements) {\n      return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n        return '(?:' + replacements[+index] + ')'\n      })\n    }\n    /**\n     * @param {string} pattern\n     * @param {string[]} replacements\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function re(pattern, replacements, flags) {\n      return RegExp(replace(pattern, replacements), flags || '')\n    }\n    /**\n     * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n     *\n     * @param {string} pattern\n     * @param {number} depthLog2\n     * @returns {string}\n     */\n    function nested(pattern, depthLog2) {\n      for (var i = 0; i < depthLog2; i++) {\n        pattern = pattern.replace(/<<self>>/g, function () {\n          return '(?:' + pattern + ')'\n        })\n      }\n      return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]')\n    } // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\n    var keywordKinds = {\n      // keywords which represent a return or variable type\n      type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void',\n      // keywords which are used to declare a type\n      typeDeclaration: 'class enum interface record struct',\n      // contextual keywords\n      // (\"var\" and \"dynamic\" are missing because they are used like types)\n      contextual:\n        'add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)',\n      // all other keywords\n      other:\n        'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield'\n    } // keywords\n    function keywordsToPattern(words) {\n      return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b'\n    }\n    var typeDeclarationKeywords = keywordsToPattern(\n      keywordKinds.typeDeclaration\n    )\n    var keywords = RegExp(\n      keywordsToPattern(\n        keywordKinds.type +\n          ' ' +\n          keywordKinds.typeDeclaration +\n          ' ' +\n          keywordKinds.contextual +\n          ' ' +\n          keywordKinds.other\n      )\n    )\n    var nonTypeKeywords = keywordsToPattern(\n      keywordKinds.typeDeclaration +\n        ' ' +\n        keywordKinds.contextual +\n        ' ' +\n        keywordKinds.other\n    )\n    var nonContextualKeywords = keywordsToPattern(\n      keywordKinds.type +\n        ' ' +\n        keywordKinds.typeDeclaration +\n        ' ' +\n        keywordKinds.other\n    ) // types\n    var generic = nested(/<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>/.source, 2) // the idea behind the other forbidden characters is to prevent false positives. Same for tupleElement.\n    var nestedRound = nested(/\\((?:[^()]|<<self>>)*\\)/.source, 2)\n    var name = /@?\\b[A-Za-z_]\\w*\\b/.source\n    var genericName = replace(/<<0>>(?:\\s*<<1>>)?/.source, [name, generic])\n    var identifier = replace(/(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*/.source, [\n      nonTypeKeywords,\n      genericName\n    ])\n    var array = /\\[\\s*(?:,\\s*)*\\]/.source\n    var typeExpressionWithoutTuple = replace(\n      /<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?/.source,\n      [identifier, array]\n    )\n    var tupleElement = replace(\n      /[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,\n      [generic, nestedRound, array]\n    )\n    var tuple = replace(/\\(<<0>>+(?:,<<0>>+)+\\)/.source, [tupleElement])\n    var typeExpression = replace(\n      /(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?/.source,\n      [tuple, identifier, array]\n    )\n    var typeInside = {\n      keyword: keywords,\n      punctuation: /[<>()?,.:[\\]]/\n    } // strings & characters\n    // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#character-literals\n    // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#string-literals\n    var character = /'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'/.source // simplified pattern\n    var regularString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/.source\n    var verbatimString = /@\"(?:\"\"|\\\\[\\s\\S]|[^\\\\\"])*\"(?!\")/.source\n    Prism.languages.csharp = Prism.languages.extend('clike', {\n      string: [\n        {\n          pattern: re(/(^|[^$\\\\])<<0>>/.source, [verbatimString]),\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: re(/(^|[^@$\\\\])<<0>>/.source, [regularString]),\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'class-name': [\n        {\n          // Using static\n          // using static System.Math;\n          pattern: re(/(\\busing\\s+static\\s+)<<0>>(?=\\s*;)/.source, [\n            identifier\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Using alias (type)\n          // using Project = PC.MyCompany.Project;\n          pattern: re(/(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)/.source, [\n            name,\n            typeExpression\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Using alias (alias)\n          // using Project = PC.MyCompany.Project;\n          pattern: re(/(\\busing\\s+)<<0>>(?=\\s*=)/.source, [name]),\n          lookbehind: true\n        },\n        {\n          // Type declarations\n          // class Foo<A, B>\n          // interface Foo<out A, B>\n          pattern: re(/(\\b<<0>>\\s+)<<1>>/.source, [\n            typeDeclarationKeywords,\n            genericName\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Single catch exception declaration\n          // catch(Foo)\n          // (things like catch(Foo e) is covered by variable declaration)\n          pattern: re(/(\\bcatch\\s*\\(\\s*)<<0>>/.source, [identifier]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Name of the type parameter of generic constraints\n          // where Foo : class\n          pattern: re(/(\\bwhere\\s+)<<0>>/.source, [name]),\n          lookbehind: true\n        },\n        {\n          // Casts and checks via as and is.\n          // as Foo<A>, is Bar<B>\n          // (things like if(a is Foo b) is covered by variable declaration)\n          pattern: re(/(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>/.source, [\n            typeExpressionWithoutTuple\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Variable, field and parameter declaration\n          // (Foo bar, Bar baz, Foo[,,] bay, Foo<Bar, FooBar<Bar>> bax)\n          pattern: re(\n            /\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))/\n              .source,\n            [typeExpression, nonContextualKeywords, name]\n          ),\n          inside: typeInside\n        }\n      ],\n      keyword: keywords,\n      // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#literals\n      number:\n        /(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,\n      operator: />>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,\n      punctuation: /\\?\\.?|::|[{}[\\];(),.:]/\n    })\n    Prism.languages.insertBefore('csharp', 'number', {\n      range: {\n        pattern: /\\.\\./,\n        alias: 'operator'\n      }\n    })\n    Prism.languages.insertBefore('csharp', 'punctuation', {\n      'named-parameter': {\n        pattern: re(/([(,]\\s*)<<0>>(?=\\s*:)/.source, [name]),\n        lookbehind: true,\n        alias: 'punctuation'\n      }\n    })\n    Prism.languages.insertBefore('csharp', 'class-name', {\n      namespace: {\n        // namespace Foo.Bar {}\n        // using Foo.Bar;\n        pattern: re(\n          /(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])/.source,\n          [name]\n        ),\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      'type-expression': {\n        // default(Foo), typeof(Foo<Bar>), sizeof(int)\n        pattern: re(\n          /(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))/\n            .source,\n          [nestedRound]\n        ),\n        lookbehind: true,\n        alias: 'class-name',\n        inside: typeInside\n      },\n      'return-type': {\n        // Foo<Bar> ForBar(); Foo IFoo.Bar() => 0\n        // int this[int index] => 0; T IReadOnlyList<T>.this[int index] => this[index];\n        // int Foo => 0; int Foo { get; set } = 0;\n        pattern: re(\n          /<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))/.source,\n          [typeExpression, identifier]\n        ),\n        inside: typeInside,\n        alias: 'class-name'\n      },\n      'constructor-invocation': {\n        // new List<Foo<Bar[]>> { }\n        pattern: re(/(\\bnew\\s+)<<0>>(?=\\s*[[({])/.source, [typeExpression]),\n        lookbehind: true,\n        inside: typeInside,\n        alias: 'class-name'\n      },\n      /*'explicit-implementation': {\n// int IFoo<Foo>.Bar => 0; void IFoo<Foo<Foo>>.Foo<T>();\npattern: replace(/\\b<<0>>(?=\\.<<1>>)/, className, methodOrPropertyDeclaration),\ninside: classNameInside,\nalias: 'class-name'\n},*/\n      'generic-method': {\n        // foo<Bar>()\n        pattern: re(/<<0>>\\s*<<1>>(?=\\s*\\()/.source, [name, generic]),\n        inside: {\n          function: re(/^<<0>>/.source, [name]),\n          generic: {\n            pattern: RegExp(generic),\n            alias: 'class-name',\n            inside: typeInside\n          }\n        }\n      },\n      'type-list': {\n        // The list of types inherited or of generic constraints\n        // class Foo<F> : Bar, IList<FooBar>\n        // where F : Bar, IList<int>\n        pattern: re(\n          /\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))/\n            .source,\n          [\n            typeDeclarationKeywords,\n            genericName,\n            name,\n            typeExpression,\n            keywords.source,\n            nestedRound,\n            /\\bnew\\s*\\(\\s*\\)/.source\n          ]\n        ),\n        lookbehind: true,\n        inside: {\n          'record-arguments': {\n            pattern: re(/(^(?!new\\s*\\()<<0>>\\s*)<<1>>/.source, [\n              genericName,\n              nestedRound\n            ]),\n            lookbehind: true,\n            greedy: true,\n            inside: Prism.languages.csharp\n          },\n          keyword: keywords,\n          'class-name': {\n            pattern: RegExp(typeExpression),\n            greedy: true,\n            inside: typeInside\n          },\n          punctuation: /[,()]/\n        }\n      },\n      preprocessor: {\n        pattern: /(^[\\t ]*)#.*/m,\n        lookbehind: true,\n        alias: 'property',\n        inside: {\n          // highlight preprocessor directives as keywords\n          directive: {\n            pattern:\n              /(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,\n            lookbehind: true,\n            alias: 'keyword'\n          }\n        }\n      }\n    }) // attributes\n    var regularStringOrCharacter = regularString + '|' + character\n    var regularStringCharacterOrComment = replace(\n      /\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>/.source,\n      [regularStringOrCharacter]\n    )\n    var roundExpression = nested(\n      replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [\n        regularStringCharacterOrComment\n      ]),\n      2\n    ) // https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/attributes/#attribute-targets\n    var attrTarget =\n      /\\b(?:assembly|event|field|method|module|param|property|return|type)\\b/\n        .source\n    var attr = replace(/<<0>>(?:\\s*\\(<<1>>*\\))?/.source, [\n      identifier,\n      roundExpression\n    ])\n    Prism.languages.insertBefore('csharp', 'class-name', {\n      attribute: {\n        // Attributes\n        // [Foo], [Foo(1), Bar(2, Prop = \"foo\")], [return: Foo(1), Bar(2)], [assembly: Foo(Bar)]\n        pattern: re(\n          /((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])/\n            .source,\n          [attrTarget, attr]\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          target: {\n            pattern: re(/^<<0>>(?=\\s*:)/.source, [attrTarget]),\n            alias: 'keyword'\n          },\n          'attribute-arguments': {\n            pattern: re(/\\(<<0>>*\\)/.source, [roundExpression]),\n            inside: Prism.languages.csharp\n          },\n          'class-name': {\n            pattern: RegExp(identifier),\n            inside: {\n              punctuation: /\\./\n            }\n          },\n          punctuation: /[:,]/\n        }\n      }\n    }) // string interpolation\n    var formatString = /:[^}\\r\\n]+/.source // multi line\n    var mInterpolationRound = nested(\n      replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [\n        regularStringCharacterOrComment\n      ]),\n      2\n    )\n    var mInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [\n      mInterpolationRound,\n      formatString\n    ]) // single line\n    var sInterpolationRound = nested(\n      replace(\n        /[^\"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<<self>>*\\)/\n          .source,\n        [regularStringOrCharacter]\n      ),\n      2\n    )\n    var sInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [\n      sInterpolationRound,\n      formatString\n    ])\n    function createInterpolationInside(interpolation, interpolationRound) {\n      return {\n        interpolation: {\n          pattern: re(/((?:^|[^{])(?:\\{\\{)*)<<0>>/.source, [interpolation]),\n          lookbehind: true,\n          inside: {\n            'format-string': {\n              pattern: re(/(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)/.source, [\n                interpolationRound,\n                formatString\n              ]),\n              lookbehind: true,\n              inside: {\n                punctuation: /^:/\n              }\n            },\n            punctuation: /^\\{|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              alias: 'language-csharp',\n              inside: Prism.languages.csharp\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n    Prism.languages.insertBefore('csharp', 'string', {\n      'interpolation-string': [\n        {\n          pattern: re(\n            /(^|[^\\\\])(?:\\$@|@\\$)\"(?:\"\"|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{\"])*\"/.source,\n            [mInterpolation]\n          ),\n          lookbehind: true,\n          greedy: true,\n          inside: createInterpolationInside(mInterpolation, mInterpolationRound)\n        },\n        {\n          pattern: re(/(^|[^@\\\\])\\$\"(?:\\\\.|\\{\\{|<<0>>|[^\\\\\"{])*\"/.source, [\n            sInterpolation\n          ]),\n          lookbehind: true,\n          greedy: true,\n          inside: createInterpolationInside(sInterpolation, sInterpolationRound)\n        }\n      ],\n      char: {\n        pattern: RegExp(character),\n        greedy: true\n      }\n    })\n    Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp\n  })(Prism)\n}\n","'use strict'\nvar refractorCsharp = require('./csharp.js')\nmodule.exports = cshtml\ncshtml.displayName = 'cshtml'\ncshtml.aliases = ['razor']\nfunction cshtml(Prism) {\n  Prism.register(refractorCsharp)\n  // Docs:\n  // https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-5.0&tabs=visual-studio\n  // https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-5.0\n  ;(function (Prism) {\n    var commentLike = /\\/(?![/*])|\\/\\/.*[\\r\\n]|\\/\\*[^*]*(?:\\*(?!\\/)[^*]*)*\\*\\//\n      .source\n    var stringLike =\n      /@(?!\")|\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|@\"(?:[^\\\\\"]|\"\"|\\\\[\\s\\S])*\"(?!\")/.source +\n      '|' +\n      /'(?:(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'|(?=[^\\\\](?!')))/.source\n    /**\n     * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n     *\n     * @param {string} pattern\n     * @param {number} depthLog2\n     * @returns {string}\n     */\n    function nested(pattern, depthLog2) {\n      for (var i = 0; i < depthLog2; i++) {\n        pattern = pattern.replace(/<self>/g, function () {\n          return '(?:' + pattern + ')'\n        })\n      }\n      return pattern\n        .replace(/<self>/g, '[^\\\\s\\\\S]')\n        .replace(/<str>/g, '(?:' + stringLike + ')')\n        .replace(/<comment>/g, '(?:' + commentLike + ')')\n    }\n    var round = nested(/\\((?:[^()'\"@/]|<str>|<comment>|<self>)*\\)/.source, 2)\n    var square = nested(/\\[(?:[^\\[\\]'\"@/]|<str>|<comment>|<self>)*\\]/.source, 2)\n    var curly = nested(/\\{(?:[^{}'\"@/]|<str>|<comment>|<self>)*\\}/.source, 2)\n    var angle = nested(/<(?:[^<>'\"@/]|<str>|<comment>|<self>)*>/.source, 2) // Note about the above bracket patterns:\n    // They all ignore HTML expressions that might be in the C# code. This is a problem because HTML (like strings and\n    // comments) is parsed differently. This is a huge problem because HTML might contain brackets and quotes which\n    // messes up the bracket and string counting implemented by the above patterns.\n    //\n    // This problem is not fixable because 1) HTML expression are highly context sensitive and very difficult to detect\n    // and 2) they require one capturing group at every nested level. See the `tagRegion` pattern to admire the\n    // complexity of an HTML expression.\n    //\n    // To somewhat alleviate the problem a bit, the patterns for characters (e.g. 'a') is very permissive, it also\n    // allows invalid characters to support HTML expressions like this: <p>That's it!</p>.\n    var tagAttrs =\n      /(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?/\n        .source\n    var tagContent = /(?!\\d)[^\\s>\\/=$<%]+/.source + tagAttrs + /\\s*\\/?>/.source\n    var tagRegion =\n      /\\B@?/.source +\n      '(?:' +\n      /<([a-zA-Z][\\w:]*)/.source +\n      tagAttrs +\n      /\\s*>/.source +\n      '(?:' +\n      (/[^<]/.source +\n        '|' + // all tags that are not the start tag\n        // eslint-disable-next-line regexp/strict\n        /<\\/?(?!\\1\\b)/.source +\n        tagContent +\n        '|' + // nested start tag\n        nested(\n          // eslint-disable-next-line regexp/strict\n          /<\\1/.source +\n            tagAttrs +\n            /\\s*>/.source +\n            '(?:' +\n            (/[^<]/.source +\n              '|' + // all tags that are not the start tag\n              // eslint-disable-next-line regexp/strict\n              /<\\/?(?!\\1\\b)/.source +\n              tagContent +\n              '|' +\n              '<self>') +\n            ')*' + // eslint-disable-next-line regexp/strict\n            /<\\/\\1\\s*>/.source,\n          2\n        )) +\n      ')*' + // eslint-disable-next-line regexp/strict\n      /<\\/\\1\\s*>/.source +\n      '|' +\n      /</.source +\n      tagContent +\n      ')' // Now for the actual language definition(s):\n    //\n    // Razor as a language has 2 parts:\n    //  1) CSHTML: A markup-like language that has been extended with inline C# code expressions and blocks.\n    //  2) C#+HTML: A variant of C# that can contain CSHTML tags as expressions.\n    //\n    // In the below code, both CSHTML and C#+HTML will be create as separate language definitions that reference each\n    // other. However, only CSHTML will be exported via `Prism.languages`.\n    Prism.languages.cshtml = Prism.languages.extend('markup', {})\n    var csharpWithHtml = Prism.languages.insertBefore(\n      'csharp',\n      'string',\n      {\n        html: {\n          pattern: RegExp(tagRegion),\n          greedy: true,\n          inside: Prism.languages.cshtml\n        }\n      },\n      {\n        csharp: Prism.languages.extend('csharp', {})\n      }\n    )\n    var cs = {\n      pattern: /\\S[\\s\\S]*/,\n      alias: 'language-csharp',\n      inside: csharpWithHtml\n    }\n    Prism.languages.insertBefore('cshtml', 'prolog', {\n      'razor-comment': {\n        pattern: /@\\*[\\s\\S]*?\\*@/,\n        greedy: true,\n        alias: 'comment'\n      },\n      block: {\n        pattern: RegExp(\n          /(^|[^@])@/.source +\n            '(?:' +\n            [\n              // @{ ... }\n              curly, // @code{ ... }\n              /(?:code|functions)\\s*/.source + curly, // @for (...) { ... }\n              /(?:for|foreach|lock|switch|using|while)\\s*/.source +\n                round +\n                /\\s*/.source +\n                curly, // @do { ... } while (...);\n              /do\\s*/.source +\n                curly +\n                /\\s*while\\s*/.source +\n                round +\n                /(?:\\s*;)?/.source, // @try { ... } catch (...) { ... } finally { ... }\n              /try\\s*/.source +\n                curly +\n                /\\s*catch\\s*/.source +\n                round +\n                /\\s*/.source +\n                curly +\n                /\\s*finally\\s*/.source +\n                curly, // @if (...) {...} else if (...) {...} else {...}\n              /if\\s*/.source +\n                round +\n                /\\s*/.source +\n                curly +\n                '(?:' +\n                /\\s*else/.source +\n                '(?:' +\n                /\\s+if\\s*/.source +\n                round +\n                ')?' +\n                /\\s*/.source +\n                curly +\n                ')*'\n            ].join('|') +\n            ')'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^@\\w*/,\n          csharp: cs\n        }\n      },\n      directive: {\n        pattern:\n          /^([ \\t]*)@(?:addTagHelper|attribute|implements|inherits|inject|layout|model|namespace|page|preservewhitespace|removeTagHelper|section|tagHelperPrefix|using)(?=\\s).*/m,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^@\\w+/,\n          csharp: cs\n        }\n      },\n      value: {\n        pattern: RegExp(\n          /(^|[^@])@/.source +\n            /(?:await\\b\\s*)?/.source +\n            '(?:' +\n            /\\w+\\b/.source +\n            '|' +\n            round +\n            ')' +\n            '(?:' +\n            /[?!]?\\.\\w+\\b/.source +\n            '|' +\n            round +\n            '|' +\n            square +\n            '|' +\n            angle +\n            round +\n            ')*'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'variable',\n        inside: {\n          keyword: /^@/,\n          csharp: cs\n        }\n      },\n      'delegate-operator': {\n        pattern: /(^|[^@])@(?=<)/,\n        lookbehind: true,\n        alias: 'operator'\n      }\n    })\n    Prism.languages.razor = Prism.languages.cshtml\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = csp\ncsp.displayName = 'csp'\ncsp.aliases = []\nfunction csp(Prism) {\n  /**\n   * Original by Scott Helme.\n   *\n   * Reference: https://scotthelme.co.uk/csp-cheat-sheet/\n   *\n   * Supports the following:\n   *  - https://www.w3.org/TR/CSP1/\n   *  - https://www.w3.org/TR/CSP2/\n   *  - https://www.w3.org/TR/CSP3/\n   */\n  ;(function (Prism) {\n    /**\n     * @param {string} source\n     * @returns {RegExp}\n     */\n    function value(source) {\n      return RegExp(\n        /([ \\t])/.source + '(?:' + source + ')' + /(?=[\\s;]|$)/.source,\n        'i'\n      )\n    }\n    Prism.languages.csp = {\n      directive: {\n        pattern:\n          /(^|[\\s;])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[\\s;]|$)/i,\n        lookbehind: true,\n        alias: 'property'\n      },\n      scheme: {\n        pattern: value(/[a-z][a-z0-9.+-]*:/.source),\n        lookbehind: true\n      },\n      none: {\n        pattern: value(/'none'/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      nonce: {\n        pattern: value(/'nonce-[-+/\\w=]+'/.source),\n        lookbehind: true,\n        alias: 'number'\n      },\n      hash: {\n        pattern: value(/'sha(?:256|384|512)-[-+/\\w=]+'/.source),\n        lookbehind: true,\n        alias: 'number'\n      },\n      host: {\n        pattern: value(\n          /[a-z][a-z0-9.+-]*:\\/\\/[^\\s;,']*/.source +\n            '|' +\n            /\\*[^\\s;,']*/.source +\n            '|' +\n            /[a-z0-9-]+(?:\\.[a-z0-9-]+)+(?::[\\d*]+)?(?:\\/[^\\s;,']*)?/.source\n        ),\n        lookbehind: true,\n        alias: 'url',\n        inside: {\n          important: /\\*/\n        }\n      },\n      keyword: [\n        {\n          pattern: value(/'unsafe-[a-z-]+'/.source),\n          lookbehind: true,\n          alias: 'unsafe'\n        },\n        {\n          pattern: value(/'[a-z-]+'/.source),\n          lookbehind: true,\n          alias: 'safe'\n        }\n      ],\n      punctuation: /;/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = cssExtras\ncssExtras.displayName = 'cssExtras'\ncssExtras.aliases = []\nfunction cssExtras(Prism) {\n  ;(function (Prism) {\n    var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/\n    var selectorInside\n    Prism.languages.css.selector = {\n      pattern: Prism.languages.css.selector.pattern,\n      lookbehind: true,\n      inside: (selectorInside = {\n        'pseudo-element':\n          /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n        'pseudo-class': /:[-\\w]+/,\n        class: /\\.[-\\w]+/,\n        id: /#[-\\w]+/,\n        attribute: {\n          pattern: RegExp('\\\\[(?:[^[\\\\]\"\\']|' + string.source + ')*\\\\]'),\n          greedy: true,\n          inside: {\n            punctuation: /^\\[|\\]$/,\n            'case-sensitivity': {\n              pattern: /(\\s)[si]$/i,\n              lookbehind: true,\n              alias: 'keyword'\n            },\n            namespace: {\n              pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/,\n              lookbehind: true,\n              inside: {\n                punctuation: /\\|$/\n              }\n            },\n            'attr-name': {\n              pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/,\n              lookbehind: true\n            },\n            'attr-value': [\n              string,\n              {\n                pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/,\n                lookbehind: true\n              }\n            ],\n            operator: /[|~*^$]?=/\n          }\n        },\n        'n-th': [\n          {\n            pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n            lookbehind: true,\n            inside: {\n              number: /[\\dn]+/,\n              operator: /[+-]/\n            }\n          },\n          {\n            pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n            lookbehind: true\n          }\n        ],\n        combinator: />|\\+|~|\\|\\|/,\n        // the `tag` token has been existed and removed.\n        // because we can't find a perfect tokenize to match it.\n        // if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.\n        punctuation: /[(),]/\n      })\n    }\n    Prism.languages.css['atrule'].inside['selector-function-argument'].inside =\n      selectorInside\n    Prism.languages.insertBefore('css', 'property', {\n      variable: {\n        pattern:\n          /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i,\n        lookbehind: true\n      }\n    })\n    var unit = {\n      pattern: /(\\b\\d+)(?:%|[a-z]+(?![\\w-]))/,\n      lookbehind: true\n    } // 123 -123 .123 -.123 12.3 -12.3\n    var number = {\n      pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n      lookbehind: true\n    }\n    Prism.languages.insertBefore('css', 'function', {\n      operator: {\n        pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n        lookbehind: true\n      },\n      // CAREFUL!\n      // Previewers and Inline color use hexcode and color.\n      hexcode: {\n        pattern: /\\B#[\\da-f]{3,8}\\b/i,\n        alias: 'color'\n      },\n      color: [\n        {\n          pattern:\n            /(^|[^\\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\\w-])/i,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n          inside: {\n            unit: unit,\n            number: number,\n            function: /[\\w-]+(?=\\()/,\n            punctuation: /[(),]/\n          }\n        }\n      ],\n      // it's important that there is no boundary assertion after the hex digits\n      entity: /\\\\[\\da-f]{1,8}/i,\n      unit: unit,\n      number: number\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = css\ncss.displayName = 'css'\ncss.aliases = []\nfunction css(Prism) {\n  ;(function (Prism) {\n    var string =\n      /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/\n    Prism.languages.css = {\n      comment: /\\/\\*[\\s\\S]*?\\*\\//,\n      atrule: {\n        pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n        inside: {\n          rule: /^@[\\w-]+/,\n          'selector-function-argument': {\n            pattern:\n              /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n            lookbehind: true,\n            alias: 'selector'\n          },\n          keyword: {\n            pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n            lookbehind: true\n          } // See rest below\n        }\n      },\n      url: {\n        // https://drafts.csswg.org/css-values-3/#urls\n        pattern: RegExp(\n          '\\\\burl\\\\((?:' +\n            string.source +\n            '|' +\n            /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source +\n            ')\\\\)',\n          'i'\n        ),\n        greedy: true,\n        inside: {\n          function: /^url/i,\n          punctuation: /^\\(|\\)$/,\n          string: {\n            pattern: RegExp('^' + string.source + '$'),\n            alias: 'url'\n          }\n        }\n      },\n      selector: {\n        pattern: RegExp(\n          '(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' +\n            string.source +\n            ')*(?=\\\\s*\\\\{)'\n        ),\n        lookbehind: true\n      },\n      string: {\n        pattern: string,\n        greedy: true\n      },\n      property: {\n        pattern:\n          /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n        lookbehind: true\n      },\n      important: /!important\\b/i,\n      function: {\n        pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n        lookbehind: true\n      },\n      punctuation: /[(){};:,]/\n    }\n    Prism.languages.css['atrule'].inside.rest = Prism.languages.css\n    var markup = Prism.languages.markup\n    if (markup) {\n      markup.tag.addInlined('style', 'css')\n      markup.tag.addAttribute('style', 'css')\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = csv\ncsv.displayName = 'csv'\ncsv.aliases = []\nfunction csv(Prism) {\n  // https://tools.ietf.org/html/rfc4180\n  Prism.languages.csv = {\n    value: /[^\\r\\n,\"]+|\"(?:[^\"]|\"\")*\"(?!\")/,\n    punctuation: /,/\n  }\n}\n","'use strict'\n\nmodule.exports = cypher\ncypher.displayName = 'cypher'\ncypher.aliases = []\nfunction cypher(Prism) {\n  Prism.languages.cypher = {\n    // https://neo4j.com/docs/cypher-manual/current/syntax/comments/\n    comment: /\\/\\/.*/,\n    string: {\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(:\\s*)(?:\\w+|`(?:[^`\\\\\\r\\n])*`)(?=\\s*[{):])/,\n      lookbehind: true,\n      greedy: true\n    },\n    relationship: {\n      pattern:\n        /(-\\[\\s*(?:\\w+\\s*|`(?:[^`\\\\\\r\\n])*`\\s*)?:\\s*|\\|\\s*:\\s*)(?:\\w+|`(?:[^`\\\\\\r\\n])*`)/,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    identifier: {\n      pattern: /`(?:[^`\\\\\\r\\n])*`/,\n      greedy: true\n    },\n    variable: /\\$\\w+/,\n    // https://neo4j.com/docs/cypher-manual/current/syntax/reserved/\n    keyword:\n      /\\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\\b/i,\n    function: /\\b\\w+\\b(?=\\s*\\()/,\n    boolean: /\\b(?:false|null|true)\\b/i,\n    number: /\\b(?:0x[\\da-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)\\b/,\n    // https://neo4j.com/docs/cypher-manual/current/syntax/operators/\n    operator: /:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\\.\\.\\.?/,\n    punctuation: /[()[\\]{},;.]/\n  }\n}\n","'use strict'\n\nmodule.exports = d\nd.displayName = 'd'\nd.aliases = []\nfunction d(Prism) {\n  Prism.languages.d = Prism.languages.extend('clike', {\n    comment: [\n      {\n        // Shebang\n        pattern: /^\\s*#!.+/,\n        greedy: true\n      },\n      {\n        pattern: RegExp(\n          /(^|[^\\\\])/.source +\n            '(?:' +\n            [\n              // /+ comment +/\n              // Allow one level of nesting\n              /\\/\\+(?:\\/\\+(?:[^+]|\\+(?!\\/))*\\+\\/|(?!\\/\\+)[\\s\\S])*?\\+\\//.source, // // comment\n              /\\/\\/.*/.source, // /* comment */\n              /\\/\\*[\\s\\S]*?\\*\\//.source\n            ].join('|') +\n            ')'\n        ),\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: [\n      {\n        pattern: RegExp(\n          [\n            // r\"\", x\"\"\n            /\\b[rx]\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"[cwd]?/.source, // q\"[]\", q\"()\", q\"<>\", q\"{}\"\n            /\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/.source, // q\"IDENT\n            // ...\n            // IDENT\"\n            /\\bq\"((?!\\d)\\w+)$[\\s\\S]*?^\\1\"/.source, // q\"//\", q\"||\", etc.\n            // eslint-disable-next-line regexp/strict\n            /\\bq\"(.)[\\s\\S]*?\\2\"/.source, // eslint-disable-next-line regexp/strict\n            /([\"`])(?:\\\\[\\s\\S]|(?!\\3)[^\\\\])*\\3[cwd]?/.source\n          ].join('|'),\n          'm'\n        ),\n        greedy: true\n      },\n      {\n        pattern: /\\bq\\{(?:\\{[^{}]*\\}|[^{}])*\\}/,\n        greedy: true,\n        alias: 'token-string'\n      }\n    ],\n    // In order: $, keywords and special tokens, globally defined symbols\n    keyword:\n      /\\$|\\b(?:__(?:(?:DATE|EOF|FILE|FUNCTION|LINE|MODULE|PRETTY_FUNCTION|TIMESTAMP|TIME|VENDOR|VERSION)__|gshared|parameters|traits|vector)|abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|dstring|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|ptrdiff_t|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|wstring)\\b/,\n    number: [\n      // The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n      // Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n      /\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]{0,4}/i,\n      {\n        pattern:\n          /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]{0,4}/i,\n        lookbehind: true\n      }\n    ],\n    operator:\n      /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n  })\n  Prism.languages.insertBefore('d', 'string', {\n    // Characters\n    // 'a', '\\\\', '\\n', '\\xFF', '\\377', '\\uFFFF', '\\U0010FFFF', '\\quot'\n    char: /'(?:\\\\(?:\\W|\\w+)|[^\\\\])'/\n  })\n  Prism.languages.insertBefore('d', 'keyword', {\n    property: /\\B@\\w*/\n  })\n  Prism.languages.insertBefore('d', 'function', {\n    register: {\n      // Iasm registers\n      pattern:\n        /\\b(?:[ABCD][LHX]|E?(?:BP|DI|SI|SP)|[BS]PL|[ECSDGF]S|CR[0234]|[DS]IL|DR[012367]|E[ABCD]X|X?MM[0-7]|R(?:1[0-5]|[89])[BWD]?|R[ABCD]X|R[BS]P|R[DS]I|TR[3-7]|XMM(?:1[0-5]|[89])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n      alias: 'variable'\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = dart\ndart.displayName = 'dart'\ndart.aliases = []\nfunction dart(Prism) {\n  ;(function (Prism) {\n    var keywords = [\n      /\\b(?:async|sync|yield)\\*/,\n      /\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\\b/\n    ] // Handles named imports, such as http.Client\n    var packagePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/\n      .source // based on the dart naming conventions\n    var className = {\n      pattern: RegExp(packagePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n      lookbehind: true,\n      inside: {\n        namespace: {\n          pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n          inside: {\n            punctuation: /\\./\n          }\n        }\n      }\n    }\n    Prism.languages.dart = Prism.languages.extend('clike', {\n      'class-name': [\n        className,\n        {\n          // variables and parameters\n          // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n          pattern: RegExp(\n            packagePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source\n          ),\n          lookbehind: true,\n          inside: className.inside\n        }\n      ],\n      keyword: keywords,\n      operator:\n        /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n    })\n    Prism.languages.insertBefore('dart', 'string', {\n      'string-literal': {\n        pattern:\n          /r?(?:(\"\"\"|''')[\\s\\S]*?\\1|([\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2(?!\\2))/,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern:\n              /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,\n            lookbehind: true,\n            inside: {\n              punctuation: /^\\$\\{?|\\}$/,\n              expression: {\n                pattern: /[\\s\\S]+/,\n                inside: Prism.languages.dart\n              }\n            }\n          },\n          string: /[\\s\\S]+/\n        }\n      },\n      string: undefined\n    })\n    Prism.languages.insertBefore('dart', 'class-name', {\n      metadata: {\n        pattern: /@\\w+/,\n        alias: 'function'\n      }\n    })\n    Prism.languages.insertBefore('dart', 'class-name', {\n      generics: {\n        pattern:\n          /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n        inside: {\n          'class-name': className,\n          keyword: keywords,\n          punctuation: /[<>(),.:]/,\n          operator: /[?&|]/\n        }\n      }\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = dataweave\ndataweave.displayName = 'dataweave'\ndataweave.aliases = []\nfunction dataweave(Prism) {\n  ;(function (Prism) {\n    Prism.languages.dataweave = {\n      url: /\\b[A-Za-z]+:\\/\\/[\\w/:.?=&-]+|\\burn:[\\w:.?=&-]+/,\n      property: {\n        pattern: /(?:\\b\\w+#)?(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|\\b\\w+)(?=\\s*[:@])/,\n        greedy: true\n      },\n      string: {\n        pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n        greedy: true\n      },\n      'mime-type':\n        /\\b(?:application|audio|image|multipart|text|video)\\/[\\w+-]+/,\n      date: {\n        pattern: /\\|[\\w:+-]+\\|/,\n        greedy: true\n      },\n      comment: [\n        {\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      regex: {\n        pattern: /\\/(?:[^\\\\\\/\\r\\n]|\\\\[^\\r\\n])+\\//,\n        greedy: true\n      },\n      keyword:\n        /\\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\\b/,\n      function: /\\b[A-Z_]\\w*(?=\\s*\\()/i,\n      number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n      punctuation: /[{}[\\];(),.:@]/,\n      operator: /<<|>>|->|[<>~=]=?|!=|--?-?|\\+\\+?|!|\\?/,\n      boolean: /\\b(?:false|true)\\b/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = dax\ndax.displayName = 'dax'\ndax.aliases = []\nfunction dax(Prism) {\n  Prism.languages.dax = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/).*)/,\n      lookbehind: true\n    },\n    'data-field': {\n      pattern:\n        /'(?:[^']|'')*'(?!')(?:\\[[ \\w\\xA0-\\uFFFF]+\\])?|\\w+\\[[ \\w\\xA0-\\uFFFF]+\\]/,\n      alias: 'symbol'\n    },\n    measure: {\n      pattern: /\\[[ \\w\\xA0-\\uFFFF]+\\]/,\n      alias: 'constant'\n    },\n    string: {\n      pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    function:\n      /\\b(?:ABS|ACOS|ACOSH|ACOT|ACOTH|ADDCOLUMNS|ADDMISSINGITEMS|ALL|ALLCROSSFILTERED|ALLEXCEPT|ALLNOBLANKROW|ALLSELECTED|AND|APPROXIMATEDISTINCTCOUNT|ASIN|ASINH|ATAN|ATANH|AVERAGE|AVERAGEA|AVERAGEX|BETA\\.DIST|BETA\\.INV|BLANK|CALCULATE|CALCULATETABLE|CALENDAR|CALENDARAUTO|CEILING|CHISQ\\.DIST|CHISQ\\.DIST\\.RT|CHISQ\\.INV|CHISQ\\.INV\\.RT|CLOSINGBALANCEMONTH|CLOSINGBALANCEQUARTER|CLOSINGBALANCEYEAR|COALESCE|COMBIN|COMBINA|COMBINEVALUES|CONCATENATE|CONCATENATEX|CONFIDENCE\\.NORM|CONFIDENCE\\.T|CONTAINS|CONTAINSROW|CONTAINSSTRING|CONTAINSSTRINGEXACT|CONVERT|COS|COSH|COT|COTH|COUNT|COUNTA|COUNTAX|COUNTBLANK|COUNTROWS|COUNTX|CROSSFILTER|CROSSJOIN|CURRENCY|CURRENTGROUP|CUSTOMDATA|DATATABLE|DATE|DATEADD|DATEDIFF|DATESBETWEEN|DATESINPERIOD|DATESMTD|DATESQTD|DATESYTD|DATEVALUE|DAY|DEGREES|DETAILROWS|DISTINCT|DISTINCTCOUNT|DISTINCTCOUNTNOBLANK|DIVIDE|EARLIER|EARLIEST|EDATE|ENDOFMONTH|ENDOFQUARTER|ENDOFYEAR|EOMONTH|ERROR|EVEN|EXACT|EXCEPT|EXP|EXPON\\.DIST|FACT|FALSE|FILTER|FILTERS|FIND|FIRSTDATE|FIRSTNONBLANK|FIRSTNONBLANKVALUE|FIXED|FLOOR|FORMAT|GCD|GENERATE|GENERATEALL|GENERATESERIES|GEOMEAN|GEOMEANX|GROUPBY|HASONEFILTER|HASONEVALUE|HOUR|IF|IF\\.EAGER|IFERROR|IGNORE|INT|INTERSECT|ISBLANK|ISCROSSFILTERED|ISEMPTY|ISERROR|ISEVEN|ISFILTERED|ISINSCOPE|ISLOGICAL|ISNONTEXT|ISNUMBER|ISO\\.CEILING|ISODD|ISONORAFTER|ISSELECTEDMEASURE|ISSUBTOTAL|ISTEXT|KEEPFILTERS|KEYWORDMATCH|LASTDATE|LASTNONBLANK|LASTNONBLANKVALUE|LCM|LEFT|LEN|LN|LOG|LOG10|LOOKUPVALUE|LOWER|MAX|MAXA|MAXX|MEDIAN|MEDIANX|MID|MIN|MINA|MINUTE|MINX|MOD|MONTH|MROUND|NATURALINNERJOIN|NATURALLEFTOUTERJOIN|NEXTDAY|NEXTMONTH|NEXTQUARTER|NEXTYEAR|NONVISUAL|NORM\\.DIST|NORM\\.INV|NORM\\.S\\.DIST|NORM\\.S\\.INV|NOT|NOW|ODD|OPENINGBALANCEMONTH|OPENINGBALANCEQUARTER|OPENINGBALANCEYEAR|OR|PARALLELPERIOD|PATH|PATHCONTAINS|PATHITEM|PATHITEMREVERSE|PATHLENGTH|PERCENTILE\\.EXC|PERCENTILE\\.INC|PERCENTILEX\\.EXC|PERCENTILEX\\.INC|PERMUT|PI|POISSON\\.DIST|POWER|PREVIOUSDAY|PREVIOUSMONTH|PREVIOUSQUARTER|PREVIOUSYEAR|PRODUCT|PRODUCTX|QUARTER|QUOTIENT|RADIANS|RAND|RANDBETWEEN|RANK\\.EQ|RANKX|RELATED|RELATEDTABLE|REMOVEFILTERS|REPLACE|REPT|RIGHT|ROLLUP|ROLLUPADDISSUBTOTAL|ROLLUPGROUP|ROLLUPISSUBTOTAL|ROUND|ROUNDDOWN|ROUNDUP|ROW|SAMEPERIODLASTYEAR|SAMPLE|SEARCH|SECOND|SELECTCOLUMNS|SELECTEDMEASURE|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURENAME|SELECTEDVALUE|SIGN|SIN|SINH|SQRT|SQRTPI|STARTOFMONTH|STARTOFQUARTER|STARTOFYEAR|STDEV\\.P|STDEV\\.S|STDEVX\\.P|STDEVX\\.S|SUBSTITUTE|SUBSTITUTEWITHINDEX|SUM|SUMMARIZE|SUMMARIZECOLUMNS|SUMX|SWITCH|T\\.DIST|T\\.DIST\\.2T|T\\.DIST\\.RT|T\\.INV|T\\.INV\\.2T|TAN|TANH|TIME|TIMEVALUE|TODAY|TOPN|TOPNPERLEVEL|TOPNSKIP|TOTALMTD|TOTALQTD|TOTALYTD|TREATAS|TRIM|TRUE|TRUNC|UNICHAR|UNICODE|UNION|UPPER|USERELATIONSHIP|USERNAME|USEROBJECTID|USERPRINCIPALNAME|UTCNOW|UTCTODAY|VALUE|VALUES|VAR\\.P|VAR\\.S|VARX\\.P|VARX\\.S|WEEKDAY|WEEKNUM|XIRR|XNPV|YEAR|YEARFRAC)(?=\\s*\\()/i,\n    keyword:\n      /\\b(?:DEFINE|EVALUATE|MEASURE|ORDER\\s+BY|RETURN|VAR|START\\s+AT|ASC|DESC)\\b/i,\n    boolean: {\n      pattern: /\\b(?:FALSE|NULL|TRUE)\\b/i,\n      alias: 'constant'\n    },\n    number: /\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/,\n    operator: /:=|[-+*\\/=^]|&&?|\\|\\||<(?:=>?|<|>)?|>[>=]?|\\b(?:IN|NOT)\\b/i,\n    punctuation: /[;\\[\\](){}`,.]/\n  }\n}\n","'use strict'\n\nmodule.exports = dhall\ndhall.displayName = 'dhall'\ndhall.aliases = []\nfunction dhall(Prism) {\n  // ABNF grammar:\n  // https://github.com/dhall-lang/dhall-lang/blob/master/standard/dhall.abnf\n  Prism.languages.dhall = {\n    // Multi-line comments can be nested. E.g. {- foo {- bar -} -}\n    // The multi-line pattern is essentially this:\n    //   \\{-(?:[^-{]|-(?!\\})|\\{(?!-)|<SELF>)*-\\}\n    comment:\n      /--.*|\\{-(?:[^-{]|-(?!\\})|\\{(?!-)|\\{-(?:[^-{]|-(?!\\})|\\{(?!-))*-\\})*-\\}/,\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\.)*\"|''(?:[^']|'(?!')|'''|''\\$\\{)*''(?!'|\\$)/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{[^{}]*\\}/,\n          inside: {\n            expression: {\n              pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true,\n              alias: 'language-dhall',\n              inside: null // see blow\n            },\n            punctuation: /\\$\\{|\\}/\n          }\n        }\n      }\n    },\n    label: {\n      pattern: /`[^`]*`/,\n      greedy: true\n    },\n    url: {\n      // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L596\n      pattern:\n        /\\bhttps?:\\/\\/[\\w.:%!$&'*+;=@~-]+(?:\\/[\\w.:%!$&'*+;=@~-]*)*(?:\\?[/?\\w.:%!$&'*+;=@~-]*)?/,\n      greedy: true\n    },\n    env: {\n      // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L661\n      pattern: /\\benv:(?:(?!\\d)\\w+|\"(?:[^\"\\\\=]|\\\\.)*\")/,\n      greedy: true,\n      inside: {\n        function: /^env/,\n        operator: /^:/,\n        variable: /[\\s\\S]+/\n      }\n    },\n    hash: {\n      // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L725\n      pattern: /\\bsha256:[\\da-fA-F]{64}\\b/,\n      inside: {\n        function: /sha256/,\n        operator: /:/,\n        number: /[\\da-fA-F]{64}/\n      }\n    },\n    // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L359\n    keyword:\n      /\\b(?:as|assert|else|forall|if|in|let|merge|missing|then|toMap|using|with)\\b|\\u2200/,\n    builtin: /\\b(?:None|Some)\\b/,\n    boolean: /\\b(?:False|True)\\b/,\n    number:\n      /\\bNaN\\b|-?\\bInfinity\\b|[+-]?\\b(?:0x[\\da-fA-F]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/,\n    operator:\n      /\\/\\\\|\\/\\/\\\\\\\\|&&|\\|\\||===|[!=]=|\\/\\/|->|\\+\\+|::|[+*#@=:?<>|\\\\\\u2227\\u2a53\\u2261\\u2afd\\u03bb\\u2192]/,\n    punctuation: /\\.\\.|[{}\\[\\](),./]/,\n    // we'll just assume that every capital word left is a type name\n    'class-name': /\\b[A-Z]\\w*\\b/\n  }\n  Prism.languages.dhall.string.inside.interpolation.inside.expression.inside =\n    Prism.languages.dhall\n}\n","'use strict'\n\nmodule.exports = diff\ndiff.displayName = 'diff'\ndiff.aliases = []\nfunction diff(Prism) {\n  ;(function (Prism) {\n    Prism.languages.diff = {\n      coord: [\n        // Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n        /^(?:\\*{3}|-{3}|\\+{3}).*$/m, // Match \"@@ ... @@\" coord lines in unified diff.\n        /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).\n        /^\\d.*$/m\n      ] // deleted, inserted, unchanged, diff\n    }\n    /**\n     * A map from the name of a block to its line prefix.\n     *\n     * @type {Object<string, string>}\n     */\n    var PREFIXES = {\n      'deleted-sign': '-',\n      'deleted-arrow': '<',\n      'inserted-sign': '+',\n      'inserted-arrow': '>',\n      unchanged: ' ',\n      diff: '!'\n    } // add a token for each prefix\n    Object.keys(PREFIXES).forEach(function (name) {\n      var prefix = PREFIXES[name]\n      var alias = []\n      if (!/^\\w+$/.test(name)) {\n        // \"deleted-sign\" -> \"deleted\"\n        alias.push(/\\w+/.exec(name)[0])\n      }\n      if (name === 'diff') {\n        alias.push('bold')\n      }\n      Prism.languages.diff[name] = {\n        pattern: RegExp(\n          '^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+',\n          'm'\n        ),\n        alias: alias,\n        inside: {\n          line: {\n            pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n            lookbehind: true\n          },\n          prefix: {\n            pattern: /[\\s\\S]/,\n            alias: /\\w+/.exec(name)[0]\n          }\n        }\n      }\n    }) // make prefixes available to Diff plugin\n    Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n      value: PREFIXES\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = django\ndjango.displayName = 'django'\ndjango.aliases = ['jinja2']\nfunction django(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  // Django/Jinja2 syntax definition for Prism.js <http://prismjs.com> syntax highlighter.\n  // Mostly it works OK but can paint code incorrectly on complex html/template tag combinations.\n  ;(function (Prism) {\n    Prism.languages.django = {\n      comment: /^\\{#[\\s\\S]*?#\\}$/,\n      tag: {\n        pattern: /(^\\{%[+-]?\\s*)\\w+/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      delimiter: {\n        pattern: /^\\{[{%][+-]?|[+-]?[}%]\\}$/,\n        alias: 'punctuation'\n      },\n      string: {\n        pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        greedy: true\n      },\n      filter: {\n        pattern: /(\\|)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      test: {\n        pattern: /(\\bis\\s+(?:not\\s+)?)(?!not\\b)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      function: /\\b[a-z_]\\w+(?=\\s*\\()/i,\n      keyword:\n        /\\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\\b/,\n      operator: /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n      number: /\\b\\d+(?:\\.\\d+)?\\b/,\n      boolean: /[Ff]alse|[Nn]one|[Tt]rue/,\n      variable: /\\b\\w+\\b/,\n      punctuation: /[{}[\\](),.:;]/\n    }\n    var pattern = /\\{\\{[\\s\\S]*?\\}\\}|\\{%[\\s\\S]*?%\\}|\\{#[\\s\\S]*?#\\}/g\n    var markupTemplating = Prism.languages['markup-templating']\n    Prism.hooks.add('before-tokenize', function (env) {\n      markupTemplating.buildPlaceholders(env, 'django', pattern)\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      markupTemplating.tokenizePlaceholders(env, 'django')\n    }) // Add an Jinja2 alias\n    Prism.languages.jinja2 = Prism.languages.django\n    Prism.hooks.add('before-tokenize', function (env) {\n      markupTemplating.buildPlaceholders(env, 'jinja2', pattern)\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      markupTemplating.tokenizePlaceholders(env, 'jinja2')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = dnsZoneFile\ndnsZoneFile.displayName = 'dnsZoneFile'\ndnsZoneFile.aliases = []\nfunction dnsZoneFile(Prism) {\n  Prism.languages['dns-zone-file'] = {\n    comment: /;.*/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    variable: [\n      {\n        pattern: /(^\\$ORIGIN[ \\t]+)\\S+/m,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|\\s)@(?=\\s|$)/,\n        lookbehind: true\n      }\n    ],\n    keyword: /^\\$(?:INCLUDE|ORIGIN|TTL)(?=\\s|$)/m,\n    class: {\n      // https://tools.ietf.org/html/rfc1035#page-13\n      pattern: /(^|\\s)(?:CH|CS|HS|IN)(?=\\s|$)/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    type: {\n      // https://en.wikipedia.org/wiki/List_of_DNS_record_types\n      pattern:\n        /(^|\\s)(?:A|A6|AAAA|AFSDB|APL|ATMA|CAA|CDNSKEY|CDS|CERT|CNAME|DHCID|DLV|DNAME|DNSKEY|DS|EID|GID|GPOS|HINFO|HIP|IPSECKEY|ISDN|KEY|KX|LOC|MAILA|MAILB|MB|MD|MF|MG|MINFO|MR|MX|NAPTR|NB|NBSTAT|NIMLOC|NINFO|NS|NSAP|NSAP-PTR|NSEC|NSEC3|NSEC3PARAM|NULL|NXT|OPENPGPKEY|PTR|PX|RKEY|RP|RRSIG|RT|SIG|SINK|SMIMEA|SOA|SPF|SRV|SSHFP|TA|TKEY|TLSA|TSIG|TXT|UID|UINFO|UNSPEC|URI|WKS|X25)(?=\\s|$)/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    punctuation: /[()]/\n  }\n  Prism.languages['dns-zone'] = Prism.languages['dns-zone-file']\n}\n","'use strict'\n\nmodule.exports = docker\ndocker.displayName = 'docker'\ndocker.aliases = ['dockerfile']\nfunction docker(Prism) {\n  ;(function (Prism) {\n    // Many of the following regexes will contain negated lookaheads like `[ \\t]+(?![ \\t])`. This is a trick to ensure\n    // that quantifiers behave *atomically*. Atomic quantifiers are necessary to prevent exponential backtracking.\n    var spaceAfterBackSlash =\n      /\\\\[\\r\\n](?:\\s|\\\\[\\r\\n]|#.*(?!.))*(?![\\s#]|\\\\[\\r\\n])/.source // At least one space, comment, or line break\n    var space = /(?:[ \\t]+(?![ \\t])(?:<SP_BS>)?|<SP_BS>)/.source.replace(\n      /<SP_BS>/g,\n      function () {\n        return spaceAfterBackSlash\n      }\n    )\n    var string =\n      /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"|'(?:[^'\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*'/\n        .source\n    var option = /--[\\w-]+=(?:<STR>|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)/.source.replace(\n      /<STR>/g,\n      function () {\n        return string\n      }\n    )\n    var stringRule = {\n      pattern: RegExp(string),\n      greedy: true\n    }\n    var commentRule = {\n      pattern: /(^[ \\t]*)#.*/m,\n      lookbehind: true,\n      greedy: true\n    }\n    /**\n     * @param {string} source\n     * @param {string} flags\n     * @returns {RegExp}\n     */\n    function re(source, flags) {\n      source = source\n        .replace(/<OPT>/g, function () {\n          return option\n        })\n        .replace(/<SP>/g, function () {\n          return space\n        })\n      return RegExp(source, flags)\n    }\n    Prism.languages.docker = {\n      instruction: {\n        pattern:\n          /(^[ \\t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\\s)(?:\\\\.|[^\\r\\n\\\\])*(?:\\\\$(?:\\s|#.*$)*(?![\\s#])(?:\\\\.|[^\\r\\n\\\\])*)*/im,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          options: {\n            pattern: re(\n              /(^(?:ONBUILD<SP>)?\\w+<SP>)<OPT>(?:<SP><OPT>)*/.source,\n              'i'\n            ),\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              property: {\n                pattern: /(^|\\s)--[\\w-]+/,\n                lookbehind: true\n              },\n              string: [\n                stringRule,\n                {\n                  pattern: /(=)(?![\"'])(?:[^\\s\\\\]|\\\\.)+/,\n                  lookbehind: true\n                }\n              ],\n              operator: /\\\\$/m,\n              punctuation: /=/\n            }\n          },\n          keyword: [\n            {\n              // https://docs.docker.com/engine/reference/builder/#healthcheck\n              pattern: re(\n                /(^(?:ONBUILD<SP>)?HEALTHCHECK<SP>(?:<OPT><SP>)*)(?:CMD|NONE)\\b/\n                  .source,\n                'i'\n              ),\n              lookbehind: true,\n              greedy: true\n            },\n            {\n              // https://docs.docker.com/engine/reference/builder/#from\n              pattern: re(\n                /(^(?:ONBUILD<SP>)?FROM<SP>(?:<OPT><SP>)*(?!--)[^ \\t\\\\]+<SP>)AS/\n                  .source,\n                'i'\n              ),\n              lookbehind: true,\n              greedy: true\n            },\n            {\n              // https://docs.docker.com/engine/reference/builder/#onbuild\n              pattern: re(/(^ONBUILD<SP>)\\w+/.source, 'i'),\n              lookbehind: true,\n              greedy: true\n            },\n            {\n              pattern: /^\\w+/,\n              greedy: true\n            }\n          ],\n          comment: commentRule,\n          string: stringRule,\n          variable: /\\$(?:\\w+|\\{[^{}\"'\\\\]*\\})/,\n          operator: /\\\\$/m\n        }\n      },\n      comment: commentRule\n    }\n    Prism.languages.dockerfile = Prism.languages.docker\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = dot\ndot.displayName = 'dot'\ndot.aliases = ['gv']\nfunction dot(Prism) {\n  // https://www.graphviz.org/doc/info/lang.html\n  ;(function (Prism) {\n    var ID =\n      '(?:' +\n      [\n        // an identifier\n        /[a-zA-Z_\\x80-\\uFFFF][\\w\\x80-\\uFFFF]*/.source, // a number\n        /-?(?:\\.\\d+|\\d+(?:\\.\\d*)?)/.source, // a double-quoted string\n        /\"[^\"\\\\]*(?:\\\\[\\s\\S][^\"\\\\]*)*\"/.source, // HTML-like string\n        /<(?:[^<>]|(?!<!--)<(?:[^<>\"']|\"[^\"]*\"|'[^']*')+>|<!--(?:[^-]|-(?!->))*-->)*>/\n          .source\n      ].join('|') +\n      ')'\n    var IDInside = {\n      markup: {\n        pattern: /(^<)[\\s\\S]+(?=>$)/,\n        lookbehind: true,\n        alias: ['language-markup', 'language-html', 'language-xml'],\n        inside: Prism.languages.markup\n      }\n    }\n    /**\n     * @param {string} source\n     * @param {string} flags\n     * @returns {RegExp}\n     */\n    function withID(source, flags) {\n      return RegExp(\n        source.replace(/<ID>/g, function () {\n          return ID\n        }),\n        flags\n      )\n    }\n    Prism.languages.dot = {\n      comment: {\n        pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/|^#.*/m,\n        greedy: true\n      },\n      'graph-name': {\n        pattern: withID(\n          /(\\b(?:digraph|graph|subgraph)[ \\t\\r\\n]+)<ID>/.source,\n          'i'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'class-name',\n        inside: IDInside\n      },\n      'attr-value': {\n        pattern: withID(/(=[ \\t\\r\\n]*)<ID>/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: IDInside\n      },\n      'attr-name': {\n        pattern: withID(/([\\[;, \\t\\r\\n])<ID>(?=[ \\t\\r\\n]*=)/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: IDInside\n      },\n      keyword: /\\b(?:digraph|edge|graph|node|strict|subgraph)\\b/i,\n      'compass-point': {\n        pattern: /(:[ \\t\\r\\n]*)(?:[ewc_]|[ns][ew]?)(?![\\w\\x80-\\uFFFF])/,\n        lookbehind: true,\n        alias: 'builtin'\n      },\n      node: {\n        pattern: withID(/(^|[^-.\\w\\x80-\\uFFFF\\\\])<ID>/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: IDInside\n      },\n      operator: /[=:]|-[->]/,\n      punctuation: /[\\[\\]{};,]/\n    }\n    Prism.languages.gv = Prism.languages.dot\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = ebnf\nebnf.displayName = 'ebnf'\nebnf.aliases = []\nfunction ebnf(Prism) {\n  Prism.languages.ebnf = {\n    comment: /\\(\\*[\\s\\S]*?\\*\\)/,\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n      greedy: true\n    },\n    special: {\n      pattern: /\\?[^?\\r\\n]*\\?/,\n      greedy: true,\n      alias: 'class-name'\n    },\n    definition: {\n      pattern: /^([\\t ]*)[a-z]\\w*(?:[ \\t]+[a-z]\\w*)*(?=\\s*=)/im,\n      lookbehind: true,\n      alias: ['rule', 'keyword']\n    },\n    rule: /\\b[a-z]\\w*(?:[ \\t]+[a-z]\\w*)*\\b/i,\n    punctuation: /\\([:/]|[:/]\\)|[.,;()[\\]{}]/,\n    operator: /[-=|*/!]/\n  }\n}\n","'use strict'\n\nmodule.exports = editorconfig\neditorconfig.displayName = 'editorconfig'\neditorconfig.aliases = []\nfunction editorconfig(Prism) {\n  Prism.languages.editorconfig = {\n    // https://editorconfig-specification.readthedocs.io\n    comment: /[;#].*/,\n    section: {\n      pattern: /(^[ \\t]*)\\[.+\\]/m,\n      lookbehind: true,\n      alias: 'selector',\n      inside: {\n        regex: /\\\\\\\\[\\[\\]{},!?.*]/,\n        // Escape special characters with '\\\\'\n        operator: /[!?]|\\.\\.|\\*{1,2}/,\n        punctuation: /[\\[\\]{},]/\n      }\n    },\n    key: {\n      pattern: /(^[ \\t]*)[^\\s=]+(?=[ \\t]*=)/m,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    value: {\n      pattern: /=.*/,\n      alias: 'attr-value',\n      inside: {\n        punctuation: /^=/\n      }\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = eiffel\neiffel.displayName = 'eiffel'\neiffel.aliases = []\nfunction eiffel(Prism) {\n  Prism.languages.eiffel = {\n    comment: /--.*/,\n    string: [\n      // Aligned-verbatim-strings\n      {\n        pattern: /\"([^[]*)\\[[\\s\\S]*?\\]\\1\"/,\n        greedy: true\n      }, // Non-aligned-verbatim-strings\n      {\n        pattern: /\"([^{]*)\\{[\\s\\S]*?\\}\\1\"/,\n        greedy: true\n      }, // Single-line string\n      {\n        pattern: /\"(?:%(?:(?!\\n)\\s)*\\n\\s*%|%\\S|[^%\"\\r\\n])*\"/,\n        greedy: true\n      }\n    ],\n    // normal char | special char | char code\n    char: /'(?:%.|[^%'\\r\\n])+'/,\n    keyword:\n      /\\b(?:across|agent|alias|all|and|as|assign|attached|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\\b/i,\n    boolean: /\\b(?:False|True)\\b/i,\n    // Convention: class-names are always all upper-case characters\n    'class-name': /\\b[A-Z][\\dA-Z_]*\\b/,\n    number: [\n      // hexa | octal | bin\n      /\\b0[xcb][\\da-f](?:_*[\\da-f])*\\b/i, // Decimal\n      /(?:\\b\\d(?:_*\\d)*)?\\.(?:(?:\\d(?:_*\\d)*)?e[+-]?)?\\d(?:_*\\d)*\\b|\\b\\d(?:_*\\d)*\\b\\.?/i\n    ],\n    punctuation: /:=|<<|>>|\\(\\||\\|\\)|->|\\.(?=\\w)|[{}[\\];(),:?]/,\n    operator: /\\\\\\\\|\\|\\.\\.\\||\\.\\.|\\/[~\\/=]?|[><]=?|[-+*^=~]/\n  }\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = ejs\nejs.displayName = 'ejs'\nejs.aliases = ['eta']\nfunction ejs(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.ejs = {\n      delimiter: {\n        pattern: /^<%[-_=]?|[-_]?%>$/,\n        alias: 'punctuation'\n      },\n      comment: /^#[\\s\\S]*/,\n      'language-javascript': {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages.javascript\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var ejsPattern = /<%(?!%)[\\s\\S]+?%>/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'ejs',\n        ejsPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'ejs')\n    })\n    Prism.languages.eta = Prism.languages.ejs\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = elixir\nelixir.displayName = 'elixir'\nelixir.aliases = []\nfunction elixir(Prism) {\n  Prism.languages.elixir = {\n    doc: {\n      pattern:\n        /@(?:doc|moduledoc)\\s+(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2)/,\n      inside: {\n        attribute: /^@\\w+/,\n        string: /['\"][\\s\\S]+/\n      }\n    },\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    // ~r\"\"\"foo\"\"\" (multi-line), ~r'''foo''' (multi-line), ~r/foo/, ~r|foo|, ~r\"foo\", ~r'foo', ~r(foo), ~r[foo], ~r{foo}, ~r<foo>\n    regex: {\n      pattern:\n        /~[rR](?:(\"\"\"|''')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1|([\\/|\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])+\\2|\\((?:\\\\.|[^\\\\)\\r\\n])+\\)|\\[(?:\\\\.|[^\\\\\\]\\r\\n])+\\]|\\{(?:\\\\.|[^\\\\}\\r\\n])+\\}|<(?:\\\\.|[^\\\\>\\r\\n])+>)[uismxfr]*/,\n      greedy: true\n    },\n    string: [\n      {\n        // ~s\"\"\"foo\"\"\" (multi-line), ~s'''foo''' (multi-line), ~s/foo/, ~s|foo|, ~s\"foo\", ~s'foo', ~s(foo), ~s[foo], ~s{foo} (with interpolation care), ~s<foo>\n        pattern:\n          /~[cCsSwW](?:(\"\"\"|''')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1|([\\/|\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])+\\2|\\((?:\\\\.|[^\\\\)\\r\\n])+\\)|\\[(?:\\\\.|[^\\\\\\]\\r\\n])+\\]|\\{(?:\\\\.|#\\{[^}]+\\}|#(?!\\{)|[^#\\\\}\\r\\n])+\\}|<(?:\\\\.|[^\\\\>\\r\\n])+>)[csa]?/,\n        greedy: true,\n        inside: {\n          // See interpolation below\n        }\n      },\n      {\n        pattern: /(\"\"\"|''')[\\s\\S]*?\\1/,\n        greedy: true,\n        inside: {\n          // See interpolation below\n        }\n      },\n      {\n        // Multi-line strings are allowed\n        pattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        greedy: true,\n        inside: {\n          // See interpolation below\n        }\n      }\n    ],\n    atom: {\n      // Look-behind prevents bad highlighting of the :: operator\n      pattern: /(^|[^:]):\\w+/,\n      lookbehind: true,\n      alias: 'symbol'\n    },\n    module: {\n      pattern: /\\b[A-Z]\\w*\\b/,\n      alias: 'class-name'\n    },\n    // Look-ahead prevents bad highlighting of the :: operator\n    'attr-name': /\\b\\w+\\??:(?!:)/,\n    argument: {\n      // Look-behind prevents bad highlighting of the && operator\n      pattern: /(^|[^&])&\\d+/,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    attribute: {\n      pattern: /@\\w+/,\n      alias: 'variable'\n    },\n    function: /\\b[_a-zA-Z]\\w*[?!]?(?:(?=\\s*(?:\\.\\s*)?\\()|(?=\\/\\d))/,\n    number: /\\b(?:0[box][a-f\\d_]+|\\d[\\d_]*)(?:\\.[\\d_]+)?(?:e[+-]?[\\d_]+)?\\b/i,\n    keyword:\n      /\\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\\b/,\n    boolean: /\\b(?:false|nil|true)\\b/,\n    operator: [\n      /\\bin\\b|&&?|\\|[|>]?|\\\\\\\\|::|\\.\\.\\.?|\\+\\+?|-[->]?|<[-=>]|>=|!==?|\\B!|=(?:==?|[>~])?|[*\\/^]/,\n      {\n        // We don't want to match <<\n        pattern: /([^<])<(?!<)/,\n        lookbehind: true\n      },\n      {\n        // We don't want to match >>\n        pattern: /([^>])>(?!>)/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /<<|>>|[.,%\\[\\]{}()]/\n  }\n  Prism.languages.elixir.string.forEach(function (o) {\n    o.inside = {\n      interpolation: {\n        pattern: /#\\{[^}]+\\}/,\n        inside: {\n          delimiter: {\n            pattern: /^#\\{|\\}$/,\n            alias: 'punctuation'\n          },\n          rest: Prism.languages.elixir\n        }\n      }\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = elm\nelm.displayName = 'elm'\nelm.aliases = []\nfunction elm(Prism) {\n  Prism.languages.elm = {\n    comment: /--.*|\\{-[\\s\\S]*?-\\}/,\n    char: {\n      pattern:\n        /'(?:[^\\\\'\\r\\n]|\\\\(?:[abfnrtv\\\\']|\\d+|x[0-9a-fA-F]+|u\\{[0-9a-fA-F]+\\}))'/,\n      greedy: true\n    },\n    string: [\n      {\n        // Multiline strings are wrapped in triple \". Quotes may appear unescaped.\n        pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n        greedy: true\n      },\n      {\n        pattern: /\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"/,\n        greedy: true\n      }\n    ],\n    'import-statement': {\n      // The imported or hidden names are not included in this import\n      // statement. This is because we want to highlight those exactly like\n      // we do for the names in the program.\n      pattern:\n        /(^[\\t ]*)import\\s+[A-Z]\\w*(?:\\.[A-Z]\\w*)*(?:\\s+as\\s+(?:[A-Z]\\w*)(?:\\.[A-Z]\\w*)*)?(?:\\s+exposing\\s+)?/m,\n      lookbehind: true,\n      inside: {\n        keyword: /\\b(?:as|exposing|import)\\b/\n      }\n    },\n    keyword:\n      /\\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\\b/,\n    // These are builtin variables only. Constructors are highlighted later as a constant.\n    builtin:\n      /\\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\\b/,\n    // decimal integers and floating point numbers | hexadecimal integers\n    number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0x[0-9a-f]+)\\b/i,\n    // Most of this is needed because of the meaning of a single '.'.\n    // If it stands alone freely, it is the function composition.\n    // It may also be a separator between a module name and an identifier => no\n    // operator. If it comes together with other special characters it is an\n    // operator too.\n    // Valid operator characters in 0.18: +-/*=.$<>:&|^?%#@~!\n    // Ref: https://groups.google.com/forum/#!msg/elm-dev/0AHSnDdkSkQ/E0SVU70JEQAJ\n    operator: /\\s\\.\\s|[+\\-/*=.$<>:&|^?%#@~!]{2,}|[+\\-/*=$<>:&|^?%#@~!]/,\n    // In Elm, nearly everything is a variable, do not highlight these.\n    hvariable: /\\b(?:[A-Z]\\w*\\.)*[a-z]\\w*\\b/,\n    constant: /\\b(?:[A-Z]\\w*\\.)*[A-Z]\\w*\\b/,\n    punctuation: /[{}[\\]|(),.:]/\n  }\n}\n","'use strict'\nvar refractorRuby = require('./ruby.js')\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = erb\nerb.displayName = 'erb'\nerb.aliases = []\nfunction erb(Prism) {\n  Prism.register(refractorRuby)\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.erb = {\n      delimiter: {\n        pattern: /^(\\s*)<%=?|%>(?=\\s*$)/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      ruby: {\n        pattern: /\\s*\\S[\\s\\S]*/,\n        alias: 'language-ruby',\n        inside: Prism.languages.ruby\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var erbPattern =\n        /<%=?(?:[^\\r\\n]|[\\r\\n](?!=begin)|[\\r\\n]=begin\\s(?:[^\\r\\n]|[\\r\\n](?!=end))*[\\r\\n]=end)+?%>/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'erb',\n        erbPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'erb')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = erlang\nerlang.displayName = 'erlang'\nerlang.aliases = []\nfunction erlang(Prism) {\n  Prism.languages.erlang = {\n    comment: /%.+/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n      greedy: true\n    },\n    'quoted-function': {\n      pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n      alias: 'function'\n    },\n    'quoted-atom': {\n      pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n      alias: 'atom'\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    keyword: /\\b(?:after|case|catch|end|fun|if|of|receive|try|when)\\b/,\n    number: [\n      /\\$\\\\?./,\n      /\\b\\d+#[a-z0-9]+/i,\n      /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n    ],\n    function: /\\b[a-z][\\w@]*(?=\\()/,\n    variable: {\n      // Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n      pattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n      lookbehind: true\n    },\n    operator: [\n      /[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:and|andalso|band|bnot|bor|bsl|bsr|bxor|div|not|or|orelse|rem|xor)\\b/,\n      {\n        // We don't want to match <<\n        pattern: /(^|[^<])<(?!<)/,\n        lookbehind: true\n      },\n      {\n        // We don't want to match >>\n        pattern: /(^|[^>])>(?!>)/,\n        lookbehind: true\n      }\n    ],\n    atom: /\\b[a-z][\\w@]*/,\n    punctuation: /[()[\\]{}:;,.#|]|<<|>>/\n  }\n}\n","'use strict'\nvar refractorLua = require('./lua.js')\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = etlua\netlua.displayName = 'etlua'\netlua.aliases = []\nfunction etlua(Prism) {\n  Prism.register(refractorLua)\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.etlua = {\n      delimiter: {\n        pattern: /^<%[-=]?|-?%>$/,\n        alias: 'punctuation'\n      },\n      'language-lua': {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages.lua\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var pattern = /<%[\\s\\S]+?%>/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'etlua',\n        pattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'etlua')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = excelFormula\nexcelFormula.displayName = 'excelFormula'\nexcelFormula.aliases = []\nfunction excelFormula(Prism) {\n  Prism.languages['excel-formula'] = {\n    comment: {\n      pattern: /(\\bN\\(\\s*)\"(?:[^\"]|\"\")*\"(?=\\s*\\))/i,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    reference: {\n      // https://www.ablebits.com/office-addins-blog/2015/12/08/excel-reference-another-sheet-workbook/\n      // Sales!B2\n      // 'Winter sales'!B2\n      // [Sales.xlsx]Jan!B2:B5\n      // D:\\Reports\\[Sales.xlsx]Jan!B2:B5\n      // '[Sales.xlsx]Jan sales'!B2:B5\n      // 'D:\\Reports\\[Sales.xlsx]Jan sales'!B2:B5\n      pattern:\n        /(?:'[^']*'|(?:[^\\s()[\\]{}<>*?\"';,$&]*\\[[^^\\s()[\\]{}<>*?\"']+\\])?\\w+)!/,\n      greedy: true,\n      alias: 'string',\n      inside: {\n        operator: /!$/,\n        punctuation: /'/,\n        sheet: {\n          pattern: /[^[\\]]+$/,\n          alias: 'function'\n        },\n        file: {\n          pattern: /\\[[^[\\]]+\\]$/,\n          inside: {\n            punctuation: /[[\\]]/\n          }\n        },\n        path: /[\\s\\S]+/\n      }\n    },\n    'function-name': {\n      pattern: /\\b[A-Z]\\w*(?=\\()/i,\n      alias: 'keyword'\n    },\n    range: {\n      pattern:\n        /\\$?\\b(?:[A-Z]+\\$?\\d+:\\$?[A-Z]+\\$?\\d+|[A-Z]+:\\$?[A-Z]+|\\d+:\\$?\\d+)\\b/i,\n      alias: 'property',\n      inside: {\n        operator: /:/,\n        cell: /\\$?[A-Z]+\\$?\\d+/i,\n        column: /\\$?[A-Z]+/i,\n        row: /\\$?\\d+/\n      }\n    },\n    cell: {\n      // Excel is case insensitive, so the string \"foo1\" could be either a variable or a cell.\n      // To combat this, we match cells case insensitive, if the contain at least one \"$\", and case sensitive otherwise.\n      pattern: /\\b[A-Z]+\\d+\\b|\\$[A-Za-z]+\\$?\\d+\\b|\\b[A-Za-z]+\\$\\d+\\b/,\n      alias: 'property'\n    },\n    number: /(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[+-]?\\d+)?\\b/i,\n    boolean: /\\b(?:FALSE|TRUE)\\b/i,\n    operator: /[-+*/^%=&,]|<[=>]?|>=?/,\n    punctuation: /[[\\]();{}|]/\n  }\n  Prism.languages['xlsx'] = Prism.languages['xls'] =\n    Prism.languages['excel-formula']\n}\n","'use strict'\n\nmodule.exports = factor\nfactor.displayName = 'factor'\nfactor.aliases = []\nfunction factor(Prism) {\n  ;(function (Prism) {\n    var comment_inside = {\n      function:\n        /\\b(?:BUGS?|FIX(?:MES?)?|NOTES?|TODOS?|XX+|HACKS?|WARN(?:ING)?|\\?{2,}|!{2,})\\b/\n    }\n    var string_inside = {\n      number: /\\\\[^\\s']|%\\w/\n    }\n    var factor = {\n      comment: [\n        {\n          // ! single-line exclamation point comments with whitespace after/around the !\n          pattern: /(^|\\s)(?:! .*|!$)/,\n          lookbehind: true,\n          inside: comment_inside\n        },\n        /* from basis/multiline: */\n        {\n          // /* comment */, /* comment*/\n          pattern: /(^|\\s)\\/\\*\\s[\\s\\S]*?\\*\\/(?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          inside: comment_inside\n        },\n        {\n          // ![[ comment ]] , ![===[ comment]===]\n          pattern: /(^|\\s)!\\[(={0,6})\\[\\s[\\s\\S]*?\\]\\2\\](?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          inside: comment_inside\n        }\n      ],\n      number: [\n        {\n          // basic base 10 integers 9, -9\n          pattern: /(^|\\s)[+-]?\\d+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // base prefix integers 0b010 0o70 0xad 0d10 0XAD -0xa9\n          pattern: /(^|\\s)[+-]?0(?:b[01]+|o[0-7]+|d\\d+|x[\\dA-F]+)(?=\\s|$)/i,\n          lookbehind: true\n        },\n        {\n          // fractional ratios 1/5 -1/5 and the literal float approximations 1/5. -1/5.\n          pattern: /(^|\\s)[+-]?\\d+\\/\\d+\\.?(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // positive mixed numbers 23+1/5 +23+1/5\n          pattern: /(^|\\s)\\+?\\d+\\+\\d+\\/\\d+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // negative mixed numbers -23-1/5\n          pattern: /(^|\\s)-\\d+-\\d+\\/\\d+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // basic decimal floats -0.01 0. .0 .1 -.1 -1. -12.13 +12.13\n          // and scientific notation with base 10 exponents 3e4 3e-4 .3e-4\n          pattern:\n            /(^|\\s)[+-]?(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)(?:e[+-]?\\d+)?(?=\\s|$)/i,\n          lookbehind: true\n        },\n        {\n          // NAN literal syntax NAN: 80000deadbeef, NAN: a\n          pattern: /(^|\\s)NAN:\\s+[\\da-fA-F]+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          /*\nbase prefix floats 0x1.0p3 (8.0) 0b1.010p2 (5.0) 0x1.p1 0b1.11111111p11111...\n\"The normalized hex form ±0x1.MMMMMMMMMMMMM[pP]±EEEE allows any floating-point number to be specified precisely.\nThe values of MMMMMMMMMMMMM and EEEE map directly to the mantissa and exponent fields of the binary IEEE 754 representation.\"\n<https://docs.factorcode.org/content/article-syntax-floats.html>\n*/\n          pattern:\n            /(^|\\s)[+-]?0(?:b1\\.[01]*|o1\\.[0-7]*|d1\\.\\d*|x1\\.[\\dA-F]*)p\\d+(?=\\s|$)/i,\n          lookbehind: true\n        }\n      ],\n      // R/ regexp?\\/\\\\/\n      regexp: {\n        pattern:\n          /(^|\\s)R\\/\\s(?:\\\\\\S|[^\\\\/])*\\/(?:[idmsr]*|[idmsr]+-[idmsr]+)(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'number',\n        inside: {\n          variable: /\\\\\\S/,\n          keyword: /[+?*\\[\\]^$(){}.|]/,\n          operator: {\n            pattern: /(\\/)[idmsr]+(?:-[idmsr]+)?/,\n            lookbehind: true\n          }\n        }\n      },\n      boolean: {\n        pattern: /(^|\\s)[tf](?=\\s|$)/,\n        lookbehind: true\n      },\n      // SBUF\" asd\", URL\" ://...\", P\" /etc/\"\n      'custom-string': {\n        pattern: /(^|\\s)[A-Z0-9\\-]+\"\\s(?:\\\\\\S|[^\"\\\\])*\"/,\n        lookbehind: true,\n        greedy: true,\n        alias: 'string',\n        inside: {\n          number: /\\\\\\S|%\\w|\\//\n        }\n      },\n      'multiline-string': [\n        {\n          // STRING: name \\n content \\n ; -> CONSTANT: name \"content\" (symbol)\n          pattern: /(^|\\s)STRING:\\s+\\S+(?:\\n|\\r\\n).*(?:\\n|\\r\\n)\\s*;(?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: {\n            number: string_inside.number,\n            // trailing semicolon on its own line\n            'semicolon-or-setlocal': {\n              pattern: /([\\r\\n][ \\t]*);(?=\\s|$)/,\n              lookbehind: true,\n              alias: 'function'\n            }\n          }\n        },\n        {\n          // HEREDOC: marker \\n content \\n marker ; -> \"content\" (immediate)\n          pattern: /(^|\\s)HEREDOC:\\s+\\S+(?:\\n|\\r\\n).*(?:\\n|\\r\\n)\\s*\\S+(?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: string_inside\n        },\n        {\n          // [[ string ]], [==[ string]==]\n          pattern: /(^|\\s)\\[(={0,6})\\[\\s[\\s\\S]*?\\]\\2\\](?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: string_inside\n        }\n      ],\n      'special-using': {\n        pattern: /(^|\\s)USING:(?:\\s\\S+)*(?=\\s+;(?:\\s|$))/,\n        lookbehind: true,\n        alias: 'function',\n        inside: {\n          // this is essentially a regex for vocab names, which i don't want to specify\n          // but the USING: gets picked up as a vocab name\n          string: {\n            pattern: /(\\s)[^:\\s]+/,\n            lookbehind: true\n          }\n        }\n      },\n      /* this description of stack effect literal syntax is not complete and not as specific as theoretically possible\ntrying to do better is more work and regex-computation-time than it's worth though.\n- we'd like to have the \"delimiter\" parts of the stack effect [ (, --, and ) ] be a different (less-important or comment-like) colour to the stack effect contents\n- we'd like if nested stack effects were treated as such rather than just appearing flat (with `inside`)\n- we'd like if the following variable name conventions were recognised specifically:\nspecial row variables = ..a b..\ntype and stack effect annotations end with a colon = ( quot: ( a: ( -- ) -- b ) -- x ), ( x: number -- )\nword throws unconditional error = *\nany other word-like variable name = a ? q' etc\nhttps://docs.factorcode.org/content/article-effects.html\nthese are pretty complicated to highlight properly without a real parser, and therefore out of scope\nthe old pattern, which may be later useful, was: (^|\\s)(?:call|execute|eval)?\\((?:\\s+[^\"\\r\\n\\t ]\\S*)*?\\s+--(?:\\s+[^\"\\n\\t ]\\S*)*?\\s+\\)(?=\\s|$)\n*/\n      // current solution is not great\n      'stack-effect-delimiter': [\n        {\n          // opening parenthesis\n          pattern: /(^|\\s)(?:call|eval|execute)?\\((?=\\s)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // middle --\n          pattern: /(\\s)--(?=\\s)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // closing parenthesis\n          pattern: /(\\s)\\)(?=\\s|$)/,\n          lookbehind: true,\n          alias: 'operator'\n        }\n      ],\n      combinators: {\n        pattern: null,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'kernel-builtin': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      'sequences-builtin': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      'math-builtin': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      'constructor-word': {\n        // <array> but not <=>\n        pattern: /(^|\\s)<(?!=+>|-+>)\\S+>(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'other-builtin-syntax': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      /*\nfull list of supported word naming conventions: (the convention appears outside of the [brackets])\nset-[x]\nchange-[x]\nwith-[x]\nnew-[x]\n>[string]\n[base]>\n[string]>[number]\n+[symbol]+\n[boolean-word]?\n?[of]\n[slot-reader]>>\n>>[slot-setter]\n[slot-writer]<<\n([implementation-detail])\n[mutater]!\n[variant]*\n[prettyprint].\n$[help-markup]\n<constructors>, SYNTAX:, etc are supported by their own patterns.\n`with` and `new` from `kernel` are their own builtins.\nsee <https://docs.factorcode.org/content/article-conventions.html>\n*/\n      'conventionally-named-word': {\n        pattern:\n          /(^|\\s)(?!\")(?:(?:change|new|set|with)-\\S+|\\$\\S+|>[^>\\s]+|[^:>\\s]+>|[^>\\s]+>[^>\\s]+|\\+[^+\\s]+\\+|[^?\\s]+\\?|\\?[^?\\s]+|[^>\\s]+>>|>>[^>\\s]+|[^<\\s]+<<|\\([^()\\s]+\\)|[^!\\s]+!|[^*\\s]\\S*\\*|[^.\\s]\\S*\\.)(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'colon-syntax': {\n        pattern: /(^|\\s)(?:[A-Z0-9\\-]+#?)?:{1,2}\\s+(?:;\\S+|(?!;)\\S+)(?=\\s|$)/,\n        lookbehind: true,\n        greedy: true,\n        alias: 'function'\n      },\n      'semicolon-or-setlocal': {\n        pattern: /(\\s)(?:;|:>)(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      // do not highlight leading } or trailing X{ at the begin/end of the file as it's invalid syntax\n      'curly-brace-literal-delimiter': [\n        {\n          // opening\n          pattern: /(^|\\s)[a-z]*\\{(?=\\s)/i,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // closing\n          pattern: /(\\s)\\}(?=\\s|$)/,\n          lookbehind: true,\n          alias: 'operator'\n        }\n      ],\n      // do not highlight leading ] or trailing [ at the begin/end of the file as it's invalid syntax\n      'quotation-delimiter': [\n        {\n          // opening\n          pattern: /(^|\\s)\\[(?=\\s)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // closing\n          pattern: /(\\s)\\](?=\\s|$)/,\n          lookbehind: true,\n          alias: 'operator'\n        }\n      ],\n      'normal-word': {\n        pattern: /(^|\\s)[^\"\\s]\\S*(?=\\s|$)/,\n        lookbehind: true\n      },\n      /*\nbasic first-class string \"a\"\nwith escaped double-quote \"a\\\"\"\nescaped backslash \"\\\\\"\nand general escapes since Factor has so many \"\\N\"\nsyntax that works in the reference implementation that isn't fully\nsupported because it's an implementation detail:\n\"string 1\"\"string 2\" -> 2 strings (works anyway)\n\"string\"5 -> string, 5\n\"string\"[ ] -> string, quotation\n{ \"a\"} -> array<string>\nthe rest of those examples all properly recognise the string, but not\nthe other object (number, quotation, etc)\nthis is fine for a regex-only implementation.\n*/\n      string: {\n        pattern: /\"(?:\\\\\\S|[^\"\\\\])*\"/,\n        greedy: true,\n        inside: string_inside\n      }\n    }\n    var escape = function (str) {\n      return (str + '').replace(/([.?*+\\^$\\[\\]\\\\(){}|\\-])/g, '\\\\$1')\n    }\n    var arrToWordsRegExp = function (arr) {\n      return new RegExp('(^|\\\\s)(?:' + arr.map(escape).join('|') + ')(?=\\\\s|$)')\n    }\n    var builtins = {\n      'kernel-builtin': [\n        'or',\n        '2nipd',\n        '4drop',\n        'tuck',\n        'wrapper',\n        'nip',\n        'wrapper?',\n        'callstack>array',\n        'die',\n        'dupd',\n        'callstack',\n        'callstack?',\n        '3dup',\n        'hashcode',\n        'pick',\n        '4nip',\n        'build',\n        '>boolean',\n        'nipd',\n        'clone',\n        '5nip',\n        'eq?',\n        '?',\n        '=',\n        'swapd',\n        '2over',\n        'clear',\n        '2dup',\n        'get-retainstack',\n        'not',\n        'tuple?',\n        'dup',\n        '3nipd',\n        'call',\n        '-rotd',\n        'object',\n        'drop',\n        'assert=',\n        'assert?',\n        '-rot',\n        'execute',\n        'boa',\n        'get-callstack',\n        'curried?',\n        '3drop',\n        'pickd',\n        'overd',\n        'over',\n        'roll',\n        '3nip',\n        'swap',\n        'and',\n        '2nip',\n        'rotd',\n        'throw',\n        '(clone)',\n        'hashcode*',\n        'spin',\n        'reach',\n        '4dup',\n        'equal?',\n        'get-datastack',\n        'assert',\n        '2drop',\n        '<wrapper>',\n        'boolean?',\n        'identity-hashcode',\n        'identity-tuple?',\n        'null',\n        'composed?',\n        'new',\n        '5drop',\n        'rot',\n        '-roll',\n        'xor',\n        'identity-tuple',\n        'boolean'\n      ],\n      'other-builtin-syntax': [\n        // syntax\n        '=======',\n        'recursive',\n        'flushable',\n        '>>',\n        '<<<<<<',\n        'M\\\\',\n        'B',\n        'PRIVATE>',\n        '\\\\',\n        '======',\n        'final',\n        'inline',\n        'delimiter',\n        'deprecated',\n        '<PRIVATE',\n        '>>>>>>',\n        '<<<<<<<',\n        'parse-complex',\n        'malformed-complex',\n        'read-only',\n        '>>>>>>>',\n        'call-next-method',\n        '<<',\n        'foldable', // literals\n        '$',\n        '$[',\n        '${'\n      ],\n      'sequences-builtin': [\n        'member-eq?',\n        'mismatch',\n        'append',\n        'assert-sequence=',\n        'longer',\n        'repetition',\n        'clone-like',\n        '3sequence',\n        'assert-sequence?',\n        'last-index-from',\n        'reversed',\n        'index-from',\n        'cut*',\n        'pad-tail',\n        'join-as',\n        'remove-eq!',\n        'concat-as',\n        'but-last',\n        'snip',\n        'nths',\n        'nth',\n        'sequence',\n        'longest',\n        'slice?',\n        '<slice>',\n        'remove-nth',\n        'tail-slice',\n        'empty?',\n        'tail*',\n        'member?',\n        'virtual-sequence?',\n        'set-length',\n        'drop-prefix',\n        'iota',\n        'unclip',\n        'bounds-error?',\n        'unclip-last-slice',\n        'non-negative-integer-expected',\n        'non-negative-integer-expected?',\n        'midpoint@',\n        'longer?',\n        '?set-nth',\n        '?first',\n        'rest-slice',\n        'prepend-as',\n        'prepend',\n        'fourth',\n        'sift',\n        'subseq-start',\n        'new-sequence',\n        '?last',\n        'like',\n        'first4',\n        '1sequence',\n        'reverse',\n        'slice',\n        'virtual@',\n        'repetition?',\n        'set-last',\n        'index',\n        '4sequence',\n        'max-length',\n        'set-second',\n        'immutable-sequence',\n        'first2',\n        'first3',\n        'supremum',\n        'unclip-slice',\n        'suffix!',\n        'insert-nth',\n        'tail',\n        '3append',\n        'short',\n        'suffix',\n        'concat',\n        'flip',\n        'immutable?',\n        'reverse!',\n        '2sequence',\n        'sum',\n        'delete-all',\n        'indices',\n        'snip-slice',\n        '<iota>',\n        'check-slice',\n        'sequence?',\n        'head',\n        'append-as',\n        'halves',\n        'sequence=',\n        'collapse-slice',\n        '?second',\n        'slice-error?',\n        'product',\n        'bounds-check?',\n        'bounds-check',\n        'immutable',\n        'virtual-exemplar',\n        'harvest',\n        'remove',\n        'pad-head',\n        'last',\n        'set-fourth',\n        'cartesian-product',\n        'remove-eq',\n        'shorten',\n        'shorter',\n        'reversed?',\n        'shorter?',\n        'shortest',\n        'head-slice',\n        'pop*',\n        'tail-slice*',\n        'but-last-slice',\n        'iota?',\n        'append!',\n        'cut-slice',\n        'new-resizable',\n        'head-slice*',\n        'sequence-hashcode',\n        'pop',\n        'set-nth',\n        '?nth',\n        'second',\n        'join',\n        'immutable-sequence?',\n        '<reversed>',\n        '3append-as',\n        'virtual-sequence',\n        'subseq?',\n        'remove-nth!',\n        'length',\n        'last-index',\n        'lengthen',\n        'assert-sequence',\n        'copy',\n        'move',\n        'third',\n        'first',\n        'tail?',\n        'set-first',\n        'prefix',\n        'bounds-error',\n        '<repetition>',\n        'exchange',\n        'surround',\n        'cut',\n        'min-length',\n        'set-third',\n        'push-all',\n        'head?',\n        'subseq-start-from',\n        'delete-slice',\n        'rest',\n        'sum-lengths',\n        'head*',\n        'infimum',\n        'remove!',\n        'glue',\n        'slice-error',\n        'subseq',\n        'push',\n        'replace-slice',\n        'subseq-as',\n        'unclip-last'\n      ],\n      'math-builtin': [\n        'number=',\n        'next-power-of-2',\n        '?1+',\n        'fp-special?',\n        'imaginary-part',\n        'float>bits',\n        'number?',\n        'fp-infinity?',\n        'bignum?',\n        'fp-snan?',\n        'denominator',\n        'gcd',\n        '*',\n        '+',\n        'fp-bitwise=',\n        '-',\n        'u>=',\n        '/',\n        '>=',\n        'bitand',\n        'power-of-2?',\n        'log2-expects-positive',\n        'neg?',\n        '<',\n        'log2',\n        '>',\n        'integer?',\n        'number',\n        'bits>double',\n        '2/',\n        'zero?',\n        'bits>float',\n        'float?',\n        'shift',\n        'ratio?',\n        'rect>',\n        'even?',\n        'ratio',\n        'fp-sign',\n        'bitnot',\n        '>fixnum',\n        'complex?',\n        '/i',\n        'integer>fixnum',\n        '/f',\n        'sgn',\n        '>bignum',\n        'next-float',\n        'u<',\n        'u>',\n        'mod',\n        'recip',\n        'rational',\n        '>float',\n        '2^',\n        'integer',\n        'fixnum?',\n        'neg',\n        'fixnum',\n        'sq',\n        'bignum',\n        '>rect',\n        'bit?',\n        'fp-qnan?',\n        'simple-gcd',\n        'complex',\n        '<fp-nan>',\n        'real',\n        '>fraction',\n        'double>bits',\n        'bitor',\n        'rem',\n        'fp-nan-payload',\n        'real-part',\n        'log2-expects-positive?',\n        'prev-float',\n        'align',\n        'unordered?',\n        'float',\n        'fp-nan?',\n        'abs',\n        'bitxor',\n        'integer>fixnum-strict',\n        'u<=',\n        'odd?',\n        '<=',\n        '/mod',\n        '>integer',\n        'real?',\n        'rational?',\n        'numerator'\n      ] // that's all for now\n    }\n    Object.keys(builtins).forEach(function (k) {\n      factor[k].pattern = arrToWordsRegExp(builtins[k])\n    })\n    var combinators = [\n      // kernel\n      '2bi',\n      'while',\n      '2tri',\n      'bi*',\n      '4dip',\n      'both?',\n      'same?',\n      'tri@',\n      'curry',\n      'prepose',\n      '3bi',\n      '?if',\n      'tri*',\n      '2keep',\n      '3keep',\n      'curried',\n      '2keepd',\n      'when',\n      '2bi*',\n      '2tri*',\n      '4keep',\n      'bi@',\n      'keepdd',\n      'do',\n      'unless*',\n      'tri-curry',\n      'if*',\n      'loop',\n      'bi-curry*',\n      'when*',\n      '2bi@',\n      '2tri@',\n      'with',\n      '2with',\n      'either?',\n      'bi',\n      'until',\n      '3dip',\n      '3curry',\n      'tri-curry*',\n      'tri-curry@',\n      'bi-curry',\n      'keepd',\n      'compose',\n      '2dip',\n      'if',\n      '3tri',\n      'unless',\n      'tuple',\n      'keep',\n      '2curry',\n      'tri',\n      'most',\n      'while*',\n      'dip',\n      'composed',\n      'bi-curry@', // sequences\n      'find-last-from',\n      'trim-head-slice',\n      'map-as',\n      'each-from',\n      'none?',\n      'trim-tail',\n      'partition',\n      'if-empty',\n      'accumulate*',\n      'reject!',\n      'find-from',\n      'accumulate-as',\n      'collector-for-as',\n      'reject',\n      'map',\n      'map-sum',\n      'accumulate!',\n      '2each-from',\n      'follow',\n      'supremum-by',\n      'map!',\n      'unless-empty',\n      'collector',\n      'padding',\n      'reduce-index',\n      'replicate-as',\n      'infimum-by',\n      'trim-tail-slice',\n      'count',\n      'find-index',\n      'filter',\n      'accumulate*!',\n      'reject-as',\n      'map-integers',\n      'map-find',\n      'reduce',\n      'selector',\n      'interleave',\n      '2map',\n      'filter-as',\n      'binary-reduce',\n      'map-index-as',\n      'find',\n      'produce',\n      'filter!',\n      'replicate',\n      'cartesian-map',\n      'cartesian-each',\n      'find-index-from',\n      'map-find-last',\n      '3map-as',\n      '3map',\n      'find-last',\n      'selector-as',\n      '2map-as',\n      '2map-reduce',\n      'accumulate',\n      'each',\n      'each-index',\n      'accumulate*-as',\n      'when-empty',\n      'all?',\n      'collector-as',\n      'push-either',\n      'new-like',\n      'collector-for',\n      '2selector',\n      'push-if',\n      '2all?',\n      'map-reduce',\n      '3each',\n      'any?',\n      'trim-slice',\n      '2reduce',\n      'change-nth',\n      'produce-as',\n      '2each',\n      'trim',\n      'trim-head',\n      'cartesian-find',\n      'map-index', // math\n      'if-zero',\n      'each-integer',\n      'unless-zero',\n      '(find-integer)',\n      'when-zero',\n      'find-last-integer',\n      '(all-integers?)',\n      'times',\n      '(each-integer)',\n      'find-integer',\n      'all-integers?', // math.combinators\n      'unless-negative',\n      'if-positive',\n      'when-positive',\n      'when-negative',\n      'unless-positive',\n      'if-negative', // combinators\n      'case',\n      '2cleave',\n      'cond>quot',\n      'case>quot',\n      '3cleave',\n      'wrong-values',\n      'to-fixed-point',\n      'alist>quot',\n      'cond',\n      'cleave',\n      'call-effect',\n      'recursive-hashcode',\n      'spread',\n      'deep-spread>quot', // combinators.short-circuit\n      '2||',\n      '0||',\n      'n||',\n      '0&&',\n      '2&&',\n      '3||',\n      '1||',\n      '1&&',\n      'n&&',\n      '3&&', // combinators.smart\n      'smart-unless*',\n      'keep-inputs',\n      'reduce-outputs',\n      'smart-when*',\n      'cleave>array',\n      'smart-with',\n      'smart-apply',\n      'smart-if',\n      'inputs/outputs',\n      'output>sequence-n',\n      'map-outputs',\n      'map-reduce-outputs',\n      'dropping',\n      'output>array',\n      'smart-map-reduce',\n      'smart-2map-reduce',\n      'output>array-n',\n      'nullary',\n      'input<sequence',\n      'append-outputs',\n      'drop-inputs',\n      'inputs',\n      'smart-2reduce',\n      'drop-outputs',\n      'smart-reduce',\n      'preserving',\n      'smart-when',\n      'outputs',\n      'append-outputs-as',\n      'smart-unless',\n      'smart-if*',\n      'sum-outputs',\n      'input<sequence-unsafe',\n      'output>sequence' // tafn\n    ]\n    factor.combinators.pattern = arrToWordsRegExp(combinators)\n    Prism.languages.factor = factor\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = $false\n$false.displayName = '$false'\n$false.aliases = []\nfunction $false(Prism) {\n  ;(function (Prism) {\n    /**\n     * Based on the manual by Wouter van Oortmerssen.\n     *\n     * @see {@link https://github.com/PrismJS/prism/issues/2801#issue-829717504}\n     */\n    Prism.languages['false'] = {\n      comment: {\n        pattern: /\\{[^}]*\\}/\n      },\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      'character-code': {\n        pattern: /'(?:[^\\r]|\\r\\n?)/,\n        alias: 'number'\n      },\n      'assembler-code': {\n        pattern: /\\d+`/,\n        alias: 'important'\n      },\n      number: /\\d+/,\n      operator: /[-!#$%&'*+,./:;=>?@\\\\^_`|~ßø]/,\n      punctuation: /\\[|\\]/,\n      variable: /[a-z]/,\n      'non-standard': {\n        pattern: /[()<BDO®]/,\n        alias: 'bold'\n      }\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = firestoreSecurityRules\nfirestoreSecurityRules.displayName = 'firestoreSecurityRules'\nfirestoreSecurityRules.aliases = []\nfunction firestoreSecurityRules(Prism) {\n  Prism.languages['firestore-security-rules'] = Prism.languages.extend(\n    'clike',\n    {\n      comment: /\\/\\/.*/,\n      keyword:\n        /\\b(?:allow|function|if|match|null|return|rules_version|service)\\b/,\n      operator: /&&|\\|\\||[<>!=]=?|[-+*/%]|\\b(?:in|is)\\b/\n    }\n  )\n  delete Prism.languages['firestore-security-rules']['class-name']\n  Prism.languages.insertBefore('firestore-security-rules', 'keyword', {\n    path: {\n      pattern:\n        /(^|[\\s(),])(?:\\/(?:[\\w\\xA0-\\uFFFF]+|\\{[\\w\\xA0-\\uFFFF]+(?:=\\*\\*)?\\}|\\$\\([\\w\\xA0-\\uFFFF.]+\\)))+/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        variable: {\n          pattern: /\\{[\\w\\xA0-\\uFFFF]+(?:=\\*\\*)?\\}|\\$\\([\\w\\xA0-\\uFFFF.]+\\)/,\n          inside: {\n            operator: /=/,\n            keyword: /\\*\\*/,\n            punctuation: /[.$(){}]/\n          }\n        },\n        punctuation: /\\//\n      }\n    },\n    method: {\n      // to make the pattern shorter, the actual method names are omitted\n      pattern: /(\\ballow\\s+)[a-z]+(?:\\s*,\\s*[a-z]+)*(?=\\s*[:;])/,\n      lookbehind: true,\n      alias: 'builtin',\n      inside: {\n        punctuation: /,/\n      }\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = flow\nflow.displayName = 'flow'\nflow.aliases = []\nfunction flow(Prism) {\n  ;(function (Prism) {\n    Prism.languages.flow = Prism.languages.extend('javascript', {})\n    Prism.languages.insertBefore('flow', 'keyword', {\n      type: [\n        {\n          pattern:\n            /\\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|any|mixed|null|void)\\b/,\n          alias: 'tag'\n        }\n      ]\n    })\n    Prism.languages.flow['function-variable'].pattern =\n      /(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)(?:\\s*:\\s*\\w+)?|(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/i\n    delete Prism.languages.flow['parameter']\n    Prism.languages.insertBefore('flow', 'operator', {\n      'flow-punctuation': {\n        pattern: /\\{\\||\\|\\}/,\n        alias: 'punctuation'\n      }\n    })\n    if (!Array.isArray(Prism.languages.flow.keyword)) {\n      Prism.languages.flow.keyword = [Prism.languages.flow.keyword]\n    }\n    Prism.languages.flow.keyword.unshift(\n      {\n        pattern: /(^|[^$]\\b)(?:Class|declare|opaque|type)\\b(?!\\$)/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^|[^$]\\B)\\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\\b(?!\\$)/,\n        lookbehind: true\n      }\n    )\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = fortran\nfortran.displayName = 'fortran'\nfortran.aliases = []\nfunction fortran(Prism) {\n  Prism.languages.fortran = {\n    'quoted-number': {\n      pattern: /[BOZ](['\"])[A-F0-9]+\\1/i,\n      alias: 'number'\n    },\n    string: {\n      pattern:\n        /(?:\\b\\w+_)?(['\"])(?:\\1\\1|&(?:\\r\\n?|\\n)(?:[ \\t]*!.*(?:\\r\\n?|\\n)|(?![ \\t]*!))|(?!\\1).)*(?:\\1|&)/,\n      inside: {\n        comment: {\n          pattern: /(&(?:\\r\\n?|\\n)\\s*)!.*/,\n          lookbehind: true\n        }\n      }\n    },\n    comment: {\n      pattern: /!.*/,\n      greedy: true\n    },\n    boolean: /\\.(?:FALSE|TRUE)\\.(?:_\\w+)?/i,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[ED][+-]?\\d+)?(?:_\\w+)?/i,\n    keyword: [\n      // Types\n      /\\b(?:CHARACTER|COMPLEX|DOUBLE ?PRECISION|INTEGER|LOGICAL|REAL)\\b/i, // END statements\n      /\\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\\b/i, // Statements\n      /\\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\\b/i, // Others\n      /\\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEIF|ELSEWHERE|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\\b/i\n    ],\n    operator: [\n      /\\*\\*|\\/\\/|=>|[=\\/]=|[<>]=?|::|[+\\-*=%]|\\.[A-Z]+\\./i,\n      {\n        // Use lookbehind to prevent confusion with (/ /)\n        pattern: /(^|(?!\\().)\\/(?!\\))/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /\\(\\/|\\/\\)|[(),;:&]/\n  }\n}\n","'use strict'\n\nmodule.exports = fsharp\nfsharp.displayName = 'fsharp'\nfsharp.aliases = []\nfunction fsharp(Prism) {\n  Prism.languages.fsharp = Prism.languages.extend('clike', {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\(\\*(?!\\))[\\s\\S]*?\\*\\)/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")B?/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:exception|inherit|interface|new|of|type)\\s+|\\w\\s*:\\s*|\\s:\\??>\\s*)[.\\w]+\\b(?:\\s*(?:->|\\*)\\s*[.\\w]+\\b)*(?!\\s*[:.])/,\n      lookbehind: true,\n      inside: {\n        operator: /->|\\*/,\n        punctuation: /\\./\n      }\n    },\n    keyword:\n      /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(?:abstract|and|as|asr|assert|atomic|base|begin|break|checked|class|component|const|constraint|constructor|continue|default|delegate|do|done|downcast|downto|eager|elif|else|end|event|exception|extern|external|false|finally|fixed|for|fun|function|functor|global|if|in|include|inherit|inline|interface|internal|land|lazy|lor|lsl|lsr|lxor|match|member|method|mixin|mod|module|mutable|namespace|new|not|null|object|of|open|or|override|parallel|private|process|protected|public|pure|rec|sealed|select|sig|static|struct|tailcall|then|to|trait|true|try|type|upcast|val|virtual|void|volatile|when|while|with)\\b/,\n    number: [\n      /\\b0x[\\da-fA-F]+(?:LF|lf|un)?\\b/,\n      /\\b0b[01]+(?:uy|y)?\\b/,\n      /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[fm]|e[+-]?\\d+)?\\b/i,\n      /\\b\\d+(?:[IlLsy]|UL|u[lsy]?)?\\b/\n    ],\n    operator:\n      /([<>~&^])\\1\\1|([*.:<>&])\\2|<-|->|[!=:]=|<?\\|{1,3}>?|\\??(?:<=|>=|<>|[-+*/%=<>])\\??|[!?^&]|~[+~-]|:>|:\\?>?/\n  })\n  Prism.languages.insertBefore('fsharp', 'keyword', {\n    preprocessor: {\n      pattern: /(^[\\t ]*)#.*/m,\n      lookbehind: true,\n      alias: 'property',\n      inside: {\n        directive: {\n          pattern: /(^#)\\b(?:else|endif|if|light|line|nowarn)\\b/,\n          lookbehind: true,\n          alias: 'keyword'\n        }\n      }\n    }\n  })\n  Prism.languages.insertBefore('fsharp', 'punctuation', {\n    'computation-expression': {\n      pattern: /\\b[_a-z]\\w*(?=\\s*\\{)/i,\n      alias: 'keyword'\n    }\n  })\n  Prism.languages.insertBefore('fsharp', 'string', {\n    annotation: {\n      pattern: /\\[<.+?>\\]/,\n      greedy: true,\n      inside: {\n        punctuation: /^\\[<|>\\]$/,\n        'class-name': {\n          pattern: /^\\w+$|(^|;\\s*)[A-Z]\\w*(?=\\()/,\n          lookbehind: true\n        },\n        'annotation-content': {\n          pattern: /[\\s\\S]+/,\n          inside: Prism.languages.fsharp\n        }\n      }\n    },\n    char: {\n      pattern:\n        /'(?:[^\\\\']|\\\\(?:.|\\d{3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}|U[a-fA-F\\d]{8}))'B?/,\n      greedy: true\n    }\n  })\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = ftl\nftl.displayName = 'ftl'\nftl.aliases = []\nfunction ftl(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    // https://freemarker.apache.org/docs/dgui_template_exp.html\n    // FTL expression with 4 levels of nesting supported\n    var FTL_EXPR =\n      /[^<()\"']|\\((?:<expr>)*\\)|<(?!#--)|<#--(?:[^-]|-(?!->))*-->|\"(?:[^\\\\\"]|\\\\.)*\"|'(?:[^\\\\']|\\\\.)*'/\n        .source\n    for (var i = 0; i < 2; i++) {\n      FTL_EXPR = FTL_EXPR.replace(/<expr>/g, function () {\n        return FTL_EXPR\n      })\n    }\n    FTL_EXPR = FTL_EXPR.replace(/<expr>/g, /[^\\s\\S]/.source)\n    var ftl = {\n      comment: /<#--[\\s\\S]*?-->/,\n      string: [\n        {\n          // raw string\n          pattern: /\\br(\"|')(?:(?!\\1)[^\\\\]|\\\\.)*\\1/,\n          greedy: true\n        },\n        {\n          pattern: RegExp(\n            /(\"|')(?:(?!\\1|\\$\\{)[^\\\\]|\\\\.|\\$\\{(?:(?!\\})(?:<expr>))*\\})*\\1/.source.replace(\n              /<expr>/g,\n              function () {\n                return FTL_EXPR\n              }\n            )\n          ),\n          greedy: true,\n          inside: {\n            interpolation: {\n              pattern: RegExp(\n                /((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:(?!\\})(?:<expr>))*\\}/.source.replace(\n                  /<expr>/g,\n                  function () {\n                    return FTL_EXPR\n                  }\n                )\n              ),\n              lookbehind: true,\n              inside: {\n                'interpolation-punctuation': {\n                  pattern: /^\\$\\{|\\}$/,\n                  alias: 'punctuation'\n                },\n                rest: null\n              }\n            }\n          }\n        }\n      ],\n      keyword: /\\b(?:as)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      'builtin-function': {\n        pattern: /((?:^|[^?])\\?\\s*)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      function: /\\b\\w+(?=\\s*\\()/,\n      number: /\\b\\d+(?:\\.\\d+)?\\b/,\n      operator:\n        /\\.\\.[<*!]?|->|--|\\+\\+|&&|\\|\\||\\?{1,2}|[-+*/%!=<>]=?|\\b(?:gt|gte|lt|lte)\\b/,\n      punctuation: /[,;.:()[\\]{}]/\n    }\n    ftl.string[1].inside.interpolation.inside.rest = ftl\n    Prism.languages.ftl = {\n      'ftl-comment': {\n        // the pattern is shortened to be more efficient\n        pattern: /^<#--[\\s\\S]*/,\n        alias: 'comment'\n      },\n      'ftl-directive': {\n        pattern: /^<[\\s\\S]+>$/,\n        inside: {\n          directive: {\n            pattern: /(^<\\/?)[#@][a-z]\\w*/i,\n            lookbehind: true,\n            alias: 'keyword'\n          },\n          punctuation: /^<\\/?|\\/?>$/,\n          content: {\n            pattern: /\\s*\\S[\\s\\S]*/,\n            alias: 'ftl',\n            inside: ftl\n          }\n        }\n      },\n      'ftl-interpolation': {\n        pattern: /^\\$\\{[\\s\\S]*\\}$/,\n        inside: {\n          punctuation: /^\\$\\{|\\}$/,\n          content: {\n            pattern: /\\s*\\S[\\s\\S]*/,\n            alias: 'ftl',\n            inside: ftl\n          }\n        }\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      // eslint-disable-next-line regexp/no-useless-lazy\n      var pattern = RegExp(\n        /<#--[\\s\\S]*?-->|<\\/?[#@][a-zA-Z](?:<expr>)*?>|\\$\\{(?:<expr>)*?\\}/.source.replace(\n          /<expr>/g,\n          function () {\n            return FTL_EXPR\n          }\n        ),\n        'gi'\n      )\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'ftl',\n        pattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'ftl')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = gap\ngap.displayName = 'gap'\ngap.aliases = []\nfunction gap(Prism) {\n  // https://www.gap-system.org/Manuals/doc/ref/chap4.html\n  // https://www.gap-system.org/Manuals/doc/ref/chap27.html\n  Prism.languages.gap = {\n    shell: {\n      pattern: /^gap>[\\s\\S]*?(?=^gap>|$(?![\\s\\S]))/m,\n      greedy: true,\n      inside: {\n        gap: {\n          pattern: /^(gap>).+(?:(?:\\r(?:\\n|(?!\\n))|\\n)>.*)*/,\n          lookbehind: true,\n          inside: null // see below\n        },\n        punctuation: /^gap>/\n      }\n    },\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      pattern:\n        /(^|[^\\\\'\"])(?:'(?:[^\\r\\n\\\\']|\\\\.){1,10}'|\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"(?!\")|\"\"\"[\\s\\S]*?\"\"\")/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        continuation: {\n          pattern: /([\\r\\n])>/,\n          lookbehind: true,\n          alias: 'punctuation'\n        }\n      }\n    },\n    keyword:\n      /\\b(?:Assert|Info|IsBound|QUIT|TryNextMethod|Unbind|and|atomic|break|continue|do|elif|else|end|fi|for|function|if|in|local|mod|not|od|or|quit|readonly|readwrite|rec|repeat|return|then|until|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: {\n      pattern:\n        /(^|[^\\w.]|\\.\\.)(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?:_[a-z]?)?(?=$|[^\\w.]|\\.\\.)/,\n      lookbehind: true\n    },\n    continuation: {\n      pattern: /([\\r\\n])>/,\n      lookbehind: true,\n      alias: 'punctuation'\n    },\n    operator: /->|[-+*/^~=!]|<>|[<>]=?|:=|\\.\\./,\n    punctuation: /[()[\\]{},;.:]/\n  }\n  Prism.languages.gap.shell.inside.gap.inside = Prism.languages.gap\n}\n","'use strict'\n\nmodule.exports = gcode\ngcode.displayName = 'gcode'\ngcode.aliases = []\nfunction gcode(Prism) {\n  Prism.languages.gcode = {\n    comment: /;.*|\\B\\(.*?\\)\\B/,\n    string: {\n      pattern: /\"(?:\"\"|[^\"])*\"/,\n      greedy: true\n    },\n    keyword: /\\b[GM]\\d+(?:\\.\\d+)?\\b/,\n    property: /\\b[A-Z]/,\n    checksum: {\n      pattern: /(\\*)\\d+/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    // T0:0:0\n    punctuation: /[:*]/\n  }\n}\n","'use strict'\n\nmodule.exports = gdscript\ngdscript.displayName = 'gdscript'\ngdscript.aliases = []\nfunction gdscript(Prism) {\n  Prism.languages.gdscript = {\n    comment: /#.*/,\n    string: {\n      pattern:\n        /@?(?:(\"|')(?:(?!\\1)[^\\n\\\\]|\\\\[\\s\\S])*\\1(?!\"|')|\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\")/,\n      greedy: true\n    },\n    'class-name': {\n      // class_name Foo, extends Bar, class InnerClass\n      // export(int) var baz, export(int, 0) var i\n      // as Node\n      // const FOO: int = 9, var bar: bool = true\n      // func add(reference: Item, amount: int) -> Item:\n      pattern:\n        /(^(?:class|class_name|extends)[ \\t]+|^export\\([ \\t]*|\\bas[ \\t]+|(?:\\b(?:const|var)[ \\t]|[,(])[ \\t]*\\w+[ \\t]*:[ \\t]*|->[ \\t]*)[a-zA-Z_]\\w*/m,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:and|as|assert|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|if|in|is|master|mastersync|match|not|null|onready|or|pass|preload|puppet|puppetsync|remote|remotesync|return|self|setget|signal|static|tool|var|while|yield)\\b/,\n    function: /\\b[a-z_]\\w*(?=[ \\t]*\\()/i,\n    variable: /\\$\\w+/,\n    number: [\n      /\\b0b[01_]+\\b|\\b0x[\\da-fA-F_]+\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.[\\d_]+)(?:e[+-]?[\\d_]+)?\\b/,\n      /\\b(?:INF|NAN|PI|TAU)\\b/\n    ],\n    constant: /\\b[A-Z][A-Z_\\d]*\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    operator: /->|:=|&&|\\|\\||<<|>>|[-+*/%&|!<>=]=?|[~^]/,\n    punctuation: /[.:,;()[\\]{}]/\n  }\n}\n","'use strict'\n\nmodule.exports = gedcom\ngedcom.displayName = 'gedcom'\ngedcom.aliases = []\nfunction gedcom(Prism) {\n  Prism.languages.gedcom = {\n    'line-value': {\n      // Preceded by level, optional pointer, and tag\n      pattern:\n        /(^[\\t ]*\\d+ +(?:@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@ +)?\\w+ ).+/m,\n      lookbehind: true,\n      inside: {\n        pointer: {\n          pattern: /^@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@$/,\n          alias: 'variable'\n        }\n      }\n    },\n    tag: {\n      // Preceded by level and optional pointer\n      pattern:\n        /(^[\\t ]*\\d+ +(?:@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@ +)?)\\w+/m,\n      lookbehind: true,\n      alias: 'string'\n    },\n    level: {\n      pattern: /(^[\\t ]*)\\d+/m,\n      lookbehind: true,\n      alias: 'number'\n    },\n    pointer: {\n      pattern: /@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@/,\n      alias: 'variable'\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = gherkin\ngherkin.displayName = 'gherkin'\ngherkin.aliases = []\nfunction gherkin(Prism) {\n  ;(function (Prism) {\n    var tableRow = /(?:\\r?\\n|\\r)[ \\t]*\\|.+\\|(?:(?!\\|).)*/.source\n    Prism.languages.gherkin = {\n      pystring: {\n        pattern: /(\"\"\"|''')[\\s\\S]+?\\1/,\n        alias: 'string'\n      },\n      comment: {\n        pattern: /(^[ \\t]*)#.*/m,\n        lookbehind: true\n      },\n      tag: {\n        pattern: /(^[ \\t]*)@\\S*/m,\n        lookbehind: true\n      },\n      feature: {\n        pattern:\n          /((?:^|\\r?\\n|\\r)[ \\t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|Lastnost|Mak|Mogucnost|laH|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|Potrzeba biznesowa|perbogh|poQbogh malja'|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:\\r\\n]+(?:\\r?\\n|\\r|$))*/,\n        lookbehind: true,\n        inside: {\n          important: {\n            pattern: /(:)[^\\r\\n]+/,\n            lookbehind: true\n          },\n          keyword: /[^:\\r\\n]+:/\n        }\n      },\n      scenario: {\n        pattern:\n          /(^[ \\t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram Senaryo|Dyagram senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|EXAMPLZ|Examples|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|Grundlage|Hannergrond|ghantoH|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut chovnatlh|lut|lutmey|Lýsing Atburðarásar|Lýsing Dæma|MISHUN SRSLY|MISHUN|Menggariskan Senario|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan Senaryo|Plan senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo Deskripsyon|Senaryo deskripsyon|Senaryo|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie Uiteensetting|Situasie|Skenario konsep|Skenario|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa hwaer swa|Swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo-ho-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\\r\\n]*/m,\n        lookbehind: true,\n        inside: {\n          important: {\n            pattern: /(:)[^\\r\\n]*/,\n            lookbehind: true\n          },\n          keyword: /[^:\\r\\n]+:/\n        }\n      },\n      'table-body': {\n        // Look-behind is used to skip the table head, which has the same format as any table row\n        pattern: RegExp('(' + tableRow + ')(?:' + tableRow + ')+'),\n        lookbehind: true,\n        inside: {\n          outline: {\n            pattern: /<[^>]+>/,\n            alias: 'variable'\n          },\n          td: {\n            pattern: /\\s*[^\\s|][^|]*/,\n            alias: 'string'\n          },\n          punctuation: /\\|/\n        }\n      },\n      'table-head': {\n        pattern: RegExp(tableRow),\n        inside: {\n          th: {\n            pattern: /\\s*[^\\s|][^|]*/,\n            alias: 'variable'\n          },\n          punctuation: /\\|/\n        }\n      },\n      atrule: {\n        pattern:\n          /(^[ \\t]+)(?:'a|'ach|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cand|Cando|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|DEN|Dato|De|Den youse gotta|Dengan|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|E|En|Entonces|Epi|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kad|Kada|Kadar|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Ma|Majd|Maka|Manawa|Mas|Men|Menawa|Mutta|Nalika|Nalikaning|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Och|Og|Oletetaan|Ond|Onda|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|Quan|Quand|Quando|qaSDI'|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|Un|Und|ugeholl|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadan|Zadani|Zadano|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \\t])/m,\n        lookbehind: true\n      },\n      string: {\n        pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|'(?:\\\\.|[^'\\\\\\r\\n])*'/,\n        inside: {\n          outline: {\n            pattern: /<[^>]+>/,\n            alias: 'variable'\n          }\n        }\n      },\n      outline: {\n        pattern: /<[^>]+>/,\n        alias: 'variable'\n      }\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = git\ngit.displayName = 'git'\ngit.aliases = []\nfunction git(Prism) {\n  Prism.languages.git = {\n    /*\n     * A simple one line comment like in a git status command\n     * For instance:\n     * $ git status\n     * # On branch infinite-scroll\n     * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n     * # and have 1 and 2 different commits each, respectively.\n     * nothing to commit (working directory clean)\n     */\n    comment: /^#.*/m,\n    /*\n     * Regexp to match the changed lines in a git diff output. Check the example below.\n     */\n    deleted: /^[-–].*/m,\n    inserted: /^\\+.*/m,\n    /*\n     * a string (double and simple quote)\n     */\n    string: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    /*\n     * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n     * For instance:\n     * $ git add file.txt\n     */\n    command: {\n      pattern: /^.*\\$ git .*$/m,\n      inside: {\n        /*\n         * A git command can contain a parameter starting by a single or a double dash followed by a string\n         * For instance:\n         * $ git diff --cached\n         * $ git log -p\n         */\n        parameter: /\\s--?\\w+/\n      }\n    },\n    /*\n     * Coordinates displayed in a git diff command\n     * For instance:\n     * $ git diff\n     * diff --git file.txt file.txt\n     * index 6214953..1d54a52 100644\n     * --- file.txt\n     * +++ file.txt\n     * @@ -1 +1,2 @@\n     * -Here's my tetx file\n     * +Here's my text file\n     * +And this is the second line\n     */\n    coord: /^@@.*@@$/m,\n    /*\n     * Match a \"commit [SHA1]\" line in a git log output.\n     * For instance:\n     * $ git log\n     * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n     * Author: lgiraudel\n     * Date:   Mon Feb 17 11:18:34 2014 +0100\n     *\n     *     Add of a new line\n     */\n    'commit-sha1': /^commit \\w{40}$/m\n  }\n}\n","'use strict'\nvar refractorC = require('./c.js')\nmodule.exports = glsl\nglsl.displayName = 'glsl'\nglsl.aliases = []\nfunction glsl(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.glsl = Prism.languages.extend('c', {\n    keyword:\n      /\\b(?:active|asm|atomic_uint|attribute|[ibdu]?vec[234]|bool|break|buffer|case|cast|centroid|class|coherent|common|const|continue|d?mat[234](?:x[234])?|default|discard|do|double|else|enum|extern|external|false|filter|fixed|flat|float|for|fvec[234]|goto|half|highp|hvec[234]|[iu]?sampler2DMS(?:Array)?|[iu]?sampler2DRect|[iu]?samplerBuffer|[iu]?samplerCube|[iu]?samplerCubeArray|[iu]?sampler[123]D|[iu]?sampler[12]DArray|[iu]?image2DMS(?:Array)?|[iu]?image2DRect|[iu]?imageBuffer|[iu]?imageCube|[iu]?imageCubeArray|[iu]?image[123]D|[iu]?image[12]DArray|if|in|inline|inout|input|int|interface|invariant|layout|long|lowp|mediump|namespace|noinline|noperspective|out|output|partition|patch|precise|precision|public|readonly|resource|restrict|return|sample|sampler[12]DArrayShadow|sampler[12]DShadow|sampler2DRectShadow|sampler3DRect|samplerCubeArrayShadow|samplerCubeShadow|shared|short|sizeof|smooth|static|struct|subroutine|superp|switch|template|this|true|typedef|uint|uniform|union|unsigned|using|varying|void|volatile|while|writeonly)\\b/\n  })\n}\n","'use strict'\n\nmodule.exports = gml\ngml.displayName = 'gml'\ngml.aliases = []\nfunction gml(Prism) {\n  Prism.languages.gamemakerlanguage = Prism.languages.gml =\n    Prism.languages.extend('clike', {\n      keyword:\n        /\\b(?:break|case|continue|default|do|else|enum|exit|for|globalvar|if|repeat|return|switch|until|var|while)\\b/,\n      number:\n        /(?:\\b0x[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ulf]{0,4}/i,\n      operator:\n        /--|\\+\\+|[-+%/=]=?|!=|\\*\\*?=?|<[<=>]?|>[=>]?|&&?|\\^\\^?|\\|\\|?|~|\\b(?:and|at|not|or|with|xor)\\b/,\n      constant:\n        /\\b(?:GM_build_date|GM_version|action_(?:continue|restart|reverse|stop)|all|gamespeed_(?:fps|microseconds)|global|local|noone|other|pi|pointer_(?:invalid|null)|self|timezone_(?:local|utc)|undefined|ev_(?:create|destroy|step|alarm|keyboard|mouse|collision|other|draw|draw_(?:begin|end|post|pre)|keypress|keyrelease|trigger|(?:left|middle|no|right)_button|(?:left|middle|right)_press|(?:left|middle|right)_release|mouse_(?:enter|leave|wheel_down|wheel_up)|global_(?:left|middle|right)_button|global_(?:left|middle|right)_press|global_(?:left|middle|right)_release|joystick(?:1|2)_(?:button1|button2|button3|button4|button5|button6|button7|button8|down|left|right|up)|outside|boundary|game_start|game_end|room_start|room_end|no_more_lives|animation_end|end_of_path|no_more_health|user\\d|gui|gui_begin|gui_end|step_(?:begin|end|normal))|vk_(?:alt|anykey|backspace|control|delete|down|end|enter|escape|home|insert|left|nokey|pagedown|pageup|pause|printscreen|return|right|shift|space|tab|up|f\\d|numpad\\d|add|decimal|divide|lalt|lcontrol|lshift|multiply|ralt|rcontrol|rshift|subtract)|achievement_(?:filter_(?:all_players|favorites_only|friends_only)|friends_info|info|leaderboard_info|our_info|pic_loaded|show_(?:achievement|bank|friend_picker|leaderboard|profile|purchase_prompt|ui)|type_challenge|type_score_challenge)|asset_(?:font|object|path|room|script|shader|sound|sprite|tiles|timeline|unknown)|audio_(?:3d|falloff_(?:exponent_distance|exponent_distance_clamped|inverse_distance|inverse_distance_clamped|linear_distance|linear_distance_clamped|none)|mono|new_system|old_system|stereo)|bm_(?:add|complex|dest_alpha|dest_color|dest_colour|inv_dest_alpha|inv_dest_color|inv_dest_colour|inv_src_alpha|inv_src_color|inv_src_colour|max|normal|one|src_alpha|src_alpha_sat|src_color|src_colour|subtract|zero)|browser_(?:chrome|firefox|ie|ie_mobile|not_a_browser|opera|safari|safari_mobile|tizen|unknown|windows_store)|buffer_(?:bool|f16|f32|f64|fast|fixed|generalerror|grow|invalidtype|network|outofbounds|outofspace|s16|s32|s8|seek_end|seek_relative|seek_start|string|text|u16|u32|u64|u8|vbuffer|wrap)|c_(?:aqua|black|blue|dkgray|fuchsia|gray|green|lime|ltgray|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)|cmpfunc_(?:always|equal|greater|greaterequal|less|lessequal|never|notequal)|cr_(?:appstart|arrow|beam|cross|default|drag|handpoint|hourglass|none|size_all|size_nesw|size_ns|size_nwse|size_we|uparrow)|cull_(?:clockwise|counterclockwise|noculling)|device_(?:emulator|tablet)|device_ios_(?:ipad|ipad_retina|iphone|iphone5|iphone6|iphone6plus|iphone_retina|unknown)|display_(?:landscape|landscape_flipped|portrait|portrait_flipped)|dll_(?:cdecl|cdel|stdcall)|ds_type_(?:grid|list|map|priority|queue|stack)|ef_(?:cloud|ellipse|explosion|firework|flare|rain|ring|smoke|smokeup|snow|spark|star)|fa_(?:archive|bottom|center|directory|hidden|left|middle|readonly|right|sysfile|top|volumeid)|fb_login_(?:default|fallback_to_webview|forcing_safari|forcing_webview|no_fallback_to_webview|use_system_account)|iap_(?:available|canceled|ev_consume|ev_product|ev_purchase|ev_restore|ev_storeload|failed|purchased|refunded|status_available|status_loading|status_processing|status_restoring|status_unavailable|status_uninitialised|storeload_failed|storeload_ok|unavailable)|leaderboard_type_(?:number|time_mins_secs)|lighttype_(?:dir|point)|matrix_(?:projection|view|world)|mb_(?:any|left|middle|none|right)|network_(?:config_(?:connect_timeout|disable_reliable_udp|enable_reliable_udp|use_non_blocking_socket)|socket_(?:bluetooth|tcp|udp)|type_(?:connect|data|disconnect|non_blocking_connect))|of_challenge_(?:lose|tie|win)|os_(?:android|ios|linux|macosx|ps3|ps4|psvita|unknown|uwp|win32|win8native|windows|winphone|xboxone)|phy_debug_render_(?:aabb|collision_pairs|coms|core_shapes|joints|obb|shapes)|phy_joint_(?:anchor_1_x|anchor_1_y|anchor_2_x|anchor_2_y|angle|angle_limits|damping_ratio|frequency|length_1|length_2|lower_angle_limit|max_force|max_length|max_motor_force|max_motor_torque|max_torque|motor_force|motor_speed|motor_torque|reaction_force_x|reaction_force_y|reaction_torque|speed|translation|upper_angle_limit)|phy_particle_data_flag_(?:category|color|colour|position|typeflags|velocity)|phy_particle_flag_(?:colormixing|colourmixing|elastic|powder|spring|tensile|viscous|wall|water|zombie)|phy_particle_group_flag_(?:rigid|solid)|pr_(?:linelist|linestrip|pointlist|trianglefan|trianglelist|trianglestrip)|ps_(?:distr|shape)_(?:diamond|ellipse|gaussian|invgaussian|line|linear|rectangle)|pt_shape_(?:circle|cloud|disk|explosion|flare|line|pixel|ring|smoke|snow|spark|sphere|square|star)|ty_(?:real|string)|gp_(?:face\\d|axislh|axislv|axisrh|axisrv|padd|padl|padr|padu|select|shoulderl|shoulderlb|shoulderr|shoulderrb|start|stickl|stickr)|lb_disp_(?:none|numeric|time_ms|time_sec)|lb_sort_(?:ascending|descending|none)|ov_(?:achievements|community|friends|gamegroup|players|settings)|ugc_(?:filetype_(?:community|microtrans)|list_(?:Favorited|Followed|Published|Subscribed|UsedOrPlayed|VotedDown|VotedOn|VotedUp|WillVoteLater)|match_(?:AllGuides|Artwork|Collections|ControllerBindings|IntegratedGuides|Items|Items_Mtx|Items_ReadyToUse|Screenshots|UsableInGame|Videos|WebGuides)|query_(?:AcceptedForGameRankedByAcceptanceDate|CreatedByFriendsRankedByPublicationDate|FavoritedByFriendsRankedByPublicationDate|NotYetRated)|query_RankedBy(?:NumTimesReported|PublicationDate|TextSearch|TotalVotesAsc|Trend|Vote|VotesUp)|result_success|sortorder_CreationOrder(?:Asc|Desc)|sortorder_(?:ForModeration|LastUpdatedDesc|SubscriptionDateDesc|TitleAsc|VoteScoreDesc)|visibility_(?:friends_only|private|public))|vertex_usage_(?:binormal|blendindices|blendweight|color|colour|depth|fog|normal|position|psize|sample|tangent|texcoord|textcoord)|vertex_type_(?:float\\d|color|colour|ubyte4)|input_type|layerelementtype_(?:background|instance|oldtilemap|particlesystem|sprite|tile|tilemap|undefined)|se_(?:chorus|compressor|echo|equalizer|flanger|gargle|none|reverb)|text_type|tile_(?:flip|index_mask|mirror|rotate)|(?:obj|rm|scr|spr)\\w+)\\b/,\n      variable:\n        /\\b(?:alarm|application_surface|async_load|background_(?:alpha|blend|color|colour|foreground|height|hspeed|htiled|index|showcolor|showcolour|visible|vspeed|vtiled|width|x|xscale|y|yscale)|bbox_(?:bottom|left|right|top)|browser_(?:height|width)|caption_(?:health|lives|score)|current_(?:day|hour|minute|month|second|time|weekday|year)|cursor_sprite|debug_mode|delta_time|direction|display_aa|error_(?:last|occurred)|event_(?:action|number|object|type)|fps|fps_real|friction|game_(?:display|project|save)_(?:id|name)|gamemaker_(?:pro|registered|version)|gravity|gravity_direction|(?:h|v)speed|health|iap_data|id|image_(?:alpha|angle|blend|depth|index|number|speed|xscale|yscale)|instance_(?:count|id)|keyboard_(?:key|lastchar|lastkey|string)|layer|lives|mask_index|mouse_(?:button|lastbutton|x|y)|object_index|os_(?:browser|device|type|version)|path_(?:endaction|index|orientation|position|positionprevious|scale|speed)|persistent|phy_(?:rotation|(?:col_normal|collision|com|linear_velocity|position|speed)_(?:x|y)|angular_(?:damping|velocity)|position_(?:x|y)previous|speed|linear_damping|bullet|fixed_rotation|active|mass|inertia|dynamic|kinematic|sleeping|collision_points)|pointer_(?:invalid|null)|room|room_(?:caption|first|height|last|persistent|speed|width)|score|secure_mode|show_(?:health|lives|score)|solid|speed|sprite_(?:height|index|width|xoffset|yoffset)|temp_directory|timeline_(?:index|loop|position|running|speed)|transition_(?:color|kind|steps)|undefined|view_(?:angle|current|enabled|(?:h|v)(?:border|speed)|(?:h|w|x|y)port|(?:h|w|x|y)view|object|surface_id|visible)|visible|webgl_enabled|working_directory|(?:x|y)(?:previous|start)|x|y|argument(?:_relitive|_count|\\d)|argument|global|local|other|self)\\b/\n    })\n}\n","'use strict'\n\nmodule.exports = gn\ngn.displayName = 'gn'\ngn.aliases = ['gni']\nfunction gn(Prism) {\n  // https://gn.googlesource.com/gn/+/refs/heads/main/docs/reference.md#grammar\n  Prism.languages.gn = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    'string-literal': {\n      pattern: /(^|[^\\\\\"])\"(?:[^\\r\\n\"\\\\]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\{[\\s\\S]*?\\}|[a-zA-Z_]\\w*|0x[a-fA-F0-9]{2})/,\n          lookbehind: true,\n          inside: {\n            number: /^\\$0x[\\s\\S]{2}$/,\n            variable: /^\\$\\w+$/,\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'punctuation'\n            },\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: null // see below\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    keyword: /\\b(?:else|if)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    'builtin-function': {\n      // a few functions get special highlighting to improve readability\n      pattern:\n        /\\b(?:assert|defined|foreach|import|pool|print|template|tool|toolchain)(?=\\s*\\()/i,\n      alias: 'keyword'\n    },\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    constant:\n      /\\b(?:current_cpu|current_os|current_toolchain|default_toolchain|host_cpu|host_os|root_build_dir|root_gen_dir|root_out_dir|target_cpu|target_gen_dir|target_os|target_out_dir)\\b/,\n    number: /-?\\b\\d+\\b/,\n    operator: /[-+!=<>]=?|&&|\\|\\|/,\n    punctuation: /[(){}[\\],.]/\n  }\n  Prism.languages.gn['string-literal'].inside['interpolation'].inside[\n    'expression'\n  ].inside = Prism.languages.gn\n  Prism.languages.gni = Prism.languages.gn\n}\n","'use strict'\n\nmodule.exports = goModule\ngoModule.displayName = 'goModule'\ngoModule.aliases = []\nfunction goModule(Prism) {\n  // https://go.dev/ref/mod#go-mod-file-module\n  Prism.languages['go-mod'] = Prism.languages['go-module'] = {\n    comment: {\n      pattern: /\\/\\/.*/,\n      greedy: true\n    },\n    version: {\n      pattern: /(^|[\\s()[\\],])v\\d+\\.\\d+\\.\\d+(?:[+-][-+.\\w]*)?(?![^\\s()[\\],])/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    'go-version': {\n      pattern: /((?:^|\\s)go\\s+)\\d+(?:\\.\\d+){1,2}/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    keyword: {\n      pattern: /^([ \\t]*)(?:exclude|go|module|replace|require|retract)\\b/m,\n      lookbehind: true\n    },\n    operator: /=>/,\n    punctuation: /[()[\\],]/\n  }\n}\n","'use strict'\n\nmodule.exports = go\ngo.displayName = 'go'\ngo.aliases = []\nfunction go(Prism) {\n  Prism.languages.go = Prism.languages.extend('clike', {\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n    boolean: /\\b(?:_|false|iota|nil|true)\\b/,\n    number: [\n      // binary and octal integers\n      /\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i, // hexadecimal integers and floats\n      /\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i, // decimal integers and floats\n      /(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i\n    ],\n    operator:\n      /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n    builtin:\n      /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/\n  })\n  Prism.languages.insertBefore('go', 'string', {\n    char: {\n      pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/,\n      greedy: true\n    }\n  })\n  delete Prism.languages.go['class-name']\n}\n","'use strict'\n\nmodule.exports = graphql\ngraphql.displayName = 'graphql'\ngraphql.aliases = []\nfunction graphql(Prism) {\n  Prism.languages.graphql = {\n    comment: /#.*/,\n    description: {\n      pattern:\n        /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n      greedy: true,\n      alias: 'string',\n      inside: {\n        'language-markdown': {\n          pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n          lookbehind: true,\n          inside: Prism.languages.markdown\n        }\n      }\n    },\n    string: {\n      pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n      greedy: true\n    },\n    number: /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n    boolean: /\\b(?:false|true)\\b/,\n    variable: /\\$[a-z_]\\w*/i,\n    directive: {\n      pattern: /@[a-z_]\\w*/i,\n      alias: 'function'\n    },\n    'attr-name': {\n      pattern: /\\b[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n      greedy: true\n    },\n    'atom-input': {\n      pattern: /\\b[A-Z]\\w*Input\\b/,\n      alias: 'class-name'\n    },\n    scalar: /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n    constant: /\\b[A-Z][A-Z_\\d]*\\b/,\n    'class-name': {\n      pattern:\n        /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/,\n      lookbehind: true\n    },\n    fragment: {\n      pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    'definition-mutation': {\n      pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    'definition-query': {\n      pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    keyword:\n      /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n    operator: /[!=|&]|\\.{3}/,\n    'property-query': /\\w+(?=\\s*\\()/,\n    object: /\\w+(?=\\s*\\{)/,\n    punctuation: /[!(){}\\[\\]:=,]/,\n    property: /\\w+/\n  }\n  Prism.hooks.add('after-tokenize', function afterTokenizeGraphql(env) {\n    if (env.language !== 'graphql') {\n      return\n    }\n    /**\n     * get the graphql token stream that we want to customize\n     *\n     * @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n     * @type {Token[]}\n     */\n    var validTokens = env.tokens.filter(function (token) {\n      return (\n        typeof token !== 'string' &&\n        token.type !== 'comment' &&\n        token.type !== 'scalar'\n      )\n    })\n    var currentIndex = 0\n    /**\n     * Returns whether the token relative to the current index has the given type.\n     *\n     * @param {number} offset\n     * @returns {Token | undefined}\n     */\n    function getToken(offset) {\n      return validTokens[currentIndex + offset]\n    }\n    /**\n     * Returns whether the token relative to the current index has the given type.\n     *\n     * @param {readonly string[]} types\n     * @param {number} [offset=0]\n     * @returns {boolean}\n     */\n    function isTokenType(types, offset) {\n      offset = offset || 0\n      for (var i = 0; i < types.length; i++) {\n        var token = getToken(i + offset)\n        if (!token || token.type !== types[i]) {\n          return false\n        }\n      }\n      return true\n    }\n    /**\n     * Returns the index of the closing bracket to an opening bracket.\n     *\n     * It is assumed that `token[currentIndex - 1]` is an opening bracket.\n     *\n     * If no closing bracket could be found, `-1` will be returned.\n     *\n     * @param {RegExp} open\n     * @param {RegExp} close\n     * @returns {number}\n     */\n    function findClosingBracket(open, close) {\n      var stackHeight = 1\n      for (var i = currentIndex; i < validTokens.length; i++) {\n        var token = validTokens[i]\n        var content = token.content\n        if (token.type === 'punctuation' && typeof content === 'string') {\n          if (open.test(content)) {\n            stackHeight++\n          } else if (close.test(content)) {\n            stackHeight--\n            if (stackHeight === 0) {\n              return i\n            }\n          }\n        }\n      }\n      return -1\n    }\n    /**\n     * Adds an alias to the given token.\n     *\n     * @param {Token} token\n     * @param {string} alias\n     * @returns {void}\n     */\n    function addAlias(token, alias) {\n      var aliases = token.alias\n      if (!aliases) {\n        token.alias = aliases = []\n      } else if (!Array.isArray(aliases)) {\n        token.alias = aliases = [aliases]\n      }\n      aliases.push(alias)\n    }\n    for (; currentIndex < validTokens.length; ) {\n      var startToken = validTokens[currentIndex++] // add special aliases for mutation tokens\n      if (startToken.type === 'keyword' && startToken.content === 'mutation') {\n        // any array of the names of all input variables (if any)\n        var inputVariables = []\n        if (\n          isTokenType(['definition-mutation', 'punctuation']) &&\n          getToken(1).content === '('\n        ) {\n          // definition\n          currentIndex += 2 // skip 'definition-mutation' and 'punctuation'\n          var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/)\n          if (definitionEnd === -1) {\n            continue\n          } // find all input variables\n          for (; currentIndex < definitionEnd; currentIndex++) {\n            var t = getToken(0)\n            if (t.type === 'variable') {\n              addAlias(t, 'variable-input')\n              inputVariables.push(t.content)\n            }\n          }\n          currentIndex = definitionEnd + 1\n        }\n        if (\n          isTokenType(['punctuation', 'property-query']) &&\n          getToken(0).content === '{'\n        ) {\n          currentIndex++ // skip opening bracket\n          addAlias(getToken(0), 'property-mutation')\n          if (inputVariables.length > 0) {\n            var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/)\n            if (mutationEnd === -1) {\n              continue\n            } // give references to input variables a special alias\n            for (var i = currentIndex; i < mutationEnd; i++) {\n              var varToken = validTokens[i]\n              if (\n                varToken.type === 'variable' &&\n                inputVariables.indexOf(varToken.content) >= 0\n              ) {\n                addAlias(varToken, 'variable-input')\n              }\n            }\n          }\n        }\n      }\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = groovy\ngroovy.displayName = 'groovy'\ngroovy.aliases = []\nfunction groovy(Prism) {\n  Prism.languages.groovy = Prism.languages.extend('clike', {\n    string: [\n      {\n        // https://groovy-lang.org/syntax.html#_dollar_slashy_string\n        pattern:\n          /(\"\"\"|''')(?:[^\\\\]|\\\\[\\s\\S])*?\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n        greedy: true\n      },\n      {\n        // TODO: Slash strings (e.g. /foo/) can contain line breaks but this will cause a lot of trouble with\n        // simple division (see JS regex), so find a fix maybe?\n        pattern: /([\"'/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        greedy: true\n      }\n    ],\n    keyword:\n      /\\b(?:abstract|as|assert|boolean|break|byte|case|catch|char|class|const|continue|def|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n    number:\n      /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n    operator: {\n      pattern:\n        /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n      lookbehind: true\n    },\n    punctuation: /\\.+|[{}[\\];(),:$]/\n  })\n  Prism.languages.insertBefore('groovy', 'string', {\n    shebang: {\n      pattern: /#!.+/,\n      alias: 'comment'\n    }\n  })\n  Prism.languages.insertBefore('groovy', 'punctuation', {\n    'spock-block': /\\b(?:and|cleanup|expect|given|setup|then|when|where):/\n  })\n  Prism.languages.insertBefore('groovy', 'function', {\n    annotation: {\n      pattern: /(^|[^.])@\\w+/,\n      lookbehind: true,\n      alias: 'punctuation'\n    }\n  }) // Handle string interpolation\n  Prism.hooks.add('wrap', function (env) {\n    if (env.language === 'groovy' && env.type === 'string') {\n      var delimiter = env.content.value[0]\n      if (delimiter != \"'\") {\n        var pattern = /([^\\\\])(?:\\$(?:\\{.*?\\}|[\\w.]+))/\n        if (delimiter === '$') {\n          pattern = /([^\\$])(?:\\$(?:\\{.*?\\}|[\\w.]+))/\n        } // To prevent double HTML-encoding we have to decode env.content first\n        env.content.value = env.content.value\n          .replace(/&lt;/g, '<')\n          .replace(/&amp;/g, '&')\n        env.content = Prism.highlight(env.content.value, {\n          expression: {\n            pattern: pattern,\n            lookbehind: true,\n            inside: Prism.languages.groovy\n          }\n        })\n        env.classes.push(delimiter === '/' ? 'regex' : 'gstring')\n      }\n    }\n  })\n}\n","'use strict'\nvar refractorRuby = require('./ruby.js')\nmodule.exports = haml\nhaml.displayName = 'haml'\nhaml.aliases = []\nfunction haml(Prism) {\n  Prism.register(refractorRuby)\n  /* TODO\nHandle multiline code after tag\n%foo= some |\nmultiline |\ncode |\n*/\n  ;(function (Prism) {\n    Prism.languages.haml = {\n      // Multiline stuff should appear before the rest\n      'multiline-comment': {\n        pattern:\n          /((?:^|\\r?\\n|\\r)([\\t ]*))(?:\\/|-#).*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)*/,\n        lookbehind: true,\n        alias: 'comment'\n      },\n      'multiline-code': [\n        {\n          pattern:\n            /((?:^|\\r?\\n|\\r)([\\t ]*)(?:[~-]|[&!]?=)).*,[\\t ]*(?:(?:\\r?\\n|\\r)\\2[\\t ].*,[\\t ]*)*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)/,\n          lookbehind: true,\n          inside: Prism.languages.ruby\n        },\n        {\n          pattern:\n            /((?:^|\\r?\\n|\\r)([\\t ]*)(?:[~-]|[&!]?=)).*\\|[\\t ]*(?:(?:\\r?\\n|\\r)\\2[\\t ].*\\|[\\t ]*)*/,\n          lookbehind: true,\n          inside: Prism.languages.ruby\n        }\n      ],\n      // See at the end of the file for known filters\n      filter: {\n        pattern:\n          /((?:^|\\r?\\n|\\r)([\\t ]*)):[\\w-]+(?:(?:\\r?\\n|\\r)(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/,\n        lookbehind: true,\n        inside: {\n          'filter-name': {\n            pattern: /^:[\\w-]+/,\n            alias: 'symbol'\n          }\n        }\n      },\n      markup: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)<.+/,\n        lookbehind: true,\n        inside: Prism.languages.markup\n      },\n      doctype: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)!!!(?: .+)?/,\n        lookbehind: true\n      },\n      tag: {\n        // Allows for one nested group of braces\n        pattern:\n          /((?:^|\\r?\\n|\\r)[\\t ]*)[%.#][\\w\\-#.]*[\\w\\-](?:\\([^)]+\\)|\\{(?:\\{[^}]+\\}|[^{}])+\\}|\\[[^\\]]+\\])*[\\/<>]*/,\n        lookbehind: true,\n        inside: {\n          attributes: [\n            {\n              // Lookbehind tries to prevent interpolations from breaking it all\n              // Allows for one nested group of braces\n              pattern: /(^|[^#])\\{(?:\\{[^}]+\\}|[^{}])+\\}/,\n              lookbehind: true,\n              inside: Prism.languages.ruby\n            },\n            {\n              pattern: /\\([^)]+\\)/,\n              inside: {\n                'attr-value': {\n                  pattern: /(=\\s*)(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|[^)\\s]+)/,\n                  lookbehind: true\n                },\n                'attr-name': /[\\w:-]+(?=\\s*!?=|\\s*[,)])/,\n                punctuation: /[=(),]/\n              }\n            },\n            {\n              pattern: /\\[[^\\]]+\\]/,\n              inside: Prism.languages.ruby\n            }\n          ],\n          punctuation: /[<>]/\n        }\n      },\n      code: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*(?:[~-]|[&!]?=)).+/,\n        lookbehind: true,\n        inside: Prism.languages.ruby\n      },\n      // Interpolations in plain text\n      interpolation: {\n        pattern: /#\\{[^}]+\\}/,\n        inside: {\n          delimiter: {\n            pattern: /^#\\{|\\}$/,\n            alias: 'punctuation'\n          },\n          ruby: {\n            pattern: /[\\s\\S]+/,\n            inside: Prism.languages.ruby\n          }\n        }\n      },\n      punctuation: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)[~=\\-&!]+/,\n        lookbehind: true\n      }\n    }\n    var filter_pattern =\n      '((?:^|\\\\r?\\\\n|\\\\r)([\\\\t ]*)):{{filter_name}}(?:(?:\\\\r?\\\\n|\\\\r)(?:\\\\2[\\\\t ].+|\\\\s*?(?=\\\\r?\\\\n|\\\\r)))+' // Non exhaustive list of available filters and associated languages\n    var filters = [\n      'css',\n      {\n        filter: 'coffee',\n        language: 'coffeescript'\n      },\n      'erb',\n      'javascript',\n      'less',\n      'markdown',\n      'ruby',\n      'scss',\n      'textile'\n    ]\n    var all_filters = {}\n    for (var i = 0, l = filters.length; i < l; i++) {\n      var filter = filters[i]\n      filter =\n        typeof filter === 'string'\n          ? {\n              filter: filter,\n              language: filter\n            }\n          : filter\n      if (Prism.languages[filter.language]) {\n        all_filters['filter-' + filter.filter] = {\n          pattern: RegExp(\n            filter_pattern.replace('{{filter_name}}', function () {\n              return filter.filter\n            })\n          ),\n          lookbehind: true,\n          inside: {\n            'filter-name': {\n              pattern: /^:[\\w-]+/,\n              alias: 'symbol'\n            },\n            text: {\n              pattern: /[\\s\\S]+/,\n              alias: [filter.language, 'language-' + filter.language],\n              inside: Prism.languages[filter.language]\n            }\n          }\n        }\n      }\n    }\n    Prism.languages.insertBefore('haml', 'filter', all_filters)\n  })(Prism)\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = handlebars\nhandlebars.displayName = 'handlebars'\nhandlebars.aliases = ['hbs']\nfunction handlebars(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.handlebars = {\n      comment: /\\{\\{![\\s\\S]*?\\}\\}/,\n      delimiter: {\n        pattern: /^\\{\\{\\{?|\\}\\}\\}?$/,\n        alias: 'punctuation'\n      },\n      string: /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n      boolean: /\\b(?:false|true)\\b/,\n      block: {\n        pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      brackets: {\n        pattern: /\\[[^\\]]+\\]/,\n        inside: {\n          punctuation: /\\[|\\]/,\n          variable: /[\\s\\S]+/\n        }\n      },\n      punctuation: /[!\"#%&':()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n      variable: /[^!\"#%&'()*+,\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'handlebars',\n        handlebarsPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(\n        env,\n        'handlebars'\n      )\n    })\n    Prism.languages.hbs = Prism.languages.handlebars\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = haskell\nhaskell.displayName = 'haskell'\nhaskell.aliases = ['hs']\nfunction haskell(Prism) {\n  Prism.languages.haskell = {\n    comment: {\n      pattern:\n        /(^|[^-!#$%*+=?&@|~.:<>^\\\\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\\\\/].*|$)|\\{-[\\s\\S]*?-\\})/m,\n      lookbehind: true\n    },\n    char: {\n      pattern:\n        /'(?:[^\\\\']|\\\\(?:[abfnrtv\\\\\"'&]|\\^[A-Z@[\\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\\d+|o[0-7]+|x[0-9a-fA-F]+))'/,\n      alias: 'string'\n    },\n    string: {\n      pattern: /\"(?:[^\\\\\"]|\\\\(?:\\S|\\s+\\\\))*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b/,\n    'import-statement': {\n      // The imported or hidden names are not included in this import\n      // statement. This is because we want to highlight those exactly like\n      // we do for the names in the program.\n      pattern:\n        /(^[\\t ]*)import\\s+(?:qualified\\s+)?(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*(?:\\s+as\\s+(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*)?(?:\\s+hiding\\b)?/m,\n      lookbehind: true,\n      inside: {\n        keyword: /\\b(?:as|hiding|import|qualified)\\b/,\n        punctuation: /\\./\n      }\n    },\n    // These are builtin variables only. Constructors are highlighted later as a constant.\n    builtin:\n      /\\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b/,\n    // decimal integers and floating point numbers | octal integers | hexadecimal integers\n    number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0o[0-7]+|0x[0-9a-f]+)\\b/i,\n    operator: [\n      {\n        // infix operator\n        pattern: /`(?:[A-Z][\\w']*\\.)*[_a-z][\\w']*`/,\n        greedy: true\n      },\n      {\n        // function composition\n        pattern: /(\\s)\\.(?=\\s)/,\n        lookbehind: true\n      }, // Most of this is needed because of the meaning of a single '.'.\n      // If it stands alone freely, it is the function composition.\n      // It may also be a separator between a module name and an identifier => no\n      // operator. If it comes together with other special characters it is an\n      // operator too.\n      //\n      // This regex means: /[-!#$%*+=?&@|~.:<>^\\\\\\/]+/ without /\\./.\n      /[-!#$%*+=?&@|~:<>^\\\\\\/][-!#$%*+=?&@|~.:<>^\\\\\\/]*|\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]+/\n    ],\n    // In Haskell, nearly everything is a variable, do not highlight these.\n    hvariable: {\n      pattern: /\\b(?:[A-Z][\\w']*\\.)*[_a-z][\\w']*/,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    constant: {\n      pattern: /\\b(?:[A-Z][\\w']*\\.)*[A-Z][\\w']*/,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.hs = Prism.languages.haskell\n}\n","'use strict'\n\nmodule.exports = haxe\nhaxe.displayName = 'haxe'\nhaxe.aliases = []\nfunction haxe(Prism) {\n  Prism.languages.haxe = Prism.languages.extend('clike', {\n    string: {\n      // Strings can be multi-line\n      pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n      greedy: true\n    },\n    'class-name': [\n      {\n        pattern:\n          /(\\b(?:abstract|class|enum|extends|implements|interface|new|typedef)\\s+)[A-Z_]\\w*/,\n        lookbehind: true\n      }, // based on naming convention\n      /\\b[A-Z]\\w*/\n    ],\n    // The final look-ahead prevents highlighting of keywords if expressions such as \"haxe.macro.Expr\"\n    keyword:\n      /\\bthis\\b|\\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|final|for|from|function|if|implements|import|in|inline|interface|macro|new|null|operator|overload|override|package|private|public|return|static|super|switch|throw|to|try|typedef|untyped|using|var|while)(?!\\.)\\b/,\n    function: {\n      pattern: /\\b[a-z_]\\w*(?=\\s*(?:<[^<>]*>\\s*)?\\()/i,\n      greedy: true\n    },\n    operator: /\\.{3}|\\+\\+|--|&&|\\|\\||->|=>|(?:<<?|>{1,3}|[-+*/%!=&|^])=?|[?:~]/\n  })\n  Prism.languages.insertBefore('haxe', 'string', {\n    'string-interpolation': {\n      pattern: /'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /(^|[^\\\\])\\$(?:\\w+|\\{[^{}]+\\})/,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{?|\\}$/,\n              alias: 'punctuation'\n            },\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: Prism.languages.haxe\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.insertBefore('haxe', 'class-name', {\n    regex: {\n      pattern: /~\\/(?:[^\\/\\\\\\r\\n]|\\\\.)+\\/[a-z]*/,\n      greedy: true,\n      inside: {\n        'regex-flags': /\\b[a-z]+$/,\n        'regex-source': {\n          pattern: /^(~\\/)[\\s\\S]+(?=\\/$)/,\n          lookbehind: true,\n          alias: 'language-regex',\n          inside: Prism.languages.regex\n        },\n        'regex-delimiter': /^~\\/|\\/$/\n      }\n    }\n  })\n  Prism.languages.insertBefore('haxe', 'keyword', {\n    preprocessor: {\n      pattern: /#(?:else|elseif|end|if)\\b.*/,\n      alias: 'property'\n    },\n    metadata: {\n      pattern: /@:?[\\w.]+/,\n      alias: 'symbol'\n    },\n    reification: {\n      pattern: /\\$(?:\\w+|(?=\\{))/,\n      alias: 'important'\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = hcl\nhcl.displayName = 'hcl'\nhcl.aliases = []\nfunction hcl(Prism) {\n  Prism.languages.hcl = {\n    comment: /(?:\\/\\/|#).*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    heredoc: {\n      pattern: /<<-?(\\w+\\b)[\\s\\S]*?^[ \\t]*\\1/m,\n      greedy: true,\n      alias: 'string'\n    },\n    keyword: [\n      {\n        pattern:\n          /(?:data|resource)\\s+(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")(?=\\s+\"[\\w-]+\"\\s+\\{)/i,\n        inside: {\n          type: {\n            pattern: /(resource|data|\\s+)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")/i,\n            lookbehind: true,\n            alias: 'variable'\n          }\n        }\n      },\n      {\n        pattern:\n          /(?:backend|module|output|provider|provisioner|variable)\\s+(?:[\\w-]+|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")\\s+(?=\\{)/i,\n        inside: {\n          type: {\n            pattern:\n              /(backend|module|output|provider|provisioner|variable)\\s+(?:[\\w-]+|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")\\s+/i,\n            lookbehind: true,\n            alias: 'variable'\n          }\n        }\n      },\n      /[\\w-]+(?=\\s+\\{)/\n    ],\n    property: [/[-\\w\\.]+(?=\\s*=(?!=))/, /\"(?:\\\\[\\s\\S]|[^\\\\\"])+\"(?=\\s*[:=])/],\n    string: {\n      pattern:\n        /\"(?:[^\\\\$\"]|\\\\[\\s\\S]|\\$(?:(?=\")|\\$+(?!\\$)|[^\"${])|\\$\\{(?:[^{}\"]|\"(?:[^\\\\\"]|\\\\[\\s\\S])*\")*\\})*\"/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /(^|[^$])\\$\\{(?:[^{}\"]|\"(?:[^\\\\\"]|\\\\[\\s\\S])*\")*\\}/,\n          lookbehind: true,\n          inside: {\n            type: {\n              pattern:\n                /(\\b(?:count|data|local|module|path|self|terraform|var)\\b\\.)[\\w\\*]+/i,\n              lookbehind: true,\n              alias: 'variable'\n            },\n            keyword: /\\b(?:count|data|local|module|path|self|terraform|var)\\b/i,\n            function: /\\w+(?=\\()/,\n            string: {\n              pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n              greedy: true\n            },\n            number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n            punctuation: /[!\\$#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~?:]/\n          }\n        }\n      }\n    },\n    number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    punctuation: /[=\\[\\]{}]/\n  }\n}\n","'use strict'\nvar refractorC = require('./c.js')\nmodule.exports = hlsl\nhlsl.displayName = 'hlsl'\nhlsl.aliases = []\nfunction hlsl(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.hlsl = Prism.languages.extend('c', {\n    // Regarding keywords and class names:\n    // The list of all keywords was split into 'keyword' and 'class-name' tokens based on whether they are capitalized.\n    // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-keywords\n    // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-reserved-words\n    'class-name': [\n      Prism.languages.c['class-name'],\n      /\\b(?:AppendStructuredBuffer|BlendState|Buffer|ByteAddressBuffer|CompileShader|ComputeShader|ConsumeStructuredBuffer|DepthStencilState|DepthStencilView|DomainShader|GeometryShader|Hullshader|InputPatch|LineStream|OutputPatch|PixelShader|PointStream|RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture(?:1D|1DArray|2D|2DArray|3D)|RasterizerState|RenderTargetView|SamplerComparisonState|SamplerState|StructuredBuffer|Texture(?:1D|1DArray|2D|2DArray|2DMS|2DMSArray|3D|Cube|CubeArray)|TriangleStream|VertexShader)\\b/\n    ],\n    keyword: [\n      // HLSL keyword\n      /\\b(?:asm|asm_fragment|auto|break|case|catch|cbuffer|centroid|char|class|column_major|compile|compile_fragment|const|const_cast|continue|default|delete|discard|do|dynamic_cast|else|enum|explicit|export|extern|for|friend|fxgroup|goto|groupshared|if|in|inline|inout|interface|line|lineadj|linear|long|matrix|mutable|namespace|new|nointerpolation|noperspective|operator|out|packoffset|pass|pixelfragment|point|precise|private|protected|public|register|reinterpret_cast|return|row_major|sample|sampler|shared|short|signed|sizeof|snorm|stateblock|stateblock_state|static|static_cast|string|struct|switch|tbuffer|technique|technique10|technique11|template|texture|this|throw|triangle|triangleadj|try|typedef|typename|uniform|union|unorm|unsigned|using|vector|vertexfragment|virtual|void|volatile|while)\\b/, // scalar, vector, and matrix types\n      /\\b(?:bool|double|dword|float|half|int|min(?:10float|12int|16(?:float|int|uint))|uint)(?:[1-4](?:x[1-4])?)?\\b/\n    ],\n    // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-grammar#floating-point-numbers\n    number:\n      /(?:(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?|\\b0x[\\da-fA-F]+)[fFhHlLuU]?\\b/,\n    boolean: /\\b(?:false|true)\\b/\n  })\n}\n","'use strict'\n\nmodule.exports = hoon\nhoon.displayName = 'hoon'\nhoon.aliases = []\nfunction hoon(Prism) {\n  Prism.languages.hoon = {\n    comment: {\n      pattern: /::.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"[^\"]*\"|'[^']*'/,\n      greedy: true\n    },\n    constant: /%(?:\\.[ny]|[\\w-]+)/,\n    'class-name': /@(?:[a-z0-9-]*[a-z0-9])?|\\*/i,\n    function: /(?:\\+[-+] {2})?(?:[a-z](?:[a-z0-9-]*[a-z0-9])?)/,\n    keyword:\n      /\\.[\\^\\+\\*=\\?]|![><:\\.=\\?!]|=[>|:,\\.\\-\\^<+;/~\\*\\?]|\\?[>|:\\.\\-\\^<\\+&~=@!]|\\|[\\$_%:\\.\\-\\^~\\*=@\\?]|\\+[|\\$\\+\\*]|:[_\\-\\^\\+~\\*]|%[_:\\.\\-\\^\\+~\\*=]|\\^[|:\\.\\-\\+&~\\*=\\?]|\\$[|_%:<>\\-\\^&~@=\\?]|;[:<\\+;\\/~\\*=]|~[>|\\$_%<\\+\\/&=\\?!]|--|==/\n  }\n}\n","'use strict'\n\nmodule.exports = hpkp\nhpkp.displayName = 'hpkp'\nhpkp.aliases = []\nfunction hpkp(Prism) {\n  /**\n   * Original by Scott Helme.\n   *\n   * Reference: https://scotthelme.co.uk/hpkp-cheat-sheet/\n   */\n  Prism.languages.hpkp = {\n    directive: {\n      pattern:\n        /\\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\\s;=]|$)/i,\n      alias: 'property'\n    },\n    operator: /=/,\n    punctuation: /;/\n  }\n}\n","'use strict'\n\nmodule.exports = hsts\nhsts.displayName = 'hsts'\nhsts.aliases = []\nfunction hsts(Prism) {\n  /**\n   * Original by Scott Helme.\n   *\n   * Reference: https://scotthelme.co.uk/hsts-cheat-sheet/\n   */\n  Prism.languages.hsts = {\n    directive: {\n      pattern: /\\b(?:includeSubDomains|max-age|preload)(?=[\\s;=]|$)/i,\n      alias: 'property'\n    },\n    operator: /=/,\n    punctuation: /;/\n  }\n}\n","'use strict'\n\nmodule.exports = http\nhttp.displayName = 'http'\nhttp.aliases = []\nfunction http(Prism) {\n  ;(function (Prism) {\n    /**\n     * @param {string} name\n     * @returns {RegExp}\n     */\n    function headerValueOf(name) {\n      return RegExp('(^(?:' + name + '):[ \\t]*(?![ \\t]))[^]+', 'i')\n    }\n    Prism.languages.http = {\n      'request-line': {\n        pattern:\n          /^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\\s(?:https?:\\/\\/|\\/)\\S*\\sHTTP\\/[\\d.]+/m,\n        inside: {\n          // HTTP Method\n          method: {\n            pattern: /^[A-Z]+\\b/,\n            alias: 'property'\n          },\n          // Request Target e.g. http://example.com, /path/to/file\n          'request-target': {\n            pattern: /^(\\s)(?:https?:\\/\\/|\\/)\\S*(?=\\s)/,\n            lookbehind: true,\n            alias: 'url',\n            inside: Prism.languages.uri\n          },\n          // HTTP Version\n          'http-version': {\n            pattern: /^(\\s)HTTP\\/[\\d.]+/,\n            lookbehind: true,\n            alias: 'property'\n          }\n        }\n      },\n      'response-status': {\n        pattern: /^HTTP\\/[\\d.]+ \\d+ .+/m,\n        inside: {\n          // HTTP Version\n          'http-version': {\n            pattern: /^HTTP\\/[\\d.]+/,\n            alias: 'property'\n          },\n          // Status Code\n          'status-code': {\n            pattern: /^(\\s)\\d+(?=\\s)/,\n            lookbehind: true,\n            alias: 'number'\n          },\n          // Reason Phrase\n          'reason-phrase': {\n            pattern: /^(\\s).+/,\n            lookbehind: true,\n            alias: 'string'\n          }\n        }\n      },\n      header: {\n        pattern: /^[\\w-]+:.+(?:(?:\\r\\n?|\\n)[ \\t].+)*/m,\n        inside: {\n          'header-value': [\n            {\n              pattern: headerValueOf(/Content-Security-Policy/.source),\n              lookbehind: true,\n              alias: ['csp', 'languages-csp'],\n              inside: Prism.languages.csp\n            },\n            {\n              pattern: headerValueOf(/Public-Key-Pins(?:-Report-Only)?/.source),\n              lookbehind: true,\n              alias: ['hpkp', 'languages-hpkp'],\n              inside: Prism.languages.hpkp\n            },\n            {\n              pattern: headerValueOf(/Strict-Transport-Security/.source),\n              lookbehind: true,\n              alias: ['hsts', 'languages-hsts'],\n              inside: Prism.languages.hsts\n            },\n            {\n              pattern: headerValueOf(/[^:]+/.source),\n              lookbehind: true\n            }\n          ],\n          'header-name': {\n            pattern: /^[^:]+/,\n            alias: 'keyword'\n          },\n          punctuation: /^:/\n        }\n      }\n    } // Create a mapping of Content-Type headers to language definitions\n    var langs = Prism.languages\n    var httpLanguages = {\n      'application/javascript': langs.javascript,\n      'application/json': langs.json || langs.javascript,\n      'application/xml': langs.xml,\n      'text/xml': langs.xml,\n      'text/html': langs.html,\n      'text/css': langs.css,\n      'text/plain': langs.plain\n    } // Declare which types can also be suffixes\n    var suffixTypes = {\n      'application/json': true,\n      'application/xml': true\n    }\n    /**\n     * Returns a pattern for the given content type which matches it and any type which has it as a suffix.\n     *\n     * @param {string} contentType\n     * @returns {string}\n     */\n    function getSuffixPattern(contentType) {\n      var suffix = contentType.replace(/^[a-z]+\\//, '')\n      var suffixPattern = '\\\\w+/(?:[\\\\w.-]+\\\\+)+' + suffix + '(?![+\\\\w.-])'\n      return '(?:' + contentType + '|' + suffixPattern + ')'\n    } // Insert each content type parser that has its associated language\n    // currently loaded.\n    var options\n    for (var contentType in httpLanguages) {\n      if (httpLanguages[contentType]) {\n        options = options || {}\n        var pattern = suffixTypes[contentType]\n          ? getSuffixPattern(contentType)\n          : contentType\n        options[contentType.replace(/\\//g, '-')] = {\n          pattern: RegExp(\n            '(' +\n              /content-type:\\s*/.source +\n              pattern +\n              /(?:(?:\\r\\n?|\\n)[\\w-].*)*(?:\\r(?:\\n|(?!\\n))|\\n)/.source +\n              ')' + // This is a little interesting:\n              // The HTTP format spec required 1 empty line before the body to make everything unambiguous.\n              // However, when writing code by hand (e.g. to display on a website) people can forget about this,\n              // so we want to be liberal here. We will allow the empty line to be omitted if the first line of\n              // the body does not start with a [\\w-] character (as headers do).\n              /[^ \\t\\w-][\\s\\S]*/.source,\n            'i'\n          ),\n          lookbehind: true,\n          inside: httpLanguages[contentType]\n        }\n      }\n    }\n    if (options) {\n      Prism.languages.insertBefore('http', 'header', options)\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = ichigojam\nichigojam.displayName = 'ichigojam'\nichigojam.aliases = []\nfunction ichigojam(Prism) {\n  // according to the offical reference (EN)\n  // https://ichigojam.net/IchigoJam-en.html\n  Prism.languages.ichigojam = {\n    comment: /(?:\\B'|REM)(?:[^\\n\\r]*)/i,\n    string: {\n      pattern: /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^\\w +\\-.])*\"/,\n      greedy: true\n    },\n    number: /\\B#[0-9A-F]+|\\B`[01]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n    keyword:\n      /\\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GOTO|GSB|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RIGHT|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\\$|\\b)/i,\n    function:\n      /\\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\\$|\\b)/i,\n    label: /(?:\\B@\\S+)/,\n    operator: /<[=>]?|>=?|\\|\\||&&|[+\\-*\\/=|&^~!]|\\b(?:AND|NOT|OR)\\b/i,\n    punctuation: /[\\[,;:()\\]]/\n  }\n}\n","'use strict'\n\nmodule.exports = icon\nicon.displayName = 'icon'\nicon.aliases = []\nfunction icon(Prism) {\n  Prism.languages.icon = {\n    comment: /#.*/,\n    string: {\n      pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n_]|\\\\.|_(?!\\1)(?:\\r\\n|[\\s\\S]))*\\1/,\n      greedy: true\n    },\n    number: /\\b(?:\\d+r[a-z\\d]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b|\\.\\d+\\b/i,\n    'builtin-keyword': {\n      pattern:\n        /&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\\b/,\n      alias: 'variable'\n    },\n    directive: {\n      pattern: /\\$\\w+/,\n      alias: 'builtin'\n    },\n    keyword:\n      /\\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\\b/,\n    function: /\\b(?!\\d)\\w+(?=\\s*[({]|\\s*!\\s*\\[)/,\n    operator:\n      /[+-]:(?!=)|(?:[\\/?@^%&]|\\+\\+?|--?|==?=?|~==?=?|\\*\\*?|\\|\\|\\|?|<(?:->?|<?=?)|>>?=?)(?::=)?|:(?:=:?)?|[!.\\\\|~]/,\n    punctuation: /[\\[\\](){},;]/\n  }\n}\n","'use strict'\n\nmodule.exports = icuMessageFormat\nicuMessageFormat.displayName = 'icuMessageFormat'\nicuMessageFormat.aliases = []\nfunction icuMessageFormat(Prism) {\n  // https://unicode-org.github.io/icu/userguide/format_parse/messages/\n  // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/MessageFormat.html\n  ;(function (Prism) {\n    /**\n     * @param {string} source\n     * @param {number} level\n     * @returns {string}\n     */\n    function nested(source, level) {\n      if (level <= 0) {\n        return /[]/.source\n      } else {\n        return source.replace(/<SELF>/g, function () {\n          return nested(source, level - 1)\n        })\n      }\n    }\n    var stringPattern = /'[{}:=,](?:[^']|'')*'(?!')/\n    var escape = {\n      pattern: /''/,\n      greedy: true,\n      alias: 'operator'\n    }\n    var string = {\n      pattern: stringPattern,\n      greedy: true,\n      inside: {\n        escape: escape\n      }\n    }\n    var argumentSource = nested(\n      /\\{(?:[^{}']|'(?![{},'])|''|<STR>|<SELF>)*\\}/.source.replace(\n        /<STR>/g,\n        function () {\n          return stringPattern.source\n        }\n      ),\n      8\n    )\n    var nestedMessage = {\n      pattern: RegExp(argumentSource),\n      inside: {\n        message: {\n          pattern: /^(\\{)[\\s\\S]+(?=\\}$)/,\n          lookbehind: true,\n          inside: null // see below\n        },\n        'message-delimiter': {\n          pattern: /./,\n          alias: 'punctuation'\n        }\n      }\n    }\n    Prism.languages['icu-message-format'] = {\n      argument: {\n        pattern: RegExp(argumentSource),\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /^(\\{)[\\s\\S]+(?=\\}$)/,\n            lookbehind: true,\n            inside: {\n              'argument-name': {\n                pattern: /^(\\s*)[^{}:=,\\s]+/,\n                lookbehind: true\n              },\n              'choice-style': {\n                // https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1ChoiceFormat.html#details\n                pattern: /^(\\s*,\\s*choice\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n                lookbehind: true,\n                inside: {\n                  punctuation: /\\|/,\n                  range: {\n                    pattern: /^(\\s*)[+-]?(?:\\d+(?:\\.\\d*)?|\\u221e)\\s*[<#\\u2264]/,\n                    lookbehind: true,\n                    inside: {\n                      operator: /[<#\\u2264]/,\n                      number: /\\S+/\n                    }\n                  },\n                  rest: null // see below\n                }\n              },\n              'plural-style': {\n                // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/PluralFormat.html#:~:text=Patterns%20and%20Their%20Interpretation\n                pattern:\n                  /^(\\s*,\\s*(?:plural|selectordinal)\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n                lookbehind: true,\n                inside: {\n                  offset: /^offset:\\s*\\d+/,\n                  'nested-message': nestedMessage,\n                  selector: {\n                    pattern: /=\\d+|[^{}:=,\\s]+/,\n                    inside: {\n                      keyword: /^(?:few|many|one|other|two|zero)$/\n                    }\n                  }\n                }\n              },\n              'select-style': {\n                // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/SelectFormat.html#:~:text=Patterns%20and%20Their%20Interpretation\n                pattern: /^(\\s*,\\s*select\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n                lookbehind: true,\n                inside: {\n                  'nested-message': nestedMessage,\n                  selector: {\n                    pattern: /[^{}:=,\\s]+/,\n                    inside: {\n                      keyword: /^other$/\n                    }\n                  }\n                }\n              },\n              keyword: /\\b(?:choice|plural|select|selectordinal)\\b/,\n              'arg-type': {\n                pattern: /\\b(?:date|duration|number|ordinal|spellout|time)\\b/,\n                alias: 'keyword'\n              },\n              'arg-skeleton': {\n                pattern: /(,\\s*)::[^{}:=,\\s]+/,\n                lookbehind: true\n              },\n              'arg-style': {\n                pattern:\n                  /(,\\s*)(?:currency|full|integer|long|medium|percent|short)(?=\\s*$)/,\n                lookbehind: true\n              },\n              'arg-style-text': {\n                pattern: RegExp(\n                  /(^\\s*,\\s*(?=\\S))/.source +\n                    nested(/(?:[^{}']|'[^']*'|\\{(?:<SELF>)?\\})+/.source, 8) +\n                    '$'\n                ),\n                lookbehind: true,\n                alias: 'string'\n              },\n              punctuation: /,/\n            }\n          },\n          'argument-delimiter': {\n            pattern: /./,\n            alias: 'operator'\n          }\n        }\n      },\n      escape: escape,\n      string: string\n    }\n    nestedMessage.inside.message.inside = Prism.languages['icu-message-format']\n    Prism.languages['icu-message-format'].argument.inside.content.inside[\n      'choice-style'\n    ].inside.rest = Prism.languages['icu-message-format']\n  })(Prism)\n}\n","'use strict'\nvar refractorHaskell = require('./haskell.js')\nmodule.exports = idris\nidris.displayName = 'idris'\nidris.aliases = ['idr']\nfunction idris(Prism) {\n  Prism.register(refractorHaskell)\n  Prism.languages.idris = Prism.languages.extend('haskell', {\n    comment: {\n      pattern: /(?:(?:--|\\|\\|\\|).*$|\\{-[\\s\\S]*?-\\})/m\n    },\n    keyword:\n      /\\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\\b/,\n    builtin: undefined\n  })\n  Prism.languages.insertBefore('idris', 'keyword', {\n    'import-statement': {\n      pattern: /(^\\s*import\\s+)(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*/m,\n      lookbehind: true,\n      inside: {\n        punctuation: /\\./\n      }\n    }\n  })\n  Prism.languages.idr = Prism.languages.idris\n}\n","'use strict'\n\nmodule.exports = iecst\niecst.displayName = 'iecst'\niecst.aliases = []\nfunction iecst(Prism) {\n  Prism.languages.iecst = {\n    comment: [\n      {\n        pattern:\n          /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\(\\*[\\s\\S]*?(?:\\*\\)|$)|\\{[\\s\\S]*?(?:\\}|$))/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword: [\n      /\\b(?:END_)?(?:PROGRAM|CONFIGURATION|INTERFACE|FUNCTION_BLOCK|FUNCTION|ACTION|TRANSITION|TYPE|STRUCT|(?:INITIAL_)?STEP|NAMESPACE|LIBRARY|CHANNEL|FOLDER|RESOURCE|VAR_(?:ACCESS|CONFIG|EXTERNAL|GLOBAL|INPUT|IN_OUT|OUTPUT|TEMP)|VAR|METHOD|PROPERTY)\\b/i,\n      /\\b(?:AT|BY|(?:END_)?(?:CASE|FOR|IF|REPEAT|WHILE)|CONSTANT|CONTINUE|DO|ELSE|ELSIF|EXIT|EXTENDS|FROM|GET|GOTO|IMPLEMENTS|JMP|NON_RETAIN|OF|PRIVATE|PROTECTED|PUBLIC|RETAIN|RETURN|SET|TASK|THEN|TO|UNTIL|USING|WITH|__CATCH|__ENDTRY|__FINALLY|__TRY)\\b/\n    ],\n    'class-name':\n      /\\b(?:ANY|ARRAY|BOOL|BYTE|U?(?:D|L|S)?INT|(?:D|L)?WORD|DATE(?:_AND_TIME)?|DT|L?REAL|POINTER|STRING|TIME(?:_OF_DAY)?|TOD)\\b/,\n    address: {\n      pattern: /%[IQM][XBWDL][\\d.]*|%[IQ][\\d.]*/,\n      alias: 'symbol'\n    },\n    number:\n      /\\b(?:16#[\\da-f]+|2#[01_]+|0x[\\da-f]+)\\b|\\b(?:D|DT|T|TOD)#[\\d_shmd:]*|\\b[A-Z]*#[\\d.,_]*|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    boolean: /\\b(?:FALSE|NULL|TRUE)\\b/,\n    operator:\n      /S?R?:?=>?|&&?|\\*\\*?|<[=>]?|>=?|[-:^/+#]|\\b(?:AND|EQ|EXPT|GE|GT|LE|LT|MOD|NE|NOT|OR|XOR)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    punctuation: /[()[\\].,;]/\n  }\n}\n","'use strict'\n\nmodule.exports = ignore\nignore.displayName = 'ignore'\nignore.aliases = ['gitignore', 'hgignore', 'npmignore']\nfunction ignore(Prism) {\n  ;(function (Prism) {\n    Prism.languages.ignore = {\n      // https://git-scm.com/docs/gitignore\n      comment: /^#.*/m,\n      entry: {\n        pattern: /\\S(?:.*(?:(?:\\\\ )|\\S))?/,\n        alias: 'string',\n        inside: {\n          operator: /^!|\\*\\*?|\\?/,\n          regex: {\n            pattern: /(^|[^\\\\])\\[[^\\[\\]]*\\]/,\n            lookbehind: true\n          },\n          punctuation: /\\//\n        }\n      }\n    }\n    Prism.languages.gitignore = Prism.languages.ignore\n    Prism.languages.hgignore = Prism.languages.ignore\n    Prism.languages.npmignore = Prism.languages.ignore\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = inform7\ninform7.displayName = 'inform7'\ninform7.aliases = []\nfunction inform7(Prism) {\n  Prism.languages.inform7 = {\n    string: {\n      pattern: /\"[^\"]*\"/,\n      inside: {\n        substitution: {\n          pattern: /\\[[^\\[\\]]+\\]/,\n          inside: {\n            delimiter: {\n              pattern: /\\[|\\]/,\n              alias: 'punctuation'\n            } // See rest below\n          }\n        }\n      }\n    },\n    comment: {\n      pattern: /\\[[^\\[\\]]+\\]/,\n      greedy: true\n    },\n    title: {\n      pattern: /^[ \\t]*(?:book|chapter|part(?! of)|section|table|volume)\\b.+/im,\n      alias: 'important'\n    },\n    number: {\n      pattern:\n        /(^|[^-])(?:\\b\\d+(?:\\.\\d+)?(?:\\^\\d+)?(?:(?!\\d)\\w+)?|\\b(?:eight|eleven|five|four|nine|one|seven|six|ten|three|twelve|two))\\b(?!-)/i,\n      lookbehind: true\n    },\n    verb: {\n      pattern:\n        /(^|[^-])\\b(?:answering|applying to|are|asking|attacking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:ing|s)?|consulting|contain(?:ing|s)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:s|ve|ving)|hold(?:ing|s)?|impl(?:ies|y)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:ing|s)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:ing|s)?|setting|showing|singing|sleeping|smelling|squeezing|support(?:ing|s)?|swearing|switching|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:ing|s)?|var(?:ies|y|ying)|waiting|waking|waving|wear(?:ing|s)?)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'operator'\n    },\n    keyword: {\n      pattern:\n        /(^|[^-])\\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|the story|unless)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\\b(?!-)/i,\n      lookbehind: true\n    },\n    property: {\n      pattern:\n        /(^|[^-])\\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: off| on)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'symbol'\n    },\n    position: {\n      pattern:\n        /(^|[^-])\\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    type: {\n      pattern:\n        /(^|[^-])\\b(?:actions?|activit(?:ies|y)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    punctuation: /[.,:;(){}]/\n  }\n  Prism.languages.inform7['string'].inside['substitution'].inside.rest =\n    Prism.languages.inform7 // We don't want the remaining text in the substitution to be highlighted as the string.\n  Prism.languages.inform7['string'].inside['substitution'].inside.rest.text = {\n    pattern: /\\S(?:\\s*\\S)*/,\n    alias: 'comment'\n  }\n}\n","'use strict'\n\nmodule.exports = ini\nini.displayName = 'ini'\nini.aliases = []\nfunction ini(Prism) {\n  Prism.languages.ini = {\n    /**\n     * The component mimics the behavior of the Win32 API parser.\n     *\n     * @see {@link https://github.com/PrismJS/prism/issues/2775#issuecomment-787477723}\n     */\n    comment: {\n      pattern: /(^[ \\f\\t\\v]*)[#;][^\\n\\r]*/m,\n      lookbehind: true\n    },\n    section: {\n      pattern: /(^[ \\f\\t\\v]*)\\[[^\\n\\r\\]]*\\]?/m,\n      lookbehind: true,\n      inside: {\n        'section-name': {\n          pattern: /(^\\[[ \\f\\t\\v]*)[^ \\f\\t\\v\\]]+(?:[ \\f\\t\\v]+[^ \\f\\t\\v\\]]+)*/,\n          lookbehind: true,\n          alias: 'selector'\n        },\n        punctuation: /\\[|\\]/\n      }\n    },\n    key: {\n      pattern:\n        /(^[ \\f\\t\\v]*)[^ \\f\\n\\r\\t\\v=]+(?:[ \\f\\t\\v]+[^ \\f\\n\\r\\t\\v=]+)*(?=[ \\f\\t\\v]*=)/m,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    value: {\n      pattern: /(=[ \\f\\t\\v]*)[^ \\f\\n\\r\\t\\v]+(?:[ \\f\\t\\v]+[^ \\f\\n\\r\\t\\v]+)*/,\n      lookbehind: true,\n      alias: 'attr-value',\n      inside: {\n        'inner-value': {\n          pattern: /^(\"|').+(?=\\1$)/,\n          lookbehind: true\n        }\n      }\n    },\n    punctuation: /=/\n  }\n}\n","'use strict'\n\nmodule.exports = io\nio.displayName = 'io'\nio.aliases = []\nfunction io(Prism) {\n  Prism.languages.io = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\/\\/.*|#.*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    'triple-quoted-string': {\n      pattern: /\"\"\"(?:\\\\[\\s\\S]|(?!\"\"\")[^\\\\])*\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:activate|activeCoroCount|asString|block|break|call|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getEnvironmentVariable|getSlot|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|try|type|uniqueId|updateSlot|wait|while|write|yield)\\b/,\n    builtin:\n      /\\b(?:Array|AudioDevice|AudioMixer|BigNum|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Random|Regex|SGML|SGMLElement|SGMLParser|SQLite|Sequence|Server|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink)\\b/,\n    boolean: /\\b(?:false|nil|true)\\b/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e-?\\d+)?/i,\n    operator:\n      /[=!*/%+\\-^&|]=|>>?=?|<<?=?|:?:?=|\\+\\+?|--?|\\*\\*?|\\/\\/?|%|\\|\\|?|&&?|\\b(?:and|not|or|return)\\b|@@?|\\?\\??|\\.\\./,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = j\nj.displayName = 'j'\nj.aliases = []\nfunction j(Prism) {\n  Prism.languages.j = {\n    comment: {\n      pattern: /\\bNB\\..*/,\n      greedy: true\n    },\n    string: {\n      pattern: /'(?:''|[^'\\r\\n])*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:(?:CR|LF|adverb|conjunction|def|define|dyad|monad|noun|verb)\\b|(?:assert|break|case|catch[dt]?|continue|do|else|elseif|end|fcase|for|for_\\w+|goto_\\w+|if|label_\\w+|return|select|throw|try|while|whilst)\\.)/,\n    verb: {\n      // Negative look-ahead prevents bad highlighting\n      // of ^: ;. =. =: !. !:\n      pattern:\n        /(?!\\^:|;\\.|[=!][.:])(?:\\{(?:\\.|::?)?|p(?:\\.\\.?|:)|[=!\\]]|[<>+*\\-%$|,#][.:]?|[?^]\\.?|[;\\[]:?|[~}\"i][.:]|[ACeEIjLor]\\.|(?:[_\\/\\\\qsux]|_?\\d):)/,\n      alias: 'keyword'\n    },\n    number:\n      /\\b_?(?:(?!\\d:)\\d+(?:\\.\\d+)?(?:(?:ad|ar|[ejpx])_?\\d+(?:\\.\\d+)?)*(?:b_?[\\da-z]+(?:\\.[\\da-z]+)?)?|_\\b(?!\\.))/,\n    adverb: {\n      pattern: /[~}]|[\\/\\\\]\\.?|[bfM]\\.|t[.:]/,\n      alias: 'builtin'\n    },\n    operator: /[=a][.:]|_\\./,\n    conjunction: {\n      pattern: /&(?:\\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\\.|`:?|[\\^LS]:|\"/,\n      alias: 'variable'\n    },\n    punctuation: /[()]/\n  }\n}\n","'use strict'\n\nmodule.exports = java\njava.displayName = 'java'\njava.aliases = []\nfunction java(Prism) {\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/ // full package (optional) + parent classes (optional)\n    var classNamePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/\n      .source // based on the java naming conventions\n    var className = {\n      pattern: RegExp(classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n      lookbehind: true,\n      inside: {\n        namespace: {\n          pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        punctuation: /\\./\n      }\n    }\n    Prism.languages.java = Prism.languages.extend('clike', {\n      string: {\n        pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n        lookbehind: true,\n        greedy: true\n      },\n      'class-name': [\n        className,\n        {\n          // variables and parameters\n          // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n          pattern: RegExp(\n            classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source\n          ),\n          lookbehind: true,\n          inside: className.inside\n        }\n      ],\n      keyword: keywords,\n      function: [\n        Prism.languages.clike.function,\n        {\n          pattern: /(::\\s*)[a-z_]\\w*/,\n          lookbehind: true\n        }\n      ],\n      number:\n        /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n      operator: {\n        pattern:\n          /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n        lookbehind: true\n      }\n    })\n    Prism.languages.insertBefore('java', 'string', {\n      'triple-quoted-string': {\n        // http://openjdk.java.net/jeps/355#Description\n        pattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n        greedy: true,\n        alias: 'string'\n      },\n      char: {\n        pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n        greedy: true\n      }\n    })\n    Prism.languages.insertBefore('java', 'class-name', {\n      annotation: {\n        pattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      generics: {\n        pattern:\n          /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n        inside: {\n          'class-name': className,\n          keyword: keywords,\n          punctuation: /[<>(),.:]/,\n          operator: /[?&|]/\n        }\n      },\n      namespace: {\n        pattern: RegExp(\n          /(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/.source.replace(\n            /<keyword>/g,\n            function () {\n              return keywords.source\n            }\n          )\n        ),\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      }\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorJava = require('./java.js')\nvar refractorJavadoclike = require('./javadoclike.js')\nmodule.exports = javadoc\njavadoc.displayName = 'javadoc'\njavadoc.aliases = []\nfunction javadoc(Prism) {\n  Prism.register(refractorJava)\n  Prism.register(refractorJavadoclike)\n  ;(function (Prism) {\n    var codeLinePattern = /(^(?:[\\t ]*(?:\\*\\s*)*))[^*\\s].*$/m\n    var memberReference = /#\\s*\\w+(?:\\s*\\([^()]*\\))?/.source\n    var reference =\n      /(?:\\b[a-zA-Z]\\w+\\s*\\.\\s*)*\\b[A-Z]\\w*(?:\\s*<mem>)?|<mem>/.source.replace(\n        /<mem>/g,\n        function () {\n          return memberReference\n        }\n      )\n    Prism.languages.javadoc = Prism.languages.extend('javadoclike', {})\n    Prism.languages.insertBefore('javadoc', 'keyword', {\n      reference: {\n        pattern: RegExp(\n          /(@(?:exception|link|linkplain|see|throws|value)\\s+(?:\\*\\s*)?)/\n            .source +\n            '(?:' +\n            reference +\n            ')'\n        ),\n        lookbehind: true,\n        inside: {\n          function: {\n            pattern: /(#\\s*)\\w+(?=\\s*\\()/,\n            lookbehind: true\n          },\n          field: {\n            pattern: /(#\\s*)\\w+/,\n            lookbehind: true\n          },\n          namespace: {\n            pattern: /\\b(?:[a-z]\\w*\\s*\\.\\s*)+/,\n            inside: {\n              punctuation: /\\./\n            }\n          },\n          'class-name': /\\b[A-Z]\\w*/,\n          keyword: Prism.languages.java.keyword,\n          punctuation: /[#()[\\],.]/\n        }\n      },\n      'class-name': {\n        // @param <T> the first generic type parameter\n        pattern: /(@param\\s+)<[A-Z]\\w*>/,\n        lookbehind: true,\n        inside: {\n          punctuation: /[.<>]/\n        }\n      },\n      'code-section': [\n        {\n          pattern:\n            /(\\{@code\\s+(?!\\s))(?:[^\\s{}]|\\s+(?![\\s}])|\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\})+(?=\\s*\\})/,\n          lookbehind: true,\n          inside: {\n            code: {\n              // there can't be any HTML inside of {@code} tags\n              pattern: codeLinePattern,\n              lookbehind: true,\n              inside: Prism.languages.java,\n              alias: 'language-java'\n            }\n          }\n        },\n        {\n          pattern:\n            /(<(code|pre|tt)>(?!<code>)\\s*)\\S(?:\\S|\\s+\\S)*?(?=\\s*<\\/\\2>)/,\n          lookbehind: true,\n          inside: {\n            line: {\n              pattern: codeLinePattern,\n              lookbehind: true,\n              inside: {\n                // highlight HTML tags and entities\n                tag: Prism.languages.markup.tag,\n                entity: Prism.languages.markup.entity,\n                code: {\n                  // everything else is Java code\n                  pattern: /.+/,\n                  inside: Prism.languages.java,\n                  alias: 'language-java'\n                }\n              }\n            }\n          }\n        }\n      ],\n      tag: Prism.languages.markup.tag,\n      entity: Prism.languages.markup.entity\n    })\n    Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc)\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = javadoclike\njavadoclike.displayName = 'javadoclike'\njavadoclike.aliases = []\nfunction javadoclike(Prism) {\n  ;(function (Prism) {\n    var javaDocLike = (Prism.languages.javadoclike = {\n      parameter: {\n        pattern:\n          /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*@(?:arg|arguments|param)\\s+)\\w+/m,\n        lookbehind: true\n      },\n      keyword: {\n        // keywords are the first word in a line preceded be an `@` or surrounded by curly braces.\n        // @word, {@word}\n        pattern: /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*|\\{)@[a-z][a-zA-Z-]+\\b/m,\n        lookbehind: true\n      },\n      punctuation: /[{}]/\n    })\n    /**\n     * Adds doc comment support to the given language and calls a given callback on each doc comment pattern.\n     *\n     * @param {string} lang the language add doc comment support to.\n     * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument.\n     */\n    function docCommentSupport(lang, callback) {\n      var tokenName = 'doc-comment'\n      var grammar = Prism.languages[lang]\n      if (!grammar) {\n        return\n      }\n      var token = grammar[tokenName]\n      if (!token) {\n        // add doc comment: /** */\n        var definition = {}\n        definition[tokenName] = {\n          pattern: /(^|[^\\\\])\\/\\*\\*[^/][\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          alias: 'comment'\n        }\n        grammar = Prism.languages.insertBefore(lang, 'comment', definition)\n        token = grammar[tokenName]\n      }\n      if (token instanceof RegExp) {\n        // convert regex to object\n        token = grammar[tokenName] = {\n          pattern: token\n        }\n      }\n      if (Array.isArray(token)) {\n        for (var i = 0, l = token.length; i < l; i++) {\n          if (token[i] instanceof RegExp) {\n            token[i] = {\n              pattern: token[i]\n            }\n          }\n          callback(token[i])\n        }\n      } else {\n        callback(token)\n      }\n    }\n    /**\n     * Adds doc-comment support to the given languages for the given documentation language.\n     *\n     * @param {string[]|string} languages\n     * @param {Object} docLanguage\n     */\n    function addSupport(languages, docLanguage) {\n      if (typeof languages === 'string') {\n        languages = [languages]\n      }\n      languages.forEach(function (lang) {\n        docCommentSupport(lang, function (pattern) {\n          if (!pattern.inside) {\n            pattern.inside = {}\n          }\n          pattern.inside.rest = docLanguage\n        })\n      })\n    }\n    Object.defineProperty(javaDocLike, 'addSupport', {\n      value: addSupport\n    })\n    javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike)\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = javascript\njavascript.displayName = 'javascript'\njavascript.aliases = ['js']\nfunction javascript(Prism) {\n  Prism.languages.javascript = Prism.languages.extend('clike', {\n    'class-name': [\n      Prism.languages.clike['class-name'],\n      {\n        pattern:\n          /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n        lookbehind: true\n      }\n    ],\n    keyword: [\n      {\n        pattern: /((?:^|\\})\\s*)catch\\b/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n        lookbehind: true\n      }\n    ],\n    // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n    function:\n      /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n    number: {\n      pattern: RegExp(\n        /(^|[^\\w$])/.source +\n          '(?:' + // constant\n          (/NaN|Infinity/.source +\n            '|' + // binary integer\n            /0[bB][01]+(?:_[01]+)*n?/.source +\n            '|' + // octal integer\n            /0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n            '|' + // hexadecimal integer\n            /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n            '|' + // decimal bigint\n            /\\d+(?:_\\d+)*n/.source +\n            '|' + // decimal number (integer or float) but no bigint\n            /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/\n              .source) +\n          ')' +\n          /(?![\\w$])/.source\n      ),\n      lookbehind: true\n    },\n    operator:\n      /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n  })\n  Prism.languages.javascript['class-name'][0].pattern =\n    /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/\n  Prism.languages.insertBefore('javascript', 'keyword', {\n    regex: {\n      // eslint-disable-next-line regexp/no-dupe-characters-character-class\n      pattern:\n        /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        'regex-source': {\n          pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n          lookbehind: true,\n          alias: 'language-regex',\n          inside: Prism.languages.regex\n        },\n        'regex-delimiter': /^\\/|\\/$/,\n        'regex-flags': /^[a-z]+$/\n      }\n    },\n    // This must be declared before keyword because we use \"function\" inside the look-forward\n    'function-variable': {\n      pattern:\n        /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n      alias: 'function'\n    },\n    parameter: [\n      {\n        pattern:\n          /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      {\n        pattern:\n          /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      {\n        pattern:\n          /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      {\n        pattern:\n          /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      }\n    ],\n    constant: /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n  })\n  Prism.languages.insertBefore('javascript', 'string', {\n    hashbang: {\n      pattern: /^#!.*/,\n      greedy: true,\n      alias: 'comment'\n    },\n    'template-string': {\n      pattern:\n        /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n      greedy: true,\n      inside: {\n        'template-punctuation': {\n          pattern: /^`|`$/,\n          alias: 'string'\n        },\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'punctuation'\n            },\n            rest: Prism.languages.javascript\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    'string-property': {\n      pattern:\n        /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    }\n  })\n  Prism.languages.insertBefore('javascript', 'operator', {\n    'literal-property': {\n      pattern:\n        /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n      lookbehind: true,\n      alias: 'property'\n    }\n  })\n  if (Prism.languages.markup) {\n    Prism.languages.markup.tag.addInlined('script', 'javascript') // add attribute support for all DOM events.\n    // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n    Prism.languages.markup.tag.addAttribute(\n      /on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/\n        .source,\n      'javascript'\n    )\n  }\n  Prism.languages.js = Prism.languages.javascript\n}\n","'use strict'\n\nmodule.exports = javastacktrace\njavastacktrace.displayName = 'javastacktrace'\njavastacktrace.aliases = []\nfunction javastacktrace(Prism) {\n  // Specification:\n  // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Throwable.html#printStackTrace()\n  Prism.languages.javastacktrace = {\n    // java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]\n    // Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]\n    // Caused by: com.example.myproject.MyProjectServletException\n    // Caused by: MidLevelException: LowLevelException\n    // Suppressed: Resource$CloseFailException: Resource ID = 0\n    summary: {\n      pattern:\n        /^([\\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread \"[^\"]*\")[\\t ]+)?[\\w$.]+(?::.*)?$/m,\n      lookbehind: true,\n      inside: {\n        keyword: {\n          pattern:\n            /^([\\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,\n          lookbehind: true\n        },\n        // the current thread if the summary starts with 'Exception in thread'\n        string: {\n          pattern: /^(\\s*)\"[^\"]*\"/,\n          lookbehind: true\n        },\n        exceptions: {\n          pattern: /^(:?\\s*)[\\w$.]+(?=:|$)/,\n          lookbehind: true,\n          inside: {\n            'class-name': /[\\w$]+$/,\n            namespace: /\\b[a-z]\\w*\\b/,\n            punctuation: /\\./\n          }\n        },\n        message: {\n          pattern: /(:\\s*)\\S.*/,\n          lookbehind: true,\n          alias: 'string'\n        },\n        punctuation: /:/\n      }\n    },\n    // at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)\n    // at org.hsqldb.jdbc.Util.throwError(Unknown Source) here could be some notes\n    // at java.base/java.lang.Class.forName0(Native Method)\n    // at Util.<init>(Unknown Source)\n    // at com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)\n    // at com.foo.loader//com.foo.bar.App.run(App.java:12)\n    // at acme@2.1/org.acme.Lib.test(Lib.java:80)\n    // at MyClass.mash(MyClass.java:9)\n    //\n    // More information:\n    // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/StackTraceElement.html#toString()\n    //\n    // A valid Java module name is defined as:\n    //   \"A module name consists of one or more Java identifiers (§3.8) separated by \".\" tokens.\"\n    // https://docs.oracle.com/javase/specs/jls/se9/html/jls-6.html#jls-ModuleName\n    //\n    // A Java module version is defined by this class:\n    // https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleDescriptor.Version.html\n    // This is the implementation of the `parse` method in JDK13:\n    // https://github.com/matcdac/jdk/blob/2305df71d1b7710266ae0956d73927a225132c0f/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java#L1108\n    // However, to keep this simple, a version will be matched by the pattern /@[\\w$.+-]*/.\n    'stack-frame': {\n      pattern: /^([\\t ]*)at (?:[\\w$./]|@[\\w$.+-]*\\/)+(?:<init>)?\\([^()]*\\)/m,\n      lookbehind: true,\n      inside: {\n        keyword: {\n          pattern: /^(\\s*)at(?= )/,\n          lookbehind: true\n        },\n        source: [\n          // (Main.java:15)\n          // (Main.scala:15)\n          {\n            pattern: /(\\()\\w+\\.\\w+:\\d+(?=\\))/,\n            lookbehind: true,\n            inside: {\n              file: /^\\w+\\.\\w+/,\n              punctuation: /:/,\n              'line-number': {\n                pattern: /\\b\\d+\\b/,\n                alias: 'number'\n              }\n            }\n          }, // (Unknown Source)\n          // (Native Method)\n          // (...something...)\n          {\n            pattern: /(\\()[^()]*(?=\\))/,\n            lookbehind: true,\n            inside: {\n              keyword: /^(?:Native Method|Unknown Source)$/\n            }\n          }\n        ],\n        'class-name': /[\\w$]+(?=\\.(?:<init>|[\\w$]+)\\()/,\n        function: /(?:<init>|[\\w$]+)(?=\\()/,\n        'class-loader': {\n          pattern: /(\\s)[a-z]\\w*(?:\\.[a-z]\\w*)*(?=\\/[\\w@$.]*\\/)/,\n          lookbehind: true,\n          alias: 'namespace',\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        module: {\n          pattern: /([\\s/])[a-z]\\w*(?:\\.[a-z]\\w*)*(?:@[\\w$.+-]*)?(?=\\/)/,\n          lookbehind: true,\n          inside: {\n            version: {\n              pattern: /(@)[\\s\\S]+/,\n              lookbehind: true,\n              alias: 'number'\n            },\n            punctuation: /[@.]/\n          }\n        },\n        namespace: {\n          pattern: /(?:\\b[a-z]\\w*\\.)+/,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        punctuation: /[()/.]/\n      }\n    },\n    // ... 32 more\n    // ... 32 common frames omitted\n    more: {\n      pattern: /^([\\t ]*)\\.{3} \\d+ [a-z]+(?: [a-z]+)*/m,\n      lookbehind: true,\n      inside: {\n        punctuation: /\\.{3}/,\n        number: /\\d+/,\n        keyword: /\\b[a-z]+(?: [a-z]+)*\\b/\n      }\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = jexl\njexl.displayName = 'jexl'\njexl.aliases = []\nfunction jexl(Prism) {\n  Prism.languages.jexl = {\n    string: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n    transform: {\n      pattern:\n        /(\\|\\s*)[a-zA-Zа-яА-Я_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][\\wа-яА-Я\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*/,\n      alias: 'function',\n      lookbehind: true\n    },\n    function:\n      /[a-zA-Zа-яА-Я_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][\\wа-яА-Я\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*\\s*(?=\\()/,\n    number: /\\b\\d+(?:\\.\\d+)?\\b|\\B\\.\\d+\\b/,\n    operator: /[<>!]=?|-|\\+|&&|==|\\|\\|?|\\/\\/?|[?:*^%]/,\n    boolean: /\\b(?:false|true)\\b/,\n    keyword: /\\bin\\b/,\n    punctuation: /[{}[\\](),.]/\n  }\n}\n","'use strict'\n\nmodule.exports = jolie\njolie.displayName = 'jolie'\njolie.aliases = []\nfunction jolie(Prism) {\n  Prism.languages.jolie = Prism.languages.extend('clike', {\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /((?:\\b(?:as|courier|embed|in|inputPort|outputPort|service)\\b|@)[ \\t]*)\\w+/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:as|cH|comp|concurrent|constants|courier|cset|csets|default|define|else|embed|embedded|execution|exit|extender|for|foreach|forward|from|global|if|import|in|include|init|inputPort|install|instanceof|interface|is_defined|linkIn|linkOut|main|new|nullProcess|outputPort|over|private|provide|public|scope|sequential|service|single|spawn|synchronized|this|throw|throws|type|undef|until|while|with)\\b/,\n    function: /\\b[a-z_]\\w*(?=[ \\t]*[@(])/i,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?l?/i,\n    operator: /-[-=>]?|\\+[+=]?|<[<=]?|[>=*!]=?|&&|\\|\\||[?\\/%^@|]/,\n    punctuation: /[()[\\]{},;.:]/,\n    builtin:\n      /\\b(?:Byte|any|bool|char|double|enum|float|int|length|long|ranges|regex|string|undefined|void)\\b/\n  })\n  Prism.languages.insertBefore('jolie', 'keyword', {\n    aggregates: {\n      pattern:\n        /(\\bAggregates\\s*:\\s*)(?:\\w+(?:\\s+with\\s+\\w+)?\\s*,\\s*)*\\w+(?:\\s+with\\s+\\w+)?/,\n      lookbehind: true,\n      inside: {\n        keyword: /\\bwith\\b/,\n        'class-name': /\\w+/,\n        punctuation: /,/\n      }\n    },\n    redirects: {\n      pattern:\n        /(\\bRedirects\\s*:\\s*)(?:\\w+\\s*=>\\s*\\w+\\s*,\\s*)*(?:\\w+\\s*=>\\s*\\w+)/,\n      lookbehind: true,\n      inside: {\n        punctuation: /,/,\n        'class-name': /\\w+/,\n        operator: /=>/\n      }\n    },\n    property: {\n      pattern:\n        /\\b(?:Aggregates|[Ii]nterfaces|Java|Javascript|Jolie|[Ll]ocation|OneWay|[Pp]rotocol|Redirects|RequestResponse)\\b(?=[ \\t]*:)/\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = jq\njq.displayName = 'jq'\njq.aliases = []\nfunction jq(Prism) {\n  ;(function (Prism) {\n    var interpolation = /\\\\\\((?:[^()]|\\([^()]*\\))*\\)/.source\n    var string = RegExp(\n      /(^|[^\\\\])\"(?:[^\"\\r\\n\\\\]|\\\\[^\\r\\n(]|__)*\"/.source.replace(\n        /__/g,\n        function () {\n          return interpolation\n        }\n      )\n    )\n    var stringInterpolation = {\n      interpolation: {\n        pattern: RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + interpolation),\n        lookbehind: true,\n        inside: {\n          content: {\n            pattern: /^(\\\\\\()[\\s\\S]+(?=\\)$)/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          punctuation: /^\\\\\\(|\\)$/\n        }\n      }\n    }\n    var jq = (Prism.languages.jq = {\n      comment: /#.*/,\n      property: {\n        pattern: RegExp(string.source + /(?=\\s*:(?!:))/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: stringInterpolation\n      },\n      string: {\n        pattern: string,\n        lookbehind: true,\n        greedy: true,\n        inside: stringInterpolation\n      },\n      function: {\n        pattern: /(\\bdef\\s+)[a-z_]\\w+/i,\n        lookbehind: true\n      },\n      variable: /\\B\\$\\w+/,\n      'property-literal': {\n        pattern: /\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n        alias: 'property'\n      },\n      keyword:\n        /\\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      number: /(?:\\b\\d+\\.|\\B\\.)?\\b\\d+(?:[eE][+-]?\\d+)?\\b/,\n      operator: [\n        {\n          pattern: /\\|=?/,\n          alias: 'pipe'\n        },\n        /\\.\\.|[!=<>]?=|\\?\\/\\/|\\/\\/=?|[-+*/%]=?|[<>?]|\\b(?:and|not|or)\\b/\n      ],\n      'c-style-function': {\n        pattern: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n        alias: 'function'\n      },\n      punctuation: /::|[()\\[\\]{},:;]|\\.(?=\\s*[\\[\\w$])/,\n      dot: {\n        pattern: /\\./,\n        alias: 'important'\n      }\n    })\n    stringInterpolation.interpolation.inside.content.inside = jq\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = jsExtras\njsExtras.displayName = 'jsExtras'\njsExtras.aliases = []\nfunction jsExtras(Prism) {\n  ;(function (Prism) {\n    Prism.languages.insertBefore('javascript', 'function-variable', {\n      'method-variable': {\n        pattern: RegExp(\n          '(\\\\.\\\\s*)' +\n            Prism.languages.javascript['function-variable'].pattern.source\n        ),\n        lookbehind: true,\n        alias: ['function-variable', 'method', 'function', 'property-access']\n      }\n    })\n    Prism.languages.insertBefore('javascript', 'function', {\n      method: {\n        pattern: RegExp(\n          '(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source\n        ),\n        lookbehind: true,\n        alias: ['function', 'property-access']\n      }\n    })\n    Prism.languages.insertBefore('javascript', 'constant', {\n      'known-class-name': [\n        {\n          // standard built-ins\n          // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n          pattern:\n            /\\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\\b/,\n          alias: 'class-name'\n        },\n        {\n          // errors\n          pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n          alias: 'class-name'\n        }\n      ]\n    })\n    /**\n     * Replaces the `<ID>` placeholder in the given pattern with a pattern for general JS identifiers.\n     *\n     * @param {string} source\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function withId(source, flags) {\n      return RegExp(\n        source.replace(/<ID>/g, function () {\n          return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source\n        }),\n        flags\n      )\n    }\n    Prism.languages.insertBefore('javascript', 'keyword', {\n      imports: {\n        // https://tc39.es/ecma262/#sec-imports\n        pattern: withId(\n          /(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/\n            .source\n        ),\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      exports: {\n        // https://tc39.es/ecma262/#sec-exports\n        pattern: withId(\n          /(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/\n            .source\n        ),\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      }\n    })\n    Prism.languages.javascript['keyword'].unshift(\n      {\n        pattern: /\\b(?:as|default|export|from|import)\\b/,\n        alias: 'module'\n      },\n      {\n        pattern:\n          /\\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\\b/,\n        alias: 'control-flow'\n      },\n      {\n        pattern: /\\bnull\\b/,\n        alias: ['null', 'nil']\n      },\n      {\n        pattern: /\\bundefined\\b/,\n        alias: 'nil'\n      }\n    )\n    Prism.languages.insertBefore('javascript', 'operator', {\n      spread: {\n        pattern: /\\.{3}/,\n        alias: 'operator'\n      },\n      arrow: {\n        pattern: /=>/,\n        alias: 'operator'\n      }\n    })\n    Prism.languages.insertBefore('javascript', 'punctuation', {\n      'property-access': {\n        pattern: withId(/(\\.\\s*)#?<ID>/.source),\n        lookbehind: true\n      },\n      'maybe-class-name': {\n        pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n        lookbehind: true\n      },\n      dom: {\n        // this contains only a few commonly used DOM variables\n        pattern:\n          /\\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\\b/,\n        alias: 'variable'\n      },\n      console: {\n        pattern: /\\bconsole(?=\\s*\\.)/,\n        alias: 'class-name'\n      }\n    }) // add 'maybe-class-name' to tokens which might be a class name\n    var maybeClassNameTokens = [\n      'function',\n      'function-variable',\n      'method',\n      'method-variable',\n      'property-access'\n    ]\n    for (var i = 0; i < maybeClassNameTokens.length; i++) {\n      var token = maybeClassNameTokens[i]\n      var value = Prism.languages.javascript[token] // convert regex to object\n      if (Prism.util.type(value) === 'RegExp') {\n        value = Prism.languages.javascript[token] = {\n          pattern: value\n        }\n      } // keep in mind that we don't support arrays\n      var inside = value.inside || {}\n      value.inside = inside\n      inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = jsTemplates\njsTemplates.displayName = 'jsTemplates'\njsTemplates.aliases = []\nfunction jsTemplates(Prism) {\n  ;(function (Prism) {\n    var templateString = Prism.languages.javascript['template-string'] // see the pattern in prism-javascript.js\n    var templateLiteralPattern = templateString.pattern.source\n    var interpolationObject = templateString.inside['interpolation']\n    var interpolationPunctuationObject =\n      interpolationObject.inside['interpolation-punctuation']\n    var interpolationPattern = interpolationObject.pattern.source\n    /**\n     * Creates a new pattern to match a template string with a special tag.\n     *\n     * This will return `undefined` if there is no grammar with the given language id.\n     *\n     * @param {string} language The language id of the embedded language. E.g. `markdown`.\n     * @param {string} tag The regex pattern to match the tag.\n     * @returns {object | undefined}\n     * @example\n     * createTemplate('css', /\\bcss/.source);\n     */\n    function createTemplate(language, tag) {\n      if (!Prism.languages[language]) {\n        return undefined\n      }\n      return {\n        pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          'template-punctuation': {\n            pattern: /^`|`$/,\n            alias: 'string'\n          },\n          'embedded-code': {\n            pattern: /[\\s\\S]+/,\n            alias: language\n          }\n        }\n      }\n    }\n    Prism.languages.javascript['template-string'] = [\n      // styled-jsx:\n      //   css`a { color: #25F; }`\n      // styled-components:\n      //   styled.h1`color: red;`\n      createTemplate(\n        'css',\n        /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/\n          .source\n      ), // html`<p></p>`\n      // div.innerHTML = `<p></p>`\n      createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source), // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n      createTemplate('svg', /\\bsvg/.source), // md`# h1`, markdown`## h2`\n      createTemplate('markdown', /\\b(?:markdown|md)/.source), // gql`...`, graphql`...`, graphql.experimental`...`\n      createTemplate(\n        'graphql',\n        /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source\n      ), // sql`...`\n      createTemplate('sql', /\\bsql/.source), // vanilla template string\n      templateString\n    ].filter(Boolean)\n    /**\n     * Returns a specific placeholder literal for the given language.\n     *\n     * @param {number} counter\n     * @param {string} language\n     * @returns {string}\n     */\n    function getPlaceholder(counter, language) {\n      return '___' + language.toUpperCase() + '_' + counter + '___'\n    }\n    /**\n     * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n     *\n     * @param {string} code\n     * @param {any} grammar\n     * @param {string} language\n     * @returns {(string|Token)[]}\n     */\n    function tokenizeWithHooks(code, grammar, language) {\n      var env = {\n        code: code,\n        grammar: grammar,\n        language: language\n      }\n      Prism.hooks.run('before-tokenize', env)\n      env.tokens = Prism.tokenize(env.code, env.grammar)\n      Prism.hooks.run('after-tokenize', env)\n      return env.tokens\n    }\n    /**\n     * Returns the token of the given JavaScript interpolation expression.\n     *\n     * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n     * @returns {Token}\n     */\n    function tokenizeInterpolationExpression(expression) {\n      var tempGrammar = {}\n      tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject\n      /** @type {Array} */\n      var tokens = Prism.tokenize(expression, tempGrammar)\n      if (tokens.length === 3) {\n        /**\n         * The token array will look like this\n         * [\n         *     [\"interpolation-punctuation\", \"${\"]\n         *     \"...\" // JavaScript expression of the interpolation\n         *     [\"interpolation-punctuation\", \"}\"]\n         * ]\n         */\n        var args = [1, 1]\n        args.push.apply(\n          args,\n          tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript')\n        )\n        tokens.splice.apply(tokens, args)\n      }\n      return new Prism.Token(\n        'interpolation',\n        tokens,\n        interpolationObject.alias,\n        expression\n      )\n    }\n    /**\n     * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n     *\n     * This function has 3 phases:\n     *\n     * 1. Replace all JavaScript interpolation expression with a placeholder.\n     *    The placeholder will have the syntax of a identify of the target language.\n     * 2. Tokenize the code with placeholders.\n     * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n     *    The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n     *    tokenized as two tokens by the grammar of the embedded language.\n     *\n     * @param {string} code\n     * @param {object} grammar\n     * @param {string} language\n     * @returns {Token}\n     */\n    function tokenizeEmbedded(code, grammar, language) {\n      // 1. First filter out all interpolations\n      // because they might be escaped, we need a lookbehind, so we use Prism\n      /** @type {(Token|string)[]} */\n      var _tokens = Prism.tokenize(code, {\n        interpolation: {\n          pattern: RegExp(interpolationPattern),\n          lookbehind: true\n        }\n      }) // replace all interpolations with a placeholder which is not in the code already\n      var placeholderCounter = 0\n      /** @type {Object<string, string>} */\n      var placeholderMap = {}\n      var embeddedCode = _tokens\n        .map(function (token) {\n          if (typeof token === 'string') {\n            return token\n          } else {\n            var interpolationExpression = token.content\n            var placeholder\n            while (\n              code.indexOf(\n                (placeholder = getPlaceholder(placeholderCounter++, language))\n              ) !== -1\n            ) {\n              /* noop */\n            }\n            placeholderMap[placeholder] = interpolationExpression\n            return placeholder\n          }\n        })\n        .join('') // 2. Tokenize the embedded code\n      var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language) // 3. Re-insert the interpolation\n      var placeholders = Object.keys(placeholderMap)\n      placeholderCounter = 0\n      /**\n       *\n       * @param {(Token|string)[]} tokens\n       * @returns {void}\n       */\n      function walkTokens(tokens) {\n        for (var i = 0; i < tokens.length; i++) {\n          if (placeholderCounter >= placeholders.length) {\n            return\n          }\n          var token = tokens[i]\n          if (typeof token === 'string' || typeof token.content === 'string') {\n            var placeholder = placeholders[placeholderCounter]\n            var s =\n              typeof token === 'string'\n                ? token\n                : /** @type {string} */\n                  token.content\n            var index = s.indexOf(placeholder)\n            if (index !== -1) {\n              ++placeholderCounter\n              var before = s.substring(0, index)\n              var middle = tokenizeInterpolationExpression(\n                placeholderMap[placeholder]\n              )\n              var after = s.substring(index + placeholder.length)\n              var replacement = []\n              if (before) {\n                replacement.push(before)\n              }\n              replacement.push(middle)\n              if (after) {\n                var afterTokens = [after]\n                walkTokens(afterTokens)\n                replacement.push.apply(replacement, afterTokens)\n              }\n              if (typeof token === 'string') {\n                tokens.splice.apply(tokens, [i, 1].concat(replacement))\n                i += replacement.length - 1\n              } else {\n                token.content = replacement\n              }\n            }\n          } else {\n            var content = token.content\n            if (Array.isArray(content)) {\n              walkTokens(content)\n            } else {\n              walkTokens([content])\n            }\n          }\n        }\n      }\n      walkTokens(embeddedTokens)\n      return new Prism.Token(\n        language,\n        embeddedTokens,\n        'language-' + language,\n        code\n      )\n    }\n    /**\n     * The languages for which JS templating will handle tagged template literals.\n     *\n     * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n     */\n    var supportedLanguages = {\n      javascript: true,\n      js: true,\n      typescript: true,\n      ts: true,\n      jsx: true,\n      tsx: true\n    }\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (!(env.language in supportedLanguages)) {\n        return\n      }\n      /**\n       * Finds and tokenizes all template strings with an embedded languages.\n       *\n       * @param {(Token | string)[]} tokens\n       * @returns {void}\n       */\n      function findTemplateStrings(tokens) {\n        for (var i = 0, l = tokens.length; i < l; i++) {\n          var token = tokens[i]\n          if (typeof token === 'string') {\n            continue\n          }\n          var content = token.content\n          if (!Array.isArray(content)) {\n            if (typeof content !== 'string') {\n              findTemplateStrings([content])\n            }\n            continue\n          }\n          if (token.type === 'template-string') {\n            /**\n             * A JavaScript template-string token will look like this:\n             *\n             * [\"template-string\", [\n             *     [\"template-punctuation\", \"`\"],\n             *     (\n             *         An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n             *         or\n             *         [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n             *                                  It also has an alias which is the language of the embedded code.\n             *     ),\n             *     [\"template-punctuation\", \"`\"]\n             * ]]\n             */\n            var embedded = content[1]\n            if (\n              content.length === 3 &&\n              typeof embedded !== 'string' &&\n              embedded.type === 'embedded-code'\n            ) {\n              // get string content\n              var code = stringContent(embedded)\n              var alias = embedded.alias\n              var language = Array.isArray(alias) ? alias[0] : alias\n              var grammar = Prism.languages[language]\n              if (!grammar) {\n                // the embedded language isn't registered.\n                continue\n              }\n              content[1] = tokenizeEmbedded(code, grammar, language)\n            }\n          } else {\n            findTemplateStrings(content)\n          }\n        }\n      }\n      findTemplateStrings(env.tokens)\n    })\n    /**\n     * Returns the string content of a token or token stream.\n     *\n     * @param {string | Token | (string | Token)[]} value\n     * @returns {string}\n     */\n    function stringContent(value) {\n      if (typeof value === 'string') {\n        return value\n      } else if (Array.isArray(value)) {\n        return value.map(stringContent).join('')\n      } else {\n        return stringContent(value.content)\n      }\n    }\n  })(Prism)\n}\n","'use strict'\nvar refractorJavadoclike = require('./javadoclike.js')\nvar refractorTypescript = require('./typescript.js')\nmodule.exports = jsdoc\njsdoc.displayName = 'jsdoc'\njsdoc.aliases = []\nfunction jsdoc(Prism) {\n  Prism.register(refractorJavadoclike)\n  Prism.register(refractorTypescript)\n  ;(function (Prism) {\n    var javascript = Prism.languages.javascript\n    var type = /\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})+\\}/.source\n    var parameterPrefix =\n      '(@(?:arg|argument|param|property)\\\\s+(?:' + type + '\\\\s+)?)'\n    Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {\n      parameter: {\n        // @param {string} foo - foo bar\n        pattern: RegExp(\n          parameterPrefix + /(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?=\\s|$)/.source\n        ),\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      }\n    })\n    Prism.languages.insertBefore('jsdoc', 'keyword', {\n      'optional-parameter': {\n        // @param {string} [baz.foo=\"bar\"] foo bar\n        pattern: RegExp(\n          parameterPrefix +\n            /\\[(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?:=[^[\\]]+)?\\](?=\\s|$)/.source\n        ),\n        lookbehind: true,\n        inside: {\n          parameter: {\n            pattern: /(^\\[)[$\\w\\xA0-\\uFFFF\\.]+/,\n            lookbehind: true,\n            inside: {\n              punctuation: /\\./\n            }\n          },\n          code: {\n            pattern: /(=)[\\s\\S]*(?=\\]$)/,\n            lookbehind: true,\n            inside: javascript,\n            alias: 'language-javascript'\n          },\n          punctuation: /[=[\\]]/\n        }\n      },\n      'class-name': [\n        {\n          pattern: RegExp(\n            /(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:<TYPE>\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*/.source.replace(\n              /<TYPE>/g,\n              function () {\n                return type\n              }\n            )\n          ),\n          lookbehind: true,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        {\n          pattern: RegExp('(@[a-z]+\\\\s+)' + type),\n          lookbehind: true,\n          inside: {\n            string: javascript.string,\n            number: javascript.number,\n            boolean: javascript.boolean,\n            keyword: Prism.languages.typescript.keyword,\n            operator: /=>|\\.\\.\\.|[&|?:*]/,\n            punctuation: /[.,;=<>{}()[\\]]/\n          }\n        }\n      ],\n      example: {\n        pattern:\n          /(@example\\s+(?!\\s))(?:[^@\\s]|\\s+(?!\\s))+?(?=\\s*(?:\\*\\s*)?(?:@\\w|\\*\\/))/,\n        lookbehind: true,\n        inside: {\n          code: {\n            pattern: /^([\\t ]*(?:\\*\\s*)?)\\S.*$/m,\n            lookbehind: true,\n            inside: javascript,\n            alias: 'language-javascript'\n          }\n        }\n      }\n    })\n    Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc)\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = json\njson.displayName = 'json'\njson.aliases = ['webmanifest']\nfunction json(Prism) {\n  // https://www.json.org/json-en.html\n  Prism.languages.json = {\n    property: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n      greedy: true\n    },\n    number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n    punctuation: /[{}[\\],]/,\n    operator: /:/,\n    boolean: /\\b(?:false|true)\\b/,\n    null: {\n      pattern: /\\bnull\\b/,\n      alias: 'keyword'\n    }\n  }\n  Prism.languages.webmanifest = Prism.languages.json\n}\n","'use strict'\nvar refractorJson = require('./json.js')\nmodule.exports = json5\njson5.displayName = 'json5'\njson5.aliases = []\nfunction json5(Prism) {\n  Prism.register(refractorJson)\n  ;(function (Prism) {\n    var string = /(\"|')(?:\\\\(?:\\r\\n?|\\n|.)|(?!\\1)[^\\\\\\r\\n])*\\1/\n    Prism.languages.json5 = Prism.languages.extend('json', {\n      property: [\n        {\n          pattern: RegExp(string.source + '(?=\\\\s*:)'),\n          greedy: true\n        },\n        {\n          pattern:\n            /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/,\n          alias: 'unquoted'\n        }\n      ],\n      string: {\n        pattern: string,\n        greedy: true\n      },\n      number:\n        /[+-]?\\b(?:NaN|Infinity|0x[a-fA-F\\d]+)\\b|[+-]?(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorJson = require('./json.js')\nmodule.exports = jsonp\njsonp.displayName = 'jsonp'\njsonp.aliases = []\nfunction jsonp(Prism) {\n  Prism.register(refractorJson)\n  Prism.languages.jsonp = Prism.languages.extend('json', {\n    punctuation: /[{}[\\]();,.]/\n  })\n  Prism.languages.insertBefore('jsonp', 'punctuation', {\n    function: /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*\\()/\n  })\n}\n","'use strict'\n\nmodule.exports = jsstacktrace\njsstacktrace.displayName = 'jsstacktrace'\njsstacktrace.aliases = []\nfunction jsstacktrace(Prism) {\n  Prism.languages.jsstacktrace = {\n    'error-message': {\n      pattern: /^\\S.*/m,\n      alias: 'string'\n    },\n    'stack-frame': {\n      pattern: /(^[ \\t]+)at[ \\t].*/m,\n      lookbehind: true,\n      inside: {\n        'not-my-code': {\n          pattern:\n            /^at[ \\t]+(?!\\s)(?:node\\.js|<unknown>|.*(?:node_modules|\\(<anonymous>\\)|\\(<unknown>|<anonymous>$|\\(internal\\/|\\(node\\.js)).*/m,\n          alias: 'comment'\n        },\n        filename: {\n          pattern: /(\\bat\\s+(?!\\s)|\\()(?:[a-zA-Z]:)?[^():]+(?=:)/,\n          lookbehind: true,\n          alias: 'url'\n        },\n        function: {\n          pattern:\n            /(\\bat\\s+(?:new\\s+)?)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF<][.$\\w\\xA0-\\uFFFF<>]*/,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        punctuation: /[()]/,\n        keyword: /\\b(?:at|new)\\b/,\n        alias: {\n          pattern: /\\[(?:as\\s+)?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\]/,\n          alias: 'variable'\n        },\n        'line-number': {\n          pattern: /:\\d+(?::\\d+)?\\b/,\n          alias: 'number',\n          inside: {\n            punctuation: /:/\n          }\n        }\n      }\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = jsx\njsx.displayName = 'jsx'\njsx.aliases = []\nfunction jsx(Prism) {\n  ;(function (Prism) {\n    var javascript = Prism.util.clone(Prism.languages.javascript)\n    var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source\n    var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source\n    var spread = /(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})/.source\n    /**\n     * @param {string} source\n     * @param {string} [flags]\n     */\n    function re(source, flags) {\n      source = source\n        .replace(/<S>/g, function () {\n          return space\n        })\n        .replace(/<BRACES>/g, function () {\n          return braces\n        })\n        .replace(/<SPREAD>/g, function () {\n          return spread\n        })\n      return RegExp(source, flags)\n    }\n    spread = re(spread).source\n    Prism.languages.jsx = Prism.languages.extend('markup', javascript)\n    Prism.languages.jsx.tag.pattern = re(\n      /<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>/\n        .source\n    )\n    Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/\n    Prism.languages.jsx.tag.inside['attr-value'].pattern =\n      /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/\n    Prism.languages.jsx.tag.inside['tag'].inside['class-name'] =\n      /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/\n    Prism.languages.jsx.tag.inside['comment'] = javascript['comment']\n    Prism.languages.insertBefore(\n      'inside',\n      'attr-name',\n      {\n        spread: {\n          pattern: re(/<SPREAD>/.source),\n          inside: Prism.languages.jsx\n        }\n      },\n      Prism.languages.jsx.tag\n    )\n    Prism.languages.insertBefore(\n      'inside',\n      'special-attr',\n      {\n        script: {\n          // Allow for two levels of nesting\n          pattern: re(/=<BRACES>/.source),\n          alias: 'language-javascript',\n          inside: {\n            'script-punctuation': {\n              pattern: /^=(?=\\{)/,\n              alias: 'punctuation'\n            },\n            rest: Prism.languages.jsx\n          }\n        }\n      },\n      Prism.languages.jsx.tag\n    ) // The following will handle plain text inside tags\n    var stringifyToken = function (token) {\n      if (!token) {\n        return ''\n      }\n      if (typeof token === 'string') {\n        return token\n      }\n      if (typeof token.content === 'string') {\n        return token.content\n      }\n      return token.content.map(stringifyToken).join('')\n    }\n    var walkTokens = function (tokens) {\n      var openedTags = []\n      for (var i = 0; i < tokens.length; i++) {\n        var token = tokens[i]\n        var notTagNorBrace = false\n        if (typeof token !== 'string') {\n          if (\n            token.type === 'tag' &&\n            token.content[0] &&\n            token.content[0].type === 'tag'\n          ) {\n            // We found a tag, now find its kind\n            if (token.content[0].content[0].content === '</') {\n              // Closing tag\n              if (\n                openedTags.length > 0 &&\n                openedTags[openedTags.length - 1].tagName ===\n                  stringifyToken(token.content[0].content[1])\n              ) {\n                // Pop matching opening tag\n                openedTags.pop()\n              }\n            } else {\n              if (token.content[token.content.length - 1].content === '/>') {\n                // Autoclosed tag, ignore\n              } else {\n                // Opening tag\n                openedTags.push({\n                  tagName: stringifyToken(token.content[0].content[1]),\n                  openedBraces: 0\n                })\n              }\n            }\n          } else if (\n            openedTags.length > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '{'\n          ) {\n            // Here we might have entered a JSX context inside a tag\n            openedTags[openedTags.length - 1].openedBraces++\n          } else if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '}'\n          ) {\n            // Here we might have left a JSX context inside a tag\n            openedTags[openedTags.length - 1].openedBraces--\n          } else {\n            notTagNorBrace = true\n          }\n        }\n        if (notTagNorBrace || typeof token === 'string') {\n          if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces === 0\n          ) {\n            // Here we are inside a tag, and not inside a JSX context.\n            // That's plain text: drop any tokens matched.\n            var plainText = stringifyToken(token) // And merge text with adjacent text\n            if (\n              i < tokens.length - 1 &&\n              (typeof tokens[i + 1] === 'string' ||\n                tokens[i + 1].type === 'plain-text')\n            ) {\n              plainText += stringifyToken(tokens[i + 1])\n              tokens.splice(i + 1, 1)\n            }\n            if (\n              i > 0 &&\n              (typeof tokens[i - 1] === 'string' ||\n                tokens[i - 1].type === 'plain-text')\n            ) {\n              plainText = stringifyToken(tokens[i - 1]) + plainText\n              tokens.splice(i - 1, 1)\n              i--\n            }\n            tokens[i] = new Prism.Token(\n              'plain-text',\n              plainText,\n              null,\n              plainText\n            )\n          }\n        }\n        if (token.content && typeof token.content !== 'string') {\n          walkTokens(token.content)\n        }\n      }\n    }\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (env.language !== 'jsx' && env.language !== 'tsx') {\n        return\n      }\n      walkTokens(env.tokens)\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = julia\njulia.displayName = 'julia'\njulia.aliases = []\nfunction julia(Prism) {\n  Prism.languages.julia = {\n    comment: {\n      // support one level of nested comments\n      // https://github.com/JuliaLang/julia/pull/6128\n      pattern:\n        /(^|[^\\\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,\n      lookbehind: true\n    },\n    regex: {\n      // https://docs.julialang.org/en/v1/manual/strings/#Regular-Expressions-1\n      pattern: /r\"(?:\\\\.|[^\"\\\\\\r\\n])*\"[imsx]{0,4}/,\n      greedy: true\n    },\n    string: {\n      // https://docs.julialang.org/en/v1/manual/strings/#String-Basics-1\n      // https://docs.julialang.org/en/v1/manual/strings/#non-standard-string-literals-1\n      // https://docs.julialang.org/en/v1/manual/running-external-programs/#Running-External-Programs-1\n      pattern:\n        /\"\"\"[\\s\\S]+?\"\"\"|(?:\\b\\w+)?\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`(?:[^\\\\`\\r\\n]|\\\\.)*`/,\n      greedy: true\n    },\n    char: {\n      // https://docs.julialang.org/en/v1/manual/strings/#man-characters-1\n      pattern: /(^|[^\\w'])'(?:\\\\[^\\r\\n][^'\\r\\n]*|[^\\\\\\r\\n])'/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number:\n      /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[box])?(?:[\\da-f]+(?:_[\\da-f]+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[efp][+-]?\\d+(?:_\\d+)*)?j?/i,\n    // https://docs.julialang.org/en/v1/manual/mathematical-operations/\n    // https://docs.julialang.org/en/v1/manual/mathematical-operations/#Operator-Precedence-and-Associativity-1\n    operator:\n      /&&|\\|\\||[-+*^%÷⊻&$\\\\]=?|\\/[\\/=]?|!=?=?|\\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥'√∛]/,\n    punctuation: /::?|[{}[\\]();,.?]/,\n    // https://docs.julialang.org/en/v1/base/numbers/#Base.im\n    constant: /\\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\\b|[πℯ]/\n  }\n}\n","'use strict'\n\nmodule.exports = keepalived\nkeepalived.displayName = 'keepalived'\nkeepalived.aliases = []\nfunction keepalived(Prism) {\n  Prism.languages.keepalived = {\n    comment: {\n      pattern: /[#!].*/,\n      greedy: true\n    },\n    string: {\n      pattern:\n        /(^|[^\\\\])(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/,\n      lookbehind: true,\n      greedy: true\n    },\n    // support IPv4, IPv6, subnet mask\n    ip: {\n      pattern: RegExp(\n        /\\b(?:(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){5}:(?:[\\da-f]{1,4}:)?[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){4}:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){3}:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){2}:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}<ipv4>|(?:[\\da-f]{1,4}:){0,5}:<ipv4>|::(?:[\\da-f]{1,4}:){0,5}<ipv4>|[\\da-f]{1,4}::(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4}|::(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:)(?:\\/\\d{1,3})?|<ipv4>(?:\\/\\d{1,2})?)\\b/.source.replace(\n          /<ipv4>/g,\n          function () {\n            return /(?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d))/\n              .source\n          }\n        ),\n        'i'\n      ),\n      alias: 'number'\n    },\n    // support *nix / Windows, directory / file\n    path: {\n      pattern:\n        /(\\s)\\/(?:[^\\/\\s]+\\/)*[^\\/\\s]*|\\b[a-zA-Z]:\\\\(?:[^\\\\\\s]+\\\\)*[^\\\\\\s]*/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    variable: /\\$\\{?\\w+\\}?/,\n    email: {\n      pattern: /[\\w-]+@[\\w-]+(?:\\.[\\w-]{2,3}){1,2}/,\n      alias: 'string'\n    },\n    'conditional-configuration': {\n      pattern: /@\\^?[\\w-]+/,\n      alias: 'variable'\n    },\n    operator: /=/,\n    property:\n      /\\b(?:BFD_CHECK|DNS_CHECK|FILE_CHECK|HTTP_GET|MISC_CHECK|NAME|PING_CHECK|SCRIPTS|SMTP_CHECK|SSL|SSL_GET|TCP_CHECK|UDP_CHECK|accept|advert_int|alpha|auth_pass|auth_type|authentication|bfd_cpu_affinity|bfd_instance|bfd_no_swap|bfd_priority|bfd_process_name|bfd_rlimit_rttime|bfd_rt_priority|bind_if|bind_port|bindto|ca|certificate|check_unicast_src|checker|checker_cpu_affinity|checker_log_all_failures|checker_no_swap|checker_priority|checker_rlimit_rttime|checker_rt_priority|child_wait_time|connect_ip|connect_port|connect_timeout|dbus_service_name|debug|default_interface|delay|delay_before_retry|delay_loop|digest|dont_track_primary|dynamic|dynamic_interfaces|enable_(?:dbus|script_security|sni|snmp_checker|snmp_rfc|snmp_rfcv2|snmp_rfcv3|snmp_vrrp|traps)|end|fall|fast_recovery|file|flag-[123]|fork_delay|full_command|fwmark|garp_group|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|global_defs|global_tracking|gna_interval|group|ha_suspend|hashed|helo_name|higher_prio_send_advert|hoplimit|http_protocol|hysteresis|idle_tx|include|inhibit_on_failure|init_fail|init_file|instance|interface|interfaces|interval|ip_family|ipvs_process_name|keepalived.conf|kernel_rx_buf_size|key|linkbeat_interfaces|linkbeat_use_polling|log_all_failures|log_unknown_vrids|lower_prio_no_advert|lthreshold|lvs_flush|lvs_flush_onstop|lvs_method|lvs_netlink_cmd_rcv_bufs|lvs_netlink_cmd_rcv_bufs_force|lvs_netlink_monitor_rcv_bufs|lvs_netlink_monitor_rcv_bufs_force|lvs_notify_fifo|lvs_notify_fifo_script|lvs_sched|lvs_sync_daemon|max_auto_priority|max_hops|mcast_src_ip|mh-fallback|mh-port|min_auto_priority_delay|min_rx|min_tx|misc_dynamic|misc_path|misc_timeout|multiplier|name|namespace_with_ipsets|native_ipv6|neighbor_ip|net_namespace|net_namespace_ipvs|nftables|nftables_counters|nftables_ifindex|nftables_priority|no_accept|no_checker_emails|no_email_faults|nopreempt|notification_email|notification_email_from|notify|notify_backup|notify_deleted|notify_down|notify_fault|notify_fifo|notify_fifo_script|notify_master|notify_master_rx_lower_pri|notify_priority_changes|notify_stop|notify_up|old_unicast_checksum|omega|ops|param_match|passive|password|path|persistence_engine|persistence_granularity|persistence_timeout|preempt|preempt_delay|priority|process|process_monitor_rcv_bufs|process_monitor_rcv_bufs_force|process_name|process_names|promote_secondaries|protocol|proxy_arp|proxy_arp_pvlan|quorum|quorum_down|quorum_max|quorum_up|random_seed|real_server|regex|regex_max_offset|regex_min_offset|regex_no_match|regex_options|regex_stack|reload_repeat|reload_time_file|require_reply|retry|rise|router_id|rs_init_notifies|script|script_user|sh-fallback|sh-port|shutdown_script|shutdown_script_timeout|skip_check_adv_addr|smtp_alert|smtp_alert_checker|smtp_alert_vrrp|smtp_connect_timeout|smtp_helo_name|smtp_server|snmp_socket|sorry_server|sorry_server_inhibit|sorry_server_lvs_method|source_ip|start|startup_script|startup_script_timeout|state|static_ipaddress|static_routes|static_rules|status_code|step|strict_mode|sync_group_tracking_weight|terminate_delay|timeout|track_bfd|track_file|track_group|track_interface|track_process|track_script|track_src_ip|ttl|type|umask|unicast_peer|unicast_src_ip|unicast_ttl|url|use_ipvlan|use_pid_dir|use_vmac|user|uthreshold|val[123]|version|virtual_ipaddress|virtual_ipaddress_excluded|virtual_router_id|virtual_routes|virtual_rules|virtual_server|virtual_server_group|virtualhost|vmac_xmit_base|vrrp|vrrp_(?:check_unicast_src|cpu_affinity|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|gna_interval|higher_prio_send_advert|instance|ipsets|iptables|lower_prio_no_advert|mcast_group4|mcast_group6|min_garp|netlink_cmd_rcv_bufs|netlink_cmd_rcv_bufs_force|netlink_monitor_rcv_bufs|netlink_monitor_rcv_bufs_force|no_swap|notify_fifo|notify_fifo_script|notify_priority_changes|priority|process_name|rlimit_rttime|rt_priority|rx_bufs_multiplier|rx_bufs_policy|script|skip_check_adv_addr|startup_delay|strict|sync_group|track_process|version)|warmup|weight)\\b/,\n    constant:\n      /\\b(?:A|AAAA|AH|BACKUP|CNAME|DR|MASTER|MX|NAT|NS|PASS|SCTP|SOA|TCP|TUN|TXT|UDP|dh|fo|lblc|lblcr|lc|mh|nq|ovf|rr|sed|sh|wlc|wrr)\\b/,\n    number: {\n      pattern: /(^|[^\\w.-])-?\\d+(?:\\.\\d+)?/,\n      lookbehind: true\n    },\n    boolean: /\\b(?:false|no|off|on|true|yes)\\b/,\n    punctuation: /[\\{\\}]/\n  }\n}\n","'use strict'\n\nmodule.exports = keyman\nkeyman.displayName = 'keyman'\nkeyman.aliases = []\nfunction keyman(Prism) {\n  Prism.languages.keyman = {\n    comment: {\n      pattern: /\\bc .*/i,\n      greedy: true\n    },\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n      greedy: true\n    },\n    'virtual-key': {\n      pattern:\n        /\\[\\s*(?:(?:ALT|CAPS|CTRL|LALT|LCTRL|NCAPS|RALT|RCTRL|SHIFT)\\s+)*(?:[TKU]_[\\w?]+|[A-E]\\d\\d?|\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')\\s*\\]/i,\n      greedy: true,\n      alias: 'function' // alias for styles\n    },\n    // https://help.keyman.com/developer/language/guide/headers\n    'header-keyword': {\n      pattern: /&\\w+/,\n      alias: 'bold' // alias for styles\n    },\n    'header-statement': {\n      pattern:\n        /\\b(?:bitmap|bitmaps|caps always off|caps on only|copyright|hotkey|language|layout|message|name|shift frees caps|version)\\b/i,\n      alias: 'bold' // alias for styles\n    },\n    'rule-keyword': {\n      pattern:\n        /\\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|reset|return|save|set|store|use)\\b/i,\n      alias: 'keyword'\n    },\n    'structural-keyword': {\n      pattern: /\\b(?:ansi|begin|group|match|nomatch|unicode|using keys)\\b/i,\n      alias: 'keyword'\n    },\n    'compile-target': {\n      pattern: /\\$(?:keyman|keymanonly|keymanweb|kmfl|weaver):/i,\n      alias: 'property'\n    },\n    // U+####, x###, d### characters and numbers\n    number: /\\b(?:U\\+[\\dA-F]+|d\\d+|x[\\da-f]+|\\d+)\\b/i,\n    operator: /[+>\\\\$]|\\.\\./,\n    punctuation: /[()=,]/\n  }\n}\n","'use strict'\n\nmodule.exports = kotlin\nkotlin.displayName = 'kotlin'\nkotlin.aliases = ['kt', 'kts']\nfunction kotlin(Prism) {\n  ;(function (Prism) {\n    Prism.languages.kotlin = Prism.languages.extend('clike', {\n      keyword: {\n        // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get\n        pattern:\n          /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/,\n        lookbehind: true\n      },\n      function: [\n        {\n          pattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/,\n          greedy: true\n        },\n        {\n          pattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      number:\n        /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/,\n      operator:\n        /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/\n    })\n    delete Prism.languages.kotlin['class-name']\n    var interpolationInside = {\n      'interpolation-punctuation': {\n        pattern: /^\\$\\{?|\\}$/,\n        alias: 'punctuation'\n      },\n      expression: {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages.kotlin\n      }\n    }\n    Prism.languages.insertBefore('kotlin', 'string', {\n      // https://kotlinlang.org/spec/expressions.html#string-interpolation-expressions\n      'string-literal': [\n        {\n          pattern: /\"\"\"(?:[^$]|\\$(?:(?!\\{)|\\{[^{}]*\\}))*?\"\"\"/,\n          alias: 'multiline',\n          inside: {\n            interpolation: {\n              pattern: /\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n              inside: interpolationInside\n            },\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern: /\"(?:[^\"\\\\\\r\\n$]|\\\\.|\\$(?:(?!\\{)|\\{[^{}]*\\}))*\"/,\n          alias: 'singleline',\n          inside: {\n            interpolation: {\n              pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n              lookbehind: true,\n              inside: interpolationInside\n            },\n            string: /[\\s\\S]+/\n          }\n        }\n      ],\n      char: {\n        // https://kotlinlang.org/spec/expressions.html#character-literals\n        pattern: /'(?:[^'\\\\\\r\\n]|\\\\(?:.|u[a-fA-F0-9]{0,4}))'/,\n        greedy: true\n      }\n    })\n    delete Prism.languages.kotlin['string']\n    Prism.languages.insertBefore('kotlin', 'keyword', {\n      annotation: {\n        pattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/,\n        alias: 'builtin'\n      }\n    })\n    Prism.languages.insertBefore('kotlin', 'function', {\n      label: {\n        pattern: /\\b\\w+@|@\\w+\\b/,\n        alias: 'symbol'\n      }\n    })\n    Prism.languages.kt = Prism.languages.kotlin\n    Prism.languages.kts = Prism.languages.kotlin\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = kumir\nkumir.displayName = 'kumir'\nkumir.aliases = ['kum']\nfunction kumir(Prism) {\n  /* eslint-disable regexp/no-dupe-characters-character-class */\n  ;(function (Prism) {\n    /**\n     * Regular expression for characters that are not allowed in identifiers.\n     *\n     * @type {string}\n     */\n    var nonId = /\\s\\x00-\\x1f\\x22-\\x2f\\x3a-\\x3f\\x5b-\\x5e\\x60\\x7b-\\x7e/.source\n    /**\n     * Surround a regular expression for IDs with patterns for non-ID sequences.\n     *\n     * @param {string} pattern A regular expression for identifiers.\n     * @param {string} [flags] The regular expression flags.\n     * @returns {RegExp} A wrapped regular expression for identifiers.\n     */\n    function wrapId(pattern, flags) {\n      return RegExp(pattern.replace(/<nonId>/g, nonId), flags)\n    }\n    Prism.languages.kumir = {\n      comment: {\n        pattern: /\\|.*/\n      },\n      prolog: {\n        pattern: /#.*/,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\\n\\r\"]*\"|'[^\\n\\r']*'/,\n        greedy: true\n      },\n      boolean: {\n        pattern: wrapId(/(^|[<nonId>])(?:да|нет)(?=[<nonId>]|$)/.source),\n        lookbehind: true\n      },\n      'operator-word': {\n        pattern: wrapId(/(^|[<nonId>])(?:и|или|не)(?=[<nonId>]|$)/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'system-variable': {\n        pattern: wrapId(/(^|[<nonId>])знач(?=[<nonId>]|$)/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      type: [\n        {\n          pattern: wrapId(\n            /(^|[<nonId>])(?:вещ|лит|лог|сим|цел)(?:\\x20*таб)?(?=[<nonId>]|$)/\n              .source\n          ),\n          lookbehind: true,\n          alias: 'builtin'\n        },\n        {\n          pattern: wrapId(\n            /(^|[<nonId>])(?:компл|сканкод|файл|цвет)(?=[<nonId>]|$)/.source\n          ),\n          lookbehind: true,\n          alias: 'important'\n        }\n      ],\n      /**\n       * Should be performed after searching for type names because of \"таб\".\n       * \"таб\" is a reserved word, but never used without a preceding type name.\n       * \"НАЗНАЧИТЬ\", \"Фввод\", and \"Фвывод\" are not reserved words.\n       */\n      keyword: {\n        pattern: wrapId(\n          /(^|[<nonId>])(?:алг|арг(?:\\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\\x20+|_)исп)?|кц(?:(?:\\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[<nonId>]|$)/\n            .source\n        ),\n        lookbehind: true\n      },\n      /** Should be performed after searching for reserved words. */\n      name: {\n        // eslint-disable-next-line regexp/no-super-linear-backtracking\n        pattern: wrapId(\n          /(^|[<nonId>])[^\\d<nonId>][^<nonId>]*(?:\\x20+[^<nonId>]+)*(?=[<nonId>]|$)/\n            .source\n        ),\n        lookbehind: true\n      },\n      /** Should be performed after searching for names. */\n      number: {\n        pattern: wrapId(\n          /(^|[<nonId>])(?:\\B\\$[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?=[<nonId>]|$)/\n            .source,\n          'i'\n        ),\n        lookbehind: true\n      },\n      /** Should be performed after searching for words. */\n      punctuation: /:=|[(),:;\\[\\]]/,\n      /**\n       * Should be performed after searching for\n       * - numeric constants (because of \"+\" and \"-\");\n       * - punctuation marks (because of \":=\" and \"=\").\n       */\n      'operator-char': {\n        pattern: /\\*\\*?|<[=>]?|>=?|[-+/=]/,\n        alias: 'operator'\n      }\n    }\n    Prism.languages.kum = Prism.languages.kumir\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = kusto\nkusto.displayName = 'kusto'\nkusto.aliases = []\nfunction kusto(Prism) {\n  Prism.languages.kusto = {\n    comment: {\n      pattern: /\\/\\/.*/,\n      greedy: true\n    },\n    string: {\n      pattern:\n        /```[\\s\\S]*?```|[hH]?(?:\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|'(?:[^\\r\\n\\\\']|\\\\.)*'|@(?:\"[^\\r\\n\"]*\"|'[^\\r\\n']*'))/,\n      greedy: true\n    },\n    verb: {\n      pattern: /(\\|\\s*)[a-z][\\w-]*/i,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    command: {\n      pattern: /\\.[a-z][a-z\\d-]*\\b/,\n      alias: 'keyword'\n    },\n    'class-name':\n      /\\b(?:bool|datetime|decimal|dynamic|guid|int|long|real|string|timespan)\\b/,\n    keyword:\n      /\\b(?:access|alias|and|anti|as|asc|auto|between|by|(?:contains|(?:ends|starts)with|has(?:perfix|suffix)?)(?:_cs)?|database|declare|desc|external|from|fullouter|has_all|in|ingestion|inline|inner|innerunique|into|(?:left|right)(?:anti(?:semi)?|inner|outer|semi)?|let|like|local|not|of|on|or|pattern|print|query_parameters|range|restrict|schema|set|step|table|tables|to|view|where|with|matches\\s+regex|nulls\\s+(?:first|last))(?![\\w-])/,\n    boolean: /\\b(?:false|null|true)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/,\n    datetime: [\n      {\n        // RFC 822 + RFC 850\n        pattern:\n          /\\b(?:(?:Fri|Friday|Mon|Monday|Sat|Saturday|Sun|Sunday|Thu|Thursday|Tue|Tuesday|Wed|Wednesday)\\s*,\\s*)?\\d{1,2}(?:\\s+|-)(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)(?:\\s+|-)\\d{2}\\s+\\d{2}:\\d{2}(?::\\d{2})?(?:\\s*(?:\\b(?:[A-Z]|(?:[ECMT][DS]|GM|U)T)|[+-]\\d{4}))?\\b/,\n        alias: 'number'\n      },\n      {\n        // ISO 8601\n        pattern:\n          /[+-]?\\b(?:\\d{4}-\\d{2}-\\d{2}(?:[ T]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)?|\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)Z?/,\n        alias: 'number'\n      }\n    ],\n    number:\n      /\\b(?:0x[0-9A-Fa-f]+|\\d+(?:\\.\\d+)?(?:[Ee][+-]?\\d+)?)(?:(?:min|sec|[mnµ]s|[dhms]|microsecond|tick)\\b)?|[+-]?\\binf\\b/,\n    operator: /=>|[!=]~|[!=<>]=?|[-+*/%|]|\\.\\./,\n    punctuation: /[()\\[\\]{},;.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = latex\nlatex.displayName = 'latex'\nlatex.aliases = ['tex', 'context']\nfunction latex(Prism) {\n  ;(function (Prism) {\n    var funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i\n    var insideEqu = {\n      'equation-command': {\n        pattern: funcPattern,\n        alias: 'regex'\n      }\n    }\n    Prism.languages.latex = {\n      comment: /%.*/,\n      // the verbatim environment prints whitespace to the document\n      cdata: {\n        pattern:\n          /(\\\\begin\\{((?:lstlisting|verbatim)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n        lookbehind: true\n      },\n      /*\n       * equations can be between $$ $$ or $ $ or \\( \\) or \\[ \\]\n       * (all are multiline)\n       */\n      equation: [\n        {\n          pattern:\n            /\\$\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$\\$|\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n          inside: insideEqu,\n          alias: 'string'\n        },\n        {\n          pattern:\n            /(\\\\begin\\{((?:align|eqnarray|equation|gather|math|multline)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n          lookbehind: true,\n          inside: insideEqu,\n          alias: 'string'\n        }\n      ],\n      /*\n       * arguments which are keywords or references are highlighted\n       * as keywords\n       */\n      keyword: {\n        pattern:\n          /(\\\\(?:begin|cite|documentclass|end|label|ref|usepackage)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n        lookbehind: true\n      },\n      url: {\n        pattern: /(\\\\url\\{)[^}]+(?=\\})/,\n        lookbehind: true\n      },\n      /*\n       * section or chapter headlines are highlighted as bold so that\n       * they stand out more\n       */\n      headline: {\n        pattern:\n          /(\\\\(?:chapter|frametitle|paragraph|part|section|subparagraph|subsection|subsubparagraph|subsubsection|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      function: {\n        pattern: funcPattern,\n        alias: 'selector'\n      },\n      punctuation: /[[\\]{}&]/\n    }\n    Prism.languages.tex = Prism.languages.latex\n    Prism.languages.context = Prism.languages.latex\n  })(Prism)\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nvar refractorPhp = require('./php.js')\nmodule.exports = latte\nlatte.displayName = 'latte'\nlatte.aliases = []\nfunction latte(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  Prism.register(refractorPhp)\n  ;(function (Prism) {\n    Prism.languages.latte = {\n      comment: /^\\{\\*[\\s\\S]*/,\n      'latte-tag': {\n        // https://latte.nette.org/en/tags\n        pattern: /(^\\{(?:\\/(?=[a-z]))?)(?:[=_]|[a-z]\\w*\\b(?!\\())/i,\n        lookbehind: true,\n        alias: 'important'\n      },\n      delimiter: {\n        pattern: /^\\{\\/?|\\}$/,\n        alias: 'punctuation'\n      },\n      php: {\n        pattern: /\\S(?:[\\s\\S]*\\S)?/,\n        alias: 'language-php',\n        inside: Prism.languages.php\n      }\n    }\n    var markupLatte = Prism.languages.extend('markup', {})\n    Prism.languages.insertBefore(\n      'inside',\n      'attr-value',\n      {\n        'n-attr': {\n          pattern: /n:[\\w-]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+))?/,\n          inside: {\n            'attr-name': {\n              pattern: /^[^\\s=]+/,\n              alias: 'important'\n            },\n            'attr-value': {\n              pattern: /=[\\s\\S]+/,\n              inside: {\n                punctuation: [\n                  /^=/,\n                  {\n                    pattern: /^(\\s*)[\"']|[\"']$/,\n                    lookbehind: true\n                  }\n                ],\n                php: {\n                  pattern: /\\S(?:[\\s\\S]*\\S)?/,\n                  inside: Prism.languages.php\n                }\n              }\n            }\n          }\n        }\n      },\n      markupLatte.tag\n    )\n    Prism.hooks.add('before-tokenize', function (env) {\n      if (env.language !== 'latte') {\n        return\n      }\n      var lattePattern =\n        /\\{\\*[\\s\\S]*?\\*\\}|\\{[^'\"\\s{}*](?:[^\"'/{}]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\}/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'latte',\n        lattePattern\n      )\n      env.grammar = markupLatte\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = less\nless.displayName = 'less'\nless.aliases = []\nfunction less(Prism) {\n  /* FIXME :\n:extend() is not handled specifically : its highlighting is buggy.\nMixin usage must be inside a ruleset to be highlighted.\nAt-rules (e.g. import) containing interpolations are buggy.\nDetached rulesets are highlighted as at-rules.\nA comment before a mixin usage prevents the latter to be properly highlighted.\n*/\n  Prism.languages.less = Prism.languages.extend('css', {\n    comment: [\n      /\\/\\*[\\s\\S]*?\\*\\//,\n      {\n        pattern: /(^|[^\\\\])\\/\\/.*/,\n        lookbehind: true\n      }\n    ],\n    atrule: {\n      pattern:\n        /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n      inside: {\n        punctuation: /[:()]/\n      }\n    },\n    // selectors and mixins are considered the same\n    selector: {\n      pattern:\n        /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n      inside: {\n        // mixin parameters\n        variable: /@+[\\w-]+/\n      }\n    },\n    property: /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,\n    operator: /[+\\-*\\/]/\n  })\n  Prism.languages.insertBefore('less', 'property', {\n    variable: [\n      // Variable declaration (the colon must be consumed!)\n      {\n        pattern: /@[\\w-]+\\s*:/,\n        inside: {\n          punctuation: /:/\n        }\n      }, // Variable usage\n      /@@?[\\w-]+/\n    ],\n    'mixin-usage': {\n      pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n      lookbehind: true,\n      alias: 'function'\n    }\n  })\n}\n","'use strict'\nvar refractorScheme = require('./scheme.js')\nmodule.exports = lilypond\nlilypond.displayName = 'lilypond'\nlilypond.aliases = []\nfunction lilypond(Prism) {\n  Prism.register(refractorScheme)\n  ;(function (Prism) {\n    var schemeExpression =\n      /\\((?:[^();\"#\\\\]|\\\\[\\s\\S]|;.*(?!.)|\"(?:[^\"\\\\]|\\\\.)*\"|#(?:\\{(?:(?!#\\})[\\s\\S])*#\\}|[^{])|<expr>)*\\)/\n        .source // allow for up to pow(2, recursivenessLog2) many levels of recursive brace expressions\n    // For some reason, this can't be 4\n    var recursivenessLog2 = 5\n    for (var i = 0; i < recursivenessLog2; i++) {\n      schemeExpression = schemeExpression.replace(/<expr>/g, function () {\n        return schemeExpression\n      })\n    }\n    schemeExpression = schemeExpression.replace(/<expr>/g, /[^\\s\\S]/.source)\n    var lilypond = (Prism.languages.lilypond = {\n      comment: /%(?:(?!\\{).*|\\{[\\s\\S]*?%\\})/,\n      'embedded-scheme': {\n        pattern: RegExp(\n          /(^|[=\\s])#(?:\"(?:[^\"\\\\]|\\\\.)*\"|[^\\s()\"]*(?:[^\\s()]|<expr>))/.source.replace(\n            /<expr>/g,\n            function () {\n              return schemeExpression\n            }\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          scheme: {\n            pattern: /^(#)[\\s\\S]+$/,\n            lookbehind: true,\n            alias: 'language-scheme',\n            inside: {\n              'embedded-lilypond': {\n                pattern: /#\\{[\\s\\S]*?#\\}/,\n                greedy: true,\n                inside: {\n                  punctuation: /^#\\{|#\\}$/,\n                  lilypond: {\n                    pattern: /[\\s\\S]+/,\n                    alias: 'language-lilypond',\n                    inside: null // see below\n                  }\n                }\n              },\n              rest: Prism.languages.scheme\n            }\n          },\n          punctuation: /#/\n        }\n      },\n      string: {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true\n      },\n      'class-name': {\n        pattern: /(\\\\new\\s+)[\\w-]+/,\n        lookbehind: true\n      },\n      keyword: {\n        pattern: /\\\\[a-z][-\\w]*/i,\n        inside: {\n          punctuation: /^\\\\/\n        }\n      },\n      operator: /[=|]|<<|>>/,\n      punctuation: {\n        pattern:\n          /(^|[a-z\\d])(?:'+|,+|[_^]?-[_^]?(?:[-+^!>._]|(?=\\d))|[_^]\\.?|[.!])|[{}()[\\]<>^~]|\\\\[()[\\]<>\\\\!]|--|__/,\n        lookbehind: true\n      },\n      number: /\\b\\d+(?:\\/\\d+)?\\b/\n    })\n    lilypond['embedded-scheme'].inside['scheme'].inside[\n      'embedded-lilypond'\n    ].inside['lilypond'].inside = lilypond\n    Prism.languages.ly = lilypond\n  })(Prism)\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = liquid\nliquid.displayName = 'liquid'\nliquid.aliases = []\nfunction liquid(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  Prism.languages.liquid = {\n    comment: {\n      pattern: /(^\\{%\\s*comment\\s*%\\})[\\s\\S]+(?=\\{%\\s*endcomment\\s*%\\}$)/,\n      lookbehind: true\n    },\n    delimiter: {\n      pattern: /^\\{(?:\\{\\{|[%\\{])-?|-?(?:\\}\\}|[%\\}])\\}$/,\n      alias: 'punctuation'\n    },\n    string: {\n      pattern: /\"[^\"]*\"|'[^']*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\\b/,\n    object:\n      /\\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\\b/,\n    function: [\n      {\n        pattern: /(\\|\\s*)\\w+/,\n        lookbehind: true,\n        alias: 'filter'\n      },\n      {\n        // array functions\n        pattern: /(\\.\\s*)(?:first|last|size)/,\n        lookbehind: true\n      }\n    ],\n    boolean: /\\b(?:false|nil|true)\\b/,\n    range: {\n      pattern: /\\.\\./,\n      alias: 'operator'\n    },\n    // https://github.com/Shopify/liquid/blob/698f5e0d967423e013f6169d9111bd969bd78337/lib/liquid/lexer.rb#L21\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    operator: /[!=]=|<>|[<>]=?|[|?:=-]|\\b(?:and|contains(?=\\s)|or)\\b/,\n    punctuation: /[.,\\[\\]()]/,\n    empty: {\n      pattern: /\\bempty\\b/,\n      alias: 'keyword'\n    }\n  }\n  Prism.hooks.add('before-tokenize', function (env) {\n    var liquidPattern =\n      /\\{%\\s*comment\\s*%\\}[\\s\\S]*?\\{%\\s*endcomment\\s*%\\}|\\{(?:%[\\s\\S]*?%|\\{\\{[\\s\\S]*?\\}\\}|\\{[\\s\\S]*?\\})\\}/g\n    var insideRaw = false\n    Prism.languages['markup-templating'].buildPlaceholders(\n      env,\n      'liquid',\n      liquidPattern,\n      function (match) {\n        var tagMatch = /^\\{%-?\\s*(\\w+)/.exec(match)\n        if (tagMatch) {\n          var tag = tagMatch[1]\n          if (tag === 'raw' && !insideRaw) {\n            insideRaw = true\n            return true\n          } else if (tag === 'endraw') {\n            insideRaw = false\n            return true\n          }\n        }\n        return !insideRaw\n      }\n    )\n  })\n  Prism.hooks.add('after-tokenize', function (env) {\n    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'liquid')\n  })\n}\n","'use strict'\n\nmodule.exports = lisp\nlisp.displayName = 'lisp'\nlisp.aliases = []\nfunction lisp(Prism) {\n  ;(function (Prism) {\n    /**\n     * Functions to construct regular expressions\n     * e.g. (interactive ... or (interactive)\n     *\n     * @param {string} name\n     * @returns {RegExp}\n     */\n    function simple_form(name) {\n      return RegExp(/(\\()/.source + '(?:' + name + ')' + /(?=[\\s\\)])/.source)\n    }\n    /**\n     * booleans and numbers\n     *\n     * @param {string} pattern\n     * @returns {RegExp}\n     */\n    function primitive(pattern) {\n      return RegExp(\n        /([\\s([])/.source + '(?:' + pattern + ')' + /(?=[\\s)])/.source\n      )\n    } // Patterns in regular expressions\n    // Symbol name. See https://www.gnu.org/software/emacs/manual/html_node/elisp/Symbol-Type.html\n    // & and : are excluded as they are usually used for special purposes\n    var symbol = /(?!\\d)[-+*/~!@$%^=<>{}\\w]+/.source // symbol starting with & used in function arguments\n    var marker = '&' + symbol // Open parenthesis for look-behind\n    var par = '(\\\\()'\n    var endpar = '(?=\\\\))' // End the pattern with look-ahead space\n    var space = '(?=\\\\s)'\n    var nestedPar =\n      /(?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\))*\\))*\\))*/\n        .source\n    var language = {\n      // Three or four semicolons are considered a heading.\n      // See https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html\n      heading: {\n        pattern: /;;;.*/,\n        alias: ['comment', 'title']\n      },\n      comment: /;.*/,\n      string: {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true,\n        inside: {\n          argument: /[-A-Z]+(?=[.,\\s])/,\n          symbol: RegExp('`' + symbol + \"'\")\n        }\n      },\n      'quoted-symbol': {\n        pattern: RegExp(\"#?'\" + symbol),\n        alias: ['variable', 'symbol']\n      },\n      'lisp-property': {\n        pattern: RegExp(':' + symbol),\n        alias: 'property'\n      },\n      splice: {\n        pattern: RegExp(',@?' + symbol),\n        alias: ['symbol', 'variable']\n      },\n      keyword: [\n        {\n          pattern: RegExp(\n            par +\n              '(?:and|(?:cl-)?letf|cl-loop|cond|cons|error|if|(?:lexical-)?let\\\\*?|message|not|null|or|provide|require|setq|unless|use-package|when|while)' +\n              space\n          ),\n          lookbehind: true\n        },\n        {\n          pattern: RegExp(\n            par +\n              '(?:append|by|collect|concat|do|finally|for|in|return)' +\n              space\n          ),\n          lookbehind: true\n        }\n      ],\n      declare: {\n        pattern: simple_form(/declare/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      interactive: {\n        pattern: simple_form(/interactive/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      boolean: {\n        pattern: primitive(/nil|t/.source),\n        lookbehind: true\n      },\n      number: {\n        pattern: primitive(/[-+]?\\d+(?:\\.\\d*)?/.source),\n        lookbehind: true\n      },\n      defvar: {\n        pattern: RegExp(par + 'def(?:const|custom|group|var)\\\\s+' + symbol),\n        lookbehind: true,\n        inside: {\n          keyword: /^def[a-z]+/,\n          variable: RegExp(symbol)\n        }\n      },\n      defun: {\n        pattern: RegExp(\n          par +\n            /(?:cl-)?(?:defmacro|defun\\*?)\\s+/.source +\n            symbol +\n            /\\s+\\(/.source +\n            nestedPar +\n            /\\)/.source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^(?:cl-)?def\\S+/,\n          // See below, this property needs to be defined later so that it can\n          // reference the language object.\n          arguments: null,\n          function: {\n            pattern: RegExp('(^\\\\s)' + symbol),\n            lookbehind: true\n          },\n          punctuation: /[()]/\n        }\n      },\n      lambda: {\n        pattern: RegExp(\n          par +\n            'lambda\\\\s+\\\\(\\\\s*(?:&?' +\n            symbol +\n            '(?:\\\\s+&?' +\n            symbol +\n            ')*\\\\s*)?\\\\)'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^lambda/,\n          // See below, this property needs to be defined later so that it can\n          // reference the language object.\n          arguments: null,\n          punctuation: /[()]/\n        }\n      },\n      car: {\n        pattern: RegExp(par + symbol),\n        lookbehind: true\n      },\n      punctuation: [\n        // open paren, brackets, and close paren\n        /(?:['`,]?\\(|[)\\[\\]])/, // cons\n        {\n          pattern: /(\\s)\\.(?=\\s)/,\n          lookbehind: true\n        }\n      ]\n    }\n    var arg = {\n      'lisp-marker': RegExp(marker),\n      varform: {\n        pattern: RegExp(\n          /\\(/.source + symbol + /\\s+(?=\\S)/.source + nestedPar + /\\)/.source\n        ),\n        inside: language\n      },\n      argument: {\n        pattern: RegExp(/(^|[\\s(])/.source + symbol),\n        lookbehind: true,\n        alias: 'variable'\n      },\n      rest: language\n    }\n    var forms = '\\\\S+(?:\\\\s+\\\\S+)*'\n    var arglist = {\n      pattern: RegExp(par + nestedPar + endpar),\n      lookbehind: true,\n      inside: {\n        'rest-vars': {\n          pattern: RegExp('&(?:body|rest)\\\\s+' + forms),\n          inside: arg\n        },\n        'other-marker-vars': {\n          pattern: RegExp('&(?:aux|optional)\\\\s+' + forms),\n          inside: arg\n        },\n        keys: {\n          pattern: RegExp('&key\\\\s+' + forms + '(?:\\\\s+&allow-other-keys)?'),\n          inside: arg\n        },\n        argument: {\n          pattern: RegExp(symbol),\n          alias: 'variable'\n        },\n        punctuation: /[()]/\n      }\n    }\n    language['lambda'].inside.arguments = arglist\n    language['defun'].inside.arguments = Prism.util.clone(arglist)\n    language['defun'].inside.arguments.inside.sublist = arglist\n    Prism.languages.lisp = language\n    Prism.languages.elisp = language\n    Prism.languages.emacs = language\n    Prism.languages['emacs-lisp'] = language\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = livescript\nlivescript.displayName = 'livescript'\nlivescript.aliases = []\nfunction livescript(Prism) {\n  Prism.languages.livescript = {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\\\])#.*/,\n        lookbehind: true\n      }\n    ],\n    'interpolated-string': {\n      /* Look-behind and look-ahead prevents wrong behavior of the greedy pattern\n       * forcing it to match \"\"\"-quoted string when it would otherwise match \"-quoted first. */\n      pattern: /(^|[^\"])(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2(?!\")/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        variable: {\n          pattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|[\\d_])*/m,\n          lookbehind: true\n        },\n        interpolation: {\n          pattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^#\\{|\\}$/,\n              alias: 'variable'\n            } // See rest below\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    string: [\n      {\n        pattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n        greedy: true\n      },\n      {\n        pattern: /<\\[[\\s\\S]*?\\]>/,\n        greedy: true\n      },\n      /\\\\[^\\s,;\\])}]+/\n    ],\n    regex: [\n      {\n        pattern: /\\/\\/(?:\\[[^\\r\\n\\]]*\\]|\\\\.|(?!\\/\\/)[^\\\\\\[])+\\/\\/[gimyu]{0,5}/,\n        greedy: true,\n        inside: {\n          comment: {\n            pattern: /(^|[^\\\\])#.*/,\n            lookbehind: true\n          }\n        }\n      },\n      {\n        pattern: /\\/(?:\\[[^\\r\\n\\]]*\\]|\\\\.|[^/\\\\\\r\\n\\[])+\\/[gimyu]{0,5}/,\n        greedy: true\n      }\n    ],\n    keyword: {\n      pattern:\n        /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n      lookbehind: true\n    },\n    'keyword-operator': {\n      pattern:\n        /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?: not|nt)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n      lookbehind: true,\n      alias: 'operator'\n    },\n    boolean: {\n      pattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n      lookbehind: true\n    },\n    argument: {\n      // Don't match .&. nor &&\n      pattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    number: /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n    identifier: /[a-z_](?:-?[a-z]|[\\d_])*/i,\n    operator: [\n      // Spaced .\n      {\n        pattern: /( )\\.(?= )/,\n        lookbehind: true\n      }, // Full list, in order:\n      // .= .~ .. ...\n      // .&. .^. .<<. .>>. .>>>.\n      // := :: ::=\n      // &&\n      // || |>\n      // < << <<< <<<<\n      // <- <-- <-! <--!\n      // <~ <~~ <~! <~~!\n      // <| <= <?\n      // > >> >= >?\n      // - -- -> -->\n      // + ++\n      // @ @@\n      // % %%\n      // * **\n      // ! != !~=\n      // !~> !~~>\n      // !-> !-->\n      // ~ ~> ~~> ~=\n      // = ==\n      // ^ ^^\n      // / ?\n      /\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<<?<?|--?!?|~~?!?|[|=?])?|>[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n    ],\n    punctuation: /[(){}\\[\\]|.,:;`]/\n  }\n  Prism.languages.livescript['interpolated-string'].inside[\n    'interpolation'\n  ].inside.rest = Prism.languages.livescript\n}\n","'use strict'\n\nmodule.exports = llvm\nllvm.displayName = 'llvm'\nllvm.aliases = []\nfunction llvm(Prism) {\n  ;(function (Prism) {\n    Prism.languages.llvm = {\n      comment: /;.*/,\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      boolean: /\\b(?:false|true)\\b/,\n      variable: /[%@!#](?:(?!\\d)(?:[-$.\\w]|\\\\[a-f\\d]{2})+|\\d+)/i,\n      label: /(?!\\d)(?:[-$.\\w]|\\\\[a-f\\d]{2})+:/i,\n      type: {\n        pattern:\n          /\\b(?:double|float|fp128|half|i[1-9]\\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\\b/,\n        alias: 'class-name'\n      },\n      keyword: /\\b[a-z_][a-z_0-9]*\\b/,\n      number:\n        /[+-]?\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b|\\b0x[\\dA-Fa-f]+\\b|\\b0xK[\\dA-Fa-f]{20}\\b|\\b0x[ML][\\dA-Fa-f]{32}\\b|\\b0xH[\\dA-Fa-f]{4}\\b/,\n      punctuation: /[{}[\\];(),.!*=<>]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = log\nlog.displayName = 'log'\nlog.aliases = []\nfunction log(Prism) {\n  // This is a language definition for generic log files.\n  // Since there is no one log format, this language definition has to support all formats to some degree.\n  //\n  // Based on https://github.com/MTDL9/vim-log-highlighting\n  Prism.languages.log = {\n    string: {\n      // Single-quoted strings must not be confused with plain text. E.g. Can't isn't Susan's Chris' toy\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?![st] | \\w)(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n      greedy: true\n    },\n    exception: {\n      pattern:\n        /(^|[^\\w.])[a-z][\\w.]*(?:Error|Exception):.*(?:(?:\\r\\n?|\\n)[ \\t]*(?:at[ \\t].+|\\.{3}.*|Caused by:.*))+(?:(?:\\r\\n?|\\n)[ \\t]*\\.\\.\\. .*)?/,\n      lookbehind: true,\n      greedy: true,\n      alias: ['javastacktrace', 'language-javastacktrace'],\n      inside: Prism.languages['javastacktrace'] || {\n        keyword: /\\bat\\b/,\n        function: /[a-z_][\\w$]*(?=\\()/,\n        punctuation: /[.:()]/\n      }\n    },\n    level: [\n      {\n        pattern:\n          /\\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\\b/,\n        alias: ['error', 'important']\n      },\n      {\n        pattern: /\\b(?:WARN|WARNING|WRN)\\b/,\n        alias: ['warning', 'important']\n      },\n      {\n        pattern: /\\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\\b/,\n        alias: ['info', 'keyword']\n      },\n      {\n        pattern: /\\b(?:DBG|DEBUG|FINE)\\b/,\n        alias: ['debug', 'keyword']\n      },\n      {\n        pattern: /\\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\\b/,\n        alias: ['trace', 'comment']\n      }\n    ],\n    property: {\n      pattern:\n        /((?:^|[\\]|])[ \\t]*)[a-z_](?:[\\w-]|\\b\\/\\b)*(?:[. ]\\(?\\w(?:[\\w-]|\\b\\/\\b)*\\)?)*:(?=\\s)/im,\n      lookbehind: true\n    },\n    separator: {\n      pattern: /(^|[^-+])-{3,}|={3,}|\\*{3,}|- - /m,\n      lookbehind: true,\n      alias: 'comment'\n    },\n    url: /\\b(?:file|ftp|https?):\\/\\/[^\\s|,;'\"]*[^\\s|,;'\">.]/,\n    email: {\n      pattern: /(^|\\s)[-\\w+.]+@[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)+(?=\\s)/,\n      lookbehind: true,\n      alias: 'url'\n    },\n    'ip-address': {\n      pattern: /\\b(?:\\d{1,3}(?:\\.\\d{1,3}){3})\\b/,\n      alias: 'constant'\n    },\n    'mac-address': {\n      pattern: /\\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\\b/i,\n      alias: 'constant'\n    },\n    domain: {\n      pattern:\n        /(^|\\s)[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)*\\.[a-z][a-z0-9-]+(?=\\s)/,\n      lookbehind: true,\n      alias: 'constant'\n    },\n    uuid: {\n      pattern:\n        /\\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/i,\n      alias: 'constant'\n    },\n    hash: {\n      pattern: /\\b(?:[a-f0-9]{32}){1,2}\\b/i,\n      alias: 'constant'\n    },\n    'file-path': {\n      pattern:\n        /\\b[a-z]:[\\\\/][^\\s|,;:(){}\\[\\]\"']+|(^|[\\s:\\[\\](>|])\\.{0,2}\\/\\w[^\\s|,;:(){}\\[\\]\"']*/i,\n      lookbehind: true,\n      greedy: true,\n      alias: 'string'\n    },\n    date: {\n      pattern: RegExp(\n        /\\b\\d{4}[-/]\\d{2}[-/]\\d{2}(?:T(?=\\d{1,2}:)|(?=\\s\\d{1,2}:))/.source +\n          '|' +\n          /\\b\\d{1,4}[-/ ](?:\\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\\d{2,4}T?\\b/\n            .source +\n          '|' +\n          /\\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\\s{1,2}\\d{1,2}\\b/\n            .source,\n        'i'\n      ),\n      alias: 'number'\n    },\n    time: {\n      pattern:\n        /\\b\\d{1,2}:\\d{1,2}:\\d{1,2}(?:[.,:]\\d+)?(?:\\s?[+-]\\d{2}:?\\d{2}|Z)?\\b/,\n      alias: 'number'\n    },\n    boolean: /\\b(?:false|null|true)\\b/i,\n    number: {\n      pattern:\n        /(^|[^.\\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\\d[\\da-f]*(?:\\.\\d+)*(?:e[+-]?\\d+)?[a-z]{0,3}\\b)\\b(?!\\.\\w)/i,\n      lookbehind: true\n    },\n    operator: /[;:?<=>~/@!$%&+\\-|^(){}*#]/,\n    punctuation: /[\\[\\].,]/\n  }\n}\n","'use strict'\n\nmodule.exports = lolcode\nlolcode.displayName = 'lolcode'\nlolcode.aliases = []\nfunction lolcode(Prism) {\n  Prism.languages.lolcode = {\n    comment: [/\\bOBTW\\s[\\s\\S]*?\\sTLDR\\b/, /\\bBTW.+/],\n    string: {\n      pattern: /\"(?::.|[^\":])*\"/,\n      inside: {\n        variable: /:\\{[^}]+\\}/,\n        symbol: [/:\\([a-f\\d]+\\)/i, /:\\[[^\\]]+\\]/, /:[)>o\":]/]\n      },\n      greedy: true\n    },\n    number: /(?:\\B-)?(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)/,\n    symbol: {\n      pattern: /(^|\\s)(?:A )?(?:BUKKIT|NOOB|NUMBAR|NUMBR|TROOF|YARN)(?=\\s|,|$)/,\n      lookbehind: true,\n      inside: {\n        keyword: /A(?=\\s)/\n      }\n    },\n    label: {\n      pattern: /((?:^|\\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\\w*/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    function: {\n      pattern: /((?:^|\\s)(?:HOW IZ I|I IZ|IZ) )[a-zA-Z]\\w*/,\n      lookbehind: true\n    },\n    keyword: [\n      {\n        pattern:\n          /(^|\\s)(?:AN|FOUND YR|GIMMEH|GTFO|HAI|HAS A|HOW IZ I|I HAS A|I IZ|IF U SAY SO|IM IN YR|IM OUTTA YR|IS NOW(?: A)?|ITZ(?: A)?|IZ|KTHX|KTHXBYE|LIEK(?: A)?|MAEK|MEBBE|MKAY|NERFIN|NO WAI|O HAI IM|O RLY\\?|OIC|OMG|OMGWTF|R|SMOOSH|SRS|TIL|UPPIN|VISIBLE|WILE|WTF\\?|YA RLY|YR)(?=\\s|,|$)/,\n        lookbehind: true\n      },\n      /'Z(?=\\s|,|$)/\n    ],\n    boolean: {\n      pattern: /(^|\\s)(?:FAIL|WIN)(?=\\s|,|$)/,\n      lookbehind: true\n    },\n    variable: {\n      pattern: /(^|\\s)IT(?=\\s|,|$)/,\n      lookbehind: true\n    },\n    operator: {\n      pattern:\n        /(^|\\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:ALL|ANY|BIGGR|BOTH|DIFF|EITHER|MOD|PRODUKT|QUOSHUNT|SMALLR|SUM|WON) OF)(?=\\s|,|$)/,\n      lookbehind: true\n    },\n    punctuation: /\\.{3}|…|,|!/\n  }\n}\n","'use strict'\n\nmodule.exports = lua\nlua.displayName = 'lua'\nlua.aliases = []\nfunction lua(Prism) {\n  Prism.languages.lua = {\n    comment: /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n    // \\z may be used to skip the following space\n    string: {\n      pattern:\n        /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n      greedy: true\n    },\n    number:\n      /\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n    keyword:\n      /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n    function: /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n    operator: [\n      /[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n      {\n        // Match \"..\" but don't break \"...\"\n        pattern: /(^|[^.])\\.\\.(?!\\.)/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /[\\[\\](){},;]|\\.+|:+/\n  }\n}\n","'use strict'\n\nmodule.exports = magma\nmagma.displayName = 'magma'\nmagma.aliases = []\nfunction magma(Prism) {\n  Prism.languages.magma = {\n    output: {\n      pattern:\n        /^(>.*(?:\\r(?:\\n|(?!\\n))|\\n))(?!>)(?:.+|(?:\\r(?:\\n|(?!\\n))|\\n)(?!>).*)(?:(?:\\r(?:\\n|(?!\\n))|\\n)(?!>).*)*/m,\n      lookbehind: true,\n      greedy: true\n    },\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\\"])\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    // http://magma.maths.usyd.edu.au/magma/handbook/text/82\n    keyword:\n      /\\b(?:_|adj|and|assert|assert2|assert3|assigned|break|by|case|cat|catch|clear|cmpeq|cmpne|continue|declare|default|delete|diff|div|do|elif|else|end|eq|error|eval|exists|exit|for|forall|forward|fprintf|freeze|function|ge|gt|if|iload|import|in|intrinsic|is|join|le|load|local|lt|meet|mod|ne|not|notadj|notin|notsubset|or|print|printf|procedure|quit|random|read|readi|repeat|require|requirege|requirerange|restore|return|save|sdiff|select|subset|then|time|to|try|until|vprint|vprintf|vtime|when|where|while|xor)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    generator: {\n      pattern: /\\b[a-z_]\\w*(?=\\s*<)/i,\n      alias: 'class-name'\n    },\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: {\n      pattern:\n        /(^|[^\\w.]|\\.\\.)(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?:_[a-z]?)?(?=$|[^\\w.]|\\.\\.)/,\n      lookbehind: true\n    },\n    operator: /->|[-+*/^~!|#=]|:=|\\.\\./,\n    punctuation: /[()[\\]{}<>,;.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = makefile\nmakefile.displayName = 'makefile'\nmakefile.aliases = []\nfunction makefile(Prism) {\n  Prism.languages.makefile = {\n    comment: {\n      pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n      lookbehind: true\n    },\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    'builtin-target': {\n      pattern: /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n      alias: 'builtin'\n    },\n    target: {\n      pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n      alias: 'symbol',\n      inside: {\n        variable: /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n      }\n    },\n    variable: /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n    // Directives\n    keyword:\n      /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n    function: {\n      pattern:\n        /(\\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \\t])/,\n      lookbehind: true\n    },\n    operator: /(?:::|[?:+!])?=|[|@]/,\n    punctuation: /[:;(){}]/\n  }\n}\n","'use strict'\n\nmodule.exports = markdown\nmarkdown.displayName = 'markdown'\nmarkdown.aliases = ['md']\nfunction markdown(Prism) {\n  ;(function (Prism) {\n    // Allow only one line break\n    var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source\n    /**\n     * This function is intended for the creation of the bold or italic pattern.\n     *\n     * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n     *\n     * _Note:_ Keep in mind that this adds a capturing group.\n     *\n     * @param {string} pattern\n     * @returns {RegExp}\n     */\n    function createInline(pattern) {\n      pattern = pattern.replace(/<inner>/g, function () {\n        return inner\n      })\n      return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')')\n    }\n    var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/\n      .source\n    var tableRow =\n      /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(\n        /__/g,\n        function () {\n          return tableCell\n        }\n      )\n    var tableLine =\n      /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/\n        .source\n    Prism.languages.markdown = Prism.languages.extend('markup', {})\n    Prism.languages.insertBefore('markdown', 'prolog', {\n      'front-matter-block': {\n        pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          punctuation: /^---|---$/,\n          'front-matter': {\n            pattern: /\\S+(?:\\s+\\S+)*/,\n            alias: ['yaml', 'language-yaml'],\n            inside: Prism.languages.yaml\n          }\n        }\n      },\n      blockquote: {\n        // > ...\n        pattern: /^>(?:[\\t ]*>)*/m,\n        alias: 'punctuation'\n      },\n      table: {\n        pattern: RegExp(\n          '^' + tableRow + tableLine + '(?:' + tableRow + ')*',\n          'm'\n        ),\n        inside: {\n          'table-data-rows': {\n            pattern: RegExp(\n              '^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'\n            ),\n            lookbehind: true,\n            inside: {\n              'table-data': {\n                pattern: RegExp(tableCell),\n                inside: Prism.languages.markdown\n              },\n              punctuation: /\\|/\n            }\n          },\n          'table-line': {\n            pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n            lookbehind: true,\n            inside: {\n              punctuation: /\\||:?-{3,}:?/\n            }\n          },\n          'table-header-row': {\n            pattern: RegExp('^' + tableRow + '$'),\n            inside: {\n              'table-header': {\n                pattern: RegExp(tableCell),\n                alias: 'important',\n                inside: Prism.languages.markdown\n              },\n              punctuation: /\\|/\n            }\n          }\n        }\n      },\n      code: [\n        {\n          // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n          pattern:\n            /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n          lookbehind: true,\n          alias: 'keyword'\n        },\n        {\n          // ```optional language\n          // code block\n          // ```\n          pattern: /^```[\\s\\S]*?^```$/m,\n          greedy: true,\n          inside: {\n            'code-block': {\n              pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n              lookbehind: true\n            },\n            'code-language': {\n              pattern: /^(```).+/,\n              lookbehind: true\n            },\n            punctuation: /```/\n          }\n        }\n      ],\n      title: [\n        {\n          // title 1\n          // =======\n          // title 2\n          // -------\n          pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n          alias: 'important',\n          inside: {\n            punctuation: /==+$|--+$/\n          }\n        },\n        {\n          // # title 1\n          // ###### title 6\n          pattern: /(^\\s*)#.+/m,\n          lookbehind: true,\n          alias: 'important',\n          inside: {\n            punctuation: /^#+|#+$/\n          }\n        }\n      ],\n      hr: {\n        // ***\n        // ---\n        // * * *\n        // -----------\n        pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      list: {\n        // * item\n        // + item\n        // - item\n        // 1. item\n        pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      'url-reference': {\n        // [id]: http://example.com \"Optional title\"\n        // [id]: http://example.com 'Optional title'\n        // [id]: http://example.com (Optional title)\n        // [id]: <http://example.com> \"Optional title\"\n        pattern:\n          /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n        inside: {\n          variable: {\n            pattern: /^(!?\\[)[^\\]]+/,\n            lookbehind: true\n          },\n          string:\n            /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n          punctuation: /^[\\[\\]!:]|[<>]/\n        },\n        alias: 'url'\n      },\n      bold: {\n        // **strong**\n        // __strong__\n        // allow one nested instance of italic text using the same delimiter\n        pattern: createInline(\n          /\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/\n            .source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /(^..)[\\s\\S]+(?=..$)/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          punctuation: /\\*\\*|__/\n        }\n      },\n      italic: {\n        // *em*\n        // _em_\n        // allow one nested instance of bold text using the same delimiter\n        pattern: createInline(\n          /\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/\n            .source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /(^.)[\\s\\S]+(?=.$)/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          punctuation: /[*_]/\n        }\n      },\n      strike: {\n        // ~~strike through~~\n        // ~strike~\n        // eslint-disable-next-line regexp/strict\n        pattern: createInline(/(~~?)(?:(?!~)<inner>)+\\2/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          punctuation: /~~?/\n        }\n      },\n      'code-snippet': {\n        // `code`\n        // ``code``\n        pattern:\n          /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n        lookbehind: true,\n        greedy: true,\n        alias: ['code', 'keyword']\n      },\n      url: {\n        // [example](http://example.com \"Optional title\")\n        // [example][id]\n        // [example] [id]\n        pattern: createInline(\n          /!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/\n            .source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          operator: /^!/,\n          content: {\n            pattern: /(^\\[)[^\\]]+(?=\\])/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          variable: {\n            pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n            lookbehind: true\n          },\n          url: {\n            pattern: /(^\\]\\()[^\\s)]+/,\n            lookbehind: true\n          },\n          string: {\n            pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n            lookbehind: true\n          }\n        }\n      }\n    })\n    ;['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n      ;['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach(function (\n        inside\n      ) {\n        if (token !== inside) {\n          Prism.languages.markdown[token].inside.content.inside[inside] =\n            Prism.languages.markdown[inside]\n        }\n      })\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (env.language !== 'markdown' && env.language !== 'md') {\n        return\n      }\n      function walkTokens(tokens) {\n        if (!tokens || typeof tokens === 'string') {\n          return\n        }\n        for (var i = 0, l = tokens.length; i < l; i++) {\n          var token = tokens[i]\n          if (token.type !== 'code') {\n            walkTokens(token.content)\n            continue\n          }\n          /*\n           * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n           * is optional. But the grammar is defined so that there is only one case we have to handle:\n           *\n           * token.content = [\n           *     <span class=\"punctuation\">```</span>,\n           *     <span class=\"code-language\">xxxx</span>,\n           *     '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n           *     <span class=\"code-block\">...</span>,\n           *     '\\n', // exactly one new lines again\n           *     <span class=\"punctuation\">```</span>\n           * ];\n           */\n          var codeLang = token.content[1]\n          var codeBlock = token.content[3]\n          if (\n            codeLang &&\n            codeBlock &&\n            codeLang.type === 'code-language' &&\n            codeBlock.type === 'code-block' &&\n            typeof codeLang.content === 'string'\n          ) {\n            // this might be a language that Prism does not support\n            // do some replacements to support C++, C#, and F#\n            var lang = codeLang.content\n              .replace(/\\b#/g, 'sharp')\n              .replace(/\\b\\+\\+/g, 'pp') // only use the first word\n            lang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase()\n            var alias = 'language-' + lang // add alias\n            if (!codeBlock.alias) {\n              codeBlock.alias = [alias]\n            } else if (typeof codeBlock.alias === 'string') {\n              codeBlock.alias = [codeBlock.alias, alias]\n            } else {\n              codeBlock.alias.push(alias)\n            }\n          }\n        }\n      }\n      walkTokens(env.tokens)\n    })\n    Prism.hooks.add('wrap', function (env) {\n      if (env.type !== 'code-block') {\n        return\n      }\n      var codeLang = ''\n      for (var i = 0, l = env.classes.length; i < l; i++) {\n        var cls = env.classes[i]\n        var match = /language-(.+)/.exec(cls)\n        if (match) {\n          codeLang = match[1]\n          break\n        }\n      }\n      var grammar = Prism.languages[codeLang]\n      if (!grammar) {\n        if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n          var id =\n            'md-' +\n            new Date().valueOf() +\n            '-' +\n            Math.floor(Math.random() * 1e16)\n          env.attributes['id'] = id\n          Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n            var ele = document.getElementById(id)\n            if (ele) {\n              ele.innerHTML = Prism.highlight(\n                ele.textContent,\n                Prism.languages[codeLang],\n                codeLang\n              )\n            }\n          })\n        }\n      } else {\n        env.content = Prism.highlight(\n          textContent(env.content.value),\n          grammar,\n          codeLang\n        )\n      }\n    })\n    var tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi')\n    /**\n     * A list of known entity names.\n     *\n     * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n     *\n     * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n     */\n    var KNOWN_ENTITY_NAMES = {\n      amp: '&',\n      lt: '<',\n      gt: '>',\n      quot: '\"'\n    } // IE 11 doesn't support `String.fromCodePoint`\n    var fromCodePoint = String.fromCodePoint || String.fromCharCode\n    /**\n     * Returns the text content of a given HTML source code string.\n     *\n     * @param {string} html\n     * @returns {string}\n     */\n    function textContent(html) {\n      // remove all tags\n      var text = html.replace(tagPattern, '') // decode known entities\n      text = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n        code = code.toLowerCase()\n        if (code[0] === '#') {\n          var value\n          if (code[1] === 'x') {\n            value = parseInt(code.slice(2), 16)\n          } else {\n            value = Number(code.slice(1))\n          }\n          return fromCodePoint(value)\n        } else {\n          var known = KNOWN_ENTITY_NAMES[code]\n          if (known) {\n            return known\n          } // unable to decode\n          return m\n        }\n      })\n      return text\n    }\n    Prism.languages.md = Prism.languages.markdown\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = markupTemplating\nmarkupTemplating.displayName = 'markupTemplating'\nmarkupTemplating.aliases = []\nfunction markupTemplating(Prism) {\n  ;(function (Prism) {\n    /**\n     * Returns the placeholder for the given language id and index.\n     *\n     * @param {string} language\n     * @param {string|number} index\n     * @returns {string}\n     */\n    function getPlaceholder(language, index) {\n      return '___' + language.toUpperCase() + index + '___'\n    }\n    Object.defineProperties((Prism.languages['markup-templating'] = {}), {\n      buildPlaceholders: {\n        /**\n         * Tokenize all inline templating expressions matching `placeholderPattern`.\n         *\n         * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n         * `true` will be replaced.\n         *\n         * @param {object} env The environment of the `before-tokenize` hook.\n         * @param {string} language The language id.\n         * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n         * @param {(match: string) => boolean} [replaceFilter]\n         */\n        value: function (env, language, placeholderPattern, replaceFilter) {\n          if (env.language !== language) {\n            return\n          }\n          var tokenStack = (env.tokenStack = [])\n          env.code = env.code.replace(placeholderPattern, function (match) {\n            if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n              return match\n            }\n            var i = tokenStack.length\n            var placeholder // Check for existing strings\n            while (\n              env.code.indexOf((placeholder = getPlaceholder(language, i))) !==\n              -1\n            ) {\n              ++i\n            } // Create a sparse array\n            tokenStack[i] = match\n            return placeholder\n          }) // Switch the grammar to markup\n          env.grammar = Prism.languages.markup\n        }\n      },\n      tokenizePlaceholders: {\n        /**\n         * Replace placeholders with proper tokens after tokenizing.\n         *\n         * @param {object} env The environment of the `after-tokenize` hook.\n         * @param {string} language The language id.\n         */\n        value: function (env, language) {\n          if (env.language !== language || !env.tokenStack) {\n            return\n          } // Switch the grammar back\n          env.grammar = Prism.languages[language]\n          var j = 0\n          var keys = Object.keys(env.tokenStack)\n          function walkTokens(tokens) {\n            for (var i = 0; i < tokens.length; i++) {\n              // all placeholders are replaced already\n              if (j >= keys.length) {\n                break\n              }\n              var token = tokens[i]\n              if (\n                typeof token === 'string' ||\n                (token.content && typeof token.content === 'string')\n              ) {\n                var k = keys[j]\n                var t = env.tokenStack[k]\n                var s = typeof token === 'string' ? token : token.content\n                var placeholder = getPlaceholder(language, k)\n                var index = s.indexOf(placeholder)\n                if (index > -1) {\n                  ++j\n                  var before = s.substring(0, index)\n                  var middle = new Prism.Token(\n                    language,\n                    Prism.tokenize(t, env.grammar),\n                    'language-' + language,\n                    t\n                  )\n                  var after = s.substring(index + placeholder.length)\n                  var replacement = []\n                  if (before) {\n                    replacement.push.apply(replacement, walkTokens([before]))\n                  }\n                  replacement.push(middle)\n                  if (after) {\n                    replacement.push.apply(replacement, walkTokens([after]))\n                  }\n                  if (typeof token === 'string') {\n                    tokens.splice.apply(tokens, [i, 1].concat(replacement))\n                  } else {\n                    token.content = replacement\n                  }\n                }\n              } else if (\n                token.content\n                /* && typeof token.content !== 'string' */\n              ) {\n                walkTokens(token.content)\n              }\n            }\n            return tokens\n          }\n          walkTokens(env.tokens)\n        }\n      }\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = markup\nmarkup.displayName = 'markup'\nmarkup.aliases = ['html', 'mathml', 'svg', 'xml', 'ssml', 'atom', 'rss']\nfunction markup(Prism) {\n  Prism.languages.markup = {\n    comment: {\n      pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n      greedy: true\n    },\n    prolog: {\n      pattern: /<\\?[\\s\\S]+?\\?>/,\n      greedy: true\n    },\n    doctype: {\n      // https://www.w3.org/TR/xml/#NT-doctypedecl\n      pattern:\n        /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n      greedy: true,\n      inside: {\n        'internal-subset': {\n          pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n          lookbehind: true,\n          greedy: true,\n          inside: null // see below\n        },\n        string: {\n          pattern: /\"[^\"]*\"|'[^']*'/,\n          greedy: true\n        },\n        punctuation: /^<!|>$|[[\\]]/,\n        'doctype-tag': /^DOCTYPE/i,\n        name: /[^\\s<>'\"]+/\n      }\n    },\n    cdata: {\n      pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n      greedy: true\n    },\n    tag: {\n      pattern:\n        /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n      greedy: true,\n      inside: {\n        tag: {\n          pattern: /^<\\/?[^\\s>\\/]+/,\n          inside: {\n            punctuation: /^<\\/?/,\n            namespace: /^[^\\s>\\/:]+:/\n          }\n        },\n        'special-attr': [],\n        'attr-value': {\n          pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n          inside: {\n            punctuation: [\n              {\n                pattern: /^=/,\n                alias: 'attr-equals'\n              },\n              /\"|'/\n            ]\n          }\n        },\n        punctuation: /\\/?>/,\n        'attr-name': {\n          pattern: /[^\\s>\\/]+/,\n          inside: {\n            namespace: /^[^\\s>\\/:]+:/\n          }\n        }\n      }\n    },\n    entity: [\n      {\n        pattern: /&[\\da-z]{1,8};/i,\n        alias: 'named-entity'\n      },\n      /&#x?[\\da-f]{1,8};/i\n    ]\n  }\n  Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n    Prism.languages.markup['entity']\n  Prism.languages.markup['doctype'].inside['internal-subset'].inside =\n    Prism.languages.markup // Plugin to make entity title show the real entity, idea by Roman Komarov\n  Prism.hooks.add('wrap', function (env) {\n    if (env.type === 'entity') {\n      env.attributes['title'] = env.content.value.replace(/&amp;/, '&')\n    }\n  })\n  Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n    /**\n     * Adds an inlined language to markup.\n     *\n     * An example of an inlined language is CSS with `<style>` tags.\n     *\n     * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n     * case insensitive.\n     * @param {string} lang The language key.\n     * @example\n     * addInlined('style', 'css');\n     */\n    value: function addInlined(tagName, lang) {\n      var includedCdataInside = {}\n      includedCdataInside['language-' + lang] = {\n        pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n        lookbehind: true,\n        inside: Prism.languages[lang]\n      }\n      includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i\n      var inside = {\n        'included-cdata': {\n          pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n          inside: includedCdataInside\n        }\n      }\n      inside['language-' + lang] = {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages[lang]\n      }\n      var def = {}\n      def[tagName] = {\n        pattern: RegExp(\n          /(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(\n            /__/g,\n            function () {\n              return tagName\n            }\n          ),\n          'i'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: inside\n      }\n      Prism.languages.insertBefore('markup', 'cdata', def)\n    }\n  })\n  Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n    /**\n     * Adds an pattern to highlight languages embedded in HTML attributes.\n     *\n     * An example of an inlined language is CSS with `style` attributes.\n     *\n     * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n     * case insensitive.\n     * @param {string} lang The language key.\n     * @example\n     * addAttribute('style', 'css');\n     */\n    value: function (attrName, lang) {\n      Prism.languages.markup.tag.inside['special-attr'].push({\n        pattern: RegExp(\n          /(^|[\"'\\s])/.source +\n            '(?:' +\n            attrName +\n            ')' +\n            /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n          'i'\n        ),\n        lookbehind: true,\n        inside: {\n          'attr-name': /^[^\\s=]+/,\n          'attr-value': {\n            pattern: /=[\\s\\S]+/,\n            inside: {\n              value: {\n                pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n                lookbehind: true,\n                alias: [lang, 'language-' + lang],\n                inside: Prism.languages[lang]\n              },\n              punctuation: [\n                {\n                  pattern: /^=/,\n                  alias: 'attr-equals'\n                },\n                /\"|'/\n              ]\n            }\n          }\n        }\n      })\n    }\n  })\n  Prism.languages.html = Prism.languages.markup\n  Prism.languages.mathml = Prism.languages.markup\n  Prism.languages.svg = Prism.languages.markup\n  Prism.languages.xml = Prism.languages.extend('markup', {})\n  Prism.languages.ssml = Prism.languages.xml\n  Prism.languages.atom = Prism.languages.xml\n  Prism.languages.rss = Prism.languages.xml\n}\n","'use strict'\n\nmodule.exports = matlab\nmatlab.displayName = 'matlab'\nmatlab.aliases = []\nfunction matlab(Prism) {\n  Prism.languages.matlab = {\n    comment: [/%\\{[\\s\\S]*?\\}%/, /%.+/],\n    string: {\n      pattern: /\\B'(?:''|[^'\\r\\n])*'/,\n      greedy: true\n    },\n    // FIXME We could handle imaginary numbers as a whole\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?(?:[ij])?|\\b[ij]\\b/,\n    keyword:\n      /\\b(?:NaN|break|case|catch|continue|else|elseif|end|for|function|if|inf|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n    function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n    operator: /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n    punctuation: /\\.{3}|[.,;\\[\\](){}!]/\n  }\n}\n","'use strict'\n\nmodule.exports = maxscript\nmaxscript.displayName = 'maxscript'\nmaxscript.aliases = []\nfunction maxscript(Prism) {\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:about|and|animate|as|at|attributes|by|case|catch|collect|continue|coordsys|do|else|exit|fn|for|from|function|global|if|in|local|macroscript|mapped|max|not|of|off|on|or|parameters|persistent|plugin|rcmenu|return|rollout|set|struct|then|throw|to|tool|try|undo|utility|when|where|while|with)\\b/i\n    Prism.languages.maxscript = {\n      comment: {\n        pattern: /\\/\\*[\\s\\S]*?(?:\\*\\/|$)|--.*/,\n        greedy: true\n      },\n      string: {\n        pattern: /(^|[^\"\\\\@])(?:\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|@\"[^\"]*\")/,\n        lookbehind: true,\n        greedy: true\n      },\n      path: {\n        pattern: /\\$(?:[\\w/\\\\.*?]|'[^']*')*/,\n        greedy: true,\n        alias: 'string'\n      },\n      'function-call': {\n        pattern: RegExp(\n          '((?:' + // start of line\n            (/^/.source +\n              '|' + // operators and other language constructs\n              /[;=<>+\\-*/^({\\[]/.source +\n              '|' + // keywords as part of statements\n              /\\b(?:and|by|case|catch|collect|do|else|if|in|not|or|return|then|to|try|where|while|with)\\b/\n                .source) +\n            ')[ \\t]*)' +\n            '(?!' +\n            keywords.source +\n            ')' +\n            /[a-z_]\\w*\\b/.source +\n            '(?=[ \\t]*(?:' + // variable\n            ('(?!' +\n              keywords.source +\n              ')' +\n              /[a-z_]/.source +\n              '|' + // number\n              /\\d|-\\.?\\d/.source +\n              '|' + // other expressions or literals\n              /[({'\"$@#?]/.source) +\n            '))',\n          'im'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'function'\n      },\n      'function-definition': {\n        pattern: /(\\b(?:fn|function)\\s+)\\w+\\b/i,\n        lookbehind: true,\n        alias: 'function'\n      },\n      argument: {\n        pattern: /\\b[a-z_]\\w*(?=:)/i,\n        alias: 'attr-name'\n      },\n      keyword: keywords,\n      boolean: /\\b(?:false|true)\\b/,\n      time: {\n        pattern:\n          /(^|[^\\w.])(?:(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eEdD][+-]\\d+|[LP])?[msft])+|\\d+:\\d+(?:\\.\\d*)?)(?![\\w.:])/,\n        lookbehind: true,\n        alias: 'number'\n      },\n      number: [\n        {\n          pattern:\n            /(^|[^\\w.])(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eEdD][+-]\\d+|[LP])?|0x[a-fA-F0-9]+)(?![\\w.:])/,\n          lookbehind: true\n        },\n        /\\b(?:e|pi)\\b/\n      ],\n      constant: /\\b(?:dontcollect|ok|silentValue|undefined|unsupplied)\\b/,\n      color: {\n        pattern: /\\b(?:black|blue|brown|gray|green|orange|red|white|yellow)\\b/i,\n        alias: 'constant'\n      },\n      operator: /[-+*/<>=!]=?|[&^?]|#(?!\\()/,\n      punctuation: /[()\\[\\]{}.:,;]|#(?=\\()|\\\\$/m\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = mel\nmel.displayName = 'mel'\nmel.aliases = []\nfunction mel(Prism) {\n  Prism.languages.mel = {\n    comment: /\\/\\/.*/,\n    code: {\n      pattern: /`(?:\\\\.|[^\\\\`\\r\\n])*`/,\n      greedy: true,\n      alias: 'italic',\n      inside: {\n        delimiter: {\n          pattern: /^`|`$/,\n          alias: 'punctuation'\n        } // See rest below\n      }\n    },\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n      greedy: true\n    },\n    variable: /\\$\\w+/,\n    number: /\\b0x[\\da-fA-F]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+/,\n    flag: {\n      pattern: /-[^\\d\\W]\\w*/,\n      alias: 'operator'\n    },\n    keyword:\n      /\\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\\b/,\n    function:\n      /\\b\\w+(?=\\()|\\b(?:CBG|HfAddAttractorToAS|HfAssignAS|HfBuildEqualMap|HfBuildFurFiles|HfBuildFurImages|HfCancelAFR|HfConnectASToHF|HfCreateAttractor|HfDeleteAS|HfEditAS|HfPerformCreateAS|HfRemoveAttractorFromAS|HfSelectAttached|HfSelectAttractors|HfUnAssignAS|Mayatomr|about|abs|addAttr|addAttributeEditorNodeHelp|addDynamic|addNewShelfTab|addPP|addPanelCategory|addPrefixToName|advanceToNextDrivenKey|affectedNet|affects|aimConstraint|air|alias|aliasAttr|align|alignCtx|alignCurve|alignSurface|allViewFit|ambientLight|angle|angleBetween|animCone|animCurveEditor|animDisplay|animView|annotate|appendStringArray|applicationName|applyAttrPreset|applyTake|arcLenDimContext|arcLengthDimension|arclen|arrayMapper|art3dPaintCtx|artAttrCtx|artAttrPaintVertexCtx|artAttrSkinPaintCtx|artAttrTool|artBuildPaintMenu|artFluidAttrCtx|artPuttyCtx|artSelectCtx|artSetPaintCtx|artUserPaintCtx|assignCommand|assignInputDevice|assignViewportFactories|attachCurve|attachDeviceAttr|attachSurface|attrColorSliderGrp|attrCompatibility|attrControlGrp|attrEnumOptionMenu|attrEnumOptionMenuGrp|attrFieldGrp|attrFieldSliderGrp|attrNavigationControlGrp|attrPresetEditWin|attributeExists|attributeInfo|attributeMenu|attributeQuery|autoKeyframe|autoPlace|bakeClip|bakeFluidShading|bakePartialHistory|bakeResults|bakeSimulation|basename|basenameEx|batchRender|bessel|bevel|bevelPlus|binMembership|bindSkin|blend2|blendShape|blendShapeEditor|blendShapePanel|blendTwoAttr|blindDataType|boneLattice|boundary|boxDollyCtx|boxZoomCtx|bufferCurve|buildBookmarkMenu|buildKeyframeMenu|button|buttonManip|cacheFile|cacheFileCombine|cacheFileMerge|cacheFileTrack|camera|cameraView|canCreateManip|canvas|capitalizeString|catch|catchQuiet|ceil|changeSubdivComponentDisplayLevel|changeSubdivRegion|channelBox|character|characterMap|characterOutlineEditor|characterize|chdir|checkBox|checkBoxGrp|checkDefaultRenderGlobals|choice|circle|circularFillet|clamp|clear|clearCache|clip|clipEditor|clipEditorCurrentTimeCtx|clipSchedule|clipSchedulerOutliner|clipTrimBefore|closeCurve|closeSurface|cluster|cmdFileOutput|cmdScrollFieldExecuter|cmdScrollFieldReporter|cmdShell|coarsenSubdivSelectionList|collision|color|colorAtPoint|colorEditor|colorIndex|colorIndexSliderGrp|colorSliderButtonGrp|colorSliderGrp|columnLayout|commandEcho|commandLine|commandPort|compactHairSystem|componentEditor|compositingInterop|computePolysetVolume|condition|cone|confirmDialog|connectAttr|connectControl|connectDynamic|connectJoint|connectionInfo|constrain|constrainValue|constructionHistory|container|containsMultibyte|contextInfo|control|convertFromOldLayers|convertIffToPsd|convertLightmap|convertSolidTx|convertTessellation|convertUnit|copyArray|copyFlexor|copyKey|copySkinWeights|cos|cpButton|cpCache|cpClothSet|cpCollision|cpConstraint|cpConvClothToMesh|cpForces|cpGetSolverAttr|cpPanel|cpProperty|cpRigidCollisionFilter|cpSeam|cpSetEdit|cpSetSolverAttr|cpSolver|cpSolverTypes|cpTool|cpUpdateClothUVs|createDisplayLayer|createDrawCtx|createEditor|createLayeredPsdFile|createMotionField|createNewShelf|createNode|createRenderLayer|createSubdivRegion|cross|crossProduct|ctxAbort|ctxCompletion|ctxEditMode|ctxTraverse|currentCtx|currentTime|currentTimeCtx|currentUnit|curve|curveAddPtCtx|curveCVCtx|curveEPCtx|curveEditorCtx|curveIntersect|curveMoveEPCtx|curveOnSurface|curveSketchCtx|cutKey|cycleCheck|cylinder|dagPose|date|defaultLightListCheckBox|defaultNavigation|defineDataServer|defineVirtualDevice|deformer|deg_to_rad|delete|deleteAttr|deleteShadingGroupsAndMaterials|deleteShelfTab|deleteUI|deleteUnusedBrushes|delrandstr|detachCurve|detachDeviceAttr|detachSurface|deviceEditor|devicePanel|dgInfo|dgdirty|dgeval|dgtimer|dimWhen|directKeyCtx|directionalLight|dirmap|dirname|disable|disconnectAttr|disconnectJoint|diskCache|displacementToPoly|displayAffected|displayColor|displayCull|displayLevelOfDetail|displayPref|displayRGBColor|displaySmoothness|displayStats|displayString|displaySurface|distanceDimContext|distanceDimension|doBlur|dolly|dollyCtx|dopeSheetEditor|dot|dotProduct|doubleProfileBirailSurface|drag|dragAttrContext|draggerContext|dropoffLocator|duplicate|duplicateCurve|duplicateSurface|dynCache|dynControl|dynExport|dynExpression|dynGlobals|dynPaintEditor|dynParticleCtx|dynPref|dynRelEdPanel|dynRelEditor|dynamicLoad|editAttrLimits|editDisplayLayerGlobals|editDisplayLayerMembers|editRenderLayerAdjustment|editRenderLayerGlobals|editRenderLayerMembers|editor|editorTemplate|effector|emit|emitter|enableDevice|encodeString|endString|endsWith|env|equivalent|equivalentTol|erf|error|eval|evalDeferred|evalEcho|event|exactWorldBoundingBox|exclusiveLightCheckBox|exec|executeForEachObject|exists|exp|expression|expressionEditorListen|extendCurve|extendSurface|extrude|fcheck|fclose|feof|fflush|fgetline|fgetword|file|fileBrowserDialog|fileDialog|fileExtension|fileInfo|filetest|filletCurve|filter|filterCurve|filterExpand|filterStudioImport|findAllIntersections|findAnimCurves|findKeyframe|findMenuItem|findRelatedSkinCluster|finder|firstParentOf|fitBspline|flexor|floatEq|floatField|floatFieldGrp|floatScrollBar|floatSlider|floatSlider2|floatSliderButtonGrp|floatSliderGrp|floor|flow|fluidCacheInfo|fluidEmitter|fluidVoxelInfo|flushUndo|fmod|fontDialog|fopen|formLayout|format|fprint|frameLayout|fread|freeFormFillet|frewind|fromNativePath|fwrite|gamma|gauss|geometryConstraint|getApplicationVersionAsFloat|getAttr|getClassification|getDefaultBrush|getFileList|getFluidAttr|getInputDeviceRange|getMayaPanelTypes|getModifiers|getPanel|getParticleAttr|getPluginResource|getenv|getpid|glRender|glRenderEditor|globalStitch|gmatch|goal|gotoBindPose|grabColor|gradientControl|gradientControlNoAttr|graphDollyCtx|graphSelectContext|graphTrackCtx|gravity|grid|gridLayout|group|groupObjectsByName|hardenPointCurve|hardware|hardwareRenderPanel|headsUpDisplay|headsUpMessage|help|helpLine|hermite|hide|hilite|hitTest|hotBox|hotkey|hotkeyCheck|hsv_to_rgb|hudButton|hudSlider|hudSliderButton|hwReflectionMap|hwRender|hwRenderLoad|hyperGraph|hyperPanel|hyperShade|hypot|iconTextButton|iconTextCheckBox|iconTextRadioButton|iconTextRadioCollection|iconTextScrollList|iconTextStaticLabel|ikHandle|ikHandleCtx|ikHandleDisplayScale|ikSolver|ikSplineHandleCtx|ikSystem|ikSystemInfo|ikfkDisplayMethod|illustratorCurves|image|imfPlugins|inheritTransform|insertJoint|insertJointCtx|insertKeyCtx|insertKnotCurve|insertKnotSurface|instance|instanceable|instancer|intField|intFieldGrp|intScrollBar|intSlider|intSliderGrp|interToUI|internalVar|intersect|iprEngine|isAnimCurve|isConnected|isDirty|isParentOf|isSameObject|isTrue|isValidObjectName|isValidString|isValidUiName|isolateSelect|itemFilter|itemFilterAttr|itemFilterRender|itemFilterType|joint|jointCluster|jointCtx|jointDisplayScale|jointLattice|keyTangent|keyframe|keyframeOutliner|keyframeRegionCurrentTimeCtx|keyframeRegionDirectKeyCtx|keyframeRegionDollyCtx|keyframeRegionInsertKeyCtx|keyframeRegionMoveKeyCtx|keyframeRegionScaleKeyCtx|keyframeRegionSelectKeyCtx|keyframeRegionSetKeyCtx|keyframeRegionTrackCtx|keyframeStats|lassoContext|lattice|latticeDeformKeyCtx|launch|launchImageEditor|layerButton|layeredShaderPort|layeredTexturePort|layout|layoutDialog|lightList|lightListEditor|lightListPanel|lightlink|lineIntersection|linearPrecision|linstep|listAnimatable|listAttr|listCameras|listConnections|listDeviceAttachments|listHistory|listInputDeviceAxes|listInputDeviceButtons|listInputDevices|listMenuAnnotation|listNodeTypes|listPanelCategories|listRelatives|listSets|listTransforms|listUnselected|listerEditor|loadFluid|loadNewShelf|loadPlugin|loadPluginLanguageResources|loadPrefObjects|localizedPanelLabel|lockNode|loft|log|longNameOf|lookThru|ls|lsThroughFilter|lsType|lsUI|mag|makeIdentity|makeLive|makePaintable|makeRoll|makeSingleSurface|makeTubeOn|makebot|manipMoveContext|manipMoveLimitsCtx|manipOptions|manipRotateContext|manipRotateLimitsCtx|manipScaleContext|manipScaleLimitsCtx|marker|match|max|memory|menu|menuBarLayout|menuEditor|menuItem|menuItemToShelf|menuSet|menuSetPref|messageLine|min|minimizeApp|mirrorJoint|modelCurrentTimeCtx|modelEditor|modelPanel|mouse|movIn|movOut|move|moveIKtoFK|moveKeyCtx|moveVertexAlongDirection|multiProfileBirailSurface|mute|nParticle|nameCommand|nameField|namespace|namespaceInfo|newPanelItems|newton|nodeCast|nodeIconButton|nodeOutliner|nodePreset|nodeType|noise|nonLinear|normalConstraint|normalize|nurbsBoolean|nurbsCopyUVSet|nurbsCube|nurbsEditUV|nurbsPlane|nurbsSelect|nurbsSquare|nurbsToPoly|nurbsToPolygonsPref|nurbsToSubdiv|nurbsToSubdivPref|nurbsUVSet|nurbsViewDirectionVector|objExists|objectCenter|objectLayer|objectType|objectTypeUI|obsoleteProc|oceanNurbsPreviewPlane|offsetCurve|offsetCurveOnSurface|offsetSurface|openGLExtension|openMayaPref|optionMenu|optionMenuGrp|optionVar|orbit|orbitCtx|orientConstraint|outlinerEditor|outlinerPanel|overrideModifier|paintEffectsDisplay|pairBlend|palettePort|paneLayout|panel|panelConfiguration|panelHistory|paramDimContext|paramDimension|paramLocator|parent|parentConstraint|particle|particleExists|particleInstancer|particleRenderInfo|partition|pasteKey|pathAnimation|pause|pclose|percent|performanceOptions|pfxstrokes|pickWalk|picture|pixelMove|planarSrf|plane|play|playbackOptions|playblast|plugAttr|plugNode|pluginInfo|pluginResourceUtil|pointConstraint|pointCurveConstraint|pointLight|pointMatrixMult|pointOnCurve|pointOnSurface|pointPosition|poleVectorConstraint|polyAppend|polyAppendFacetCtx|polyAppendVertex|polyAutoProjection|polyAverageNormal|polyAverageVertex|polyBevel|polyBlendColor|polyBlindData|polyBoolOp|polyBridgeEdge|polyCacheMonitor|polyCheck|polyChipOff|polyClipboard|polyCloseBorder|polyCollapseEdge|polyCollapseFacet|polyColorBlindData|polyColorDel|polyColorPerVertex|polyColorSet|polyCompare|polyCone|polyCopyUV|polyCrease|polyCreaseCtx|polyCreateFacet|polyCreateFacetCtx|polyCube|polyCut|polyCutCtx|polyCylinder|polyCylindricalProjection|polyDelEdge|polyDelFacet|polyDelVertex|polyDuplicateAndConnect|polyDuplicateEdge|polyEditUV|polyEditUVShell|polyEvaluate|polyExtrudeEdge|polyExtrudeFacet|polyExtrudeVertex|polyFlipEdge|polyFlipUV|polyForceUV|polyGeoSampler|polyHelix|polyInfo|polyInstallAction|polyLayoutUV|polyListComponentConversion|polyMapCut|polyMapDel|polyMapSew|polyMapSewMove|polyMergeEdge|polyMergeEdgeCtx|polyMergeFacet|polyMergeFacetCtx|polyMergeUV|polyMergeVertex|polyMirrorFace|polyMoveEdge|polyMoveFacet|polyMoveFacetUV|polyMoveUV|polyMoveVertex|polyNormal|polyNormalPerVertex|polyNormalizeUV|polyOptUvs|polyOptions|polyOutput|polyPipe|polyPlanarProjection|polyPlane|polyPlatonicSolid|polyPoke|polyPrimitive|polyPrism|polyProjection|polyPyramid|polyQuad|polyQueryBlindData|polyReduce|polySelect|polySelectConstraint|polySelectConstraintMonitor|polySelectCtx|polySelectEditCtx|polySeparate|polySetToFaceNormal|polySewEdge|polyShortestPathCtx|polySmooth|polySoftEdge|polySphere|polySphericalProjection|polySplit|polySplitCtx|polySplitEdge|polySplitRing|polySplitVertex|polyStraightenUVBorder|polySubdivideEdge|polySubdivideFacet|polyToSubdiv|polyTorus|polyTransfer|polyTriangulate|polyUVSet|polyUnite|polyWedgeFace|popen|popupMenu|pose|pow|preloadRefEd|print|progressBar|progressWindow|projFileViewer|projectCurve|projectTangent|projectionContext|projectionManip|promptDialog|propModCtx|propMove|psdChannelOutliner|psdEditTextureFile|psdExport|psdTextureFile|putenv|pwd|python|querySubdiv|quit|rad_to_deg|radial|radioButton|radioButtonGrp|radioCollection|radioMenuItemCollection|rampColorPort|rand|randomizeFollicles|randstate|rangeControl|readTake|rebuildCurve|rebuildSurface|recordAttr|recordDevice|redo|reference|referenceEdit|referenceQuery|refineSubdivSelectionList|refresh|refreshAE|registerPluginResource|rehash|reloadImage|removeJoint|removeMultiInstance|removePanelCategory|rename|renameAttr|renameSelectionList|renameUI|render|renderGlobalsNode|renderInfo|renderLayerButton|renderLayerParent|renderLayerPostProcess|renderLayerUnparent|renderManip|renderPartition|renderQualityNode|renderSettings|renderThumbnailUpdate|renderWindowEditor|renderWindowSelectContext|renderer|reorder|reorderDeformers|requires|reroot|resampleFluid|resetAE|resetPfxToPolyCamera|resetTool|resolutionNode|retarget|reverseCurve|reverseSurface|revolve|rgb_to_hsv|rigidBody|rigidSolver|roll|rollCtx|rootOf|rot|rotate|rotationInterpolation|roundConstantRadius|rowColumnLayout|rowLayout|runTimeCommand|runup|sampleImage|saveAllShelves|saveAttrPreset|saveFluid|saveImage|saveInitialState|saveMenu|savePrefObjects|savePrefs|saveShelf|saveToolSettings|scale|scaleBrushBrightness|scaleComponents|scaleConstraint|scaleKey|scaleKeyCtx|sceneEditor|sceneUIReplacement|scmh|scriptCtx|scriptEditorInfo|scriptJob|scriptNode|scriptTable|scriptToShelf|scriptedPanel|scriptedPanelType|scrollField|scrollLayout|sculpt|searchPathArray|seed|selLoadSettings|select|selectContext|selectCurveCV|selectKey|selectKeyCtx|selectKeyframeRegionCtx|selectMode|selectPref|selectPriority|selectType|selectedNodes|selectionConnection|separator|setAttr|setAttrEnumResource|setAttrMapping|setAttrNiceNameResource|setConstraintRestPosition|setDefaultShadingGroup|setDrivenKeyframe|setDynamic|setEditCtx|setEditor|setFluidAttr|setFocus|setInfinity|setInputDeviceMapping|setKeyCtx|setKeyPath|setKeyframe|setKeyframeBlendshapeTargetWts|setMenuMode|setNodeNiceNameResource|setNodeTypeFlag|setParent|setParticleAttr|setPfxToPolyCamera|setPluginResource|setProject|setStampDensity|setStartupMessage|setState|setToolTo|setUITemplate|setXformManip|sets|shadingConnection|shadingGeometryRelCtx|shadingLightRelCtx|shadingNetworkCompare|shadingNode|shapeCompare|shelfButton|shelfLayout|shelfTabLayout|shellField|shortNameOf|showHelp|showHidden|showManipCtx|showSelectionInTitle|showShadingGroupAttrEditor|showWindow|sign|simplify|sin|singleProfileBirailSurface|size|sizeBytes|skinCluster|skinPercent|smoothCurve|smoothTangentSurface|smoothstep|snap2to2|snapKey|snapMode|snapTogetherCtx|snapshot|soft|softMod|softModCtx|sort|sound|soundControl|source|spaceLocator|sphere|sphrand|spotLight|spotLightPreviewPort|spreadSheetEditor|spring|sqrt|squareSurface|srtContext|stackTrace|startString|startsWith|stitchAndExplodeShell|stitchSurface|stitchSurfacePoints|strcmp|stringArrayCatenate|stringArrayContains|stringArrayCount|stringArrayInsertAtIndex|stringArrayIntersector|stringArrayRemove|stringArrayRemoveAtIndex|stringArrayRemoveDuplicates|stringArrayRemoveExact|stringArrayToString|stringToStringArray|strip|stripPrefixFromName|stroke|subdAutoProjection|subdCleanTopology|subdCollapse|subdDuplicateAndConnect|subdEditUV|subdListComponentConversion|subdMapCut|subdMapSewMove|subdMatchTopology|subdMirror|subdToBlind|subdToPoly|subdTransferUVsToCache|subdiv|subdivCrease|subdivDisplaySmoothness|substitute|substituteAllString|substituteGeometry|substring|surface|surfaceSampler|surfaceShaderList|swatchDisplayPort|switchTable|symbolButton|symbolCheckBox|sysFile|system|tabLayout|tan|tangentConstraint|texLatticeDeformContext|texManipContext|texMoveContext|texMoveUVShellContext|texRotateContext|texScaleContext|texSelectContext|texSelectShortestPathCtx|texSmudgeUVContext|texWinToolCtx|text|textCurves|textField|textFieldButtonGrp|textFieldGrp|textManip|textScrollList|textToShelf|textureDisplacePlane|textureHairColor|texturePlacementContext|textureWindow|threadCount|threePointArcCtx|timeControl|timePort|timerX|toNativePath|toggle|toggleAxis|toggleWindowVisibility|tokenize|tokenizeList|tolerance|tolower|toolButton|toolCollection|toolDropped|toolHasOptions|toolPropertyWindow|torus|toupper|trace|track|trackCtx|transferAttributes|transformCompare|transformLimits|translator|trim|trunc|truncateFluidCache|truncateHairCache|tumble|tumbleCtx|turbulence|twoPointArcCtx|uiRes|uiTemplate|unassignInputDevice|undo|undoInfo|ungroup|uniform|unit|unloadPlugin|untangleUV|untitledFileName|untrim|upAxis|updateAE|userCtx|uvLink|uvSnapshot|validateShelfName|vectorize|view2dToolCtx|viewCamera|viewClipPlane|viewFit|viewHeadOn|viewLookAt|viewManip|viewPlace|viewSet|visor|volumeAxis|vortex|waitCursor|warning|webBrowser|webBrowserPrefs|whatIs|window|windowPref|wire|wireContext|workspace|wrinkle|wrinkleContext|writeTake|xbmLangPathList|xform)\\b/,\n    operator: [\n      /\\+[+=]?|-[-=]?|&&|\\|\\||[<>]=|[*\\/!=]=?|[%^]/,\n      {\n        // We don't want to match <<\n        pattern: /(^|[^<])<(?!<)/,\n        lookbehind: true\n      },\n      {\n        // We don't want to match >>\n        pattern: /(^|[^>])>(?!>)/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /<<|>>|[.,:;?\\[\\](){}]/\n  }\n  Prism.languages.mel['code'].inside.rest = Prism.languages.mel\n}\n","'use strict'\n\nmodule.exports = mermaid\nmermaid.displayName = 'mermaid'\nmermaid.aliases = []\nfunction mermaid(Prism) {\n  Prism.languages.mermaid = {\n    comment: {\n      pattern: /%%.*/,\n      greedy: true\n    },\n    style: {\n      pattern:\n        /^([ \\t]*(?:classDef|linkStyle|style)[ \\t]+[\\w$-]+[ \\t]+)\\w.*[^\\s;]/m,\n      lookbehind: true,\n      inside: {\n        property: /\\b\\w[\\w-]*(?=[ \\t]*:)/,\n        operator: /:/,\n        punctuation: /,/\n      }\n    },\n    'inter-arrow-label': {\n      pattern:\n        /([^<>ox.=-])(?:-[-.]|==)(?![<>ox.=-])[ \\t]*(?:\"[^\"\\r\\n]*\"|[^\\s\".=-](?:[^\\r\\n.=-]*[^\\s.=-])?)[ \\t]*(?:\\.+->?|--+[->]|==+[=>])(?![<>ox.=-])/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        arrow: {\n          pattern: /(?:\\.+->?|--+[->]|==+[=>])$/,\n          alias: 'operator'\n        },\n        label: {\n          pattern: /^([\\s\\S]{2}[ \\t]*)\\S(?:[\\s\\S]*\\S)?/,\n          lookbehind: true,\n          alias: 'property'\n        },\n        'arrow-head': {\n          pattern: /^\\S+/,\n          alias: ['arrow', 'operator']\n        }\n      }\n    },\n    arrow: [\n      // This might look complex but it really isn't.\n      // There are many possible arrows (see tests) and it's impossible to fit all of them into one pattern. The\n      // problem is that we only have one lookbehind per pattern. However, we cannot disallow too many arrow\n      // characters in the one lookbehind because that would create too many false negatives. So we have to split the\n      // arrows into different patterns.\n      {\n        // ER diagram\n        pattern: /(^|[^{}|o.-])[|}][|o](?:--|\\.\\.)[|o][|{](?![{}|o.-])/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      {\n        // flow chart\n        // (?:==+|--+|-\\.*-)\n        pattern:\n          /(^|[^<>ox.=-])(?:[<ox](?:==+|--+|-\\.*-)[>ox]?|(?:==+|--+|-\\.*-)[>ox]|===+|---+|-\\.+-)(?![<>ox.=-])/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      {\n        // sequence diagram\n        pattern:\n          /(^|[^<>()x-])(?:--?(?:>>|[x>)])(?![<>()x])|(?:<<|[x<(])--?(?!-))/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      {\n        // class diagram\n        pattern:\n          /(^|[^<>|*o.-])(?:[*o]--|--[*o]|<\\|?(?:--|\\.\\.)|(?:--|\\.\\.)\\|?>|--|\\.\\.)(?![<>|*o.-])/,\n        lookbehind: true,\n        alias: 'operator'\n      }\n    ],\n    label: {\n      pattern: /(^|[^|<])\\|(?:[^\\r\\n\"|]|\"[^\"\\r\\n]*\")+\\|/,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    text: {\n      pattern: /(?:[(\\[{]+|\\b>)(?:[^\\r\\n\"()\\[\\]{}]|\"[^\"\\r\\n]*\")+(?:[)\\]}]+|>)/,\n      alias: 'string'\n    },\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"/,\n      greedy: true\n    },\n    annotation: {\n      pattern:\n        /<<(?:abstract|choice|enumeration|fork|interface|join|service)>>|\\[\\[(?:choice|fork|join)\\]\\]/i,\n      alias: 'important'\n    },\n    keyword: [\n      // This language has both case-sensitive and case-insensitive keywords\n      {\n        pattern:\n          /(^[ \\t]*)(?:action|callback|class|classDef|classDiagram|click|direction|erDiagram|flowchart|gantt|gitGraph|graph|journey|link|linkStyle|pie|requirementDiagram|sequenceDiagram|stateDiagram|stateDiagram-v2|style|subgraph)(?![\\w$-])/m,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern:\n          /(^[ \\t]*)(?:activate|alt|and|as|autonumber|deactivate|else|end(?:[ \\t]+note)?|loop|opt|par|participant|rect|state|note[ \\t]+(?:over|(?:left|right)[ \\t]+of))(?![\\w$-])/im,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    entity: /#[a-z0-9]+;/,\n    operator: {\n      pattern: /(\\w[ \\t]*)&(?=[ \\t]*\\w)|:::|:/,\n      lookbehind: true\n    },\n    punctuation: /[(){};]/\n  }\n}\n","'use strict'\n\nmodule.exports = mizar\nmizar.displayName = 'mizar'\nmizar.aliases = []\nfunction mizar(Prism) {\n  Prism.languages.mizar = {\n    comment: /::.+/,\n    keyword:\n      /@proof\\b|\\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|end|environ|equals|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:ies|y)|when|where|with|wrt)\\b/,\n    parameter: {\n      pattern: /\\$(?:10|\\d)/,\n      alias: 'variable'\n    },\n    variable: /\\b\\w+(?=:)/,\n    number: /(?:\\b|-)\\d+\\b/,\n    operator: /\\.\\.\\.|->|&|\\.?=/,\n    punctuation: /\\(#|#\\)|[,:;\\[\\](){}]/\n  }\n}\n","'use strict'\n\nmodule.exports = mongodb\nmongodb.displayName = 'mongodb'\nmongodb.aliases = []\nfunction mongodb(Prism) {\n  ;(function (Prism) {\n    var operators = [\n      // query and projection\n      '$eq',\n      '$gt',\n      '$gte',\n      '$in',\n      '$lt',\n      '$lte',\n      '$ne',\n      '$nin',\n      '$and',\n      '$not',\n      '$nor',\n      '$or',\n      '$exists',\n      '$type',\n      '$expr',\n      '$jsonSchema',\n      '$mod',\n      '$regex',\n      '$text',\n      '$where',\n      '$geoIntersects',\n      '$geoWithin',\n      '$near',\n      '$nearSphere',\n      '$all',\n      '$elemMatch',\n      '$size',\n      '$bitsAllClear',\n      '$bitsAllSet',\n      '$bitsAnyClear',\n      '$bitsAnySet',\n      '$comment',\n      '$elemMatch',\n      '$meta',\n      '$slice', // update\n      '$currentDate',\n      '$inc',\n      '$min',\n      '$max',\n      '$mul',\n      '$rename',\n      '$set',\n      '$setOnInsert',\n      '$unset',\n      '$addToSet',\n      '$pop',\n      '$pull',\n      '$push',\n      '$pullAll',\n      '$each',\n      '$position',\n      '$slice',\n      '$sort',\n      '$bit', // aggregation pipeline stages\n      '$addFields',\n      '$bucket',\n      '$bucketAuto',\n      '$collStats',\n      '$count',\n      '$currentOp',\n      '$facet',\n      '$geoNear',\n      '$graphLookup',\n      '$group',\n      '$indexStats',\n      '$limit',\n      '$listLocalSessions',\n      '$listSessions',\n      '$lookup',\n      '$match',\n      '$merge',\n      '$out',\n      '$planCacheStats',\n      '$project',\n      '$redact',\n      '$replaceRoot',\n      '$replaceWith',\n      '$sample',\n      '$set',\n      '$skip',\n      '$sort',\n      '$sortByCount',\n      '$unionWith',\n      '$unset',\n      '$unwind',\n      '$setWindowFields', // aggregation pipeline operators\n      '$abs',\n      '$accumulator',\n      '$acos',\n      '$acosh',\n      '$add',\n      '$addToSet',\n      '$allElementsTrue',\n      '$and',\n      '$anyElementTrue',\n      '$arrayElemAt',\n      '$arrayToObject',\n      '$asin',\n      '$asinh',\n      '$atan',\n      '$atan2',\n      '$atanh',\n      '$avg',\n      '$binarySize',\n      '$bsonSize',\n      '$ceil',\n      '$cmp',\n      '$concat',\n      '$concatArrays',\n      '$cond',\n      '$convert',\n      '$cos',\n      '$dateFromParts',\n      '$dateToParts',\n      '$dateFromString',\n      '$dateToString',\n      '$dayOfMonth',\n      '$dayOfWeek',\n      '$dayOfYear',\n      '$degreesToRadians',\n      '$divide',\n      '$eq',\n      '$exp',\n      '$filter',\n      '$first',\n      '$floor',\n      '$function',\n      '$gt',\n      '$gte',\n      '$hour',\n      '$ifNull',\n      '$in',\n      '$indexOfArray',\n      '$indexOfBytes',\n      '$indexOfCP',\n      '$isArray',\n      '$isNumber',\n      '$isoDayOfWeek',\n      '$isoWeek',\n      '$isoWeekYear',\n      '$last',\n      '$last',\n      '$let',\n      '$literal',\n      '$ln',\n      '$log',\n      '$log10',\n      '$lt',\n      '$lte',\n      '$ltrim',\n      '$map',\n      '$max',\n      '$mergeObjects',\n      '$meta',\n      '$min',\n      '$millisecond',\n      '$minute',\n      '$mod',\n      '$month',\n      '$multiply',\n      '$ne',\n      '$not',\n      '$objectToArray',\n      '$or',\n      '$pow',\n      '$push',\n      '$radiansToDegrees',\n      '$range',\n      '$reduce',\n      '$regexFind',\n      '$regexFindAll',\n      '$regexMatch',\n      '$replaceOne',\n      '$replaceAll',\n      '$reverseArray',\n      '$round',\n      '$rtrim',\n      '$second',\n      '$setDifference',\n      '$setEquals',\n      '$setIntersection',\n      '$setIsSubset',\n      '$setUnion',\n      '$size',\n      '$sin',\n      '$slice',\n      '$split',\n      '$sqrt',\n      '$stdDevPop',\n      '$stdDevSamp',\n      '$strcasecmp',\n      '$strLenBytes',\n      '$strLenCP',\n      '$substr',\n      '$substrBytes',\n      '$substrCP',\n      '$subtract',\n      '$sum',\n      '$switch',\n      '$tan',\n      '$toBool',\n      '$toDate',\n      '$toDecimal',\n      '$toDouble',\n      '$toInt',\n      '$toLong',\n      '$toObjectId',\n      '$toString',\n      '$toLower',\n      '$toUpper',\n      '$trim',\n      '$trunc',\n      '$type',\n      '$week',\n      '$year',\n      '$zip',\n      '$count',\n      '$dateAdd',\n      '$dateDiff',\n      '$dateSubtract',\n      '$dateTrunc',\n      '$getField',\n      '$rand',\n      '$sampleRate',\n      '$setField',\n      '$unsetField', // aggregation pipeline query modifiers\n      '$comment',\n      '$explain',\n      '$hint',\n      '$max',\n      '$maxTimeMS',\n      '$min',\n      '$orderby',\n      '$query',\n      '$returnKey',\n      '$showDiskLoc',\n      '$natural'\n    ]\n    var builtinFunctions = [\n      'ObjectId',\n      'Code',\n      'BinData',\n      'DBRef',\n      'Timestamp',\n      'NumberLong',\n      'NumberDecimal',\n      'MaxKey',\n      'MinKey',\n      'RegExp',\n      'ISODate',\n      'UUID'\n    ]\n    operators = operators.map(function (operator) {\n      return operator.replace('$', '\\\\$')\n    })\n    var operatorsSource = '(?:' + operators.join('|') + ')\\\\b'\n    Prism.languages.mongodb = Prism.languages.extend('javascript', {})\n    Prism.languages.insertBefore('mongodb', 'string', {\n      property: {\n        pattern:\n          /(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,\n        greedy: true,\n        inside: {\n          keyword: RegExp('^([\\'\"])?' + operatorsSource + '(?:\\\\1)?$')\n        }\n      }\n    })\n    Prism.languages.mongodb.string.inside = {\n      url: {\n        // url pattern\n        pattern:\n          /https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,\n        greedy: true\n      },\n      entity: {\n        // ipv4\n        pattern:\n          /\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,\n        greedy: true\n      }\n    }\n    Prism.languages.insertBefore('mongodb', 'constant', {\n      builtin: {\n        pattern: RegExp('\\\\b(?:' + builtinFunctions.join('|') + ')\\\\b'),\n        alias: 'keyword'\n      }\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = monkey\nmonkey.displayName = 'monkey'\nmonkey.aliases = []\nfunction monkey(Prism) {\n  Prism.languages.monkey = {\n    comment: {\n      pattern: /^#Rem\\s[\\s\\S]*?^#End|'.+/im,\n      greedy: true\n    },\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"/,\n      greedy: true\n    },\n    preprocessor: {\n      pattern: /(^[ \\t]*)#.+/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    function: /\\b\\w+(?=\\()/,\n    'type-char': {\n      pattern: /\\b[?%#$]/,\n      alias: 'class-name'\n    },\n    number: {\n      pattern:\n        /((?:\\.\\.)?)(?:(?:\\b|\\B-\\.?|\\B\\.)\\d+(?:(?!\\.\\.)\\.\\d*)?|\\$[\\da-f]+)/i,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:Abstract|Array|Bool|Case|Catch|Class|Const|Continue|Default|Eachin|Else|ElseIf|End|EndIf|Exit|Extends|Extern|False|Field|Final|Float|For|Forever|Function|Global|If|Implements|Import|Inline|Int|Interface|Local|Method|Module|New|Next|Null|Object|Private|Property|Public|Repeat|Return|Select|Self|Step|Strict|String|Super|Then|Throw|To|True|Try|Until|Void|Wend|While)\\b/i,\n    operator:\n      /\\.\\.|<[=>]?|>=?|:?=|(?:[+\\-*\\/&~|]|\\b(?:Mod|Shl|Shr)\\b)=?|\\b(?:And|Not|Or)\\b/i,\n    punctuation: /[.,:;()\\[\\]]/\n  }\n}\n","'use strict'\n\nmodule.exports = moonscript\nmoonscript.displayName = 'moonscript'\nmoonscript.aliases = ['moon']\nfunction moonscript(Prism) {\n  Prism.languages.moonscript = {\n    comment: /--.*/,\n    string: [\n      {\n        pattern: /'[^']*'|\\[(=*)\\[[\\s\\S]*?\\]\\1\\]/,\n        greedy: true\n      },\n      {\n        pattern: /\"[^\"]*\"/,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: /#\\{[^{}]*\\}/,\n            inside: {\n              moonscript: {\n                pattern: /(^#\\{)[\\s\\S]+(?=\\})/,\n                lookbehind: true,\n                inside: null // see beow\n              },\n              'interpolation-punctuation': {\n                pattern: /#\\{|\\}/,\n                alias: 'punctuation'\n              }\n            }\n          }\n        }\n      }\n    ],\n    'class-name': [\n      {\n        pattern: /(\\b(?:class|extends)[ \\t]+)\\w+/,\n        lookbehind: true\n      }, // class-like names start with a capital letter\n      /\\b[A-Z]\\w*/\n    ],\n    keyword:\n      /\\b(?:class|continue|do|else|elseif|export|extends|for|from|if|import|in|local|nil|return|self|super|switch|then|unless|using|when|while|with)\\b/,\n    variable: /@@?\\w*/,\n    property: {\n      pattern: /\\b(?!\\d)\\w+(?=:)|(:)(?!\\d)\\w+/,\n      lookbehind: true\n    },\n    function: {\n      pattern:\n        /\\b(?:_G|_VERSION|assert|collectgarbage|coroutine\\.(?:create|resume|running|status|wrap|yield)|debug\\.(?:debug|getfenv|gethook|getinfo|getlocal|getmetatable|getregistry|getupvalue|setfenv|sethook|setlocal|setmetatable|setupvalue|traceback)|dofile|error|getfenv|getmetatable|io\\.(?:close|flush|input|lines|open|output|popen|read|stderr|stdin|stdout|tmpfile|type|write)|ipairs|load|loadfile|loadstring|math\\.(?:abs|acos|asin|atan|atan2|ceil|cos|cosh|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pi|pow|rad|random|randomseed|sin|sinh|sqrt|tan|tanh)|module|next|os\\.(?:clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\.(?:cpath|loaded|loadlib|path|preload|seeall)|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|string\\.(?:byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\\.(?:concat|insert|maxn|remove|sort)|tonumber|tostring|type|unpack|xpcall)\\b/,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    number:\n      /(?:\\B\\.\\d+|\\b\\d+\\.\\d+|\\b\\d+(?=[eE]))(?:[eE][-+]?\\d+)?\\b|\\b(?:0x[a-fA-F\\d]+|\\d+)(?:U?LL)?\\b/,\n    operator:\n      /\\.{3}|[-=]>|~=|(?:[-+*/%<>!=]|\\.\\.)=?|[:#^]|\\b(?:and|or)\\b=?|\\b(?:not)\\b/,\n    punctuation: /[.,()[\\]{}\\\\]/\n  }\n  Prism.languages.moonscript.string[1].inside.interpolation.inside.moonscript.inside =\n    Prism.languages.moonscript\n  Prism.languages.moon = Prism.languages.moonscript\n}\n","'use strict'\n\nmodule.exports = n1ql\nn1ql.displayName = 'n1ql'\nn1ql.aliases = []\nfunction n1ql(Prism) {\n  // https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/index.html\n  Prism.languages.n1ql = {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?(?:$|\\*\\/)|--.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\]|\\1\\1)*\\1/,\n      greedy: true\n    },\n    identifier: {\n      pattern: /`(?:\\\\[\\s\\S]|[^\\\\`]|``)*`/,\n      greedy: true\n    },\n    parameter: /\\$[\\w.]+/,\n    // https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/reservedwords.html#n1ql-reserved-words\n    keyword:\n      /\\b(?:ADVISE|ALL|ALTER|ANALYZE|AS|ASC|AT|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|COMMITTED|CONNECT|CONTINUE|CORRELATE|CORRELATED|COVER|CREATE|CURRENT|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FILTER|FLATTEN|FLUSH|FOLLOWING|FOR|FORCE|FROM|FTS|FUNCTION|GOLANG|GRANT|GROUP|GROUPS|GSI|HASH|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|ISOLATION|JAVASCRIPT|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LANGUAGE|LAST|LEFT|LET|LETTING|LEVEL|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NL|NO|NTH_VALUE|NULL|NULLS|NUMBER|OBJECT|OFFSET|ON|OPTION|OPTIONS|ORDER|OTHERS|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PRECEDING|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROBE|PROCEDURE|PUBLIC|RANGE|RAW|REALM|REDUCE|RENAME|RESPECT|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|ROW|ROWS|SATISFIES|SAVEPOINT|SCHEMA|SCOPE|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TIES|TO|TRAN|TRANSACTION|TRIGGER|TRUNCATE|UNBOUNDED|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WINDOW|WITH|WORK|XOR)\\b/i,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    boolean: /\\b(?:FALSE|TRUE)\\b/i,\n    number: /(?:\\b\\d+\\.|\\B\\.)\\d+e[+\\-]?\\d+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n    operator:\n      /[-+*\\/%]|!=|==?|\\|\\||<[>=]?|>=?|\\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\\b/i,\n    punctuation: /[;[\\](),.{}:]/\n  }\n}\n","'use strict'\n\nmodule.exports = n4js\nn4js.displayName = 'n4js'\nn4js.aliases = ['n4jsd']\nfunction n4js(Prism) {\n  Prism.languages.n4js = Prism.languages.extend('javascript', {\n    // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html\n    keyword:\n      /\\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\\b/\n  })\n  Prism.languages.insertBefore('n4js', 'constant', {\n    // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations\n    annotation: {\n      pattern: /@+\\w+/,\n      alias: 'operator'\n    }\n  })\n  Prism.languages.n4jsd = Prism.languages.n4js\n}\n","'use strict'\n\nmodule.exports = nand2tetrisHdl\nnand2tetrisHdl.displayName = 'nand2tetrisHdl'\nnand2tetrisHdl.aliases = []\nfunction nand2tetrisHdl(Prism) {\n  Prism.languages['nand2tetris-hdl'] = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    keyword: /\\b(?:BUILTIN|CHIP|CLOCKED|IN|OUT|PARTS)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: /\\b[A-Za-z][A-Za-z0-9]*(?=\\()/,\n    number: /\\b\\d+\\b/,\n    operator: /=|\\.\\./,\n    punctuation: /[{}[\\];(),:]/\n  }\n}\n","'use strict'\n\nmodule.exports = naniscript\nnaniscript.displayName = 'naniscript'\nnaniscript.aliases = []\nfunction naniscript(Prism) {\n  ;(function (Prism) {\n    var expressionDef = /\\{[^\\r\\n\\[\\]{}]*\\}/\n    var params = {\n      'quoted-string': {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        alias: 'operator'\n      },\n      'command-param-id': {\n        pattern: /(\\s)\\w+:/,\n        lookbehind: true,\n        alias: 'property'\n      },\n      'command-param-value': [\n        {\n          pattern: expressionDef,\n          alias: 'selector'\n        },\n        {\n          pattern: /([\\t ])\\S+/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'operator'\n        },\n        {\n          pattern: /\\S(?:.*\\S)?/,\n          alias: 'operator'\n        }\n      ]\n    }\n    Prism.languages.naniscript = {\n      // ; ...\n      comment: {\n        pattern: /^([\\t ]*);.*/m,\n        lookbehind: true\n      },\n      // > ...\n      // Define is a control line starting with '>' followed by a word, a space and a text.\n      define: {\n        pattern: /^>.+/m,\n        alias: 'tag',\n        inside: {\n          value: {\n            pattern: /(^>\\w+[\\t ]+)(?!\\s)[^{}\\r\\n]+/,\n            lookbehind: true,\n            alias: 'operator'\n          },\n          key: {\n            pattern: /(^>)\\w+/,\n            lookbehind: true\n          }\n        }\n      },\n      // # ...\n      label: {\n        pattern: /^([\\t ]*)#[\\t ]*\\w+[\\t ]*$/m,\n        lookbehind: true,\n        alias: 'regex'\n      },\n      command: {\n        pattern: /^([\\t ]*)@\\w+(?=[\\t ]|$).*/m,\n        lookbehind: true,\n        alias: 'function',\n        inside: {\n          'command-name': /^@\\w+/,\n          expression: {\n            pattern: expressionDef,\n            greedy: true,\n            alias: 'selector'\n          },\n          'command-params': {\n            pattern: /\\s*\\S[\\s\\S]*/,\n            inside: params\n          }\n        }\n      },\n      // Generic is any line that doesn't start with operators: ;>#@\n      'generic-text': {\n        pattern: /(^[ \\t]*)[^#@>;\\s].*/m,\n        lookbehind: true,\n        alias: 'punctuation',\n        inside: {\n          // \\{ ... \\} ... \\[ ... \\] ... \\\"\n          'escaped-char': /\\\\[{}\\[\\]\"]/,\n          expression: {\n            pattern: expressionDef,\n            greedy: true,\n            alias: 'selector'\n          },\n          'inline-command': {\n            pattern: /\\[[\\t ]*\\w[^\\r\\n\\[\\]]*\\]/,\n            greedy: true,\n            alias: 'function',\n            inside: {\n              'command-params': {\n                pattern: /(^\\[[\\t ]*\\w+\\b)[\\s\\S]+(?=\\]$)/,\n                lookbehind: true,\n                inside: params\n              },\n              'command-param-name': {\n                pattern: /^(\\[[\\t ]*)\\w+/,\n                lookbehind: true,\n                alias: 'name'\n              },\n              'start-stop-char': /[\\[\\]]/\n            }\n          }\n        }\n      }\n    }\n    Prism.languages.nani = Prism.languages['naniscript']\n    /** @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token */\n    /**\n     * This hook is used to validate generic-text tokens for balanced brackets.\n     * Mark token as bad-line when contains not balanced brackets: {},[]\n     */\n    Prism.hooks.add('after-tokenize', function (env) {\n      /** @type {(Token | string)[]} */\n      var tokens = env.tokens\n      tokens.forEach(function (token) {\n        if (typeof token !== 'string' && token.type === 'generic-text') {\n          var content = getTextContent(token)\n          if (!isBracketsBalanced(content)) {\n            token.type = 'bad-line'\n            token.content = content\n          }\n        }\n      })\n    })\n    /**\n     * @param {string} input\n     * @returns {boolean}\n     */\n    function isBracketsBalanced(input) {\n      var brackets = '[]{}'\n      var stack = []\n      for (var i = 0; i < input.length; i++) {\n        var bracket = input[i]\n        var bracketsIndex = brackets.indexOf(bracket)\n        if (bracketsIndex !== -1) {\n          if (bracketsIndex % 2 === 0) {\n            stack.push(bracketsIndex + 1)\n          } else if (stack.pop() !== bracketsIndex) {\n            return false\n          }\n        }\n      }\n      return stack.length === 0\n    }\n    /**\n     * @param {string | Token | (string | Token)[]} token\n     * @returns {string}\n     */\n    function getTextContent(token) {\n      if (typeof token === 'string') {\n        return token\n      } else if (Array.isArray(token)) {\n        return token.map(getTextContent).join('')\n      } else {\n        return getTextContent(token.content)\n      }\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = nasm\nnasm.displayName = 'nasm'\nnasm.aliases = []\nfunction nasm(Prism) {\n  Prism.languages.nasm = {\n    comment: /;.*$/m,\n    string: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    label: {\n      pattern: /(^\\s*)[A-Za-z._?$][\\w.?$@~#]*:/m,\n      lookbehind: true,\n      alias: 'function'\n    },\n    keyword: [\n      /\\[?BITS (?:16|32|64)\\]?/,\n      {\n        pattern: /(^\\s*)section\\s*[a-z.]+:?/im,\n        lookbehind: true\n      },\n      /(?:extern|global)[^;\\r\\n]*/i,\n      /(?:CPU|DEFAULT|FLOAT).*$/m\n    ],\n    register: {\n      pattern:\n        /\\b(?:st\\d|[xyz]mm\\d\\d?|[cdt]r\\d|r\\d\\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s)\\b/i,\n      alias: 'variable'\n    },\n    number:\n      /(?:\\b|(?=\\$))(?:0[hx](?:\\.[\\da-f]+|[\\da-f]+(?:\\.[\\da-f]+)?)(?:p[+-]?\\d+)?|\\d[\\da-f]+[hx]|\\$\\d[\\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\\d+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:\\.?e[+-]?\\d+)?[dt]?)\\b/i,\n    operator: /[\\[\\]*+\\-\\/%<>=&|$!]/\n  }\n}\n","'use strict'\n\nmodule.exports = neon\nneon.displayName = 'neon'\nneon.aliases = []\nfunction neon(Prism) {\n  Prism.languages.neon = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    datetime: {\n      pattern:\n        /(^|[[{(=:,\\s])\\d\\d\\d\\d-\\d\\d?-\\d\\d?(?:(?:[Tt]| +)\\d\\d?:\\d\\d:\\d\\d(?:\\.\\d*)? *(?:Z|[-+]\\d\\d?(?::?\\d\\d)?)?)?(?=$|[\\]}),\\s])/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    key: {\n      pattern: /(^|[[{(,\\s])[^,:=[\\]{}()'\"\\s]+(?=\\s*:(?:$|[\\]}),\\s])|\\s*=)/,\n      lookbehind: true,\n      alias: 'atrule'\n    },\n    number: {\n      pattern:\n        /(^|[[{(=:,\\s])[+-]?(?:0x[\\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\\d+(?:\\.\\d*)?|\\.?\\d+)(?:[eE][+-]?\\d+)?)(?=$|[\\]}),:=\\s])/,\n      lookbehind: true\n    },\n    boolean: {\n      pattern: /(^|[[{(=:,\\s])(?:false|no|true|yes)(?=$|[\\]}),:=\\s])/i,\n      lookbehind: true\n    },\n    null: {\n      pattern: /(^|[[{(=:,\\s])(?:null)(?=$|[\\]}),:=\\s])/i,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    string: {\n      pattern:\n        /(^|[[{(=:,\\s])(?:('''|\"\"\")\\r?\\n(?:(?:[^\\r\\n]|\\r?\\n(?![\\t ]*\\2))*\\r?\\n)?[\\t ]*\\2|'[^'\\r\\n]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")/,\n      lookbehind: true,\n      greedy: true\n    },\n    literal: {\n      pattern:\n        /(^|[[{(=:,\\s])(?:[^#\"',:=[\\]{}()\\s`-]|[:-][^\"',=[\\]{}()\\s])(?:[^,:=\\]})(\\s]|:(?![\\s,\\]})]|$)|[ \\t]+[^#,:=\\]})(\\s])*/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    punctuation: /[,:=[\\]{}()-]/\n  }\n}\n","'use strict'\n\nmodule.exports = nevod\nnevod.displayName = 'nevod'\nnevod.aliases = []\nfunction nevod(Prism) {\n  Prism.languages.nevod = {\n    comment: /\\/\\/.*|(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$))/,\n    string: {\n      pattern: /(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))!?\\*?/,\n      greedy: true,\n      inside: {\n        'string-attrs': /!$|!\\*$|\\*$/\n      }\n    },\n    namespace: {\n      pattern: /(@namespace\\s+)[a-zA-Z0-9\\-.]+(?=\\s*\\{)/,\n      lookbehind: true\n    },\n    pattern: {\n      pattern:\n        /(@pattern\\s+)?#?[a-zA-Z0-9\\-.]+(?:\\s*\\(\\s*(?:~\\s*)?[a-zA-Z0-9\\-.]+\\s*(?:,\\s*(?:~\\s*)?[a-zA-Z0-9\\-.]*)*\\))?(?=\\s*=)/,\n      lookbehind: true,\n      inside: {\n        'pattern-name': {\n          pattern: /^#?[a-zA-Z0-9\\-.]+/,\n          alias: 'class-name'\n        },\n        fields: {\n          pattern: /\\(.*\\)/,\n          inside: {\n            'field-name': {\n              pattern: /[a-zA-Z0-9\\-.]+/,\n              alias: 'variable'\n            },\n            punctuation: /[,()]/,\n            operator: {\n              pattern: /~/,\n              alias: 'field-hidden-mark'\n            }\n          }\n        }\n      }\n    },\n    search: {\n      pattern: /(@search\\s+|#)[a-zA-Z0-9\\-.]+(?:\\.\\*)?(?=\\s*;)/,\n      alias: 'function',\n      lookbehind: true\n    },\n    keyword:\n      /@(?:having|inside|namespace|outside|pattern|require|search|where)\\b/,\n    'standard-pattern': {\n      pattern:\n        /\\b(?:Alpha|AlphaNum|Any|Blank|End|LineBreak|Num|NumAlpha|Punct|Space|Start|Symbol|Word|WordBreak)\\b(?:\\([a-zA-Z0-9\\-.,\\s+]*\\))?/,\n      inside: {\n        'standard-pattern-name': {\n          pattern: /^[a-zA-Z0-9\\-.]+/,\n          alias: 'builtin'\n        },\n        quantifier: {\n          pattern: /\\b\\d+(?:\\s*\\+|\\s*-\\s*\\d+)?(?!\\w)/,\n          alias: 'number'\n        },\n        'standard-pattern-attr': {\n          pattern: /[a-zA-Z0-9\\-.]+/,\n          alias: 'builtin'\n        },\n        punctuation: /[,()]/\n      }\n    },\n    quantifier: {\n      pattern: /\\b\\d+(?:\\s*\\+|\\s*-\\s*\\d+)?(?!\\w)/,\n      alias: 'number'\n    },\n    operator: [\n      {\n        pattern: /=/,\n        alias: 'pattern-def'\n      },\n      {\n        pattern: /&/,\n        alias: 'conjunction'\n      },\n      {\n        pattern: /~/,\n        alias: 'exception'\n      },\n      {\n        pattern: /\\?/,\n        alias: 'optionality'\n      },\n      {\n        pattern: /[[\\]]/,\n        alias: 'repetition'\n      },\n      {\n        pattern: /[{}]/,\n        alias: 'variation'\n      },\n      {\n        pattern: /[+_]/,\n        alias: 'sequence'\n      },\n      {\n        pattern: /\\.{2,3}/,\n        alias: 'span'\n      }\n    ],\n    'field-capture': [\n      {\n        pattern:\n          /([a-zA-Z0-9\\-.]+\\s*\\()\\s*[a-zA-Z0-9\\-.]+\\s*:\\s*[a-zA-Z0-9\\-.]+(?:\\s*,\\s*[a-zA-Z0-9\\-.]+\\s*:\\s*[a-zA-Z0-9\\-.]+)*(?=\\s*\\))/,\n        lookbehind: true,\n        inside: {\n          'field-name': {\n            pattern: /[a-zA-Z0-9\\-.]+/,\n            alias: 'variable'\n          },\n          colon: /:/\n        }\n      },\n      {\n        pattern: /[a-zA-Z0-9\\-.]+\\s*:/,\n        inside: {\n          'field-name': {\n            pattern: /[a-zA-Z0-9\\-.]+/,\n            alias: 'variable'\n          },\n          colon: /:/\n        }\n      }\n    ],\n    punctuation: /[:;,()]/,\n    name: /[a-zA-Z0-9\\-.]+/\n  }\n}\n","'use strict'\n\nmodule.exports = nginx\nnginx.displayName = 'nginx'\nnginx.aliases = []\nfunction nginx(Prism) {\n  ;(function (Prism) {\n    var variable =\n      /\\$(?:\\w[a-z\\d]*(?:_[^\\x00-\\x1F\\s\"'\\\\()$]*)?|\\{[^}\\s\"'\\\\]+\\})/i\n    Prism.languages.nginx = {\n      comment: {\n        pattern: /(^|[\\s{};])#.*/,\n        lookbehind: true,\n        greedy: true\n      },\n      directive: {\n        pattern:\n          /(^|\\s)\\w(?:[^;{}\"'\\\\\\s]|\\\\.|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|\\s+(?:#.*(?!.)|(?![#\\s])))*?(?=\\s*[;{])/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          string: {\n            pattern:\n              /((?:^|[^\\\\])(?:\\\\\\\\)*)(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              escape: {\n                pattern: /\\\\[\"'\\\\nrt]/,\n                alias: 'entity'\n              },\n              variable: variable\n            }\n          },\n          comment: {\n            pattern: /(\\s)#.*/,\n            lookbehind: true,\n            greedy: true\n          },\n          keyword: {\n            pattern: /^\\S+/,\n            greedy: true\n          },\n          // other patterns\n          boolean: {\n            pattern: /(\\s)(?:off|on)(?!\\S)/,\n            lookbehind: true\n          },\n          number: {\n            pattern: /(\\s)\\d+[a-z]*(?!\\S)/i,\n            lookbehind: true\n          },\n          variable: variable\n        }\n      },\n      punctuation: /[{};]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = nim\nnim.displayName = 'nim'\nnim.aliases = []\nfunction nim(Prism) {\n  Prism.languages.nim = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      // Double-quoted strings can be prefixed by an identifier (Generalized raw string literals)\n      pattern:\n        /(?:\\b(?!\\d)(?:\\w|\\\\x[89a-fA-F][0-9a-fA-F])+)?(?:\"\"\"[\\s\\S]*?\"\"\"(?!\")|\"(?:\\\\[\\s\\S]|\"\"|[^\"\\\\])*\")/,\n      greedy: true\n    },\n    char: {\n      // Character literals are handled specifically to prevent issues with numeric type suffixes\n      pattern: /'(?:\\\\(?:\\d+|x[\\da-fA-F]{0,2}|.)|[^'])'/,\n      greedy: true\n    },\n    function: {\n      pattern:\n        /(?:(?!\\d)(?:\\w|\\\\x[89a-fA-F][0-9a-fA-F])+|`[^`\\r\\n]+`)\\*?(?:\\[[^\\]]+\\])?(?=\\s*\\()/,\n      greedy: true,\n      inside: {\n        operator: /\\*$/\n      }\n    },\n    // We don't want to highlight operators (and anything really) inside backticks\n    identifier: {\n      pattern: /`[^`\\r\\n]+`/,\n      greedy: true,\n      inside: {\n        punctuation: /`/\n      }\n    },\n    // The negative look ahead prevents wrong highlighting of the .. operator\n    number:\n      /\\b(?:0[xXoObB][\\da-fA-F_]+|\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:[eE][+-]?\\d[\\d_]*)?)(?:'?[iuf]\\d*)?/,\n    keyword:\n      /\\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\\b/,\n    operator: {\n      // Look behind and look ahead prevent wrong highlighting of punctuations [. .] {. .} (. .)\n      // but allow the slice operator .. to take precedence over them\n      // One can define his own operators in Nim so all combination of operators might be an operator.\n      pattern:\n        /(^|[({\\[](?=\\.\\.)|(?![({\\[]\\.).)(?:(?:[=+\\-*\\/<>@$~&%|!?^:\\\\]|\\.\\.|\\.(?![)}\\]]))+|\\b(?:and|div|in|is|isnot|mod|not|notin|of|or|shl|shr|xor)\\b)/m,\n      lookbehind: true\n    },\n    punctuation: /[({\\[]\\.|\\.[)}\\]]|[`(){}\\[\\],:]/\n  }\n}\n","'use strict'\n\nmodule.exports = nix\nnix.displayName = 'nix'\nnix.aliases = []\nfunction nix(Prism) {\n  Prism.languages.nix = {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|#.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|''(?:(?!'')[\\s\\S]|''(?:'|\\\\|\\$\\{))*''/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          // The lookbehind ensures the ${} is not preceded by \\ or ''\n          pattern: /(^|(?:^|(?!'').)[^\\\\])\\$\\{(?:[^{}]|\\{[^}]*\\})*\\}/,\n          lookbehind: true,\n          inside: null // see below\n        }\n      }\n    },\n    url: [\n      /\\b(?:[a-z]{3,7}:\\/\\/)[\\w\\-+%~\\/.:#=?&]+/,\n      {\n        pattern:\n          /([^\\/])(?:[\\w\\-+%~.:#=?&]*(?!\\/\\/)[\\w\\-+%~\\/.:#=?&])?(?!\\/\\/)\\/[\\w\\-+%~\\/.:#=?&]*/,\n        lookbehind: true\n      }\n    ],\n    antiquotation: {\n      pattern: /\\$(?=\\{)/,\n      alias: 'important'\n    },\n    number: /\\b\\d+\\b/,\n    keyword: /\\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\\b/,\n    function:\n      /\\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\\b|\\bfoldl'\\B/,\n    boolean: /\\b(?:false|true)\\b/,\n    operator: /[=!<>]=?|\\+\\+?|\\|\\||&&|\\/\\/|->?|[?@]/,\n    punctuation: /[{}()[\\].,:;]/\n  }\n  Prism.languages.nix.string.inside.interpolation.inside = Prism.languages.nix\n}\n","'use strict'\n\nmodule.exports = nsis\nnsis.displayName = 'nsis'\nnsis.aliases = []\nfunction nsis(Prism) {\n  /**\n   * Original by Jan T. Sott (http://github.com/idleberg)\n   *\n   * Includes all commands and plug-ins shipped with NSIS 3.08\n   */\n  Prism.languages.nsis = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|[#;].*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword: {\n      pattern:\n        /(^[\\t ]*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|BG(?:Font|Gradient|Image)|Banner|BrandingText|BringToFront|CRCCheck|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|Seek|Write|WriteByte|WriteUTF16LE|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DLLVersion(?:Local)?|DlgItem|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|LabelAddress|TempFileName)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|Silent)|InitPluginsDir|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|NSISdl|Name|Nop|OutFile|PE(?:DllCharacteristics|SubsysVer)|Page(?:Callbacks)?|Pop|Push|Quit|RMDir|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|UnRegDLL|Unicode|UninstPage|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UserInfo|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|Var|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle|ns(?:Dialogs|Exec))\\b/m,\n      lookbehind: true\n    },\n    property:\n      /\\b(?:ARCHIVE|FILE_(?:ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK(?:(?:CR|CU|LM)(?:32|64)?|DD|PD|U)|HKEY_(?:CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(?:ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY|admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user)\\b/,\n    constant: /\\$\\{[!\\w\\.:\\^-]+\\}|\\$\\([!\\w\\.:\\^-]+\\)/,\n    variable: /\\$\\w[\\w\\.]*/,\n    number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n    operator: /--?|\\+\\+?|<=?|>=?|==?=?|&&?|\\|\\|?|[?*\\/~^%]/,\n    punctuation: /[{}[\\];(),.:]/,\n    important: {\n      pattern:\n        /(^[\\t ]*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\\b/im,\n      lookbehind: true\n    }\n  }\n}\n","'use strict'\nvar refractorC = require('./c.js')\nmodule.exports = objectivec\nobjectivec.displayName = 'objectivec'\nobjectivec.aliases = ['objc']\nfunction objectivec(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.objectivec = Prism.languages.extend('c', {\n    string: {\n      pattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n    operator: /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n  })\n  delete Prism.languages.objectivec['class-name']\n  Prism.languages.objc = Prism.languages.objectivec\n}\n","'use strict'\n\nmodule.exports = ocaml\nocaml.displayName = 'ocaml'\nocaml.aliases = []\nfunction ocaml(Prism) {\n  // https://ocaml.org/manual/lex.html\n  Prism.languages.ocaml = {\n    comment: {\n      pattern: /\\(\\*[\\s\\S]*?\\*\\)/,\n      greedy: true\n    },\n    char: {\n      pattern: /'(?:[^\\\\\\r\\n']|\\\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,\n      greedy: true\n    },\n    string: [\n      {\n        pattern: /\"(?:\\\\(?:[\\s\\S]|\\r\\n)|[^\\\\\\r\\n\"])*\"/,\n        greedy: true\n      },\n      {\n        pattern: /\\{([a-z_]*)\\|[\\s\\S]*?\\|\\1\\}/,\n        greedy: true\n      }\n    ],\n    number: [\n      // binary and octal\n      /\\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\\b/i, // hexadecimal\n      /\\b0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]*)?(?:p[+-]?\\d[\\d_]*)?(?!\\w)/i, // decimal\n      /\\b\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?(?!\\w)/i\n    ],\n    directive: {\n      pattern: /\\B#\\w+/,\n      alias: 'property'\n    },\n    label: {\n      pattern: /\\B~\\w+/,\n      alias: 'property'\n    },\n    'type-variable': {\n      pattern: /\\B'\\w+/,\n      alias: 'function'\n    },\n    variant: {\n      pattern: /`\\w+/,\n      alias: 'symbol'\n    },\n    // For the list of keywords and operators,\n    // see: http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#sec84\n    keyword:\n      /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    'operator-like-punctuation': {\n      pattern: /\\[[<>|]|[>|]\\]|\\{<|>\\}/,\n      alias: 'punctuation'\n    },\n    // Custom operators are allowed\n    operator:\n      /\\.[.~]|:[=>]|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\\b/,\n    punctuation: /;;|::|[(){}\\[\\].,:;#]|\\b_\\b/\n  }\n}\n","'use strict'\nvar refractorC = require('./c.js')\nmodule.exports = opencl\nopencl.displayName = 'opencl'\nopencl.aliases = []\nfunction opencl(Prism) {\n  Prism.register(refractorC)\n  ;(function (Prism) {\n    /* OpenCL kernel language */\n    Prism.languages.opencl = Prism.languages.extend('c', {\n      // Extracted from the official specs (2.0) and http://streamcomputing.eu/downloads/?opencl.lang (opencl-keywords, opencl-types) and http://sourceforge.net/tracker/?func=detail&aid=2957794&group_id=95717&atid=612384 (Words2, partly Words3)\n      keyword:\n        /\\b(?:(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|__attribute__|auto|(?:bool|u?(?:char|int|long|short)|half|quad)(?:2|3|4|8|16)?|break|case|complex|const|continue|(?:double|float)(?:16(?:x(?:1|2|4|8|16))?|1x(?:1|2|4|8|16)|2(?:x(?:1|2|4|8|16))?|3|4(?:x(?:1|2|4|8|16))?|8(?:x(?:1|2|4|8|16))?)?|default|do|else|enum|extern|for|goto|if|imaginary|inline|packed|pipe|register|restrict|return|signed|sizeof|static|struct|switch|typedef|uniform|union|unsigned|void|volatile|while)\\b/,\n      // Extracted from http://streamcomputing.eu/downloads/?opencl.lang (opencl-const)\n      // Math Constants: https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/mathConstants.html\n      // Macros and Limits: https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/macroLimits.html\n      number:\n        /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[fuhl]{0,4}/i,\n      boolean: /\\b(?:false|true)\\b/,\n      'constant-opencl-kernel': {\n        pattern:\n          /\\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:GLOBAL|LOCAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT|HALF)_(?:DIG|EPSILON|(?:MAX|MIN)(?:(?:_10)?_EXP)?|MANT_DIG)|FLT_RADIX|HUGE_VALF?|(?:INT|LONG|SCHAR|SHRT)_(?:MAX|MIN)|INFINITY|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:2|10)E?|PI(?:_[24])?|SQRT(?:1_2|2))(?:_F|_H)?|NAN|(?:UCHAR|UINT|ULONG|USHRT)_MAX)\\b/,\n        alias: 'constant'\n      }\n    })\n    Prism.languages.insertBefore('opencl', 'class-name', {\n      // https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/scalarDataTypes.html\n      // https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/otherDataTypes.html\n      'builtin-type': {\n        pattern:\n          /\\b(?:_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|cl_(?:image_format|mem_fence_flags)|clk_event_t|event_t|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|intptr_t|ndrange_t|ptrdiff_t|queue_t|reserve_id_t|sampler_t|size_t|uintptr_t)\\b/,\n        alias: 'keyword'\n      }\n    })\n    var attributes = {\n      // Extracted from http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-types and opencl-host)\n      'type-opencl-host': {\n        pattern:\n          /\\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|int|long|short)|double|float)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\\b/,\n        alias: 'keyword'\n      },\n      'boolean-opencl-host': {\n        pattern: /\\bCL_(?:FALSE|TRUE)\\b/,\n        alias: 'boolean'\n      },\n      // Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-const)\n      'constant-opencl-host': {\n        pattern:\n          /\\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:8|16|24|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\\b/,\n        alias: 'constant'\n      },\n      // Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-host)\n      'function-opencl-host': {\n        pattern:\n          /\\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\\b/,\n        alias: 'function'\n      }\n    }\n    /* OpenCL host API */\n    Prism.languages.insertBefore('c', 'keyword', attributes) // C++ includes everything from the OpenCL C host API plus the classes defined in cl2.h\n    if (Prism.languages.cpp) {\n      // Extracted from doxygen class list http://github.khronos.org/OpenCL-CLHPP/annotated.html\n      attributes['type-opencl-host-cpp'] = {\n        pattern:\n          /\\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|Sampler|UserEvent)\\b/,\n        alias: 'keyword'\n      }\n      Prism.languages.insertBefore('cpp', 'keyword', attributes)\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = openqasm\nopenqasm.displayName = 'openqasm'\nopenqasm.aliases = ['qasm']\nfunction openqasm(Prism) {\n  // https://qiskit.github.io/openqasm/grammar/index.html\n  Prism.languages.openqasm = {\n    comment: /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/,\n    string: {\n      pattern: /\"[^\"\\r\\n\\t]*\"|'[^'\\r\\n\\t]*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:CX|OPENQASM|U|barrier|boxas|boxto|break|const|continue|ctrl|def|defcal|defcalgrammar|delay|else|end|for|gate|gphase|if|in|include|inv|kernel|lengthof|let|measure|pow|reset|return|rotary|stretchinf|while)\\b|#pragma\\b/,\n    'class-name':\n      /\\b(?:angle|bit|bool|creg|fixed|float|int|length|qreg|qubit|stretch|uint)\\b/,\n    function: /\\b(?:cos|exp|ln|popcount|rotl|rotr|sin|sqrt|tan)\\b(?=\\s*\\()/,\n    constant: /\\b(?:euler|pi|tau)\\b|π|𝜏|ℇ/,\n    number: {\n      pattern:\n        /(^|[^.\\w$])(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?(?:dt|ns|us|µs|ms|s)?/i,\n      lookbehind: true\n    },\n    operator: /->|>>=?|<<=?|&&|\\|\\||\\+\\+|--|[!=<>&|~^+\\-*/%]=?|@/,\n    punctuation: /[(){}\\[\\];,:.]/\n  }\n  Prism.languages.qasm = Prism.languages.openqasm\n}\n","'use strict'\n\nmodule.exports = oz\noz.displayName = 'oz'\noz.aliases = []\nfunction oz(Prism) {\n  Prism.languages.oz = {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|%.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n      greedy: true\n    },\n    atom: {\n      pattern: /'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n      greedy: true,\n      alias: 'builtin'\n    },\n    keyword:\n      /\\$|\\[\\]|\\b(?:_|at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\\b/,\n    function: [\n      /\\b[a-z][A-Za-z\\d]*(?=\\()/,\n      {\n        pattern: /(\\{)[A-Z][A-Za-z\\d]*\\b/,\n        lookbehind: true\n      }\n    ],\n    number:\n      /\\b(?:0[bx][\\da-f]+|\\d+(?:\\.\\d*)?(?:e~?\\d+)?)\\b|&(?:[^\\\\]|\\\\(?:\\d{3}|.))/i,\n    variable: /`(?:[^`\\\\]|\\\\.)+`/,\n    'attr-name': /\\b\\w+(?=[ \\t]*:(?![:=]))/,\n    operator:\n      /:(?:=|::?)|<[-:=]?|=(?:=|<?:?)|>=?:?|\\\\=:?|!!?|[|#+\\-*\\/,~^@]|\\b(?:andthen|div|mod|orelse)\\b/,\n    punctuation: /[\\[\\](){}.:;?]/\n  }\n}\n","'use strict'\n\nmodule.exports = parigp\nparigp.displayName = 'parigp'\nparigp.aliases = []\nfunction parigp(Prism) {\n  Prism.languages.parigp = {\n    comment: /\\/\\*[\\s\\S]*?\\*\\/|\\\\\\\\.*/,\n    string: {\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n      greedy: true\n    },\n    // PARI/GP does not care about white spaces at all\n    // so let's process the keywords to build an appropriate regexp\n    // (e.g. \"b *r *e *a *k\", etc.)\n    keyword: (function () {\n      var keywords = [\n        'breakpoint',\n        'break',\n        'dbg_down',\n        'dbg_err',\n        'dbg_up',\n        'dbg_x',\n        'forcomposite',\n        'fordiv',\n        'forell',\n        'forpart',\n        'forprime',\n        'forstep',\n        'forsubgroup',\n        'forvec',\n        'for',\n        'iferr',\n        'if',\n        'local',\n        'my',\n        'next',\n        'return',\n        'until',\n        'while'\n      ]\n      keywords = keywords\n        .map(function (keyword) {\n          return keyword.split('').join(' *')\n        })\n        .join('|')\n      return RegExp('\\\\b(?:' + keywords + ')\\\\b')\n    })(),\n    function: /\\b\\w(?:[\\w ]*\\w)?(?= *\\()/,\n    number: {\n      // The lookbehind and the negative lookahead prevent from breaking the .. operator\n      pattern:\n        /((?:\\. *\\. *)?)(?:\\b\\d(?: *\\d)*(?: *(?!\\. *\\.)\\.(?: *\\d)*)?|\\. *\\d(?: *\\d)*)(?: *e *(?:[+-] *)?\\d(?: *\\d)*)?/i,\n      lookbehind: true\n    },\n    operator:\n      /\\. *\\.|[*\\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\\+(?: *[+=])?|-(?: *[-=>])?|<(?: *>|(?: *<)?(?: *=)?)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\\\(?: *\\/)?(?: *=)?|&(?: *&)?|\\| *\\||['#~^]/,\n    punctuation: /[\\[\\]{}().,:;|]/\n  }\n}\n","'use strict'\n\nmodule.exports = parser\nparser.displayName = 'parser'\nparser.aliases = []\nfunction parser(Prism) {\n  ;(function (Prism) {\n    var parser = (Prism.languages.parser = Prism.languages.extend('markup', {\n      keyword: {\n        pattern:\n          /(^|[^^])(?:\\^(?:case|eval|for|if|switch|throw)\\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\\b)/,\n        lookbehind: true\n      },\n      variable: {\n        pattern: /(^|[^^])\\B\\$(?:\\w+|(?=[.{]))(?:(?:\\.|::?)\\w+)*(?:\\.|::?)?/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\.|:+/\n        }\n      },\n      function: {\n        pattern: /(^|[^^])\\B[@^]\\w+(?:(?:\\.|::?)\\w+)*(?:\\.|::?)?/,\n        lookbehind: true,\n        inside: {\n          keyword: {\n            pattern: /(^@)(?:GET_|SET_)/,\n            lookbehind: true\n          },\n          punctuation: /\\.|:+/\n        }\n      },\n      escape: {\n        pattern: /\\^(?:[$^;@()\\[\\]{}\"':]|#[a-f\\d]*)/i,\n        alias: 'builtin'\n      },\n      punctuation: /[\\[\\](){};]/\n    }))\n    parser = Prism.languages.insertBefore('parser', 'keyword', {\n      'parser-comment': {\n        pattern: /(\\s)#.*/,\n        lookbehind: true,\n        alias: 'comment'\n      },\n      expression: {\n        // Allow for 3 levels of depth\n        pattern: /(^|[^^])\\((?:[^()]|\\((?:[^()]|\\((?:[^()])*\\))*\\))*\\)/,\n        greedy: true,\n        lookbehind: true,\n        inside: {\n          string: {\n            pattern: /(^|[^^])([\"'])(?:(?!\\2)[^^]|\\^[\\s\\S])*\\2/,\n            lookbehind: true\n          },\n          keyword: parser.keyword,\n          variable: parser.variable,\n          function: parser.function,\n          boolean: /\\b(?:false|true)\\b/,\n          number: /\\b(?:0x[a-f\\d]+|\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\b/i,\n          escape: parser.escape,\n          operator:\n            /[~+*\\/\\\\%]|!(?:\\|\\|?|=)?|&&?|\\|\\|?|==|<[<=]?|>[>=]?|-[fd]?|\\b(?:def|eq|ge|gt|in|is|le|lt|ne)\\b/,\n          punctuation: parser.punctuation\n        }\n      }\n    })\n    Prism.languages.insertBefore(\n      'inside',\n      'punctuation',\n      {\n        expression: parser.expression,\n        keyword: parser.keyword,\n        variable: parser.variable,\n        function: parser.function,\n        escape: parser.escape,\n        'parser-punctuation': {\n          pattern: parser.punctuation,\n          alias: 'punctuation'\n        }\n      },\n      parser['tag'].inside['attr-value']\n    )\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = pascal\npascal.displayName = 'pascal'\npascal.aliases = ['objectpascal']\nfunction pascal(Prism) {\n  // Based on Free Pascal\n  /* TODO\nSupport inline asm ?\n*/\n  Prism.languages.pascal = {\n    directive: {\n      pattern: /\\{\\$[\\s\\S]*?\\}/,\n      greedy: true,\n      alias: ['marco', 'property']\n    },\n    comment: {\n      pattern: /\\(\\*[\\s\\S]*?\\*\\)|\\{[\\s\\S]*?\\}|\\/\\/.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /(?:'(?:''|[^'\\r\\n])*'(?!')|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n      greedy: true\n    },\n    asm: {\n      pattern: /(\\basm\\b)[\\s\\S]+?(?=\\bend\\s*[;[])/i,\n      lookbehind: true,\n      greedy: true,\n      inside: null // see below\n    },\n    keyword: [\n      {\n        // Turbo Pascal\n        pattern:\n          /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n        lookbehind: true\n      },\n      {\n        // Free Pascal\n        pattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n        lookbehind: true\n      },\n      {\n        // Object Pascal\n        pattern:\n          /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n        lookbehind: true\n      },\n      {\n        // Modifiers\n        pattern:\n          /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n        lookbehind: true\n      }\n    ],\n    number: [\n      // Hexadecimal, octal and binary\n      /(?:[&%]\\d+|\\$[a-f\\d]+)/i, // Decimal\n      /\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n    ],\n    operator: [\n      /\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/,\n      {\n        pattern:\n          /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n  }\n  Prism.languages.pascal.asm.inside = Prism.languages.extend('pascal', {\n    asm: undefined,\n    keyword: undefined,\n    operator: undefined\n  })\n  Prism.languages.objectpascal = Prism.languages.pascal\n}\n","'use strict'\n\nmodule.exports = pascaligo\npascaligo.displayName = 'pascaligo'\npascaligo.aliases = []\nfunction pascaligo(Prism) {\n  ;(function (Prism) {\n    // Pascaligo is a layer 2 smart contract language for the tezos blockchain\n    var braces = /\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\)/.source\n    var type = /(?:\\b\\w+(?:<braces>)?|<braces>)/.source.replace(\n      /<braces>/g,\n      function () {\n        return braces\n      }\n    )\n    var pascaligo = (Prism.languages.pascaligo = {\n      comment: /\\(\\*[\\s\\S]+?\\*\\)|\\/\\/.*/,\n      string: {\n        pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\^[a-z]/i,\n        greedy: true\n      },\n      'class-name': [\n        {\n          pattern: RegExp(\n            /(\\btype\\s+\\w+\\s+is\\s+)<type>/.source.replace(\n              /<type>/g,\n              function () {\n                return type\n              }\n            ),\n            'i'\n          ),\n          lookbehind: true,\n          inside: null // see below\n        },\n        {\n          pattern: RegExp(\n            /<type>(?=\\s+is\\b)/.source.replace(/<type>/g, function () {\n              return type\n            }),\n            'i'\n          ),\n          inside: null // see below\n        },\n        {\n          pattern: RegExp(\n            /(:\\s*)<type>/.source.replace(/<type>/g, function () {\n              return type\n            })\n          ),\n          lookbehind: true,\n          inside: null // see below\n        }\n      ],\n      keyword: {\n        pattern:\n          /(^|[^&])\\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\\b/i,\n        lookbehind: true\n      },\n      boolean: {\n        pattern: /(^|[^&])\\b(?:False|True)\\b/i,\n        lookbehind: true\n      },\n      builtin: {\n        pattern: /(^|[^&])\\b(?:bool|int|list|map|nat|record|string|unit)\\b/i,\n        lookbehind: true\n      },\n      function: /\\b\\w+(?=\\s*\\()/,\n      number: [\n        // Hexadecimal, octal and binary\n        /%[01]+|&[0-7]+|\\$[a-f\\d]+/i, // Decimal\n        /\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?(?:mtz|n)?/i\n      ],\n      operator:\n        /->|=\\/=|\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=|]|\\b(?:and|mod|or)\\b/,\n      punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.{}]/\n    })\n    var classNameInside = [\n      'comment',\n      'keyword',\n      'builtin',\n      'operator',\n      'punctuation'\n    ].reduce(function (accum, key) {\n      accum[key] = pascaligo[key]\n      return accum\n    }, {})\n    pascaligo['class-name'].forEach(function (p) {\n      p.inside = classNameInside\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = pcaxis\npcaxis.displayName = 'pcaxis'\npcaxis.aliases = ['px']\nfunction pcaxis(Prism) {\n  Prism.languages.pcaxis = {\n    string: /\"[^\"]*\"/,\n    keyword: {\n      pattern:\n        /((?:^|;)\\s*)[-A-Z\\d]+(?:\\s*\\[[-\\w]+\\])?(?:\\s*\\(\"[^\"]*\"(?:,\\s*\"[^\"]*\")*\\))?(?=\\s*=)/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        keyword: /^[-A-Z\\d]+/,\n        language: {\n          pattern: /^(\\s*)\\[[-\\w]+\\]/,\n          lookbehind: true,\n          inside: {\n            punctuation: /^\\[|\\]$/,\n            property: /[-\\w]+/\n          }\n        },\n        'sub-key': {\n          pattern: /^(\\s*)\\S[\\s\\S]*/,\n          lookbehind: true,\n          inside: {\n            parameter: {\n              pattern: /\"[^\"]*\"/,\n              alias: 'property'\n            },\n            punctuation: /^\\(|\\)$|,/\n          }\n        }\n      }\n    },\n    operator: /=/,\n    tlist: {\n      pattern:\n        /TLIST\\s*\\(\\s*\\w+(?:(?:\\s*,\\s*\"[^\"]*\")+|\\s*,\\s*\"[^\"]*\"-\"[^\"]*\")?\\s*\\)/,\n      greedy: true,\n      inside: {\n        function: /^TLIST/,\n        property: {\n          pattern: /^(\\s*\\(\\s*)\\w+/,\n          lookbehind: true\n        },\n        string: /\"[^\"]*\"/,\n        punctuation: /[(),]/,\n        operator: /-/\n      }\n    },\n    punctuation: /[;,]/,\n    number: {\n      pattern: /(^|\\s)\\d+(?:\\.\\d+)?(?!\\S)/,\n      lookbehind: true\n    },\n    boolean: /NO|YES/\n  }\n  Prism.languages.px = Prism.languages.pcaxis\n}\n","'use strict'\n\nmodule.exports = peoplecode\npeoplecode.displayName = 'peoplecode'\npeoplecode.aliases = ['pcode']\nfunction peoplecode(Prism) {\n  Prism.languages.peoplecode = {\n    comment: RegExp(\n      [\n        // C-style multiline comments\n        /\\/\\*[\\s\\S]*?\\*\\//.source, // REM comments\n        /\\bREM[^;]*;/.source, // Nested <* *> comments\n        /<\\*(?:[^<*]|\\*(?!>)|<(?!\\*)|<\\*(?:(?!\\*>)[\\s\\S])*\\*>)*\\*>/.source, // /+ +/ comments\n        /\\/\\+[\\s\\S]*?\\+\\//.source\n      ].join('|')\n    ),\n    string: {\n      pattern: /'(?:''|[^'\\r\\n])*'(?!')|\"(?:\"\"|[^\"\\r\\n])*\"(?!\")/,\n      greedy: true\n    },\n    variable: /%\\w+/,\n    'function-definition': {\n      pattern: /((?:^|[^\\w-])(?:function|method)\\s+)\\w+/i,\n      lookbehind: true,\n      alias: 'function'\n    },\n    'class-name': {\n      pattern:\n        /((?:^|[^-\\w])(?:as|catch|class|component|create|extends|global|implements|instance|local|of|property|returns)\\s+)\\w+(?::\\w+)*/i,\n      lookbehind: true,\n      inside: {\n        punctuation: /:/\n      }\n    },\n    keyword:\n      /\\b(?:abstract|alias|as|catch|class|component|constant|create|declare|else|end-(?:class|evaluate|for|function|get|if|method|set|try|while)|evaluate|extends|for|function|get|global|if|implements|import|instance|library|local|method|null|of|out|peopleCode|private|program|property|protected|readonly|ref|repeat|returns?|set|step|then|throw|to|try|until|value|when(?:-other)?|while)\\b/i,\n    'operator-keyword': {\n      pattern: /\\b(?:and|not|or)\\b/i,\n      alias: 'operator'\n    },\n    function: /[_a-z]\\w*(?=\\s*\\()/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    operator: /<>|[<>]=?|!=|\\*\\*|[-+*/|=@]/,\n    punctuation: /[:.;,()[\\]]/\n  }\n  Prism.languages.pcode = Prism.languages.peoplecode\n}\n","'use strict'\n\nmodule.exports = perl\nperl.displayName = 'perl'\nperl.aliases = []\nfunction perl(Prism) {\n  ;(function (Prism) {\n    var brackets =\n      /(?:\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}|\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)/\n        .source\n    Prism.languages.perl = {\n      comment: [\n        {\n          // POD\n          pattern: /(^\\s*)=\\w[\\s\\S]*?=cut.*/m,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: /(^|[^\\\\$])#.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      // TODO Could be nice to handle Heredoc too.\n      string: [\n        {\n          pattern: RegExp(\n            /\\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\\s*/.source +\n              '(?:' +\n              [\n                // q/.../\n                /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source, // q a...a\n                // eslint-disable-next-line regexp/strict\n                /([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/.source, // q(...)\n                // q{...}\n                // q[...]\n                // q<...>\n                brackets\n              ].join('|') +\n              ')'\n          ),\n          greedy: true\n        }, // \"...\", `...`\n        {\n          pattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n          greedy: true\n        }, // '...'\n        // FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n        {\n          pattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n          greedy: true\n        }\n      ],\n      regex: [\n        {\n          pattern: RegExp(\n            /\\b(?:m|qr)(?![a-zA-Z0-9])\\s*/.source +\n              '(?:' +\n              [\n                // m/.../\n                /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source, // m a...a\n                // eslint-disable-next-line regexp/strict\n                /([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/.source, // m(...)\n                // m{...}\n                // m[...]\n                // m<...>\n                brackets\n              ].join('|') +\n              ')' +\n              /[msixpodualngc]*/.source\n          ),\n          greedy: true\n        }, // The lookbehinds prevent -s from breaking\n        {\n          pattern: RegExp(\n            /(^|[^-])\\b(?:s|tr|y)(?![a-zA-Z0-9])\\s*/.source +\n              '(?:' +\n              [\n                // s/.../.../\n                // eslint-disable-next-line regexp/strict\n                /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/\n                  .source, // s a...a...a\n                // eslint-disable-next-line regexp/strict\n                /([a-zA-Z0-9])(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3/\n                  .source, // s(...)(...)\n                // s{...}{...}\n                // s[...][...]\n                // s<...><...>\n                // s(...)[...]\n                brackets + /\\s*/.source + brackets\n              ].join('|') +\n              ')' +\n              /[msixpodualngcer]*/.source\n          ),\n          lookbehind: true,\n          greedy: true\n        }, // /.../\n        // The look-ahead tries to prevent two divisions on\n        // the same line from being highlighted as regex.\n        // This does not support multi-line regex.\n        {\n          pattern:\n            /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\\b))/,\n          greedy: true\n        }\n      ],\n      // FIXME Not sure about the handling of ::, ', and #\n      variable: [\n        // ${^POSTMATCH}\n        /[&*$@%]\\{\\^[A-Z]+\\}/, // $^V\n        /[&*$@%]\\^[A-Z_]/, // ${...}\n        /[&*$@%]#?(?=\\{)/, // $foo\n        /[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+(?![\\w$]))+(?:::)*/, // $1\n        /[&*$@%]\\d+/, // $_, @_, %!\n        // The negative lookahead prevents from breaking the %= operator\n        /(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n      ],\n      filehandle: {\n        // <>, <FOO>, _\n        pattern: /<(?![<=])\\S*?>|\\b_\\b/,\n        alias: 'symbol'\n      },\n      'v-string': {\n        // v1.2, 1.2.3\n        pattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n        alias: 'string'\n      },\n      function: {\n        pattern: /(\\bsub[ \\t]+)\\w+/,\n        lookbehind: true\n      },\n      keyword:\n        /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n      number:\n        /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n      operator:\n        /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\\b/,\n      punctuation: /[{}[\\];(),:]/\n    }\n  })(Prism)\n}\n","'use strict'\nvar refractorPhp = require('./php.js')\nmodule.exports = phpExtras\nphpExtras.displayName = 'phpExtras'\nphpExtras.aliases = []\nfunction phpExtras(Prism) {\n  Prism.register(refractorPhp)\n  Prism.languages.insertBefore('php', 'variable', {\n    this: {\n      pattern: /\\$this\\b/,\n      alias: 'keyword'\n    },\n    global:\n      /\\$(?:GLOBALS|HTTP_RAW_POST_DATA|_(?:COOKIE|ENV|FILES|GET|POST|REQUEST|SERVER|SESSION)|argc|argv|http_response_header|php_errormsg)\\b/,\n    scope: {\n      pattern: /\\b[\\w\\\\]+::/,\n      inside: {\n        keyword: /\\b(?:parent|self|static)\\b/,\n        punctuation: /::|\\\\/\n      }\n    }\n  })\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = php\nphp.displayName = 'php'\nphp.aliases = []\nfunction php(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  /**\n   * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n   * Modified by Miles Johnson: http://milesj.me\n   * Rewritten by Tom Pavelec\n   *\n   * Supports PHP 5.3 - 8.0\n   */\n  ;(function (Prism) {\n    var comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/\n    var constant = [\n      {\n        pattern: /\\b(?:false|true)\\b/i,\n        alias: 'boolean'\n      },\n      {\n        pattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n        greedy: true,\n        lookbehind: true\n      },\n      {\n        pattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n        greedy: true,\n        lookbehind: true\n      },\n      /\\b(?:null)\\b/i,\n      /\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/\n    ]\n    var number =\n      /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n    var operator =\n      /<?=>|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/\n    var punctuation = /[{}\\[\\](),:;]/\n    Prism.languages.php = {\n      delimiter: {\n        pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n        alias: 'important'\n      },\n      comment: comment,\n      variable: /\\$+(?:\\w+\\b|(?=\\{))/,\n      package: {\n        pattern:\n          /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\\\/\n        }\n      },\n      'class-name-definition': {\n        pattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      'function-definition': {\n        pattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n        lookbehind: true,\n        alias: 'function'\n      },\n      keyword: [\n        {\n          pattern:\n            /(\\(\\s*)\\b(?:array|bool|boolean|float|int|integer|object|string)\\b(?=\\s*\\))/i,\n          alias: 'type-casting',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /([(,?]\\s*)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|object|self|static|string)\\b(?=\\s*\\$)/i,\n          alias: 'type-hint',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|object|self|static|string|void)\\b/i,\n          alias: 'return-type',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /\\b(?:array(?!\\s*\\()|bool|float|int|iterable|mixed|object|string|void)\\b/i,\n          alias: 'type-declaration',\n          greedy: true\n        },\n        {\n          pattern: /(\\|\\s*)(?:false|null)\\b|\\b(?:false|null)(?=\\s*\\|)/i,\n          alias: 'type-declaration',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n          alias: 'static-context',\n          greedy: true\n        },\n        {\n          // yield from\n          pattern: /(\\byield\\s+)from\\b/i,\n          lookbehind: true\n        }, // `class` is always a keyword unlike other keywords\n        /\\bclass\\b/i,\n        {\n          // https://www.php.net/manual/en/reserved.keywords.php\n          //\n          // keywords cannot be preceded by \"->\"\n          // the complex lookbehind means `(?<!(?:->|::)\\s*)`\n          pattern:\n            /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\\b/i,\n          lookbehind: true\n        }\n      ],\n      'argument-name': {\n        pattern: /([(,]\\s+)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n        lookbehind: true\n      },\n      'class-name': [\n        {\n          pattern:\n            /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n          greedy: true\n        },\n        {\n          pattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n          alias: 'class-name-fully-qualified',\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n          alias: 'class-name-fully-qualified',\n          greedy: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern:\n            /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n          alias: 'class-name-fully-qualified',\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n          alias: 'type-declaration',\n          greedy: true\n        },\n        {\n          pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n          alias: ['class-name-fully-qualified', 'type-declaration'],\n          greedy: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n          alias: 'static-context',\n          greedy: true\n        },\n        {\n          pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n          alias: ['class-name-fully-qualified', 'static-context'],\n          greedy: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n          alias: 'type-hint',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n          alias: ['class-name-fully-qualified', 'type-hint'],\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n          alias: 'return-type',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n          alias: ['class-name-fully-qualified', 'return-type'],\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        }\n      ],\n      constant: constant,\n      function: {\n        pattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\\\/\n        }\n      },\n      property: {\n        pattern: /(->\\s*)\\w+/,\n        lookbehind: true\n      },\n      number: number,\n      operator: operator,\n      punctuation: punctuation\n    }\n    var string_interpolation = {\n      pattern:\n        /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n      lookbehind: true,\n      inside: Prism.languages.php\n    }\n    var string = [\n      {\n        pattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n        alias: 'nowdoc-string',\n        greedy: true,\n        inside: {\n          delimiter: {\n            pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n            alias: 'symbol',\n            inside: {\n              punctuation: /^<<<'?|[';]$/\n            }\n          }\n        }\n      },\n      {\n        pattern:\n          /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n        alias: 'heredoc-string',\n        greedy: true,\n        inside: {\n          delimiter: {\n            pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n            alias: 'symbol',\n            inside: {\n              punctuation: /^<<<\"?|[\";]$/\n            }\n          },\n          interpolation: string_interpolation\n        }\n      },\n      {\n        pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n        alias: 'backtick-quoted-string',\n        greedy: true\n      },\n      {\n        pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n        alias: 'single-quoted-string',\n        greedy: true\n      },\n      {\n        pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n        alias: 'double-quoted-string',\n        greedy: true,\n        inside: {\n          interpolation: string_interpolation\n        }\n      }\n    ]\n    Prism.languages.insertBefore('php', 'variable', {\n      string: string,\n      attribute: {\n        pattern:\n          /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n        greedy: true,\n        inside: {\n          'attribute-content': {\n            pattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n            lookbehind: true,\n            // inside can appear subset of php\n            inside: {\n              comment: comment,\n              string: string,\n              'attribute-class-name': [\n                {\n                  pattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n                  alias: 'class-name',\n                  greedy: true,\n                  lookbehind: true\n                },\n                {\n                  pattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n                  alias: ['class-name', 'class-name-fully-qualified'],\n                  greedy: true,\n                  lookbehind: true,\n                  inside: {\n                    punctuation: /\\\\/\n                  }\n                }\n              ],\n              constant: constant,\n              number: number,\n              operator: operator,\n              punctuation: punctuation\n            }\n          },\n          delimiter: {\n            pattern: /^#\\[|\\]$/,\n            alias: 'punctuation'\n          }\n        }\n      }\n    })\n    Prism.hooks.add('before-tokenize', function (env) {\n      if (!/<\\?/.test(env.code)) {\n        return\n      }\n      var phpPattern =\n        /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'php',\n        phpPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php')\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorPhp = require('./php.js')\nvar refractorJavadoclike = require('./javadoclike.js')\nmodule.exports = phpdoc\nphpdoc.displayName = 'phpdoc'\nphpdoc.aliases = []\nfunction phpdoc(Prism) {\n  Prism.register(refractorPhp)\n  Prism.register(refractorJavadoclike)\n  ;(function (Prism) {\n    var typeExpression = /(?:\\b[a-zA-Z]\\w*|[|\\\\[\\]])+/.source\n    Prism.languages.phpdoc = Prism.languages.extend('javadoclike', {\n      parameter: {\n        pattern: RegExp(\n          '(@(?:global|param|property(?:-read|-write)?|var)\\\\s+(?:' +\n            typeExpression +\n            '\\\\s+)?)\\\\$\\\\w+'\n        ),\n        lookbehind: true\n      }\n    })\n    Prism.languages.insertBefore('phpdoc', 'keyword', {\n      'class-name': [\n        {\n          pattern: RegExp(\n            '(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\\\s+)' +\n              typeExpression\n          ),\n          lookbehind: true,\n          inside: {\n            keyword:\n              /\\b(?:array|bool|boolean|callback|double|false|float|int|integer|mixed|null|object|resource|self|string|true|void)\\b/,\n            punctuation: /[|\\\\[\\]()]/\n          }\n        }\n      ]\n    })\n    Prism.languages.javadoclike.addSupport('php', Prism.languages.phpdoc)\n  })(Prism)\n}\n","'use strict'\nvar refractorSql = require('./sql.js')\nmodule.exports = plsql\nplsql.displayName = 'plsql'\nplsql.aliases = []\nfunction plsql(Prism) {\n  Prism.register(refractorSql)\n  Prism.languages.plsql = Prism.languages.extend('sql', {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|--.*/,\n      greedy: true\n    },\n    // https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-reserved-words-keywords.html\n    keyword:\n      /\\b(?:A|ACCESSIBLE|ADD|AGENT|AGGREGATE|ALL|ALTER|AND|ANY|ARRAY|AS|ASC|AT|ATTRIBUTE|AUTHID|AVG|BEGIN|BETWEEN|BFILE_BASE|BINARY|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BULK|BY|BYTE|C|CALL|CALLING|CASCADE|CASE|CHAR|CHARACTER|CHARSET|CHARSETFORM|CHARSETID|CHAR_BASE|CHECK|CLOB_BASE|CLONE|CLOSE|CLUSTER|CLUSTERS|COLAUTH|COLLECT|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPILED|COMPRESS|CONNECT|CONSTANT|CONSTRUCTOR|CONTEXT|CONTINUE|CONVERT|COUNT|CRASH|CREATE|CREDENTIAL|CURRENT|CURSOR|CUSTOMDATUM|DANGLING|DATA|DATE|DATE_BASE|DAY|DECLARE|DEFAULT|DEFINE|DELETE|DESC|DETERMINISTIC|DIRECTORY|DISTINCT|DOUBLE|DROP|DURATION|ELEMENT|ELSE|ELSIF|EMPTY|END|ESCAPE|EXCEPT|EXCEPTION|EXCEPTIONS|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXTERNAL|FETCH|FINAL|FIRST|FIXED|FLOAT|FOR|FORALL|FORCE|FROM|FUNCTION|GENERAL|GOTO|GRANT|GROUP|HASH|HAVING|HEAP|HIDDEN|HOUR|IDENTIFIED|IF|IMMEDIATE|IMMUTABLE|IN|INCLUDING|INDEX|INDEXES|INDICATOR|INDICES|INFINITE|INSERT|INSTANTIABLE|INT|INTERFACE|INTERSECT|INTERVAL|INTO|INVALIDATE|IS|ISOLATION|JAVA|LANGUAGE|LARGE|LEADING|LENGTH|LEVEL|LIBRARY|LIKE|LIKE2|LIKE4|LIKEC|LIMIT|LIMITED|LOCAL|LOCK|LONG|LOOP|MAP|MAX|MAXLEN|MEMBER|MERGE|MIN|MINUS|MINUTE|MOD|MODE|MODIFY|MONTH|MULTISET|MUTABLE|NAME|NAN|NATIONAL|NATIVE|NCHAR|NEW|NOCOMPRESS|NOCOPY|NOT|NOWAIT|NULL|NUMBER_BASE|OBJECT|OCICOLL|OCIDATE|OCIDATETIME|OCIDURATION|OCIINTERVAL|OCILOBLOCATOR|OCINUMBER|OCIRAW|OCIREF|OCIREFCURSOR|OCIROWID|OCISTRING|OCITYPE|OF|OLD|ON|ONLY|OPAQUE|OPEN|OPERATOR|OPTION|OR|ORACLE|ORADATA|ORDER|ORGANIZATION|ORLANY|ORLVARY|OTHERS|OUT|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETER|PARAMETERS|PARENT|PARTITION|PASCAL|PERSISTABLE|PIPE|PIPELINED|PLUGGABLE|POLYMORPHIC|PRAGMA|PRECISION|PRIOR|PRIVATE|PROCEDURE|PUBLIC|RAISE|RANGE|RAW|READ|RECORD|REF|REFERENCE|RELIES_ON|REM|REMAINDER|RENAME|RESOURCE|RESULT|RESULT_CACHE|RETURN|RETURNING|REVERSE|REVOKE|ROLLBACK|ROW|SAMPLE|SAVE|SAVEPOINT|SB1|SB2|SB4|SECOND|SEGMENT|SELECT|SELF|SEPARATE|SEQUENCE|SERIALIZABLE|SET|SHARE|SHORT|SIZE|SIZE_T|SOME|SPARSE|SQL|SQLCODE|SQLDATA|SQLNAME|SQLSTATE|STANDARD|START|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUM|SYNONYM|TABAUTH|TABLE|TDO|THE|THEN|TIME|TIMESTAMP|TIMEZONE_ABBR|TIMEZONE_HOUR|TIMEZONE_MINUTE|TIMEZONE_REGION|TO|TRAILING|TRANSACTION|TRANSACTIONAL|TRUSTED|TYPE|UB1|UB2|UB4|UNDER|UNION|UNIQUE|UNPLUG|UNSIGNED|UNTRUSTED|UPDATE|USE|USING|VALIST|VALUE|VALUES|VARIABLE|VARIANCE|VARRAY|VARYING|VIEW|VIEWS|VOID|WHEN|WHERE|WHILE|WITH|WORK|WRAPPED|WRITE|YEAR|ZONE)\\b/i,\n    // https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-language-fundamentals.html#GUID-96A42F7C-7A71-4B90-8255-CA9C8BD9722E\n    operator: /:=?|=>|[<>^~!]=|\\.\\.|\\|\\||\\*\\*|[-+*/%<>=@]/\n  })\n  Prism.languages.insertBefore('plsql', 'operator', {\n    label: {\n      pattern: /<<\\s*\\w+\\s*>>/,\n      alias: 'symbol'\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = powerquery\npowerquery.displayName = 'powerquery'\npowerquery.aliases = []\nfunction powerquery(Prism) {\n  // https://docs.microsoft.com/en-us/powerquery-m/power-query-m-language-specification\n  Prism.languages.powerquery = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    'quoted-identifier': {\n      pattern: /#\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    string: {\n      pattern: /(?:#!)?\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    constant: [\n      /\\bDay\\.(?:Friday|Monday|Saturday|Sunday|Thursday|Tuesday|Wednesday)\\b/,\n      /\\bTraceLevel\\.(?:Critical|Error|Information|Verbose|Warning)\\b/,\n      /\\bOccurrence\\.(?:All|First|Last)\\b/,\n      /\\bOrder\\.(?:Ascending|Descending)\\b/,\n      /\\bRoundingMode\\.(?:AwayFromZero|Down|ToEven|TowardZero|Up)\\b/,\n      /\\bMissingField\\.(?:Error|Ignore|UseNull)\\b/,\n      /\\bQuoteStyle\\.(?:Csv|None)\\b/,\n      /\\bJoinKind\\.(?:FullOuter|Inner|LeftAnti|LeftOuter|RightAnti|RightOuter)\\b/,\n      /\\bGroupKind\\.(?:Global|Local)\\b/,\n      /\\bExtraValues\\.(?:Error|Ignore|List)\\b/,\n      /\\bJoinAlgorithm\\.(?:Dynamic|LeftHash|LeftIndex|PairwiseHash|RightHash|RightIndex|SortMerge)\\b/,\n      /\\bJoinSide\\.(?:Left|Right)\\b/,\n      /\\bPrecision\\.(?:Decimal|Double)\\b/,\n      /\\bRelativePosition\\.From(?:End|Start)\\b/,\n      /\\bTextEncoding\\.(?:Ascii|BigEndianUnicode|Unicode|Utf16|Utf8|Windows)\\b/,\n      /\\b(?:Any|Binary|Date|DateTime|DateTimeZone|Duration|Function|Int16|Int32|Int64|Int8|List|Logical|None|Number|Record|Table|Text|Time)\\.Type\\b/,\n      /\\bnull\\b/\n    ],\n    boolean: /\\b(?:false|true)\\b/,\n    keyword:\n      /\\b(?:and|as|each|else|error|if|in|is|let|meta|not|nullable|optional|or|otherwise|section|shared|then|try|type)\\b|#(?:binary|date|datetime|datetimezone|duration|infinity|nan|sections|shared|table|time)\\b/,\n    function: {\n      pattern: /(^|[^#\\w.])[a-z_][\\w.]*(?=\\s*\\()/i,\n      lookbehind: true\n    },\n    'data-type': {\n      pattern:\n        /\\b(?:any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|number|record|table|text|time)\\b/,\n      alias: 'class-name'\n    },\n    number: {\n      pattern:\n        /\\b0x[\\da-f]+\\b|(?:[+-]?(?:\\b\\d+\\.)?\\b\\d+|[+-]\\.\\d+|(^|[^.])\\B\\.\\d+)(?:e[+-]?\\d+)?\\b/i,\n      lookbehind: true\n    },\n    operator: /[-+*\\/&?@^]|<(?:=>?|>)?|>=?|=>?|\\.\\.\\.?/,\n    punctuation: /[,;\\[\\](){}]/\n  }\n  Prism.languages.pq = Prism.languages['powerquery']\n  Prism.languages.mscript = Prism.languages['powerquery']\n}\n","'use strict'\n\nmodule.exports = powershell\npowershell.displayName = 'powershell'\npowershell.aliases = []\nfunction powershell(Prism) {\n  ;(function (Prism) {\n    var powershell = (Prism.languages.powershell = {\n      comment: [\n        {\n          pattern: /(^|[^`])<#[\\s\\S]*?#>/,\n          lookbehind: true\n        },\n        {\n          pattern: /(^|[^`])#.*/,\n          lookbehind: true\n        }\n      ],\n      string: [\n        {\n          pattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n          greedy: true,\n          inside: null // see below\n        },\n        {\n          pattern: /'(?:[^']|'')*'/,\n          greedy: true\n        }\n      ],\n      // Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n      // Supports two levels of nested brackets (e.g. `[OutputType([System.Collections.Generic.List[int]])]`)\n      namespace: /\\[[a-z](?:\\[(?:\\[[^\\]]*\\]|[^\\[\\]])*\\]|[^\\[\\]])*\\]/i,\n      boolean: /\\$(?:false|true)\\b/i,\n      variable: /\\$\\w+\\b/,\n      // Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n      // Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n      // Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n      function: [\n        /\\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\\b/i,\n        /\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n      ],\n      // per http://technet.microsoft.com/en-us/library/hh847744.aspx\n      keyword:\n        /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n      operator: {\n        pattern:\n          /(^|\\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n        lookbehind: true\n      },\n      punctuation: /[|{}[\\];(),.]/\n    }) // Variable interpolation inside strings, and nested expressions\n    powershell.string[0].inside = {\n      function: {\n        // Allow for one level of nesting\n        pattern: /(^|[^`])\\$\\((?:\\$\\([^\\r\\n()]*\\)|(?!\\$\\()[^\\r\\n)])*\\)/,\n        lookbehind: true,\n        inside: powershell\n      },\n      boolean: powershell.boolean,\n      variable: powershell.variable\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = processing\nprocessing.displayName = 'processing'\nprocessing.aliases = []\nfunction processing(Prism) {\n  Prism.languages.processing = Prism.languages.extend('clike', {\n    keyword:\n      /\\b(?:break|case|catch|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\\b/,\n    // Spaces are allowed between function name and parenthesis\n    function: /\\b\\w+(?=\\s*\\()/,\n    operator: /<[<=]?|>[>=]?|&&?|\\|\\|?|[%?]|[!=+\\-*\\/]=?/\n  })\n  Prism.languages.insertBefore('processing', 'number', {\n    // Special case: XML is a type\n    constant: /\\b(?!XML\\b)[A-Z][A-Z\\d_]+\\b/,\n    type: {\n      pattern: /\\b(?:boolean|byte|char|color|double|float|int|[A-Z]\\w*)\\b/,\n      alias: 'class-name'\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = prolog\nprolog.displayName = 'prolog'\nprolog.aliases = []\nfunction prolog(Prism) {\n  Prism.languages.prolog = {\n    // Syntax depends on the implementation\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|%.*/,\n      greedy: true\n    },\n    // Depending on the implementation, strings may allow escaped newlines and quote-escape\n    string: {\n      pattern: /([\"'])(?:\\1\\1|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1(?!\\1)/,\n      greedy: true\n    },\n    builtin: /\\b(?:fx|fy|xf[xy]?|yfx?)\\b/,\n    // FIXME: Should we list all null-ary predicates (not followed by a parenthesis) like halt, trace, etc.?\n    function: /\\b[a-z]\\w*(?:(?=\\()|\\/\\d+)/,\n    number: /\\b\\d+(?:\\.\\d*)?/,\n    // Custom operators are allowed\n    operator: /[:\\\\=><\\-?*@\\/;+^|!$.]+|\\b(?:is|mod|not|xor)\\b/,\n    punctuation: /[(){}\\[\\],]/\n  }\n}\n","'use strict'\n\nmodule.exports = promql\npromql.displayName = 'promql'\npromql.aliases = []\nfunction promql(Prism) {\n  // Thanks to: https://github.com/prometheus-community/monaco-promql/blob/master/src/promql/promql.ts\n  // As well as: https://kausal.co/blog/slate-prism-add-new-syntax-promql/\n  ;(function (Prism) {\n    // PromQL Aggregation Operators\n    // (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)\n    var aggregations = [\n      'sum',\n      'min',\n      'max',\n      'avg',\n      'group',\n      'stddev',\n      'stdvar',\n      'count',\n      'count_values',\n      'bottomk',\n      'topk',\n      'quantile'\n    ] // PromQL vector matching + the by and without clauses\n    // (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)\n    var vectorMatching = [\n      'on',\n      'ignoring',\n      'group_right',\n      'group_left',\n      'by',\n      'without'\n    ] // PromQL offset modifier\n    // (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)\n    var offsetModifier = ['offset']\n    var keywords = aggregations.concat(vectorMatching, offsetModifier)\n    Prism.languages.promql = {\n      comment: {\n        pattern: /(^[ \\t]*)#.*/m,\n        lookbehind: true\n      },\n      'vector-match': {\n        // Match the comma-separated label lists inside vector matching:\n        pattern: new RegExp(\n          '((?:' + vectorMatching.join('|') + ')\\\\s*)\\\\([^)]*\\\\)'\n        ),\n        lookbehind: true,\n        inside: {\n          'label-key': {\n            pattern: /\\b[^,]+\\b/,\n            alias: 'attr-name'\n          },\n          punctuation: /[(),]/\n        }\n      },\n      'context-labels': {\n        pattern: /\\{[^{}]*\\}/,\n        inside: {\n          'label-key': {\n            pattern: /\\b[a-z_]\\w*(?=\\s*(?:=|![=~]))/,\n            alias: 'attr-name'\n          },\n          'label-value': {\n            pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n            greedy: true,\n            alias: 'attr-value'\n          },\n          punctuation: /\\{|\\}|=~?|![=~]|,/\n        }\n      },\n      'context-range': [\n        {\n          pattern: /\\[[\\w\\s:]+\\]/,\n          // [1m]\n          inside: {\n            punctuation: /\\[|\\]|:/,\n            'range-duration': {\n              pattern: /\\b(?:\\d+(?:[smhdwy]|ms))+\\b/i,\n              alias: 'number'\n            }\n          }\n        },\n        {\n          pattern: /(\\boffset\\s+)\\w+/,\n          // offset 1m\n          lookbehind: true,\n          inside: {\n            'range-duration': {\n              pattern: /\\b(?:\\d+(?:[smhdwy]|ms))+\\b/i,\n              alias: 'number'\n            }\n          }\n        }\n      ],\n      keyword: new RegExp('\\\\b(?:' + keywords.join('|') + ')\\\\b', 'i'),\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n      number:\n        /[-+]?(?:(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[-+]?\\d+)?\\b|\\b(?:0x[0-9a-f]+|nan|inf)\\b)/i,\n      operator: /[\\^*/%+-]|==|!=|<=|<|>=|>|\\b(?:and|or|unless)\\b/i,\n      punctuation: /[{};()`,.[\\]]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = properties\nproperties.displayName = 'properties'\nproperties.aliases = []\nfunction properties(Prism) {\n  Prism.languages.properties = {\n    comment: /^[ \\t]*[#!].*$/m,\n    'attr-value': {\n      pattern:\n        /(^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?: *[=:] *(?! )| ))(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])+/m,\n      lookbehind: true\n    },\n    'attr-name': /^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?= *[=:]| )/m,\n    punctuation: /[=:]/\n  }\n}\n","'use strict'\n\nmodule.exports = protobuf\nprotobuf.displayName = 'protobuf'\nprotobuf.aliases = []\nfunction protobuf(Prism) {\n  ;(function (Prism) {\n    var builtinTypes =\n      /\\b(?:bool|bytes|double|s?fixed(?:32|64)|float|[su]?int(?:32|64)|string)\\b/\n    Prism.languages.protobuf = Prism.languages.extend('clike', {\n      'class-name': [\n        {\n          pattern:\n            /(\\b(?:enum|extend|message|service)\\s+)[A-Za-z_]\\w*(?=\\s*\\{)/,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /(\\b(?:rpc\\s+\\w+|returns)\\s*\\(\\s*(?:stream\\s+)?)\\.?[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*(?=\\s*\\))/,\n          lookbehind: true\n        }\n      ],\n      keyword:\n        /\\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\\s+\\w)|service|stream|syntax|to)\\b(?!\\s*=\\s*\\d)/,\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i\n    })\n    Prism.languages.insertBefore('protobuf', 'operator', {\n      map: {\n        pattern: /\\bmap<\\s*[\\w.]+\\s*,\\s*[\\w.]+\\s*>(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n        alias: 'class-name',\n        inside: {\n          punctuation: /[<>.,]/,\n          builtin: builtinTypes\n        }\n      },\n      builtin: builtinTypes,\n      'positional-class-name': {\n        pattern: /(?:\\b|\\B\\.)[a-z_]\\w*(?:\\.[a-z_]\\w*)*(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n        alias: 'class-name',\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      annotation: {\n        pattern: /(\\[\\s*)[a-z_]\\w*(?=\\s*=)/i,\n        lookbehind: true\n      }\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = psl\npsl.displayName = 'psl'\npsl.aliases = []\nfunction psl(Prism) {\n  Prism.languages.psl = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n      greedy: true,\n      inside: {\n        symbol: /\\\\[ntrbA-Z\"\\\\]/\n      }\n    },\n    'heredoc-string': {\n      pattern: /<<<([a-zA-Z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\1\\b/,\n      alias: 'string',\n      greedy: true\n    },\n    keyword:\n      /\\b(?:__multi|__single|case|default|do|else|elsif|exit|export|for|foreach|function|if|last|line|local|next|requires|return|switch|until|while|word)\\b/,\n    constant:\n      /\\b(?:ALARM|CHART_ADD_GRAPH|CHART_DELETE_GRAPH|CHART_DESTROY|CHART_LOAD|CHART_PRINT|EOF|OFFLINE|OK|PSL_PROF_LOG|R_CHECK_HORIZ|R_CHECK_VERT|R_CLICKER|R_COLUMN|R_FRAME|R_ICON|R_LABEL|R_LABEL_CENTER|R_LIST_MULTIPLE|R_LIST_MULTIPLE_ND|R_LIST_SINGLE|R_LIST_SINGLE_ND|R_MENU|R_POPUP|R_POPUP_SCROLLED|R_RADIO_HORIZ|R_RADIO_VERT|R_ROW|R_SCALE_HORIZ|R_SCALE_VERT|R_SEP_HORIZ|R_SEP_VERT|R_SPINNER|R_TEXT_FIELD|R_TEXT_FIELD_LABEL|R_TOGGLE|TRIM_LEADING|TRIM_LEADING_AND_TRAILING|TRIM_REDUNDANT|TRIM_TRAILING|VOID|WARN)\\b/,\n    boolean: /\\b(?:FALSE|False|NO|No|TRUE|True|YES|Yes|false|no|true|yes)\\b/,\n    variable: /\\b(?:PslDebug|errno|exit_status)\\b/,\n    builtin: {\n      pattern:\n        /\\b(?:PslExecute|PslFunctionCall|PslFunctionExists|PslSetOptions|_snmp_debug|acos|add_diary|annotate|annotate_get|ascii_to_ebcdic|asctime|asin|atan|atexit|batch_set|blackout|cat|ceil|chan_exists|change_state|close|code_cvt|cond_signal|cond_wait|console_type|convert_base|convert_date|convert_locale_date|cos|cosh|create|date|dcget_text|destroy|destroy_lock|dget_text|difference|dump_hist|ebcdic_to_ascii|encrypt|event_archive|event_catalog_get|event_check|event_query|event_range_manage|event_range_query|event_report|event_schedule|event_trigger|event_trigger2|execute|exists|exp|fabs|file|floor|fmod|fopen|fseek|ftell|full_discovery|get|get_chan_info|get_ranges|get_text|get_vars|getenv|gethostinfo|getpid|getpname|grep|history|history_get_retention|in_transition|index|int|internal|intersection|is_var|isnumber|join|kill|length|lines|lock|lock_info|log|log10|loge|matchline|msg_check|msg_get_format|msg_get_severity|msg_printf|msg_sprintf|ntharg|nthargf|nthline|nthlinef|num_bytes|num_consoles|pconfig|popen|poplines|pow|print|printf|proc_exists|process|random|read|readln|refresh_parameters|remote_check|remote_close|remote_event_query|remote_event_trigger|remote_file_send|remote_open|remove|replace|rindex|sec_check_priv|sec_store_get|sec_store_set|set|set_alarm_ranges|set_locale|share|sin|sinh|sleep|snmp_agent_config|snmp_agent_start|snmp_agent_stop|snmp_close|snmp_config|snmp_get|snmp_get_next|snmp_h_get|snmp_h_get_next|snmp_h_set|snmp_open|snmp_set|snmp_trap_ignore|snmp_trap_listen|snmp_trap_raise_std_trap|snmp_trap_receive|snmp_trap_register_im|snmp_trap_send|snmp_walk|sopen|sort|splitline|sprintf|sqrt|srandom|str_repeat|strcasecmp|subset|substr|system|tail|tan|tanh|text_domain|time|tmpnam|tolower|toupper|trace_psl_process|trim|union|unique|unlock|unset|va_arg|va_start|write)\\b/,\n      alias: 'builtin-function'\n    },\n    'foreach-variable': {\n      pattern:\n        /(\\bforeach\\s+(?:(?:\\w+\\b|\"(?:\\\\.|[^\\\\\"])*\")\\s+){0,2})[_a-zA-Z]\\w*(?=\\s*\\()/,\n      lookbehind: true,\n      greedy: true\n    },\n    function: /\\b[_a-z]\\w*\\b(?=\\s*\\()/i,\n    number: /\\b(?:0x[0-9a-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n    operator: /--|\\+\\+|&&=?|\\|\\|=?|<<=?|>>=?|[=!]~|[-+*/%&|^!=<>]=?|\\.|[:?]/,\n    punctuation: /[(){}\\[\\];,]/\n  }\n}\n","'use strict'\n\nmodule.exports = pug\npug.displayName = 'pug'\npug.aliases = []\nfunction pug(Prism) {\n  ;(function (Prism) {\n    // TODO:\n    // - Add CSS highlighting inside <style> tags\n    // - Add support for multi-line code blocks\n    // - Add support for interpolation #{} and !{}\n    // - Add support for tag interpolation #[]\n    // - Add explicit support for plain text using |\n    // - Add support for markup embedded in plain text\n    Prism.languages.pug = {\n      // Multiline stuff should appear before the rest\n      // This handles both single-line and multi-line comments\n      comment: {\n        pattern: /(^([\\t ]*))\\/\\/.*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)*/m,\n        lookbehind: true\n      },\n      // All the tag-related part is in lookbehind\n      // so that it can be highlighted by the \"tag\" pattern\n      'multiline-script': {\n        pattern:\n          /(^([\\t ]*)script\\b.*\\.[\\t ]*)(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      // See at the end of the file for known filters\n      filter: {\n        pattern:\n          /(^([\\t ]*)):.+(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n        lookbehind: true,\n        inside: {\n          'filter-name': {\n            pattern: /^:[\\w-]+/,\n            alias: 'variable'\n          },\n          text: /\\S[\\s\\S]*/\n        }\n      },\n      'multiline-plain-text': {\n        pattern:\n          /(^([\\t ]*)[\\w\\-#.]+\\.[\\t ]*)(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n        lookbehind: true\n      },\n      markup: {\n        pattern: /(^[\\t ]*)<.+/m,\n        lookbehind: true,\n        inside: Prism.languages.markup\n      },\n      doctype: {\n        pattern: /((?:^|\\n)[\\t ]*)doctype(?: .+)?/,\n        lookbehind: true\n      },\n      // This handle all conditional and loop keywords\n      'flow-control': {\n        pattern:\n          /(^[\\t ]*)(?:case|default|each|else|if|unless|when|while)\\b(?: .+)?/m,\n        lookbehind: true,\n        inside: {\n          each: {\n            pattern: /^each .+? in\\b/,\n            inside: {\n              keyword: /\\b(?:each|in)\\b/,\n              punctuation: /,/\n            }\n          },\n          branch: {\n            pattern: /^(?:case|default|else|if|unless|when|while)\\b/,\n            alias: 'keyword'\n          },\n          rest: Prism.languages.javascript\n        }\n      },\n      keyword: {\n        pattern: /(^[\\t ]*)(?:append|block|extends|include|prepend)\\b.+/m,\n        lookbehind: true\n      },\n      mixin: [\n        // Declaration\n        {\n          pattern: /(^[\\t ]*)mixin .+/m,\n          lookbehind: true,\n          inside: {\n            keyword: /^mixin/,\n            function: /\\w+(?=\\s*\\(|\\s*$)/,\n            punctuation: /[(),.]/\n          }\n        }, // Usage\n        {\n          pattern: /(^[\\t ]*)\\+.+/m,\n          lookbehind: true,\n          inside: {\n            name: {\n              pattern: /^\\+\\w+/,\n              alias: 'function'\n            },\n            rest: Prism.languages.javascript\n          }\n        }\n      ],\n      script: {\n        pattern: /(^[\\t ]*script(?:(?:&[^(]+)?\\([^)]+\\))*[\\t ]).+/m,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      'plain-text': {\n        pattern:\n          /(^[\\t ]*(?!-)[\\w\\-#.]*[\\w\\-](?:(?:&[^(]+)?\\([^)]+\\))*\\/?[\\t ]).+/m,\n        lookbehind: true\n      },\n      tag: {\n        pattern: /(^[\\t ]*)(?!-)[\\w\\-#.]*[\\w\\-](?:(?:&[^(]+)?\\([^)]+\\))*\\/?:?/m,\n        lookbehind: true,\n        inside: {\n          attributes: [\n            {\n              pattern: /&[^(]+\\([^)]+\\)/,\n              inside: Prism.languages.javascript\n            },\n            {\n              pattern: /\\([^)]+\\)/,\n              inside: {\n                'attr-value': {\n                  pattern: /(=\\s*(?!\\s))(?:\\{[^}]*\\}|[^,)\\r\\n]+)/,\n                  lookbehind: true,\n                  inside: Prism.languages.javascript\n                },\n                'attr-name': /[\\w-]+(?=\\s*!?=|\\s*[,)])/,\n                punctuation: /[!=(),]+/\n              }\n            }\n          ],\n          punctuation: /:/,\n          'attr-id': /#[\\w\\-]+/,\n          'attr-class': /\\.[\\w\\-]+/\n        }\n      },\n      code: [\n        {\n          pattern: /(^[\\t ]*(?:-|!?=)).+/m,\n          lookbehind: true,\n          inside: Prism.languages.javascript\n        }\n      ],\n      punctuation: /[.\\-!=|]+/\n    }\n    var filter_pattern =\n      /(^([\\t ]*)):<filter_name>(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/\n        .source // Non exhaustive list of available filters and associated languages\n    var filters = [\n      {\n        filter: 'atpl',\n        language: 'twig'\n      },\n      {\n        filter: 'coffee',\n        language: 'coffeescript'\n      },\n      'ejs',\n      'handlebars',\n      'less',\n      'livescript',\n      'markdown',\n      {\n        filter: 'sass',\n        language: 'scss'\n      },\n      'stylus'\n    ]\n    var all_filters = {}\n    for (var i = 0, l = filters.length; i < l; i++) {\n      var filter = filters[i]\n      filter =\n        typeof filter === 'string'\n          ? {\n              filter: filter,\n              language: filter\n            }\n          : filter\n      if (Prism.languages[filter.language]) {\n        all_filters['filter-' + filter.filter] = {\n          pattern: RegExp(\n            filter_pattern.replace('<filter_name>', function () {\n              return filter.filter\n            }),\n            'm'\n          ),\n          lookbehind: true,\n          inside: {\n            'filter-name': {\n              pattern: /^:[\\w-]+/,\n              alias: 'variable'\n            },\n            text: {\n              pattern: /\\S[\\s\\S]*/,\n              alias: [filter.language, 'language-' + filter.language],\n              inside: Prism.languages[filter.language]\n            }\n          }\n        }\n      }\n    }\n    Prism.languages.insertBefore('pug', 'filter', all_filters)\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = puppet\npuppet.displayName = 'puppet'\npuppet.aliases = []\nfunction puppet(Prism) {\n  ;(function (Prism) {\n    Prism.languages.puppet = {\n      heredoc: [\n        // Matches the content of a quoted heredoc string (subject to interpolation)\n        {\n          pattern:\n            /(@\\(\"([^\"\\r\\n\\/):]+)\"(?:\\/[nrts$uL]*)?\\).*(?:\\r?\\n|\\r))(?:.*(?:\\r?\\n|\\r(?!\\n)))*?[ \\t]*(?:\\|[ \\t]*)?(?:-[ \\t]*)?\\2/,\n          lookbehind: true,\n          alias: 'string',\n          inside: {\n            // Matches the end tag\n            punctuation: /(?=\\S).*\\S(?= *$)/ // See interpolation below\n          }\n        }, // Matches the content of an unquoted heredoc string (no interpolation)\n        {\n          pattern:\n            /(@\\(([^\"\\r\\n\\/):]+)(?:\\/[nrts$uL]*)?\\).*(?:\\r?\\n|\\r))(?:.*(?:\\r?\\n|\\r(?!\\n)))*?[ \\t]*(?:\\|[ \\t]*)?(?:-[ \\t]*)?\\2/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: {\n            // Matches the end tag\n            punctuation: /(?=\\S).*\\S(?= *$)/\n          }\n        }, // Matches the start tag of heredoc strings\n        {\n          pattern: /@\\(\"?(?:[^\"\\r\\n\\/):]+)\"?(?:\\/[nrts$uL]*)?\\)/,\n          alias: 'string',\n          inside: {\n            punctuation: {\n              pattern: /(\\().+?(?=\\))/,\n              lookbehind: true\n            }\n          }\n        }\n      ],\n      'multiline-comment': {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n        lookbehind: true,\n        greedy: true,\n        alias: 'comment'\n      },\n      regex: {\n        // Must be prefixed with the keyword \"node\" or a non-word char\n        pattern:\n          /((?:\\bnode\\s+|[~=\\(\\[\\{,]\\s*|[=+]>\\s*|^\\s*))\\/(?:[^\\/\\\\]|\\\\[\\s\\S])+\\/(?:[imx]+\\b|\\B)/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          // Extended regexes must have the x flag. They can contain single-line comments.\n          'extended-regex': {\n            pattern: /^\\/(?:[^\\/\\\\]|\\\\[\\s\\S])+\\/[im]*x[im]*$/,\n            inside: {\n              comment: /#.*/\n            }\n          }\n        }\n      },\n      comment: {\n        pattern: /(^|[^\\\\])#.*/,\n        lookbehind: true,\n        greedy: true\n      },\n      string: {\n        // Allow for one nested level of double quotes inside interpolation\n        pattern:\n          /([\"'])(?:\\$\\{(?:[^'\"}]|([\"'])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2)+\\}|\\$(?!\\{)|(?!\\1)[^\\\\$]|\\\\[\\s\\S])*\\1/,\n        greedy: true,\n        inside: {\n          'double-quoted': {\n            pattern: /^\"[\\s\\S]*\"$/,\n            inside: {\n              // See interpolation below\n            }\n          }\n        }\n      },\n      variable: {\n        pattern: /\\$(?:::)?\\w+(?:::\\w+)*/,\n        inside: {\n          punctuation: /::/\n        }\n      },\n      'attr-name': /(?:\\b\\w+|\\*)(?=\\s*=>)/,\n      function: [\n        {\n          pattern: /(\\.)(?!\\d)\\w+/,\n          lookbehind: true\n        },\n        /\\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\\b|\\b(?!\\d)\\w+(?=\\()/\n      ],\n      number: /\\b(?:0x[a-f\\d]+|\\d+(?:\\.\\d+)?(?:e-?\\d+)?)\\b/i,\n      boolean: /\\b(?:false|true)\\b/,\n      // Includes words reserved for future use\n      keyword:\n        /\\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\\b/,\n      datatype: {\n        pattern:\n          /\\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\\b/,\n        alias: 'symbol'\n      },\n      operator:\n        /=[=~>]?|![=~]?|<(?:<\\|?|[=~|-])?|>[>=]?|->?|~>|\\|>?>?|[*\\/%+?]|\\b(?:and|in|or)\\b/,\n      punctuation: /[\\[\\]{}().,;]|:+/\n    }\n    var interpolation = [\n      {\n        // Allow for one nested level of braces inside interpolation\n        pattern:\n          /(^|[^\\\\])\\$\\{(?:[^'\"{}]|\\{[^}]*\\}|([\"'])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2)+\\}/,\n        lookbehind: true,\n        inside: {\n          'short-variable': {\n            // Negative look-ahead prevent wrong highlighting of functions\n            pattern: /(^\\$\\{)(?!\\w+\\()(?:::)?\\w+(?:::\\w+)*/,\n            lookbehind: true,\n            alias: 'variable',\n            inside: {\n              punctuation: /::/\n            }\n          },\n          delimiter: {\n            pattern: /^\\$/,\n            alias: 'variable'\n          },\n          rest: Prism.languages.puppet\n        }\n      },\n      {\n        pattern: /(^|[^\\\\])\\$(?:::)?\\w+(?:::\\w+)*/,\n        lookbehind: true,\n        alias: 'variable',\n        inside: {\n          punctuation: /::/\n        }\n      }\n    ]\n    Prism.languages.puppet['heredoc'][0].inside.interpolation = interpolation\n    Prism.languages.puppet['string'].inside[\n      'double-quoted'\n    ].inside.interpolation = interpolation\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = pure\npure.displayName = 'pure'\npure.aliases = []\nfunction pure(Prism) {\n  ;(function (Prism) {\n    // https://agraef.github.io/pure-docs/pure.html#lexical-matters\n    Prism.languages.pure = {\n      comment: [\n        {\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n          lookbehind: true\n        },\n        {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true\n        },\n        /#!.+/\n      ],\n      'inline-lang': {\n        pattern: /%<[\\s\\S]+?%>/,\n        greedy: true,\n        inside: {\n          lang: {\n            pattern: /(^%< *)-\\*-.+?-\\*-/,\n            lookbehind: true,\n            alias: 'comment'\n          },\n          delimiter: {\n            pattern: /^%<.*|%>$/,\n            alias: 'punctuation'\n          }\n        }\n      },\n      string: {\n        pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n        greedy: true\n      },\n      number: {\n        // The look-behind prevents wrong highlighting of the .. operator\n        pattern:\n          /((?:\\.\\.)?)(?:\\b(?:inf|nan)\\b|\\b0x[\\da-f]+|(?:\\b(?:0b)?\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[+-]?\\d+)?L?)/i,\n        lookbehind: true\n      },\n      keyword:\n        /\\b(?:NULL|ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\\b/,\n      function:\n        /\\b(?:abs|add_(?:addr|constdef|(?:fundef|interface|macdef|typedef)(?:_at)?|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_c?string(?:_pointer)?|byte_(?:matrix|pointer)|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|sentry|short|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\\b/,\n      special: {\n        pattern: /\\b__[a-z]+__\\b/i,\n        alias: 'builtin'\n      },\n      // Any combination of operator chars can be an operator\n      // eslint-disable-next-line no-misleading-character-class\n      operator:\n        /(?:[!\"#$%&'*+,\\-.\\/:<=>?@\\\\^`|~\\u00a1-\\u00bf\\u00d7-\\u00f7\\u20d0-\\u2bff]|\\b_+\\b)+|\\b(?:and|div|mod|not|or)\\b/,\n      // FIXME: How can we prevent | and , to be highlighted as operator when they are used alone?\n      punctuation: /[(){}\\[\\];,|]/\n    }\n    var inlineLanguages = [\n      'c',\n      {\n        lang: 'c++',\n        alias: 'cpp'\n      },\n      'fortran'\n    ]\n    var inlineLanguageRe = /%< *-\\*- *<lang>\\d* *-\\*-[\\s\\S]+?%>/.source\n    inlineLanguages.forEach(function (lang) {\n      var alias = lang\n      if (typeof lang !== 'string') {\n        alias = lang.alias\n        lang = lang.lang\n      }\n      if (Prism.languages[alias]) {\n        var o = {}\n        o['inline-lang-' + alias] = {\n          pattern: RegExp(\n            inlineLanguageRe.replace(\n              '<lang>',\n              lang.replace(/([.+*?\\/\\\\(){}\\[\\]])/g, '\\\\$1')\n            ),\n            'i'\n          ),\n          inside: Prism.util.clone(Prism.languages.pure['inline-lang'].inside)\n        }\n        o['inline-lang-' + alias].inside.rest = Prism.util.clone(\n          Prism.languages[alias]\n        )\n        Prism.languages.insertBefore('pure', 'inline-lang', o)\n      }\n    }) // C is the default inline language\n    if (Prism.languages.c) {\n      Prism.languages.pure['inline-lang'].inside.rest = Prism.util.clone(\n        Prism.languages.c\n      )\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = purebasic\npurebasic.displayName = 'purebasic'\npurebasic.aliases = []\nfunction purebasic(Prism) {\n  /*\nOriginal Code by Bas Groothedde\n!!MANY THANKS!! I never would have made this, regex and me will never be best friends ;)\n==> https://codepen.io/ImagineProgramming/details/JYydBy/\nslightly changed to pass all tests\n*/\n  // PureBasic support, steal stuff from ansi-c\n  Prism.languages.purebasic = Prism.languages.extend('clike', {\n    comment: /;.*/,\n    keyword:\n      /\\b(?:align|and|as|break|calldebugger|case|compilercase|compilerdefault|compilerelse|compilerelseif|compilerendif|compilerendselect|compilererror|compilerif|compilerselect|continue|data|datasection|debug|debuglevel|declare|declarec|declarecdll|declaredll|declaremodule|default|define|dim|disableasm|disabledebugger|disableexplicit|else|elseif|enableasm|enabledebugger|enableexplicit|end|enddatasection|enddeclaremodule|endenumeration|endif|endimport|endinterface|endmacro|endmodule|endprocedure|endselect|endstructure|endstructureunion|endwith|enumeration|extends|fakereturn|for|foreach|forever|global|gosub|goto|if|import|importc|includebinary|includefile|includepath|interface|macro|module|newlist|newmap|next|not|or|procedure|procedurec|procedurecdll|proceduredll|procedurereturn|protected|prototype|prototypec|read|redim|repeat|restore|return|runtime|select|shared|static|step|structure|structureunion|swap|threaded|to|until|wend|while|with|xincludefile|xor)\\b/i,\n    function: /\\b\\w+(?:\\.\\w+)?\\s*(?=\\()/,\n    number: /(?:\\$[\\da-f]+|\\b-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+-]?\\d+)?)\\b/i,\n    operator:\n      /(?:@\\*?|\\?|\\*)\\w+|-[>-]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|?\\||[~^%?*/@]/\n  })\n  Prism.languages.insertBefore('purebasic', 'keyword', {\n    tag: /#\\w+\\$?/,\n    asm: {\n      pattern: /(^[\\t ]*)!.*/m,\n      lookbehind: true,\n      alias: 'tag',\n      inside: {\n        comment: /;.*/,\n        string: {\n          pattern: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n          greedy: true\n        },\n        // Anonymous label references, i.e.: jmp @b\n        'label-reference-anonymous': {\n          pattern: /(!\\s*j[a-z]+\\s+)@[fb]/i,\n          lookbehind: true,\n          alias: 'fasm-label'\n        },\n        // Named label reference, i.e.: jne label1\n        'label-reference-addressed': {\n          pattern: /(!\\s*j[a-z]+\\s+)[A-Z._?$@][\\w.?$@~#]*/i,\n          lookbehind: true,\n          alias: 'fasm-label'\n        },\n        keyword: [\n          /\\b(?:extern|global)\\b[^;\\r\\n]*/i,\n          /\\b(?:CPU|DEFAULT|FLOAT)\\b.*/\n        ],\n        function: {\n          pattern: /^([\\t ]*!\\s*)[\\da-z]+(?=\\s|$)/im,\n          lookbehind: true\n        },\n        'function-inline': {\n          pattern: /(:\\s*)[\\da-z]+(?=\\s)/i,\n          lookbehind: true,\n          alias: 'function'\n        },\n        label: {\n          pattern: /^([\\t ]*!\\s*)[A-Za-z._?$@][\\w.?$@~#]*(?=:)/m,\n          lookbehind: true,\n          alias: 'fasm-label'\n        },\n        register:\n          /\\b(?:st\\d|[xyz]mm\\d\\d?|[cdt]r\\d|r\\d\\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s|mm\\d+)\\b/i,\n        number:\n          /(?:\\b|-|(?=\\$))(?:0[hx](?:[\\da-f]*\\.)?[\\da-f]+(?:p[+-]?\\d+)?|\\d[\\da-f]+[hx]|\\$\\d[\\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\\d+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:\\.?e[+-]?\\d+)?[dt]?)\\b/i,\n        operator: /[\\[\\]*+\\-/%<>=&|$!,.:]/\n      }\n    }\n  })\n  delete Prism.languages.purebasic['class-name']\n  delete Prism.languages.purebasic['boolean']\n  Prism.languages.pbfasm = Prism.languages['purebasic']\n}\n","'use strict'\nvar refractorHaskell = require('./haskell.js')\nmodule.exports = purescript\npurescript.displayName = 'purescript'\npurescript.aliases = ['purs']\nfunction purescript(Prism) {\n  Prism.register(refractorHaskell)\n  Prism.languages.purescript = Prism.languages.extend('haskell', {\n    keyword:\n      /\\b(?:ado|case|class|data|derive|do|else|forall|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b|∀/,\n    'import-statement': {\n      // The imported or hidden names are not included in this import\n      // statement. This is because we want to highlight those exactly like\n      // we do for the names in the program.\n      pattern:\n        /(^[\\t ]*)import\\s+[A-Z][\\w']*(?:\\.[A-Z][\\w']*)*(?:\\s+as\\s+[A-Z][\\w']*(?:\\.[A-Z][\\w']*)*)?(?:\\s+hiding\\b)?/m,\n      lookbehind: true,\n      inside: {\n        keyword: /\\b(?:as|hiding|import)\\b/,\n        punctuation: /\\./\n      }\n    },\n    // These are builtin functions only. Constructors are highlighted later as a constant.\n    builtin:\n      /\\b(?:absurd|add|ap|append|apply|between|bind|bottom|clamp|compare|comparing|compose|conj|const|degree|discard|disj|div|eq|flap|flip|gcd|identity|ifM|join|lcm|liftA1|liftM1|map|max|mempty|min|mod|mul|negate|not|notEq|one|otherwise|recip|show|sub|top|unit|unless|unlessM|void|when|whenM|zero)\\b/,\n    operator: [\n      // Infix operators\n      Prism.languages.haskell.operator[0], // ASCII operators\n      Prism.languages.haskell.operator[2], // All UTF16 Unicode operator symbols\n      // This regex is equivalent to /(?=[\\x80-\\uFFFF])[\\p{gc=Math_Symbol}\\p{gc=Currency_Symbol}\\p{Modifier_Symbol}\\p{Other_Symbol}]/u\n      // See https://github.com/PrismJS/prism/issues/3006 for more details.\n      /[\\xa2-\\xa6\\xa8\\xa9\\xac\\xae-\\xb1\\xb4\\xb8\\xd7\\xf7\\u02c2-\\u02c5\\u02d2-\\u02df\\u02e5-\\u02eb\\u02ed\\u02ef-\\u02ff\\u0375\\u0384\\u0385\\u03f6\\u0482\\u058d-\\u058f\\u0606-\\u0608\\u060b\\u060e\\u060f\\u06de\\u06e9\\u06fd\\u06fe\\u07f6\\u07fe\\u07ff\\u09f2\\u09f3\\u09fa\\u09fb\\u0af1\\u0b70\\u0bf3-\\u0bfa\\u0c7f\\u0d4f\\u0d79\\u0e3f\\u0f01-\\u0f03\\u0f13\\u0f15-\\u0f17\\u0f1a-\\u0f1f\\u0f34\\u0f36\\u0f38\\u0fbe-\\u0fc5\\u0fc7-\\u0fcc\\u0fce\\u0fcf\\u0fd5-\\u0fd8\\u109e\\u109f\\u1390-\\u1399\\u166d\\u17db\\u1940\\u19de-\\u19ff\\u1b61-\\u1b6a\\u1b74-\\u1b7c\\u1fbd\\u1fbf-\\u1fc1\\u1fcd-\\u1fcf\\u1fdd-\\u1fdf\\u1fed-\\u1fef\\u1ffd\\u1ffe\\u2044\\u2052\\u207a-\\u207c\\u208a-\\u208c\\u20a0-\\u20bf\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211e-\\u2123\\u2125\\u2127\\u2129\\u212e\\u213a\\u213b\\u2140-\\u2144\\u214a-\\u214d\\u214f\\u218a\\u218b\\u2190-\\u2307\\u230c-\\u2328\\u232b-\\u2426\\u2440-\\u244a\\u249c-\\u24e9\\u2500-\\u2767\\u2794-\\u27c4\\u27c7-\\u27e5\\u27f0-\\u2982\\u2999-\\u29d7\\u29dc-\\u29fb\\u29fe-\\u2b73\\u2b76-\\u2b95\\u2b97-\\u2bff\\u2ce5-\\u2cea\\u2e50\\u2e51\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u2ffb\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303e\\u303f\\u309b\\u309c\\u3190\\u3191\\u3196-\\u319f\\u31c0-\\u31e3\\u3200-\\u321e\\u322a-\\u3247\\u3250\\u3260-\\u327f\\u328a-\\u32b0\\u32c0-\\u33ff\\u4dc0-\\u4dff\\ua490-\\ua4c6\\ua700-\\ua716\\ua720\\ua721\\ua789\\ua78a\\ua828-\\ua82b\\ua836-\\ua839\\uaa77-\\uaa79\\uab5b\\uab6a\\uab6b\\ufb29\\ufbb2-\\ufbc1\\ufdfc\\ufdfd\\ufe62\\ufe64-\\ufe66\\ufe69\\uff04\\uff0b\\uff1c-\\uff1e\\uff3e\\uff40\\uff5c\\uff5e\\uffe0-\\uffe6\\uffe8-\\uffee\\ufffc\\ufffd]/\n    ]\n  })\n  Prism.languages.purs = Prism.languages.purescript\n}\n","'use strict'\n\nmodule.exports = python\npython.displayName = 'python'\npython.aliases = ['py']\nfunction python(Prism) {\n  Prism.languages.python = {\n    comment: {\n      pattern: /(^|[^\\\\])#.*/,\n      lookbehind: true,\n      greedy: true\n    },\n    'string-interpolation': {\n      pattern:\n        /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n      greedy: true,\n      inside: {\n        interpolation: {\n          // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n          pattern:\n            /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n          lookbehind: true,\n          inside: {\n            'format-spec': {\n              pattern: /(:)[^:(){}]+(?=\\}$)/,\n              lookbehind: true\n            },\n            'conversion-option': {\n              pattern: /![sra](?=[:}]$)/,\n              alias: 'punctuation'\n            },\n            rest: null\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    'triple-quoted-string': {\n      pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n      greedy: true,\n      alias: 'string'\n    },\n    string: {\n      pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n      greedy: true\n    },\n    function: {\n      pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n      lookbehind: true\n    },\n    'class-name': {\n      pattern: /(\\bclass\\s+)\\w+/i,\n      lookbehind: true\n    },\n    decorator: {\n      pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n      lookbehind: true,\n      alias: ['annotation', 'punctuation'],\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    keyword:\n      /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n    builtin:\n      /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n    boolean: /\\b(?:False|None|True)\\b/,\n    number:\n      /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n    operator: /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.python['string-interpolation'].inside[\n    'interpolation'\n  ].inside.rest = Prism.languages.python\n  Prism.languages.py = Prism.languages.python\n}\n","'use strict'\n\nmodule.exports = q\nq.displayName = 'q'\nq.aliases = []\nfunction q(Prism) {\n  Prism.languages.q = {\n    string: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n    comment: [\n      // From http://code.kx.com/wiki/Reference/Slash:\n      // When / is following a space (or a right parenthesis, bracket, or brace), it is ignored with the rest of the line.\n      {\n        pattern: /([\\t )\\]}])\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }, // From http://code.kx.com/wiki/Reference/Slash:\n      // A line which has / as its first character and contains at least one other non-whitespace character is a whole-line comment and is ignored entirely.\n      // A / on a line by itself begins a multiline comment which is terminated by the next \\ on a line by itself.\n      // If a / is not matched by a \\, the multiline comment is unterminated and continues to end of file.\n      // The / and \\ must be the first char on the line, but may be followed by any amount of whitespace.\n      {\n        pattern:\n          /(^|\\r?\\n|\\r)\\/[\\t ]*(?:(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r(?!\\n)))*?(?:\\\\(?=[\\t ]*(?:\\r?\\n|\\r))|$)|\\S.*)/,\n        lookbehind: true,\n        greedy: true\n      }, // From http://code.kx.com/wiki/Reference/Slash:\n      // A \\ on a line by itself with no preceding matching / will comment to end of file.\n      {\n        pattern: /^\\\\[\\t ]*(?:\\r?\\n|\\r)[\\s\\S]+/m,\n        greedy: true\n      },\n      {\n        pattern: /^#!.+/m,\n        greedy: true\n      }\n    ],\n    symbol: /`(?::\\S+|[\\w.]*)/,\n    datetime: {\n      pattern:\n        /0N[mdzuvt]|0W[dtz]|\\d{4}\\.\\d\\d(?:m|\\.\\d\\d(?:T(?:\\d\\d(?::\\d\\d(?::\\d\\d(?:[.:]\\d\\d\\d)?)?)?)?)?[dz]?)|\\d\\d:\\d\\d(?::\\d\\d(?:[.:]\\d\\d\\d)?)?[uvt]?/,\n      alias: 'number'\n    },\n    // The negative look-ahead prevents bad highlighting\n    // of verbs 0: and 1:\n    number:\n      /\\b(?![01]:)(?:0N[hje]?|0W[hj]?|0[wn]|0x[\\da-fA-F]+|\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?[hjfeb]?)/,\n    keyword:\n      /\\\\\\w+\\b|\\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\\b/,\n    adverb: {\n      pattern: /['\\/\\\\]:?|\\beach\\b/,\n      alias: 'function'\n    },\n    verb: {\n      pattern: /(?:\\B\\.\\B|\\b[01]:|<[=>]?|>=?|[:+\\-*%,!?~=|$&#@^]):?|\\b_\\b:?/,\n      alias: 'operator'\n    },\n    punctuation: /[(){}\\[\\];.]/\n  }\n}\n","'use strict'\n\nmodule.exports = qml\nqml.displayName = 'qml'\nqml.aliases = []\nfunction qml(Prism) {\n  ;(function (Prism) {\n    var jsString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|'(?:\\\\.|[^\\\\'\\r\\n])*'/.source\n    var jsComment = /\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\//.source\n    var jsExpr =\n      /(?:[^\\\\()[\\]{}\"'/]|<string>|\\/(?![*/])|<comment>|\\(<expr>*\\)|\\[<expr>*\\]|\\{<expr>*\\}|\\\\[\\s\\S])/.source\n        .replace(/<string>/g, function () {\n          return jsString\n        })\n        .replace(/<comment>/g, function () {\n          return jsComment\n        }) // the pattern will blow up, so only a few iterations\n    for (var i = 0; i < 2; i++) {\n      jsExpr = jsExpr.replace(/<expr>/g, function () {\n        return jsExpr\n      })\n    }\n    jsExpr = jsExpr.replace(/<expr>/g, '[^\\\\s\\\\S]')\n    Prism.languages.qml = {\n      comment: {\n        pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n        greedy: true\n      },\n      'javascript-function': {\n        pattern: RegExp(\n          /((?:^|;)[ \\t]*)function\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*\\(<js>*\\)\\s*\\{<js>*\\}/.source.replace(\n            /<js>/g,\n            function () {\n              return jsExpr\n            }\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'language-javascript',\n        inside: Prism.languages.javascript\n      },\n      'class-name': {\n        pattern: /((?:^|[:;])[ \\t]*)(?!\\d)\\w+(?=[ \\t]*\\{|[ \\t]+on\\b)/m,\n        lookbehind: true\n      },\n      property: [\n        {\n          pattern: /((?:^|[;{])[ \\t]*)(?!\\d)\\w+(?:\\.\\w+)*(?=[ \\t]*:)/m,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /((?:^|[;{])[ \\t]*)property[ \\t]+(?!\\d)\\w+(?:\\.\\w+)*[ \\t]+(?!\\d)\\w+(?:\\.\\w+)*(?=[ \\t]*:)/m,\n          lookbehind: true,\n          inside: {\n            keyword: /^property/,\n            property: /\\w+(?:\\.\\w+)*/\n          }\n        }\n      ],\n      'javascript-expression': {\n        pattern: RegExp(\n          /(:[ \\t]*)(?![\\s;}[])(?:(?!$|[;}])<js>)+/.source.replace(\n            /<js>/g,\n            function () {\n              return jsExpr\n            }\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'language-javascript',\n        inside: Prism.languages.javascript\n      },\n      string: {\n        pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n        greedy: true\n      },\n      keyword: /\\b(?:as|import|on)\\b/,\n      punctuation: /[{}[\\]:;,]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = qore\nqore.displayName = 'qore'\nqore.aliases = []\nfunction qore(Prism) {\n  Prism.languages.qore = Prism.languages.extend('clike', {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:\\/\\/|#).*)/,\n      lookbehind: true\n    },\n    // Overridden to allow unescaped multi-line strings\n    string: {\n      pattern: /(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:bool|date|float|int|list|number|string)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/i,\n    function: /\\$?\\b(?!\\d)\\w+(?=\\()/,\n    number:\n      /\\b(?:0b[01]+|0x(?:[\\da-f]*\\.)?[\\da-fp\\-]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e\\d+)?[df]|(?:\\d+(?:\\.\\d+)?|\\.\\d+))\\b/i,\n    operator: {\n      pattern:\n        /(^|[^.])(?:\\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\\|[|=]?|[*\\/%^]=?|[~?])/,\n      lookbehind: true\n    },\n    variable: /\\$(?!\\d)\\w+\\b/\n  })\n}\n","'use strict'\n\nmodule.exports = qsharp\nqsharp.displayName = 'qsharp'\nqsharp.aliases = ['qs']\nfunction qsharp(Prism) {\n  ;(function (Prism) {\n    /**\n     * Replaces all placeholders \"<<n>>\" of given pattern with the n-th replacement (zero based).\n     *\n     * Note: This is a simple text based replacement. Be careful when using backreferences!\n     *\n     * @param {string} pattern the given pattern.\n     * @param {string[]} replacements a list of replacement which can be inserted into the given pattern.\n     * @returns {string} the pattern with all placeholders replaced with their corresponding replacements.\n     * @example replace(/a<<0>>a/.source, [/b+/.source]) === /a(?:b+)a/.source\n     */\n    function replace(pattern, replacements) {\n      return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n        return '(?:' + replacements[+index] + ')'\n      })\n    }\n    /**\n     * @param {string} pattern\n     * @param {string[]} replacements\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function re(pattern, replacements, flags) {\n      return RegExp(replace(pattern, replacements), flags || '')\n    }\n    /**\n     * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n     *\n     * @param {string} pattern\n     * @param {number} depthLog2\n     * @returns {string}\n     */\n    function nested(pattern, depthLog2) {\n      for (var i = 0; i < depthLog2; i++) {\n        pattern = pattern.replace(/<<self>>/g, function () {\n          return '(?:' + pattern + ')'\n        })\n      }\n      return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]')\n    } // https://docs.microsoft.com/en-us/azure/quantum/user-guide/language/typesystem/\n    // https://github.com/microsoft/qsharp-language/tree/main/Specifications/Language/5_Grammar\n    var keywordKinds = {\n      // keywords which represent a return or variable type\n      type: 'Adj BigInt Bool Ctl Double false Int One Pauli PauliI PauliX PauliY PauliZ Qubit Range Result String true Unit Zero',\n      // all other keywords\n      other:\n        'Adjoint adjoint apply as auto body borrow borrowing Controlled controlled distribute elif else fail fixup for function if in internal intrinsic invert is let mutable namespace new newtype open operation repeat return self set until use using while within'\n    } // keywords\n    function keywordsToPattern(words) {\n      return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b'\n    }\n    var keywords = RegExp(\n      keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.other)\n    ) // types\n    var identifier = /\\b[A-Za-z_]\\w*\\b/.source\n    var qualifiedName = replace(/<<0>>(?:\\s*\\.\\s*<<0>>)*/.source, [identifier])\n    var typeInside = {\n      keyword: keywords,\n      punctuation: /[<>()?,.:[\\]]/\n    } // strings\n    var regularString = /\"(?:\\\\.|[^\\\\\"])*\"/.source\n    Prism.languages.qsharp = Prism.languages.extend('clike', {\n      comment: /\\/\\/.*/,\n      string: [\n        {\n          pattern: re(/(^|[^$\\\\])<<0>>/.source, [regularString]),\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'class-name': [\n        {\n          // open Microsoft.Quantum.Canon;\n          // open Microsoft.Quantum.Canon as CN;\n          pattern: re(/(\\b(?:as|open)\\s+)<<0>>(?=\\s*(?:;|as\\b))/.source, [\n            qualifiedName\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // namespace Quantum.App1;\n          pattern: re(/(\\bnamespace\\s+)<<0>>(?=\\s*\\{)/.source, [qualifiedName]),\n          lookbehind: true,\n          inside: typeInside\n        }\n      ],\n      keyword: keywords,\n      number:\n        /(?:\\b0(?:x[\\da-f]+|b[01]+|o[0-7]+)|(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d*)?)(?:e[-+]?\\d+)?)l?\\b/i,\n      operator:\n        /\\band=|\\bor=|\\band\\b|\\bnot\\b|\\bor\\b|<[-=]|[-=]>|>>>=?|<<<=?|\\^\\^\\^=?|\\|\\|\\|=?|&&&=?|w\\/=?|~~~|[*\\/+\\-^=!%]=?/,\n      punctuation: /::|[{}[\\];(),.:]/\n    })\n    Prism.languages.insertBefore('qsharp', 'number', {\n      range: {\n        pattern: /\\.\\./,\n        alias: 'operator'\n      }\n    }) // single line\n    var interpolationExpr = nested(\n      replace(/\\{(?:[^\"{}]|<<0>>|<<self>>)*\\}/.source, [regularString]),\n      2\n    )\n    Prism.languages.insertBefore('qsharp', 'string', {\n      'interpolation-string': {\n        pattern: re(/\\$\"(?:\\\\.|<<0>>|[^\\\\\"{])*\"/.source, [interpolationExpr]),\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: re(/((?:^|[^\\\\])(?:\\\\\\\\)*)<<0>>/.source, [\n              interpolationExpr\n            ]),\n            lookbehind: true,\n            inside: {\n              punctuation: /^\\{|\\}$/,\n              expression: {\n                pattern: /[\\s\\S]+/,\n                alias: 'language-qsharp',\n                inside: Prism.languages.qsharp\n              }\n            }\n          },\n          string: /[\\s\\S]+/\n        }\n      }\n    })\n  })(Prism)\n  Prism.languages.qs = Prism.languages.qsharp\n}\n","'use strict'\n\nmodule.exports = r\nr.displayName = 'r'\nr.aliases = []\nfunction r(Prism) {\n  Prism.languages.r = {\n    comment: /#.*/,\n    string: {\n      pattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    'percent-operator': {\n      // Includes user-defined operators\n      // and %%, %*%, %/%, %in%, %o%, %x%\n      pattern: /%[^%\\s]*%/,\n      alias: 'operator'\n    },\n    boolean: /\\b(?:FALSE|TRUE)\\b/,\n    ellipsis: /\\.\\.(?:\\.|\\d+)/,\n    number: [\n      /\\b(?:Inf|NaN)\\b/,\n      /(?:\\b0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[EePp][+-]?\\d+)?[iL]?/\n    ],\n    keyword:\n      /\\b(?:NA|NA_character_|NA_complex_|NA_integer_|NA_real_|NULL|break|else|for|function|if|in|next|repeat|while)\\b/,\n    operator: /->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n    punctuation: /[(){}\\[\\],;]/\n  }\n}\n","'use strict'\nvar refractorScheme = require('./scheme.js')\nmodule.exports = racket\nracket.displayName = 'racket'\nracket.aliases = ['rkt']\nfunction racket(Prism) {\n  Prism.register(refractorScheme)\n  Prism.languages.racket = Prism.languages.extend('scheme', {\n    'lambda-parameter': {\n      // the racket lambda syntax is a lot more complex, so we won't even attempt to capture it.\n      // this will just prevent false positives of the `function` pattern\n      pattern: /([(\\[]lambda\\s+[(\\[])[^()\\[\\]'\\s]+/,\n      lookbehind: true\n    }\n  })\n  Prism.languages.insertBefore('racket', 'string', {\n    lang: {\n      pattern: /^#lang.+/m,\n      greedy: true,\n      alias: 'keyword'\n    }\n  })\n  Prism.languages.rkt = Prism.languages.racket\n}\n","'use strict'\n\nmodule.exports = reason\nreason.displayName = 'reason'\nreason.aliases = []\nfunction reason(Prism) {\n  Prism.languages.reason = Prism.languages.extend('clike', {\n    string: {\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n      greedy: true\n    },\n    // 'class-name' must be matched *after* 'constructor' defined below\n    'class-name': /\\b[A-Z]\\w*/,\n    keyword:\n      /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n    operator:\n      /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/\n  })\n  Prism.languages.insertBefore('reason', 'class-name', {\n    char: {\n      pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n      greedy: true\n    },\n    // Negative look-ahead prevents from matching things like String.capitalize\n    constructor: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n    label: {\n      pattern: /\\b[a-z]\\w*(?=::)/,\n      alias: 'symbol'\n    }\n  }) // We can't match functions property, so let's not even try.\n  delete Prism.languages.reason.function\n}\n","'use strict'\n\nmodule.exports = regex\nregex.displayName = 'regex'\nregex.aliases = []\nfunction regex(Prism) {\n  ;(function (Prism) {\n    var specialEscape = {\n      pattern: /\\\\[\\\\(){}[\\]^$+*?|.]/,\n      alias: 'escape'\n    }\n    var escape =\n      /\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/\n    var charSet = {\n      pattern: /\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,\n      alias: 'class-name'\n    }\n    var charSetWithoutDot = {\n      pattern: /\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,\n      alias: 'class-name'\n    }\n    var rangeChar = '(?:[^\\\\\\\\-]|' + escape.source + ')'\n    var range = RegExp(rangeChar + '-' + rangeChar) // the name of a capturing group\n    var groupName = {\n      pattern: /(<|')[^<>']+(?=[>']$)/,\n      lookbehind: true,\n      alias: 'variable'\n    }\n    Prism.languages.regex = {\n      'char-class': {\n        pattern: /((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,\n        lookbehind: true,\n        inside: {\n          'char-class-negation': {\n            pattern: /(^\\[)\\^/,\n            lookbehind: true,\n            alias: 'operator'\n          },\n          'char-class-punctuation': {\n            pattern: /^\\[|\\]$/,\n            alias: 'punctuation'\n          },\n          range: {\n            pattern: range,\n            inside: {\n              escape: escape,\n              'range-punctuation': {\n                pattern: /-/,\n                alias: 'operator'\n              }\n            }\n          },\n          'special-escape': specialEscape,\n          'char-set': charSetWithoutDot,\n          escape: escape\n        }\n      },\n      'special-escape': specialEscape,\n      'char-set': charSet,\n      backreference: [\n        {\n          // a backreference which is not an octal escape\n          pattern: /\\\\(?![123][0-7]{2})[1-9]/,\n          alias: 'keyword'\n        },\n        {\n          pattern: /\\\\k<[^<>']+>/,\n          alias: 'keyword',\n          inside: {\n            'group-name': groupName\n          }\n        }\n      ],\n      anchor: {\n        pattern: /[$^]|\\\\[ABbGZz]/,\n        alias: 'function'\n      },\n      escape: escape,\n      group: [\n        {\n          // https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html\n          // https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference?view=netframework-4.7.2#grouping-constructs\n          // (), (?<name>), (?'name'), (?>), (?:), (?=), (?!), (?<=), (?<!), (?is-m), (?i-m:)\n          pattern:\n            /\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,\n          alias: 'punctuation',\n          inside: {\n            'group-name': groupName\n          }\n        },\n        {\n          pattern: /\\)/,\n          alias: 'punctuation'\n        }\n      ],\n      quantifier: {\n        pattern: /(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,\n        alias: 'number'\n      },\n      alternation: {\n        pattern: /\\|/,\n        alias: 'keyword'\n      }\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = rego\nrego.displayName = 'rego'\nrego.aliases = []\nfunction rego(Prism) {\n  // https://www.openpolicyagent.org/docs/latest/policy-reference/\n  Prism.languages.rego = {\n    comment: /#.*/,\n    property: {\n      pattern:\n        /(^|[^\\\\.])(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|`[^`]*`|\\b[a-z_]\\w*\\b)(?=\\s*:(?!=))/i,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|`[^`]*`/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:as|default|else|import|not|null|package|set(?=\\s*\\()|some|with)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: {\n      pattern: /\\b[a-z_]\\w*\\b(?:\\s*\\.\\s*\\b[a-z_]\\w*\\b)*(?=\\s*\\()/i,\n      inside: {\n        namespace: /\\b\\w+\\b(?=\\s*\\.)/,\n        punctuation: /\\./\n      }\n    },\n    number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n    operator: /[-+*/%|&]|[<>:=]=?|!=|\\b_\\b/,\n    punctuation: /[,;.\\[\\]{}()]/\n  }\n}\n","'use strict'\n\nmodule.exports = renpy\nrenpy.displayName = 'renpy'\nrenpy.aliases = ['rpy']\nfunction renpy(Prism) {\n  Prism.languages.renpy = {\n    comment: {\n      pattern: /(^|[^\\\\])#.+/,\n      lookbehind: true\n    },\n    string: {\n      pattern:\n        /(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\])*\\2|(?:^#?(?:(?:[0-9a-fA-F]){3}|[0-9a-fA-F]{6})$)/m,\n      greedy: true\n    },\n    function: /\\b[a-z_]\\w*(?=\\()/i,\n    property:\n      /\\b(?:Update|UpdateVersion|action|activate_sound|adv_nvl_transition|after_load_transition|align|alpha|alt|anchor|antialias|area|auto|background|bar_invert|bar_resizing|bar_vertical|black_color|bold|bottom_bar|bottom_gutter|bottom_margin|bottom_padding|box_reverse|box_wrap|can_update|caret|child|color|crop|default_afm_enable|default_afm_time|default_fullscreen|default_text_cps|developer|directory_name|drag_handle|drag_joined|drag_name|drag_raise|draggable|dragged|drop_shadow|drop_shadow_color|droppable|dropped|easein|easeout|edgescroll|end_game_transition|end_splash_transition|enter_replay_transition|enter_sound|enter_transition|enter_yesno_transition|executable_name|exit_replay_transition|exit_sound|exit_transition|exit_yesno_transition|fadein|fadeout|first_indent|first_spacing|fit_first|focus|focus_mask|font|foreground|game_main_transition|get_installed_packages|google_play_key|google_play_salt|ground|has_music|has_sound|has_voice|height|help|hinting|hover|hover_background|hover_color|hover_sound|hovered|hyperlink_functions|idle|idle_color|image_style|include_update|insensitive|insensitive_background|insensitive_color|inside|intra_transition|italic|justify|kerning|keyboard_focus|language|layer_clipping|layers|layout|left_bar|left_gutter|left_margin|left_padding|length|line_leading|line_overlap_split|line_spacing|linear|main_game_transition|main_menu_music|maximum|min_width|minimum|minwidth|modal|mouse|mousewheel|name|narrator_menu|newline_indent|nvl_adv_transition|offset|order_reverse|outlines|overlay_functions|pos|position|prefix|radius|range|rest_indent|right_bar|right_gutter|right_margin|right_padding|rotate|rotate_pad|ruby_style|sample_sound|save_directory|say_attribute_transition|screen_height|screen_width|scrollbars|selected_hover|selected_hover_color|selected_idle|selected_idle_color|selected_insensitive|show_side_image|show_two_window|side_spacing|side_xpos|side_ypos|size|size_group|slow_cps|slow_cps_multiplier|spacing|strikethrough|subpixel|text_align|text_style|text_xpos|text_y_fudge|text_ypos|thumb|thumb_offset|thumb_shadow|thumbnail_height|thumbnail_width|time|top_bar|top_gutter|top_margin|top_padding|translations|underline|unscrollable|update|value|version|version_name|version_tuple|vertical|width|window_hide_transition|window_icon|window_left_padding|window_show_transition|window_title|windows_icon|xadjustment|xalign|xanchor|xanchoraround|xaround|xcenter|xfill|xinitial|xmargin|xmaximum|xminimum|xoffset|xofsset|xpadding|xpos|xsize|xzoom|yadjustment|yalign|yanchor|yanchoraround|yaround|ycenter|yfill|yinitial|ymargin|ymaximum|yminimum|yoffset|ypadding|ypos|ysize|ysizexysize|yzoom|zoom|zorder)\\b/,\n    tag: /\\b(?:bar|block|button|buttoscreenn|drag|draggroup|fixed|frame|grid|[hv]box|hotbar|hotspot|image|imagebutton|imagemap|input|key|label|menu|mm_menu_frame|mousearea|nvl|parallel|screen|self|side|tag|text|textbutton|timer|vbar|viewport|window)\\b|\\$/,\n    keyword:\n      /\\b(?:None|add|adjustment|alignaround|allow|angle|animation|around|as|assert|behind|box_layout|break|build|cache|call|center|changed|child_size|choice|circles|class|clear|clicked|clipping|clockwise|config|contains|continue|corner1|corner2|counterclockwise|def|default|define|del|delay|disabled|disabled_text|dissolve|elif|else|event|except|exclude|exec|expression|fade|finally|for|from|function|global|gm_root|has|hide|id|if|import|in|init|is|jump|knot|lambda|left|less_rounded|mm_root|movie|music|null|on|onlayer|pass|pause|persistent|play|print|python|queue|raise|random|renpy|repeat|return|right|rounded_window|scene|scope|set|show|slow|slow_abortable|slow_done|sound|stop|store|style|style_group|substitute|suffix|theme|transform|transform_anchor|transpose|try|ui|unhovered|updater|use|voice|while|widget|widget_hover|widget_selected|widget_text|yield)\\b/,\n    boolean: /\\b(?:[Ff]alse|[Tt]rue)\\b/,\n    number:\n      /(?:\\b(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?)|\\B\\.\\d+)(?:e[+-]?\\d+)?j?/i,\n    operator:\n      /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:and|at|not|or|with)\\b/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.rpy = Prism.languages.renpy\n}\n","'use strict'\n\nmodule.exports = rest\nrest.displayName = 'rest'\nrest.aliases = []\nfunction rest(Prism) {\n  Prism.languages.rest = {\n    table: [\n      {\n        pattern:\n          /(^[\\t ]*)(?:\\+[=-]+)+\\+(?:\\r?\\n|\\r)(?:\\1[+|].+[+|](?:\\r?\\n|\\r))+\\1(?:\\+[=-]+)+\\+/m,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\||(?:\\+[=-]+)+\\+/\n        }\n      },\n      {\n        pattern:\n          /(^[\\t ]*)=+ [ =]*=(?:(?:\\r?\\n|\\r)\\1.+)+(?:\\r?\\n|\\r)\\1=+ [ =]*=(?=(?:\\r?\\n|\\r){2}|\\s*$)/m,\n        lookbehind: true,\n        inside: {\n          punctuation: /[=-]+/\n        }\n      }\n    ],\n    // Directive-like patterns\n    'substitution-def': {\n      pattern: /(^[\\t ]*\\.\\. )\\|(?:[^|\\s](?:[^|]*[^|\\s])?)\\| [^:]+::/m,\n      lookbehind: true,\n      inside: {\n        substitution: {\n          pattern: /^\\|(?:[^|\\s]|[^|\\s][^|]*[^|\\s])\\|/,\n          alias: 'attr-value',\n          inside: {\n            punctuation: /^\\||\\|$/\n          }\n        },\n        directive: {\n          pattern: /( )(?! )[^:]+::/,\n          lookbehind: true,\n          alias: 'function',\n          inside: {\n            punctuation: /::$/\n          }\n        }\n      }\n    },\n    'link-target': [\n      {\n        pattern: /(^[\\t ]*\\.\\. )\\[[^\\]]+\\]/m,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          punctuation: /^\\[|\\]$/\n        }\n      },\n      {\n        pattern: /(^[\\t ]*\\.\\. )_(?:`[^`]+`|(?:[^:\\\\]|\\\\.)+):/m,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          punctuation: /^_|:$/\n        }\n      }\n    ],\n    directive: {\n      pattern: /(^[\\t ]*\\.\\. )[^:]+::/m,\n      lookbehind: true,\n      alias: 'function',\n      inside: {\n        punctuation: /::$/\n      }\n    },\n    comment: {\n      // The two alternatives try to prevent highlighting of blank comments\n      pattern:\n        /(^[\\t ]*\\.\\.)(?:(?: .+)?(?:(?:\\r?\\n|\\r).+)+| .+)(?=(?:\\r?\\n|\\r){2}|$)/m,\n      lookbehind: true\n    },\n    title: [\n      // Overlined and underlined\n      {\n        pattern:\n          /^(([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2+)(?:\\r?\\n|\\r).+(?:\\r?\\n|\\r)\\1$/m,\n        inside: {\n          punctuation:\n            /^[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+|[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+$/,\n          important: /.+/\n        }\n      }, // Underlined only\n      {\n        pattern:\n          /(^|(?:\\r?\\n|\\r){2}).+(?:\\r?\\n|\\r)([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2+(?=\\r?\\n|\\r|$)/,\n        lookbehind: true,\n        inside: {\n          punctuation: /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+$/,\n          important: /.+/\n        }\n      }\n    ],\n    hr: {\n      pattern:\n        /((?:\\r?\\n|\\r){2})([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2{3,}(?=(?:\\r?\\n|\\r){2})/,\n      lookbehind: true,\n      alias: 'punctuation'\n    },\n    field: {\n      pattern: /(^[\\t ]*):[^:\\r\\n]+:(?= )/m,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    'command-line-option': {\n      pattern:\n        /(^[\\t ]*)(?:[+-][a-z\\d]|(?:--|\\/)[a-z\\d-]+)(?:[ =](?:[a-z][\\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\\d]|(?:--|\\/)[a-z\\d-]+)(?:[ =](?:[a-z][\\w-]*|<[^<>]+>))?)*(?=(?:\\r?\\n|\\r)? {2,}\\S)/im,\n      lookbehind: true,\n      alias: 'symbol'\n    },\n    'literal-block': {\n      pattern: /::(?:\\r?\\n|\\r){2}([ \\t]+)(?![ \\t]).+(?:(?:\\r?\\n|\\r)\\1.+)*/,\n      inside: {\n        'literal-block-punctuation': {\n          pattern: /^::/,\n          alias: 'punctuation'\n        }\n      }\n    },\n    'quoted-literal-block': {\n      pattern:\n        /::(?:\\r?\\n|\\r){2}([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]).*(?:(?:\\r?\\n|\\r)\\1.*)*/,\n      inside: {\n        'literal-block-punctuation': {\n          pattern: /^(?:::|([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\1*)/m,\n          alias: 'punctuation'\n        }\n      }\n    },\n    'list-bullet': {\n      pattern:\n        /(^[\\t ]*)(?:[*+\\-•‣⁃]|\\(?(?:\\d+|[a-z]|[ivxdclm]+)\\)|(?:\\d+|[a-z]|[ivxdclm]+)\\.)(?= )/im,\n      lookbehind: true,\n      alias: 'punctuation'\n    },\n    'doctest-block': {\n      pattern: /(^[\\t ]*)>>> .+(?:(?:\\r?\\n|\\r).+)*/m,\n      lookbehind: true,\n      inside: {\n        punctuation: /^>>>/\n      }\n    },\n    inline: [\n      {\n        pattern:\n          /(^|[\\s\\-:\\/'\"<(\\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\\*\\*?|``?|\\|)(?!\\s)(?:(?!\\2).)*\\S\\2(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$))/m,\n        lookbehind: true,\n        inside: {\n          bold: {\n            pattern: /(^\\*\\*).+(?=\\*\\*$)/,\n            lookbehind: true\n          },\n          italic: {\n            pattern: /(^\\*).+(?=\\*$)/,\n            lookbehind: true\n          },\n          'inline-literal': {\n            pattern: /(^``).+(?=``$)/,\n            lookbehind: true,\n            alias: 'symbol'\n          },\n          role: {\n            pattern: /^:[^:]+:|:[^:]+:$/,\n            alias: 'function',\n            inside: {\n              punctuation: /^:|:$/\n            }\n          },\n          'interpreted-text': {\n            pattern: /(^`).+(?=`$)/,\n            lookbehind: true,\n            alias: 'attr-value'\n          },\n          substitution: {\n            pattern: /(^\\|).+(?=\\|$)/,\n            lookbehind: true,\n            alias: 'attr-value'\n          },\n          punctuation: /\\*\\*?|``?|\\|/\n        }\n      }\n    ],\n    link: [\n      {\n        pattern: /\\[[^\\[\\]]+\\]_(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$)/,\n        alias: 'string',\n        inside: {\n          punctuation: /^\\[|\\]_$/\n        }\n      },\n      {\n        pattern:\n          /(?:\\b[a-z\\d]+(?:[_.:+][a-z\\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$)/i,\n        alias: 'string',\n        inside: {\n          punctuation: /^_?`|`$|`?_?_$/\n        }\n      }\n    ],\n    // Line block start,\n    // quote attribution,\n    // explicit markup start,\n    // and anonymous hyperlink target shortcut (__)\n    punctuation: {\n      pattern: /(^[\\t ]*)(?:\\|(?= |$)|(?:---?|—|\\.\\.|__)(?= )|\\.\\.$)/m,\n      lookbehind: true\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = rip\nrip.displayName = 'rip'\nrip.aliases = []\nfunction rip(Prism) {\n  Prism.languages.rip = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    char: {\n      pattern: /\\B`[^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]\\b/,\n      greedy: true\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    regex: {\n      pattern:\n        /(^|[^/])\\/(?!\\/)(?:\\[[^\\n\\r\\]]*\\]|\\\\.|[^/\\\\\\r\\n\\[])+\\/(?=\\s*(?:$|[\\r\\n,.;})]))/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /(?:=>|->)|\\b(?:case|catch|class|else|exit|finally|if|raise|return|switch|try)\\b/,\n    builtin: /@|\\bSystem\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    date: /\\b\\d{4}-\\d{2}-\\d{2}\\b/,\n    time: /\\b\\d{2}:\\d{2}:\\d{2}\\b/,\n    datetime: /\\b\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\b/,\n    symbol: /:[^\\d\\s`'\",.:;#\\/\\\\()<>\\[\\]{}][^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]*/,\n    number: /[+-]?\\b(?:\\d+\\.\\d+|\\d+)\\b/,\n    punctuation: /(?:\\.{2,3})|[`,.:;=\\/\\\\()<>\\[\\]{}]/,\n    reference: /[^\\d\\s`'\",.:;#\\/\\\\()<>\\[\\]{}][^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]*/\n  }\n}\n","'use strict'\n\nmodule.exports = roboconf\nroboconf.displayName = 'roboconf'\nroboconf.aliases = []\nfunction roboconf(Prism) {\n  Prism.languages.roboconf = {\n    comment: /#.*/,\n    keyword: {\n      pattern:\n        /(^|\\s)(?:(?:external|import)\\b|(?:facet|instance of)(?=[ \\t]+[\\w-]+[ \\t]*\\{))/,\n      lookbehind: true\n    },\n    component: {\n      pattern: /[\\w-]+(?=[ \\t]*\\{)/,\n      alias: 'variable'\n    },\n    property: /[\\w.-]+(?=[ \\t]*:)/,\n    value: {\n      pattern: /(=[ \\t]*(?![ \\t]))[^,;]+/,\n      lookbehind: true,\n      alias: 'attr-value'\n    },\n    optional: {\n      pattern: /\\(optional\\)/,\n      alias: 'builtin'\n    },\n    wildcard: {\n      pattern: /(\\.)\\*/,\n      lookbehind: true,\n      alias: 'operator'\n    },\n    punctuation: /[{},.;:=]/\n  }\n}\n","'use strict'\n\nmodule.exports = robotframework\nrobotframework.displayName = 'robotframework'\nrobotframework.aliases = []\nfunction robotframework(Prism) {\n  ;(function (Prism) {\n    var comment = {\n      pattern: /(^[ \\t]*| {2}|\\t)#.*/m,\n      lookbehind: true,\n      greedy: true\n    }\n    var variable = {\n      pattern: /((?:^|[^\\\\])(?:\\\\{2})*)[$@&%]\\{(?:[^{}\\r\\n]|\\{[^{}\\r\\n]*\\})*\\}/,\n      lookbehind: true,\n      inside: {\n        punctuation: /^[$@&%]\\{|\\}$/\n      }\n    }\n    function createSection(name, inside) {\n      var extendecInside = {}\n      extendecInside['section-header'] = {\n        pattern: /^ ?\\*{3}.+?\\*{3}/,\n        alias: 'keyword'\n      } // copy inside tokens\n      for (var token in inside) {\n        extendecInside[token] = inside[token]\n      }\n      extendecInside['tag'] = {\n        pattern: /([\\r\\n](?: {2}|\\t)[ \\t]*)\\[[-\\w]+\\]/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\[|\\]/\n        }\n      }\n      extendecInside['variable'] = variable\n      extendecInside['comment'] = comment\n      return {\n        pattern: RegExp(\n          /^ ?\\*{3}[ \\t]*<name>[ \\t]*\\*{3}(?:.|[\\r\\n](?!\\*{3}))*/.source.replace(\n            /<name>/g,\n            function () {\n              return name\n            }\n          ),\n          'im'\n        ),\n        alias: 'section',\n        inside: extendecInside\n      }\n    }\n    var docTag = {\n      pattern:\n        /(\\[Documentation\\](?: {2}|\\t)[ \\t]*)(?![ \\t]|#)(?:.|(?:\\r\\n?|\\n)[ \\t]*\\.{3})+/,\n      lookbehind: true,\n      alias: 'string'\n    }\n    var testNameLike = {\n      pattern: /([\\r\\n] ?)(?!#)(?:\\S(?:[ \\t]\\S)*)+/,\n      lookbehind: true,\n      alias: 'function',\n      inside: {\n        variable: variable\n      }\n    }\n    var testPropertyLike = {\n      pattern: /([\\r\\n](?: {2}|\\t)[ \\t]*)(?!\\[|\\.{3}|#)(?:\\S(?:[ \\t]\\S)*)+/,\n      lookbehind: true,\n      inside: {\n        variable: variable\n      }\n    }\n    Prism.languages['robotframework'] = {\n      settings: createSection('Settings', {\n        documentation: {\n          pattern:\n            /([\\r\\n] ?Documentation(?: {2}|\\t)[ \\t]*)(?![ \\t]|#)(?:.|(?:\\r\\n?|\\n)[ \\t]*\\.{3})+/,\n          lookbehind: true,\n          alias: 'string'\n        },\n        property: {\n          pattern: /([\\r\\n] ?)(?!\\.{3}|#)(?:\\S(?:[ \\t]\\S)*)+/,\n          lookbehind: true\n        }\n      }),\n      variables: createSection('Variables'),\n      'test-cases': createSection('Test Cases', {\n        'test-name': testNameLike,\n        documentation: docTag,\n        property: testPropertyLike\n      }),\n      keywords: createSection('Keywords', {\n        'keyword-name': testNameLike,\n        documentation: docTag,\n        property: testPropertyLike\n      }),\n      tasks: createSection('Tasks', {\n        'task-name': testNameLike,\n        documentation: docTag,\n        property: testPropertyLike\n      }),\n      comment: comment\n    }\n    Prism.languages.robot = Prism.languages['robotframework']\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = ruby\nruby.displayName = 'ruby'\nruby.aliases = ['rb']\nfunction ruby(Prism) {\n  /**\n   * Original by Samuel Flores\n   *\n   * Adds the following new token classes:\n   *     constant, builtin, variable, symbol, regex\n   */\n  ;(function (Prism) {\n    Prism.languages.ruby = Prism.languages.extend('clike', {\n      comment: {\n        pattern: /#.*|^=begin\\s[\\s\\S]*?^=end/m,\n        greedy: true\n      },\n      'class-name': {\n        pattern:\n          /(\\b(?:class|module)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+|\\b[A-Z_]\\w*(?=\\s*\\.\\s*new\\b)/,\n        lookbehind: true,\n        inside: {\n          punctuation: /[.\\\\]/\n        }\n      },\n      keyword:\n        /\\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/,\n      operator:\n        /\\.{2,3}|&\\.|===|<?=>|[!=]?~|(?:&&|\\|\\||<<|>>|\\*\\*|[+\\-*/%<>!^&|=])=?|[?:]/,\n      punctuation: /[(){}[\\].,;]/\n    })\n    Prism.languages.insertBefore('ruby', 'operator', {\n      'double-colon': {\n        pattern: /::/,\n        alias: 'punctuation'\n      }\n    })\n    var interpolation = {\n      pattern: /((?:^|[^\\\\])(?:\\\\{2})*)#\\{(?:[^{}]|\\{[^{}]*\\})*\\}/,\n      lookbehind: true,\n      inside: {\n        content: {\n          pattern: /^(#\\{)[\\s\\S]+(?=\\}$)/,\n          lookbehind: true,\n          inside: Prism.languages.ruby\n        },\n        delimiter: {\n          pattern: /^#\\{|\\}$/,\n          alias: 'punctuation'\n        }\n      }\n    }\n    delete Prism.languages.ruby.function\n    var percentExpression =\n      '(?:' +\n      [\n        /([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n        /\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)/.source,\n        /\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}/.source,\n        /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]/.source,\n        /<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>/.source\n      ].join('|') +\n      ')'\n    var symbolName =\n      /(?:\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)/\n        .source\n    Prism.languages.insertBefore('ruby', 'keyword', {\n      'regex-literal': [\n        {\n          pattern: RegExp(\n            /%r/.source + percentExpression + /[egimnosux]{0,6}/.source\n          ),\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            regex: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern:\n            /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n          lookbehind: true,\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            regex: /[\\s\\S]+/\n          }\n        }\n      ],\n      variable: /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n      symbol: [\n        {\n          pattern: RegExp(/(^|[^:]):/.source + symbolName),\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: RegExp(\n            /([\\r\\n{(,][ \\t]*)/.source + symbolName + /(?=:(?!:))/.source\n          ),\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'method-definition': {\n        pattern: /(\\bdef\\s+)\\w+(?:\\s*\\.\\s*\\w+)?/,\n        lookbehind: true,\n        inside: {\n          function: /\\b\\w+$/,\n          keyword: /^self\\b/,\n          'class-name': /^\\w+/,\n          punctuation: /\\./\n        }\n      }\n    })\n    Prism.languages.insertBefore('ruby', 'string', {\n      'string-literal': [\n        {\n          pattern: RegExp(/%[qQiIwWs]?/.source + percentExpression),\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern:\n            /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n          alias: 'heredoc-string',\n          greedy: true,\n          inside: {\n            delimiter: {\n              pattern: /^<<[-~]?[a-z_]\\w*|\\b[a-z_]\\w*$/i,\n              inside: {\n                symbol: /\\b\\w+/,\n                punctuation: /^<<[-~]?/\n              }\n            },\n            interpolation: interpolation,\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n          alias: 'heredoc-string',\n          greedy: true,\n          inside: {\n            delimiter: {\n              pattern: /^<<[-~]?'[a-z_]\\w*'|\\b[a-z_]\\w*$/i,\n              inside: {\n                symbol: /\\b\\w+/,\n                punctuation: /^<<[-~]?'|'$/\n              }\n            },\n            string: /[\\s\\S]+/\n          }\n        }\n      ],\n      'command-literal': [\n        {\n          pattern: RegExp(/%x/.source + percentExpression),\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            command: {\n              pattern: /[\\s\\S]+/,\n              alias: 'string'\n            }\n          }\n        },\n        {\n          pattern: /`(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|[^\\\\`#\\r\\n])*`/,\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            command: {\n              pattern: /[\\s\\S]+/,\n              alias: 'string'\n            }\n          }\n        }\n      ]\n    })\n    delete Prism.languages.ruby.string\n    Prism.languages.insertBefore('ruby', 'number', {\n      builtin:\n        /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\\b/,\n      constant: /\\b[A-Z][A-Z0-9_]*(?:[?!]|\\b)/\n    })\n    Prism.languages.rb = Prism.languages.ruby\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = rust\nrust.displayName = 'rust'\nrust.aliases = []\nfunction rust(Prism) {\n  ;(function (Prism) {\n    var multilineComment = /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\//.source\n    for (var i = 0; i < 2; i++) {\n      // support 4 levels of nested comments\n      multilineComment = multilineComment.replace(/<self>/g, function () {\n        return multilineComment\n      })\n    }\n    multilineComment = multilineComment.replace(/<self>/g, function () {\n      return /[^\\s\\S]/.source\n    })\n    Prism.languages.rust = {\n      comment: [\n        {\n          pattern: RegExp(/(^|[^\\\\])/.source + multilineComment),\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      string: {\n        pattern: /b?\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|b?r(#*)\"(?:[^\"]|\"(?!\\1))*\"\\1/,\n        greedy: true\n      },\n      char: {\n        pattern:\n          /b?'(?:\\\\(?:x[0-7][\\da-fA-F]|u\\{(?:[\\da-fA-F]_*){1,6}\\}|.)|[^\\\\\\r\\n\\t'])'/,\n        greedy: true\n      },\n      attribute: {\n        pattern: /#!?\\[(?:[^\\[\\]\"]|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")*\\]/,\n        greedy: true,\n        alias: 'attr-name',\n        inside: {\n          string: null // see below\n        }\n      },\n      // Closure params should not be confused with bitwise OR |\n      'closure-params': {\n        pattern: /([=(,:]\\s*|\\bmove\\s*)\\|[^|]*\\||\\|[^|]*\\|(?=\\s*(?:\\{|->))/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          'closure-punctuation': {\n            pattern: /^\\||\\|$/,\n            alias: 'punctuation'\n          },\n          rest: null // see below\n        }\n      },\n      'lifetime-annotation': {\n        pattern: /'\\w+/,\n        alias: 'symbol'\n      },\n      'fragment-specifier': {\n        pattern: /(\\$\\w+:)[a-z]+/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      variable: /\\$\\w+/,\n      'function-definition': {\n        pattern: /(\\bfn\\s+)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      'type-definition': {\n        pattern: /(\\b(?:enum|struct|trait|type|union)\\s+)\\w+/,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      'module-declaration': [\n        {\n          pattern: /(\\b(?:crate|mod)\\s+)[a-z][a-z_\\d]*/,\n          lookbehind: true,\n          alias: 'namespace'\n        },\n        {\n          pattern:\n            /(\\b(?:crate|self|super)\\s*)::\\s*[a-z][a-z_\\d]*\\b(?:\\s*::(?:\\s*[a-z][a-z_\\d]*\\s*::)*)?/,\n          lookbehind: true,\n          alias: 'namespace',\n          inside: {\n            punctuation: /::/\n          }\n        }\n      ],\n      keyword: [\n        // https://github.com/rust-lang/reference/blob/master/src/keywords.md\n        /\\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b/, // primitives and str\n        // https://doc.rust-lang.org/stable/rust-by-example/primitives.html\n        /\\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\\b/\n      ],\n      // functions can technically start with an upper-case letter, but this will introduce a lot of false positives\n      // and Rust's naming conventions recommend snake_case anyway.\n      // https://doc.rust-lang.org/1.0.0/style/style/naming/README.html\n      function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())/,\n      macro: {\n        pattern: /\\b\\w+!/,\n        alias: 'property'\n      },\n      constant: /\\b[A-Z_][A-Z_\\d]+\\b/,\n      'class-name': /\\b[A-Z]\\w*\\b/,\n      namespace: {\n        pattern: /(?:\\b[a-z][a-z_\\d]*\\s*::\\s*)*\\b[a-z][a-z_\\d]*\\s*::(?!\\s*<)/,\n        inside: {\n          punctuation: /::/\n        }\n      },\n      // Hex, oct, bin, dec numbers with visual separators and type suffix\n      number:\n        /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      punctuation: /->|\\.\\.=|\\.{1,3}|::|[{}[\\];(),:]/,\n      operator: /[-+*\\/%!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?=?|[@?]/\n    }\n    Prism.languages.rust['closure-params'].inside.rest = Prism.languages.rust\n    Prism.languages.rust['attribute'].inside['string'] =\n      Prism.languages.rust['string']\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = sas\nsas.displayName = 'sas'\nsas.aliases = []\nfunction sas(Prism) {\n  ;(function (Prism) {\n    var stringPattern = /(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))/.source\n    var number = /\\b(?:\\d[\\da-f]*x|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i\n    var numericConstant = {\n      pattern: RegExp(stringPattern + '[bx]'),\n      alias: 'number'\n    }\n    var macroVariable = {\n      pattern: /&[a-z_]\\w*/i\n    }\n    var macroKeyword = {\n      pattern:\n        /((?:^|\\s|=|\\())%(?:ABORT|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUPCASE|RETURN|RUN|SCAN|SUBSTR|SUPERQ|SYMDEL|SYMEXIST|SYMGLOBL|SYMLOCAL|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\\b/i,\n      lookbehind: true,\n      alias: 'keyword'\n    }\n    var step = {\n      pattern: /(^|\\s)(?:proc\\s+\\w+|data(?!=)|quit|run)\\b/i,\n      alias: 'keyword',\n      lookbehind: true\n    }\n    var comment = [\n      /\\/\\*[\\s\\S]*?\\*\\//,\n      {\n        pattern: /(^[ \\t]*|;\\s*)\\*[^;]*;/m,\n        lookbehind: true\n      }\n    ]\n    var string = {\n      pattern: RegExp(stringPattern),\n      greedy: true\n    }\n    var punctuation = /[$%@.(){}\\[\\];,\\\\]/\n    var func = {\n      pattern: /%?\\b\\w+(?=\\()/,\n      alias: 'keyword'\n    }\n    var args = {\n      function: func,\n      'arg-value': {\n        pattern: /(=\\s*)[A-Z\\.]+/i,\n        lookbehind: true\n      },\n      operator: /=/,\n      'macro-variable': macroVariable,\n      arg: {\n        pattern: /[A-Z]+/i,\n        alias: 'keyword'\n      },\n      number: number,\n      'numeric-constant': numericConstant,\n      punctuation: punctuation,\n      string: string\n    }\n    var format = {\n      pattern: /\\b(?:format|put)\\b=?[\\w'$.]+/i,\n      inside: {\n        keyword: /^(?:format|put)(?==)/i,\n        equals: /=/,\n        format: {\n          pattern: /(?:\\w|\\$\\d)+\\.\\d?/,\n          alias: 'number'\n        }\n      }\n    }\n    var altformat = {\n      pattern: /\\b(?:format|put)\\s+[\\w']+(?:\\s+[$.\\w]+)+(?=;)/i,\n      inside: {\n        keyword: /^(?:format|put)/i,\n        format: {\n          pattern: /[\\w$]+\\.\\d?/,\n          alias: 'number'\n        }\n      }\n    }\n    var globalStatements = {\n      pattern:\n        /((?:^|\\s)=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\\d?)\\b/i,\n      lookbehind: true,\n      alias: 'keyword'\n    }\n    var submitStatement = {\n      pattern: /(^|\\s)(?:submit(?:\\s+(?:load|norun|parseonly))?|endsubmit)\\b/i,\n      lookbehind: true,\n      alias: 'keyword'\n    }\n    var actionSets =\n      /aStore|accessControl|aggregation|audio|autotune|bayesianNetClassifier|bioMedImage|boolRule|builtins|cardinality|cdm|clustering|conditionalRandomFields|configuration|copula|countreg|dataDiscovery|dataPreprocess|dataSciencePilot|dataStep|decisionTree|deduplication|deepLearn|deepNeural|deepRnn|ds2|ecm|entityRes|espCluster|explainModel|factmac|fastKnn|fcmpact|fedSql|freqTab|gVarCluster|gam|gleam|graphSemiSupLearn|hiddenMarkovModel|hyperGroup|ica|image|iml|kernalPca|langModel|ldaTopic|loadStreams|mbc|mixed|mlTools|modelPublishing|network|neuralNet|nmf|nonParametricBayes|nonlinear|optNetwork|optimization|panel|pca|percentile|phreg|pls|qkb|qlim|quantreg|recommend|regression|reinforcementLearn|robustPca|ruleMining|sampling|sandwich|sccasl|search(?:Analytics)?|sentimentAnalysis|sequence|session(?:Prop)?|severity|simSystem|simple|smartData|sparkEmbeddedProcess|sparseML|spatialreg|spc|stabilityMonitoring|svDataDescription|svm|table|text(?:Filters|Frequency|Mining|Parse|Rule(?:Develop|Score)|Topic|Util)|timeData|transpose|tsInfo|tsReconcile|uniTimeSeries|varReduce/\n        .source\n    var casActions = {\n      pattern: RegExp(\n        /(^|\\s)(?:action\\s+)?(?:<act>)\\.[a-z]+\\b[^;]+/.source.replace(\n          /<act>/g,\n          function () {\n            return actionSets\n          }\n        ),\n        'i'\n      ),\n      lookbehind: true,\n      inside: {\n        keyword: RegExp(\n          /(?:<act>)\\.[a-z]+\\b/.source.replace(/<act>/g, function () {\n            return actionSets\n          }),\n          'i'\n        ),\n        action: {\n          pattern: /(?:action)/i,\n          alias: 'keyword'\n        },\n        comment: comment,\n        function: func,\n        'arg-value': args['arg-value'],\n        operator: args.operator,\n        argument: args.arg,\n        number: number,\n        'numeric-constant': numericConstant,\n        punctuation: punctuation,\n        string: string\n      }\n    }\n    var keywords = {\n      pattern:\n        /((?:^|\\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class(?:lev)?|close|column|computed?|contains|continue|data(?==)|define|delete|describe|document|do\\s+over|do|dol|drop|dul|else|end(?:comp|source)?|entryTitle|eval(?:uate)?|exec(?:ute)?|exit|file(?:name)?|fill(?:attrs)?|flist|fnc|function(?:list)?|global|goto|group(?:by)?|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|_?null_|name|noobs|nowd|ods|options|or|otherwise|out(?:put)?|over(?:lay)?|plot|print|put|raise|ranexp|rannor|rbreak|retain|return|select|session|sessref|set|source|statgraph|sum|summarize|table|temp|terminate|then\\s+do|then|title\\d?|to|var|when|where|xaxisopts|y2axisopts|yaxisopts)\\b/i,\n      lookbehind: true\n    }\n    Prism.languages.sas = {\n      datalines: {\n        pattern: /^([ \\t]*)(?:cards|(?:data)?lines);[\\s\\S]+?^[ \\t]*;/im,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          keyword: {\n            pattern: /^(?:cards|(?:data)?lines)/i\n          },\n          punctuation: /;/\n        }\n      },\n      'proc-sql': {\n        pattern:\n          /(^proc\\s+(?:fed)?sql(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          sql: {\n            pattern: RegExp(\n              /^[ \\t]*(?:select|alter\\s+table|(?:create|describe|drop)\\s+(?:index|table(?:\\s+constraints)?|view)|create\\s+unique\\s+index|insert\\s+into|update)(?:<str>|[^;\"'])+;/.source.replace(\n                /<str>/g,\n                function () {\n                  return stringPattern\n                }\n              ),\n              'im'\n            ),\n            alias: 'language-sql',\n            inside: Prism.languages.sql\n          },\n          'global-statements': globalStatements,\n          'sql-statements': {\n            pattern:\n              /(^|\\s)(?:disconnect\\s+from|begin|commit|exec(?:ute)?|reset|rollback|validate)\\b/i,\n            lookbehind: true,\n            alias: 'keyword'\n          },\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-groovy': {\n        pattern:\n          /(^proc\\s+groovy(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          comment: comment,\n          groovy: {\n            pattern: RegExp(\n              /(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<str>|[^\"'])+?(?=endsubmit;)/.source.replace(\n                /<str>/g,\n                function () {\n                  return stringPattern\n                }\n              ),\n              'im'\n            ),\n            lookbehind: true,\n            alias: 'language-groovy',\n            inside: Prism.languages.groovy\n          },\n          keyword: keywords,\n          'submit-statement': submitStatement,\n          'global-statements': globalStatements,\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-lua': {\n        pattern:\n          /(^proc\\s+lua(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          comment: comment,\n          lua: {\n            pattern: RegExp(\n              /(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<str>|[^\"'])+?(?=endsubmit;)/.source.replace(\n                /<str>/g,\n                function () {\n                  return stringPattern\n                }\n              ),\n              'im'\n            ),\n            lookbehind: true,\n            alias: 'language-lua',\n            inside: Prism.languages.lua\n          },\n          keyword: keywords,\n          'submit-statement': submitStatement,\n          'global-statements': globalStatements,\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-cas': {\n        pattern:\n          /(^proc\\s+cas(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|quit|data);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          comment: comment,\n          'statement-var': {\n            pattern: /((?:^|\\s)=?)saveresult\\s[^;]+/im,\n            lookbehind: true,\n            inside: {\n              statement: {\n                pattern: /^saveresult\\s+\\S+/i,\n                inside: {\n                  keyword: /^(?:saveresult)/i\n                }\n              },\n              rest: args\n            }\n          },\n          'cas-actions': casActions,\n          statement: {\n            pattern:\n              /((?:^|\\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,\n            lookbehind: true,\n            inside: args\n          },\n          step: step,\n          keyword: keywords,\n          function: func,\n          format: format,\n          altformat: altformat,\n          'global-statements': globalStatements,\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-args': {\n        pattern: RegExp(\n          /(^proc\\s+\\w+\\s+)(?!\\s)(?:[^;\"']|<str>)+;/.source.replace(\n            /<str>/g,\n            function () {\n              return stringPattern\n            }\n          ),\n          'im'\n        ),\n        lookbehind: true,\n        inside: args\n      },\n      /*Special keywords within macros*/\n      'macro-keyword': macroKeyword,\n      'macro-variable': macroVariable,\n      'macro-string-functions': {\n        pattern:\n          /((?:^|\\s|=))%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)\\(.*?(?:[^%]\\))/i,\n        lookbehind: true,\n        inside: {\n          function: {\n            pattern: /%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)/i,\n            alias: 'keyword'\n          },\n          'macro-keyword': macroKeyword,\n          'macro-variable': macroVariable,\n          'escaped-char': {\n            pattern: /%['\"()<>=¬^~;,#]/\n          },\n          punctuation: punctuation\n        }\n      },\n      'macro-declaration': {\n        pattern: /^%macro[^;]+(?=;)/im,\n        inside: {\n          keyword: /%macro/i\n        }\n      },\n      'macro-end': {\n        pattern: /^%mend[^;]+(?=;)/im,\n        inside: {\n          keyword: /%mend/i\n        }\n      },\n      /*%_zscore(headcir, _lhc, _mhc, _shc, headcz, headcpct, _Fheadcz); */\n      macro: {\n        pattern: /%_\\w+(?=\\()/,\n        alias: 'keyword'\n      },\n      input: {\n        pattern: /\\binput\\s[-\\w\\s/*.$&]+;/i,\n        inside: {\n          input: {\n            alias: 'keyword',\n            pattern: /^input/i\n          },\n          comment: comment,\n          number: number,\n          'numeric-constant': numericConstant\n        }\n      },\n      'options-args': {\n        pattern: /(^options)[-'\"|/\\\\<>*+=:()\\w\\s]*(?=;)/im,\n        lookbehind: true,\n        inside: args\n      },\n      'cas-actions': casActions,\n      comment: comment,\n      function: func,\n      format: format,\n      altformat: altformat,\n      'numeric-constant': numericConstant,\n      datetime: {\n        // '1jan2013'd, '9:25:19pm't, '18jan2003:9:27:05am'dt\n        pattern: RegExp(stringPattern + '(?:dt?|t)'),\n        alias: 'number'\n      },\n      string: string,\n      step: step,\n      keyword: keywords,\n      // In SAS Studio syntax highlighting, these operators are styled like keywords\n      'operator-keyword': {\n        pattern: /\\b(?:eq|ge|gt|in|le|lt|ne|not)\\b/i,\n        alias: 'operator'\n      },\n      // Decimal (1.2e23), hexadecimal (0c1x)\n      number: number,\n      operator: /\\*\\*?|\\|\\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\\/=&]|[~¬^]=?/,\n      punctuation: punctuation\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = sass\nsass.displayName = 'sass'\nsass.aliases = []\nfunction sass(Prism) {\n  ;(function (Prism) {\n    Prism.languages.sass = Prism.languages.extend('css', {\n      // Sass comments don't need to be closed, only indented\n      comment: {\n        pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n        lookbehind: true,\n        greedy: true\n      }\n    })\n    Prism.languages.insertBefore('sass', 'atrule', {\n      // We want to consume the whole line\n      'atrule-line': {\n        // Includes support for = and + shortcuts\n        pattern: /^(?:[ \\t]*)[@+=].+/m,\n        greedy: true,\n        inside: {\n          atrule: /(?:@[\\w-]+|[+=])/\n        }\n      }\n    })\n    delete Prism.languages.sass.atrule\n    var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n    var operator = [\n      /[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|not|or)\\b/,\n      {\n        pattern: /(\\s)-(?=\\s)/,\n        lookbehind: true\n      }\n    ]\n    Prism.languages.insertBefore('sass', 'property', {\n      // We want to consume the whole line\n      'variable-line': {\n        pattern: /^[ \\t]*\\$.+/m,\n        greedy: true,\n        inside: {\n          punctuation: /:/,\n          variable: variable,\n          operator: operator\n        }\n      },\n      // We want to consume the whole line\n      'property-line': {\n        pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n        greedy: true,\n        inside: {\n          property: [\n            /[^:\\s]+(?=\\s*:)/,\n            {\n              pattern: /(:)[^:\\s]+/,\n              lookbehind: true\n            }\n          ],\n          punctuation: /:/,\n          variable: variable,\n          operator: operator,\n          important: Prism.languages.sass.important\n        }\n      }\n    })\n    delete Prism.languages.sass.property\n    delete Prism.languages.sass.important // Now that whole lines for other patterns are consumed,\n    // what's left should be selectors\n    Prism.languages.insertBefore('sass', 'punctuation', {\n      selector: {\n        pattern:\n          /^([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/m,\n        lookbehind: true,\n        greedy: true\n      }\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorJava = require('./java.js')\nmodule.exports = scala\nscala.displayName = 'scala'\nscala.aliases = []\nfunction scala(Prism) {\n  Prism.register(refractorJava)\n  Prism.languages.scala = Prism.languages.extend('java', {\n    'triple-quoted-string': {\n      pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword:\n      /<-|=>|\\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\\b/,\n    number:\n      /\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,\n    builtin:\n      /\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,\n    symbol: /'[^\\d\\s\\\\]\\w*/\n  })\n  Prism.languages.insertBefore('scala', 'triple-quoted-string', {\n    'string-interpolation': {\n      pattern:\n        /\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,\n      greedy: true,\n      inside: {\n        id: {\n          pattern: /^\\w+/,\n          greedy: true,\n          alias: 'function'\n        },\n        escape: {\n          pattern: /\\\\\\$\"|\\$[$\"]/,\n          greedy: true,\n          alias: 'symbol'\n        },\n        interpolation: {\n          pattern: /\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,\n          greedy: true,\n          inside: {\n            punctuation: /^\\$\\{?|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: Prism.languages.scala\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  delete Prism.languages.scala['class-name']\n  delete Prism.languages.scala['function']\n}\n","'use strict'\n\nmodule.exports = scheme\nscheme.displayName = 'scheme'\nscheme.aliases = []\nfunction scheme(Prism) {\n  ;(function (Prism) {\n    Prism.languages.scheme = {\n      // this supports \"normal\" single-line comments:\n      //   ; comment\n      // and (potentially nested) multiline comments:\n      //   #| comment #| nested |# still comment |#\n      // (only 1 level of nesting is supported)\n      comment:\n        /;.*|#;\\s*(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\[(?:[^\\[\\]]|\\[[^\\[\\]]*\\])*\\])|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#)|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#))*\\|#)*\\|#/,\n      string: {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true\n      },\n      symbol: {\n        pattern: /'[^()\\[\\]#'\\s]+/,\n        greedy: true\n      },\n      char: {\n        pattern:\n          /#\\\\(?:[ux][a-fA-F\\d]+\\b|[-a-zA-Z]+\\b|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\S)/,\n        greedy: true\n      },\n      'lambda-parameter': [\n        // https://www.cs.cmu.edu/Groups/AI/html/r4rs/r4rs_6.html#SEC30\n        {\n          pattern:\n            /((?:^|[^'`#])[(\\[]lambda\\s+)(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)/,\n          lookbehind: true\n        },\n        {\n          pattern: /((?:^|[^'`#])[(\\[]lambda\\s+[(\\[])[^()\\[\\]']+/,\n          lookbehind: true\n        }\n      ],\n      keyword: {\n        pattern:\n          /((?:^|[^'`#])[(\\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|except|export|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\\*)?|let\\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      builtin: {\n        // all functions of the base library of R7RS plus some of built-ins of R5Rs\n        pattern:\n          /((?:^|[^'`#])[(\\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\\?|boolean=?\\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\\?|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)|close-(?:input-port|output-port|port)|complex\\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\\??|eq\\?|equal\\?|eqv\\?|error|error-object(?:-irritants|-message|\\?)|eval|even\\?|exact(?:-integer-sqrt|-integer\\?|\\?)?|expt|features|file-error\\?|floor(?:-quotient|-remainder|\\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\\??|input-port(?:-open\\?|\\?)|integer(?:->char|\\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null\\?|number(?:->string|\\?)|numerator|odd\\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\\?|\\?)|pair\\?|peek-char|peek-u8|port\\?|positive\\?|procedure\\?|quotient|raise|raise-continuable|rational\\?|rationalize|read-(?:bytevector|bytevector!|char|error\\?|line|string|u8)|real\\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)?|substring|symbol(?:->string|\\?|=\\?)|syntax-error|textual-port\\?|truncate(?:-quotient|-remainder|\\/)?|u8-ready\\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\\?)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      operator: {\n        pattern: /((?:^|[^'`#])[(\\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      number: {\n        // The number pattern from [the R7RS spec](https://small.r7rs.org/attachment/r7rs.pdf).\n        //\n        // <number>      := <num 2>|<num 8>|<num 10>|<num 16>\n        // <num R>       := <prefix R><complex R>\n        // <complex R>   := <real R>(?:@<real R>|<imaginary R>)?|<imaginary R>\n        // <imaginary R> := [+-](?:<ureal R>|(?:inf|nan)\\.0)?i\n        // <real R>      := [+-]?<ureal R>|[+-](?:inf|nan)\\.0\n        // <ureal R>     := <uint R>(?:\\/<uint R>)?\n        //                | <decimal R>\n        //\n        // <decimal 10>  := (?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?\n        // <uint R>      := <digit R>+\n        // <prefix R>    := <radix R>(?:#[ei])?|(?:#[ei])?<radix R>\n        // <radix 2>     := #b\n        // <radix 8>     := #o\n        // <radix 10>    := (?:#d)?\n        // <radix 16>    := #x\n        // <digit 2>     := [01]\n        // <digit 8>     := [0-7]\n        // <digit 10>    := \\d\n        // <digit 16>    := [0-9a-f]\n        //\n        // The problem with this grammar is that the resulting regex is way to complex, so we simplify by grouping all\n        // non-decimal bases together. This results in a decimal (dec) and combined binary, octal, and hexadecimal (box)\n        // pattern:\n        pattern: RegExp(\n          SortedBNF({\n            '<ureal dec>':\n              /\\d+(?:\\/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[esfdl][+-]?\\d+)?/.source,\n            '<real dec>': /[+-]?<ureal dec>|[+-](?:inf|nan)\\.0/.source,\n            '<imaginary dec>': /[+-](?:<ureal dec>|(?:inf|nan)\\.0)?i/.source,\n            '<complex dec>':\n              /<real dec>(?:@<real dec>|<imaginary dec>)?|<imaginary dec>/\n                .source,\n            '<num dec>': /(?:#d(?:#[ei])?|#[ei](?:#d)?)?<complex dec>/.source,\n            '<ureal box>': /[0-9a-f]+(?:\\/[0-9a-f]+)?/.source,\n            '<real box>': /[+-]?<ureal box>|[+-](?:inf|nan)\\.0/.source,\n            '<imaginary box>': /[+-](?:<ureal box>|(?:inf|nan)\\.0)?i/.source,\n            '<complex box>':\n              /<real box>(?:@<real box>|<imaginary box>)?|<imaginary box>/\n                .source,\n            '<num box>': /#[box](?:#[ei])?|(?:#[ei])?#[box]<complex box>/\n              .source,\n            '<number>': /(^|[()\\[\\]\\s])(?:<num dec>|<num box>)(?=[()\\[\\]\\s]|$)/\n              .source\n          }),\n          'i'\n        ),\n        lookbehind: true\n      },\n      boolean: {\n        pattern: /(^|[()\\[\\]\\s])#(?:[ft]|false|true)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      function: {\n        pattern:\n          /((?:^|[^'`#])[(\\[])(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      identifier: {\n        pattern: /(^|[()\\[\\]\\s])\\|(?:[^\\\\|]|\\\\.)*\\|(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true,\n        greedy: true\n      },\n      punctuation: /[()\\[\\]']/\n    }\n    /**\n     * Given a topologically sorted BNF grammar, this will return the RegExp source of last rule of the grammar.\n     *\n     * @param {Record<string, string>} grammar\n     * @returns {string}\n     */\n    function SortedBNF(grammar) {\n      for (var key in grammar) {\n        grammar[key] = grammar[key].replace(/<[\\w\\s]+>/g, function (key) {\n          return '(?:' + grammar[key].trim() + ')'\n        })\n      } // return the last item\n      return grammar[key]\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = scss\nscss.displayName = 'scss'\nscss.aliases = []\nfunction scss(Prism) {\n  Prism.languages.scss = Prism.languages.extend('css', {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n      lookbehind: true\n    },\n    atrule: {\n      pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n      inside: {\n        rule: /@[\\w-]+/ // See rest below\n      }\n    },\n    // url, compassified\n    url: /(?:[-a-z]+-)?url(?=\\()/i,\n    // CSS selector regex is not appropriate for Sass\n    // since there can be lot more things (var, @ directive, nesting..)\n    // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n    // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n    // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n    // can \"pass\" as a selector- e.g: proper#{$erty})\n    // this one was hard to do, so please be careful if you edit this one :)\n    selector: {\n      // Initial look-ahead is used to prevent matching of blank selectors\n      pattern:\n        /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,\n      inside: {\n        parent: {\n          pattern: /&/,\n          alias: 'important'\n        },\n        placeholder: /%[-\\w]+/,\n        variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n      }\n    },\n    property: {\n      pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n      inside: {\n        variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n      }\n    }\n  })\n  Prism.languages.insertBefore('scss', 'atrule', {\n    keyword: [\n      /@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,\n      {\n        pattern: /( )(?:from|through)(?= )/,\n        lookbehind: true\n      }\n    ]\n  })\n  Prism.languages.insertBefore('scss', 'important', {\n    // var and interpolated vars\n    variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n  })\n  Prism.languages.insertBefore('scss', 'function', {\n    'module-modifier': {\n      pattern: /\\b(?:as|hide|show|with)\\b/i,\n      alias: 'keyword'\n    },\n    placeholder: {\n      pattern: /%[-\\w]+/,\n      alias: 'selector'\n    },\n    statement: {\n      pattern: /\\B!(?:default|optional)\\b/i,\n      alias: 'keyword'\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    null: {\n      pattern: /\\bnull\\b/,\n      alias: 'keyword'\n    },\n    operator: {\n      pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,\n      lookbehind: true\n    }\n  })\n  Prism.languages.scss['atrule'].inside.rest = Prism.languages.scss\n}\n","'use strict'\nvar refractorBash = require('./bash.js')\nmodule.exports = shellSession\nshellSession.displayName = 'shellSession'\nshellSession.aliases = []\nfunction shellSession(Prism) {\n  Prism.register(refractorBash)\n  ;(function (Prism) {\n    // CAREFUL!\n    // The following patterns are concatenated, so the group referenced by a back reference is non-obvious!\n    var strings = [\n      // normal string\n      /\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/.source,\n      /'[^']*'/.source,\n      /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/.source, // here doc\n      // 2 capturing groups\n      /<<-?\\s*([\"']?)(\\w+)\\1\\s[\\s\\S]*?[\\r\\n]\\2/.source\n    ].join('|')\n    Prism.languages['shell-session'] = {\n      command: {\n        pattern: RegExp(\n          // user info\n          /^/.source +\n            '(?:' + // <user> \":\" ( <path> )?\n            (/[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+(?::[^\\0-\\x1F$#%*?\"<>:;|]+)?/\n              .source +\n              '|' + // <path>\n              // Since the path pattern is quite general, we will require it to start with a special character to\n              // prevent false positives.\n              /[/~.][^\\0-\\x1F$#%*?\"<>@:;|]*/.source) +\n            ')?' + // shell symbol\n            /[$#%](?=\\s)/.source + // bash command\n            /(?:[^\\\\\\r\\n \\t'\"<$]|[ \\t](?:(?!#)|#.*$)|\\\\(?:[^\\r]|\\r\\n?)|\\$(?!')|<(?!<)|<<str>>)+/.source.replace(\n              /<<str>>/g,\n              function () {\n                return strings\n              }\n            ),\n          'm'\n        ),\n        greedy: true,\n        inside: {\n          info: {\n            // foo@bar:~/files$ exit\n            // foo@bar$ exit\n            // ~/files$ exit\n            pattern: /^[^#$%]+/,\n            alias: 'punctuation',\n            inside: {\n              user: /^[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+/,\n              punctuation: /:/,\n              path: /[\\s\\S]+/\n            }\n          },\n          bash: {\n            pattern: /(^[$#%]\\s*)\\S[\\s\\S]*/,\n            lookbehind: true,\n            alias: 'language-bash',\n            inside: Prism.languages.bash\n          },\n          'shell-symbol': {\n            pattern: /^[$#%]/,\n            alias: 'important'\n          }\n        }\n      },\n      output: /.(?:.*(?:[\\r\\n]|.$))*/\n    }\n    Prism.languages['sh-session'] = Prism.languages['shellsession'] =\n      Prism.languages['shell-session']\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = smali\nsmali.displayName = 'smali'\nsmali.aliases = []\nfunction smali(Prism) {\n  // Test files for the parser itself:\n  // https://github.com/JesusFreke/smali/tree/master/smali/src/test/resources/LexerTest\n  Prism.languages.smali = {\n    comment: /#.*/,\n    string: {\n      pattern: /\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|'(?:[^\\r\\n\\\\']|\\\\(?:.|u[\\da-fA-F]{4}))'/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(^|[^L])L(?:(?:\\w+|`[^`\\r\\n]*`)\\/)*(?:[\\w$]+|`[^`\\r\\n]*`)(?=\\s*;)/,\n      lookbehind: true,\n      inside: {\n        'class-name': {\n          pattern: /(^L|\\/)(?:[\\w$]+|`[^`\\r\\n]*`)$/,\n          lookbehind: true\n        },\n        namespace: {\n          pattern: /^(L)(?:(?:\\w+|`[^`\\r\\n]*`)\\/)+/,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\//\n          }\n        },\n        builtin: /^L/\n      }\n    },\n    builtin: [\n      {\n        // Reference: https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields#types\n        pattern: /([();\\[])[BCDFIJSVZ]+/,\n        lookbehind: true\n      },\n      {\n        // e.g. .field mWifiOnUid:I\n        pattern: /([\\w$>]:)[BCDFIJSVZ]/,\n        lookbehind: true\n      }\n    ],\n    keyword: [\n      {\n        pattern: /(\\.end\\s+)[\\w-]+/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\w.-])\\.(?!\\d)[\\w-]+/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^|[^\\w.-])(?:abstract|annotation|bridge|constructor|enum|final|interface|private|protected|public|runtime|static|synthetic|system|transient)(?![\\w.-])/,\n        lookbehind: true\n      }\n    ],\n    function: {\n      pattern: /(^|[^\\w.-])(?:\\w+|<[\\w$-]+>)(?=\\()/,\n      lookbehind: true\n    },\n    field: {\n      pattern: /[\\w$]+(?=:)/,\n      alias: 'variable'\n    },\n    register: {\n      pattern: /(^|[^\\w.-])[vp]\\d(?![\\w.-])/,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    boolean: {\n      pattern: /(^|[^\\w.-])(?:false|true)(?![\\w.-])/,\n      lookbehind: true\n    },\n    number: {\n      pattern:\n        /(^|[^/\\w.-])-?(?:NAN|INFINITY|0x(?:[\\dA-F]+(?:\\.[\\dA-F]*)?|\\.[\\dA-F]+)(?:p[+-]?[\\dA-F]+)?|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)[dflst]?(?![\\w.-])/i,\n      lookbehind: true\n    },\n    label: {\n      pattern: /(:)\\w+/,\n      lookbehind: true,\n      alias: 'property'\n    },\n    operator: /->|\\.\\.|[\\[=]/,\n    punctuation: /[{}(),;:]/\n  }\n}\n","'use strict'\n\nmodule.exports = smalltalk\nsmalltalk.displayName = 'smalltalk'\nsmalltalk.aliases = []\nfunction smalltalk(Prism) {\n  Prism.languages.smalltalk = {\n    comment: {\n      pattern: /\"(?:\"\"|[^\"])*\"/,\n      greedy: true\n    },\n    char: {\n      pattern: /\\$./,\n      greedy: true\n    },\n    string: {\n      pattern: /'(?:''|[^'])*'/,\n      greedy: true\n    },\n    symbol: /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n    'block-arguments': {\n      pattern: /(\\[\\s*):[^\\[|]*\\|/,\n      lookbehind: true,\n      inside: {\n        variable: /:[\\da-z]+/i,\n        punctuation: /\\|/\n      }\n    },\n    'temporary-variables': {\n      pattern: /\\|[^|]+\\|/,\n      inside: {\n        variable: /[\\da-z]+/i,\n        punctuation: /\\|/\n      }\n    },\n    keyword: /\\b(?:new|nil|self|super)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number: [\n      /\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n      /\\b\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n    ],\n    operator: /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n    punctuation: /[.;:?\\[\\](){}]/\n  }\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = smarty\nsmarty.displayName = 'smarty'\nsmarty.aliases = []\nfunction smarty(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.smarty = {\n      comment: {\n        pattern: /^\\{\\*[\\s\\S]*?\\*\\}/,\n        greedy: true\n      },\n      'embedded-php': {\n        pattern: /^\\{php\\}[\\s\\S]*?\\{\\/php\\}/,\n        greedy: true,\n        inside: {\n          smarty: {\n            pattern: /^\\{php\\}|\\{\\/php\\}$/,\n            inside: null // see below\n          },\n          php: {\n            pattern: /[\\s\\S]+/,\n            alias: 'language-php',\n            inside: Prism.languages.php\n          }\n        }\n      },\n      string: [\n        {\n          pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n          greedy: true,\n          inside: {\n            interpolation: {\n              pattern: /\\{[^{}]*\\}|`[^`]*`/,\n              inside: {\n                'interpolation-punctuation': {\n                  pattern: /^[{`]|[`}]$/,\n                  alias: 'punctuation'\n                },\n                expression: {\n                  pattern: /[\\s\\S]+/,\n                  inside: null // see below\n                }\n              }\n            },\n            variable: /\\$\\w+/\n          }\n        },\n        {\n          pattern: /'(?:\\\\.|[^'\\\\\\r\\n])*'/,\n          greedy: true\n        }\n      ],\n      keyword: {\n        pattern: /(^\\{\\/?)[a-z_]\\w*\\b(?!\\()/i,\n        lookbehind: true,\n        greedy: true\n      },\n      delimiter: {\n        pattern: /^\\{\\/?|\\}$/,\n        greedy: true,\n        alias: 'punctuation'\n      },\n      number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n      variable: [\n        /\\$(?!\\d)\\w+/,\n        /#(?!\\d)\\w+#/,\n        {\n          pattern: /(\\.|->|\\w\\s*=)(?!\\d)\\w+\\b(?!\\()/,\n          lookbehind: true\n        },\n        {\n          pattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n          lookbehind: true\n        }\n      ],\n      function: {\n        pattern: /(\\|\\s*)@?[a-z_]\\w*|\\b[a-z_]\\w*(?=\\()/i,\n        lookbehind: true\n      },\n      'attr-name': /\\b[a-z_]\\w*(?=\\s*=)/i,\n      boolean: /\\b(?:false|no|off|on|true|yes)\\b/,\n      punctuation: /[\\[\\](){}.,:`]|->/,\n      operator: [\n        /[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n        /\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n        /\\b(?:and|eq|gt?e|gt|lt?e|lt|mod|neq?|not|or)\\b/\n      ]\n    }\n    Prism.languages.smarty['embedded-php'].inside.smarty.inside =\n      Prism.languages.smarty\n    Prism.languages.smarty.string[0].inside.interpolation.inside.expression.inside =\n      Prism.languages.smarty\n    var string = /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|'(?:\\\\.|[^'\\\\\\r\\n])*'/\n    var smartyPattern = RegExp(\n      // comments\n      /\\{\\*[\\s\\S]*?\\*\\}/.source +\n        '|' + // php tags\n        /\\{php\\}[\\s\\S]*?\\{\\/php\\}/.source +\n        '|' + // smarty blocks\n        /\\{(?:[^{}\"']|<str>|\\{(?:[^{}\"']|<str>|\\{(?:[^{}\"']|<str>)*\\})*\\})*\\}/.source.replace(\n          /<str>/g,\n          function () {\n            return string.source\n          }\n        ),\n      'g'\n    ) // Tokenize all inline Smarty expressions\n    Prism.hooks.add('before-tokenize', function (env) {\n      var smartyLiteralStart = '{literal}'\n      var smartyLiteralEnd = '{/literal}'\n      var smartyLiteralMode = false\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'smarty',\n        smartyPattern,\n        function (match) {\n          // Smarty tags inside {literal} block are ignored\n          if (match === smartyLiteralEnd) {\n            smartyLiteralMode = false\n          }\n          if (!smartyLiteralMode) {\n            if (match === smartyLiteralStart) {\n              smartyLiteralMode = true\n            }\n            return true\n          }\n          return false\n        }\n      )\n    }) // Re-insert the tokens after tokenizing\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'smarty')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = sml\nsml.displayName = 'sml'\nsml.aliases = ['smlnj']\nfunction sml(Prism) {\n  // https://smlfamily.github.io/sml97-defn.pdf\n  // https://people.mpi-sws.org/~rossberg/sml.html\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:abstype|and|andalso|as|case|datatype|do|else|end|eqtype|exception|fn|fun|functor|handle|if|in|include|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|sharing|sig|signature|struct|structure|then|type|val|where|while|with|withtype)\\b/i\n    Prism.languages.sml = {\n      // allow one level of nesting\n      comment:\n        /\\(\\*(?:[^*(]|\\*(?!\\))|\\((?!\\*)|\\(\\*(?:[^*(]|\\*(?!\\))|\\((?!\\*))*\\*\\))*\\*\\)/,\n      string: {\n        pattern: /#?\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true\n      },\n      'class-name': [\n        {\n          // This is only an approximation since the real grammar is context-free\n          //\n          // Why the main loop so complex?\n          // The main loop is approximately the same as /(?:\\s*(?:[*,]|->)\\s*<TERMINAL>)*/ which is, obviously, a lot\n          // simpler. The difference is that if a comma is the last iteration of the loop, then the terminal must be\n          // followed by a long identifier.\n          pattern: RegExp(\n            /((?:^|[^:]):\\s*)<TERMINAL>(?:\\s*(?:(?:\\*|->)\\s*<TERMINAL>|,\\s*<TERMINAL>(?:(?=<NOT-LAST>)|(?!<NOT-LAST>)\\s+<LONG-ID>)))*/.source\n              .replace(/<NOT-LAST>/g, function () {\n                return /\\s*(?:[*,]|->)/.source\n              })\n              .replace(/<TERMINAL>/g, function () {\n                return /(?:'[\\w']*|<LONG-ID>|\\((?:[^()]|\\([^()]*\\))*\\)|\\{(?:[^{}]|\\{[^{}]*\\})*\\})(?:\\s+<LONG-ID>)*/\n                  .source\n              })\n              .replace(/<LONG-ID>/g, function () {\n                return /(?!<KEYWORD>)[a-z\\d_][\\w'.]*/.source\n              })\n              .replace(/<KEYWORD>/g, function () {\n                return keywords.source\n              }),\n            'i'\n          ),\n          lookbehind: true,\n          greedy: true,\n          inside: null // see below\n        },\n        {\n          pattern:\n            /((?:^|[^\\w'])(?:datatype|exception|functor|signature|structure|type)\\s+)[a-z_][\\w'.]*/i,\n          lookbehind: true\n        }\n      ],\n      function: {\n        pattern: /((?:^|[^\\w'])fun\\s+)[a-z_][\\w'.]*/i,\n        lookbehind: true\n      },\n      keyword: keywords,\n      variable: {\n        pattern: /(^|[^\\w'])'[\\w']*/,\n        lookbehind: true\n      },\n      number: /~?\\b(?:\\d+(?:\\.\\d+)?(?:e~?\\d+)?|0x[\\da-f]+)\\b/i,\n      word: {\n        pattern: /\\b0w(?:\\d+|x[\\da-f]+)\\b/i,\n        alias: 'constant'\n      },\n      boolean: /\\b(?:false|true)\\b/i,\n      operator: /\\.\\.\\.|:[>=:]|=>?|->|[<>]=?|[!+\\-*/^#|@~]/,\n      punctuation: /[(){}\\[\\].:,;]/\n    }\n    Prism.languages.sml['class-name'][0].inside = Prism.languages.sml\n    Prism.languages.smlnj = Prism.languages.sml\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = solidity\nsolidity.displayName = 'solidity'\nsolidity.aliases = ['sol']\nfunction solidity(Prism) {\n  Prism.languages.solidity = Prism.languages.extend('clike', {\n    'class-name': {\n      pattern:\n        /(\\b(?:contract|enum|interface|library|new|struct|using)\\s+)(?!\\d)[\\w$]+/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:_|anonymous|as|assembly|assert|break|calldata|case|constant|constructor|continue|contract|default|delete|do|else|emit|enum|event|external|for|from|function|if|import|indexed|inherited|interface|internal|is|let|library|mapping|memory|modifier|new|payable|pragma|private|public|pure|require|returns?|revert|selfdestruct|solidity|storage|struct|suicide|switch|this|throw|using|var|view|while)\\b/,\n    operator: /=>|->|:=|=:|\\*\\*|\\+\\+|--|\\|\\||&&|<<=?|>>=?|[-+*/%^&|<>!=]=?|[~?]/\n  })\n  Prism.languages.insertBefore('solidity', 'keyword', {\n    builtin:\n      /\\b(?:address|bool|byte|u?int(?:8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?|string|bytes(?:[1-9]|[12]\\d|3[0-2])?)\\b/\n  })\n  Prism.languages.insertBefore('solidity', 'number', {\n    version: {\n      pattern: /([<>]=?|\\^)\\d+\\.\\d+\\.\\d+\\b/,\n      lookbehind: true,\n      alias: 'number'\n    }\n  })\n  Prism.languages.sol = Prism.languages.solidity\n}\n","'use strict'\n\nmodule.exports = solutionFile\nsolutionFile.displayName = 'solutionFile'\nsolutionFile.aliases = []\nfunction solutionFile(Prism) {\n  ;(function (Prism) {\n    var guid = {\n      // https://en.wikipedia.org/wiki/Universally_unique_identifier#Format\n      pattern: /\\{[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}\\}/i,\n      alias: 'constant',\n      inside: {\n        punctuation: /[{}]/\n      }\n    }\n    Prism.languages['solution-file'] = {\n      comment: {\n        pattern: /#.*/,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n        greedy: true,\n        inside: {\n          guid: guid\n        }\n      },\n      object: {\n        // Foo\n        //   Bar(\"abs\") = 9\n        //   EndBar\n        //   Prop = TRUE\n        // EndFoo\n        pattern:\n          /^([ \\t]*)(?:([A-Z]\\w*)\\b(?=.*(?:\\r\\n?|\\n)(?:\\1[ \\t].*(?:\\r\\n?|\\n))*\\1End\\2(?=[ \\t]*$))|End[A-Z]\\w*(?=[ \\t]*$))/m,\n        lookbehind: true,\n        greedy: true,\n        alias: 'keyword'\n      },\n      property: {\n        pattern: /^([ \\t]*)(?!\\s)[^\\r\\n\"#=()]*[^\\s\"#=()](?=\\s*=)/m,\n        lookbehind: true,\n        inside: {\n          guid: guid\n        }\n      },\n      guid: guid,\n      number: /\\b\\d+(?:\\.\\d+)*\\b/,\n      boolean: /\\b(?:FALSE|TRUE)\\b/,\n      operator: /=/,\n      punctuation: /[(),]/\n    }\n    Prism.languages['sln'] = Prism.languages['solution-file']\n  })(Prism)\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = soy\nsoy.displayName = 'soy'\nsoy.aliases = []\nfunction soy(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    var stringPattern = /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/\n    var numberPattern = /\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b|\\b0x[\\dA-F]+\\b/\n    Prism.languages.soy = {\n      comment: [\n        /\\/\\*[\\s\\S]*?\\*\\//,\n        {\n          pattern: /(\\s)\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'command-arg': {\n        pattern:\n          /(\\{+\\/?\\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\\s+)\\.?[\\w.]+/,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      parameter: {\n        pattern: /(\\{+\\/?\\s*@?param\\??\\s+)\\.?[\\w.]+/,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      keyword: [\n        {\n          pattern:\n            /(\\{+\\/?[^\\S\\r\\n]*)(?:\\\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\\??|rb|sp|switch|template|xid)/,\n          lookbehind: true\n        },\n        /\\b(?:any|as|attributes|bool|css|float|html|in|int|js|list|map|null|number|string|uri)\\b/\n      ],\n      delimiter: {\n        pattern: /^\\{+\\/?|\\/?\\}+$/,\n        alias: 'punctuation'\n      },\n      property: /\\w+(?==)/,\n      variable: {\n        pattern: /\\$[^\\W\\d]\\w*(?:\\??(?:\\.\\w+|\\[[^\\]]+\\]))*/,\n        inside: {\n          string: {\n            pattern: stringPattern,\n            greedy: true\n          },\n          number: numberPattern,\n          punctuation: /[\\[\\].?]/\n        }\n      },\n      string: {\n        pattern: stringPattern,\n        greedy: true\n      },\n      function: [\n        /\\w+(?=\\()/,\n        {\n          pattern: /(\\|[^\\S\\r\\n]*)\\w+/,\n          lookbehind: true\n        }\n      ],\n      boolean: /\\b(?:false|true)\\b/,\n      number: numberPattern,\n      operator: /\\?:?|<=?|>=?|==?|!=|[+*/%-]|\\b(?:and|not|or)\\b/,\n      punctuation: /[{}()\\[\\]|.,:]/\n    } // Tokenize all inline Soy expressions\n    Prism.hooks.add('before-tokenize', function (env) {\n      var soyPattern = /\\{\\{.+?\\}\\}|\\{.+?\\}|\\s\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g\n      var soyLitteralStart = '{literal}'\n      var soyLitteralEnd = '{/literal}'\n      var soyLitteralMode = false\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'soy',\n        soyPattern,\n        function (match) {\n          // Soy tags inside {literal} block are ignored\n          if (match === soyLitteralEnd) {\n            soyLitteralMode = false\n          }\n          if (!soyLitteralMode) {\n            if (match === soyLitteralStart) {\n              soyLitteralMode = true\n            }\n            return true\n          }\n          return false\n        }\n      )\n    }) // Re-insert the tokens after tokenizing\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'soy')\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorTurtle = require('./turtle.js')\nmodule.exports = sparql\nsparql.displayName = 'sparql'\nsparql.aliases = ['rq']\nfunction sparql(Prism) {\n  Prism.register(refractorTurtle)\n  Prism.languages.sparql = Prism.languages.extend('turtle', {\n    boolean: /\\b(?:false|true)\\b/i,\n    variable: {\n      pattern: /[?$]\\w+/,\n      greedy: true\n    }\n  })\n  Prism.languages.insertBefore('sparql', 'punctuation', {\n    keyword: [\n      /\\b(?:A|ADD|ALL|AS|ASC|ASK|BNODE|BY|CLEAR|CONSTRUCT|COPY|CREATE|DATA|DEFAULT|DELETE|DESC|DESCRIBE|DISTINCT|DROP|EXISTS|FILTER|FROM|GROUP|HAVING|INSERT|INTO|LIMIT|LOAD|MINUS|MOVE|NAMED|NOT|NOW|OFFSET|OPTIONAL|ORDER|RAND|REDUCED|SELECT|SEPARATOR|SERVICE|SILENT|STRUUID|UNION|USING|UUID|VALUES|WHERE)\\b/i,\n      /\\b(?:ABS|AVG|BIND|BOUND|CEIL|COALESCE|CONCAT|CONTAINS|COUNT|DATATYPE|DAY|ENCODE_FOR_URI|FLOOR|GROUP_CONCAT|HOURS|IF|IRI|isBLANK|isIRI|isLITERAL|isNUMERIC|isURI|LANG|LANGMATCHES|LCASE|MAX|MD5|MIN|MINUTES|MONTH|REGEX|REPLACE|ROUND|sameTerm|SAMPLE|SECONDS|SHA1|SHA256|SHA384|SHA512|STR|STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|SUBSTR|SUM|TIMEZONE|TZ|UCASE|URI|YEAR)\\b(?=\\s*\\()/i,\n      /\\b(?:BASE|GRAPH|PREFIX)\\b/i\n    ]\n  })\n  Prism.languages.rq = Prism.languages.sparql\n}\n","'use strict'\n\nmodule.exports = splunkSpl\nsplunkSpl.displayName = 'splunkSpl'\nsplunkSpl.aliases = []\nfunction splunkSpl(Prism) {\n  Prism.languages['splunk-spl'] = {\n    comment: /`comment\\(\"(?:\\\\.|[^\\\\\"])*\"\\)`/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n      greedy: true\n    },\n    // https://docs.splunk.com/Documentation/Splunk/7.3.0/SearchReference/ListOfSearchCommands\n    keyword:\n      /\\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\\b/i,\n    'operator-word': {\n      pattern: /\\b(?:and|as|by|not|or|xor)\\b/i,\n      alias: 'operator'\n    },\n    function: /\\b\\w+(?=\\s*\\()/,\n    property: /\\b\\w+(?=\\s*=(?!=))/,\n    date: {\n      // MM/DD/YYYY(:HH:MM:SS)?\n      pattern: /\\b\\d{1,2}\\/\\d{1,2}\\/\\d{1,4}(?:(?::\\d{1,2}){3})?\\b/,\n      alias: 'number'\n    },\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    boolean: /\\b(?:f|false|t|true)\\b/i,\n    operator: /[<>=]=?|[-+*/%|]/,\n    punctuation: /[()[\\],]/\n  }\n}\n","'use strict'\n\nmodule.exports = sqf\nsqf.displayName = 'sqf'\nsqf.aliases = []\nfunction sqf(Prism) {\n  Prism.languages.sqf = Prism.languages.extend('clike', {\n    string: {\n      pattern: /\"(?:(?:\"\")?[^\"])*\"(?!\")|'(?:[^'])*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:breakOut|breakTo|call|case|catch|default|do|echo|else|execFSM|execVM|exitWith|for|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|from|goto|if|nil|preprocessFile|preprocessFileLineNumbers|private|scopeName|spawn|step|switch|then|throw|to|try|while|with)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    function:\n      /\\b(?:abs|accTime|acos|action|actionIDs|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|actionParams|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addForce|addForceGeneratorRTD|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addTorque|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|admin|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityCurveRTD|airDensityRTD|airplaneThrottle|airportSide|AISFinishHeal|alive|all3DENEntities|allAirports|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSimpleObjects|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|ammoOnPylon|animate|animateBay|animateDoor|animatePylon|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|briefingName|buildingExit|buildingPos|buldozer_EnableRoadDiag|buldozer_IsEnabledRoadDiag|buldozer_LoadNewRoads|buldozer_reloadOperMap|buttonAction|buttonSetAction|cadetMode|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canTriggerDynamicSimulation|canUnloadInCombat|canVehicleCargo|captive|captiveNum|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clear3DENAttribute|clear3DENInventory|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearForcesRTD|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearVehicleInit|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|collectiveRTD|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|confirmSensorTarget|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPCampaignDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctAddHeader|ctAddRow|ctClear|ctCurSel|ctData|ctFindHeaderRows|ctFindRowHeader|ctHeaderControls|ctHeaderCount|ctRemoveHeaders|ctRemoveRows|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetDisabledColor|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPixelPrecision|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTextColorSecondary|ctrlSetTextSecondary|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlTextSecondary|ctrlTextWidth|ctrlType|ctrlVisible|ctRowControls|ctRowCount|ctSetCurSel|ctSetData|ctSetHeaderTemplate|ctSetRowTemplate|ctSetValue|ctValue|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteGroupWhenEmpty|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeScripts|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureFrameToFile|diag_captureSlowFrame|diag_codePerformance|diag_drawMode|diag_dynamicSimulationEnd|diag_enable|diag_enabled|diag_fps|diag_fpsMin|diag_frameNo|diag_lightNewLoad|diag_list|diag_log|diag_logSlowFrame|diag_mergeConfigFile|diag_recordTurretLimits|diag_setLightNew|diag_tickTime|diag_toggle|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableMapIndicators|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|drawTriangle|driver|drop|dynamicSimulationDistance|dynamicSimulationDistanceCoef|dynamicSimulationEnabled|dynamicSimulationSystemEnabled|east|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableAutoStartUpRTD|enableAutoTrimRTD|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableDynamicSimulation|enableDynamicSimulationSystem|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableInfoPanelComponent|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableStressDamage|enableTeamSwitch|enableTraffic|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|enableVehicleSensor|enableWeaponDisassembly|endl|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesPowerRTD|enginesRpmRTD|enginesTorqueRTD|entities|environmentEnabled|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|exec|execEditorScript|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findIf|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagAnimationPhase|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|forceAddUniform|forceAtPositionRTD|forcedMap|forceEnd|forceFlagTexture|forceFollowRoad|forceGeneratorRTD|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forgetTarget|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|fromEditor|fuel|fullCrew|gearIDCAmmoCount|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllEnvSoundControllers|getAllHitPointsDamage|getAllOwnedMines|getAllSoundControllers|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getCompatiblePylonMagazines|getConnectedUAV|getContainerMaxLoad|getCursorObjectParams|getCustomAimCoef|getDammage|getDescription|getDir|getDirVisual|getDLCAssetsUsage|getDLCAssetsUsageByName|getDLCs|getDLCUsageTime|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getEngineTargetRpmRTD|getEnvSoundController|getFatigue|getFieldManualStartPage|getForcedFlagTexture|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getMissionLayerEntities|getMissionLayers|getModelInfo|getMousePosition|getMusicPlayedTime|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlateNumber|getPlayerChannel|getPlayerScores|getPlayerUID|getPlayerUIDOld|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getPylonMagazines|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getRotorBrakeRTD|getShadowDistance|getShotParents|getSlingLoad|getSoundController|getSoundControllerResult|getSpeed|getStamina|getStatValue|getSuppression|getTerrainGrid|getTerrainHeightASL|getText|getTotalDLCUsageTime|getTrimOffsetRTD|getUnitLoadout|getUnitTrait|getUserMFDText|getUserMFDValue|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWingsOrientationRTD|getWingsPositionRTD|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|image|importAllGroups|importance|in|inArea|inAreaArray|incapacitatedState|independent|inflame|inflamed|infoPanel|infoPanelComponentEnabled|infoPanelComponents|infoPanels|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isAimPrecisionEnabled|isArray|isAutoHoverOn|isAutonomous|isAutoStartUpEnabledRTD|isAutotest|isAutoTrimOnRTD|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDamageAllowed|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isGroupDeletedWhenEmpty|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLaserOn|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isMultiplayerSolo|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isRemoteExecuted|isRemoteExecutedJIP|isServer|isShowing3DIcons|isSimpleObject|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isStressDamageEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUIContext|isUniformAllowed|isVehicleCargo|isVehicleRadarOn|isVehicleSensorEnabled|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbColorRight|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbPictureRight|lbSelection|lbSetColor|lbSetColorRight|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetPictureRight|lbSetPictureRightColor|lbSetPictureRightColorDisabled|lbSetPictureRightColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetText|lbSetTextRight|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbTextRight|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaderboardRequestRowsFriends|leaderboardRequestRowsGlobal|leaderboardRequestRowsGlobalAroundUser|leaderboardsRequestUploadScore|leaderboardsRequestUploadScoreKeepBest|leaderboardState|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|listRemoteTargets|listVehicleSensors|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbColorRight|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbPictureRight|lnbSetColor|lnbSetColorRight|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetPictureColor|lnbSetPictureColorRight|lnbSetPictureColorSelected|lnbSetPictureColorSelectedRight|lnbSetPictureRight|lnbSetText|lnbSetTextRight|lnbSetValue|lnbSize|lnbSort|lnbSortByValue|lnbText|lnbTextRight|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|menuAction|menuAdd|menuChecked|menuClear|menuCollapse|menuData|menuDelete|menuEnable|menuEnabled|menuExpand|menuHover|menuPicture|menuSetAction|menuSetCheck|menuSetData|menuSetPicture|menuSetValue|menuShortcut|menuShortcutText|menuSize|menuSort|menuText|menuURL|menuValue|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|modelToWorld|modelToWorldVisual|modelToWorldVisualWorld|modelToWorldWorld|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nMenuItems|numberOfEnginesRTD|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGear|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openDSInterface|openMap|openSteamApp|openYoutubeVideo|opfor|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseSimpleArray|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|processDiaryLink|processInitCommands|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remoteExecutedOwner|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponAttachmentCargo|removeWeaponCargo|removeWeaponGlobal|removeWeaponTurret|reportRemoteTarget|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safeZoneH|safeZoneW|safeZoneWAbs|safeZoneX|safeZoneXAbs|safeZoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectMax|selectMin|selectNoPlayer|selectPlayer|selectRandom|selectRandomWeighted|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENLogicType|set3DENMissionAttribute|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setActualCollectiveRTD|setAirplaneThrottle|setAirportSide|setAmmo|setAmmoCargo|setAmmoOnPylon|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setBrakesRTD|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTI|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setConvoySeparation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setCustomWeightRTD|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDriveOnPath|setDropInterval|setDynamicSimulationDistance|setDynamicSimulationDistanceCoef|setEditorMode|setEditorObjectScope|setEffectCondition|setEngineRpmRTD|setFace|setFaceAnimation|setFatigue|setFeatureType|setFlagAnimationPhase|setFlagOwner|setFlagSide|setFlagTexture|setFog|setForceGeneratorRTD|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setInfoPanel|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlateNumber|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setPylonLoadOut|setPylonsPriority|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setRotorBrakeRTD|setShadowDistance|setShotParents|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskMarkerOffset|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setToneMapping|setToneMappingParams|setTrafficDensity|setTrafficDistance|setTrafficGap|setTrafficSpeed|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setUserMFDText|setUserMFDValue|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleInit|setVehicleLock|setVehiclePosition|setVehicleRadar|setVehicleReceiveRemoteTargets|setVehicleReportOwnPosition|setVehicleReportRemoteTargets|setVehicleTIPars|setVehicleVarName|setVelocity|setVelocityModelSpace|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWantedRpmRTD|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWingForceScaleRTD|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targets|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|terrainIntersectAtASL|text|textLog|textLogFormat|tg|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|toArray|toFixed|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerDynamicSimulation|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCollapseAll|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvExpandAll|tvPicture|tvPictureRight|tvSetColor|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetSelectColor|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAIOperMapObstructionTest|useAISteeringComponent|useAudioTimeForMoves|userInputDisabled|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorModelToWorld|vectorModelToWorldVisual|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vectorWorldToModel|vectorWorldToModelVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicleReceiveRemoteTargets|vehicleReportOwnPosition|vehicleReportRemoteTargets|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleScoretable|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponAccessoriesCargo|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|wind|windDir|windRTD|windStr|wingsForcesRTD|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\\b/i,\n    number:\n      /(?:\\$|\\b0x)[\\da-f]+\\b|(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d+)?)(?:e[+-]?\\d+)?\\b/i,\n    operator: /##|>>|&&|\\|\\||[!=<>]=?|[-+*/%#^]|\\b(?:and|mod|not|or)\\b/i,\n    'magic-variable': {\n      pattern:\n        /\\b(?:this|thisList|thisTrigger|_exception|_fnc_scriptName|_fnc_scriptNameParent|_forEachIndex|_this|_thisEventHandler|_thisFSM|_thisScript|_x)\\b/i,\n      alias: 'keyword'\n    },\n    constant: /\\bDIK(?:_[a-z\\d]+)+\\b/i\n  })\n  Prism.languages.insertBefore('sqf', 'string', {\n    macro: {\n      pattern: /(^[ \\t]*)#[a-z](?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property',\n      inside: {\n        directive: {\n          pattern: /#[a-z]+\\b/i,\n          alias: 'keyword'\n        },\n        comment: Prism.languages.sqf.comment\n      }\n    }\n  })\n  delete Prism.languages.sqf['class-name']\n}\n","'use strict'\n\nmodule.exports = sql\nsql.displayName = 'sql'\nsql.aliases = []\nfunction sql(Prism) {\n  Prism.languages.sql = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n      lookbehind: true\n    },\n    variable: [\n      {\n        pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n        greedy: true\n      },\n      /@[\\w.$]+/\n    ],\n    string: {\n      pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n      greedy: true,\n      lookbehind: true\n    },\n    identifier: {\n      pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n      greedy: true,\n      lookbehind: true,\n      inside: {\n        punctuation: /^`|`$/\n      }\n    },\n    function:\n      /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n    // Should we highlight user defined functions too?\n    keyword:\n      /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n    boolean: /\\b(?:FALSE|NULL|TRUE)\\b/i,\n    number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n    operator:\n      /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n    punctuation: /[;[\\]()`,.]/\n  }\n}\n","'use strict'\n\nmodule.exports = squirrel\nsquirrel.displayName = 'squirrel'\nsquirrel.aliases = []\nfunction squirrel(Prism) {\n  Prism.languages.squirrel = Prism.languages.extend('clike', {\n    comment: [\n      Prism.languages.clike['comment'][0],\n      {\n        pattern: /(^|[^\\\\:])(?:\\/\\/|#).*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(^|[^\\\\\"'@])(?:@\"(?:[^\"]|\"\")*\"(?!\")|\"(?:[^\\\\\\r\\n\"]|\\\\.)*\")/,\n      lookbehind: true,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(\\b(?:class|enum|extends|instanceof)\\s+)\\w+(?:\\.\\w+)*/,\n      lookbehind: true,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    keyword:\n      /\\b(?:__FILE__|__LINE__|base|break|case|catch|class|clone|const|constructor|continue|default|delete|else|enum|extends|for|foreach|function|if|in|instanceof|local|null|resume|return|static|switch|this|throw|try|typeof|while|yield)\\b/,\n    number: /\\b(?:0x[0-9a-fA-F]+|\\d+(?:\\.(?:\\d+|[eE][+-]?\\d+))?)\\b/,\n    operator: /\\+\\+|--|<=>|<[-<]|>>>?|&&?|\\|\\|?|[-+*/%!=<>]=?|[~^]|::?/,\n    punctuation: /[(){}\\[\\],;.]/\n  })\n  Prism.languages.insertBefore('squirrel', 'string', {\n    char: {\n      pattern: /(^|[^\\\\\"'])'(?:[^\\\\']|\\\\(?:[xuU][0-9a-fA-F]{0,8}|[\\s\\S]))'/,\n      lookbehind: true,\n      greedy: true\n    }\n  })\n  Prism.languages.insertBefore('squirrel', 'operator', {\n    'attribute-punctuation': {\n      pattern: /<\\/|\\/>/,\n      alias: 'important'\n    },\n    lambda: {\n      pattern: /@(?=\\()/,\n      alias: 'operator'\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = stan\nstan.displayName = 'stan'\nstan.aliases = []\nfunction stan(Prism) {\n  ;(function (Prism) {\n    // https://mc-stan.org/docs/2_28/reference-manual/bnf-grammars.html\n    var higherOrderFunctions =\n      /\\b(?:algebra_solver|algebra_solver_newton|integrate_1d|integrate_ode|integrate_ode_bdf|integrate_ode_rk45|map_rect|ode_(?:adams|bdf|ckrk|rk45)(?:_tol)?|ode_adjoint_tol_ctl|reduce_sum|reduce_sum_static)\\b/\n    Prism.languages.stan = {\n      comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/|#(?!include).*/,\n      string: {\n        // String literals can contain spaces and any printable ASCII characters except for \" and \\\n        // https://mc-stan.org/docs/2_24/reference-manual/print-statements-section.html#string-literals\n        pattern: /\"[\\x20\\x21\\x23-\\x5B\\x5D-\\x7E]*\"/,\n        greedy: true\n      },\n      directive: {\n        pattern: /^([ \\t]*)#include\\b.*/m,\n        lookbehind: true,\n        alias: 'property'\n      },\n      'function-arg': {\n        pattern: RegExp(\n          '(' +\n            higherOrderFunctions.source +\n            /\\s*\\(\\s*/.source +\n            ')' +\n            /[a-zA-Z]\\w*/.source\n        ),\n        lookbehind: true,\n        alias: 'function'\n      },\n      constraint: {\n        pattern: /(\\b(?:int|matrix|real|row_vector|vector)\\s*)<[^<>]*>/,\n        lookbehind: true,\n        inside: {\n          expression: {\n            pattern: /(=\\s*)\\S(?:\\S|\\s+(?!\\s))*?(?=\\s*(?:>$|,\\s*\\w+\\s*=))/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          property: /\\b[a-z]\\w*(?=\\s*=)/i,\n          operator: /=/,\n          punctuation: /^<|>$|,/\n        }\n      },\n      keyword: [\n        {\n          pattern:\n            /\\bdata(?=\\s*\\{)|\\b(?:functions|generated|model|parameters|quantities|transformed)\\b/,\n          alias: 'program-block'\n        },\n        /\\b(?:array|break|cholesky_factor_corr|cholesky_factor_cov|complex|continue|corr_matrix|cov_matrix|data|else|for|if|in|increment_log_prob|int|matrix|ordered|positive_ordered|print|real|reject|return|row_vector|simplex|target|unit_vector|vector|void|while)\\b/, // these are functions that are known to take another function as their first argument.\n        higherOrderFunctions\n      ],\n      function: /\\b[a-z]\\w*(?=\\s*\\()/i,\n      number:\n        /(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:E[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i,\n      boolean: /\\b(?:false|true)\\b/,\n      operator: /<-|\\.[*/]=?|\\|\\|?|&&|[!=<>+\\-*/]=?|['^%~?:]/,\n      punctuation: /[()\\[\\]{},;]/\n    }\n    Prism.languages.stan.constraint.inside.expression.inside =\n      Prism.languages.stan\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = stylus\nstylus.displayName = 'stylus'\nstylus.aliases = []\nfunction stylus(Prism) {\n  ;(function (Prism) {\n    var unit = {\n      pattern: /(\\b\\d+)(?:%|[a-z]+)/,\n      lookbehind: true\n    } // 123 -123 .123 -.123 12.3 -12.3\n    var number = {\n      pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n      lookbehind: true\n    }\n    var inside = {\n      comment: {\n        pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n        lookbehind: true\n      },\n      url: {\n        pattern: /\\burl\\(([\"']?).*?\\1\\)/i,\n        greedy: true\n      },\n      string: {\n        pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n        greedy: true\n      },\n      interpolation: null,\n      // See below\n      func: null,\n      // See below\n      important: /\\B!(?:important|optional)\\b/i,\n      keyword: {\n        pattern: /(^|\\s+)(?:(?:else|for|if|return|unless)(?=\\s|$)|@[\\w-]+)/,\n        lookbehind: true\n      },\n      hexcode: /#[\\da-f]{3,6}/i,\n      color: [\n        /\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i,\n        {\n          pattern:\n            /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n          inside: {\n            unit: unit,\n            number: number,\n            function: /[\\w-]+(?=\\()/,\n            punctuation: /[(),]/\n          }\n        }\n      ],\n      entity: /\\\\[\\da-f]{1,8}/i,\n      unit: unit,\n      boolean: /\\b(?:false|true)\\b/,\n      operator: [\n        // We want non-word chars around \"-\" because it is\n        // accepted in property names.\n        /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.{2,3}|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n      ],\n      number: number,\n      punctuation: /[{}()\\[\\];:,]/\n    }\n    inside['interpolation'] = {\n      pattern: /\\{[^\\r\\n}:]+\\}/,\n      alias: 'variable',\n      inside: {\n        delimiter: {\n          pattern: /^\\{|\\}$/,\n          alias: 'punctuation'\n        },\n        rest: inside\n      }\n    }\n    inside['func'] = {\n      pattern: /[\\w-]+\\([^)]*\\).*/,\n      inside: {\n        function: /^[^(]+/,\n        rest: inside\n      }\n    }\n    Prism.languages.stylus = {\n      'atrule-declaration': {\n        pattern: /(^[ \\t]*)@.+/m,\n        lookbehind: true,\n        inside: {\n          atrule: /^@[\\w-]+/,\n          rest: inside\n        }\n      },\n      'variable-declaration': {\n        pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:\\{[^{}]*\\}|\\S.*|$)/m,\n        lookbehind: true,\n        inside: {\n          variable: /^\\S+/,\n          rest: inside\n        }\n      },\n      statement: {\n        pattern: /(^[ \\t]*)(?:else|for|if|return|unless)[ \\t].+/m,\n        lookbehind: true,\n        inside: {\n          keyword: /^\\S+/,\n          rest: inside\n        }\n      },\n      // A property/value pair cannot end with a comma or a brace\n      // It cannot have indented content unless it ended with a semicolon\n      'property-declaration': {\n        pattern:\n          /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)(?!\\s)[^{\\r\\n]*(?:;|[^{\\r\\n,]$(?!(?:\\r?\\n|\\r)(?:\\{|\\2[ \\t])))/m,\n        lookbehind: true,\n        inside: {\n          property: {\n            pattern: /^[^\\s:]+/,\n            inside: {\n              interpolation: inside.interpolation\n            }\n          },\n          rest: inside\n        }\n      },\n      // A selector can contain parentheses only as part of a pseudo-element\n      // It can span multiple lines.\n      // It must end with a comma or an accolade or have indented content.\n      selector: {\n        pattern:\n          /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t])))/m,\n        lookbehind: true,\n        inside: {\n          interpolation: inside.interpolation,\n          comment: inside.comment,\n          punctuation: /[{},]/\n        }\n      },\n      func: inside.func,\n      string: inside.string,\n      comment: {\n        pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n        lookbehind: true,\n        greedy: true\n      },\n      interpolation: inside.interpolation,\n      punctuation: /[{}()\\[\\];:.]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = swift\nswift.displayName = 'swift'\nswift.aliases = []\nfunction swift(Prism) {\n  Prism.languages.swift = {\n    comment: {\n      // Nested comments are supported up to 2 levels\n      pattern:\n        /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/,\n      lookbehind: true,\n      greedy: true\n    },\n    'string-literal': [\n      // https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html\n      {\n        pattern: RegExp(\n          /(^|[^\"#])/.source +\n            '(?:' + // single-line string\n            /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/\n              .source +\n            '|' + // multi-line string\n            /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/\n              .source +\n            ')' +\n            /(?![\"#])/.source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          'interpolation-punctuation': {\n            pattern: /^\\)|\\\\\\($/,\n            alias: 'punctuation'\n          },\n          punctuation: /\\\\(?=[\\r\\n])/,\n          string: /[\\s\\S]+/\n        }\n      },\n      {\n        pattern: RegExp(\n          /(^|[^\"#])(#+)/.source +\n            '(?:' + // single-line string\n            /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/\n              .source +\n            '|' + // multi-line string\n            /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source +\n            ')' +\n            '\\\\2'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          'interpolation-punctuation': {\n            pattern: /^\\)|\\\\#+\\($/,\n            alias: 'punctuation'\n          },\n          string: /[\\s\\S]+/\n        }\n      }\n    ],\n    directive: {\n      // directives with conditions\n      pattern: RegExp(\n        /#/.source +\n          '(?:' +\n          (/(?:elseif|if)\\b/.source +\n            '(?:[ \\t]*' + // This regex is a little complex. It's equivalent to this:\n            //   (?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*<round>)?|<round>)(?:[ \\t]*(?:&&|\\|\\|))?\n            // where <round> is a general parentheses expression.\n            /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/\n              .source +\n            ')+') +\n          '|' +\n          /(?:else|endif)\\b/.source +\n          ')'\n      ),\n      alias: 'property',\n      inside: {\n        'directive-name': /^#\\w+/,\n        boolean: /\\b(?:false|true)\\b/,\n        number: /\\b\\d+(?:\\.\\d+)*\\b/,\n        operator: /!|&&|\\|\\||[<>]=?/,\n        punctuation: /[(),]/\n      }\n    },\n    literal: {\n      pattern:\n        /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/,\n      alias: 'constant'\n    },\n    'other-directive': {\n      pattern: /#\\w+\\b/,\n      alias: 'property'\n    },\n    attribute: {\n      pattern: /@\\w+/,\n      alias: 'atrule'\n    },\n    'function-definition': {\n      pattern: /(\\bfunc\\s+)\\w+/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    label: {\n      // https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID141\n      pattern:\n        /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/,\n      lookbehind: true,\n      alias: 'important'\n    },\n    keyword:\n      /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    nil: {\n      pattern: /\\bnil\\b/,\n      alias: 'constant'\n    },\n    'short-argument': /\\$\\d+\\b/,\n    omit: {\n      pattern: /\\b_\\b/,\n      alias: 'keyword'\n    },\n    number:\n      /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n    // A class name must start with an upper-case letter and be either 1 letter long or contain a lower-case letter.\n    'class-name': /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    constant: /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n    // Operators are generic in Swift. Developers can even create new operators (e.g. +++).\n    // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html#ID481\n    // This regex only supports ASCII operators.\n    operator: /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/,\n    punctuation: /[{}[\\]();,.:\\\\]/\n  }\n  Prism.languages.swift['string-literal'].forEach(function (rule) {\n    rule.inside['interpolation'].inside = Prism.languages.swift\n  })\n}\n","'use strict'\n\nmodule.exports = systemd\nsystemd.displayName = 'systemd'\nsystemd.aliases = []\nfunction systemd(Prism) {\n  // https://www.freedesktop.org/software/systemd/man/systemd.syntax.html\n  ;(function (Prism) {\n    var comment = {\n      pattern: /^[;#].*/m,\n      greedy: true\n    }\n    var quotesSource = /\"(?:[^\\r\\n\"\\\\]|\\\\(?:[^\\r]|\\r\\n?))*\"(?!\\S)/.source\n    Prism.languages.systemd = {\n      comment: comment,\n      section: {\n        pattern: /^\\[[^\\n\\r\\[\\]]*\\](?=[ \\t]*$)/m,\n        greedy: true,\n        inside: {\n          punctuation: /^\\[|\\]$/,\n          'section-name': {\n            pattern: /[\\s\\S]+/,\n            alias: 'selector'\n          }\n        }\n      },\n      key: {\n        pattern: /^[^\\s=]+(?=[ \\t]*=)/m,\n        greedy: true,\n        alias: 'attr-name'\n      },\n      value: {\n        // This pattern is quite complex because of two properties:\n        //  1) Quotes (strings) must be preceded by a space. Since we can't use lookbehinds, we have to \"resolve\"\n        //     the lookbehind. You will see this in the main loop where spaces are handled separately.\n        //  2) Line continuations.\n        //     After line continuations, empty lines and comments are ignored so we have to consume them.\n        pattern: RegExp(\n          /(=[ \\t]*(?!\\s))/.source + // the value either starts with quotes or not\n            '(?:' +\n            quotesSource +\n            '|(?=[^\"\\r\\n]))' + // main loop\n            '(?:' +\n            (/[^\\s\\\\]/.source + // handle spaces separately because of quotes\n              '|' +\n              '[ \\t]+(?:(?![ \\t\"])|' +\n              quotesSource +\n              ')' + // line continuation\n              '|' +\n              /\\\\[\\r\\n]+(?:[#;].*[\\r\\n]+)*(?![#;])/.source) +\n            ')*'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'attr-value',\n        inside: {\n          comment: comment,\n          quoted: {\n            pattern: RegExp(/(^|\\s)/.source + quotesSource),\n            lookbehind: true,\n            greedy: true\n          },\n          punctuation: /\\\\$/m,\n          boolean: {\n            pattern: /^(?:false|no|off|on|true|yes)$/,\n            greedy: true\n          }\n        }\n      },\n      punctuation: /=/\n    }\n  })(Prism)\n}\n","'use strict'\nvar refractorT4Templating = require('./t4-templating.js')\nvar refractorCsharp = require('./csharp.js')\nmodule.exports = t4Cs\nt4Cs.displayName = 't4Cs'\nt4Cs.aliases = []\nfunction t4Cs(Prism) {\n  Prism.register(refractorT4Templating)\n  Prism.register(refractorCsharp)\n  Prism.languages.t4 = Prism.languages['t4-cs'] =\n    Prism.languages['t4-templating'].createT4('csharp')\n}\n","'use strict'\n\nmodule.exports = t4Templating\nt4Templating.displayName = 't4Templating'\nt4Templating.aliases = []\nfunction t4Templating(Prism) {\n  ;(function (Prism) {\n    function createBlock(prefix, inside, contentAlias) {\n      return {\n        pattern: RegExp('<#' + prefix + '[\\\\s\\\\S]*?#>'),\n        alias: 'block',\n        inside: {\n          delimiter: {\n            pattern: RegExp('^<#' + prefix + '|#>$'),\n            alias: 'important'\n          },\n          content: {\n            pattern: /[\\s\\S]+/,\n            inside: inside,\n            alias: contentAlias\n          }\n        }\n      }\n    }\n    function createT4(insideLang) {\n      var grammar = Prism.languages[insideLang]\n      var className = 'language-' + insideLang\n      return {\n        block: {\n          pattern: /<#[\\s\\S]+?#>/,\n          inside: {\n            directive: createBlock('@', {\n              'attr-value': {\n                pattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/,\n                inside: {\n                  punctuation: /^=|^[\"']|[\"']$/\n                }\n              },\n              keyword: /\\b\\w+(?=\\s)/,\n              'attr-name': /\\b\\w+/\n            }),\n            expression: createBlock('=', grammar, className),\n            'class-feature': createBlock('\\\\+', grammar, className),\n            standard: createBlock('', grammar, className)\n          }\n        }\n      }\n    }\n    Prism.languages['t4-templating'] = Object.defineProperty({}, 'createT4', {\n      value: createT4\n    })\n  })(Prism)\n}\n","'use strict'\nvar refractorT4Templating = require('./t4-templating.js')\nvar refractorVbnet = require('./vbnet.js')\nmodule.exports = t4Vb\nt4Vb.displayName = 't4Vb'\nt4Vb.aliases = []\nfunction t4Vb(Prism) {\n  Prism.register(refractorT4Templating)\n  Prism.register(refractorVbnet)\n  Prism.languages['t4-vb'] = Prism.languages['t4-templating'].createT4('vbnet')\n}\n","'use strict'\nvar refractorYaml = require('./yaml.js')\nmodule.exports = tap\ntap.displayName = 'tap'\ntap.aliases = []\nfunction tap(Prism) {\n  Prism.register(refractorYaml)\n  // https://en.wikipedia.org/wiki/Test_Anything_Protocol\n  Prism.languages.tap = {\n    fail: /not ok[^#{\\n\\r]*/,\n    pass: /ok[^#{\\n\\r]*/,\n    pragma: /pragma [+-][a-z]+/,\n    bailout: /bail out!.*/i,\n    version: /TAP version \\d+/i,\n    plan: /\\b\\d+\\.\\.\\d+(?: +#.*)?/,\n    subtest: {\n      pattern: /# Subtest(?:: .*)?/,\n      greedy: true\n    },\n    punctuation: /[{}]/,\n    directive: /#.*/,\n    yamlish: {\n      pattern: /(^[ \\t]*)---[\\s\\S]*?[\\r\\n][ \\t]*\\.\\.\\.$/m,\n      lookbehind: true,\n      inside: Prism.languages.yaml,\n      alias: 'language-yaml'\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = tcl\ntcl.displayName = 'tcl'\ntcl.aliases = []\nfunction tcl(Prism) {\n  Prism.languages.tcl = {\n    comment: {\n      pattern: /(^|[^\\\\])#.*/,\n      lookbehind: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"/,\n      greedy: true\n    },\n    variable: [\n      {\n        pattern: /(\\$)(?:::)?(?:[a-zA-Z0-9]+::)*\\w+/,\n        lookbehind: true\n      },\n      {\n        pattern: /(\\$)\\{[^}]+\\}/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^[\\t ]*set[ \\t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\\w+/m,\n        lookbehind: true\n      }\n    ],\n    function: {\n      pattern: /(^[\\t ]*proc[ \\t]+)\\S+/m,\n      lookbehind: true\n    },\n    builtin: [\n      {\n        pattern:\n          /(^[\\t ]*)(?:break|class|continue|error|eval|exit|for|foreach|if|proc|return|switch|while)\\b/m,\n        lookbehind: true\n      },\n      /\\b(?:else|elseif)\\b/\n    ],\n    scope: {\n      pattern: /(^[\\t ]*)(?:global|upvar|variable)\\b/m,\n      lookbehind: true,\n      alias: 'constant'\n    },\n    keyword: {\n      pattern:\n        /(^[\\t ]*|\\[)(?:Safe_Base|Tcl|after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|scan|seek|set|socket|source|split|string|subst|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|test|vars|wordBreak(?:After|Before))|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\\b/m,\n      lookbehind: true\n    },\n    operator:\n      /!=?|\\*\\*?|==|&&?|\\|\\|?|<[=<]?|>[=>]?|[-+~\\/%?^]|\\b(?:eq|in|ne|ni)\\b/,\n    punctuation: /[{}()\\[\\]]/\n  }\n}\n","'use strict'\n\nmodule.exports = textile\ntextile.displayName = 'textile'\ntextile.aliases = []\nfunction textile(Prism) {\n  ;(function (Prism) {\n    // We don't allow for pipes inside parentheses\n    // to not break table pattern |(. foo |). bar |\n    var modifierRegex = /\\([^|()\\n]+\\)|\\[[^\\]\\n]+\\]|\\{[^}\\n]+\\}/.source // Opening and closing parentheses which are not a modifier\n    // This pattern is necessary to prevent exponential backtracking\n    var parenthesesRegex = /\\)|\\((?![^|()\\n]+\\))/.source\n    /**\n     * @param {string} source\n     * @param {string} [flags]\n     */\n    function withModifier(source, flags) {\n      return RegExp(\n        source\n          .replace(/<MOD>/g, function () {\n            return '(?:' + modifierRegex + ')'\n          })\n          .replace(/<PAR>/g, function () {\n            return '(?:' + parenthesesRegex + ')'\n          }),\n        flags || ''\n      )\n    }\n    var modifierTokens = {\n      css: {\n        pattern: /\\{[^{}]+\\}/,\n        inside: {\n          rest: Prism.languages.css\n        }\n      },\n      'class-id': {\n        pattern: /(\\()[^()]+(?=\\))/,\n        lookbehind: true,\n        alias: 'attr-value'\n      },\n      lang: {\n        pattern: /(\\[)[^\\[\\]]+(?=\\])/,\n        lookbehind: true,\n        alias: 'attr-value'\n      },\n      // Anything else is punctuation (the first pattern is for row/col spans inside tables)\n      punctuation: /[\\\\\\/]\\d+|\\S/\n    }\n    var textile = (Prism.languages.textile = Prism.languages.extend('markup', {\n      phrase: {\n        pattern: /(^|\\r|\\n)\\S[\\s\\S]*?(?=$|\\r?\\n\\r?\\n|\\r\\r)/,\n        lookbehind: true,\n        inside: {\n          // h1. Header 1\n          'block-tag': {\n            pattern: withModifier(/^[a-z]\\w*(?:<MOD>|<PAR>|[<>=])*\\./.source),\n            inside: {\n              modifier: {\n                pattern: withModifier(\n                  /(^[a-z]\\w*)(?:<MOD>|<PAR>|[<>=])+(?=\\.)/.source\n                ),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              tag: /^[a-z]\\w*/,\n              punctuation: /\\.$/\n            }\n          },\n          // # List item\n          // * List item\n          list: {\n            pattern: withModifier(/^[*#]+<MOD>*\\s+\\S.*/.source, 'm'),\n            inside: {\n              modifier: {\n                pattern: withModifier(/(^[*#]+)<MOD>+/.source),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              punctuation: /^[*#]+/\n            }\n          },\n          // | cell | cell | cell |\n          table: {\n            // Modifiers can be applied to the row: {color:red}.|1|2|3|\n            // or the cell: |{color:red}.1|2|3|\n            pattern: withModifier(\n              /^(?:(?:<MOD>|<PAR>|[<>=^~])+\\.\\s*)?(?:\\|(?:(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|/\n                .source,\n              'm'\n            ),\n            inside: {\n              modifier: {\n                // Modifiers for rows after the first one are\n                // preceded by a pipe and a line feed\n                pattern: withModifier(\n                  /(^|\\|(?:\\r?\\n|\\r)?)(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+(?=\\.)/\n                    .source\n                ),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              punctuation: /\\||^\\./\n            }\n          },\n          inline: {\n            // eslint-disable-next-line regexp/no-super-linear-backtracking\n            pattern: withModifier(\n              /(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>*.+?\\2(?![a-zA-Z\\d])/\n                .source\n            ),\n            lookbehind: true,\n            inside: {\n              // Note: superscripts and subscripts are not handled specifically\n              // *bold*, **bold**\n              bold: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^(\\*\\*?)<MOD>*).+?(?=\\2)/.source),\n                lookbehind: true\n              },\n              // _italic_, __italic__\n              italic: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^(__?)<MOD>*).+?(?=\\2)/.source),\n                lookbehind: true\n              },\n              // ??cite??\n              cite: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^\\?\\?<MOD>*).+?(?=\\?\\?)/.source),\n                lookbehind: true,\n                alias: 'string'\n              },\n              // @code@\n              code: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^@<MOD>*).+?(?=@)/.source),\n                lookbehind: true,\n                alias: 'keyword'\n              },\n              // +inserted+\n              inserted: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^\\+<MOD>*).+?(?=\\+)/.source),\n                lookbehind: true\n              },\n              // -deleted-\n              deleted: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^-<MOD>*).+?(?=-)/.source),\n                lookbehind: true\n              },\n              // %span%\n              span: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^%<MOD>*).+?(?=%)/.source),\n                lookbehind: true\n              },\n              modifier: {\n                pattern: withModifier(\n                  /(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>+/.source\n                ),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              punctuation: /[*_%?@+\\-^~]+/\n            }\n          },\n          // [alias]http://example.com\n          'link-ref': {\n            pattern: /^\\[[^\\]]+\\]\\S+$/m,\n            inside: {\n              string: {\n                pattern: /(^\\[)[^\\]]+(?=\\])/,\n                lookbehind: true\n              },\n              url: {\n                pattern: /(^\\])\\S+$/,\n                lookbehind: true\n              },\n              punctuation: /[\\[\\]]/\n            }\n          },\n          // \"text\":http://example.com\n          // \"text\":link-ref\n          link: {\n            // eslint-disable-next-line regexp/no-super-linear-backtracking\n            pattern: withModifier(\n              /\"<MOD>*[^\"]+\":.+?(?=[^\\w/]?(?:\\s|$))/.source\n            ),\n            inside: {\n              text: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^\"<MOD>*)[^\"]+(?=\")/.source),\n                lookbehind: true\n              },\n              modifier: {\n                pattern: withModifier(/(^\")<MOD>+/.source),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              url: {\n                pattern: /(:).+/,\n                lookbehind: true\n              },\n              punctuation: /[\":]/\n            }\n          },\n          // !image.jpg!\n          // !image.jpg(Title)!:http://example.com\n          image: {\n            pattern: withModifier(\n              /!(?:<MOD>|<PAR>|[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?/\n                .source\n            ),\n            inside: {\n              source: {\n                pattern: withModifier(\n                  /(^!(?:<MOD>|<PAR>|[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)/\n                    .source\n                ),\n                lookbehind: true,\n                alias: 'url'\n              },\n              modifier: {\n                pattern: withModifier(/(^!)(?:<MOD>|<PAR>|[<>=])+/.source),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              url: {\n                pattern: /(:).+/,\n                lookbehind: true\n              },\n              punctuation: /[!:]/\n            }\n          },\n          // Footnote[1]\n          footnote: {\n            pattern: /\\b\\[\\d+\\]/,\n            alias: 'comment',\n            inside: {\n              punctuation: /\\[|\\]/\n            }\n          },\n          // CSS(Cascading Style Sheet)\n          acronym: {\n            pattern: /\\b[A-Z\\d]+\\([^)]+\\)/,\n            inside: {\n              comment: {\n                pattern: /(\\()[^()]+(?=\\))/,\n                lookbehind: true\n              },\n              punctuation: /[()]/\n            }\n          },\n          // Prism(C)\n          mark: {\n            pattern: /\\b\\((?:C|R|TM)\\)/,\n            alias: 'comment',\n            inside: {\n              punctuation: /[()]/\n            }\n          }\n        }\n      }\n    }))\n    var phraseInside = textile['phrase'].inside\n    var nestedPatterns = {\n      inline: phraseInside['inline'],\n      link: phraseInside['link'],\n      image: phraseInside['image'],\n      footnote: phraseInside['footnote'],\n      acronym: phraseInside['acronym'],\n      mark: phraseInside['mark']\n    } // Only allow alpha-numeric HTML tags, not XML tags\n    textile.tag.pattern =\n      /<\\/?(?!\\d)[a-z0-9]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i // Allow some nesting\n    var phraseInlineInside = phraseInside['inline'].inside\n    phraseInlineInside['bold'].inside = nestedPatterns\n    phraseInlineInside['italic'].inside = nestedPatterns\n    phraseInlineInside['inserted'].inside = nestedPatterns\n    phraseInlineInside['deleted'].inside = nestedPatterns\n    phraseInlineInside['span'].inside = nestedPatterns // Allow some styles inside table cells\n    var phraseTableInside = phraseInside['table'].inside\n    phraseTableInside['inline'] = nestedPatterns['inline']\n    phraseTableInside['link'] = nestedPatterns['link']\n    phraseTableInside['image'] = nestedPatterns['image']\n    phraseTableInside['footnote'] = nestedPatterns['footnote']\n    phraseTableInside['acronym'] = nestedPatterns['acronym']\n    phraseTableInside['mark'] = nestedPatterns['mark']\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = toml\ntoml.displayName = 'toml'\ntoml.aliases = []\nfunction toml(Prism) {\n  ;(function (Prism) {\n    var key = /(?:[\\w-]+|'[^'\\n\\r]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")/.source\n    /**\n     * @param {string} pattern\n     */\n    function insertKey(pattern) {\n      return pattern.replace(/__/g, function () {\n        return key\n      })\n    }\n    Prism.languages.toml = {\n      comment: {\n        pattern: /#.*/,\n        greedy: true\n      },\n      table: {\n        pattern: RegExp(\n          insertKey(\n            /(^[\\t ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])/.source\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'class-name'\n      },\n      key: {\n        pattern: RegExp(\n          insertKey(/(^[\\t ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)/.source),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'property'\n      },\n      string: {\n        pattern:\n          /\"\"\"(?:\\\\[\\s\\S]|[^\\\\])*?\"\"\"|'''[\\s\\S]*?'''|'[^'\\n\\r]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n        greedy: true\n      },\n      date: [\n        {\n          // Offset Date-Time, Local Date-Time, Local Date\n          pattern:\n            /\\b\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?)?\\b/i,\n          alias: 'number'\n        },\n        {\n          // Local Time\n          pattern: /\\b\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?\\b/,\n          alias: 'number'\n        }\n      ],\n      number:\n        /(?:\\b0(?:x[\\da-zA-Z]+(?:_[\\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\\b|[-+]?\\b\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?\\b|[-+]?\\b(?:inf|nan)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      punctuation: /[.,=[\\]{}]/\n    }\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = tremor\ntremor.displayName = 'tremor'\ntremor.aliases = []\nfunction tremor(Prism) {\n  ;(function (Prism) {\n    Prism.languages.tremor = {\n      comment: {\n        pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n        lookbehind: true\n      },\n      'interpolated-string': null,\n      // see below\n      extractor: {\n        pattern: /\\b[a-z_]\\w*\\|(?:[^\\r\\n\\\\|]|\\\\(?:\\r\\n|[\\s\\S]))*\\|/i,\n        greedy: true,\n        inside: {\n          regex: {\n            pattern: /(^re)\\|[\\s\\S]+/,\n            lookbehind: true\n          },\n          function: /^\\w+/,\n          value: /\\|[\\s\\S]+/\n        }\n      },\n      identifier: {\n        pattern: /`[^`]*`/,\n        greedy: true\n      },\n      function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())\\b/,\n      keyword:\n        /\\b(?:args|as|by|case|config|connect|connector|const|copy|create|default|define|deploy|drop|each|emit|end|erase|event|flow|fn|for|from|group|having|insert|into|intrinsic|let|links|match|merge|mod|move|of|operator|patch|pipeline|recur|script|select|set|sliding|state|stream|to|tumbling|update|use|when|where|window|with)\\b/,\n      boolean: /\\b(?:false|null|true)\\b/i,\n      number:\n        /\\b(?:0b[01_]*|0x[0-9a-fA-F_]*|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[Ee][+-]?[\\d_]+)?)\\b/,\n      'pattern-punctuation': {\n        pattern: /%(?=[({[])/,\n        alias: 'punctuation'\n      },\n      operator:\n        /[-+*\\/%~!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?>?=?|(?:absent|and|not|or|present|xor)\\b/,\n      punctuation: /::|[;\\[\\]()\\{\\},.:]/\n    }\n    var interpolationPattern =\n      /#\\{(?:[^\"{}]|\\{[^{}]*\\}|\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\")*\\}/.source\n    Prism.languages.tremor['interpolated-string'] = {\n      pattern: RegExp(\n        /(^|[^\\\\])/.source +\n          '(?:' +\n          '\"\"\"(?:' +\n          /[^\"\\\\#]|\\\\[\\s\\S]|\"(?!\"\")|#(?!\\{)/.source +\n          '|' +\n          interpolationPattern +\n          ')*\"\"\"' +\n          '|' +\n          '\"(?:' +\n          /[^\"\\\\\\r\\n#]|\\\\(?:\\r\\n|[\\s\\S])|#(?!\\{)/.source +\n          '|' +\n          interpolationPattern +\n          ')*\"' +\n          ')'\n      ),\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: RegExp(interpolationPattern),\n          inside: {\n            punctuation: /^#\\{|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: Prism.languages.tremor\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n    Prism.languages.troy = Prism.languages['tremor']\n    Prism.languages.trickle = Prism.languages['tremor']\n  })(Prism)\n}\n","'use strict'\nvar refractorJsx = require('./jsx.js')\nvar refractorTypescript = require('./typescript.js')\nmodule.exports = tsx\ntsx.displayName = 'tsx'\ntsx.aliases = []\nfunction tsx(Prism) {\n  Prism.register(refractorJsx)\n  Prism.register(refractorTypescript)\n  ;(function (Prism) {\n    var typescript = Prism.util.clone(Prism.languages.typescript)\n    Prism.languages.tsx = Prism.languages.extend('jsx', typescript) // doesn't work with TS because TS is too complex\n    delete Prism.languages.tsx['parameter']\n    delete Prism.languages.tsx['literal-property'] // This will prevent collisions between TSX tags and TS generic types.\n    // Idea by https://github.com/karlhorky\n    // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n    var tag = Prism.languages.tsx.tag\n    tag.pattern = RegExp(\n      /(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')',\n      tag.pattern.flags\n    )\n    tag.lookbehind = true\n  })(Prism)\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = tt2\ntt2.displayName = 'tt2'\ntt2.aliases = []\nfunction tt2(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.tt2 = Prism.languages.extend('clike', {\n      comment: /#.*|\\[%#[\\s\\S]*?%\\]/,\n      keyword:\n        /\\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|SWITCH|TAGS|THROW|TRY|UNLESS|USE|WHILE|WRAPPER)\\b/,\n      punctuation: /[[\\]{},()]/\n    })\n    Prism.languages.insertBefore('tt2', 'number', {\n      operator: /=[>=]?|!=?|<=?|>=?|&&|\\|\\|?|\\b(?:and|not|or)\\b/,\n      variable: {\n        pattern: /\\b[a-z]\\w*(?:\\s*\\.\\s*(?:\\d+|\\$?[a-z]\\w*))*\\b/i\n      }\n    })\n    Prism.languages.insertBefore('tt2', 'keyword', {\n      delimiter: {\n        pattern: /^(?:\\[%|%%)-?|-?%\\]$/,\n        alias: 'punctuation'\n      }\n    })\n    Prism.languages.insertBefore('tt2', 'string', {\n      'single-quoted-string': {\n        pattern: /'[^\\\\']*(?:\\\\[\\s\\S][^\\\\']*)*'/,\n        greedy: true,\n        alias: 'string'\n      },\n      'double-quoted-string': {\n        pattern: /\"[^\\\\\"]*(?:\\\\[\\s\\S][^\\\\\"]*)*\"/,\n        greedy: true,\n        alias: 'string',\n        inside: {\n          variable: {\n            pattern: /\\$(?:[a-z]\\w*(?:\\.(?:\\d+|\\$?[a-z]\\w*))*)/i\n          }\n        }\n      }\n    }) // The different types of TT2 strings \"replace\" the C-like standard string\n    delete Prism.languages.tt2.string\n    Prism.hooks.add('before-tokenize', function (env) {\n      var tt2Pattern = /\\[%[\\s\\S]+?%\\]/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'tt2',\n        tt2Pattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'tt2')\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = turtle\nturtle.displayName = 'turtle'\nturtle.aliases = []\nfunction turtle(Prism) {\n  Prism.languages.turtle = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    'multiline-string': {\n      pattern:\n        /\"\"\"(?:(?:\"\"?)?(?:[^\"\\\\]|\\\\.))*\"\"\"|'''(?:(?:''?)?(?:[^'\\\\]|\\\\.))*'''/,\n      greedy: true,\n      alias: 'string',\n      inside: {\n        comment: /#.*/\n      }\n    },\n    string: {\n      pattern: /\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*'/,\n      greedy: true\n    },\n    url: {\n      pattern:\n        /<(?:[^\\x00-\\x20<>\"{}|^`\\\\]|\\\\(?:u[\\da-fA-F]{4}|U[\\da-fA-F]{8}))*>/,\n      greedy: true,\n      inside: {\n        punctuation: /[<>]/\n      }\n    },\n    function: {\n      pattern:\n        /(?:(?![-.\\d\\xB7])[-.\\w\\xB7\\xC0-\\uFFFD]+)?:(?:(?![-.])(?:[-.:\\w\\xC0-\\uFFFD]|%[\\da-f]{2}|\\\\.)+)?/i,\n      inside: {\n        'local-name': {\n          pattern: /([^:]*:)[\\s\\S]+/,\n          lookbehind: true\n        },\n        prefix: {\n          pattern: /[\\s\\S]+/,\n          inside: {\n            punctuation: /:/\n          }\n        }\n      }\n    },\n    number: /[+-]?\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n    punctuation: /[{}.,;()[\\]]|\\^\\^/,\n    boolean: /\\b(?:false|true)\\b/,\n    keyword: [/(?:\\ba|@prefix|@base)\\b|=/, /\\b(?:base|graph|prefix)\\b/i],\n    tag: {\n      pattern: /@[a-z]+(?:-[a-z\\d]+)*/i,\n      inside: {\n        punctuation: /@/\n      }\n    }\n  }\n  Prism.languages.trig = Prism.languages['turtle']\n}\n","'use strict'\nvar refractorMarkupTemplating = require('./markup-templating.js')\nmodule.exports = twig\ntwig.displayName = 'twig'\ntwig.aliases = []\nfunction twig(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  Prism.languages.twig = {\n    comment: /^\\{#[\\s\\S]*?#\\}$/,\n    'tag-name': {\n      pattern: /(^\\{%-?\\s*)\\w+/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    delimiter: {\n      pattern: /^\\{[{%]-?|-?[%}]\\}$/,\n      alias: 'punctuation'\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      inside: {\n        punctuation: /^['\"]|['\"]$/\n      }\n    },\n    keyword: /\\b(?:even|if|odd)\\b/,\n    boolean: /\\b(?:false|null|true)\\b/,\n    number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n    operator: [\n      {\n        pattern:\n          /(\\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\\s)/,\n        lookbehind: true\n      },\n      /[=<>]=?|!=|\\*\\*?|\\/\\/?|\\?:?|[-+~%|]/\n    ],\n    punctuation: /[()\\[\\]{}:.,]/\n  }\n  Prism.hooks.add('before-tokenize', function (env) {\n    if (env.language !== 'twig') {\n      return\n    }\n    var pattern = /\\{(?:#[\\s\\S]*?#|%[\\s\\S]*?%|\\{[\\s\\S]*?\\})\\}/g\n    Prism.languages['markup-templating'].buildPlaceholders(env, 'twig', pattern)\n  })\n  Prism.hooks.add('after-tokenize', function (env) {\n    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'twig')\n  })\n}\n","'use strict'\n\nmodule.exports = typescript\ntypescript.displayName = 'typescript'\ntypescript.aliases = ['ts']\nfunction typescript(Prism) {\n  ;(function (Prism) {\n    Prism.languages.typescript = Prism.languages.extend('javascript', {\n      'class-name': {\n        pattern:\n          /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n        lookbehind: true,\n        greedy: true,\n        inside: null // see below\n      },\n      builtin:\n        /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/\n    }) // The keywords TypeScript adds to JavaScript\n    Prism.languages.typescript.keyword.push(\n      /\\b(?:abstract|declare|is|keyof|readonly|require)\\b/, // keywords that have to be followed by an identifier\n      /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/, // This is for `import type *, {}`\n      /\\btype\\b(?=\\s*(?:[\\{*]|$))/\n    ) // doesn't work with TS because TS is too complex\n    delete Prism.languages.typescript['parameter']\n    delete Prism.languages.typescript['literal-property'] // a version of typescript specifically for highlighting types\n    var typeInside = Prism.languages.extend('typescript', {})\n    delete typeInside['class-name']\n    Prism.languages.typescript['class-name'].inside = typeInside\n    Prism.languages.insertBefore('typescript', 'function', {\n      decorator: {\n        pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n        inside: {\n          at: {\n            pattern: /^@/,\n            alias: 'operator'\n          },\n          function: /^[\\s\\S]+/\n        }\n      },\n      'generic-function': {\n        // e.g. foo<T extends \"bar\" | \"baz\">( ...\n        pattern:\n          /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n        greedy: true,\n        inside: {\n          function: /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n          generic: {\n            pattern: /<[\\s\\S]+/,\n            // everything after the first <\n            alias: 'class-name',\n            inside: typeInside\n          }\n        }\n      }\n    })\n    Prism.languages.ts = Prism.languages.typescript\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = typoscript\ntyposcript.displayName = 'typoscript'\ntyposcript.aliases = ['tsconfig']\nfunction typoscript(Prism) {\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\\b/\n    Prism.languages.typoscript = {\n      comment: [\n        {\n          // multiline comments /* */\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true\n        },\n        {\n          // double-slash comments - ignored when backslashes or colon is found in front\n          // also ignored whenever directly after an equal-sign, because it would probably be an url without protocol\n          pattern: /(^|[^\\\\:= \\t]|(?:^|[^= \\t])[ \\t]+)\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // hash comments - ignored when leading quote is found for hex colors in strings\n          pattern: /(^|[^\"'])#.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      function: [\n        {\n          // old include style\n          pattern:\n            /<INCLUDE_TYPOSCRIPT:\\s*source\\s*=\\s*(?:\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')\\s*>/,\n          inside: {\n            string: {\n              pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n              inside: {\n                keyword: keywords\n              }\n            },\n            keyword: {\n              pattern: /INCLUDE_TYPOSCRIPT/\n            }\n          }\n        },\n        {\n          // new include style\n          pattern: /@import\\s*(?:\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')/,\n          inside: {\n            string: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/\n          }\n        }\n      ],\n      string: {\n        pattern: /^([^=]*=[< ]?)(?:(?!\\]\\n).)*/,\n        lookbehind: true,\n        inside: {\n          function: /\\{\\$.*\\}/,\n          // constants include\n          keyword: keywords,\n          number: /^\\d+$/,\n          punctuation: /[,|:]/\n        }\n      },\n      keyword: keywords,\n      number: {\n        // special highlighting for indexes of arrays in tags\n        pattern: /\\b\\d+\\s*[.{=]/,\n        inside: {\n          operator: /[.{=]/\n        }\n      },\n      tag: {\n        pattern: /\\.?[-\\w\\\\]+\\.?/,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      punctuation: /[{}[\\];(),.:|]/,\n      operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/\n    }\n    Prism.languages.tsconfig = Prism.languages.typoscript\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = unrealscript\nunrealscript.displayName = 'unrealscript'\nunrealscript.aliases = ['uc', 'uscript']\nfunction unrealscript(Prism) {\n  Prism.languages.unrealscript = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    category: {\n      pattern:\n        /(\\b(?:(?:autoexpand|hide|show)categories|var)\\s*\\()[^()]+(?=\\))/,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    metadata: {\n      pattern: /(\\w\\s*)<\\s*\\w+\\s*=[^<>|=\\r\\n]+(?:\\|\\s*\\w+\\s*=[^<>|=\\r\\n]+)*>/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        property: /\\b\\w+(?=\\s*=)/,\n        operator: /=/,\n        punctuation: /[<>|]/\n      }\n    },\n    macro: {\n      pattern: /`\\w+/,\n      alias: 'property'\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:class|enum|extends|interface|state(?:\\(\\))?|struct|within)\\s+)\\w+/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:abstract|actor|array|auto|autoexpandcategories|bool|break|byte|case|class|classgroup|client|coerce|collapsecategories|config|const|continue|default|defaultproperties|delegate|dependson|deprecated|do|dontcollapsecategories|editconst|editinlinenew|else|enum|event|exec|export|extends|final|float|for|forcescriptorder|foreach|function|goto|guid|hidecategories|hidedropdown|if|ignores|implements|inherits|input|int|interface|iterator|latent|local|material|name|native|nativereplication|noexport|nontransient|noteditinlinenew|notplaceable|operator|optional|out|pawn|perobjectconfig|perobjectlocalized|placeable|postoperator|preoperator|private|protected|reliable|replication|return|server|showcategories|simulated|singular|state|static|string|struct|structdefault|structdefaultproperties|switch|texture|transient|travel|unreliable|until|var|vector|while|within)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    boolean: /\\b(?:false|true)\\b/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    // https://docs.unrealengine.com/udk/Three/UnrealScriptExpressions.html\n    operator:\n      />>|<<|--|\\+\\+|\\*\\*|[-+*/~!=<>$@]=?|&&?|\\|\\|?|\\^\\^?|[?:%]|\\b(?:ClockwiseFrom|Cross|Dot)\\b/,\n    punctuation: /[()[\\]{};,.]/\n  }\n  Prism.languages.uc = Prism.languages.uscript = Prism.languages.unrealscript\n}\n","'use strict'\n\nmodule.exports = uorazor\nuorazor.displayName = 'uorazor'\nuorazor.aliases = []\nfunction uorazor(Prism) {\n  Prism.languages.uorazor = {\n    'comment-hash': {\n      pattern: /#.*/,\n      alias: 'comment',\n      greedy: true\n    },\n    'comment-slash': {\n      pattern: /\\/\\/.*/,\n      alias: 'comment',\n      greedy: true\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      inside: {\n        punctuation: /^['\"]|['\"]$/\n      },\n      greedy: true\n    },\n    'source-layers': {\n      pattern:\n        /\\b(?:arms|backpack|blue|bracelet|cancel|clear|cloak|criminal|earrings|enemy|facialhair|friend|friendly|gloves|gray|grey|ground|hair|head|innerlegs|innertorso|innocent|lefthand|middletorso|murderer|neck|nonfriendly|onehandedsecondary|outerlegs|outertorso|pants|red|righthand|ring|self|shirt|shoes|talisman|waist)\\b/i,\n      alias: 'function'\n    },\n    'source-commands': {\n      pattern:\n        /\\b(?:alliance|attack|cast|clearall|clearignore|clearjournal|clearlist|clearsysmsg|createlist|createtimer|dclick|dclicktype|dclickvar|dress|dressconfig|drop|droprelloc|emote|getlabel|guild|gumpclose|gumpresponse|hotkey|ignore|lasttarget|lift|lifttype|menu|menuresponse|msg|org|organize|organizer|overhead|pause|poplist|potion|promptresponse|pushlist|removelist|removetimer|rename|restock|say|scav|scavenger|script|setability|setlasttarget|setskill|settimer|setvar|sysmsg|target|targetloc|targetrelloc|targettype|undress|unignore|unsetvar|useobject|useonce|useskill|usetype|virtue|wait|waitforgump|waitformenu|waitforprompt|waitforstat|waitforsysmsg|waitfortarget|walk|wfsysmsg|wft|whisper|yell)\\b/,\n      alias: 'function'\n    },\n    'tag-name': {\n      pattern: /(^\\{%-?\\s*)\\w+/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    delimiter: {\n      pattern: /^\\{[{%]-?|-?[%}]\\}$/,\n      alias: 'punctuation'\n    },\n    function:\n      /\\b(?:atlist|close|closest|count|counter|counttype|dead|dex|diffhits|diffmana|diffstam|diffweight|find|findbuff|finddebuff|findlayer|findtype|findtypelist|followers|gumpexists|hidden|hits|hp|hue|human|humanoid|ingump|inlist|insysmessage|insysmsg|int|invul|lhandempty|list|listexists|mana|maxhits|maxhp|maxmana|maxstam|maxweight|monster|mounted|name|next|noto|paralyzed|poisoned|position|prev|previous|queued|rand|random|rhandempty|skill|stam|str|targetexists|timer|timerexists|varexist|warmode|weight)\\b/,\n    keyword:\n      /\\b(?:and|as|break|continue|else|elseif|endfor|endif|endwhile|for|if|loop|not|or|replay|stop|while)\\b/,\n    boolean: /\\b(?:false|null|true)\\b/,\n    number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n    operator: [\n      {\n        pattern:\n          /(\\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\\s)/,\n        lookbehind: true\n      },\n      /[=<>]=?|!=|\\*\\*?|\\/\\/?|\\?:?|[-+~%|]/\n    ],\n    punctuation: /[()\\[\\]{}:.,]/\n  }\n}\n","'use strict'\n\nmodule.exports = uri\nuri.displayName = 'uri'\nuri.aliases = ['url']\nfunction uri(Prism) {\n  // https://tools.ietf.org/html/rfc3986#appendix-A\n  Prism.languages.uri = {\n    scheme: {\n      pattern: /^[a-z][a-z0-9+.-]*:/im,\n      greedy: true,\n      inside: {\n        'scheme-delimiter': /:$/\n      }\n    },\n    fragment: {\n      pattern: /#[\\w\\-.~!$&'()*+,;=%:@/?]*/,\n      inside: {\n        'fragment-delimiter': /^#/\n      }\n    },\n    query: {\n      pattern: /\\?[\\w\\-.~!$&'()*+,;=%:@/?]*/,\n      inside: {\n        'query-delimiter': {\n          pattern: /^\\?/,\n          greedy: true\n        },\n        'pair-delimiter': /[&;]/,\n        pair: {\n          pattern: /^[^=][\\s\\S]*/,\n          inside: {\n            key: /^[^=]+/,\n            value: {\n              pattern: /(^=)[\\s\\S]+/,\n              lookbehind: true\n            }\n          }\n        }\n      }\n    },\n    authority: {\n      pattern: RegExp(\n        /^\\/\\//.source + // [ userinfo \"@\" ]\n          /(?:[\\w\\-.~!$&'()*+,;=%:]*@)?/.source + // host\n          ('(?:' + // IP-literal\n            /\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]/\n              .source +\n            '|' + // IPv4address or registered name\n            /[\\w\\-.~!$&'()*+,;=%]*/.source +\n            ')') + // [ \":\" port ]\n          /(?::\\d*)?/.source,\n        'm'\n      ),\n      inside: {\n        'authority-delimiter': /^\\/\\//,\n        'user-info-segment': {\n          pattern: /^[\\w\\-.~!$&'()*+,;=%:]*@/,\n          inside: {\n            'user-info-delimiter': /@$/,\n            'user-info': /^[\\w\\-.~!$&'()*+,;=%:]+/\n          }\n        },\n        'port-segment': {\n          pattern: /:\\d*$/,\n          inside: {\n            'port-delimiter': /^:/,\n            port: /^\\d+/\n          }\n        },\n        host: {\n          pattern: /[\\s\\S]+/,\n          inside: {\n            'ip-literal': {\n              pattern: /^\\[[\\s\\S]+\\]$/,\n              inside: {\n                'ip-literal-delimiter': /^\\[|\\]$/,\n                'ipv-future': /^v[\\s\\S]+/,\n                'ipv6-address': /^[\\s\\S]+/\n              }\n            },\n            'ipv4-address':\n              /^(?:(?:[03-9]\\d?|[12]\\d{0,2})\\.){3}(?:[03-9]\\d?|[12]\\d{0,2})$/\n          }\n        }\n      }\n    },\n    path: {\n      pattern: /^[\\w\\-.~!$&'()*+,;=%:@/]+/m,\n      inside: {\n        'path-separator': /\\//\n      }\n    }\n  }\n  Prism.languages.url = Prism.languages.uri\n}\n","'use strict'\n\nmodule.exports = v\nv.displayName = 'v'\nv.aliases = []\nfunction v(Prism) {\n  ;(function (Prism) {\n    var interpolationExpr = {\n      pattern: /[\\s\\S]+/,\n      inside: null\n    }\n    Prism.languages.v = Prism.languages.extend('clike', {\n      string: {\n        pattern: /r?([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        alias: 'quoted-string',\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern:\n              /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\{[^{}]*\\}|\\w+(?:\\.\\w+(?:\\([^\\(\\)]*\\))?|\\[[^\\[\\]]+\\])*)/,\n            lookbehind: true,\n            inside: {\n              'interpolation-variable': {\n                pattern: /^\\$\\w[\\s\\S]*$/,\n                alias: 'variable'\n              },\n              'interpolation-punctuation': {\n                pattern: /^\\$\\{|\\}$/,\n                alias: 'punctuation'\n              },\n              'interpolation-expression': interpolationExpr\n            }\n          }\n        }\n      },\n      'class-name': {\n        pattern: /(\\b(?:enum|interface|struct|type)\\s+)(?:C\\.)?\\w+/,\n        lookbehind: true\n      },\n      keyword:\n        /(?:\\b(?:__global|as|asm|assert|atomic|break|chan|const|continue|defer|else|embed|enum|fn|for|go(?:to)?|if|import|in|interface|is|lock|match|module|mut|none|or|pub|return|rlock|select|shared|sizeof|static|struct|type(?:of)?|union|unsafe)|\\$(?:else|for|if)|#(?:flag|include))\\b/,\n      number:\n        /\\b(?:0x[a-f\\d]+(?:_[a-f\\d]+)*|0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?)\\b/i,\n      operator:\n        /~|\\?|[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\.?/,\n      builtin:\n        /\\b(?:any(?:_float|_int)?|bool|byte(?:ptr)?|charptr|f(?:32|64)|i(?:8|16|64|128|nt)|rune|size_t|string|u(?:16|32|64|128)|voidptr)\\b/\n    })\n    interpolationExpr.inside = Prism.languages.v\n    Prism.languages.insertBefore('v', 'string', {\n      char: {\n        pattern: /`(?:\\\\`|\\\\?[^`]{1,2})`/,\n        // using {1,2} instead of `u` flag for compatibility\n        alias: 'rune'\n      }\n    })\n    Prism.languages.insertBefore('v', 'operator', {\n      attribute: {\n        pattern:\n          /(^[\\t ]*)\\[(?:deprecated|direct_array_access|flag|inline|live|ref_only|typedef|unsafe_fn|windows_stdcall)\\]/m,\n        lookbehind: true,\n        alias: 'annotation',\n        inside: {\n          punctuation: /[\\[\\]]/,\n          keyword: /\\w+/\n        }\n      },\n      generic: {\n        pattern: /<\\w+>(?=\\s*[\\)\\{])/,\n        inside: {\n          punctuation: /[<>]/,\n          'class-name': /\\w+/\n        }\n      }\n    })\n    Prism.languages.insertBefore('v', 'function', {\n      'generic-function': {\n        // e.g. foo<T>( ...\n        pattern: /\\b\\w+\\s*<\\w+>(?=\\()/,\n        inside: {\n          function: /^\\w+/,\n          generic: {\n            pattern: /<\\w+>/,\n            inside: Prism.languages.v.generic.inside\n          }\n        }\n      }\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = vala\nvala.displayName = 'vala'\nvala.aliases = []\nfunction vala(Prism) {\n  Prism.languages.vala = Prism.languages.extend('clike', {\n    // Classes copied from prism-csharp\n    'class-name': [\n      {\n        // (Foo bar, Bar baz)\n        pattern: /\\b[A-Z]\\w*(?:\\.\\w+)*\\b(?=(?:\\?\\s+|\\*?\\s+\\*?)\\w)/,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      {\n        // [Foo]\n        pattern: /(\\[)[A-Z]\\w*(?:\\.\\w+)*\\b/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      {\n        // class Foo : Bar\n        pattern:\n          /(\\b(?:class|interface)\\s+[A-Z]\\w*(?:\\.\\w+)*\\s*:\\s*)[A-Z]\\w*(?:\\.\\w+)*\\b/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      {\n        // class Foo\n        pattern:\n          /((?:\\b(?:class|enum|interface|new|struct)\\s+)|(?:catch\\s+\\())[A-Z]\\w*(?:\\.\\w+)*\\b/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      }\n    ],\n    keyword:\n      /\\b(?:abstract|as|assert|async|base|bool|break|case|catch|char|class|const|construct|continue|default|delegate|delete|do|double|dynamic|else|ensures|enum|errordomain|extern|finally|float|for|foreach|get|if|in|inline|int|int16|int32|int64|int8|interface|internal|is|lock|long|namespace|new|null|out|override|owned|params|private|protected|public|ref|requires|return|set|short|signal|sizeof|size_t|ssize_t|static|string|struct|switch|this|throw|throws|try|typeof|uchar|uint|uint16|uint32|uint64|uint8|ulong|unichar|unowned|ushort|using|value|var|virtual|void|volatile|weak|while|yield)\\b/i,\n    function: /\\b\\w+(?=\\s*\\()/,\n    number:\n      /(?:\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?:f|u?l?)?/i,\n    operator:\n      /\\+\\+|--|&&|\\|\\||<<=?|>>=?|=>|->|~|[+\\-*\\/%&^|=!<>]=?|\\?\\??|\\.\\.\\./,\n    punctuation: /[{}[\\];(),.:]/,\n    constant: /\\b[A-Z0-9_]+\\b/\n  })\n  Prism.languages.insertBefore('vala', 'string', {\n    'raw-string': {\n      pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    'template-string': {\n      pattern: /@\"[\\s\\S]*?\"/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$(?:\\([^)]*\\)|[a-zA-Z]\\w*)/,\n          inside: {\n            delimiter: {\n              pattern: /^\\$\\(?|\\)$/,\n              alias: 'punctuation'\n            },\n            rest: Prism.languages.vala\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.insertBefore('vala', 'keyword', {\n    regex: {\n      pattern:\n        /\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[imsx]{0,4}(?=\\s*(?:$|[\\r\\n,.;})\\]]))/,\n      greedy: true,\n      inside: {\n        'regex-source': {\n          pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n          lookbehind: true,\n          alias: 'language-regex',\n          inside: Prism.languages.regex\n        },\n        'regex-delimiter': /^\\//,\n        'regex-flags': /^[a-z]+$/\n      }\n    }\n  })\n}\n","'use strict'\nvar refractorBasic = require('./basic.js')\nmodule.exports = vbnet\nvbnet.displayName = 'vbnet'\nvbnet.aliases = []\nfunction vbnet(Prism) {\n  Prism.register(refractorBasic)\n  Prism.languages.vbnet = Prism.languages.extend('basic', {\n    comment: [\n      {\n        pattern: /(?:!|REM\\b).+/i,\n        inside: {\n          keyword: /^REM/i\n        }\n      },\n      {\n        pattern: /(^|[^\\\\:])'.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(^|[^\"])\"(?:\"\"|[^\"])*\"(?!\")/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /(?:\\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDBL|CDEC|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DEFAULT|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LET|LIB|LIKE|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPERATOR|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHELL|SHORT|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SWAP|SYNCLOCK|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\\$|\\b)/i,\n    punctuation: /[,;:(){}]/\n  })\n}\n","'use strict'\n\nmodule.exports = velocity\nvelocity.displayName = 'velocity'\nvelocity.aliases = []\nfunction velocity(Prism) {\n  ;(function (Prism) {\n    Prism.languages.velocity = Prism.languages.extend('markup', {})\n    var velocity = {\n      variable: {\n        pattern:\n          /(^|[^\\\\](?:\\\\\\\\)*)\\$!?(?:[a-z][\\w-]*(?:\\([^)]*\\))?(?:\\.[a-z][\\w-]*(?:\\([^)]*\\))?|\\[[^\\]]+\\])*|\\{[^}]+\\})/i,\n        lookbehind: true,\n        inside: {} // See below\n      },\n      string: {\n        pattern: /\"[^\"]*\"|'[^']*'/,\n        greedy: true\n      },\n      number: /\\b\\d+\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      operator:\n        /[=!<>]=?|[+*/%-]|&&|\\|\\||\\.\\.|\\b(?:eq|g[et]|l[et]|n(?:e|ot))\\b/,\n      punctuation: /[(){}[\\]:,.]/\n    }\n    velocity.variable.inside = {\n      string: velocity['string'],\n      function: {\n        pattern: /([^\\w-])[a-z][\\w-]*(?=\\()/,\n        lookbehind: true\n      },\n      number: velocity['number'],\n      boolean: velocity['boolean'],\n      punctuation: velocity['punctuation']\n    }\n    Prism.languages.insertBefore('velocity', 'comment', {\n      unparsed: {\n        pattern: /(^|[^\\\\])#\\[\\[[\\s\\S]*?\\]\\]#/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          punctuation: /^#\\[\\[|\\]\\]#$/\n        }\n      },\n      'velocity-comment': [\n        {\n          pattern: /(^|[^\\\\])#\\*[\\s\\S]*?\\*#/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'comment'\n        },\n        {\n          pattern: /(^|[^\\\\])##.*/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'comment'\n        }\n      ],\n      directive: {\n        pattern:\n          /(^|[^\\\\](?:\\\\\\\\)*)#@?(?:[a-z][\\w-]*|\\{[a-z][\\w-]*\\})(?:\\s*\\((?:[^()]|\\([^()]*\\))*\\))?/i,\n        lookbehind: true,\n        inside: {\n          keyword: {\n            pattern: /^#@?(?:[a-z][\\w-]*|\\{[a-z][\\w-]*\\})|\\bin\\b/,\n            inside: {\n              punctuation: /[{}]/\n            }\n          },\n          rest: velocity\n        }\n      },\n      variable: velocity['variable']\n    })\n    Prism.languages.velocity['tag'].inside['attr-value'].inside.rest =\n      Prism.languages.velocity\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = verilog\nverilog.displayName = 'verilog'\nverilog.aliases = []\nfunction verilog(Prism) {\n  Prism.languages.verilog = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    'kernel-function': {\n      // support for any kernel function (ex: $display())\n      pattern: /\\B\\$\\w+\\b/,\n      alias: 'property'\n    },\n    // support for user defined constants (ex: `define)\n    constant: /\\B`\\w+\\b/,\n    function: /\\b\\w+(?=\\()/,\n    // support for verilog and system verilog keywords\n    keyword:\n      /\\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|case|casex|casez|cell|chandle|class|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endsequence|endspecify|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_ondetect|pulsestyle_onevent|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\\b/,\n    // bold highlighting for all verilog and system verilog logic blocks\n    important: /\\b(?:always|always_comb|always_ff|always_latch)\\b(?: *@)?/,\n    // support for time ticks, vectors, and real numbers\n    number:\n      /\\B##?\\d+|(?:\\b\\d+)?'[odbh] ?[\\da-fzx_?]+|\\b(?:\\d*[._])?\\d+(?:e[-+]?\\d+)?/i,\n    operator: /[-+{}^~%*\\/?=!<>&|]+/,\n    punctuation: /[[\\];(),.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = vhdl\nvhdl.displayName = 'vhdl'\nvhdl.aliases = []\nfunction vhdl(Prism) {\n  Prism.languages.vhdl = {\n    comment: /--.+/,\n    // support for all logic vectors\n    'vhdl-vectors': {\n      pattern: /\\b[oxb]\"[\\da-f_]+\"|\"[01uxzwlh-]+\"/i,\n      alias: 'number'\n    },\n    // support for operator overloading included\n    'quoted-function': {\n      pattern: /\"\\S+?\"(?=\\()/,\n      alias: 'function'\n    },\n    string: /\"(?:[^\\\\\"\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"/,\n    constant: /\\b(?:library|use)\\b/i,\n    // support for predefined attributes included\n    keyword:\n      /\\b(?:'active|'ascending|'base|'delayed|'driving|'driving_value|'event|'high|'image|'instance_name|'last_active|'last_event|'last_value|'left|'leftof|'length|'low|'path_name|'pos|'pred|'quiet|'range|'reverse_range|'right|'rightof|'simple_name|'stable|'succ|'transaction|'val|'value|access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    function: /\\w+(?=\\()/,\n    // decimal, based, physical, and exponential numbers supported\n    number: /'[01uxzwlh-]'|\\b(?:\\d+#[\\da-f_.]+#|\\d[\\d_.]*)(?:e[-+]?\\d+)?/i,\n    operator:\n      /[<>]=?|:=|[-+*/&=]|\\b(?:abs|and|mod|nand|nor|not|or|rem|rol|ror|sla|sll|sra|srl|xnor|xor)\\b/i,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n","'use strict'\n\nmodule.exports = vim\nvim.displayName = 'vim'\nvim.aliases = []\nfunction vim(Prism) {\n  Prism.languages.vim = {\n    string: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n    comment: /\".*/,\n    function: /\\b\\w+(?=\\()/,\n    keyword:\n      /\\b(?:N|Next|P|Print|X|XMLent|XMLns|ab|abbreviate|abc|abclear|abo|aboveleft|al|all|ar|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|args|argu|argument|as|ascii|b|bN|bNext|ba|bad|badd|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bo|botright|bp|bprevious|br|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|brewind|bro|browse|bufdo|buffer|buffers|bun|bunload|bw|bwipeout|c|cN|cNext|cNfcNfile|ca|cabbrev|cabc|cabclear|cad|caddb|caddbuffer|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cg|cgetb|cgetbuffer|cgete|cgetexpr|cgetfile|change|changes|chd|chdir|che|checkpath|checkt|checktime|cl|cla|clast|clist|clo|close|cmapc|cmapclear|cn|cnew|cnewer|cnext|cnf|cnfile|cnorea|cnoreabbrev|co|col|colder|colo|colorscheme|comc|comclear|comp|compiler|con|conf|confirm|continue|cope|copen|copy|cp|cpf|cpfile|cprevious|cq|cquit|cr|crewind|cu|cuna|cunabbrev|cunmap|cw|cwindow|d|debugg|debuggreedy|delc|delcommand|delete|delf|delfunction|delm|delmarks|di|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|e|earlier|echoe|echoerr|echom|echomsg|echon|edit|el|else|elsei|elseif|em|emenu|en|endf|endfo|endfor|endfun|endfunction|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fin|fina|finally|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|foldd|folddoc|folddoclosed|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|h|ha|hardcopy|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iu|iuna|iunabbrev|iunmap|j|join|ju|jumps|k|kee|keepalt|keepj|keepjumps|keepmarks|l|lN|lNext|lNf|lNfile|la|lad|laddb|laddbuffer|laddexpr|laddf|laddfile|lan|language|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|left|lefta|leftabove|let|lex|lexpr|lf|lfile|lfir|lfirst|lg|lgetb|lgetbuffer|lgete|lgetexpr|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|list|ll|lla|llast|lli|llist|lm|lmak|lmake|lmap|lmapc|lmapclear|ln|lne|lnew|lnewer|lnext|lnf|lnfile|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lp|lpf|lpfile|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|m|ma|mak|make|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkv|mkvie|mkview|mkvimrc|mod|mode|move|mz|mzf|mzfile|mzscheme|n|nbkey|new|next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|o|omapc|omapclear|on|only|open|opt|options|ou|ounmap|p|pc|pclose|pe|ped|pedit|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|print|prof|profd|profdel|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|ptN|ptNext|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|py|pyf|pyfile|python|q|qa|qall|quit|quita|quitall|r|read|rec|recover|red|redi|redir|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|ru|rub|ruby|rubyd|rubydo|rubyf|rubyfile|runtime|rv|rviminfo|sN|sNext|sa|sal|sall|san|sandbox|sargument|sav|saveas|sb|sbN|sbNext|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbp|sbprevious|sbr|sbrewind|sbuffer|scrip|scripte|scriptencoding|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sl|sla|slast|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|so|sor|sort|source|sp|spe|spelld|spelldump|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|split|spr|sprevious|sre|srewind|st|sta|stag|star|startg|startgreplace|startinsert|startr|startreplace|stj|stjump|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tN|tNext|ta|tab|tabN|tabNext|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabn|tabnew|tabnext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|u|una|unabbreviate|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|ve|verb|verbose|version|vert|vertical|vi|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|w|wN|wNext|wa|wall|wh|while|win|winc|wincmd|windo|winp|winpos|winsize|wn|wnext|wp|wprevious|wq|wqa|wqall|write|ws|wsverb|wv|wviminfo|x|xa|xall|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n    builtin:\n      /\\b(?:acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autocmd|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|t_AB|t_AF|t_AL|t_CS|t_CV|t_Ce|t_Co|t_Cs|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_IE|t_IS|t_K1|t_K3|t_K4|t_K5|t_K6|t_K7|t_K8|t_K9|t_KA|t_KB|t_KC|t_KD|t_KE|t_KF|t_KG|t_KH|t_KI|t_KJ|t_KK|t_KL|t_RI|t_RV|t_SI|t_Sb|t_Sf|t_WP|t_WS|t_ZH|t_ZR|t_al|t_bc|t_cd|t_ce|t_cl|t_cm|t_cs|t_da|t_db|t_dl|t_fs|t_k1|t_k2|t_k3|t_k4|t_k5|t_k6|t_k7|t_k8|t_k9|t_kB|t_kD|t_kI|t_kN|t_kP|t_kb|t_kd|t_ke|t_kh|t_kl|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_se|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_xs|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww)\\b/,\n    number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n    operator:\n      /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n    punctuation: /[{}[\\](),;:]/\n  }\n}\n","'use strict'\n\nmodule.exports = visualBasic\nvisualBasic.displayName = 'visualBasic'\nvisualBasic.aliases = []\nfunction visualBasic(Prism) {\n  Prism.languages['visual-basic'] = {\n    comment: {\n      pattern: /(?:['‘’]|REM\\b)(?:[^\\r\\n_]|_(?:\\r\\n?|\\n)?)*/i,\n      inside: {\n        keyword: /^REM/i\n      }\n    },\n    directive: {\n      pattern:\n        /#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:\\b_[ \\t]*(?:\\r\\n?|\\n)|.)+/i,\n      alias: 'property',\n      greedy: true\n    },\n    string: {\n      pattern: /\\$?[\"“”](?:[\"“”]{2}|[^\"“”])*[\"“”]C?/i,\n      greedy: true\n    },\n    date: {\n      pattern:\n        /#[ \\t]*(?:\\d+([/-])\\d+\\1\\d+(?:[ \\t]+(?:\\d+[ \\t]*(?:AM|PM)|\\d+:\\d+(?::\\d+)?(?:[ \\t]*(?:AM|PM))?))?|\\d+[ \\t]*(?:AM|PM)|\\d+:\\d+(?::\\d+)?(?:[ \\t]*(?:AM|PM))?)[ \\t]*#/i,\n      alias: 'number'\n    },\n    number:\n      /(?:(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)(?:E[+-]?\\d+)?|&[HO][\\dA-F]+)(?:[FRD]|U?[ILS])?/i,\n    boolean: /\\b(?:False|Nothing|True)\\b/i,\n    keyword:\n      /\\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Until|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\\b/i,\n    operator: /[+\\-*/\\\\^<=>&#@$%!]|\\b_(?=[ \\t]*[\\r\\n])/,\n    punctuation: /[{}().,:?]/\n  }\n  Prism.languages.vb = Prism.languages['visual-basic']\n  Prism.languages.vba = Prism.languages['visual-basic']\n}\n","'use strict'\n\nmodule.exports = warpscript\nwarpscript.displayName = 'warpscript'\nwarpscript.aliases = []\nfunction warpscript(Prism) {\n  Prism.languages.warpscript = {\n    comment: /#.*|\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    string: {\n      pattern:\n        /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'|<'(?:[^\\\\']|'(?!>)|\\\\.)*'>/,\n      greedy: true\n    },\n    variable: /\\$\\S+/,\n    macro: {\n      pattern: /@\\S+/,\n      alias: 'property'\n    },\n    // WarpScript doesn't have any keywords, these are all functions under the control category\n    // https://www.warp10.io/tags/control\n    keyword:\n      /\\b(?:BREAK|CHECKMACRO|CONTINUE|CUDF|DEFINED|DEFINEDMACRO|EVAL|FAIL|FOR|FOREACH|FORSTEP|IFT|IFTE|MSGFAIL|NRETURN|RETHROW|RETURN|SWITCH|TRY|UDF|UNTIL|WHILE)\\b/,\n    number:\n      /[+-]?\\b(?:NaN|Infinity|\\d+(?:\\.\\d*)?(?:[Ee][+-]?\\d+)?|0x[\\da-fA-F]+|0b[01]+)\\b/,\n    boolean: /\\b(?:F|T|false|true)\\b/,\n    punctuation: /<%|%>|[{}[\\]()]/,\n    // Some operators from the \"operators\" category\n    // https://www.warp10.io/tags/operators\n    operator:\n      /==|&&?|\\|\\|?|\\*\\*?|>>>?|<<|[<>!~]=?|[-/%^]|\\+!?|\\b(?:AND|NOT|OR)\\b/\n  }\n}\n","'use strict'\n\nmodule.exports = wasm\nwasm.displayName = 'wasm'\nwasm.aliases = []\nfunction wasm(Prism) {\n  Prism.languages.wasm = {\n    comment: [\n      /\\(;[\\s\\S]*?;\\)/,\n      {\n        pattern: /;;.*/,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n      greedy: true\n    },\n    keyword: [\n      {\n        pattern: /\\b(?:align|offset)=/,\n        inside: {\n          operator: /=/\n        }\n      },\n      {\n        pattern:\n          /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/\n    ],\n    variable: /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^`|~]+/,\n    number:\n      /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n    punctuation: /[()]/\n  }\n}\n","'use strict'\n\nmodule.exports = webIdl\nwebIdl.displayName = 'webIdl'\nwebIdl.aliases = []\nfunction webIdl(Prism) {\n  ;(function (Prism) {\n    var id = /(?:\\B-|\\b_|\\b)[A-Za-z][\\w-]*(?![\\w-])/.source\n    var type =\n      '(?:' +\n      /\\b(?:unsigned\\s+)?long\\s+long(?![\\w-])/.source +\n      '|' +\n      /\\b(?:unrestricted|unsigned)\\s+[a-z]+(?![\\w-])/.source +\n      '|' +\n      /(?!(?:unrestricted|unsigned)\\b)/.source +\n      id +\n      /(?:\\s*<(?:[^<>]|<[^<>]*>)*>)?/.source +\n      ')' +\n      /(?:\\s*\\?)?/.source\n    var typeInside = {}\n    Prism.languages['web-idl'] = {\n      comment: {\n        pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      namespace: {\n        pattern: RegExp(/(\\bnamespace\\s+)/.source + id),\n        lookbehind: true\n      },\n      'class-name': [\n        {\n          pattern:\n            /(^|[^\\w-])(?:iterable|maplike|setlike)\\s*<(?:[^<>]|<[^<>]*>)*>/,\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          pattern: RegExp(\n            /(\\b(?:attribute|const|deleter|getter|optional|setter)\\s+)/.source +\n              type\n          ),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // callback return type\n          pattern: RegExp(\n            '(' + /\\bcallback\\s+/.source + id + /\\s*=\\s*/.source + ')' + type\n          ),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // typedef\n          pattern: RegExp(/(\\btypedef\\b\\s*)/.source + type),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          pattern: RegExp(\n            /(\\b(?:callback|dictionary|enum|interface(?:\\s+mixin)?)\\s+)(?!(?:interface|mixin)\\b)/\n              .source + id\n          ),\n          lookbehind: true\n        },\n        {\n          // inheritance\n          pattern: RegExp(/(:\\s*)/.source + id),\n          lookbehind: true\n        }, // includes and implements\n        RegExp(id + /(?=\\s+(?:implements|includes)\\b)/.source),\n        {\n          pattern: RegExp(/(\\b(?:implements|includes)\\s+)/.source + id),\n          lookbehind: true\n        },\n        {\n          // function return type, parameter types, and dictionary members\n          pattern: RegExp(\n            type +\n              '(?=' +\n              /\\s*(?:\\.{3}\\s*)?/.source +\n              id +\n              /\\s*[(),;=]/.source +\n              ')'\n          ),\n          inside: typeInside\n        }\n      ],\n      builtin:\n        /\\b(?:ArrayBuffer|BigInt64Array|BigUint64Array|ByteString|DOMString|DataView|Float32Array|Float64Array|FrozenArray|Int16Array|Int32Array|Int8Array|ObservableArray|Promise|USVString|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray)\\b/,\n      keyword: [\n        /\\b(?:async|attribute|callback|const|constructor|deleter|dictionary|enum|getter|implements|includes|inherit|interface|mixin|namespace|null|optional|or|partial|readonly|required|setter|static|stringifier|typedef|unrestricted)\\b/, // type keywords\n        /\\b(?:any|bigint|boolean|byte|double|float|iterable|long|maplike|object|octet|record|sequence|setlike|short|symbol|undefined|unsigned|void)\\b/\n      ],\n      boolean: /\\b(?:false|true)\\b/,\n      number: {\n        pattern:\n          /(^|[^\\w-])-?(?:0x[0-9a-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|NaN|Infinity)(?![\\w-])/i,\n        lookbehind: true\n      },\n      operator: /\\.{3}|[=:?<>-]/,\n      punctuation: /[(){}[\\].,;]/\n    }\n    for (var key in Prism.languages['web-idl']) {\n      if (key !== 'class-name') {\n        typeInside[key] = Prism.languages['web-idl'][key]\n      }\n    }\n    Prism.languages['webidl'] = Prism.languages['web-idl']\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = wiki\nwiki.displayName = 'wiki'\nwiki.aliases = []\nfunction wiki(Prism) {\n  Prism.languages.wiki = Prism.languages.extend('markup', {\n    'block-comment': {\n      pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n      lookbehind: true,\n      alias: 'comment'\n    },\n    heading: {\n      pattern: /^(=+)[^=\\r\\n].*?\\1/m,\n      inside: {\n        punctuation: /^=+|=+$/,\n        important: /.+/\n      }\n    },\n    emphasis: {\n      // TODO Multi-line\n      pattern: /('{2,5}).+?\\1/,\n      inside: {\n        'bold-italic': {\n          pattern: /(''''').+?(?=\\1)/,\n          lookbehind: true,\n          alias: ['bold', 'italic']\n        },\n        bold: {\n          pattern: /(''')[^'](?:.*?[^'])?(?=\\1)/,\n          lookbehind: true\n        },\n        italic: {\n          pattern: /('')[^'](?:.*?[^'])?(?=\\1)/,\n          lookbehind: true\n        },\n        punctuation: /^''+|''+$/\n      }\n    },\n    hr: {\n      pattern: /^-{4,}/m,\n      alias: 'punctuation'\n    },\n    url: [\n      /ISBN +(?:97[89][ -]?)?(?:\\d[ -]?){9}[\\dx]\\b|(?:PMID|RFC) +\\d+/i,\n      /\\[\\[.+?\\]\\]|\\[.+?\\]/\n    ],\n    variable: [\n      /__[A-Z]+__/, // FIXME Nested structures should be handled\n      // {{formatnum:{{#expr:{{{3}}}}}}}\n      /\\{{3}.+?\\}{3}/,\n      /\\{\\{.+?\\}\\}/\n    ],\n    symbol: [/^#redirect/im, /~{3,5}/],\n    // Handle table attrs:\n    // {|\n    // ! style=\"text-align:left;\"| Item\n    // |}\n    'table-tag': {\n      pattern: /((?:^|[|!])[|!])[^|\\r\\n]+\\|(?!\\|)/m,\n      lookbehind: true,\n      inside: {\n        'table-bar': {\n          pattern: /\\|$/,\n          alias: 'punctuation'\n        },\n        rest: Prism.languages.markup['tag'].inside\n      }\n    },\n    punctuation: /^(?:\\{\\||\\|\\}|\\|-|[*#:;!|])|\\|\\||!!/m\n  })\n  Prism.languages.insertBefore('wiki', 'tag', {\n    // Prevent highlighting inside <nowiki>, <source> and <pre> tags\n    nowiki: {\n      pattern: /<(nowiki|pre|source)\\b[^>]*>[\\s\\S]*?<\\/\\1>/i,\n      inside: {\n        tag: {\n          pattern: /<(?:nowiki|pre|source)\\b[^>]*>|<\\/(?:nowiki|pre|source)>/i,\n          inside: Prism.languages.markup['tag'].inside\n        }\n      }\n    }\n  })\n}\n","'use strict'\n\nmodule.exports = wolfram\nwolfram.displayName = 'wolfram'\nwolfram.aliases = ['mathematica', 'wl', 'nb']\nfunction wolfram(Prism) {\n  Prism.languages.wolfram = {\n    // Allow one level of nesting - note: regex taken from applescipt\n    comment: /\\(\\*(?:\\(\\*(?:[^*]|\\*(?!\\)))*\\*\\)|(?!\\(\\*)[\\s\\S])*?\\*\\)/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:Abs|AbsArg|Accuracy|Block|Do|For|Function|If|Manipulate|Module|Nest|NestList|None|Return|Switch|Table|Which|While)\\b/,\n    context: {\n      pattern: /\\b\\w+`+\\w*/,\n      alias: 'class-name'\n    },\n    blank: {\n      pattern: /\\b\\w+_\\b/,\n      alias: 'regex'\n    },\n    'global-variable': {\n      pattern: /\\$\\w+/,\n      alias: 'variable'\n    },\n    boolean: /\\b(?:False|True)\\b/,\n    number:\n      /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n    operator:\n      /\\/\\.|;|=\\.|\\^=|\\^:=|:=|<<|>>|<\\||\\|>|:>|\\|->|->|<-|@@@|@@|@|\\/@|=!=|===|==|=|\\+|-|\\^|\\[\\/-+%=\\]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.mathematica = Prism.languages.wolfram\n  Prism.languages.wl = Prism.languages.wolfram\n  Prism.languages.nb = Prism.languages.wolfram\n}\n","'use strict'\n\nmodule.exports = wren\nwren.displayName = 'wren'\nwren.aliases = []\nfunction wren(Prism) {\n  // https://wren.io/\n  Prism.languages.wren = {\n    // Multiline comments in Wren can have nested multiline comments\n    // Comments: // and /* */\n    comment: [\n      {\n        // support 3 levels of nesting\n        // regex: \\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\/\n        pattern:\n          /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*))*\\*\\/)*\\*\\/)*\\*\\//,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    // Triple quoted strings are multiline but cannot have interpolation (raw strings)\n    // Based on prism-python.js\n    'triple-quoted-string': {\n      pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    // see below\n    'string-literal': null,\n    // #!/usr/bin/env wren on the first line\n    hashbang: {\n      pattern: /^#!\\/.+/,\n      greedy: true,\n      alias: 'comment'\n    },\n    // Attributes are special keywords to add meta data to classes\n    attribute: {\n      // #! attributes are stored in class properties\n      // #!myvar = true\n      // #attributes are not stored and dismissed at compilation\n      pattern: /#!?[ \\t\\u3000]*\\w+/,\n      alias: 'keyword'\n    },\n    'class-name': [\n      {\n        // class definition\n        // class Meta {}\n        pattern: /(\\bclass\\s+)\\w+/,\n        lookbehind: true\n      }, // A class must always start with an uppercase.\n      // File.read\n      /\\b[A-Z][a-z\\d_]*\\b/\n    ],\n    // A constant can be a variable, class, property or method. Just named in all uppercase letters\n    constant: /\\b[A-Z][A-Z\\d_]*\\b/,\n    null: {\n      pattern: /\\bnull\\b/,\n      alias: 'keyword'\n    },\n    keyword:\n      /\\b(?:as|break|class|construct|continue|else|for|foreign|if|import|in|is|return|static|super|this|var|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i,\n    // Functions can be Class.method()\n    function: /\\b[a-z_]\\w*(?=\\s*[({])/i,\n    operator: /<<|>>|[=!<>]=?|&&|\\|\\||[-+*/%~^&|?:]|\\.{2,3}/,\n    punctuation: /[\\[\\](){}.,;]/\n  }\n  Prism.languages.wren['string-literal'] = {\n    // A single quote string is multiline and can have interpolation (similar to JS backticks ``)\n    pattern:\n      /(^|[^\\\\\"])\"(?:[^\\\\\"%]|\\\\[\\s\\S]|%(?!\\()|%\\((?:[^()]|\\((?:[^()]|\\([^)]*\\))*\\))*\\))*\"/,\n    lookbehind: true,\n    greedy: true,\n    inside: {\n      interpolation: {\n        // \"%(interpolation)\"\n        pattern:\n          /((?:^|[^\\\\])(?:\\\\{2})*)%\\((?:[^()]|\\((?:[^()]|\\([^)]*\\))*\\))*\\)/,\n        lookbehind: true,\n        inside: {\n          expression: {\n            pattern: /^(%\\()[\\s\\S]+(?=\\)$)/,\n            lookbehind: true,\n            inside: Prism.languages.wren\n          },\n          'interpolation-punctuation': {\n            pattern: /^%\\(|\\)$/,\n            alias: 'punctuation'\n          }\n        }\n      },\n      string: /[\\s\\S]+/\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = xeora\nxeora.displayName = 'xeora'\nxeora.aliases = ['xeoracube']\nfunction xeora(Prism) {\n  ;(function (Prism) {\n    Prism.languages.xeora = Prism.languages.extend('markup', {\n      constant: {\n        pattern: /\\$(?:DomainContents|PageRenderDuration)\\$/,\n        inside: {\n          punctuation: {\n            pattern: /\\$/\n          }\n        }\n      },\n      variable: {\n        pattern: /\\$@?(?:#+|[-+*~=^])?[\\w.]+\\$/,\n        inside: {\n          punctuation: {\n            pattern: /[$.]/\n          },\n          operator: {\n            pattern: /#+|[-+*~=^@]/\n          }\n        }\n      },\n      'function-inline': {\n        pattern:\n          /\\$F:[-\\w.]+\\?[-\\w.]+(?:,(?:(?:@[-#]*\\w+\\.[\\w+.]\\.*)*\\|)*(?:(?:[\\w+]|[-#*.~^]+[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\\w+\\.[\\w+.]\\.*)+(?:(?:[\\w+]|[-#*~^][-#*.~^]*[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*)?)?)?\\$/,\n        inside: {\n          variable: {\n            pattern: /(?:[,|])@?(?:#+|[-+*~=^])?[\\w.]+/,\n            inside: {\n              punctuation: {\n                pattern: /[,.|]/\n              },\n              operator: {\n                pattern: /#+|[-+*~=^@]/\n              }\n            }\n          },\n          punctuation: {\n            pattern: /\\$\\w:|[$:?.,|]/\n          }\n        },\n        alias: 'function'\n      },\n      'function-block': {\n        pattern:\n          /\\$XF:\\{[-\\w.]+\\?[-\\w.]+(?:,(?:(?:@[-#]*\\w+\\.[\\w+.]\\.*)*\\|)*(?:(?:[\\w+]|[-#*.~^]+[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\\w+\\.[\\w+.]\\.*)+(?:(?:[\\w+]|[-#*~^][-#*.~^]*[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*)?)?)?\\}:XF\\$/,\n        inside: {\n          punctuation: {\n            pattern: /[$:{}?.,|]/\n          }\n        },\n        alias: 'function'\n      },\n      'directive-inline': {\n        pattern: /\\$\\w(?:#\\d+\\+?)?(?:\\[[-\\w.]+\\])?:[-\\/\\w.]+\\$/,\n        inside: {\n          punctuation: {\n            pattern: /\\$(?:\\w:|C(?:\\[|#\\d))?|[:{[\\]]/,\n            inside: {\n              tag: {\n                pattern: /#\\d/\n              }\n            }\n          }\n        },\n        alias: 'function'\n      },\n      'directive-block-open': {\n        pattern:\n          /\\$\\w+:\\{|\\$\\w(?:#\\d+\\+?)?(?:\\[[-\\w.]+\\])?:[-\\w.]+:\\{(?:![A-Z]+)?/,\n        inside: {\n          punctuation: {\n            pattern: /\\$(?:\\w:|C(?:\\[|#\\d))?|[:{[\\]]/,\n            inside: {\n              tag: {\n                pattern: /#\\d/\n              }\n            }\n          },\n          attribute: {\n            pattern: /![A-Z]+$/,\n            inside: {\n              punctuation: {\n                pattern: /!/\n              }\n            },\n            alias: 'keyword'\n          }\n        },\n        alias: 'function'\n      },\n      'directive-block-separator': {\n        pattern: /\\}:[-\\w.]+:\\{/,\n        inside: {\n          punctuation: {\n            pattern: /[:{}]/\n          }\n        },\n        alias: 'function'\n      },\n      'directive-block-close': {\n        pattern: /\\}:[-\\w.]+\\$/,\n        inside: {\n          punctuation: {\n            pattern: /[:{}$]/\n          }\n        },\n        alias: 'function'\n      }\n    })\n    Prism.languages.insertBefore(\n      'inside',\n      'punctuation',\n      {\n        variable: Prism.languages.xeora['function-inline'].inside['variable']\n      },\n      Prism.languages.xeora['function-block']\n    )\n    Prism.languages.xeoracube = Prism.languages.xeora\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = xmlDoc\nxmlDoc.displayName = 'xmlDoc'\nxmlDoc.aliases = []\nfunction xmlDoc(Prism) {\n  ;(function (Prism) {\n    /**\n     * If the given language is present, it will insert the given doc comment grammar token into it.\n     *\n     * @param {string} lang\n     * @param {any} docComment\n     */\n    function insertDocComment(lang, docComment) {\n      if (Prism.languages[lang]) {\n        Prism.languages.insertBefore(lang, 'comment', {\n          'doc-comment': docComment\n        })\n      }\n    }\n    var tag = Prism.languages.markup.tag\n    var slashDocComment = {\n      pattern: /\\/\\/\\/.*/,\n      greedy: true,\n      alias: 'comment',\n      inside: {\n        tag: tag\n      }\n    }\n    var tickDocComment = {\n      pattern: /'''.*/,\n      greedy: true,\n      alias: 'comment',\n      inside: {\n        tag: tag\n      }\n    }\n    insertDocComment('csharp', slashDocComment)\n    insertDocComment('fsharp', slashDocComment)\n    insertDocComment('vbnet', tickDocComment)\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = xojo\nxojo.displayName = 'xojo'\nxojo.aliases = []\nfunction xojo(Prism) {\n  Prism.languages.xojo = {\n    comment: {\n      pattern: /(?:'|\\/\\/|Rem\\b).+/i,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\"\"|[^\"])*\"/,\n      greedy: true\n    },\n    number: [/(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i, /&[bchou][a-z\\d]+/i],\n    directive: {\n      pattern: /#(?:Else|ElseIf|Endif|If|Pragma)\\b/i,\n      alias: 'property'\n    },\n    keyword:\n      /\\b(?:AddHandler|App|Array|As(?:signs)?|Auto|Boolean|Break|By(?:Ref|Val)|Byte|Call|Case|Catch|CFStringRef|CGFloat|Class|Color|Const|Continue|CString|Currency|CurrentMethodName|Declare|Delegate|Dim|Do(?:uble|wnTo)?|Each|Else(?:If)?|End|Enumeration|Event|Exception|Exit|Extends|False|Finally|For|Function|Get|GetTypeInfo|Global|GOTO|If|Implements|In|Inherits|Int(?:8|16|32|64|eger|erface)?|Lib|Loop|Me|Module|Next|Nil|Object|Optional|OSType|ParamArray|Private|Property|Protected|PString|Ptr|Raise(?:Event)?|ReDim|RemoveHandler|Return|Select(?:or)?|Self|Set|Shared|Short|Single|Soft|Static|Step|String|Sub|Super|Text|Then|To|True|Try|Ubound|UInt(?:8|16|32|64|eger)?|Until|Using|Var(?:iant)?|Wend|While|WindowPtr|WString)\\b/i,\n    operator:\n      /<[=>]?|>=?|[+\\-*\\/\\\\^=]|\\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|WeakAddressOf|Xor)\\b/i,\n    punctuation: /[.,;:()]/\n  }\n}\n","'use strict'\n\nmodule.exports = xquery\nxquery.displayName = 'xquery'\nxquery.aliases = []\nfunction xquery(Prism) {\n  ;(function (Prism) {\n    Prism.languages.xquery = Prism.languages.extend('markup', {\n      'xquery-comment': {\n        pattern: /\\(:[\\s\\S]*?:\\)/,\n        greedy: true,\n        alias: 'comment'\n      },\n      string: {\n        pattern: /([\"'])(?:\\1\\1|(?!\\1)[\\s\\S])*\\1/,\n        greedy: true\n      },\n      extension: {\n        pattern: /\\(#.+?#\\)/,\n        alias: 'symbol'\n      },\n      variable: /\\$[-\\w:]+/,\n      axis: {\n        pattern:\n          /(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      'keyword-operator': {\n        pattern:\n          /(^|[^:-])\\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\\b(?=$|[^:-])/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      keyword: {\n        pattern:\n          /(^|[^:-])\\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\\b(?=$|[^:-])/,\n        lookbehind: true\n      },\n      function: /[\\w-]+(?::[\\w-]+)*(?=\\s*\\()/,\n      'xquery-element': {\n        pattern: /(element\\s+)[\\w-]+(?::[\\w-]+)*/,\n        lookbehind: true,\n        alias: 'tag'\n      },\n      'xquery-attribute': {\n        pattern: /(attribute\\s+)[\\w-]+(?::[\\w-]+)*/,\n        lookbehind: true,\n        alias: 'attr-name'\n      },\n      builtin: {\n        pattern:\n          /(^|[^:-])\\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:ENTITIES|ENTITY|ID|IDREFS?|NCName|NMTOKENS?|NOTATION|Name|QName|anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|int|integer|language|long|negativeInteger|nonNegativeInteger|nonPositiveInteger|normalizedString|positiveInteger|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\\b(?=$|[^:-])/,\n        lookbehind: true\n      },\n      number: /\\b\\d+(?:\\.\\d+)?(?:E[+-]?\\d+)?/,\n      operator: [\n        /[+*=?|@]|\\.\\.?|:=|!=|<[=<]?|>[=>]?/,\n        {\n          pattern: /(\\s)-(?=\\s)/,\n          lookbehind: true\n        }\n      ],\n      punctuation: /[[\\](){},;:/]/\n    })\n    Prism.languages.xquery.tag.pattern =\n      /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/\n    Prism.languages.xquery['tag'].inside['attr-value'].pattern =\n      /=(?:(\"|')(?:\\\\[\\s\\S]|\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/\n    Prism.languages.xquery['tag'].inside['attr-value'].inside['punctuation'] =\n      /^=\"|\"$/\n    Prism.languages.xquery['tag'].inside['attr-value'].inside['expression'] = {\n      // Allow for two levels of nesting\n      pattern: /\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}/,\n      inside: Prism.languages.xquery,\n      alias: 'language-xquery'\n    } // The following will handle plain text inside tags\n    var stringifyToken = function (token) {\n      if (typeof token === 'string') {\n        return token\n      }\n      if (typeof token.content === 'string') {\n        return token.content\n      }\n      return token.content.map(stringifyToken).join('')\n    }\n    var walkTokens = function (tokens) {\n      var openedTags = []\n      for (var i = 0; i < tokens.length; i++) {\n        var token = tokens[i]\n        var notTagNorBrace = false\n        if (typeof token !== 'string') {\n          if (\n            token.type === 'tag' &&\n            token.content[0] &&\n            token.content[0].type === 'tag'\n          ) {\n            // We found a tag, now find its kind\n            if (token.content[0].content[0].content === '</') {\n              // Closing tag\n              if (\n                openedTags.length > 0 &&\n                openedTags[openedTags.length - 1].tagName ===\n                  stringifyToken(token.content[0].content[1])\n              ) {\n                // Pop matching opening tag\n                openedTags.pop()\n              }\n            } else {\n              if (token.content[token.content.length - 1].content === '/>') {\n                // Autoclosed tag, ignore\n              } else {\n                // Opening tag\n                openedTags.push({\n                  tagName: stringifyToken(token.content[0].content[1]),\n                  openedBraces: 0\n                })\n              }\n            }\n          } else if (\n            openedTags.length > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '{' && // Ignore `{{`\n            (!tokens[i + 1] ||\n              tokens[i + 1].type !== 'punctuation' ||\n              tokens[i + 1].content !== '{') &&\n            (!tokens[i - 1] ||\n              tokens[i - 1].type !== 'plain-text' ||\n              tokens[i - 1].content !== '{')\n          ) {\n            // Here we might have entered an XQuery expression inside a tag\n            openedTags[openedTags.length - 1].openedBraces++\n          } else if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '}'\n          ) {\n            // Here we might have left an XQuery expression inside a tag\n            openedTags[openedTags.length - 1].openedBraces--\n          } else if (token.type !== 'comment') {\n            notTagNorBrace = true\n          }\n        }\n        if (notTagNorBrace || typeof token === 'string') {\n          if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces === 0\n          ) {\n            // Here we are inside a tag, and not inside an XQuery expression.\n            // That's plain text: drop any tokens matched.\n            var plainText = stringifyToken(token) // And merge text with adjacent text\n            if (\n              i < tokens.length - 1 &&\n              (typeof tokens[i + 1] === 'string' ||\n                tokens[i + 1].type === 'plain-text')\n            ) {\n              plainText += stringifyToken(tokens[i + 1])\n              tokens.splice(i + 1, 1)\n            }\n            if (\n              i > 0 &&\n              (typeof tokens[i - 1] === 'string' ||\n                tokens[i - 1].type === 'plain-text')\n            ) {\n              plainText = stringifyToken(tokens[i - 1]) + plainText\n              tokens.splice(i - 1, 1)\n              i--\n            }\n            if (/^\\s+$/.test(plainText)) {\n              tokens[i] = plainText\n            } else {\n              tokens[i] = new Prism.Token(\n                'plain-text',\n                plainText,\n                null,\n                plainText\n              )\n            }\n          }\n        }\n        if (token.content && typeof token.content !== 'string') {\n          walkTokens(token.content)\n        }\n      }\n    }\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (env.language !== 'xquery') {\n        return\n      }\n      walkTokens(env.tokens)\n    })\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = yaml\nyaml.displayName = 'yaml'\nyaml.aliases = ['yml']\nfunction yaml(Prism) {\n  ;(function (Prism) {\n    // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property\n    // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node\n    var anchorOrAlias = /[*&][^\\s[\\]{},]+/ // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property\n    var tag =\n      /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/ // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)\n    var properties =\n      '(?:' +\n      tag.source +\n      '(?:[ \\t]+' +\n      anchorOrAlias.source +\n      ')?|' +\n      anchorOrAlias.source +\n      '(?:[ \\t]+' +\n      tag.source +\n      ')?)' // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)\n    // This is a simplified version that doesn't support \"#\" and multiline keys\n    // All these long scarry character classes are simplified versions of YAML's characters\n    var plainKey =\n      /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(\n        /<PLAIN>/g,\n        function () {\n          return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/\n            .source\n        }\n      )\n    var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source\n    /**\n     *\n     * @param {string} value\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function createValuePattern(value, flags) {\n      flags = (flags || '').replace(/m/g, '') + 'm' // add m flag\n      var pattern =\n        /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source\n          .replace(/<<prop>>/g, function () {\n            return properties\n          })\n          .replace(/<<value>>/g, function () {\n            return value\n          })\n      return RegExp(pattern, flags)\n    }\n    Prism.languages.yaml = {\n      scalar: {\n        pattern: RegExp(\n          /([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(\n            /<<prop>>/g,\n            function () {\n              return properties\n            }\n          )\n        ),\n        lookbehind: true,\n        alias: 'string'\n      },\n      comment: /#.*/,\n      key: {\n        pattern: RegExp(\n          /((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source\n            .replace(/<<prop>>/g, function () {\n              return properties\n            })\n            .replace(/<<key>>/g, function () {\n              return '(?:' + plainKey + '|' + string + ')'\n            })\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'atrule'\n      },\n      directive: {\n        pattern: /(^[ \\t]*)%.+/m,\n        lookbehind: true,\n        alias: 'important'\n      },\n      datetime: {\n        pattern: createValuePattern(\n          /\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/\n            .source\n        ),\n        lookbehind: true,\n        alias: 'number'\n      },\n      boolean: {\n        pattern: createValuePattern(/false|true/.source, 'i'),\n        lookbehind: true,\n        alias: 'important'\n      },\n      null: {\n        pattern: createValuePattern(/null|~/.source, 'i'),\n        lookbehind: true,\n        alias: 'important'\n      },\n      string: {\n        pattern: createValuePattern(string),\n        lookbehind: true,\n        greedy: true\n      },\n      number: {\n        pattern: createValuePattern(\n          /[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/\n            .source,\n          'i'\n        ),\n        lookbehind: true\n      },\n      tag: tag,\n      important: anchorOrAlias,\n      punctuation: /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n    }\n    Prism.languages.yml = Prism.languages.yaml\n  })(Prism)\n}\n","'use strict'\n\nmodule.exports = yang\nyang.displayName = 'yang'\nyang.aliases = []\nfunction yang(Prism) {\n  Prism.languages.yang = {\n    // https://tools.ietf.org/html/rfc6020#page-34\n    // http://www.yang-central.org/twiki/bin/view/Main/YangExamples\n    comment: /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/,\n    string: {\n      pattern: /\"(?:[^\\\\\"]|\\\\.)*\"|'[^']*'/,\n      greedy: true\n    },\n    keyword: {\n      pattern: /(^|[{};\\r\\n][ \\t]*)[a-z_][\\w.-]*/i,\n      lookbehind: true\n    },\n    namespace: {\n      pattern: /(\\s)[a-z_][\\w.-]*(?=:)/i,\n      lookbehind: true\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    operator: /\\+/,\n    punctuation: /[{};:]/\n  }\n}\n","'use strict'\n\nmodule.exports = zig\nzig.displayName = 'zig'\nzig.aliases = []\nfunction zig(Prism) {\n  ;(function (Prism) {\n    function literal(str) {\n      return function () {\n        return str\n      }\n    }\n    var keyword =\n      /\\b(?:align|allowzero|and|anyframe|anytype|asm|async|await|break|cancel|catch|comptime|const|continue|defer|else|enum|errdefer|error|export|extern|fn|for|if|inline|linksection|nakedcc|noalias|nosuspend|null|or|orelse|packed|promise|pub|resume|return|stdcallcc|struct|suspend|switch|test|threadlocal|try|undefined|union|unreachable|usingnamespace|var|volatile|while)\\b/\n    var IDENTIFIER = '\\\\b(?!' + keyword.source + ')(?!\\\\d)\\\\w+\\\\b'\n    var ALIGN = /align\\s*\\((?:[^()]|\\([^()]*\\))*\\)/.source\n    var PREFIX_TYPE_OP =\n      /(?:\\?|\\bpromise->|(?:\\[[^[\\]]*\\]|\\*(?!\\*)|\\*\\*)(?:\\s*<ALIGN>|\\s*const\\b|\\s*volatile\\b|\\s*allowzero\\b)*)/.source.replace(\n        /<ALIGN>/g,\n        literal(ALIGN)\n      )\n    var SUFFIX_EXPR =\n      /(?:\\bpromise\\b|(?:\\berror\\.)?<ID>(?:\\.<ID>)*(?!\\s+<ID>))/.source.replace(\n        /<ID>/g,\n        literal(IDENTIFIER)\n      )\n    var TYPE =\n      '(?!\\\\s)(?:!?\\\\s*(?:' + PREFIX_TYPE_OP + '\\\\s*)*' + SUFFIX_EXPR + ')+'\n    /*\n     * A simplified grammar for Zig compile time type literals:\n     *\n     * TypeExpr = ( \"!\"? PREFIX_TYPE_OP* SUFFIX_EXPR )+\n     *\n     * SUFFIX_EXPR = ( \\b \"promise\" \\b | ( \\b \"error\" \".\" )? IDENTIFIER ( \".\" IDENTIFIER )* (?! \\s+ IDENTIFIER ) )\n     *\n     * PREFIX_TYPE_OP = \"?\"\n     *                | \\b \"promise\" \"->\"\n     *                | ( \"[\" [^\\[\\]]* \"]\" | \"*\" | \"**\" ) ( ALIGN | \"const\" \\b | \"volatile\" \\b | \"allowzero\" \\b )*\n     *\n     * ALIGN = \"align\" \"(\" ( [^()] | \"(\" [^()]* \")\" )* \")\"\n     *\n     * IDENTIFIER = \\b (?! KEYWORD ) [a-zA-Z_] \\w* \\b\n     *\n     */\n    Prism.languages.zig = {\n      comment: [\n        {\n          pattern: /\\/\\/[/!].*/,\n          alias: 'doc-comment'\n        },\n        /\\/{2}.*/\n      ],\n      string: [\n        {\n          // \"string\" and c\"string\"\n          pattern: /(^|[^\\\\@])c?\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // multiline strings and c-strings\n          pattern: /([\\r\\n])([ \\t]+c?\\\\{2}).*(?:(?:\\r\\n?|\\n)\\2.*)*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      char: {\n        // characters 'a', '\\n', '\\xFF', '\\u{10FFFF}'\n        pattern:\n          /(^|[^\\\\])'(?:[^'\\\\\\r\\n]|[\\uD800-\\uDFFF]{2}|\\\\(?:.|x[a-fA-F\\d]{2}|u\\{[a-fA-F\\d]{1,6}\\}))'/,\n        lookbehind: true,\n        greedy: true\n      },\n      builtin: /\\B@(?!\\d)\\w+(?=\\s*\\()/,\n      label: {\n        pattern:\n          /(\\b(?:break|continue)\\s*:\\s*)\\w+\\b|\\b(?!\\d)\\w+\\b(?=\\s*:\\s*(?:\\{|while\\b))/,\n        lookbehind: true\n      },\n      'class-name': [\n        // const Foo = struct {};\n        /\\b(?!\\d)\\w+(?=\\s*=\\s*(?:(?:extern|packed)\\s+)?(?:enum|struct|union)\\s*[({])/,\n        {\n          // const x: i32 = 9;\n          // var x: Bar;\n          // fn foo(x: bool, y: f32) void {}\n          pattern: RegExp(\n            /(:\\s*)<TYPE>(?=\\s*(?:<ALIGN>\\s*)?[=;,)])|<TYPE>(?=\\s*(?:<ALIGN>\\s*)?\\{)/.source\n              .replace(/<TYPE>/g, literal(TYPE))\n              .replace(/<ALIGN>/g, literal(ALIGN))\n          ),\n          lookbehind: true,\n          inside: null // see below\n        },\n        {\n          // extern fn foo(x: f64) f64; (optional alignment)\n          pattern: RegExp(\n            /(\\)\\s*)<TYPE>(?=\\s*(?:<ALIGN>\\s*)?;)/.source\n              .replace(/<TYPE>/g, literal(TYPE))\n              .replace(/<ALIGN>/g, literal(ALIGN))\n          ),\n          lookbehind: true,\n          inside: null // see below\n        }\n      ],\n      'builtin-type': {\n        pattern:\n          /\\b(?:anyerror|bool|c_u?(?:int|long|longlong|short)|c_longdouble|c_void|comptime_(?:float|int)|f(?:16|32|64|128)|[iu](?:8|16|32|64|128|size)|noreturn|type|void)\\b/,\n        alias: 'keyword'\n      },\n      keyword: keyword,\n      function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n      number:\n        /\\b(?:0b[01]+|0o[0-7]+|0x[a-fA-F\\d]+(?:\\.[a-fA-F\\d]*)?(?:[pP][+-]?[a-fA-F\\d]+)?|\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      operator:\n        /\\.[*?]|\\.{2,3}|[-=]>|\\*\\*|\\+\\+|\\|\\||(?:<<|>>|[-+*]%|[-+*/%^&|<>!=])=?|[?~]/,\n      punctuation: /[.:,;(){}[\\]]/\n    }\n    Prism.languages.zig['class-name'].forEach(function (obj) {\n      if (obj.inside === null) {\n        obj.inside = Prism.languages.zig\n      }\n    })\n  })(Prism)\n}\n","/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  } else {\n    module.exports = _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n      return desc.value;\n    }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  }\n  return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n  return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n  return arr2;\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _s, _e;\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n  return _arr;\n}","\nconst data = {\n  \"categories\": [\n  {\n    \"title\": \"Proxmox Tools\",\n  }, {\n    \"title\": \"Home Assistant\",\n  }, {\n    \"title\": \"Automation\",\n  }, {\n    \"title\": \"MQTT\",\n  }, {\n    \"title\": \"Database\",\n  }, {\n    \"title\": \"Zigbee - Zwave\",\n  }, {\n    \"title\": \"Monitoring - Analytics\",\n  }, {\n    \"title\": \"Docker - Kubernetes\",\n  }, {\n    \"title\": \"Operating System\",\n  }, {\n    \"title\": \"Server - Networking\",\n  }, {\n    \"title\": \"Media - Photo\",\n  }, {\n    \"title\": \"Ad Blocker - DNS\",\n  }, {\n    \"title\": \"Document - Notes\",\n  }, {\n    \"title\": \"Dashboards\",\n  }, {\n    \"title\": \"File - Code\",\n  }, {\n    \"title\": \"Miscellaneous\",\n  }],\n  \"items\": [\n  {\n    \"category\": \"Proxmox Tools\",\n    \"title\": \"Proxmox VE 7 Post Install\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/proxmoxve/icon.png?raw=true\" height=\"100\"/></p>\n   \n  <h1 align=\"center\" id=\"heading\"> Proxmox VE 7 Post Install </h1>\n  \n  This script provides options for managing Proxmox VE repositories, including disabling the Enterprise Repo, adding or correcting PVE7 sources, enabling the No-Subscription Repo, adding the test Repo, disabling the subscription nag, updating Proxmox VE, and rebooting the system.\n    \n  Run the command below in the <b>Proxmox Shell</b>. ⚠️ **PVE7 **\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)\"\n  ~~~\n  \n  It is recommended to answer “yes” (y) to all options presented during the process.`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox Kernel Clean\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/proxmoxve/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Proxmox Kernel Clean </h1>\n  Cleaning unused kernel images is beneficial for reducing the length of the GRUB menu and freeing up disk space. By removing old, unused kernels, the system is able to conserve disk space and streamline the boot process.\n      \n  Run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/kernel-clean.sh)\"\n  ~~~`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox Edge Kernel Tool\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/proxmoxve/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Proxmox Edge Kernel Tool </h1>\n\n  PVE [Edge Kernels](https://github.com/fabianishere/pve-edge-kernel) are custom Linux kernels specifically designed for Proxmox VE 7. Unlike regular LTS (Long-Term Support) kernels, PVE Edge Kernels aim to keep up with new kernel releases and provide the latest features and improvements. These kernels are tailored to the needs of Proxmox VE and are optimized for virtualization and container-based environments.\n\n  \n  Run the command below in the Proxmox Shell.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/edge-kernel.sh)\"\n  ~~~`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox CPU Scaling Governor\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/cpu.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Proxmox CPU Scaling Governor </h1>\n\n  The CPU scaling governor determines how the CPU frequency is adjusted based on the workload, with the goal of either conserving power or improving performance. By scaling the frequency up or down, the operating system can optimize the CPU usage and conserve energy when possible. [Generic Scaling Governors](https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html?#generic-scaling-governors)\n  \n  Run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/scaling-governor.sh)\"\n  ~~~`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox LXC Cleaner\",\n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Felpuig.xeill.net%2FMembers%2Fvcarceler%2Farticulos%2Fcontenedores-con-lxd-lxc%2Fcontainers.png&f=1&nofb=1\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Proxmox LXC Cleaner </h1>\n  This script provides options to delete logs and cache, and repopulate apt lists for Ubuntu and Debian systems.\n   \n  Run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/clean-lxcs.sh)\"\n  ~~~`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox LXC Updater\",\n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Felpuig.xeill.net%2FMembers%2Fvcarceler%2Farticulos%2Fcontenedores-con-lxd-lxc%2Fcontainers.png&f=1&nofb=1\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Proxmox LXC Updater </h1>\n  This script is designed to easily and quickly update all LXC containers on a variety of Linux distributions, including Ubuntu, Debian, Devuan, Alpine Linux, CentOS-Rocky-Alma, Fedora, and ArchLinux. The script automatically skips templates during the update process, making it even more convenient to use.<br> \n  \n  If there are other containers besides templates that need to be skipped during the update process, you can add them to the end of the command. This will ensure that these containers are also skipped.<br>\n  example: <code class=\"highlighter-rouge\">bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/update-lxcs.sh)\" -s 100 102 118</code>\n  \n  Run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/update-lxcs.sh)\"\n  ~~~`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox Dark Theme\",\n    \"content\": `<p align=\"center\"><img src=\"https://camo.githubusercontent.com/f6f33a09f8c1207dfb3dc1cbd754c2f3393562c11b1c999751ad9a91a656834a/68747470733a2f2f692e696d6775722e636f6d2f536e6c437948462e706e67\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Proxmox Discord Dark Theme </h1>\n  \n  A dark theme for the Proxmox Web UI is a custom theme created by [Weilbyte](https://github.com/Weilbyte/PVEDiscordDark) that changes the look and feel of the Proxmox web-based interface to a dark color scheme. This theme can improve the visual experience and make the interface easier on the eyes, especially when used in low-light environments.\n  \n  Run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash <(curl -s https://raw.githubusercontent.com/Weilbyte/PVEDiscordDark/master/PVEDiscordDark.sh ) install\n  ~~~\n  \n  To uninstall the theme, simply run the script with the <code class=\"highlighter-rouge\">uninstall</code> command.`\n  },\n  {\n    \"category\": \"Proxmox Tools\",\n\n    \"title\": \"Proxmox Backup Server Post Install\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/proxmoxve/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Proxmox Backup Server Post Install </h1>\n  The script will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.\n  \n  Run the command below in the <b>Proxmox Shell</b>. ⚠️ **Proxmox Backup Server ONLY**\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pbs-install.sh)\"\n  ~~~\n  \n  It is recommended to answer “yes” (y) to all options presented during the process.`\n  },\n  {\n    \"category\": \"Home Assistant\",\n\n    \"title\": \"Home Assistant OS VM\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/haos.png?raw=true\"/></p>\n   \n  <h1 align=\"center\" id=\"heading\"> Home Assistant OS VM </h1>\n  <h3 align=\"center\"> Option to create VM using Stable, Beta or Dev Image </h3>\n  \n  This script automates the process of creating a Virtual Machine (VM) using the official KVM (qcow2) disk image provided by the Home Assistant Team. It involves finding, downloading, and extracting the image, defining user-defined settings, importing and attaching the disk, setting the boot order, and starting the VM. It supports various storage types, and does not involve any hidden installations.\n\n  To create a new Proxmox Home Assistant OS VM, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/haos-vm-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  4GB RAM - 32GB Storage - 2vCPU - Stable Image ⚡</h3>\n  \n  🛈 The disk must have a minimum size of 32GB and its size cannot be changed during the creation of the VM.\n\n  After the script completes, click on the VM, then on the **_Summary_** tab to find the VM IP.\n  \n  **Home Assistant Interface: IP:8123**`\n  },\n  {\n    \"category\": \"Home Assistant\",\n\n    \"title\": \"PiMox HAOS VM\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/pimox.png?raw=true\" width=\"100\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\"> PiMox HAOS VM </h1>\n  \n  <h3 align=\"center\"> Option to create VM using Stable, Beta or Dev Image </h3>\n  \n  The script automates the manual process of finding, downloading and extracting the aarch64 (qcow2) disk image provided by the Home Assistant Team, creating a VM with user defined settings, importing and attaching the disk, setting the boot order and starting the VM.\n  \n  To create a new PiMox HAOS VM, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/pimox-haos-vm-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  4GB RAM - 32GB Storage - 2vCPU - Stable Image ⚡</h3>\n  \n  After the script completes, click on the VM, then on the **_Console_** tab to find the VM IP.\n  \n  **Home Assistant Interface: IP:8123**`\n  },\n  {\n    \"category\": \"Home Assistant\",\n\n    \"title\": \"Home Assistant Container LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/docker/docs/main/assets/images/docker-icon.svg\" height=\"100\"/>\n  <img src=\"https://avatars.githubusercontent.com/u/13844975?s=200&amp;v=4\" width=\"100\" height=\"100\"/><img src=\"https://avatars1.githubusercontent.com/u/22225832?s=400&amp;v=4\" alt=\"GitHub - portainer/portainer-docs: Portainer documentation\" width=\"100\" height=\"100\"/></p>\n    \n  <h1 align=\"center\" id=\"heading\"> Home Assistant Container LXC </h1>\n  <h3 align=\"center\"> Option to Use Fuse Overlayfs (Advanced)</h3> \n\n  A standalone container-based installation of Home Assistant Core means that the software is installed inside a Docker container, separate from the host operating system. This allows for flexibility and scalability, as well as improved security, as the container can be easily moved or isolated from other processes on the host.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox Home Assistant Container LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update ALL Containers, Remove Unused Images or Install HACS, run the command below in the <b>LXC Console</b>.\n    \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/homeassistant-v5.sh)\"\n  ~~~\n    \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 16GB Storage - 2vCPU ⚡</h3>\n    \n  **Home Assistant Interface: IP:8123**\n    \n  **Portainer Interface: IP:9000**\n    \n  ⚙️ **Path to HA /config**\n  ~~~bash\n  /var/lib/docker/volumes/hass_config/_data\n  ~~~`\n  \n  },\n  {\n    \"category\": \"Home Assistant\",\n\n    \"title\": \"Home Assistant Core LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://avatars.githubusercontent.com/u/13844975?s=200&amp;v=4\" width=\"100\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Home Assistant Core LXC </h1>\n  \n  A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n  \n  To create a new Proxmox Home Assistant Core LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update, Install HACS or Filebrowser, run the command below in the <b>LXC Console</b>. <br>\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/homeassistant-core-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n\n  **Home Assistant Interface: IP:8123**\n  \n  ⚙️ **Path to HA /config**\n  ~~~bash\n  /root/.homeassistant\n  ~~~`\n  \n  },\n  {\n    \"category\": \"Home Assistant\",\n\n    \"title\": \"Podman Home Assistant Container LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/podman.svg\" height=\"100\"/>\n  <img src=\"https://avatars.githubusercontent.com/u/13844975?s=200&amp;v=4\" height=\"100\"/><img/></p>\n  <h1 align=\"center\" id=\"heading\">Podman Home Assistant Container LXC</h1>\n  \n  A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox Podman Home Assistant Container LXC, run the command below in the <b>Proxmox Shell</b>. <br> \n  To Update Podman, Install HACS or FileBrowser, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/podman-homeassistant-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 16GB Storage - 2vCPU ⚡</h3>\n    \n  **Home Assistant Interface: IP:8123**\n    \n  ⚙️ **Path to HA /config**\n  ~~~bash\n  /var/lib/containers/storage/volumes/hass_config/_data\n  ~~~`\n\n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"ioBroker LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/ioBroker/ioBroker/blob/master/img/logos/ioBroker_Logo_256px.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> ioBroker LXC </h1>\n    \n  [ioBroker](https://www.iobroker.net/#en/intro) is an open-source platform for building and managing smart home automation systems. It provides a centralized control and management interface for connected devices, sensors, and other IoT devices. ioBroker integrates with a wide range of popular smart home systems, devices, and services, making it easy to automate tasks and processes, monitor and control devices, and collect and analyze data from a variety of sources. With its flexible architecture and easy-to-use interface, ioBroker is designed to make it simple for users to build and customize their own smart home automation systems, regardless of their technical background or experience.\n  \n  To create a new Proxmox ioBroker LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/iobroker-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n    \n  **ioBroker Interface: IP:8081**`\n  \n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"openHAB LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://www.openhab.org/openhab-logo-square.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">openHAB LXC</h1>\n\n  [openHAB](https://www.openhab.org/) is a popular open-source home automation platform that provides a vendor and technology agnostic solution for integrating and automating various smart home devices and services. It supports a wide range of devices and protocols, making it easy to bring together different systems and devices into a unified smart home ecosystem. With its user-friendly interface and powerful automation capabilities, openHAB makes it easy to create custom automations and monitor and control your smart home devices and systems, all from a single interface.\n  \n  To create a new Proxmox openHAB LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/openhab-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n    \n  **openHAB Interface: IP:8080**`\n  \n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"Homebridge LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.dingz.ch%2Fadmin%2Fdata%2Ffiles%2Fintegration%2Flogo%2F20%2F200514-em-logo-homebridge_logo.png%3Flm%3D1589459081&f=1&nofb=1\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">Homebridge LXC</h1>\n\n  [Homebridge](https://homebridge.io/) is a popular open-source software platform that enables you to integrate smart home devices and services that do not natively support Apple's HomeKit protocol into the HomeKit ecosystem. This allows you to control and automate these devices using Siri, the Home app, or other HomeKit-enabled apps, making it easy to bring together a variety of different devices into a unified smart home system. With Homebridge, you can expand the capabilities of your smart home, unlocking new possibilities for automating and controlling your devices and systems.\n\n  To create a new Proxmox Homebridge LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/homebridge-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 1vCPU ⚡</h3>\n    \n  **Homebridge Interface: IP:8581**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">admin</code>`\n  \n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"ESPHome LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/esphome/dark_icon@2x.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">ESPHome LXC</h1>\n  \n  [ESPHome](https://esphome.io/) is a platform for controlling ESP8266/ESP32-based devices using configuration files and integrating them with Home Automation systems. It provides a simple and flexible way to set up and manage the functionality of these devices, including defining and automating actions, monitoring sensors, and connecting to networks and other services. ESPHome is designed to be user-friendly and easy to use, and supports a wide range of features and integrations, making it a popular choice for home automation projects and IoT applications.\n\n  To create a new Proxmox ESPHome LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update ESPHome, run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/esphome-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n    \n  **ESPHome Interface: IP:6052**`\n  \n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"Node-Red LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/custom_integrations/nodered/icon.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">Node-Red LXC</h1>\n\n  [Node-RED](https://nodered.org/) is a visual programming tool that allows developers and non-developers alike to easily wire together hardware devices, APIs, and online services to create custom applications. It provides a visual interface for building workflows, making it easy to create and modify complex integrations without having to write any code. Node-RED is used in a wide range of applications, from simple automations to complex integrations, and is known for its simplicity, versatility, and ease of use.\n\n  To create a new Proxmox Node-RED LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Node-Red or Install Themes run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/node-red-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 1vCPU ⚡</h3>\n    \n  **Node-Red Interface: IP:1880**`\n    \n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"n8n LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://docs.n8n.io/_images/n8n-docs-icon.svg\" height=\"70\"/></p>\n  <h1 align=\"center\" id=\"heading\">n8n LXC</h1>\n    \n  [n8n](https://n8n.io/) is a workflow automation tool that enables users to automate various tasks and processes by connecting various data sources, systems, and services. It provides a visual interface for building workflows, allowing users to easily define and automate complex sequences of actions, such as data processing, conditional branching, and API calls. n8n supports a wide range of integrations, making it a versatile tool for automating a variety of use cases, from simple data processing workflows to complex business processes. With its extendable architecture, n8n is designed to be easily customizable and can be adapted to meet the specific needs of different users and industries.\n \n  To create a new Proxmox n8n LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update n8n, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/n8n-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 3GB Storage - 2vCPU ⚡</h3>\n    \n  **n8n Interface: IP:5678**`\n  \n  },\n  {\n    \"category\": \"Automation\",\n\n    \"title\": \"Scrypted LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://www.scrypted.app/images/web_hi_res_512.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">Scrypted LXC</h1>\n\n  <h3 align=\"center\"> Option to add Coral Edge TPU support </h3> \n  \n  [Scrypted](https://www.scrypted.app/) is a home automation platform that focuses on providing a seamless experience for managing and utilizing cameras in a smart home setup. It offers features like camera management, event triggering, video and image storage, and integration with other smart home devices and services. Scrypted is designed to make it easy to set up and use cameras in a home automation system, providing a simple and user-friendly interface for monitoring and automating camera-related tasks.\n\n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n  \n  To create a new Proxmox Scrypted LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/scrypted-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n    \n  **Scrypted Interface: (https)IP:10443**`\n  \n  },\n  {\n   \"category\": \"MQTT\",\n\n   \"title\": \"MQTT LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/eclipsemosquitto.svg\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">MQTT LXC</h1>\n  \n  [Eclipse Mosquitto](https://mosquitto.org/) is an open-source message broker that implements the MQTT (Message Queuing Telemetry Transport) protocol. It is a lightweight and simple-to-use message broker that allows IoT devices and applications to communicate with each other by exchanging messages in real-time. Mosquitto is widely used in IoT applications, due to its low resource requirements and its compatibility with a wide range of devices and platforms\n  \n  To create a new Proxmox MQTT LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/mqtt-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n    \n  Mosquitto comes with a password file generating utility called mosquitto_passwd.\n  ~~~bash\n  sudo mosquitto_passwd -c /etc/mosquitto/passwd <usr>\n  ~~~\n  Password: < password >\n  \n  Create a configuration file for Mosquitto pointing to the password file we have just created.\n  ~~~bash\n  sudo nano /etc/mosquitto/conf.d/default.conf\n  ~~~\n  This will open an empty file. Paste the command below into it.\n  ~~~bash\n  allow_anonymous false\n  persistence true\n  password_file /etc/mosquitto/passwd\n  listener 1883\n  ~~~\n  Save and exit the text editor with \"Ctrl+O\", \"Enter\" and \"Ctrl+X\".\n  \n  Now restart Mosquitto server.\n  ~~~bash\n  sudo systemctl restart mosquitto\n  ~~~`\n  \n  },\n  {\n    \"category\": \"MQTT\",\n\n    \"title\": \"EMQX LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/hassio-addons/repository/blob/master/emqx/icon.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">EMQX LXC</h1>\n\n  [EMQX](https://www.emqx.io/) is an open-source MQTT broker that features a high-performance, real-time message processing engine. It is designed to handle large-scale IoT deployments, providing fast and reliable message delivery for connected devices. EMQX is known for its scalability, reliability, and low latency, making it a popular choice for IoT and M2M applications. It also offers a wide range of features and plugins for enhanced security, monitoring, and management.\n  \n  To create a new Proxmox EMQX LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n    bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/emqx-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  \n  **EMQX Interface: IP:18083** \n    \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n\n  **password** <code class=\"highlighter-rouge\">public</code>\n\n  ⚙️ **Setup**\n  \n  Access Control ➡ Authentication  ➡ Create ➡ Next ➡ Next ➡ Create ➡ Users ➡ Add ➡ Username / Password (to authenicate with MQTT) ➡ Save. You're now ready to enjoy a high-performance MQTT Broker.`\n  \n  },\n  {\n    \"category\": \"Database\",\n\n    \"title\": \"Mariadb LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/mariadb.svg\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">Mariadb LXC</h1>\n\n  <h3 align=\"center\"> Option to Install Adminer</h3>\n  \n  [MariaDB](https://mariadb.org/) is a fork of the popular MySQL database management system that is developed and maintained by the open-source community. It is also commercially supported, offering enterprise-level features and support for organizations that require them. MariaDB aims to maintain high compatibility with MySQL, ensuring a drop-in replacement capability.\n  \n  To create a new Proxmox Mariadb LXC, run the command below in the <b>Proxmox Shell</b>.\n    \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/mariadb-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 1vCPU ⚡</h3>\n    \n  To enable MariaDB to listen to remote connections, you need to edit your defaults file. To do this, open the console in your MariaDB lxc:\n  ~~~bash\n  nano /etc/mysql/my.cnf\n  ~~~\n  Un-comment <code class=\"highlighter-rouge\">port =3306</code>\n  Save and exit the editor with \"Ctrl+O\", \"Enter\" and \"Ctrl+X\".\n  \n  ~~~bash\n  nano /etc/mysql/mariadb.conf.d/50-server.cnf\n  ~~~\n  Comment <code class=\"highlighter-rouge\">bind-address  = 127.0.0.1</code>\n  Save and exit the editor with \"Ctrl+O\", \"Enter\" and \"Ctrl+X\".\n  \n  For new MariaDB installations, the next step is to run the included security script. This script changes some of the less secure default options. We will use it to block remote root logins and to remove unused database users.\n  \n  Run the security script:\n  ~~~bash\n  sudo mysql_secure_installation\n  ~~~\n  Enter current password for root (enter for none): <code class=\"highlighter-rouge\">enter</code>\n    \n  Switch to unix_socket authentication [Y/n] <code class=\"highlighter-rouge\">y</code> \n    \n  Change the root password? [Y/n] <code class=\"highlighter-rouge\">n</code> \n    \n  Remove anonymous users? [Y/n] <code class=\"highlighter-rouge\">y</code> \n    \n  Disallow root login remotely? [Y/n] <code class=\"highlighter-rouge\">y</code>  \n    \n  Remove test database and access to it? [Y/n] <code class=\"highlighter-rouge\">y</code> \n    \n  Reload privilege tables now? [Y/n] <code class=\"highlighter-rouge\">y</code>  \n  \n  We will create a new account called admin with the same capabilities as the root account, but configured for password authentication. \n  ~~~bash\n  sudo mysql\n  ~~~ \n  Prompt will change to <code class=\"highlighter-rouge\">MariaDB [(none)]></code>\n  \n  Create a new local admin (Change the username and password to match your preferences)\n  ~~~sql\n  CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';\n  ~~~\n  Give local admin root privileges (Change the username and password to match above)\n  ~~~sql\n  GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;\n  ~~~\n  \n  Now, we'll give the user admin root privileges and password-based access that can connect from anywhere on your local area network (LAN), which has addresses in the subnet 192.168.100.0/24. This is an improvement because opening a MariaDB server up to the Internet and granting access to all hosts is bad practice.. Change the **_username_**, **_password_** and **_subnet_** to match your preferences:\n  ~~~sql\n  GRANT ALL ON *.* TO 'admin'@'192.168.100.%' IDENTIFIED BY 'password' WITH GRANT OPTION;\n  ~~~\n  Flush the privileges to ensure that they are saved and available in the current session:\n  ~~~sql\n  FLUSH PRIVILEGES;\n  ~~~\n  command below this, exit the MariaDB shell:\n  ~~~bash\n  exit\n  ~~~\n  Log in as the new database user you just created:\n  ~~~bash\n  mysql -u admin -p\n  ~~~\n  Create a new database:\n  ~~~sql\n  CREATE DATABASE homeassistant;\n  ~~~\n  command below this, exit the MariaDB shell:\n  ~~~bash\n  exit\n  ~~~\n  ⚠️ Reboot the lxc \n  \n  Checking status.\n  ~~~bash\n  sudo systemctl status mariadb\n  ~~~ \n  Change the recorder: <code class=\"highlighter-rouge\">db_url:</code> in your HA configuration.yaml\n    \n  Example:\n  ~~~bash\n  recorder:\n    db_url: mysql://admin:password@192.168.100.26:3306/homeassistant?charset=utf8mb4\n  ~~~\n    \n  ⚙️ [**Adminer**](https://www.adminer.org/) is a full-featured database management tool\n    \n  **Adminer Interface: IP/adminer/**`\n  },\n  {\n    \"category\": \"Database\",\n\n    \"title\": \"PostgreSQL LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/postgresql.svg\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">PostgreSQL LXC</h1>\n  <h3 align=\"center\"> Option to Install Adminer</h3>\n  \n  [PostgreSQL](https://www.postgresql.org/) (often referred to as Postgres) is an open-source relational database management system that is known for its extensibility and strict adherence to SQL standards. It is a free and powerful database solution, suitable for a wide range of applications, from small projects to large enterprise systems. PostgreSQL is widely used for its reliability, feature-richness, and robustness.\n  \n  To create a new Proxmox PostgreSQL LXC, run the command below in the <b>Proxmox Shell</b>.\n    \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/postgresql-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 1vCPU ⚡</h3>\n  \n  To make sure our PostgreSQL is secured with a strong password, set a password for its system user and then change the default database admin user account\n  \n  Change user password\n  ~~~bash\n  passwd postgres\n  ~~~\n  Login using Postgres system account\n    \n  ~~~bash\n  su - postgres\n  ~~~\n  Now, change the Admin database password \n  ~~~bash\n  psql -c \"ALTER USER postgres WITH PASSWORD 'your-password';\"\n  ~~~\n  Create a new user.\n  ~~~bash\n  psql\n  ~~~\n  ~~~sql\n  CREATE USER admin WITH PASSWORD 'your-password';\n  ~~~\n  Create a new database:\n  ~~~sql\n  CREATE DATABASE homeassistant;\n  ~~~\n  Grant all rights or privileges on created database to the user\n  ~~~sql\n  GRANT ALL ON DATABASE homeassistant TO admin;\n  ~~~\n  To exit psql\n  ~~~bash\n  \\\\q\n  ~~~ \n  Then type exit to get back to root\n  \n  Change the recorder: <code class=\"highlighter-rouge\">db_url:</code> in your HA configuration.yaml\n    \n  Example:\n  ~~~bash\n  recorder:\n    db_url: postgresql://admin:your-password@192.168.100.20:5432/homeassistant?client_encoding=utf8\n  ~~~\n\n  ⚙️ [**Adminer**](https://www.adminer.org/) is a full-featured database management tool\n    \n  **Adminer Interface: IP/adminer/**`\n  },\n  {\n    \"category\": \"Database\",\n\n    \"title\": \"InfluxDB LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/influx.svg\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">InfluxDB LXC</h1>\n  <h3 align=\"center\"> Options to Install InfluxDB v1 or v2 and Telegraf</h3>\n  \n  [InfluxDB](https://www.influxdata.com/) is designed to handle high write and query loads, and is optimized for storing and analyzing time-stamped data, such as metrics, events, and logs. InfluxDB supports SQL-like query language and has a built-in HTTP API for data ingestion and retrieval. It's commonly used for IoT and industrial applications where time-series data is involved.\n  \n  [Telegraf](https://www.influxdata.com/time-series-platform/telegraf/) is a server agent that collects, processes, and aggregates metrics and events data from different sources, such as systems, databases, and APIs, and outputs the data to various outputs, such as InfluxDB, Prometheus, Elasticsearch, and many others.\n  \n  To create a new Proxmox InfluxDB LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n    bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/influxdb-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n InfluxDB v1.x does not have a web UI included with the software by default. Instead, it provides a command-line interface (CLI) that allows you to interact with the database and perform administrative tasks.\n\n If you prefer a web UI for InfluxDB, it may be worth considering upgrading to InfluxDB v2.x, which includes a built-in web UI. This interface provides a range of features for working with the database, including data visualization, querying, and management tools, all accessible via a web browser.\n \n InfluxDB V2 Interface: IP:8086\n\n ⚙️ **InfluxDB Configuration**\n  \n  ~~~yaml\n  nano /etc/influxdb/influxdb.conf\n  ~~~\n  \n ⚙️ **Telegraf Configuration**\n  \n  ~~~yaml\n  nano /etc/telegraf/telegraf.conf\n  ~~~`\n  \n  },\n  {\n    \"category\": \"Zigbee - Zwave\",\n\n    \"title\": \"Zigbee2MQTT LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/Koenkk/zigbee2mqtt/blob/master/images/logo_bee_only.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\">Zigbee2MQTT LXC</h1>\n\n  <h3 align=\"center\"> Option to switch to Edge/dev branch</h3>\n  \n  [Zigbee2MQTT](https://www.zigbee2mqtt.io/) is an open-source software project that allows you to use Zigbee-based smart home devices (such as those sold under the Philips Hue and Ikea Tradfri brands) with MQTT-based home automation systems, like Home Assistant, Node-RED, and others. The software acts as a bridge between your Zigbee devices and MQTT, allowing you to control and monitor these devices from your home automation system.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox Zigbee2MQTT LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Zigbee2MQTT, run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/zigbee2mqtt-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  ⚙️ **Determine the location of your adapter**\n    \n  ~~~bash\n  ls -l /dev/serial/by-id\n  ~~~\n  Example Output: <code class=\"highlighter-rouge\">lrwxrwxrwx 1 root root 13 Jun 19 17:30 usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB0</code>\n  \n  \n  ⚙️ ⚠️ **Before you start Zigbee2MQTT you need to edit the [configuration.yaml](https://www.zigbee2mqtt.io/guide/configuration/)**\n    \n  ~~~bash\n  nano /opt/zigbee2mqtt/data/configuration.yaml\n  ~~~\n  \n  Save and exit the editor with “Ctrl+O”, “Enter” and “Ctrl+X”\n  \n  Example:\n  ~~~yaml\n  frontend:\n    port: 9442\n  homeassistant: true\n  permit_join: false\n  mqtt:\n    base_topic: zigbee2mqtt\n    server: 'mqtt://192.168.86.224:1883'\n    user: usr\n    password: pwd\n    keepalive: 60\n    reject_unauthorized: true\n    version: 4\n  serial:\n    port: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0\n    #adapter: deconz\t\t#(uncomment for ConBee II)\n  advanced:\n    pan_id: GENERATE\n    network_key: GENERATE\n    channel: 20\n  ~~~\n  ⚙️ **Zigbee2MQTT can be started after completing the configuration**\n    \n  ~~~bash\n  cd /opt/zigbee2mqtt && npm start\n  ~~~`\n\n  },\n  {\n    \"category\": \"Zigbee - Zwave\",\n\n    \"title\": \"deCONZ LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://phoscon.de/img/phoscon-logo128x.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> deCONZ LXC </h1>\n  \n  [deCONZ](https://www.phoscon.de/en/conbee2/software#deconz) is a software for managing and controlling Zigbee-based smart home devices. It allows for setting up, configuring and visualizing the status of connected devices, as well as for triggering actions and automations. It works as a bridge between the Zigbee network and other home automation systems and can be used as a standalone solution or integrated into existing setups.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox deCONZ LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n    bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/deconz-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **deCONZ Interface: IP:80**`\n  \n  },\n  {\n    \"category\": \"Zigbee - Zwave\",\n\n    \"title\": \"Z-Wave JS UI LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/zwave-js/zwave-js-ui/blob/master/docs/_images/app_logo.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Z-Wave JS UI LXC </h1>\n  \n  [Z-Wave JS UI](https://github.com/zwave-js/zwave-js-ui#) is an open-source software that serves as a gateway between Z-Wave devices and MQTT (Message Queuing Telemetry Transport) protocol, allowing users to control and monitor their Z-Wave devices via a user interface. The software provides a configurable platform to manage Z-Wave networks and integrate with other smart home systems through MQTT.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n  \n  To create a new Proxmox Z-Wave JS UI LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Z-Wave JS UI, run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/zwave-js-ui-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Z-Wave JS UI Interface: IP:8091**`\n  \n  },\n  {\n    \"category\": \"Monitoring - Analytics\",\n\n    \"title\": \"Uptime Kuma LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/louislam/uptime-kuma/blob/master/public/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Uptime Kuma LXC </h1>\n  \n  [Uptime Kuma](https://github.com/louislam/uptime-kuma#uptime-kuma) is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.\n  \n  To create a new Proxmox Uptime Kuma LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Uptime Kuma, run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/uptimekuma-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Uptime Kuma Interface: IP:3001**`\n  \n  },\n  {\n    \"category\": \"Monitoring - Analytics\",\n  \n    \"title\": \"Change Detection LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/dgtlmoon/changedetection.io/blob/master/changedetectionio/static/images/avatar-256x256.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Change Detection LXC </h1>\n  \n  [Change Detection](https://changedetection.io/) is a service that allows you to monitor changes to web pages and receive notifications when changes occur. It can be used for a variety of purposes such as keeping track of online price changes, monitoring news websites for updates, or tracking changes to online forums.\n\n  To create a new Proxmox Change Detection LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Change Detection, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/changedetection-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Change Detection Interface: IP:5000**`\n  \n  \n  },\n  {\n    \"category\": \"Monitoring - Analytics\",\n\n    \"title\": \"Prometheus LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/prometheus.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Prometheus LXC </h1>\n  \n  [Prometheus](https://prometheus.io/) is widely used to monitor the performance and health of various infrastructure components and applications, and trigger alerts based on predefined rules. It has a multi-dimensional data model and supports various data sources and exporters, making it an extremely flexible and scalable monitoring solution.\n  \n  To create a new Proxmox Prometheus LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/prometheus-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 1vCPU ⚡</h3>\n  \n  **Prometheus Interface: IP:9090**`\n  \n  },\n  {\n    \"category\": \"Monitoring - Analytics\",\n\n    \"title\": \"Grafana LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fdocs.checkmk.com%2Flatest%2Fimages%2Fgrafana_logo.png&f=1&nofb=1\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Grafana LXC </h1>\n  \n  [Grafana](https://grafana.com/) is a data visualization and monitoring platform that enables users to query, visualize, alert on and understand metrics, logs, and other data sources. It integrates with various data sources, including Prometheus, InfluxDB, Elasticsearch, and many others, to present a unified view of the data and enable users to create insightful and interactive dashboards.\n  \n  To create a new Proxmox Grafana LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/grafana-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n \n  As an alternative option, you can use Alpine Linux and the Grafana package to create a Grafana LXC container with faster creation time and minimal system resource usage. <br>\n  By default, the root password is set to <code class=\"highlighter-rouge\">alpine</code>. If you choose to use advanced settings, you will need to define a password, autologin is currently unavailable.\n\n  To create a new Proxmox Alpine-Grafana LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  ~~~bash\n  bash -c \"$(wget -qO - https://github.com/tteck/Proxmox/raw/main/ct/alpine-grafana-v5.sh)\"\n  ~~~\n\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  256Mib RAM - 500MiB Storage - 1vCPU ⚡</h3>\n\n  **Grafana Interface: IP:3000**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">admin</code>`\n  \n  },\n  {\n    \"category\": \"Docker - Kubernetes\",\n\n    \"title\": \"Docker LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/docker.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Docker LXC </h1>\n  <h3 align=\"center\"> Options to Install Portainer and/or Docker Compose V2 (Fuse Overlayfs is in \"Advanced\")</h3>\n  \n  [Docker](https://www.docker.com/) is an open-source project for automating the deployment of applications as portable, self-sufficient containers.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox Docker LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/docker-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **⚠ Run Compose V2 by replacing the hyphen (-) with a space, using docker compose, instead of docker-compose.**\n  \n  **Portainer Interface: IP:9000**`\n\n  },\n  {\n    \"category\": \"Docker - Kubernetes\",\n\n    \"title\": \"Umbrel LXC\",\n  \n    \"content\": `<p align=\"center\"><img src=\"https://uploads-ssl.webflow.com/62966b49981ba146f4842f45/62966b49981ba15b44842fe4_umbrel-logo-compact-purple.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Umbrel LXC </h1>\n  \n  [Umbrel](https://umbrel.com/) is an open-source project that provides a secure and easy-to-use software solution for hosting your own personal server, enabling you to have full control over your data and online services. The OS provides a comprehensive web interface and pre-configured applications for various tasks, making self-hosting accessible for non-technical users.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox Umbrel LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/umbrel-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Umbrel Interface: IP** (a reboot is required before app installs)`\n  \n  },\n  {\n    \"category\": \"Docker - Kubernetes\",\n\n    \"title\": \"CasaOS LXC\",\n  \n    \"content\": `<p align=\"center\"><img src=\"https://www.casaos.io/images/casa_9c491a0f.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> CasaOS LXC </h1>\n  \n  [CasaOS](https://www.casaos.io/) is a software that aims to make it easy for users to create a personal cloud system at home. It uses the Docker ecosystem to provide a simple, user-friendly experience for managing various applications and services.\n  \n  🛈 *If the LXC is created Privileged, the script will automatically set up USB passthrough.*\n\n  To create a new Proxmox CasaOS LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/casaos-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **CasaOS Interface: IP**`\n  \n  },\n  {\n    \"category\": \"Docker - Kubernetes\",\n\n    \"title\": \"k0s Kubernetes LXC\",\n  \n    \"content\": `<p align=\"center\"><img src=\"https://k0sproject.io/images/k0s-logo.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> k0s Kubernetes LXC </h1>\n  <h3 align=\"center\"> Option to Install Helm Package Manager</h3>\n  \n  [k0s](https://k0sproject.io/) is a lightweight, easy-to-deploy, and certified Kubernetes distribution designed to simplify the process of deploying and managing a Kubernetes cluster. It focuses on simplicity and ease-of-use while providing a secure and production-ready environment for running applications.\n  \n  \n  To create a new Proxmox k0s Kubernetes LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/k0s-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n\n  ⚙️ **Config Path**\n\n  ~~~yaml\n  /etc/k0s/k0s.yaml\n  ~~~`\n  \n  },\n  {\n    \"category\": \"Docker - Kubernetes\",\n\n    \"title\": \"Podman LXC\",\n  \n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/podman.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Podman LXC </h1>\n  \n  [Podman](https://podman.io/) is an open-source, daemonless, and portable container engine that allows users to manage containers on Linux systems without the need for a daemon or system service to be running in the background. It provides an API and a command-line interface that can be used to create, run, and manage containers and their associated networks, volumes, and images. It is built on top of the Open Container Initiative (OCI) runtime specification, making it compatible with other OCI-compliant container engines.\n  \n  \n  To create a new Proxmox Podman LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/podman-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2vCPU ⚡</h3>`\n    \n  },\n  {\n    \"category\": \"Operating System\",\n\n    \"title\": \"Debian LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://www.debian.org/Pics/debian-logo-1024x576.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Debian LXC </h1>\n  Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.\n\n  To create a new Proxmox Debian LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/debian-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>`\n  \n  },\n  {\n    \"category\": \"Operating System\",\n\n    \"title\": \"Ubuntu LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://assets.ubuntu.com/v1/29985a98-ubuntu-logo32.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Ubuntu LXC </h1>\n  <h3 align=\"center\" id=\"heading\"> Option to select version 18.04, 20.04, 21.10 or 22.04</h3>\n  Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.\n  \n  To create a new Proxmox Ubuntu LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/ubuntu-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU - 22.04 ⚡</h3>`\n  \n  },\n  {\n    \"category\": \"Operating System\",\n\n    \"title\": \"Alpine LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/alpinelinux.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Alpine LXC </h1>\n  A security-oriented, lightweight Linux distribution based on musl and BusyBox.<br>\n  By default, the root password is set to <code class=\"highlighter-rouge\">alpine</code>. If you choose to use advanced settings, you will need to define a password, autologin is currently unavailable.\n\n  To create a new Proxmox Alpine LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/alpine-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 100MiB Storage - 1vCPU ⚡</h3>\n\n  ⚙️ **Default Password** <code class=\"highlighter-rouge\">alpine</code>\n\n  ⚙️ **To Update Alpine**\n  \n  ~~~bash\n  apk update && apk upgrade\n  ~~~`\n  },\n  {\n    \"category\": \"Operating System\",\n\n    \"title\": \"Arch LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://gitlab.archlinux.org/uploads/-/system/appearance/header_logo/1/lol2.png\n    \" alt=\"Arch\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Arch Linux LXC </h1>\n  Arch Linux is an independently developed, x86-64 general-purpose Linux distribution that strives to provide the latest stable versions of most software by command below a rolling-release model. The default installation is a minimal base system, configured by the user to only add what is purposely required.\n  \n  To create a new Proxmox Arch Linux LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/archlinux-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 1GB Storage - 1vCPU ⚡</h3>\n\n\n  ⚙️ **Default Password** <code class=\"highlighter-rouge\">archlinux</code>\n  \n  ⚙️ **To get updated:**\n\n  <code class=\"highlighter-rouge\">pacman-key --init</code>\n\n  <code class=\"highlighter-rouge\">pacman-key --populate archlinux</code>\n\n  <code class=\"highlighter-rouge\">pacman -Sy archlinux-keyring && pacman -Su</code>`\n  },\n  {\n    \"category\": \"Operating System\",\n\n    \"title\": \"Devuan LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://avatars.githubusercontent.com/u/9929258?s=200&v=4?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Devuan LXC </h1>\n\n  [Devuan](https://www.devuan.org/) is a free and open-source operating system based on Debian, but without the systemd init system. It aims to provide users with a reliable and stable Debian-based system that retains traditional init systems, giving users control over their system and avoiding the controversies surrounding the adoption of systemd.\n\n  To create a new Proxmox Devuan LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/devuan-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 1GB Storage - 1vCPU ⚡</h3>\n\n  ⚙️ **Default Password** <code class=\"highlighter-rouge\">devuan</code>`\n\n  },\n  {\n    \"category\": \"Operating System\",\n\n    \"title\": \"Rocky Linux LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/rockylinux.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Rocky Linux LXC </h1>\n\n  [Rocky Linux](https://rockylinux.org/) is a community-driven Linux distribution that aims to provide a free and open-source operating system that is fully compatible with Red Hat Enterprise Linux (RHEL). Rocky Linux aims to provide a stable and predictable platform for enterprise users, while also incorporating modern features and tools.\n\n  To create a new Proxmox Rocky Linux LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/rockylinux-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 1GB Storage - 1vCPU ⚡</h3>\n\n  ⚙️ **Default Password** <code class=\"highlighter-rouge\">rockylinux</code>\n\n  ⚙️ **To Update Rocky Linux**\n  \n  ~~~bash\n  dnf -y update && dnf -y upgrade\n  ~~~`\n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"Nginx Proxy Manager LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/nginxproxymanager.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Nginx Proxy Manager LXC </h1>\n  \n  [Nginx Proxy Manager](https://nginxproxymanager.com/) is a tool that provides a web-based interface to manage Nginx reverse proxies. It enables users to easily and securely expose their services to the internet by providing features such as HTTPS encryption, domain mapping, and access control. It eliminates the need for manual configuration of Nginx reverse proxies, making it easy for users to quickly and securely expose their services to the public.\n  \n  To create a new Proxmox Nginx Proxy Manager LXC Container, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Nginx Proxy Manager, run the command below in the <b>LXC Console</b>.\n  ~~~yaml\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/nginxproxymanager-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 3GB Storage - 1vCPU ⚡</h3>\n  \n  Forward port <code class=\"highlighter-rouge\">80</code> and <code class=\"highlighter-rouge\">443</code> from your router to your Nginx Proxy Manager LXC IP.\n  \n  Add the command below to your <code class=\"highlighter-rouge\">configuration.yaml</code> in Home Assistant.\n  ~~~yaml\n  http:\n    use_x_forwarded_for: true\n    trusted_proxies:\n    - 192.168.100.27 ###(Nginx Proxy Manager LXC IP)###\n  ~~~\n  \n  **Nginx Proxy Manager Interface: IP:81**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin@example.com</code>\n  \n  **password** <code class=\"highlighter-rouge\">changeme</code>`\n\n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"YunoHost LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://yunohost.org/_images/ynh_logo_white_300dpi.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> YunoHost LXC </h1>\n   \n  [YunoHost](https://yunohost.org/#/) is an operating system aiming for the simplest administration of a server, and therefore democratize self-hosting, while making sure it stays reliable, secure, ethical and lightweight. \n  \n  To create a new Proxmox YunoHost LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/yunohost-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 20GB Storage - 2vCPU ⚡</h3>\n  \n  **YunoHost Interface: IP/**`\n  \n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"UniFi Network Application LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fblog.ui.com%2Fwp-content%2Fuploads%2F2016%2F10%2Funifi-app-logo-300x108.png&f=1&nofb=1\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> UniFi Network Application LXC </h1>\n  \n  <h3 align=\"center\"> With Local Controller Option </h3>\n  \n  UniFi Network Application is a software that helps manage and monitor UniFi networks (Wi-Fi, Ethernet, etc.) by providing an intuitive user interface and advanced features. It allows network administrators to configure, monitor, and upgrade network devices, as well as view network statistics, client devices, and historical events. The aim of the application is to make the management of UniFi networks easier and more efficient.\n  \n  To create a new Proxmox UniFi Network Application LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Unifi Network Application, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/unifi-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **UniFi Interface: (https)IP:8443**`\n  \n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"Omada Controller LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://www.enterpriseitpro.net/wp-content/uploads/2020/12/logo-omada.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Omada Controller LXC </h1>\n  \n  Omada Controller is a software application used to manage TP-Link's Omada EAP (Enterprise Access Point) devices. It allows administrators to centrally manage a large number of EAPs, monitor network performance, and control user access to the network. The software provides an intuitive interface for network configuration, firmware upgrades, and network monitoring. By using the Omada Controller, administrators can streamline the management process, reduce manual intervention, and improve the overall security and reliability of the network.\n  \n  To create a new Proxmox Omada Controller LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/omada-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Omada Interface: (https)IP:8043**`\n  \n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"WireGuard LXC\",\n  \n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcdn.icon-icons.com%2Ficons2%2F2699%2FPNG%2F512%2Fwireguard_logo_icon_168760.png&f=1&nofb=1\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> WireGuard LXC </h1>\n   \n  WireGuard is a free and open-source virtual private network (VPN) software that uses modern cryptography to secure the data transmitted over a network. It is designed to be fast, secure, and easy to use. WireGuard supports various operating systems, including Linux, Windows, macOS, Android, and iOS. It operates at the network layer and is capable of being used with a wide range of protocols and configurations. Unlike other VPN protocols, WireGuard is designed to be simple and fast, with a focus on security and speed. It is known for its ease of setup and configuration, making it a popular choice for personal and commercial use.\n\n  To create a new Proxmox WireGuard LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update WireGuard or Install a Dashboard, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/wireguard-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  ⚙️ **Host Configuration**\n  \n  ~~~yaml\n  nano /etc/pivpn/wireguard/setupVars.conf\n  ~~~\n  ⚙️ **Add Clients** \n  \n  ~~~yaml\n  pivpn add\n  ~~~`\n\n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"Cronicle Primary LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/jhuckaby/Cronicle/blob/master/htdocs/images/logo-128.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Cronicle Primary LXC </h1>\n  \n  [Cronicle](https://github.com/jhuckaby/Cronicle) is a task scheduling and management software that allows users to schedule and run tasks automatically on multiple servers. It has a web-based user interface that provides a convenient and centralized way to manage tasks and view their execution status. With Cronicle, users can schedule tasks to run at specific times, or on demand, and assign tasks to specific worker servers. The software provides real-time statistics and a live log viewer to help users monitor the progress of tasks. Cronicle is designed for use in large-scale environments, making it a valuable tool for automation and management of complex and time-sensitive tasks.\n\n  To create a new Proxmox Cronicle Primary LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Cronicle or Install Cronicle Worker, run the command below in a <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/cronicle-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Cronicle Primary Interface: IP:3012**\n\n  ⚙️ Config Path\n  ~~~bash\n  /opt/cronicle/conf/config.json\n  ~~~\n\n  Primary and Worker Private Keys Must Match.`\n  \n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"MeshCentral LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/Ylianst/MeshCentral/blob/master/public/favicon-303x303.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> MeshCentral LXC </h1>\n  \n  [MeshCentral](https://meshcentral.com/info/) is a web-based computer management platform that provides remote control and management capabilities for computers. It allows administrators to manage and control computers over a local network or the internet through a single, centralized web-based interface. With MeshCentral, users can monitor the status of computers, perform remote administration tasks, and control the power state of machines. The software supports various operating systems and provides real-time updates and alerts to keep administrators informed of the status of their systems. MeshCentral is designed to provide an easy-to-use, scalable, and secure solution for remote computer management, making it a valuable tool for IT administrators, helpdesk support, and remote workers.\n  \n  To create a new Proxmox MeshCentral LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/meshcentral-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **MeshCentral Interface: IP**`\n  \n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"Tailscale\",\n    \"content\": `<p align=\"center\"><img src=\"https://avatars.githubusercontent.com/u/48932923?v=4&s=100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Tailscale</h1>\n  \n  [Tailscale](https://tailscale.com/) is a software-defined networking solution that enables secure communication between devices over the internet. It creates a virtual private network (VPN) that enables devices to communicate with each other as if they were on the same local network. Tailscale works even when the devices are separated by firewalls or subnets, and provides secure and encrypted communication between devices. With Tailscale, users can connect devices, servers, computers, and cloud instances to create a secure network, making it easier to manage and control access to resources. Tailscale is designed to be easy to set up and use, providing a streamlined solution for secure communication between devices over the internet.\n  \n  To Install Talescale on an existing LXC, run the command below in the <b>Proxmox Shell</b> (replace <code class=\"highlighter-rouge\">106</code> with your LXC ID).\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/add-tailscale-lxc.sh)\" -s 106\n  ~~~\n  After the script finishes, reboot the LXC then run <code class=\"highlighter-rouge\">tailscale up</code> in the LXC console\n  \n  [**Tailscale Login**](https://login.tailscale.com/start)`\n  \n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"CrowdSec\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/crowdsecurity/crowdsec-docs/main/crowdsec-docs/static/img/crowdsec_no_txt.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> CrowdSec</h1>\n\n  [CrowdSec](https://crowdsec.net/) is a free and open-source intrusion prevention system (IPS) designed to provide network security against malicious traffic. It is a collaborative IPS that analyzes behaviors and responses to attacks by sharing signals across a community of users. CrowdSec leverages the collective intelligence of its users to detect and respond to security threats in real-time. With CrowdSec, network administrators can set up protection against a wide range of threats, including malicious traffic, bots, and denial-of-service (DoS) attacks. The software is designed to be easy to use and integrate with existing security systems, making it a valuable tool for enhancing the security of any network.\n  \n  To Install CrowdSec, ⚠️ run the command below in the <b>LXC console</b>.\n  \n  ~~~bash\n    bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/crowdsec.sh)\"\n  ~~~\n  \n  [**Control center for your CrowdSec machines.**](https://app.crowdsec.net/product-tour)`\n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"Keycloak LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://www.keycloak.org/resources/images/keycloak_icon_512px.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Keycloak LXC</h1>\n\n  [Keycloak](https://www.keycloak.org/) is an open-source identity and access management solution that provides centralized authentication and authorization for modern applications and services. It enables organizations to secure their applications and services with a single sign-on (SSO) solution, reducing the need for users to remember multiple login credentials. Keycloak supports various authentication protocols, including SAML, OAuth, and OpenID Connect, and integrates with a wide range of applications and services. With Keycloak, administrators can manage user identities, define security policies, and monitor access to their applications and services. The software is designed to be scalable, flexible, and easy to use, making it a valuable tool for enhancing the security and usability of modern applications and services.\n  \n  To create a new Proxmox Keycloak LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/keycloak-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2CPU ⚡</h3>\n\n  **Keycloak Interface: IP:8080** (First start can take a few minutes)\n  \n  ⚙️ **Initial Login**\n  \n  The initial admin user can be added manually using the web frontend when accessed from localhost or automatically using environment variables.\n  \n  To add the initial admin user using environment variables, set <code class=\"highlighter-rouge\">KEYCLOAK_ADMIN</code> for the initial admin username and <code class=\"highlighter-rouge\">KEYCLOAK_ADMIN_PASSWORD</code> for the initial admin password.\n  \n  First, stop Keycloak\n  ~~~bash\n  systemctl stop keycloak.service\n  ~~~\n  then start Keycloak by coping & pasting the command below (only needed once)\n  ~~~bash\n  cd /opt/keycloak\n  export KEYCLOAK_ADMIN=admin\n  export KEYCLOAK_ADMIN_PASSWORD=changeme\n  bin/kc.sh start-dev \n  ~~~`\n  },\n  {\n    \"category\": \"Server - Networking\",\n\n    \"title\": \"Mikrotik RouterOS VM\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/mikrotik.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Mikrotik RouterOS VM </h1>\n  \n  [Mikrotik RouterOS](https://wiki.mikrotik.com/wiki/Manual:TOC) is a Linux-based operating system that transforms a computer into a router. It provides a wide range of features for network routing, firewall, bandwidth management, wireless access point, backhaul link, hotspot gateway, VPN server, and many others. RouterOS is a versatile solution that supports various network configurations, including those with multiple WAN links, hotspots, and VPNs. It is highly customizable, allowing administrators to configure and manage their networks according to their specific requirements. With RouterOS, network administrators can monitor and control the performance and security of their networks, ensuring reliable and secure communication for their users. The software is designed to be easy to use and provides a wide range of tools for network management, making it a valuable solution for small and large networks alike.\n  \n  To create a new Proxmox Mikrotik RouterOS VM, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/mikrotik-routeros-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 2GB Storage - 1CPU ⚡</h3>\n\n  Setup is done via VM console.\n\n  ⚙️ **Initial Login**\n\n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">no password</code>`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"Audiobookshelf LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Audiobookshelf LXC </h1>\n  \n  [Audiobookshelf](https://www.audiobookshelf.org/) is a Self-hosted audiobook and podcast server.\n\n  To create a new Proxmox Audiobookshelf LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/audiobookshelf-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Audiobookshelf Interface: IP:13378**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"Plex Media Server LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/plex-white.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Plex Media Server LXC </h1>\n  <h3 align=\"center\" id=\"heading\"> With Hardware Acceleration Support </h3> \n  \n  To create a new Proxmox Plex Media Server LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Plex Media Server, run the command below in the <b>LXC Console</b>.\n\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/plex-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Plex Media Server Interface: IP:32400/web**`\n  \n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"Emby Media Server LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/emby/icon.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\"> Emby Media Server LXC </h1>\n  \n  [Emby](https://emby.media/) brings together your personal videos, music, photos, and live television.\n  \n  To create a new Proxmox Emby Media Server LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Emby, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/emby-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Emby Media Server Interface: IP:8096**`\n  \n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"Jellyfin Media Server LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/jellyfin/icon.png?raw=true\" height=\"100\"/></p>\n  <h1 align=\"center\" id=\"heading\"> Jellyfin Media Server LXC </h1>\n  \n  [TurnKey has a LXC CT for Jellyfin](https://www.turnkeylinux.org/mediaserver)\n  \n  To create a new Proxmox Jellyfin Media Server LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n    bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/jellyfin-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Jellyfin Media Server Interface: IP:8096**\n  \n  FFmpeg path: <code class=\"highlighter-rouge\">/usr/lib/jellyfin-ffmpeg/ffmpeg</code>`\n  \n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"NextCloudPi LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/nextcloud/nextcloudpi/blob/master/ncp-app/img/app.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">NextCloudPi LXC </h1>\n  \n  [NextCloudPi](https://github.com/nextcloud/nextcloudpi#features) is a popular self-hosted solution for file collaboration and data storage. It is built on the NextCloud software, which is an open-source platform for data management. NextCloudPi provides a simple and efficient way to set up a private cloud server, allowing users to store and share their data securely. With NextCloudPi, users can access their files and data from anywhere and collaborate with others, making it a valuable solution for personal and business use. The software supports various platforms, including desktop, mobile, and web, providing a seamless and unified experience for users. NextCloudPi is designed to be easy to set up and use, making it a popular choice for those who want to host their own data and collaborate with others in a secure and private environment.\n  \n  To create a new Proxmox NextCloudPi LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/nextcloudpi-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **NextCloudPi Interface: (https)IP/**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"OpenMediaVault LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/openmediavault.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> OpenMediaVault LXC </h1>\n  \n  [OpenMediaVault](https://www.openmediavault.org/) is a next-generation network-attached storage (NAS) solution based on Debian Linux. It provides a web-based interface for managing and storing digital data, making it easy to use and set up. OpenMediaVault supports various storage protocols, including SMB/CIFS, NFS, and FTP, and provides a wide range of features for data management, such as user and group management, disk quotas, and data backup and recovery. The software is designed to be flexible and scalable, making it a valuable solution for both personal and enterprise use. OpenMediaVault provides a stable and reliable platform for managing and storing digital data, making it a popular choice for those who want to host their own data and ensure its security and privacy. With OpenMediaVault, users can access their data from anywhere and easily share it with others, making it a valuable tool for collaboration and data management.\n  \n  To create a new Proxmox OpenMediaVault LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/omv-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **OpenMediaVault Interface: IP**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">openmediavault</code>`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"Navidrome LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/navidrome/navidrome/master/resources/logo-192x192.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Navidrome LXC </h1>\n  \n  [Navidrome](https://www.navidrome.org/) is a music server solution that makes your music collection accessible from anywhere. It provides a modern web-based user interface and compatibility with a range of third-party mobile apps for both iOS and Android devices. With Navidrome, users can access their music collection from anywhere, whether at home or on the go. The software supports a variety of music formats, making it easy for users to play their favorite songs and albums. Navidrome provides a simple and user-friendly interface for managing and organizing music collections, making it a valuable tool for music lovers who want to access their music from anywhere. The software is designed to be easy to set up and use, making it a popular choice for those who want to host their own music server and enjoy their music collection from anywhere.\n  \n  To create a new Proxmox Navidrome LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Navidrome, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/navidrome-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  To change Navidrome music folder path, edit: <code class=\"highlighter-rouge\">/var/lib/navidrome/navidrome.toml</code>\n  \n  **Navidrome Interface: IP:4533**`\n  \n  },\n  {\n    \"category\": \"Media - Photo\",\n\n    \"title\": \"PhotoPrism LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/photoprism.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> PhotoPrism LXC </h1>\n  \n  [PhotoPrism](https://photoprism.app/) is a photo management app that uses artificial intelligence to help users browse, organize, and share their photo collection. It provides a user-friendly interface for managing large photo collections, making it easy to find and view images. PhotoPrism uses AI algorithms to automatically categorize and tag images, making it easier for users to search and find the photos they want. The app supports a wide range of image formats and provides features such as geotagging, image editing, and metadata management. PhotoPrism is designed to be easy to use and provides a seamless experience for managing and sharing photos, making it a valuable tool for personal and professional use. The software is also highly customizable, allowing users to personalize the app to fit their needs. With PhotoPrism, users can easily access, organize, and share their photos from anywhere, making it a powerful tool for managing and sharing photo collections.\n  \n  To create a new Proxmox PhotoPrism LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update PhotoPrism, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/photoprism-v5.sh)\"\n  ~~~\n  The script builds from source, which takes time and resources. After the build, the script will automatically set resources to Normal Settings.\n  <h3 align=\"center\" id=\"heading\">⚡ Build Settings:  4GB RAM - 8GB Storage - 4vCPU ⚡</h3>\n  <h3 align=\"center\" id=\"heading\">⚡ Normal Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **PhotoPrism Interface: IP:2342**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">changeme</code>\n  \n  [PhotoSync](https://www.photosync-app.com/home.html)`\n  \n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Lidarr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Lidarr/Lidarr/develop/Logo/256.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Lidarr LXC </h1>\n  \n  [Lidarr](https://lidarr.audio/) is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.\n  \n  To create a new Proxmox Lidarr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/lidarr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Lidarr Interface: IP:8686**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Prowlarr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Prowlarr LXC </h1>\n  \n  [Prowlarr](https://github.com/Prowlarr/Prowlarr) is a software tool designed to integrate with various PVR (Personal Video Recorder) apps. It is built on a popular *arr .net/ReactJS base stack and serves as an indexer manager and proxy. Prowlarr makes it easy to manage and organize TV show and movie collections, by integrating with popular PVR apps and automating the downloading and organizing of media files. The software provides a web-based interface for managing and organizing TV shows and movies, making it easy to search and find content. Prowlarr also supports metadata management, including show and movie information, making it easy for users to keep their media collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing media collections, making it a valuable tool for media enthusiasts who want to keep their collection organized and up-to-date. With Prowlarr, users can enjoy their media collection from anywhere, making it a powerful tool for managing and sharing media files.\n  \n  To create a new Proxmox Prowlarr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/prowlarr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Prowlarr Interface: IP:9696**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Radarr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Radarr LXC </h1>\n  \n  [Radarr](https://radarr.video/) is a movie management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their movie collection with ease. Radarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Lidarr, to automate the downloading and organizing of movie files. The software provides a web-based interface for managing and organizing movies, making it easy to search and find titles, genres, and release dates. Radarr also supports metadata management, including movie posters and information, making it easy for users to keep their movie collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing movie collections, making it a valuable tool for movie enthusiasts who want to keep their collection organized and up-to-date. With Radarr, users can enjoy their movie collection from anywhere, making it a powerful tool for managing and sharing movie files.\n  \n  To create a new Proxmox Radarr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/radarr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Radarr Interface: IP:7878**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Readarr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Readarr/Readarr/develop/Logo/256.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Readarr LXC </h1>\n  \n  [Readarr](https://readarr.com/) is an eBook and audiobook management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their eBook and audiobook collection with ease. Readarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Lidarr, to automate the downloading and organizing of eBook and audiobook files. The software provides a web-based interface for managing and organizing eBooks and audiobooks, making it easy to search and find titles, authors, and genres. Readarr also supports metadata management, including cover art and information, making it easy for users to keep their eBook and audiobook collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing eBook and audiobook collections, making it a valuable tool for book and audiobook enthusiasts who want to keep their collection organized and up-to-date. With Readarr, users can enjoy their eBook and audiobook collection from anywhere, making it a powerful tool for managing and sharing book and audiobook files.\n  \n  To create a new Proxmox Radarr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/readarr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Readarr Interface: IP:8787**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Sonarr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Sonarr LXC </h1>\n  \n  [Sonarr](https://sonarr.tv/) is a personal video recorder (PVR) software designed for Usenet and BitTorrent users. It allows users to manage and organize their TV show collection with ease. Sonarr integrates with popular Usenet and BitTorrent clients, such as NZBget and Transmission, to automate the downloading and organizing of TV show files. The software provides a web-based interface for managing and organizing TV shows, making it easy to search and find titles, seasons, and episodes. Sonarr also supports metadata management, including TV show posters and information, making it easy for users to keep their TV show collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing TV show collections, making it a valuable tool for TV show enthusiasts who want to keep their collection organized and up-to-date. With Sonarr, users can enjoy their TV show collection from anywhere, making it a powerful tool for managing and sharing TV show files.\n  \n  To create a new Proxmox Sonarr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/sonarr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Sonarr Interface: IP:8989**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Tdarr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://tdarr.io/static/media/logo3.02a3f4a3.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Tdarr LXC </h1>\n  \n  [Tdarr](https://tdarr.io/) is a media transcoding application designed to automate the transcode and remux management of a media library. It uses conditional-based processing to determine the required encoding and remux operations for each file in the library. The software integrates with popular media management tools, such as Sonarr and Radarr, to ensure that newly added media files are automatically processed and optimized for the user's desired playback device. Tdarr provides a web-based interface for monitoring and managing the transcoding process, and also supports real-time logging and reporting. The software is designed to be flexible and configurable, with a wide range of encoding and remux options available to users. Tdarr is an ideal solution for media enthusiasts who want to optimize their library for seamless playback on a variety of devices, while also streamlining the management and maintenance of their media library.\n  \n  To create a new Proxmox Tdarr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/tdarr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Tdarr Interface: IP:8265**`\n  },\n  {\n    \"category\": \"Media - Photo\",\n\n  \n    \"title\": \"Whisparr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Whisparr/Whisparr/develop/Logo/256.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\">Whisparr LXC </h1>\n  \n  [Whisparr](https://github.com/Whisparr/Whisparr) is an adult movie collection manager for Usenet and BitTorrent users.\n  \n  To create a new Proxmox Whisparr LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/whisparr-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **Whisparr Interface: IP:6969**`\n  },\n  {\n    \"category\": \"Ad Blocker - DNS\",\n\n    \"title\": \"Pi-hole LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/pi_hole/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Pi-hole LXC </h1>\n  \n  [Pi-hole](https://pi-hole.net/) is a free, open-source network-level advertisement and Internet tracker blocking application. It runs on a Raspberry Pi or other Linux-based systems and acts as a DNS sinkhole, blocking unwanted traffic before it reaches a user's device. Pi-hole can also function as a DHCP server, providing IP addresses and other network configuration information to devices on a network. The software is highly configurable and supports a wide range of customizations, such as allowing or blocking specific domains, setting up blocklists and whitelists, and customizing the appearance of the web-based interface. The main purpose of Pi-hole is to protect users' privacy and security by blocking unwanted and potentially malicious content, such as ads, trackers, and malware. It is designed to be easy to set up and use, and can be configured through a web-based interface or through a terminal-based command-line interface.\n  \n  To create a new Proxmox Pi-hole LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/pihole-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  ⚠️ **Reboot Pi-hole LXC after install**\n  \n  **Pi-hole Interface: IP/admin**\n  \n  ⚙️ **To set your password:**\n  \n  ~~~yaml\n  pihole -a -p\n  ~~~`\n  },\n  {\n    \"category\": \"Ad Blocker - DNS\",\n\n    \"title\": \"Technitium DNS LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://avatars.githubusercontent.com/u/12230362?s=100&v=4\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Technitium DNS LXC </h1>\n\n  [Technitium DNS Server](https://technitium.com/dns/) is a free, open-source and privacy-focused DNS (Domain Name System) server software for Windows, Linux, and macOS. It is designed to provide a secure, fast, and reliable DNS resolution service to its users. The server can be configured through a web-based interface, and it supports a variety of advanced features, such as automatic IP updates, IPv6 support, caching of DNS queries, and the ability to block unwanted domains. It is also designed to be highly secure, with built-in measures to prevent common types of DNS attacks and data leaks. Technitium DNS Server is aimed at providing an alternative to traditional DNS servers, which often have privacy and security concerns associated with them, and it is ideal for users who are looking for a more secure and private DNS resolution service.\n  \n  To create a new Proxmox Technitium DNS LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Technitium DNS, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/technitiumdns-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Technitium DNS Interface: IP:5380**`\n  \n  },\n  {\n    \"category\": \"Ad Blocker - DNS\",\n\n    \"title\": \"AdGuard Home LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/adguard/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> AdGuard Home LXC </h1>\n\n  [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) is an open-source, self-hosted network-wide ad blocker. It blocks advertisements, trackers, phishing and malware websites, and provides protection against online threats. AdGuard Home is a DNS-based solution, which means it blocks ads and malicious content at the network level, before it even reaches your device. It runs on your home network and can be easily configured and managed through a web-based interface. It provides detailed statistics and logs, allowing you to see which websites are being blocked, and why. AdGuard Home is designed to be fast, lightweight, and easy to use, making it an ideal solution for home users who want to block ads, protect their privacy, and improve the speed and security of their online experience.\n  \n  To create a new Proxmox AdGuard Home LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Manually Update AdGuard Home, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/adguard-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **AdGuard Home Setup Interface: IP:3000  (After Setup use only IP)**\n  \n  <sub>(For the Home Assistant Integration, use port <code class=\"highlighter-rouge\">80</code> not <code class=\"highlighter-rouge\">3000</code>)</sub>`\n  \n  },\n  {\n    \"category\": \"Ad Blocker - DNS\",\n\n    \"title\": \"Blocky LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/0xERR0R/blocky/blob/master/docs/blocky.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Blocky LXC </h1>\n  \n  [Blocky](https://0xerr0r.github.io/blocky/) is a software tool designed for blocking unwanted ads and trackers on local networks. It functions as a DNS proxy and runs on the Go programming language. Blocky intercepts requests to advertisements and other unwanted content and blocks them before they reach the end user. This results in a cleaner, faster, and more secure online experience for users connected to the local network. Blocky is open-source, easy to configure and can be run on a variety of devices, making it a versatile solution for small to medium-sized local networks.\n  \n  To create a new Proxmox Blocky LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/blocky-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  \n  ⚙️ **Blocky Config Path**\n  \n  ~~~yaml\n  /opt/blocky/config.yml\n  ~~~`\n  },\n  {\n    \"category\": \"Document - Notes\",\n\n    \"title\": \"Paperless-ngx LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/paperless-ngx/paperless-ngx/blob/main/resources/logo/web/svg/square.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Paperless-ngx LXC </h1>\n  \n  [Paperless-ngx](https://paperless-ngx.readthedocs.io/en/latest/#) is a software tool designed for digitizing and organizing paper documents. It provides a web-based interface for scanning, uploading, and organizing paper documents, making it easier to manage, search, and access important information. Paperless-ngx uses the OCR (Optical Character Recognition) technology to extract text from scanned images and makes it searchable, thus increasing the efficiency of document management.\n  \n  To create a new Proxmox Paperless-ngx LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Paperless-ngx or Show Paperless-ngx Login Credentials, run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/paperless-ngx-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2048MiB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Paperless-ngx Interface: IP:8000**`\n  \n  },\n  {\n    \"category\": \"Document - Notes\",\n\n    \"title\": \"Trilium LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/zadam/trilium/master/images/app-icons/png/128x128.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Trilium LXC </h1>\n  \n  [Trilium](https://github.com/zadam/trilium#trilium-notes) is an open-source note-taking and personal knowledge management application. It allows users to organize and manage their notes, ideas, and information in a single place, using a hierarchical tree-like structure. Trilium offers a range of features, including rich text formatting, links, images, and attachments, making it easy to create and structure notes. The software is designed to be flexible and customizable, with a range of customization options and plugins available, including themes, export options, and more. Trilium is a self-hosted solution, and can be run on a local machine or a cloud-based server, providing users with full control over their notes and information.\n  \n  To create a new Proxmox Trilium LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Trilium, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/trilium-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Trilium Interface: IP:8080**`\n  \n  },\n  {\n    \"category\": \"Document - Notes\",\n\n    \"title\": \"Wiki.js LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://static.requarks.io/logo/wikijs-butterfly.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Wiki.js LXC </h1>\n  \n  [Wiki.js](https://js.wiki/) is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services. \n  \n  To create a new Proxmox Wiki.js LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Wiki.js, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/wikijs-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Wiki.js Interface: IP:3000**`\n  },\n  {\n    \"category\": \"Document - Notes\",\n\n  \n    \"title\": \"NocoDB LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/nocodb.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> NocoDB LXC </h1>\n  \n  [NocoDB](https://www.nocodb.com/) is a document-oriented database management system. It uses the NoSQL (Not Only SQL) data model, which allows for more flexible and scalable data storage than traditional relational databases. NoCoDB stores data in JSON format, making it easier to manage and query complex data structures, and supports a range of data types, including strings, numbers, arrays, and objects. The software provides a web-based interface for managing and querying data, and includes features such as real-time data synchronization, auto-indexing, and full-text search. NoCoDB is designed to be scalable, and can be used for a range of applications, from small projects to large enterprise systems. The software is free and open-source, and is designed to be easy to use and integrate with other applications.\n  \n  To create a new Proxmox NocoDB LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update NocoDB, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/nocodb-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 4GB Storage - 1vCPU ⚡</h3>\n  \n  **NocoDB Interface: IP:8080/dashboard**`\n  \n  },\n  {\n    \"category\": \"Document - Notes\",\n  \n    \"title\": \"Kavita LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Kareadita/Kavita/develop/Logo/kavita.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"Kavita\"> Kavita LXC </h1>\n  \n  [Kavita](https://www.kavitareader.com/) is a fast, feature rich, cross platform reading server. Built with a focus for manga, and the goal of being a full solution for all your reading needs.\n  \n  To create a new Proxmox Kavita LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/kavita-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Kavita Interface: IP:5000**`\n  \n  },\n  {\n    \"category\": \"Dashboards\",\n\n    \"title\": \"Heimdall Dashboard LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/heimdall.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Heimdall Dashboard LXC </h1>\n  \n  [Heimdall Application Dashboard](https://camo.githubusercontent.com/bcfd4f74c93b25bea7b14eacbafd649206bf754a3d4b596329968f0ee569cf3c/68747470733a2f2f692e696d6775722e636f6d2f4d72433451704e2e676966) is a self-hosted, web-based dashboard for managing and monitoring the health of applications and servers. It allows you to keep track of the status of your systems from a single, centralized location, and receive notifications when things go wrong. With Heimdall Dashboard, you have full control over your data and can customize it to meet your specific needs. Self-hosting the dashboard gives you the flexibility to run it on your own infrastructure, making it a suitable solution for organizations that prioritize data security and privacy.\n  \n  To create a new Proxmox Heimdall Dashboard LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Heimdall Dashboard, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/heimdalldashboard-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Heimdall Dashboard Interface: IP:7990**`\n  \n  },\n  {\n    \"category\": \"Dashboards\",\n\n    \"title\": \"Homepage LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/benphelps/homepage/raw/main/images/banner_light%402x.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Homepage LXC </h1>\n  \n  [Homepage](https://github.com/benphelps/homepage) is a self-hosted dashboard solution for centralizing and organizing data and information.\n  \n  To create a new Proxmox Homepage LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Homepage, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/homepage-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  1GB RAM - 3GB Storage - 2vCPU ⚡</h3>\n  \n  [Configuration](https://github.com/benphelps/homepage/wiki) (bookmarks.yaml, services.yaml, widgets.yaml) path: <code class=\"highlighter-rouge\">/opt/homepage/config/</code>\n  \n  **Homepage Interface: IP:3000**`\n  \n  },\n    {\n    \"category\": \"Dashboards\",\n\n    \"title\": \"OliveTin\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/OliveTin/OliveTin/main/webui/OliveTinLogo.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> OliveTin </h1>\n\n  [OliveTin](https://www.olivetin.app/) provides a secure and straightforward way to execute pre-determined shell commands through a web-based interface.\n  \n  To Install OliveTin, ⚠️ run the command below in the LXC console.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/olivetin.sh)\"\n  ~~~\n  \n  **OliveTin Interface: IP:1337**\n  \n  ⚙️ **Config Path**\n  \n  ~~~yaml\n  /etc/OliveTin/config.yaml\n  ~~~`\n  },\n  {\n    \"category\": \"Dashboards\",\n\n    \"title\": \"Homer LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/bastienwirtz/homer/main/public/assets/icons/logo.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Homer LXC </h1>\n  \n  [Homer](https://github.com/bastienwirtz/homer#---------homer) is a simple and lightweight static homepage generator that allows you to create and manage a home page for your server. It uses a YAML configuration file to define the layout and content of your homepage, making it easy to set up and customize. The generated homepage is static, meaning it does not require any server-side processing, making it fast and efficient to serve. Homer is designed to be a flexible and low-maintenance solution for organizing and accessing your services and information from a single, centralized location.\n  \n  To create a new Proxmox Homer LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Homer, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/homer-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n\n  **Homer Interface: IP:8010**\n  \n  ⚙️ **Config Path**\n  \n  ~~~yaml\n  /opt/homer/assets/config.yml\n  ~~~`\n   \n  },\n  {\n    \"category\": \"Dashboards\",\n\n    \"title\": \"Dashy LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/Lissy93/dashy/raw/master/public/web-icons/dashy-logo.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Dashy LXC </h1>\n  \n  [Dashy](https://dashy.to/) is a solution that helps you organize your self-hosted services by centralizing access to them through a single interface.\n  \n  To create a new Proxmox Dashy LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Dashy, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/dashy-v5.sh)\"\n  ~~~\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 6GB Storage - 2vCPU ⚡</h3>\n  \n  **Dashy Interface: IP:4000**\n  \n  After getting everything setup the way you want in interactive mode and saved to disk, you have to go into update configuration and rebuild application.`\n  \n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"File Browser\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/filebrowser.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> File Browser </h1>\n\n  [File Browser](https://filebrowser.org/features) is a create-your-own-cloud-kind of software where you can install it on a server, direct it to a path and then access your files through a nice web interface. Many available features!\n  \n  To Install File Browser, ⚠️ run the command below in the LXC console.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/filebrowser.sh)\"\n  ~~~\n  \n  **File Browser Interface: IP:8080**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n\n  **password** <code class=\"highlighter-rouge\">changeme</code>\n  \n  ⚙️ **To Update File Browser**\n  \n  ~~~yaml\n  curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash\n  ~~~`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"VS Code Server\",\n    \"content\": `<p align=\"center\"><img src=\"https://user-images.githubusercontent.com/674621/71187801-14e60a80-2280-11ea-94c9-e56576f76baf.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> VS Code Server </h1>\n\n  [VS Code Server](https://code.visualstudio.com/docs/remote/vscode-server) is a service you can run on a remote development machine, like your desktop PC or a virtual machine (VM). It allows you to securely connect to that remote machine from anywhere through a vscode.dev URL, without the requirement of SSH.\n  \n  To Install VS Code Server, ⚠️ run the command below in the <b>LXC console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/code-server.sh)\"\n  ~~~\n  \n  **VS Code Server Interface: IP:8680**`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Deluge LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://dev.deluge-torrent.org/chrome/common/deluge_logo.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Deluge LXC </h1>\n\n  [Deluge](https://www.deluge-torrent.org/) is a free, open-source, lightweight BitTorrent client. It supports various platforms including Windows, Linux, and macOS, and offers features such as peer exchange, DHT, and magnet links.\n  \n  To create a new Proxmox Deluge LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/deluge-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n\n  ⚙️ **Initial Login**\n\n  **password** <code class=\"highlighter-rouge\">deluge</code>\n\n  **Deluge Interface: IP:8112**`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Transmission LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/transmission/transmission/main/web/assets/img/logo.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Transmission LXC </h1>\n\n  [Transmission](https://transmissionbt.com/) is a free, open-source BitTorrent client known for its fast download speeds and ease of use. It supports various platforms such as Windows, Linux, and macOS and has features like web interface, peer exchange, and encrypted transfers.\n  \n  To create a new Proxmox Transmission LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/transmission-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n\n  ⚙️ **Initial Login**\n\n  **user/password** <code class=\"highlighter-rouge\">transmission</code>\n\n  **Transmission Interface: IP:9091/transmission**`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Autobrr LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Autobrr LXC </h1>\n\n  [Autobrr](https://autobrr.com/) is a torrent downloading tool that automates the process of downloading torrents. It is designed to be modern and user-friendly, providing users with a convenient and efficient way to download torrent files. With Autobrr, you can schedule and manage your torrent downloads, and have the ability to automatically download torrents based on certain conditions, such as time of day or availability of seeds. This can save you time and effort, allowing you to focus on other tasks while your torrents are being downloaded in the background.\n  \n  To create a new Proxmox Autobrr LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Autobrr, run the command below in the <b>LXC Console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/autobrr-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n\n  **Autobrr Interface: IP:7474**`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"qBittorrent LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/src/icons/qbittorrent.ico\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> qBittorrent LXC </h1>\n\n  [qBittorrent](https://www.qbittorrent.org/) offers a user-friendly interface that allows users to search for and download torrent files easily. It also supports magnet links, which allow users to start downloading files without the need for a torrent file.\n  \n  To create a new Proxmox qBittorrent LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/qbittorrent-v5.sh)\"\n  ~~~\n\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>  \n  \n  **qBittorrent Interface: IP:8090**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">adminadmin</code>`\n  \n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Jackett LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Jackett/Jackett/master/src/Jackett.Common/Content/jacket_medium.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Jackett LXC </h1>\n\n  [Jackett](https://github.com/Jackett/Jackett) supports a wide range of trackers, including popular ones like The Pirate Bay, RARBG, and Torrentz2, as well as many private trackers. It can be integrated with several BitTorrent clients, including qBittorrent, Deluge, and uTorrent, among others.\n  \n  To create a new Proxmox Jackett LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/jackett-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings: 512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n\n  **Jackett Interface: IP:9117**`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"SABnzbd LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/sabnzbd/sabnzbd/develop/icons/logo-arrow.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> SABnzbd LXC </h1>\n\n  [SABnzbd](https://sabnzbd.org/) is a free, open-source software program for downloading binary files from Usenet newsgroups. It is designed to be easy to use, and provides a number of features to simplify the downloading process, such as automatic error detection and repair, download scheduling, and integration with other applications. SABnzbd is a binary newsreader, which means it is specifically designed for downloading binary files, such as images, music, and video, from Usenet newsgroups. With its user-friendly interface and powerful features, SABnzbd makes it easy to manage your Usenet downloads and keep your download queue organized.\n  \n  To create a new Proxmox SABnzbd LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/sabnzbd-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n\n  **SABnzbd Interface: IP:7777**`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Webmin System Administration\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/webmin/webmin/blob/master/images/webmin-blue.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Webmin System Administration </h1>\n\n  If you prefer to manage all aspects of your Proxmox LXC from a graphical interface instead of the command line interface, Webmin might be right for you.\n  Benefits include automatic daily security updates, backup and restore, file manager with editor, web control panel, and preconfigured system monitoring with optional email alerts.\n  \n  To Install Webmin System Administration, ⚠️ run the command below in the <b>LXC console</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/webmin.sh)\"\n  ~~~\n  \n  **Webmin Interface: (https)IP:10000**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">root</code>\n  \n  **password** <code class=\"highlighter-rouge\">root</code>\n  \n  ⚙️ **To Update Webmin**\n  \n  <code class=\"highlighter-rouge\">Update from the Webmin UI</code>\n  \n  ⚙️ **To Uninstall Webmin**\n  \n  ~~~yaml\n  bash /etc/webmin/uninstall.sh\n  ~~~`\n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Syncthing LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/syncthing/syncthing/6afaa9f20c8eb9c7af5abbe2f2d90fa2571aa7ad/assets/logo-only.svg?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Syncthing LXC </h1>\n  \n  [Syncthing](https://syncthing.net/) is an open-source file syncing tool that allows users to keep their files in sync across multiple devices by using peer-to-peer synchronization. It doesn't rely on any central server, so all data transfers are directly between devices.\n  \n  To create a new Proxmox Syncthing LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/syncthing-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Syncthing Interface: IP:8384**`\n  \n  },\n  {\n    \"category\": \"File - Code\",\n\n    \"title\": \"Daemon Sync Server LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimg.informer.com%2Ficons_mac%2Fpng%2F128%2F350%2F350335.png&f=1&nofb=1\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Daemon Sync Server LXC </h1>\n  \n  Sync files from app to server, share photos & videos, back up your data and stay secure inside local network.\n  \n  To create a new Proxmox Daemon Sync Server LXC, run the command below in the <b>Proxmox Shell</b>.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/daemonsync-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 8GB Storage - 1vCPU ⚡</h3>\n  \n  **Daemon Sync Server Interface: IP:8084**\n  \n  Search: <code class=\"highlighter-rouge\">DAEMON Sync</code> in your favorite app store`\n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"Vaultwarden LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg\" width=\"100\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Vaultwarden LXC </h1>\n  \n  [Vaultwarden](https://www.vaultwarden.net/) is a self-hosted password manager which provides secure and encrypted password storage. It uses client-side encryption and provides access to passwords through a web interface and mobile apps.\n  \n  To create a new Proxmox Vaultwarden LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Vaultwarden, Web-Vault or Show the Admin Token, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/vaultwarden-v5.sh)\"\n  ~~~\n  ⚠️ Vaultwarden needs to be behind a proxy (Nginx Proxy Manager) to obtain HTTPS and to allow clients to connect.\n  \n  The script builds from source, which takes time and resources. After the build, the script will automatically set resources to Normal Settings. \n  \n  <h3 align=\"center\" id=\"heading\">⚡ Build Settings:  4GB RAM - 6GB Storage - 4vCPU ⚡</h3>\n  <h3 align=\"center\" id=\"heading\">⚡ Normal Settings:  512Mib RAM - 6GB Storage - 1vCPU ⚡</h3>\n\n  As an alternative option, you can use Alpine Linux and the Vaultwarden package to create a Vaultwarden LXC container with significantly faster creation time and minimal system resource usage. <br>\n  By default, the root password is set to <code class=\"highlighter-rouge\">alpine</code>. If you choose to use advanced settings, you will need to define a password, autologin is currently unavailable.\n\n  To create a new Proxmox Alpine-Vaultwarden LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Alpine-Vaultwarden, or Show the Admin Token, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qO - https://github.com/tteck/Proxmox/raw/main/ct/alpine-vaultwarden-v5.sh)\"\n  ~~~\n\n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  256Mib RAM - 300MiB Storage - 1vCPU ⚡</h3>\n\n  **Vaultwarden Interface: IP:8000**\n  \n  **Vaultwarden Admin Interface: IP:8000/admin**`\n  \n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"grocy LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://grocy.info/img/grocy_logo.svg\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> grocy LXC </h1>\n  \n  [grocy](https://grocy.info/) is a web-based self-hosted groceries & household management solution for your home. It helps you keep track of your groceries and household items, manage your shopping list, and keep track of your pantry, recipes, meal plans, and more.\n  \n  To create a new Proxmox grocy LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update grocy, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/grocy-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **grocy Interface: IP**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">admin</code>`\n  \n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"MagicMirror Server LXC\",\n  \n    \"content\": `<p align=\"center\"><img src=\"https://github.com/MichMich/MagicMirror/raw/master/.github/header.png\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> MagicMirror Server LXC </h1>\n  \n  [MagicMirror²](https://docs.magicmirror.builders/) is a smart mirror software that allows you to build your own personal smart mirror. It uses modular components that you can customize to display information such as the weather, news, calendar, to-do list, and more. The platform is open source, allowing for community contributions and customization.\n  \n  To create a new MagicMirror Server LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update MagicMirror, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/magicmirror-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings: 512MiB RAM - 3GB Storage - 1vCPU ⚡</h3>\n  \n  **MagicMirror Interface: IP:8080**\n  \n  ⚙️ **[Configuration](https://docs.magicmirror.builders/configuration/introduction.html#configuring-your-magicmirror)**\n  ~~~yaml\n  /opt/magicmirror/config/config.js\n  ~~~`\n\n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"RSTPtoWEB LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://brands.home-assistant.io/_/rtsp_to_webrtc/logo.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> RSTPtoWEB LXC </h1>\n  \n  [RTSPtoWeb](https://github.com/deepch/RTSPtoWeb) converts your RTSP streams to formats consumable in a web browser like MSE (Media Source Extensions), WebRTC, or HLS. It's fully native Golang without the use of FFmpeg or GStreamer\n  \n  To create a new Proxmox RSTPtoWEB LXC, run the following in the Proxmox Shell.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/rstptoweb-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings: 2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **RSTPtoWEB Interface - IP:8083**`\n  \n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"go2rtc LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://brands.home-assistant.io/_/rtsp_to_webrtc/logo.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> go2rtc LXC </h1>\n  \n  [go2rtc](https://github.com/AlexxIT/go2rtc) is the ultimate camera streaming application with support RTSP, WebRTC, HomeKit, FFmpeg, RTMP, etc.\n  \n  To create a new Proxmox go2rtc LXC, run the following in the Proxmox Shell.\n  \n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/go2rtc-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings: 2GB RAM - 4GB Storage - 2vCPU ⚡</h3>\n  \n  **go2rtc Interface - IP:1984**`\n  \n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"Whoogle LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/tteck/Proxmox/blob/main/misc/images/whoogle.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Whoogle LXC </h1>\n  \n  Get Google search results, but without any ads, javascript, AMP links, cookies, or IP address tracking.\n  \n  To create a new Proxmox Whoogle LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Whoogle, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/whoogle-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n  \n  **Whoogle Interface: IP:5000**`\n  \n  },\n  {\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"Shinobi NVR LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://gitlab.com/uploads/-/system/project/avatar/6947723/mstile-150x150.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> Shinobi NVR LXC </h1>\n\n  [Shinobi](https://shinobi.video/) is an open-source, self-hosted network video recording (NVR) software. It allows you to manage and monitor security cameras and record video footage. Shinobi can be run on various platforms including Linux, macOS, and Raspberry Pi, and offers features such as real-time streaming, motion detection, and email notifications.\n  \n  To create a new Proxmox Shinobi NVR LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update Shinobi, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/shinobi-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **Shinobi Interface: IP:8080**\n\n  **Shinobi Admin Interface: IP:8080/super**\n  \n  ⚙️ **Initial Admin Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin@shinobi.video</code>\n  \n  **password** <code class=\"highlighter-rouge\">admin</code>`\n  \n},\n{\n    \"category\": \"Miscellaneous\",\n\n    \"title\": \"MotionEye NVR LXC\",\n    \"content\": `<p align=\"center\"><img src=\"https://github.com/home-assistant/brands/blob/master/core_integrations/motioneye/icon.png?raw=true\" height=\"100\"/></p>\n  \n  <h1 align=\"center\" id=\"heading\"> MotionEye NVR LXC </h1>\n\n  MotionEye is an open-source, self-hosted network video recording (NVR) software designed to manage and monitor IP cameras. It runs on various platforms such as Linux, Raspberry Pi, and Docker, and offers features such as real-time video streaming, motion detection, and customizable camera views.\n  \n  To create a new Proxmox MotionEye NVR LXC, run the command below in the <b>Proxmox Shell</b>. <br>\n  To Update MotionEye, run the command below in the <b>LXC Console</b>.\n  ~~~bash\n  bash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/motioneye-v5.sh)\"\n  ~~~\n  \n  <h3 align=\"center\" id=\"heading\">⚡ Default Settings:  2GB RAM - 8GB Storage - 2vCPU ⚡</h3>\n  \n  **MotionEye Interface: IP:8765**\n  \n  ⚙️ **Initial Login**\n  \n  **username** <code class=\"highlighter-rouge\">admin</code>\n  \n  **password** <code class=\"highlighter-rouge\">    </code>`\n  \n},\n{\n  \"category\": \"Miscellaneous\",\n\n  \"title\": \"Hyperion LXC\",\n  \"content\": `<p align=\"center\"><img src=\"https://github.com/hyperion-project/hyperion.ng/raw/master/doc/logo_dark.png?raw=true\" height=\"100\"/></p>\n\n<h1 align=\"center\" id=\"heading\"> Hyperion LXC </h1>\n\nHyperion is an opensource Ambient Lighting implementation. It supports many LED devices and video grabbers.\n\nTo create a new Proxmox Hyperion LXC, run the command below in the <b>Proxmox Shell</b>. <br>\nTo Update Hyperion, run the command below in the <b>LXC Console</b>.\n\n~~~bash\nbash -c \"$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/hyperion-v5.sh)\"\n~~~\n\n<h3 align=\"center\" id=\"heading\">⚡ Default Settings:  512MiB RAM - 2GB Storage - 1vCPU ⚡</h3>\n\n**Hyperion Interface: IP:8090**`\n\n}\n  ]\n}\n  \nexport default data;","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    _construct = Reflect.construct.bind();\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n  return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n      _cache.set(Class, Wrapper);\n    }\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  };\n  return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node’s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point|undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position|undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n  /**\n   * Constructor of a message for `reason` at `place` from `origin`.\n   * When an error is passed in as `reason`, copies the `stack`.\n   *\n   * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n   * @param {string} [origin] Place in code the message originates from (`string`, optional).\n   */\n  constructor(reason, place, origin) {\n    /** @type {[string|null, string|null]} */\n    const parts = [null, null]\n    /** @type {Position} */\n    let position = {\n      // @ts-expect-error: we always follows the structure of `position`.\n      start: {line: null, column: null},\n      // @ts-expect-error: \"\n      end: {line: null, column: null}\n    }\n\n    super()\n\n    if (typeof place === 'string') {\n      origin = place\n      place = undefined\n    }\n\n    if (typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        parts[1] = origin\n      } else {\n        parts[0] = origin.slice(0, index)\n        parts[1] = origin.slice(index + 1)\n      }\n    }\n\n    if (place) {\n      // Node.\n      if ('type' in place || 'position' in place) {\n        if (place.position) {\n          position = place.position\n        }\n      }\n      // Position.\n      else if ('start' in place || 'end' in place) {\n        position = place\n      }\n      // Point.\n      else if ('line' in place || 'column' in place) {\n        position.start = place\n      }\n    }\n\n    // Fields from `Error`\n    this.name = stringifyPosition(place) || '1:1'\n    this.message = typeof reason === 'object' ? reason.message : reason\n    this.stack = typeof reason === 'object' ? reason.stack : ''\n\n    /**\n     * Reason for message.\n     * @type {string}\n     */\n    this.reason = this.message\n    /**\n     * If true, marks associated file as no longer processable.\n     * @type {boolean?}\n     */\n    // eslint-disable-next-line no-unused-expressions\n    this.fatal\n    /**\n     * Starting line of error.\n     * @type {number?}\n     */\n    this.line = position.start.line\n    /**\n     * Starting column of error.\n     * @type {number?}\n     */\n    this.column = position.start.column\n    /**\n     * Namespace of warning.\n     * @type {string?}\n     */\n    this.source = parts[0]\n    /**\n     * Category of message.\n     * @type {string?}\n     */\n    this.ruleId = parts[1]\n    /**\n     * Full range information, when available.\n     * Has start and end properties, both set to an object with line and column, set to number?.\n     * @type {Position?}\n     */\n    this.position = position\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * You can use this to specify the source value that’s being reported, which\n     * is deemed incorrect.\n     * @type {string?}\n     */\n    this.actual\n    /**\n     * You can use this to suggest values that should be used instead of\n     * `actual`, one or more values that are deemed as acceptable.\n     * @type {Array<string>?}\n     */\n    this.expected\n    /**\n     * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n     * @type {string?}\n     */\n    this.file\n    /**\n     * You may add a url property with a link to documentation for the message.\n     * @type {string?}\n     */\n    this.url\n    /**\n     * You may add a note property with a long form description of the message (supported by vfile-reporter).\n     * @type {string?}\n     */\n    this.note\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * @param {string} path\n * @param {string} [ext]\n * @returns {string}\n */\nfunction basename(path, ext) {\n  if (ext !== undefined && typeof ext !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean|undefined} */\n  let seenNonSlash\n\n  if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n    while (index--) {\n      if (path.charCodeAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (ext === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extIndex = ext.length - 1\n\n  while (index--) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n          if (extIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean|undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.charCodeAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n    ? '//'\n    : path.slice(0, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean|undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.charCodeAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * @param {Array<string>} segments\n * @returns {string}\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string|undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Note: `normalize` is not exposed as `path.normalize`, so some code is\n * manually removed from it.\n *\n * @param {string} path\n * @returns {string}\n */\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * @param {boolean} allowAboveRoot\n * @returns {string}\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number|undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.charCodeAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n          result.charCodeAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * @param {string} path\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nexport function isUrl(fileURLOrPath) {\n  return (\n    fileURLOrPath !== null &&\n    typeof fileURLOrPath === 'object' &&\n    // @ts-expect-error: indexable.\n    fileURLOrPath.href &&\n    // @ts-expect-error: indexable.\n    fileURLOrPath.origin\n  )\n}\n","/// <reference lib=\"dom\" />\n\nimport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js>\n\n/**\n * @param {string|URL} path\n */\nexport function urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * @param {URL} url\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.charCodeAt(index) === 37 /* `%` */ &&\n      pathname.charCodeAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.charCodeAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record<string, unknown> & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n *   Encodings supported by the buffer class.\n *   This is a copy of the typing from Node, copied to prevent Node globals from\n *   being needed.\n *   Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Value|Options|VFile|URL} Compatible\n *   Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array<string>} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n *   Raw source map, see:\n *   <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * @property {Array<string>} sources\n * @property {Array<string>} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array<string>|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n *   Configuration: a bunch of keys that will be shallow copied over to the new\n *   file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * @typedef {<T = ReporterSettings>(files: Array<VFile>, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * If `options` is `string` or `Buffer`, it’s treated as `{value: options}`.\n   * If `options` is a `URL`, it’s treated as `{path: options}`.\n   * If `options` is a `VFile`, shallow copies its data over to the new file.\n   * All fields in `options` are set on the newly created `VFile`.\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * It’s not possible to set either `dirname` or `extname` without setting\n   * either `history`, `path`, `basename`, or `stem` as well.\n   *\n   * @param {Compatible} [value]\n   */\n  constructor(value) {\n    /** @type {Options} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (typeof value === 'string' || buffer(value)) {\n      // @ts-expect-error Looks like a buffer.\n      options = {value}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else {\n      // @ts-expect-error Looks like file or options.\n      options = value\n    }\n\n    /**\n     * Place to store custom information (default: `{}`).\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of messages associated with the file.\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * List of filepaths the file moved between.\n     * The first is the original path and the last is the current path.\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     * @type {string}\n     */\n    this.cwd = proc.cwd()\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Raw value.\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n\n    /**\n     * Whether a file was saved to disk.\n     * This is used by vfile reporters.\n     * @type {boolean}\n     */\n    this.stored\n\n    /**\n     * Sometimes files have a non-string, compiled, representation.\n     * This can be stored in the `result` field.\n     * One example is when turning markdown into React nodes.\n     * This is used by unified to store non-string results.\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Sometimes files have a source map associated with them.\n     * This can be stored in the `map` field.\n     * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n     * type from the `source-map` module.\n     * @type {Map|undefined}\n     */\n    this.map\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const prop = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (prop in options && options[prop] !== undefined) {\n        // @ts-expect-error: TS is confused by the different types for `history`.\n        this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n      }\n    }\n\n    /** @type {string} */\n    let prop\n\n    // Set non-path related properties.\n    for (prop in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(prop)) this[prop] = options[prop]\n    }\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   * @returns {string}\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   * @param {string|URL} path\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   */\n  get dirname() {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   * Cannot be set if there’s no `path` yet.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = path.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   */\n  get basename() {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = path.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   */\n  get extname() {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.charCodeAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = path.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? path.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * @param {BufferEncoding} [encoding='utf8']\n   *   When `value` is a `Buffer`, `encoding` is a character encoding to\n   *   understand it as (default: `'utf8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    return (this.value || '').toString(encoding)\n  }\n\n  /**\n   * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n   * associates it with the file by adding it to `vfile.messages` and setting\n   * `message.file` to the current filepath.\n   *\n   * @param {string|Error} reason\n   *   Human readable reason for the message, uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place]\n   *   Place where the message occurred in the file.\n   * @param {string} [origin]\n   *   Computer readable reason for the message\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(reason, place, origin) {\n    const message = new VFileMessage(reason, place, origin)\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Like `VFile#message()`, but associates an informational message where\n   * `fatal` is set to `null`.\n   *\n   * @param {string|Error} reason\n   *   Human readable reason for the message, uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place]\n   *   Place where the message occurred in the file.\n   * @param {string} [origin]\n   *   Computer readable reason for the message\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(reason, place, origin) {\n    const message = this.message(reason, place, origin)\n\n    message.fatal = null\n\n    return message\n  }\n\n  /**\n   * Like `VFile#message()`, but associates a fatal message where `fatal` is\n   * set to `true`, and then immediately throws it.\n   *\n   * > 👉 **Note**: a fatal error means that a file is no longer processable.\n   *\n   * @param {string|Error} reason\n   *   Human readable reason for the message, uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place]\n   *   Place where the message occurred in the file.\n   * @param {string} [origin]\n   *   Computer readable reason for the message\n   * @returns {never}\n   *   Message.\n   */\n  fail(reason, place, origin) {\n    const message = this.message(reason, place, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(path.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string|undefined} path\n * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array<any>) => void} Callback\n * @typedef {(...input: Array<any>) => any} Middleware\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n *   Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error|null|undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result instanceof Promise) {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n  const transformers = trough()\n  /** @type {Processor['attachers']} */\n  const attachers = []\n  /** @type {Record<string, unknown>} */\n  let namespace = {}\n  /** @type {boolean|undefined} */\n  let frozen\n  let freezeIndex = -1\n\n  // Data management.\n  // @ts-expect-error: overloads are handled.\n  processor.data = data\n  processor.Parser = undefined\n  processor.Compiler = undefined\n\n  // Lock.\n  processor.freeze = freeze\n\n  // Plugins.\n  processor.attachers = attachers\n  // @ts-expect-error: overloads are handled.\n  processor.use = use\n\n  // API.\n  processor.parse = parse\n  processor.stringify = stringify\n  // @ts-expect-error: overloads are handled.\n  processor.run = run\n  processor.runSync = runSync\n  // @ts-expect-error: overloads are handled.\n  processor.process = process\n  processor.processSync = processSync\n\n  // Expose.\n  return processor\n\n  // Create a new processor based on the processor in the current scope.\n  /** @type {Processor} */\n  function processor() {\n    const destination = base()\n    let index = -1\n\n    while (++index < attachers.length) {\n      destination.use(...attachers[index])\n    }\n\n    destination.data(extend(true, {}, namespace))\n\n    return destination\n  }\n\n  /**\n   * @param {string|Record<string, unknown>} [key]\n   * @param {unknown} [value]\n   * @returns {unknown}\n   */\n  function data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n        namespace[key] = value\n        return processor\n      }\n\n      // Get `key`.\n      return (own.call(namespace, key) && namespace[key]) || null\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', frozen)\n      namespace = key\n      return processor\n    }\n\n    // Get space.\n    return namespace\n  }\n\n  /** @type {Processor['freeze']} */\n  function freeze() {\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      const [attacher, ...options] = attachers[freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      /** @type {Transformer|void} */\n      const transformer = attacher.call(processor, ...options)\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Number.POSITIVE_INFINITY\n\n    return processor\n  }\n\n  /**\n   * @param {Pluggable|null|undefined} [value]\n   * @param {...unknown} options\n   * @returns {Processor}\n   */\n  function use(value, ...options) {\n    /** @type {Record<string, unknown>|undefined} */\n    let settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, ...options)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = Object.assign(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    /**\n     * @param {import('..').Pluggable<unknown[]>} value\n     * @returns {void}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...options] = value\n          addPlugin(plugin, ...options)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {void}\n     */\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = Object.assign(settings || {}, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList|null|undefined} [plugins]\n     * @returns {void}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {...unknown} [value]\n     * @returns {void}\n     */\n    function addPlugin(plugin, value) {\n      let index = -1\n      /** @type {Processor['attachers'][number]|undefined} */\n      let entry\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entry = attachers[index]\n          break\n        }\n      }\n\n      if (entry) {\n        if (isPlainObj(entry[1]) && isPlainObj(value)) {\n          value = extend(true, entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        // @ts-expect-error: fine.\n        attachers.push([...arguments])\n      }\n    }\n  }\n\n  /** @type {Processor['parse']} */\n  function parse(doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser, 'parse')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Parser(String(file), file).parse()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  /** @type {Processor['stringify']} */\n  function stringify(node, doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler, 'compile')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Compiler(node, file).compile()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  /**\n   * @param {Node} node\n   * @param {VFileCompatible|RunCallback} [doc]\n   * @param {RunCallback} [callback]\n   * @returns {Promise<Node>|void}\n   */\n  function run(node, doc, callback) {\n    assertNode(node)\n    processor.freeze()\n\n    if (!callback && typeof doc === 'function') {\n      callback = doc\n      doc = undefined\n    }\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((node: Node) => void)} resolve\n     * @param {(error: Error) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n      transformers.run(node, vfile(doc), done)\n\n      /**\n       * @param {Error|null} error\n       * @param {Node} tree\n       * @param {VFile} file\n       * @returns {void}\n       */\n      function done(error, tree, file) {\n        tree = tree || node\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, tree, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['runSync']} */\n  function runSync(node, file) {\n    /** @type {Node|undefined} */\n    let result\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    // @ts-expect-error: we either bailed on an error or have a tree.\n    return result\n\n    /**\n     * @param {Error|null} [error]\n     * @param {Node} [tree]\n     * @returns {void}\n     */\n    function done(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * @param {VFileCompatible} doc\n   * @param {ProcessCallback} [callback]\n   * @returns {Promise<VFile>|undefined}\n   */\n  function process(doc, callback) {\n    processor.freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((file: VFile) => void)} resolve\n     * @param {(error?: Error|null|undefined) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      const file = vfile(doc)\n\n      processor.run(processor.parse(file), file, (error, tree, file) => {\n        if (error || !tree || !file) {\n          done(error)\n        } else {\n          /** @type {unknown} */\n          const result = processor.stringify(tree, file)\n\n          if (result === undefined || result === null) {\n            // Empty.\n          } else if (looksLikeAVFileValue(result)) {\n            file.value = result\n          } else {\n            file.result = result\n          }\n\n          done(error, file)\n        }\n      })\n\n      /**\n       * @param {Error|null|undefined} [error]\n       * @param {VFile|undefined} [file]\n       * @returns {void}\n       */\n      function done(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['processSync']} */\n  function processSync(doc) {\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n\n    const file = vfile(doc)\n\n    processor.process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    /**\n     * @param {Error|null|undefined} [error]\n     * @returns {void}\n     */\n    function done(error) {\n      complete = true\n      bail(error)\n    }\n  }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n  return (\n    typeof value === 'function' &&\n    // Prototypes do exist.\n    // type-coverage:ignore-next-line\n    value.prototype &&\n    // A function with keys in its prototype is probably a constructor.\n    // Classes’ prototype methods are not enumerable, so we check if some value\n    // exists in the prototype.\n    // type-coverage:ignore-next-line\n    (keys(value.prototype) || name in value.prototype)\n  )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (own.call(value, key)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n  return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node’s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n  var {includeImageAlt = true} = options || {}\n  return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n  return (\n    (node &&\n      typeof node === 'object' &&\n      // @ts-ignore looks like a literal.\n      (node.value ||\n        // @ts-ignore looks like an image.\n        (includeImageAlt ? node.alt : '') ||\n        // @ts-ignore looks like a parent.\n        ('children' in node && all(node.children, includeImageAlt)) ||\n        (Array.isArray(node) && all(node, includeImageAlt)))) ||\n    ''\n  )\n}\n\n/**\n * @param {Array.<unknown>} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n  /** @type {Array.<string>} */\n  var result = []\n  var index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt)\n  }\n\n  return result.join('')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length\n  let chunkStart = 0\n  /** @type {unknown[]} */\n\n  let parameters // Make start between zero and `end` (included).\n\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n\n  remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n  if (items.length < 10000) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove) // @ts-expect-error Hush, it’s fine.\n    ;[].splice.apply(list, parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000)\n      parameters.unshift(start, 0) // @ts-expect-error Hush, it’s fine.\n      ;[].splice.apply(list, parameters)\n      chunkStart += 10000\n      start += 10000\n    }\n  }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items)\n    return list\n  }\n\n  return items\n}\n","/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {string} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    for (code in right) {\n      if (!hasOwnProperty.call(left, code)) left[code] = []\n      const value = right[code]\n      constructs(\n        // @ts-expect-error Looks like a list.\n        left[code],\n        Array.isArray(value) ? value : value ? [value] : []\n      )\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {unknown[]} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n  /** @type {string} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {string} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        left[type] = right[type]\n      }\n    }\n  }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n  /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n  return check\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code Character code\n   * @returns {code is number} Whether the character code matches the bound regex\n   */\n\n  function check(code) {\n    return code !== null && regex.test(String.fromCharCode(code))\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\n    }\n\n    effects.exit(type)\n    return ok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  )\n  /** @type {Token} */\n\n  let previous\n  return contentStart\n  /** @type {State} */\n\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, contentStart, 'linePrefix')\n  }\n  /** @type {State} */\n\n  function paragraphInitial(code) {\n    effects.enter('paragraph')\n    return lineStart(code)\n  }\n  /** @type {State} */\n\n  function lineStart(code) {\n    const token = effects.enter('chunkText', {\n      contentType: 'text',\n      previous\n    })\n\n    if (previous) {\n      previous.next = token\n    }\n\n    previous = token\n    return data(code)\n  }\n  /** @type {State} */\n\n  function data(code) {\n    if (code === null) {\n      effects.exit('chunkText')\n      effects.exit('paragraph')\n      effects.consume(code)\n      return\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      effects.exit('chunkText')\n      return lineStart\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record<string, unknown>} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n  tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n  const self = this\n  /** @type {Array<StackItem>} */\n\n  const stack = []\n  let continued = 0\n  /** @type {TokenizeContext|undefined} */\n\n  let childFlow\n  /** @type {Token|undefined} */\n\n  let childToken\n  /** @type {number} */\n\n  let lineStartOffset\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued]\n      self.containerState = item[1]\n      return effects.attempt(\n        item[0].continuation,\n        documentContinue,\n        checkNewContainers\n      )(code)\n    } // Done.\n\n    return checkNewContainers(code)\n  }\n  /** @type {State} */\n\n  function documentContinue(code) {\n    continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined\n\n      if (childFlow) {\n        closeFlow()\n      } // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {Point|undefined} */\n\n      let point // Find the flow chunk.\n\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === 'chunkFlow'\n        ) {\n          point = self.events[indexBeforeFlow][1].end\n          break\n        }\n      }\n\n      exitContainers(continued) // Fix positions.\n\n      let index = indexBeforeExits\n\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      } // Inject the exits earlier (they’re still also at the end).\n\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      ) // Discard the duplicate exits.\n\n      self.events.length = index\n      return checkNewContainers(code)\n    }\n\n    return start(code)\n  }\n  /** @type {State} */\n\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code)\n      } // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code)\n      } // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n\n      self.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      )\n    } // Check if there is a new container.\n\n    self.containerState = {}\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code)\n  }\n  /** @type {State} */\n\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow()\n    exitContainers(continued)\n    return documentContinued(code)\n  }\n  /** @type {State} */\n\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length\n    lineStartOffset = self.now().offset\n    return flowStart(code)\n  }\n  /** @type {State} */\n\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {}\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code)\n  }\n  /** @type {State} */\n\n  function containerContinue(code) {\n    continued++\n    stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n    return documentContinued(code)\n  }\n  /** @type {State} */\n\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow()\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n\n    childFlow = childFlow || self.parser.flow(self.now())\n    effects.enter('chunkFlow', {\n      contentType: 'flow',\n      previous: childToken,\n      _tokenizer: childFlow\n    })\n    return flowContinue(code)\n  }\n  /** @type {State} */\n\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit('chunkFlow'), true)\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n      continued = 0\n      self.interrupt = undefined\n      return start\n    }\n\n    effects.consume(code)\n    return flowContinue\n  }\n  /**\n   * @param {Token} token\n   * @param {boolean} [eof]\n   * @returns {void}\n   */\n\n  function writeToChild(token, eof) {\n    const stream = self.sliceStream(token)\n    if (eof) stream.push(null)\n    token.previous = childToken\n    if (childToken) childToken.next = token\n    childToken = token\n    childFlow.defineSkip(token.start)\n    childFlow.write(stream) // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length\n\n      while (index--) {\n        if (\n          // The token starts before the line ending…\n          childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n          (!childFlow.events[index][1].end || // …or ends after it.\n            childFlow.events[index][1].end.offset > lineStartOffset)\n        ) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return\n        }\n      } // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {boolean|undefined} */\n\n      let seen\n      /** @type {Point|undefined} */\n\n      let point // Find the previous chunk (the one before the lazy line).\n\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === 'chunkFlow'\n        ) {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end\n            break\n          }\n\n          seen = true\n        }\n      }\n\n      exitContainers(continued) // Fix positions.\n\n      index = indexBeforeExits\n\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      } // Inject the exits earlier (they’re still also at the end).\n\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      ) // Discard the duplicate exits.\n\n      self.events.length = index\n    }\n  }\n  /**\n   * @param {number} size\n   * @returns {void}\n   */\n\n  function exitContainers(size) {\n    let index = stack.length // Exit open containers.\n\n    while (index-- > size) {\n      const entry = stack[index]\n      self.containerState = entry[1]\n      entry[0].exit.call(self, effects)\n    }\n\n    stack.length = size\n  }\n\n  function closeFlow() {\n    childFlow.write([null])\n    childToken = undefined\n    childFlow = undefined\n    self.containerState._closeFlow = undefined\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n  )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return factorySpace(effects, afterWhitespace, 'linePrefix')\n  /** @type {State} */\n\n  function afterWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n  /** @type {Record<string, number>} */\n  const jumps = {}\n  let index = -1\n  /** @type {Event} */\n\n  let event\n  /** @type {number|undefined} */\n\n  let lineIndex\n  /** @type {number} */\n\n  let otherIndex\n  /** @type {Event} */\n\n  let otherEvent\n  /** @type {Event[]} */\n\n  let parameters\n  /** @type {Event[]} */\n\n  let subevents\n  /** @type {boolean|undefined} */\n\n  let more\n\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n\n    event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n\n    if (\n      index &&\n      event[1].type === 'chunkFlow' &&\n      events[index - 1][1].type === 'listItemPrefix'\n    ) {\n      subevents = event[1]._tokenizer.events\n      otherIndex = 0\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'lineEndingBlank'\n      ) {\n        otherIndex += 2\n      }\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'content'\n      ) {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === 'content') {\n            break\n          }\n\n          if (subevents[otherIndex][1].type === 'chunkText') {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    } // Enter.\n\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index))\n        index = jumps[index]\n        more = true\n      }\n    } // Exit.\n    else if (event[1]._container) {\n      otherIndex = index\n      lineIndex = undefined\n\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\n\n        if (\n          otherEvent[1].type === 'lineEnding' ||\n          otherEvent[1].type === 'lineEndingBlank'\n        ) {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events[lineIndex][1].type = 'lineEndingBlank'\n            }\n\n            otherEvent[1].type = 'lineEnding'\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        splice(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n\n  return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\n\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1]\n  const context = events[eventIndex][2]\n  let startPosition = eventIndex - 1\n  /** @type {number[]} */\n\n  const startPositions = []\n  const tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  const childEvents = tokenizer.events\n  /** @type {[number, number][]} */\n\n  const jumps = []\n  /** @type {Record<string, number>} */\n\n  const gaps = {}\n  /** @type {Chunk[]} */\n\n  let stream\n  /** @type {Token|undefined} */\n\n  let previous\n  let index = -1\n  /** @type {Token|undefined} */\n\n  let current = token\n  let adjust = 0\n  let start = 0\n  const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n\n  while (current) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== current) {\n      // Empty.\n    }\n\n    startPositions.push(startPosition)\n\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current)\n\n      if (!current.next) {\n        stream.push(null)\n      }\n\n      if (previous) {\n        tokenizer.defineSkip(current.start)\n      }\n\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n\n      tokenizer.write(stream)\n\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    } // Unravel the next token.\n\n    previous = current\n    current = current.next\n  } // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n\n  current = token\n\n  while (++index < childEvents.length) {\n    if (\n      // Find a void token that includes a break.\n      childEvents[index][0] === 'exit' &&\n      childEvents[index - 1][0] === 'enter' &&\n      childEvents[index][1].type === childEvents[index - 1][1].type &&\n      childEvents[index][1].start.line !== childEvents[index][1].end.line\n    ) {\n      start = index + 1\n      breaks.push(start) // Help GC.\n\n      current._tokenizer = undefined\n      current.previous = undefined\n      current = current.next\n    }\n  } // Help GC.\n\n  tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined\n    current.previous = undefined\n  } else {\n    breaks.pop()\n  } // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n\n  index = breaks.length\n\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1])\n    const start = startPositions.pop()\n    jumps.unshift([start, start + slice.length - 1])\n    splice(events, start, 2, slice)\n  }\n\n  index = -1\n\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n    adjust += jumps[index][1] - jumps[index][0] - 1\n  }\n\n  return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n  subtokenize(events)\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token} */\n  let previous\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('content')\n    previous = effects.enter('chunkContent', {\n      contentType: 'content'\n    })\n    return data(code)\n  }\n  /** @type {State} */\n\n  function data(code) {\n    if (code === null) {\n      return contentEnd(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n  /** @type {State} */\n\n  function contentEnd(code) {\n    effects.exit('chunkContent')\n    effects.exit('content')\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function contentContinue(code) {\n    effects.consume(code)\n    effects.exit('chunkContent')\n    previous.next = effects.enter('chunkContent', {\n      contentType: 'content',\n      previous\n    })\n    previous = previous.next\n    return data\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this\n  return startLookahead\n  /** @type {State} */\n\n  function startLookahead(code) {\n    effects.exit('chunkContent')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, prefixed, 'linePrefix')\n  }\n  /** @type {State} */\n\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    const tail = self.events[self.events.length - 1]\n\n    if (\n      !self.parser.constructs.disable.null.includes('codeIndented') &&\n      tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n    ) {\n      return ok(code)\n    }\n\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n  const self = this\n  const initial = effects.attempt(\n    // Try to parse a blank line.\n    blankLine,\n    atBlankEnding, // Try to parse initial flow (essentially, only code).\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content, afterConstruct)\n        ),\n        'linePrefix'\n      )\n    )\n  )\n  return initial\n  /** @type {State} */\n\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    self.currentConstruct = undefined\n    return initial\n  }\n  /** @type {State} */\n\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    self.currentConstruct = undefined\n    return initial\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n  resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n  /** @type {Initializer} */\n\n  function initializeText(effects) {\n    const self = this\n    const constructs = this.parser.constructs[field]\n    const text = effects.attempt(constructs, start, notText)\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n    /** @type {State} */\n\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code)\n        return\n      }\n\n      effects.enter('data')\n      effects.consume(code)\n      return data\n    }\n    /** @type {State} */\n\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit('data')\n        return text(code)\n      } // Data.\n\n      effects.consume(code)\n      return data\n    }\n    /**\n     * @param {Code} code\n     * @returns {boolean}\n     */\n\n    function atBreak(code) {\n      if (code === null) {\n        return true\n      }\n\n      const list = constructs[code]\n      let index = -1\n\n      if (list) {\n        while (++index < list.length) {\n          const item = list[index]\n\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true\n          }\n        }\n      }\n\n      return false\n    }\n  }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n  return resolveAllText\n  /** @type {Resolver} */\n\n  function resolveAllText(events, context) {\n    let index = -1\n    /** @type {number|undefined} */\n\n    let enter // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === 'data') {\n          enter = index\n          index++\n        }\n      } else if (!events[index] || events[index][1].type !== 'data') {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end\n          events.splice(enter + 2, index - enter - 2)\n          index = enter + 2\n        }\n\n        enter = undefined\n      }\n    }\n\n    return extraResolver ? extraResolver(events, context) : events\n  }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0 // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if (\n      (eventIndex === events.length ||\n        events[eventIndex][1].type === 'lineEnding') &&\n      events[eventIndex - 1][1].type === 'data'\n    ) {\n      const data = events[eventIndex - 1][1]\n      const chunks = context.sliceStream(data)\n      let index = chunks.length\n      let bufferIndex = -1\n      let size = 0\n      /** @type {boolean|undefined} */\n\n      let tabs\n\n      while (index--) {\n        const chunk = chunks[index]\n\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++\n            bufferIndex--\n          }\n\n          if (bufferIndex) break\n          bufferIndex = -1\n        } // Number\n        else if (chunk === -2) {\n          tabs = true\n          size++\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++\n          break\n        }\n      }\n\n      if (size) {\n        const token = {\n          type:\n            eventIndex === events.length || tabs || size < 2\n              ? 'lineSuffix'\n              : 'hardBreakTrailing',\n          start: {\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size,\n            _index: data.start._index + index,\n            _bufferIndex: index\n              ? bufferIndex\n              : data.start._bufferIndex + bufferIndex\n          },\n          end: Object.assign({}, data.end)\n        }\n        data.end = Object.assign({}, token.start)\n\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token)\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            ['enter', token, context],\n            ['exit', token, context]\n          )\n          eventIndex += 2\n        }\n      }\n\n      eventIndex++\n    }\n  }\n\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Resolver[]} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_index'|'_bufferIndex'>} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = Object.assign(\n    from\n      ? Object.assign({}, from)\n      : {\n          line: 1,\n          column: 1,\n          offset: 0\n        },\n    {\n      _index: 0,\n      _bufferIndex: -1\n    }\n  )\n  /** @type {Record<string, number>} */\n\n  const columnStart = {}\n  /** @type {Array<Construct>} */\n\n  const resolveAllConstructs = []\n  /** @type {Array<Chunk>} */\n\n  let chunks = []\n  /** @type {Array<Token>} */\n\n  let stack = []\n  /** @type {boolean|undefined} */\n\n  let consumed = true\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n\n  const effects = {\n    consume,\n    enter,\n    exit,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  }\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n\n  const context = {\n    previous: null,\n    code: null,\n    containerState: {},\n    events: [],\n    parser,\n    sliceStream,\n    sliceSerialize,\n    now,\n    defineSkip,\n    write\n  }\n  /**\n   * The state function.\n   *\n   * @type {State|void}\n   */\n\n  let state = initialize.tokenize.call(context, effects)\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n\n  let expectedCode\n\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  }\n\n  return context\n  /** @type {TokenizeContext['write']} */\n\n  function write(slice) {\n    chunks = push(chunks, slice)\n    main() // Exit if we’re not done, resolve might change stuff.\n\n    if (chunks[chunks.length - 1] !== null) {\n      return []\n    }\n\n    addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n    context.events = resolveAll(resolveAllConstructs, context.events, context)\n    return context.events\n  } //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs)\n  }\n  /** @type {TokenizeContext['sliceStream']} */\n\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n  /** @type {TokenizeContext['now']} */\n\n  function now() {\n    return Object.assign({}, point)\n  }\n  /** @type {TokenizeContext['defineSkip']} */\n\n  function defineSkip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n  } //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {void}\n   */\n\n  function main() {\n    /** @type {number} */\n    let chunkIndex\n\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\n        }\n\n        while (\n          point._index === chunkIndex &&\n          point._bufferIndex < chunk.length\n        ) {\n          go(chunk.charCodeAt(point._bufferIndex))\n        }\n      } else {\n        go(chunk)\n      }\n    }\n  }\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   * @returns {void}\n   */\n\n  function go(code) {\n    consumed = undefined\n    expectedCode = code\n    state = state(code)\n  }\n  /** @type {Effects['consume']} */\n\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++\n      point.column = 1\n      point.offset += code === -3 ? 2 : 1\n      accountForPotentialSkip()\n    } else if (code !== -1) {\n      point.column++\n      point.offset++\n    } // Not in a string chunk.\n\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++ // At end of string chunk.\n      // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n      // strings.\n\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    } // Expose the previous character.\n\n    context.previous = code // Mark as consumed.\n\n    consumed = true\n  }\n  /** @type {Effects['enter']} */\n\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {}\n    token.type = type\n    token.start = now()\n    context.events.push(['enter', token, context])\n    stack.push(token)\n    return token\n  }\n  /** @type {Effects['exit']} */\n\n  function exit(type) {\n    const token = stack.pop()\n    token.end = now()\n    context.events.push(['exit', token, context])\n    return token\n  }\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  }\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n\n  function onsuccessfulcheck(_, info) {\n    info.restore()\n  }\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   * @param {Record<string, unknown>} [fields]\n   */\n\n  function constructFactory(onreturn, fields) {\n    return hook\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Construct|Array<Construct>|ConstructRecord} constructs\n     * @param {State} returnState\n     * @param {State} [bogusState]\n     * @returns {State}\n     */\n\n    function hook(constructs, returnState, bogusState) {\n      /** @type {Array<Construct>} */\n      let listOfConstructs\n      /** @type {number} */\n\n      let constructIndex\n      /** @type {Construct} */\n\n      let currentConstruct\n      /** @type {Info} */\n\n      let info\n      return Array.isArray(constructs)\n        ? /* c8 ignore next 1 */\n          handleListOfConstructs(constructs)\n        : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n        ? handleListOfConstructs([constructs])\n        : handleMapOfConstructs(constructs)\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       * @returns {State}\n       */\n\n      function handleMapOfConstructs(map) {\n        return start\n        /** @type {State} */\n\n        function start(code) {\n          const def = code !== null && map[code]\n          const all = code !== null && map.null\n          const list = [\n            // To do: add more extension tests.\n\n            /* c8 ignore next 2 */\n            ...(Array.isArray(def) ? def : def ? [def] : []),\n            ...(Array.isArray(all) ? all : all ? [all] : [])\n          ]\n          return handleListOfConstructs(list)(code)\n        }\n      }\n      /**\n       * Handle a list of construct.\n       *\n       * @param {Array<Construct>} list\n       * @returns {State}\n       */\n\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n\n        if (list.length === 0) {\n          return bogusState\n        }\n\n        return handleConstruct(list[constructIndex])\n      }\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       * @returns {State}\n       */\n\n      function handleConstruct(construct) {\n        return start\n        /** @type {State} */\n\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store()\n          currentConstruct = construct\n\n          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.includes(construct.name)\n          ) {\n            return nok(code)\n          }\n\n          return construct.tokenize.call(\n            // If we do have fields, create an object w/ `context` as its\n            // prototype.\n            // This allows a “live binding”, which is needed for `interrupt`.\n            fields ? Object.assign(Object.create(context), fields) : context,\n            effects,\n            ok,\n            nok\n          )(code)\n        }\n      }\n      /** @type {State} */\n\n      function ok(code) {\n        consumed = true\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n      /** @type {State} */\n\n      function nok(code) {\n        consumed = true\n        info.restore()\n\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n\n        return bogusState\n      }\n    }\n  }\n  /**\n   * @param {Construct} construct\n   * @param {number} from\n   * @returns {void}\n   */\n\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct)\n    }\n\n    if (construct.resolve) {\n      splice(\n        context.events,\n        from,\n        context.events.length - from,\n        construct.resolve(context.events.slice(from), context)\n      )\n    }\n\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n  }\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   */\n\n  function store() {\n    const startPoint = now()\n    const startPrevious = context.previous\n    const startCurrentConstruct = context.currentConstruct\n    const startEventsIndex = context.events.length\n    const startStack = Array.from(stack)\n    return {\n      restore,\n      from: startEventsIndex\n    }\n    /**\n     * Restore state.\n     *\n     * @returns {void}\n     */\n\n    function restore() {\n      point = startPoint\n      context.previous = startPrevious\n      context.currentConstruct = startCurrentConstruct\n      context.events.length = startEventsIndex\n      stack = startStack\n      accountForPotentialSkip()\n    }\n  }\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {void}\n   */\n\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line]\n      point.offset += columnStart[point.line] - 1\n    }\n  }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array<Chunk>} chunks\n * @param {Pick<Token, 'start'|'end'>} token\n * @returns {Array<Chunk>}\n */\n\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index\n  const startBufferIndex = token.start._bufferIndex\n  const endIndex = token.end._index\n  const endBufferIndex = token.end._bufferIndex\n  /** @type {Array<Chunk>} */\n\n  let view\n\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n  } else {\n    view = chunks.slice(startIndex, endIndex)\n\n    if (startBufferIndex > -1) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view[0] = view[0].slice(startBufferIndex)\n    }\n\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex))\n    }\n  }\n\n  return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1\n  /** @type {Array<string>} */\n\n  const result = []\n  /** @type {boolean|undefined} */\n\n  let atTab\n\n  while (++index < chunks.length) {\n    const chunk = chunks[index]\n    /** @type {string} */\n\n    let value\n\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else\n      switch (chunk) {\n        case -5: {\n          value = '\\r'\n          break\n        }\n\n        case -4: {\n          value = '\\n'\n          break\n        }\n\n        case -3: {\n          value = '\\r' + '\\n'\n          break\n        }\n\n        case -2: {\n          value = expandTabs ? ' ' : '\\t'\n          break\n        }\n\n        case -1: {\n          if (!expandTabs && atTab) continue\n          value = ' '\n          break\n        }\n\n        default: {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk)\n        }\n      }\n\n    atTab = chunk === -2\n    result.push(value)\n  }\n\n  return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('thematicBreak')\n    marker = code\n    return atBreak(code)\n  }\n  /** @type {State} */\n\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter('thematicBreakSequence')\n      return sequence(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, 'whitespace')(code)\n    }\n\n    if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n      return nok(code)\n    }\n\n    effects.exit('thematicBreak')\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n\n    effects.exit('thematicBreakSequence')\n    return atBreak(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record<string, unknown> & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this\n  const tail = self.events[self.events.length - 1]\n  let initialSize =\n    tail && tail[1].type === 'linePrefix'\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    const kind =\n      self.containerState.type ||\n      (code === 42 || code === 43 || code === 45\n        ? 'listUnordered'\n        : 'listOrdered')\n\n    if (\n      kind === 'listUnordered'\n        ? !self.containerState.marker || code === self.containerState.marker\n        : asciiDigit(code)\n    ) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind\n        effects.enter(kind, {\n          _container: true\n        })\n      }\n\n      if (kind === 'listUnordered') {\n        effects.enter('listItemPrefix')\n        return code === 42 || code === 45\n          ? effects.check(thematicBreak, nok, atMarker)(code)\n          : atMarker(code)\n      }\n\n      if (!self.interrupt || code === 49) {\n        effects.enter('listItemPrefix')\n        effects.enter('listItemValue')\n        return inside(code)\n      }\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (\n      (!self.interrupt || size < 2) &&\n      (self.containerState.marker\n        ? code === self.containerState.marker\n        : code === 41 || code === 46)\n    ) {\n      effects.exit('listItemValue')\n      return atMarker(code)\n    }\n\n    return nok(code)\n  }\n  /**\n   * @type {State}\n   **/\n\n  function atMarker(code) {\n    effects.enter('listItemMarker')\n    effects.consume(code)\n    effects.exit('listItemMarker')\n    self.containerState.marker = self.containerState.marker || code\n    return effects.check(\n      blankLine, // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n  /** @type {State} */\n\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n  /** @type {State} */\n\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter('listItemPrefixWhitespace')\n      effects.consume(code)\n      effects.exit('listItemPrefixWhitespace')\n      return endOfPrefix\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function endOfPrefix(code) {\n    self.containerState.size =\n      initialSize +\n      self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n    return ok(code)\n  }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this\n  self.containerState._closeFlow = undefined\n  return effects.check(blankLine, onBlank, notBlank)\n  /** @type {State} */\n\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine // We have a blank line.\n    // Still, try to consume at most the items size.\n\n    return factorySpace(\n      effects,\n      ok,\n      'listItemIndent',\n      self.containerState.size + 1\n    )(code)\n  }\n  /** @type {State} */\n\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined\n      self.containerState.initialBlankLine = undefined\n      return notInCurrentItem(code)\n    }\n\n    self.containerState.furtherBlankLines = undefined\n    self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n  /** @type {State} */\n\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n    self.interrupt = undefined\n    return factorySpace(\n      effects,\n      effects.attempt(list, ok, nok),\n      'linePrefix',\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )(code)\n  }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemIndent',\n    self.containerState.size + 1\n  )\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'listItemIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n      ? ok(code)\n      : nok(code)\n  }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemPrefixWhitespace',\n    self.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : 4 + 1\n  )\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return !markdownSpace(code) &&\n      tail &&\n      tail[1].type === 'listItemPrefixWhitespace'\n      ? ok(code)\n      : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState\n\n      if (!state.open) {\n        effects.enter('blockQuote', {\n          _container: true\n        })\n        state.open = true\n      }\n\n      effects.enter('blockQuotePrefix')\n      effects.enter('blockQuoteMarker')\n      effects.consume(code)\n      effects.exit('blockQuoteMarker')\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter('blockQuotePrefixWhitespace')\n      effects.consume(code)\n      effects.exit('blockQuotePrefixWhitespace')\n      effects.exit('blockQuotePrefix')\n      return ok\n    }\n\n    effects.exit('blockQuotePrefix')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(blockQuote, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n  )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n  effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n  asciiControl,\n  markdownLineEndingOrSpace,\n  markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n  effects,\n  ok,\n  nok,\n  type,\n  literalType,\n  literalMarkerType,\n  rawType,\n  stringType,\n  max\n) {\n  const limit = max || Number.POSITIVE_INFINITY\n  let balance = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type)\n      effects.enter(literalType)\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      return destinationEnclosedBefore\n    }\n\n    if (code === null || code === 41 || asciiControl(code)) {\n      return nok(code)\n    }\n\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationRaw(code)\n  }\n  /** @type {State} */\n\n  function destinationEnclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      effects.exit(literalType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationEnclosed(code)\n  }\n  /** @type {State} */\n\n  function destinationEnclosed(code) {\n    if (code === 62) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      return destinationEnclosedBefore(code)\n    }\n\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n  }\n  /** @type {State} */\n\n  function destinationEnclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code)\n      return destinationEnclosed\n    }\n\n    return destinationEnclosed(code)\n  }\n  /** @type {State} */\n\n  function destinationRaw(code) {\n    if (code === 40) {\n      if (++balance > limit) return nok(code)\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === 41) {\n      if (!balance--) {\n        effects.exit('chunkString')\n        effects.exit(stringType)\n        effects.exit(rawType)\n        effects.exit(type)\n        return ok(code)\n      }\n\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      if (balance) return nok(code)\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n\n    if (asciiControl(code)) return nok(code)\n    effects.consume(code)\n    return code === 92 ? destinationRawEscape : destinationRaw\n  }\n  /** @type {State} */\n\n  function destinationRawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    return destinationRaw(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this\n  let size = 0\n  /** @type {boolean} */\n\n  let data\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    effects.enter(stringType)\n    return atBreak\n  }\n  /** @type {State} */\n\n  function atBreak(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      (code === 93 && !data) ||\n      /* To do: remove in the future once we’ve switched from\n       * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n       * which doesn’t need this */\n\n      /* Hidden footnotes hook */\n\n      /* c8 ignore next 3 */\n      (code === 94 &&\n        !size &&\n        '_hiddenFootnoteSupport' in self.parser.constructs) ||\n      size > 999\n    ) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.exit(stringType)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return atBreak\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return label(code)\n  }\n  /** @type {State} */\n\n  function label(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      code === 93 ||\n      markdownLineEnding(code) ||\n      size++ > 999\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n\n    effects.consume(code)\n    data = data || !markdownSpace(code)\n    return code === 92 ? labelEscape : label\n  }\n  /** @type {State} */\n\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    marker = code === 40 ? 41 : code\n    return atFirstTitleBreak\n  }\n  /** @type {State} */\n\n  function atFirstTitleBreak(code) {\n    if (code === marker) {\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    return atTitleBreak(code)\n  }\n  /** @type {State} */\n\n  function atTitleBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return atFirstTitleBreak(marker)\n    }\n\n    if (code === null) {\n      return nok(code)\n    } // Note: blank lines can’t exist in content.\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, atTitleBreak, 'linePrefix')\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return title(code)\n  }\n  /** @type {State} */\n\n  function title(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      return atTitleBreak(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? titleEscape : title\n  }\n  /** @type {State} */\n\n  function titleEscape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code)\n      return title\n    }\n\n    return title(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      seen = true\n      return start\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? 'linePrefix' : 'lineSuffix'\n      )(code)\n    }\n\n    return ok(code)\n  }\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n  return (\n    value // Collapse Markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n      .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n      // counterpart is uppercased will result in a different uppercase\n      // character.\n      // Hence, to get that form, we perform both lower- and uppercase.\n      // Upper case makes sure keys will not interact with default prototypal\n      // methods: no method is uppercase.\n      .toLowerCase()\n      .toUpperCase()\n  )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n  tokenize: tokenizeTitle,\n  partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this\n  /** @type {string} */\n\n  let identifier\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('definition')\n    return factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      nok,\n      'definitionLabel',\n      'definitionLabelMarker',\n      'definitionLabelString'\n    )(code)\n  }\n  /** @type {State} */\n\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(\n      self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n    )\n\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n      return factoryWhitespace(\n        effects,\n        factoryDestination(\n          effects,\n          effects.attempt(\n            titleConstruct,\n            factorySpace(effects, after, 'whitespace'),\n            factorySpace(effects, after, 'whitespace')\n          ),\n          nok,\n          'definitionDestination',\n          'definitionDestinationLiteral',\n          'definitionDestinationLiteralMarker',\n          'definitionDestinationRaw',\n          'definitionDestinationString'\n        )\n      )\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('definition')\n\n      if (!self.parser.defined.includes(identifier)) {\n        self.parser.defined.push(identifier)\n      }\n\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, before)(code)\n      : nok(code)\n  }\n  /** @type {State} */\n\n  function before(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factorySpace(effects, after, 'whitespace'),\n        nok,\n        'definitionTitle',\n        'definitionTitleMarker',\n        'definitionTitleString'\n      )(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n  tokenize: tokenizeIndentedContent,\n  partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('codeIndented')\n    return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n  }\n  /** @type {State} */\n\n  function afterStartPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n      ? afterPrefix(code)\n      : nok(code)\n  }\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    if (code === null) {\n      return after(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(indentedContent, afterPrefix, after)(code)\n    }\n\n    effects.enter('codeFlowValue')\n    return content(code)\n  }\n  /** @type {State} */\n\n  function content(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return afterPrefix(code)\n    }\n\n    effects.consume(code)\n    return content\n  }\n  /** @type {State} */\n\n  function after(code) {\n    effects.exit('codeIndented')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return start\n    }\n\n    return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n  }\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n      ? ok(code)\n      : markdownLineEnding(code)\n      ? start(code)\n      : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2\n  let contentStart = 3\n  /** @type {Token} */\n\n  let content\n  /** @type {Token} */\n\n  let text // Prefix whitespace, part of the opening.\n\n  if (events[contentStart][1].type === 'whitespace') {\n    contentStart += 2\n  } // Suffix whitespace, part of the closing.\n\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === 'whitespace'\n  ) {\n    contentEnd -= 2\n  }\n\n  if (\n    events[contentEnd][1].type === 'atxHeadingSequence' &&\n    (contentStart === contentEnd - 1 ||\n      (contentEnd - 4 > contentStart &&\n        events[contentEnd - 2][1].type === 'whitespace'))\n  ) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n  }\n\n  if (contentEnd > contentStart) {\n    content = {\n      type: 'atxHeadingText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    }\n    text = {\n      type: 'chunkText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      // @ts-expect-error Constants are fine to assign.\n      contentType: 'text'\n    }\n    splice(events, contentStart, contentEnd - contentStart + 1, [\n      ['enter', content, context],\n      ['enter', text, context],\n      ['exit', text, context],\n      ['exit', content, context]\n    ])\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  const self = this\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('atxHeading')\n    effects.enter('atxHeadingSequence')\n    return fenceOpenInside(code)\n  }\n  /** @type {State} */\n\n  function fenceOpenInside(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code)\n      return fenceOpenInside\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingSequence')\n      return self.interrupt ? ok(code) : headingBreak(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function headingBreak(code) {\n    if (code === 35) {\n      effects.enter('atxHeadingSequence')\n      return sequence(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('atxHeading')\n      return ok(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headingBreak, 'whitespace')(code)\n    }\n\n    effects.enter('atxHeadingText')\n    return data(code)\n  }\n  /** @type {State} */\n\n  function sequence(code) {\n    if (code === 35) {\n      effects.consume(code)\n      return sequence\n    }\n\n    effects.exit('atxHeadingSequence')\n    return headingBreak(code)\n  }\n  /** @type {State} */\n\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingText')\n      return headingBreak(code)\n    }\n\n    effects.consume(code)\n    return data\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n  let index = events.length\n  /** @type {number|undefined} */\n\n  let content\n  /** @type {number|undefined} */\n\n  let text\n  /** @type {number|undefined} */\n\n  let definition // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === 'content') {\n        content = index\n        break\n      }\n\n      if (events[index][1].type === 'paragraph') {\n        text = index\n      }\n    } // Exit\n    else {\n      if (events[index][1].type === 'content') {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1)\n      }\n\n      if (!definition && events[index][1].type === 'definition') {\n        definition = index\n      }\n    }\n  }\n\n  const heading = {\n    type: 'setextHeading',\n    start: Object.assign({}, events[text][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  } // Change the paragraph to setext heading text.\n\n  events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context])\n    events.splice(definition + 1, 0, ['exit', events[content][1], context])\n    events[content][1].end = Object.assign({}, events[definition][1].end)\n  } else {\n    events[content][1] = heading\n  } // Add the heading exit at the end.\n\n  events.push(['exit', heading, context])\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  /** @type {boolean} */\n\n  let paragraph // Find an opening.\n\n  while (index--) {\n    // Skip enter/exit of line ending, line prefix, and content.\n    // We can now either have a definition or a paragraph.\n    if (\n      self.events[index][1].type !== 'lineEnding' &&\n      self.events[index][1].type !== 'linePrefix' &&\n      self.events[index][1].type !== 'content'\n    ) {\n      paragraph = self.events[index][1].type === 'paragraph'\n      break\n    }\n  }\n\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter('setextHeadingLine')\n      effects.enter('setextHeadingLineSequence')\n      marker = code\n      return closingSequence(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function closingSequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return closingSequence\n    }\n\n    effects.exit('setextHeadingLineSequence')\n    return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n  }\n  /** @type {State} */\n\n  function closingSequenceEnd(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('setextHeadingLine')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n  tokenize: tokenizeNextBlank,\n  partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n  let index = events.length\n\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n      break\n    }\n  }\n\n  if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n    events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n    events.splice(index - 2, 2)\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this\n  /** @type {number} */\n\n  let kind\n  /** @type {boolean} */\n\n  let startTag\n  /** @type {string} */\n\n  let buffer\n  /** @type {number} */\n\n  let index\n  /** @type {Code} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('htmlFlow')\n    effects.enter('htmlFlowData')\n    effects.consume(code)\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationStart\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = String.fromCharCode(code)\n      startTag = true\n      return tagName\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function declarationStart(code) {\n    if (code === 45) {\n      effects.consume(code)\n      kind = 2\n      return commentOpenInside\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      kind = 5\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpenInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      kind = 4\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function cdataOpenInside(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length\n        ? self.interrupt\n          ? ok\n          : continuation\n        : cdataOpenInside\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagName(code) {\n    if (\n      code === null ||\n      code === 47 ||\n      code === 62 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      if (\n        code !== 47 &&\n        startTag &&\n        htmlRawNames.includes(buffer.toLowerCase())\n      ) {\n        kind = 1\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        kind = 6\n\n        if (code === 47) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      kind = 7 // Do not support complete HTML when interrupting\n\n      return self.interrupt && !self.parser.lazy[self.now().line]\n        ? nok(code)\n        : startTag\n        ? completeAttributeNameBefore(code)\n        : completeClosingTagAfter(code)\n    }\n\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuation\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n\n    return completeEnd(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n\n    return completeEnd(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    return completeAttributeNameAfter(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n\n    return completeAttributeNameBefore(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return completeAttributeValueQuoted\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    marker = null\n    return completeAttributeValueUnquoted(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeValueQuoted(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    if (code === marker) {\n      effects.consume(code)\n      return completeAttributeValueQuotedAfter\n    }\n\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n  /** @type {State} */\n\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n  /** @type {State} */\n\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function completeAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return code === null || markdownLineEnding(code)\n      ? continuation(code)\n      : nok(code)\n  }\n  /** @type {State} */\n\n  function continuation(code) {\n    if (code === 45 && kind === 2) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n\n    if (code === 60 && kind === 1) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n\n    if (code === 62 && kind === 4) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (code === 63 && kind === 3) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    if (code === 93 && kind === 5) {\n      effects.consume(code)\n      return continuationCharacterDataInside\n    }\n\n    if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n      return effects.check(\n        nextBlankConstruct,\n        continuationClose,\n        continuationAtLineEnding\n      )(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      return continuationAtLineEnding(code)\n    }\n\n    effects.consume(code)\n    return continuation\n  }\n  /** @type {State} */\n\n  function continuationAtLineEnding(code) {\n    effects.exit('htmlFlowData')\n    return htmlContinueStart(code)\n  }\n  /** @type {State} */\n\n  function htmlContinueStart(code) {\n    if (code === null) {\n      return done(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(\n        {\n          tokenize: htmlLineEnd,\n          partial: true\n        },\n        htmlContinueStart,\n        done\n      )(code)\n    }\n\n    effects.enter('htmlFlowData')\n    return continuation(code)\n  }\n  /** @type {Tokenizer} */\n\n  function htmlLineEnd(effects, ok, nok) {\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return lineStart\n    }\n    /** @type {State} */\n\n    function lineStart(code) {\n      return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n    }\n  }\n  /** @type {State} */\n\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationRawEndTag(code) {\n    if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (asciiAlpha(code) && buffer.length < 8) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationCharacterDataInside(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return continuationClose\n    } // More dashes.\n\n    if (code === 45 && kind === 2) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return done(code)\n    }\n\n    effects.consume(code)\n    return continuationClose\n  }\n  /** @type {State} */\n\n  function done(code) {\n    effects.exit('htmlFlow')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.exit('htmlFlowData')\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    return effects.attempt(blankLine, ok, nok)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this\n  /** @type {Construct} */\n\n  const closingFenceConstruct = {\n    tokenize: tokenizeClosingFence,\n    partial: true\n  }\n  /** @type {Construct} */\n\n  const nonLazyLine = {\n    tokenize: tokenizeNonLazyLine,\n    partial: true\n  }\n  const tail = this.events[this.events.length - 1]\n  const initialPrefix =\n    tail && tail[1].type === 'linePrefix'\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let sizeOpen = 0\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('codeFenced')\n    effects.enter('codeFencedFence')\n    effects.enter('codeFencedFenceSequence')\n    marker = code\n    return sequenceOpen(code)\n  }\n  /** @type {State} */\n\n  function sequenceOpen(code) {\n    if (code === marker) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n\n    effects.exit('codeFencedFenceSequence')\n    return sizeOpen < 3\n      ? nok(code)\n      : factorySpace(effects, infoOpen, 'whitespace')(code)\n  }\n  /** @type {State} */\n\n  function infoOpen(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceInfo')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return info(code)\n  }\n  /** @type {State} */\n\n  function info(code) {\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return factorySpace(effects, infoAfter, 'whitespace')(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return info\n  }\n  /** @type {State} */\n\n  function infoAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n  /** @type {State} */\n\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceMeta')\n      return openAfter(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return meta\n  }\n  /** @type {State} */\n\n  function openAfter(code) {\n    effects.exit('codeFencedFence')\n    return self.interrupt ? ok(code) : contentStart(code)\n  }\n  /** @type {State} */\n\n  function contentStart(code) {\n    if (code === null) {\n      return after(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(\n        nonLazyLine,\n        effects.attempt(\n          closingFenceConstruct,\n          after,\n          initialPrefix\n            ? factorySpace(\n                effects,\n                contentStart,\n                'linePrefix',\n                initialPrefix + 1\n              )\n            : contentStart\n        ),\n        after\n      )(code)\n    }\n\n    effects.enter('codeFlowValue')\n    return contentContinue(code)\n  }\n  /** @type {State} */\n\n  function contentContinue(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return contentStart(code)\n    }\n\n    effects.consume(code)\n    return contentContinue\n  }\n  /** @type {State} */\n\n  function after(code) {\n    effects.exit('codeFenced')\n    return ok(code)\n  }\n  /** @type {Tokenizer} */\n\n  function tokenizeNonLazyLine(effects, ok, nok) {\n    const self = this\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return lineStart\n    }\n    /** @type {State} */\n\n    function lineStart(code) {\n      return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n    }\n  }\n  /** @type {Tokenizer} */\n\n  function tokenizeClosingFence(effects, ok, nok) {\n    let size = 0\n    return factorySpace(\n      effects,\n      closingSequenceStart,\n      'linePrefix',\n      this.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )\n    /** @type {State} */\n\n    function closingSequenceStart(code) {\n      effects.enter('codeFencedFence')\n      effects.enter('codeFencedFenceSequence')\n      return closingSequence(code)\n    }\n    /** @type {State} */\n\n    function closingSequence(code) {\n      if (code === marker) {\n        effects.consume(code)\n        size++\n        return closingSequence\n      }\n\n      if (size < sizeOpen) return nok(code)\n      effects.exit('codeFencedFenceSequence')\n      return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n    }\n    /** @type {State} */\n\n    function closingSequenceEnd(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('codeFencedFence')\n        return ok(code)\n      }\n\n      return nok(code)\n    }\n  }\n}\n","/// <reference lib=\"dom\" />\n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const char = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n  asciiAlphanumeric,\n  asciiDigit,\n  asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this\n  let size = 0\n  /** @type {number} */\n\n  let max\n  /** @type {(code: Code) => code is number} */\n\n  let test\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('characterReference')\n    effects.enter('characterReferenceMarker')\n    effects.consume(code)\n    effects.exit('characterReferenceMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 35) {\n      effects.enter('characterReferenceMarkerNumeric')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerNumeric')\n      return numeric\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 31\n    test = asciiAlphanumeric\n    return value(code)\n  }\n  /** @type {State} */\n\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter('characterReferenceMarkerHexadecimal')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerHexadecimal')\n      effects.enter('characterReferenceValue')\n      max = 6\n      test = asciiHexDigit\n      return value\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 7\n    test = asciiDigit\n    return value(code)\n  }\n  /** @type {State} */\n\n  function value(code) {\n    /** @type {Token} */\n    let token\n\n    if (code === 59 && size) {\n      token = effects.exit('characterReferenceValue')\n\n      if (\n        test === asciiAlphanumeric &&\n        !decodeNamedCharacterReference(self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('characterReferenceMarker')\n      effects.consume(code)\n      effects.exit('characterReferenceMarker')\n      effects.exit('characterReference')\n      return ok\n    }\n\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('characterEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    effects.exit('escapeMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (asciiPunctuation(code)) {\n      effects.enter('characterEscapeValue')\n      effects.consume(code)\n      effects.exit('characterEscapeValue')\n      effects.exit('characterEscape')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, ok, 'linePrefix')\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n  tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n  tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n  let index = -1\n  /** @type {Token} */\n\n  let token\n\n  while (++index < events.length) {\n    token = events[index][1]\n\n    if (\n      token.type === 'labelImage' ||\n      token.type === 'labelLink' ||\n      token.type === 'labelEnd'\n    ) {\n      // Remove the marker.\n      events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n      token.type = 'data'\n      index++\n    }\n  }\n\n  return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length\n  let offset = 0\n  /** @type {Token} */\n\n  let token\n  /** @type {number|undefined} */\n\n  let open\n  /** @type {number|undefined} */\n\n  let close\n  /** @type {Event[]} */\n\n  let media // Find an opening.\n\n  while (index--) {\n    token = events[index][1]\n\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (\n        token.type === 'link' ||\n        (token.type === 'labelLink' && token._inactive)\n      ) {\n        break\n      } // Mark other link openings as inactive, as we can’t have links in\n      // links.\n\n      if (events[index][0] === 'enter' && token.type === 'labelLink') {\n        token._inactive = true\n      }\n    } else if (close) {\n      if (\n        events[index][0] === 'enter' &&\n        (token.type === 'labelImage' || token.type === 'labelLink') &&\n        !token._balanced\n      ) {\n        open = index\n\n        if (token.type !== 'labelLink') {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === 'labelEnd') {\n      close = index\n    }\n  }\n\n  const group = {\n    type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n  const label = {\n    type: 'label',\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[close][1].end)\n  }\n  const text = {\n    type: 'labelText',\n    start: Object.assign({}, events[open + offset + 2][1].end),\n    end: Object.assign({}, events[close - 2][1].start)\n  }\n  media = [\n    ['enter', group, context],\n    ['enter', label, context]\n  ] // Opening marker.\n\n  media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n  media = push(media, [['enter', text, context]]) // Between.\n\n  media = push(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  ) // Text close, marker close, label close.\n\n  media = push(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ]) // Reference, resource, or so.\n\n  media = push(media, events.slice(close + 1)) // Media close.\n\n  media = push(media, [['exit', group, context]])\n  splice(events, open, events.length, media)\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Token} */\n\n  let labelStart\n  /** @type {boolean} */\n\n  let defined // Find an opening.\n\n  while (index--) {\n    if (\n      (self.events[index][1].type === 'labelImage' ||\n        self.events[index][1].type === 'labelLink') &&\n      !self.events[index][1]._balanced\n    ) {\n      labelStart = self.events[index][1]\n      break\n    }\n  }\n\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (!labelStart) {\n      return nok(code)\n    } // It’s a balanced bracket, but contains a link.\n\n    if (labelStart._inactive) return balanced(code)\n    defined = self.parser.defined.includes(\n      normalizeIdentifier(\n        self.sliceSerialize({\n          start: labelStart.end,\n          end: self.now()\n        })\n      )\n    )\n    effects.enter('labelEnd')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelEnd')\n    return afterLabelEnd\n  }\n  /** @type {State} */\n\n  function afterLabelEnd(code) {\n    // Resource: `[asd](fgh)`.\n    if (code === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        ok,\n        defined ? ok : balanced\n      )(code)\n    } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n    if (code === 91) {\n      return effects.attempt(\n        fullReferenceConstruct,\n        ok,\n        defined\n          ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n          : balanced\n      )(code)\n    } // Shortcut reference: `[asd]`?\n\n    return defined ? ok(code) : balanced(code)\n  }\n  /** @type {State} */\n\n  function balanced(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('resource')\n    effects.enter('resourceMarker')\n    effects.consume(code)\n    effects.exit('resourceMarker')\n    return factoryWhitespace(effects, open)\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 41) {\n      return end(code)\n    }\n\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      nok,\n      'resourceDestination',\n      'resourceDestinationLiteral',\n      'resourceDestinationLiteralMarker',\n      'resourceDestinationRaw',\n      'resourceDestinationString',\n      32\n    )(code)\n  }\n  /** @type {State} */\n\n  function destinationAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, between)(code)\n      : end(code)\n  }\n  /** @type {State} */\n\n  function between(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factoryWhitespace(effects, end),\n        nok,\n        'resourceTitle',\n        'resourceTitleMarker',\n        'resourceTitleString'\n      )(code)\n    }\n\n    return end(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    if (code === 41) {\n      effects.enter('resourceMarker')\n      effects.consume(code)\n      effects.exit('resourceMarker')\n      effects.exit('resource')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    return factoryLabel.call(\n      self,\n      effects,\n      afterLabel,\n      nok,\n      'reference',\n      'referenceMarker',\n      'referenceString'\n    )(code)\n  }\n  /** @type {State} */\n\n  function afterLabel(code) {\n    return self.parser.defined.includes(\n      normalizeIdentifier(\n        self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n      )\n    )\n      ? ok(code)\n      : nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('reference')\n    effects.enter('referenceMarker')\n    effects.consume(code)\n    effects.exit('referenceMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 93) {\n      effects.enter('referenceMarker')\n      effects.consume(code)\n      effects.exit('referenceMarker')\n      effects.exit('reference')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('labelImage')\n    effects.enter('labelImageMarker')\n    effects.consume(code)\n    effects.exit('labelImageMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 91) {\n      effects.enter('labelMarker')\n      effects.consume(code)\n      effects.exit('labelMarker')\n      effects.exit('labelImage')\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    /* To do: remove in the future once we’ve switched from\n     * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n     * which doesn’t need this */\n\n    /* Hidden footnotes hook */\n\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n  markdownLineEndingOrSpace,\n  unicodePunctuation,\n  unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n  if (\n    code === null ||\n    markdownLineEndingOrSpace(code) ||\n    unicodeWhitespace(code)\n  ) {\n    return 1\n  }\n\n  if (unicodePunctuation(code)) {\n    return 2\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n  let index = -1\n  /** @type {number} */\n\n  let open\n  /** @type {Token} */\n\n  let group\n  /** @type {Token} */\n\n  let text\n  /** @type {Token} */\n\n  let openingSequence\n  /** @type {Token} */\n\n  let closingSequence\n  /** @type {number} */\n\n  let use\n  /** @type {Event[]} */\n\n  let nextEvents\n  /** @type {number} */\n\n  let offset // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === 'attentionSequence' &&\n      events[index][1]._close\n    ) {\n      open = index // Now walk back to find an opener.\n\n      while (open--) {\n        // Find a token that can open the closer.\n        if (\n          events[open][0] === 'exit' &&\n          events[open][1].type === 'attentionSequence' &&\n          events[open][1]._open && // If the markers are the same:\n          context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n            context.sliceSerialize(events[index][1]).charCodeAt(0)\n        ) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if (\n            (events[open][1]._close || events[index][1]._open) &&\n            (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n            !(\n              (events[open][1].end.offset -\n                events[open][1].start.offset +\n                events[index][1].end.offset -\n                events[index][1].start.offset) %\n              3\n            )\n          ) {\n            continue\n          } // Number of markers to use from the sequence.\n\n          use =\n            events[open][1].end.offset - events[open][1].start.offset > 1 &&\n            events[index][1].end.offset - events[index][1].start.offset > 1\n              ? 2\n              : 1\n          const start = Object.assign({}, events[open][1].end)\n          const end = Object.assign({}, events[index][1].start)\n          movePoint(start, -use)\n          movePoint(end, use)\n          openingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start,\n            end: Object.assign({}, events[open][1].end)\n          }\n          closingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: Object.assign({}, events[index][1].start),\n            end\n          }\n          text = {\n            type: use > 1 ? 'strongText' : 'emphasisText',\n            start: Object.assign({}, events[open][1].end),\n            end: Object.assign({}, events[index][1].start)\n          }\n          group = {\n            type: use > 1 ? 'strong' : 'emphasis',\n            start: Object.assign({}, openingSequence.start),\n            end: Object.assign({}, closingSequence.end)\n          }\n          events[open][1].end = Object.assign({}, openingSequence.start)\n          events[index][1].start = Object.assign({}, closingSequence.end)\n          nextEvents = [] // If there are more markers in the opening, add them before.\n\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context]\n            ])\n          } // Opening.\n\n          nextEvents = push(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ]) // Between.\n\n          nextEvents = push(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          ) // Closing.\n\n          nextEvents = push(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ]) // If there are more markers in the closing, add them after.\n\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2\n            nextEvents = push(nextEvents, [\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context]\n            ])\n          } else {\n            offset = 0\n          }\n\n          splice(events, open - 1, index - open + 3, nextEvents)\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  } // Remove remaining sequences.\n\n  index = -1\n\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null\n  const previous = this.previous\n  const before = classifyCharacter(previous)\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('attentionSequence')\n    marker = code\n    return sequence(code)\n  }\n  /** @type {State} */\n\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return sequence\n    }\n\n    const token = effects.exit('attentionSequence')\n    const after = classifyCharacter(code)\n    const open =\n      !after || (after === 2 && before) || attentionMarkers.includes(code)\n    const close =\n      !before || (before === 2 && after) || attentionMarkers.includes(previous)\n    token._open = Boolean(marker === 42 ? open : open && (before || !close))\n    token._close = Boolean(marker === 42 ? close : close && (after || !open))\n    return ok(code)\n  }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n  point.column += offset\n  point.offset += offset\n  point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  asciiAtext,\n  asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 1\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('autolink')\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.enter('autolinkProtocol')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n\n    return asciiAtext(code) ? emailAtext(code) : nok(code)\n  }\n  /** @type {State} */\n\n  function schemeOrEmailAtext(code) {\n    return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n      ? schemeInsideOrEmailAtext(code)\n      : emailAtext(code)\n  }\n  /** @type {State} */\n\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code)\n      return urlInside\n    }\n\n    if (\n      (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n      size++ < 32\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n\n    return emailAtext(code)\n  }\n  /** @type {State} */\n\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit('autolinkProtocol')\n      return end(code)\n    }\n\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return urlInside\n  }\n  /** @type {State} */\n\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (asciiAtext(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n  }\n  /** @type {State} */\n\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (code === 62) {\n      // Exit, then change the type.\n      effects.exit('autolinkProtocol').type = 'autolinkEmail'\n      return end(code)\n    }\n\n    return emailValue(code)\n  }\n  /** @type {State} */\n\n  function emailValue(code) {\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      effects.consume(code)\n      return code === 45 ? emailValue : emailLabel\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.exit('autolink')\n    return ok\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code>|undefined} */\n\n  let marker\n  /** @type {string} */\n\n  let buffer\n  /** @type {number} */\n\n  let index\n  /** @type {State} */\n\n  let returnState\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('htmlText')\n    effects.enter('htmlTextData')\n    effects.consume(code)\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instruction\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentOpen\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpen\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return declaration\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function commentOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentStart\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function commentStart(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentStartDash\n    }\n\n    return comment(code)\n  }\n  /** @type {State} */\n\n  function commentStartDash(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    return comment(code)\n  }\n  /** @type {State} */\n\n  function comment(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = comment\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return comment\n  }\n  /** @type {State} */\n\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return end\n    }\n\n    return comment(code)\n  }\n  /** @type {State} */\n\n  function cdataOpen(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length ? cdata : cdataOpen\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function cdata(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = cdata\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return cdata\n  }\n  /** @type {State} */\n\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n  /** @type {State} */\n\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n  /** @type {State} */\n\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = declaration\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return declaration\n  }\n  /** @type {State} */\n\n  function instruction(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instructionClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = instruction\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return instruction\n  }\n  /** @type {State} */\n\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code)\n  }\n  /** @type {State} */\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagClose(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return tagCloseBetween(code)\n  }\n  /** @type {State} */\n\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n\n    return end(code)\n  }\n  /** @type {State} */\n\n  function tagOpen(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return end\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n\n    return end(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    return tagOpenAttributeNameAfter(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n\n    return tagOpenBetween(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    effects.consume(code)\n    marker = undefined\n    return tagOpenAttributeValueUnquoted\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return tagOpenAttributeValueQuotedAfter\n    }\n\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  } // We can’t have blank lines in content, so no need to worry about empty\n  // tokens.\n\n  /** @type {State} */\n\n  function atLineEnding(code) {\n    effects.exit('htmlTextData')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(\n      effects,\n      afterPrefix,\n      'linePrefix',\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )\n  }\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    effects.enter('htmlTextData')\n    return returnState(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code)\n      effects.exit('htmlTextData')\n      effects.exit('htmlText')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('labelLink')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelLink')\n    return after\n  }\n  /** @type {State} */\n\n  function after(code) {\n    /* To do: remove in the future once we’ve switched from\n     * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n     * which doesn’t need this */\n\n    /* Hidden footnotes hook. */\n\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('hardBreakEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('escapeMarker')\n      effects.exit('hardBreakEscape')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4\n  let headEnterIndex = 3\n  /** @type {number} */\n\n  let index\n  /** @type {number|undefined} */\n\n  let enter // If we start and end with an EOL or a space.\n\n  if (\n    (events[headEnterIndex][1].type === 'lineEnding' ||\n      events[headEnterIndex][1].type === 'space') &&\n    (events[tailExitIndex][1].type === 'lineEnding' ||\n      events[tailExitIndex][1].type === 'space')\n  ) {\n    index = headEnterIndex // And we have data.\n\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === 'codeTextData') {\n        // Then we have padding.\n        events[headEnterIndex][1].type = 'codeTextPadding'\n        events[tailExitIndex][1].type = 'codeTextPadding'\n        headEnterIndex += 2\n        tailExitIndex -= 2\n        break\n      }\n    }\n  } // Merge adjacent spaces and data.\n\n  index = headEnterIndex - 1\n  tailExitIndex++\n\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n        enter = index\n      }\n    } else if (\n      index === tailExitIndex ||\n      events[index][1].type === 'lineEnding'\n    ) {\n      events[enter][1].type = 'codeTextData'\n\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end\n        events.splice(enter + 2, index - enter - 2)\n        tailExitIndex -= index - enter - 2\n        index = enter + 2\n      }\n\n      enter = undefined\n    }\n  }\n\n  return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return (\n    code !== 96 ||\n    this.events[this.events.length - 1][1].type === 'characterEscape'\n  )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this\n  let sizeOpen = 0\n  /** @type {number} */\n\n  let size\n  /** @type {Token} */\n\n  let token\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('codeText')\n    effects.enter('codeTextSequence')\n    return openingSequence(code)\n  }\n  /** @type {State} */\n\n  function openingSequence(code) {\n    if (code === 96) {\n      effects.consume(code)\n      sizeOpen++\n      return openingSequence\n    }\n\n    effects.exit('codeTextSequence')\n    return gap(code)\n  }\n  /** @type {State} */\n\n  function gap(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code)\n    } // Closing fence?\n    // Could also be data.\n\n    if (code === 96) {\n      token = effects.enter('codeTextSequence')\n      size = 0\n      return closingSequence(code)\n    } // Tabs don’t work, and virtual spaces don’t make sense.\n\n    if (code === 32) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return gap\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return gap\n    } // Data.\n\n    effects.enter('codeTextData')\n    return data(code)\n  } // In code.\n\n  /** @type {State} */\n\n  function data(code) {\n    if (\n      code === null ||\n      code === 32 ||\n      code === 96 ||\n      markdownLineEnding(code)\n    ) {\n      effects.exit('codeTextData')\n      return gap(code)\n    }\n\n    effects.consume(code)\n    return data\n  } // Closing fence.\n\n  /** @type {State} */\n\n  function closingSequence(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code)\n      size++\n      return closingSequence\n    } // Done!\n\n    if (size === sizeOpen) {\n      effects.exit('codeTextSequence')\n      effects.exit('codeText')\n      return ok(code)\n    } // More or less accents: mark as data.\n\n    token.type = 'codeTextData'\n    return data(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n  attention,\n  autolink,\n  blockQuote,\n  characterEscape,\n  characterReference,\n  codeFenced,\n  codeIndented,\n  codeText,\n  definition,\n  hardBreakEscape,\n  headingAtx,\n  htmlFlow,\n  htmlText,\n  labelEnd,\n  labelStartImage,\n  labelStartLink,\n  lineEnding,\n  list,\n  setextUnderline,\n  thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n  [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n  null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n  null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n  null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Array<Chunk>}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n  let column = 1\n  let buffer = ''\n  /** @type {boolean|undefined} */\n\n  let start = true\n  /** @type {boolean|undefined} */\n\n  let atCarriageReturn\n  return preprocessor\n  /** @type {Preprocessor} */\n\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = []\n    /** @type {RegExpMatchArray|null} */\n\n    let match\n    /** @type {number} */\n\n    let next\n    /** @type {number} */\n\n    let startPosition\n    /** @type {number} */\n\n    let endPosition\n    /** @type {Code} */\n\n    let code // @ts-expect-error `Buffer` does allow an encoding.\n\n    value = buffer + value.toString(encoding)\n    startPosition = 0\n    buffer = ''\n\n    if (start) {\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++\n      }\n\n      start = undefined\n    }\n\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition\n      match = search.exec(value)\n      endPosition =\n        match && match.index !== undefined ? match.index : value.length\n      code = value.charCodeAt(endPosition)\n\n      if (!match) {\n        buffer = value.slice(startPosition)\n        break\n      }\n\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3)\n        atCarriageReturn = undefined\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5)\n          atCarriageReturn = undefined\n        }\n\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n\n        switch (code) {\n          case 0: {\n            chunks.push(65533)\n            column++\n            break\n          }\n\n          case 9: {\n            next = Math.ceil(column / 4) * 4\n            chunks.push(-2)\n\n            while (column++ < next) chunks.push(-1)\n\n            break\n          }\n\n          case 10: {\n            chunks.push(-4)\n            column = 1\n            break\n          }\n\n          default: {\n            atCarriageReturn = true\n            column = 1\n          }\n        }\n      }\n\n      startPosition = endPosition + 1\n    }\n\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5)\n      if (buffer) chunks.push(buffer)\n      chunks.push(null)\n    }\n\n    return chunks\n  }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base)\n\n  if (\n    // C0 except for HT, LF, FF, CR, space\n    code < 9 ||\n    code === 11 ||\n    (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n    (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n    (code > 55295 && code < 57344) || // Noncharacters.\n    (code > 64975 && code < 65008) ||\n    (code & 65535) === 65535 ||\n    (code & 65535) === 65534 || // Out of range\n    code > 1114111\n  ) {\n    return '\\uFFFD'\n  }\n\n  return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n  /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1\n  } // Reference.\n\n  const head = $2.charCodeAt(0)\n\n  if (head === 35) {\n    const head = $2.charCodeAt(1)\n    const hex = head === 120 || head === 88\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n  }\n\n  return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record<string, unknown> & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record<string, Handle>} Handles\n *   Token types mapping to handles\n * @typedef {Record<string, Record<string, unknown>|Array<unknown>> & {canContainEols: Array<string>, transforms: Array<Transform>, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial<NormalizedExtension>} Extension\n *   An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n *   mdast compiler context\n * @property {Array<Node | Fragment>} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n *   Set data into the key-value store.\n * @property {<K extends string>(key: K) => CompileData[K]} getData\n *   Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n *   Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n *   Stop capturing and access the output data.\n * @property {<N extends Node>(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n *   Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n *   Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n *   Get the string value of a token.\n * @property {NormalizedExtension} config\n *   Configuration.\n *\n * @typedef {{mdastExtensions?: Array<Extension|Array<Extension>>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n/**\n * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it’s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n  /**\n   * @type {(\n   *   ((value: Value, encoding: Encoding, options?: Options) => Root) &\n   *   ((value: Value, options?: Options) => Root)\n   * )}\n   */\n\n  /**\n   * @param {Value} value\n   * @param {Encoding} [encoding]\n   * @param {Options} [options]\n   * @returns {Root}\n   */\n  function (value, encoding, options) {\n    if (typeof encoding !== 'string') {\n      options = encoding\n      encoding = undefined\n    }\n\n    return compiler(options)(\n      postprocess(\n        parse(options).document().write(preprocess()(value, encoding, true))\n      )\n    )\n  }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n  /** @type {NormalizedExtension} */\n  // @ts-expect-error: our base has all required fields, so the result will too.\n  const config = configure(\n    {\n      transforms: [],\n      canContainEols: [\n        'emphasis',\n        'fragment',\n        'heading',\n        'paragraph',\n        'strong'\n      ],\n      enter: {\n        autolink: opener(link),\n        autolinkProtocol: onenterdata,\n        autolinkEmail: onenterdata,\n        atxHeading: opener(heading),\n        blockQuote: opener(blockQuote),\n        characterEscape: onenterdata,\n        characterReference: onenterdata,\n        codeFenced: opener(codeFlow),\n        codeFencedFenceInfo: buffer,\n        codeFencedFenceMeta: buffer,\n        codeIndented: opener(codeFlow, buffer),\n        codeText: opener(codeText, buffer),\n        codeTextData: onenterdata,\n        data: onenterdata,\n        codeFlowValue: onenterdata,\n        definition: opener(definition),\n        definitionDestinationString: buffer,\n        definitionLabelString: buffer,\n        definitionTitleString: buffer,\n        emphasis: opener(emphasis),\n        hardBreakEscape: opener(hardBreak),\n        hardBreakTrailing: opener(hardBreak),\n        htmlFlow: opener(html, buffer),\n        htmlFlowData: onenterdata,\n        htmlText: opener(html, buffer),\n        htmlTextData: onenterdata,\n        image: opener(image),\n        label: buffer,\n        link: opener(link),\n        listItem: opener(listItem),\n        listItemValue: onenterlistitemvalue,\n        listOrdered: opener(list, onenterlistordered),\n        listUnordered: opener(list),\n        paragraph: opener(paragraph),\n        reference: onenterreference,\n        referenceString: buffer,\n        resourceDestinationString: buffer,\n        resourceTitleString: buffer,\n        setextHeading: opener(heading),\n        strong: opener(strong),\n        thematicBreak: opener(thematicBreak)\n      },\n      exit: {\n        atxHeading: closer(),\n        atxHeadingSequence: onexitatxheadingsequence,\n        autolink: closer(),\n        autolinkEmail: onexitautolinkemail,\n        autolinkProtocol: onexitautolinkprotocol,\n        blockQuote: closer(),\n        characterEscapeValue: onexitdata,\n        characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n        characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n        characterReferenceValue: onexitcharacterreferencevalue,\n        codeFenced: closer(onexitcodefenced),\n        codeFencedFence: onexitcodefencedfence,\n        codeFencedFenceInfo: onexitcodefencedfenceinfo,\n        codeFencedFenceMeta: onexitcodefencedfencemeta,\n        codeFlowValue: onexitdata,\n        codeIndented: closer(onexitcodeindented),\n        codeText: closer(onexitcodetext),\n        codeTextData: onexitdata,\n        data: onexitdata,\n        definition: closer(),\n        definitionDestinationString: onexitdefinitiondestinationstring,\n        definitionLabelString: onexitdefinitionlabelstring,\n        definitionTitleString: onexitdefinitiontitlestring,\n        emphasis: closer(),\n        hardBreakEscape: closer(onexithardbreak),\n        hardBreakTrailing: closer(onexithardbreak),\n        htmlFlow: closer(onexithtmlflow),\n        htmlFlowData: onexitdata,\n        htmlText: closer(onexithtmltext),\n        htmlTextData: onexitdata,\n        image: closer(onexitimage),\n        label: onexitlabel,\n        labelText: onexitlabeltext,\n        lineEnding: onexitlineending,\n        link: closer(onexitlink),\n        listItem: closer(),\n        listOrdered: closer(),\n        listUnordered: closer(),\n        paragraph: closer(),\n        referenceString: onexitreferencestring,\n        resourceDestinationString: onexitresourcedestinationstring,\n        resourceTitleString: onexitresourcetitlestring,\n        resource: onexitresource,\n        setextHeading: closer(onexitsetextheading),\n        setextHeadingLineSequence: onexitsetextheadinglinesequence,\n        setextHeadingText: onexitsetextheadingtext,\n        strong: closer(),\n        thematicBreak: closer()\n      }\n    },\n    options.mdastExtensions || []\n  )\n  /** @type {CompileData} */\n\n  const data = {}\n  return compile\n  /**\n   * @param {Array<Event>} events\n   * @returns {Root}\n   */\n\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    }\n    /** @type {CompileContext['stack']} */\n\n    const stack = [tree]\n    /** @type {CompileContext['tokenStack']} */\n\n    const tokenStack = []\n    /** @type {Array<number>} */\n\n    const listStack = []\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n\n    const context = {\n      stack,\n      tokenStack,\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      setData,\n      getData\n    }\n    let index = -1\n\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (\n        events[index][1].type === 'listOrdered' ||\n        events[index][1].type === 'listUnordered'\n      ) {\n        if (events[index][0] === 'enter') {\n          listStack.push(index)\n        } else {\n          const tail = listStack.pop()\n          index = prepareList(events, tail, index)\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      const handler = config[events[index][0]]\n\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(\n          Object.assign(\n            {\n              sliceSerialize: events[index][2].sliceSerialize\n            },\n            context\n          ),\n          events[index][1]\n        )\n      }\n    }\n\n    if (tokenStack.length > 0) {\n      const tail = tokenStack[tokenStack.length - 1]\n      const handler = tail[1] || defaultOnError\n      handler.call(context, undefined, tail[0])\n    } // Figure out `root` position.\n\n    tree.position = {\n      start: point(\n        events.length > 0\n          ? events[0][1].start\n          : {\n              line: 1,\n              column: 1,\n              offset: 0\n            }\n      ),\n      end: point(\n        events.length > 0\n          ? events[events.length - 2][1].end\n          : {\n              line: 1,\n              column: 1,\n              offset: 0\n            }\n      )\n    }\n    index = -1\n\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n\n    return tree\n  }\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n\n  function prepareList(events, start, length) {\n    let index = start - 1\n    let containerBalance = -1\n    let listSpread = false\n    /** @type {Token|undefined} */\n\n    let listItem\n    /** @type {number|undefined} */\n\n    let lineIndex\n    /** @type {number|undefined} */\n\n    let firstBlankLineIndex\n    /** @type {boolean|undefined} */\n\n    let atMarker\n\n    while (++index <= length) {\n      const event = events[index]\n\n      if (\n        event[1].type === 'listUnordered' ||\n        event[1].type === 'listOrdered' ||\n        event[1].type === 'blockQuote'\n      ) {\n        if (event[0] === 'enter') {\n          containerBalance++\n        } else {\n          containerBalance--\n        }\n\n        atMarker = undefined\n      } else if (event[1].type === 'lineEndingBlank') {\n        if (event[0] === 'enter') {\n          if (\n            listItem &&\n            !atMarker &&\n            !containerBalance &&\n            !firstBlankLineIndex\n          ) {\n            firstBlankLineIndex = index\n          }\n\n          atMarker = undefined\n        }\n      } else if (\n        event[1].type === 'linePrefix' ||\n        event[1].type === 'listItemValue' ||\n        event[1].type === 'listItemMarker' ||\n        event[1].type === 'listItemPrefix' ||\n        event[1].type === 'listItemPrefixWhitespace'\n      ) {\n        // Empty.\n      } else {\n        atMarker = undefined\n      }\n\n      if (\n        (!containerBalance &&\n          event[0] === 'enter' &&\n          event[1].type === 'listItemPrefix') ||\n        (containerBalance === -1 &&\n          event[0] === 'exit' &&\n          (event[1].type === 'listUnordered' ||\n            event[1].type === 'listOrdered'))\n      ) {\n        if (listItem) {\n          let tailIndex = index\n          lineIndex = undefined\n\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex]\n\n            if (\n              tailEvent[1].type === 'lineEnding' ||\n              tailEvent[1].type === 'lineEndingBlank'\n            ) {\n              if (tailEvent[0] === 'exit') continue\n\n              if (lineIndex) {\n                events[lineIndex][1].type = 'lineEndingBlank'\n                listSpread = true\n              }\n\n              tailEvent[1].type = 'lineEnding'\n              lineIndex = tailIndex\n            } else if (\n              tailEvent[1].type === 'linePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n              tailEvent[1].type === 'blockQuoteMarker' ||\n              tailEvent[1].type === 'listItemIndent'\n            ) {\n              // Empty\n            } else {\n              break\n            }\n          }\n\n          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            // @ts-expect-error Patched.\n            listItem._spread = true\n          } // Fix position.\n\n          listItem.end = Object.assign(\n            {},\n            lineIndex ? events[lineIndex][1].start : event[1].end\n          )\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n          index++\n          length++\n        } // Create a new list item.\n\n        if (event[1].type === 'listItemPrefix') {\n          listItem = {\n            type: 'listItem',\n            // @ts-expect-error Patched\n            _spread: false,\n            start: Object.assign({}, event[1].start)\n          } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n          events.splice(index, 0, ['enter', listItem, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    } // @ts-expect-error Patched.\n\n    events[start][1]._spread = listSpread\n    return length\n  }\n  /**\n   * @type {CompileContext['setData']}\n   * @param [value]\n   */\n\n  function setData(key, value) {\n    data[key] = value\n  }\n  /**\n   * @type {CompileContext['getData']}\n   * @template {string} K\n   * @param {K} key\n   * @returns {CompileData[K]}\n   */\n\n  function getData(key) {\n    return data[key]\n  }\n  /**\n   * @param {Point} d\n   * @returns {Point}\n   */\n\n  function point(d) {\n    return {\n      line: d.line,\n      column: d.column,\n      offset: d.offset\n    }\n  }\n  /**\n   * @param {(token: Token) => Node} create\n   * @param {Handle} [and]\n   * @returns {Handle}\n   */\n\n  function opener(create, and) {\n    return open\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n  /** @type {CompileContext['buffer']} */\n\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    })\n  }\n  /**\n   * @type {CompileContext['enter']}\n   * @template {Node} N\n   * @this {CompileContext}\n   * @param {N} node\n   * @param {Token} token\n   * @param {OnEnterError} [errorHandler]\n   * @returns {N}\n   */\n\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1]\n    // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n    parent.children.push(node)\n    this.stack.push(node)\n    this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n    node.position = {\n      start: point(token.start)\n    }\n    return node\n  }\n  /**\n   * @param {Handle} [and]\n   * @returns {Handle}\n   */\n\n  function closer(and) {\n    return close\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n  /**\n   * @type {CompileContext['exit']}\n   * @this {CompileContext}\n   * @param {Token} token\n   * @param {OnExitError} [onExitError]\n   * @returns {Node}\n   */\n\n  function exit(token, onExitError) {\n    const node = this.stack.pop()\n    const open = this.tokenStack.pop()\n\n    if (!open) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({\n            start: token.start,\n            end: token.end\n          }) +\n          '): it’s not open'\n      )\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0])\n      } else {\n        const handler = open[1] || defaultOnError\n        handler.call(this, token, open[0])\n      }\n    }\n\n    node.position.end = point(token.end)\n    return node\n  }\n  /**\n   * @this {CompileContext}\n   * @returns {string}\n   */\n\n  function resume() {\n    return toString(this.stack.pop())\n  } //\n  // Handlers.\n  //\n\n  /** @type {Handle} */\n\n  function onenterlistordered() {\n    setData('expectingFirstListItemValue', true)\n  }\n  /** @type {Handle} */\n\n  function onenterlistitemvalue(token) {\n    if (getData('expectingFirstListItemValue')) {\n      const ancestor =\n        /** @type {List} */\n        this.stack[this.stack.length - 2]\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n      setData('expectingFirstListItemValue')\n    }\n  }\n  /** @type {Handle} */\n\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.lang = data\n  }\n  /** @type {Handle} */\n\n  function onexitcodefencedfencemeta() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.meta = data\n  }\n  /** @type {Handle} */\n\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (getData('flowCodeInside')) return\n    this.buffer()\n    setData('flowCodeInside', true)\n  }\n  /** @type {Handle} */\n\n  function onexitcodefenced() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n    setData('flowCodeInside')\n  }\n  /** @type {Handle} */\n\n  function onexitcodeindented() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n  }\n  /** @type {Handle} */\n\n  function onexitdefinitionlabelstring(token) {\n    // Discard label, use the source content instead.\n    const label = this.resume()\n    const node =\n      /** @type {Definition} */\n      this.stack[this.stack.length - 1]\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n  /** @type {Handle} */\n\n  function onexitdefinitiontitlestring() {\n    const data = this.resume()\n    const node =\n      /** @type {Definition} */\n      this.stack[this.stack.length - 1]\n    node.title = data\n  }\n  /** @type {Handle} */\n\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume()\n    const node =\n      /** @type {Definition} */\n      this.stack[this.stack.length - 1]\n    node.url = data\n  }\n  /** @type {Handle} */\n\n  function onexitatxheadingsequence(token) {\n    const node =\n      /** @type {Heading} */\n      this.stack[this.stack.length - 1]\n\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length\n      node.depth = depth\n    }\n  }\n  /** @type {Handle} */\n\n  function onexitsetextheadingtext() {\n    setData('setextHeadingSlurpLineEnding', true)\n  }\n  /** @type {Handle} */\n\n  function onexitsetextheadinglinesequence(token) {\n    const node =\n      /** @type {Heading} */\n      this.stack[this.stack.length - 1]\n    node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n  }\n  /** @type {Handle} */\n\n  function onexitsetextheading() {\n    setData('setextHeadingSlurpLineEnding')\n  }\n  /** @type {Handle} */\n\n  function onenterdata(token) {\n    const parent =\n      /** @type {Parent} */\n      this.stack[this.stack.length - 1]\n    /** @type {Node} */\n\n    let tail = parent.children[parent.children.length - 1]\n\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text() // @ts-expect-error: we’ll add `end` later.\n\n      tail.position = {\n        start: point(token.start)\n      } // @ts-expect-error: Assume `parent` accepts `text`.\n\n      parent.children.push(tail)\n    }\n\n    this.stack.push(tail)\n  }\n  /** @type {Handle} */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop()\n    tail.value += this.sliceSerialize(token)\n    tail.position.end = point(token.end)\n  }\n  /** @type {Handle} */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1]\n\n    // If we’re at a hard break, include the line ending in there.\n    if (getData('atHardBreak')) {\n      const tail = context.children[context.children.length - 1]\n      tail.position.end = point(token.end)\n      setData('atHardBreak')\n      return\n    }\n\n    if (\n      !getData('setextHeadingSlurpLineEnding') &&\n      config.canContainEols.includes(context.type)\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n  /** @type {Handle} */\n\n  function onexithardbreak() {\n    setData('atHardBreak', true)\n  }\n  /** @type {Handle} */\n\n  function onexithtmlflow() {\n    const data = this.resume()\n    const node =\n      /** @type {HTML} */\n      this.stack[this.stack.length - 1]\n    node.value = data\n  }\n  /** @type {Handle} */\n\n  function onexithtmltext() {\n    const data = this.resume()\n    const node =\n      /** @type {HTML} */\n      this.stack[this.stack.length - 1]\n    node.value = data\n  }\n  /** @type {Handle} */\n\n  function onexitcodetext() {\n    const data = this.resume()\n    const node =\n      /** @type {InlineCode} */\n      this.stack[this.stack.length - 1]\n    node.value = data\n  }\n  /** @type {Handle} */\n\n  function onexitlink() {\n    const context =\n      /** @type {Link & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 1] // To do: clean.\n\n    if (getData('inReference')) {\n      context.type += 'Reference' // @ts-expect-error: mutate.\n\n      context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n      delete context.url\n      delete context.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete context.identifier // @ts-expect-error: mutate.\n\n      delete context.label\n    }\n\n    setData('referenceType')\n  }\n  /** @type {Handle} */\n\n  function onexitimage() {\n    const context =\n      /** @type {Image & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 1] // To do: clean.\n\n    if (getData('inReference')) {\n      context.type += 'Reference' // @ts-expect-error: mutate.\n\n      context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n      delete context.url\n      delete context.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete context.identifier // @ts-expect-error: mutate.\n\n      delete context.label\n    }\n\n    setData('referenceType')\n  }\n  /** @type {Handle} */\n\n  function onexitlabeltext(token) {\n    const ancestor =\n      /** @type {(Link|Image) & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 2]\n    const string = this.sliceSerialize(token)\n    ancestor.label = decodeString(string)\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n  }\n  /** @type {Handle} */\n\n  function onexitlabel() {\n    const fragment =\n      /** @type {Fragment} */\n      this.stack[this.stack.length - 1]\n    const value = this.resume()\n    const node =\n      /** @type {(Link|Image) & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 1] // Assume a reference.\n\n    setData('inReference', true)\n\n    if (node.type === 'link') {\n      // @ts-expect-error: Assume static phrasing content.\n      node.children = fragment.children\n    } else {\n      node.alt = value\n    }\n  }\n  /** @type {Handle} */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume()\n    const node =\n      /** @type {Link|Image} */\n      this.stack[this.stack.length - 1]\n    node.url = data\n  }\n  /** @type {Handle} */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume()\n    const node =\n      /** @type {Link|Image} */\n      this.stack[this.stack.length - 1]\n    node.title = data\n  }\n  /** @type {Handle} */\n\n  function onexitresource() {\n    setData('inReference')\n  }\n  /** @type {Handle} */\n\n  function onenterreference() {\n    setData('referenceType', 'collapsed')\n  }\n  /** @type {Handle} */\n\n  function onexitreferencestring(token) {\n    const label = this.resume()\n    const node =\n      /** @type {LinkReference|ImageReference} */\n      this.stack[this.stack.length - 1]\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    setData('referenceType', 'full')\n  }\n  /** @type {Handle} */\n\n  function onexitcharacterreferencemarker(token) {\n    setData('characterReferenceType', token.type)\n  }\n  /** @type {Handle} */\n\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token)\n    const type = getData('characterReferenceType')\n    /** @type {string} */\n\n    let value\n\n    if (type) {\n      value = decodeNumericCharacterReference(\n        data,\n        type === 'characterReferenceMarkerNumeric' ? 10 : 16\n      )\n      setData('characterReferenceType')\n    } else {\n      // @ts-expect-error `decodeNamedCharacterReference` can return false for\n      // invalid named character references, but everything we’ve tokenized is\n      // valid.\n      value = decodeNamedCharacterReference(data)\n    }\n\n    const tail = this.stack.pop()\n    tail.value += value\n    tail.position.end = point(token.end)\n  }\n  /** @type {Handle} */\n\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    const node =\n      /** @type {Link} */\n      this.stack[this.stack.length - 1]\n    node.url = this.sliceSerialize(token)\n  }\n  /** @type {Handle} */\n\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    const node =\n      /** @type {Link} */\n      this.stack[this.stack.length - 1]\n    node.url = 'mailto:' + this.sliceSerialize(token)\n  } //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    }\n  }\n  /** @returns {Code} */\n\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    }\n  }\n  /** @returns {InlineCode} */\n\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    }\n  }\n  /** @returns {Definition} */\n\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n  /** @returns {Emphasis} */\n\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    }\n  }\n  /** @returns {Heading} */\n\n  function heading() {\n    // @ts-expect-error `depth` will be set later.\n    return {\n      type: 'heading',\n      depth: undefined,\n      children: []\n    }\n  }\n  /** @returns {Break} */\n\n  function hardBreak() {\n    return {\n      type: 'break'\n    }\n  }\n  /** @returns {HTML} */\n\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    }\n  }\n  /** @returns {Image} */\n\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    }\n  }\n  /** @returns {Link} */\n\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    }\n  }\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      // @ts-expect-error Patched.\n      spread: token._spread,\n      children: []\n    }\n  }\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      // @ts-expect-error Patched.\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n  /** @returns {Paragraph} */\n\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    }\n  }\n  /** @returns {Strong} */\n\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    }\n  }\n  /** @returns {Text} */\n\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    }\n  }\n  /** @returns {ThematicBreak} */\n\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    }\n  }\n}\n/**\n * @param {Extension} combined\n * @param {Array<Extension|Array<Extension>>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n  let index = -1\n\n  while (++index < extensions.length) {\n    const value = extensions[index]\n\n    if (Array.isArray(value)) {\n      configure(combined, value)\n    } else {\n      extension(combined, value)\n    }\n  }\n\n  return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n  /** @type {string} */\n  let key\n\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      const list = key === 'canContainEols' || key === 'transforms'\n      const maybe = own.call(combined, key) ? combined[key] : undefined\n      /* c8 ignore next */\n\n      const left = maybe || (combined[key] = list ? [] : {})\n      const right = extension[key]\n\n      if (right) {\n        if (list) {\n          // @ts-expect-error: `left` is an array.\n          combined[key] = [...left, ...right]\n        } else {\n          Object.assign(left, right)\n        }\n      }\n    }\n  }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error(\n      'Cannot close `' +\n        left.type +\n        '` (' +\n        stringifyPosition({\n          start: left.start,\n          end: left.end\n        }) +\n        '): a different token (`' +\n        right.type +\n        '`, ' +\n        stringifyPosition({\n          start: right.start,\n          end: right.end\n        }) +\n        ') is open'\n    )\n  } else {\n    throw new Error(\n      'Cannot close document, a token (`' +\n        right.type +\n        '`, ' +\n        stringifyPosition({\n          start: right.start,\n          end: right.end\n        }) +\n        ') is still open'\n    )\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Array<Event>} events\n * @returns {Array<Event>}\n */\n\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n  /** @type {FullNormalizedExtension} */\n  // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n  const constructs = combineExtensions(\n    // @ts-expect-error Same as above.\n    [defaultConstructs].concat(options.extensions || [])\n  )\n  /** @type {ParseContext} */\n\n  const parser = {\n    defined: [],\n    lazy: {},\n    constructs,\n    content: create(content),\n    document: create(document),\n    flow: create(flow),\n    string: create(string),\n    text: create(text)\n  }\n  return parser\n  /**\n   * @param {InitialConstruct} initial\n   */\n\n  function create(initial) {\n    return creator\n    /** @type {Create} */\n\n    function creator(from) {\n      return createTokenizer(parser, initial, from)\n    }\n  }\n}\n","import remarkParse from './lib/index.js'\n\nexport default remarkParse\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n  /** @type {import('unified').ParserFunction<Root>} */\n  const parser = (doc) => {\n    // Assume options.\n    const settings = /** @type {Options} */ (this.data('settings'))\n\n    return fromMarkdown(\n      doc,\n      Object.assign({}, settings, options, {\n        // Note: these options are not in the readme.\n        // The goal is for them to be set by plugins on `data` instead of being\n        // passed by users.\n        extensions: this.data('micromarkExtensions') || [],\n        mdastExtensions: this.data('fromMarkdownExtensions') || []\n      })\n    )\n  }\n\n  Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, a regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`,\n * or `/^https?$/i` for `img[src]`.\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''))\n\n  if (!protocol) {\n    return value\n  }\n\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it’s relative.\n    colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash > -1 && colon > slash) ||\n    (questionMark > -1 && colon > questionMark) ||\n    (numberSign > -1 && colon > numberSign) || // It is a protocol, it should be allowed.\n    protocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n  let start = 0\n  let skip = 0\n\n  while (++index < value.length) {\n    const code = value.charCodeAt(index)\n    /** @type {string} */\n\n    let replace = '' // A correct percent encoded value.\n\n    if (\n      code === 37 &&\n      asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n      asciiAlphanumeric(value.charCodeAt(index + 2))\n    ) {\n      skip = 2\n    } // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code)\n      }\n    } // Astral.\n    else if (code > 55295 && code < 57344) {\n      const next = value.charCodeAt(index + 1) // A correct surrogate pair.\n\n      if (code < 56320 && next > 56319 && next < 57344) {\n        replace = String.fromCharCode(code, next)\n        skip = 1\n      } // Lone surrogate.\n      else {\n        replace = '\\uFFFD'\n      }\n    } // Unicode.\n    else {\n      replace = String.fromCharCode(code)\n    }\n\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace))\n      start = index + skip + 1\n      replace = ''\n    }\n\n    if (skip) {\n      index += skip\n      skip = 0\n    }\n  }\n\n  return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object<string, unknown>} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.<Type|Props|TestFunctionAnything>} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n  /**\n   * Check if a node passes a test.\n   * When a `parent` node is known the `index` of node should also be given.\n   *\n   * @type {(\n   *   (<T extends Node>(node: unknown, test: T['type']|Partial<T>|TestFunctionPredicate<T>|Array.<T['type']|Partial<T>|TestFunctionPredicate<T>>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n   *   ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * Check if a node passes a test.\n     * When a `parent` node is known the `index` of node should also be given.\n     *\n     * @param {unknown} [node] Node to check\n     * @param {Test} [test]\n     * When nullish, checks if `node` is a `Node`.\n     * When `string`, works like passing `function (node) {return node.type === test}`.\n     * When `function` checks if function passed the node is true.\n     * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n     * When `array`, checks any one of the subtests pass.\n     * @param {number|null|undefined} [index] Position of `node` in `parent`\n     * @param {Parent|null|undefined} [parent] Parent of `node`\n     * @param {unknown} [context] Context object to invoke `test` with\n     * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n     */\n    // eslint-disable-next-line max-params\n    function is(node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      // @ts-expect-error Looks like a node.\n      return node && node.type && typeof node.type === 'string'\n        ? Boolean(check.call(context, node, index, parent))\n        : false\n    }\n  )\n\nexport const convert =\n  /**\n   * @type {(\n   *   (<T extends Node>(test: T['type']|Partial<T>|TestFunctionPredicate<T>) => AssertPredicate<T>) &\n   *   ((test?: Test) => AssertAnything)\n   * )}\n   */\n  (\n    /**\n     * Generate an assertion from a check.\n     * @param {Test} [test]\n     * When nullish, checks if `node` is a `Node`.\n     * When `string`, works like passing `function (node) {return node.type === test}`.\n     * When `function` checks if function passed the node is true.\n     * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n     * When `array`, checks any one of the subtests pass.\n     * @returns {AssertAnything}\n     */\n    function (test) {\n      if (test === undefined || test === null) {\n        return ok\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n/**\n * @param {Array.<Type|Props|TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n  /** @type {Array.<AssertAnything>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @param {unknown[]} parameters\n   * @returns {boolean}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].call(this, ...parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      // @ts-expect-error: hush, it sure works as an index.\n      if (node[key] !== check[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n  return assertion\n\n  /**\n   * @this {unknown}\n   * @param {Array.<unknown>} parameters\n   * @returns {boolean}\n   */\n  function assertion(...parameters) {\n    // @ts-expect-error: spreading is fine.\n    return Boolean(check.call(this, ...parameters))\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types.js').Action} Action\n * @typedef {import('./complex-types.js').Index} Index\n * @typedef {import('./complex-types.js').ActionTuple} ActionTuple\n * @typedef {import('./complex-types.js').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node’s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n *   Tree to walk\n * @param [test]\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Function called for nodes that pass `test`.\n * @param [reverse=false]\n *   Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visitParents =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {import('./complex-types.js').Visitor<Node>} visitor\n     * @param {boolean} [reverse=false]\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        // @ts-expect-error no visitor given, so `visitor` is test.\n        visitor = test\n        test = null\n      }\n\n      const is = convert(test)\n      const step = reverse ? -1 : 1\n\n      factory(tree, null, [])()\n\n      /**\n       * @param {Node} node\n       * @param {number?} index\n       * @param {Array<Parent>} parents\n       */\n      function factory(node, index, parents) {\n        /** @type {Record<string, unknown>} */\n        // @ts-expect-error: hush\n        const value = typeof node === 'object' && node !== null ? node : {}\n        /** @type {string|undefined} */\n        let name\n\n        if (typeof value.type === 'string') {\n          name =\n            typeof value.tagName === 'string'\n              ? value.tagName\n              : typeof value.name === 'string'\n              ? value.name\n              : undefined\n\n          Object.defineProperty(visit, 'name', {\n            value:\n              'node (' +\n              color(value.type + (name ? '<' + name + '>' : '')) +\n              ')'\n          })\n        }\n\n        return visit\n\n        function visit() {\n          /** @type {ActionTuple} */\n          let result = []\n          /** @type {ActionTuple} */\n          let subresult\n          /** @type {number} */\n          let offset\n          /** @type {Array<Parent>} */\n          let grandparents\n\n          if (!test || is(node, index, parents[parents.length - 1] || null)) {\n            result = toResult(visitor(node, parents))\n\n            if (result[0] === EXIT) {\n              return result\n            }\n          }\n\n          // @ts-expect-error looks like a parent.\n          if (node.children && result[0] !== SKIP) {\n            // @ts-expect-error looks like a parent.\n            offset = (reverse ? node.children.length : -1) + step\n            // @ts-expect-error looks like a parent.\n            grandparents = parents.concat(node)\n\n            // @ts-expect-error looks like a parent.\n            while (offset > -1 && offset < node.children.length) {\n              // @ts-expect-error looks like a parent.\n              subresult = factory(node.children[offset], offset, grandparents)()\n\n              if (subresult[0] === EXIT) {\n                return subresult\n              }\n\n              offset =\n                typeof subresult[1] === 'number' ? subresult[1] : offset + step\n            }\n          }\n\n          return result\n        }\n      }\n    }\n  )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n *   Tree to walk\n * @param [test]\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Function called for nodes that pass `test`.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visit =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {import('./complex-types.js').Visitor} visitor\n     * @param {boolean} [reverse]\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        visitor = test\n        test = null\n      }\n\n      visitParents(tree, test, overload, reverse)\n\n      /**\n       * @param {Node} node\n       * @param {Array<Parent>} parents\n       */\n      function overload(node, parents) {\n        const parent = parents[parents.length - 1]\n        return visitor(\n          node,\n          parent ? parent.children.indexOf(node) : null,\n          parent\n        )\n      }\n    }\n  )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {Record<string, unknown> & {type: string, position?: PositionLike|undefined}} NodeLike\n * @typedef {import('unist').Point} Point\n *\n * @typedef {Partial<Point>} PointLike\n *\n * @typedef PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n */\n\nexport const pointStart = point('start')\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Position}\n */\nexport function position(node) {\n  return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start'|'end'} type\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the positional info of `node`.\n   *\n   * @param {NodeLike|Node} [node]\n   * @returns {Point}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    return {\n      line: point.line || null,\n      column: point.column || null,\n      offset: point.offset > -1 ? point.offset : null\n    }\n  }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n *   Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n *   Identifier of definition.\n * @returns {Definition | null}\n *   Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n *   Tree to check.\n * @returns {GetDefinition}\n *   Getter.\n */\nexport function definitions(tree) {\n  /** @type {Record<string, Definition>} */\n  const cache = Object.create(null)\n\n  if (!tree || !tree.type) {\n    throw new Error('mdast-util-definitions expected node')\n  }\n\n  visit(tree, 'definition', (definition) => {\n    const id = clean(definition.identifier)\n    if (id && !own.call(cache, id)) {\n      cache[id] = definition\n    }\n  })\n\n  return definition\n\n  /** @type {GetDefinition} */\n  function definition(identifier) {\n    const id = clean(identifier)\n    // To do: next major: return `undefined` when not found.\n    return id && own.call(cache, id) ? cache[id] : null\n  }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n  return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  if (index === -1) {\n    state.footnoteOrder.push(id)\n    state.footnoteCounts[id] = 1\n    counter = state.footnoteOrder.length\n  } else {\n    state.footnoteCounts[id]++\n    counter = index + 1\n  }\n\n  const reuseCounter = state.footnoteCounts[id]\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + state.clobberPrefix + 'fn-' + safeId,\n      id:\n        state.clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Reference>} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {References} node\n *   Reference node (image, link).\n * @returns {ElementContent | Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return {type: 'text', value: '![' + node.alt + suffix}\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === undefined || spread === null\n    ? node.children.length > 1\n    : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  footnote,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n  // on for years in remark now.\n  const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n  /** @type {Properties} */\n  const properties = {}\n\n  if (lang) {\n    properties.className = ['language-' + lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * <https://github.com/micromark/micromark-extension-footnote>\n// * <https://github.com/syntax-tree/mdast-util-footnote>\n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract<MdastNodes, MdastParent>} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array<HastElementContent> | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array<HastElementContent> | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastContent>(nodes: Array<Type>, loose?: boolean | null | undefined) => Array<Type | HastText>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array<string>} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array<string> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record<string, MdastFootnoteDefinition>} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array<string>} */\n  state.footnoteOrder = []\n  /** @type {Record<string, number>} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array<HastElementContent>}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array<HastElementContent>} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array<Type | HastText>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<Type | HastText>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {HastNodes | null | undefined}\n *   hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, null)\n  const foot = footer(state)\n\n  if (foot) {\n    // @ts-expect-error If there’s a footer, there were definitions, meaning block\n    // content.\n    // So assume `node` is a parent node.\n    node.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  // To do: next major: always return root?\n  return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\nexport function footer(state) {\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let index = -1\n\n  while (++index < state.footnoteOrder.length) {\n    const def = state.footnoteById[state.footnoteOrder[index]]\n\n    if (!def) {\n      continue\n    }\n\n    const content = state.all(def)\n    const id = String(def.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let referenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n\n    while (++referenceIndex <= state.footnoteCounts[id]) {\n      /** @type {Element} */\n      const backReference = {\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            state.clobberPrefix +\n            'fnref-' +\n            safeId +\n            (referenceIndex > 1 ? '-' + referenceIndex : ''),\n          dataFootnoteBackref: true,\n          className: ['data-footnote-backref'],\n          ariaLabel: state.footnoteBackLabel\n        },\n        children: [{type: 'text', value: '↩'}]\n      }\n\n      if (referenceIndex > 1) {\n        backReference.children.push({\n          type: 'element',\n          tagName: 'sup',\n          children: [{type: 'text', value: String(referenceIndex)}]\n        })\n      }\n\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      backReferences.push(backReference)\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: state.clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(def, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: state.footnoteLabelTagName,\n        properties: {\n          // To do: use structured clone.\n          ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: state.footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor<any, any, any, any>} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `<MdastRoot, HastRoot>` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * *   If a destination processor is given, that processor runs with a new HTML\n *     (hast) tree (bridge-mode).\n *     As the given processor runs with a hast tree, and rehype plugins support\n *     hast, that means rehype plugins can be used with the given processor.\n *     The hast tree is discarded in the end.\n *     It’s highly unlikely that you want to do this.\n * *   The common case is to not pass a destination processor, in which case the\n *     current processor continues running with a new HTML (hast) tree\n *     (mutate-mode).\n *     As the current processor continues with a hast tree, and rehype plugins\n *     support hast, that means rehype plugins can be used after\n *     `remark-rehype`.\n *     It’s likely that this is what you want to do.\n *\n * @param destination\n *   Optional unified processor.\n * @param options\n *   Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n  /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n  (\n    function (destination, options) {\n      return destination && 'run' in destination\n        ? bridge(destination, options)\n        : mutate(destination || options)\n    }\n  )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n  return (node, file, next) => {\n    destination.run(toHast(node, options), file, (error) => {\n      next(error)\n    })\n  }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n  // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n  return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n  /**\n   * @constructor\n   * @param {Properties} property\n   * @param {Normal} normal\n   * @param {string} [space]\n   */\n  constructor(property, normal, space) {\n    this.property = property\n    this.normal = normal\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  let index = -1\n\n  while (++index < definitions.length) {\n    Object.assign(property, definitions[index].property)\n    Object.assign(normal, definitions[index].normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","export class Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   */\n  constructor(property, attribute) {\n    /** @type {string} */\n    this.property = property\n    /** @type {string} */\n    this.attribute = attribute\n  }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   * @param {number|null} [mask]\n   * @param {string} [space]\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n  if (value) {\n    // @ts-expect-error: assume `value` matches the expected value of `key`.\n    values[key] = value\n  }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  /** @type {string} */\n  let prop\n\n  for (prop in definition.properties) {\n    if (own.call(definition.properties, prop)) {\n      const value = definition.properties[prop]\n      const info = new DefinedInfo(\n        prop,\n        definition.transform(definition.attributes || {}, prop),\n        value,\n        definition.space\n      )\n\n      if (\n        definition.mustUseProperty &&\n        definition.mustUseProperty.includes(prop)\n      ) {\n        info.mustUseProperty = true\n      }\n\n      property[prop] = info\n\n      normal[normalize(prop)] = prop\n      normal[normalize(info.attribute)] = prop\n    }\n  }\n\n  return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  space: 'xlink',\n  transform(_, prop) {\n    return 'xlink:' + prop.slice(5).toLowerCase()\n  },\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  space: 'xml',\n  transform(_, prop) {\n    return 'xml:' + prop.slice(3).toLowerCase()\n  },\n  properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  space: 'xmlns',\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  transform: caseInsensitiveTransform,\n  properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n  transform(_, prop) {\n    return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n  },\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n","import {\n  boolean,\n  overloadedBoolean,\n  booleanish,\n  number,\n  spaceSeparated,\n  commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    capture: boolean,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforePrint: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n","import {\n  boolean,\n  number,\n  spaceSeparated,\n  commaSeparated,\n  commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array<string>} [allowedElements]\n * @property {Array<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n  if (options.allowedElements && options.disallowedElements) {\n    throw new TypeError(\n      'Only one of `allowedElements` and `disallowedElements` should be defined'\n    )\n  }\n\n  if (\n    options.allowedElements ||\n    options.disallowedElements ||\n    options.allowElement\n  ) {\n    return (tree) => {\n      visit(tree, 'element', (node, index, parent_) => {\n        const parent = /** @type {Element|Root} */ (parent_)\n        /** @type {boolean|undefined} */\n        let remove\n\n        if (options.allowedElements) {\n          remove = !options.allowedElements.includes(node.tagName)\n        } else if (options.disallowedElements) {\n          remove = options.disallowedElements.includes(node.tagName)\n        }\n\n        if (!remove && options.allowElement && typeof index === 'number') {\n          remove = !options.allowElement(node, index, parent)\n        }\n\n        if (remove && typeof index === 'number') {\n          if (options.unwrapDisallowed && node.children) {\n            parent.children.splice(index, 1, ...node.children)\n          } else {\n            parent.children.splice(index, 1)\n          }\n\n          return index\n        }\n\n        return undefined\n      })\n    }\n  }\n}\n","/**\n * @param {unknown} thing\n * @returns {boolean}\n */\nexport function whitespace(thing) {\n  /** @type {string} */\n  var value =\n    // @ts-ignore looks like a node.\n    thing && typeof thing === 'object' && thing.type === 'text'\n      ? // @ts-ignore looks like a text.\n        thing.value || ''\n      : thing\n\n  // HTML whitespace expression.\n  // See <https://html.spec.whatwg.org/#space-character>.\n  return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let prop = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","export const hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * Parse space separated tokens to an array of strings.\n *\n * @param {string} value Space separated tokens\n * @returns {Array.<string>} Tokens\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated tokens.\n *\n * @param {Array.<string|number>} values Tokens\n * @returns {string} Space separated tokens\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","/**\n * @typedef {Object} StringifyOptions\n * @property {boolean} [padLeft=true] Whether to pad a space before a token (`boolean`, default: `true`).\n * @property {boolean} [padRight=false] Whether to pad a space after a token (`boolean`, default: `false`).\n */\n\n/**\n * Parse comma separated tokens to an array.\n *\n * @param {string} value\n * @returns {Array.<string>}\n */\nexport function parse(value) {\n  /** @type {Array.<string>} */\n  var tokens = []\n  var input = String(value || '')\n  var index = input.indexOf(',')\n  var start = 0\n  /** @type {boolean} */\n  var end\n  /** @type {string} */\n  var token\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings to comma separated tokens.\n *\n * @param {Array.<string|number>} values\n * @param {StringifyOptions} [options]\n * @returns {string}\n */\nexport function stringify(values, options) {\n  var settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  if (values[values.length - 1] === '') {\n    values = values.concat('')\n  }\n\n  return values\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","import StyleToObject from './index.js';\n\nexport default StyleToObject;\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n  const url = (uri || '').trim()\n  const first = url.charAt(0)\n\n  if (first === '#' || first === '/') {\n    return url\n  }\n\n  const colon = url.indexOf(':')\n  if (colon === -1) {\n    return url\n  }\n\n  let index = -1\n\n  while (++index < protocols.length) {\n    const protocol = protocols[index]\n\n    if (\n      colon === protocol.length &&\n      url.slice(0, protocol.length).toLowerCase() === protocol\n    ) {\n      return url\n    }\n  }\n\n  index = url.indexOf('?')\n  if (index !== -1 && colon > index) {\n    return url\n  }\n\n  index = url.indexOf('#')\n  if (index !== -1 && colon > index) {\n    return url\n  }\n\n  // eslint-disable-next-line no-script-url\n  return 'javascript:void(0)'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */\n\n/**\n * @template T\n * @typedef {import('react').ComponentPropsWithoutRef<T>} ComponentPropsWithoutRef<T>\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types.js').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'td'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: true}} TableHeaderCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType<CodeProps>} CodeComponent\n * @typedef {ComponentType<HeadingProps>} HeadingComponent\n * @typedef {ComponentType<LiProps>} LiComponent\n * @typedef {ComponentType<OrderedListProps>} OrderedListComponent\n * @typedef {ComponentType<TableDataCellProps>} TableDataCellComponent\n * @typedef {ComponentType<TableHeaderCellProps>} TableHeaderCellComponent\n * @typedef {ComponentType<TableRowProps>} TableRowComponent\n * @typedef {ComponentType<UnorderedListProps>} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableDataCellComponent|ReactMarkdownNames} td\n * @property {TableHeaderCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types.js').NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\nimport {uriTransformer} from './uri-transformer.js'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n  /** @type {Array<ReactNode>} */\n  const children = []\n  let childIndex = -1\n  /** @type {Comment|Doctype|Element|Raw|Text} */\n  let child\n\n  while (++childIndex < node.children.length) {\n    child = node.children[childIndex]\n\n    if (child.type === 'element') {\n      children.push(toReact(context, child, childIndex, node))\n    } else if (child.type === 'text') {\n      // Currently, a warning is triggered by react for *any* white space in\n      // tables.\n      // So we drop it.\n      // See: <https://github.com/facebook/react/pull/7081>.\n      // See: <https://github.com/facebook/react/pull/7515>.\n      // See: <https://github.com/remarkjs/remark-react/issues/64>.\n      // See: <https://github.com/remarkjs/react-markdown/issues/576>.\n      if (\n        node.type !== 'element' ||\n        !tableElements.has(node.tagName) ||\n        !whitespace(child)\n      ) {\n        children.push(child.value)\n      }\n    } else if (child.type === 'raw' && !context.options.skipHtml) {\n      // Default behavior is to show (encoded) HTML.\n      children.push(child.value)\n    }\n  }\n\n  return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n  const options = context.options\n  const transform =\n    options.transformLinkUri === undefined\n      ? uriTransformer\n      : options.transformLinkUri\n  const parentSchema = context.schema\n  /** @type {ReactMarkdownNames} */\n  // @ts-expect-error assume a known HTML/SVG element.\n  const name = node.tagName\n  /** @type {Record<string, unknown>} */\n  const properties = {}\n  let schema = parentSchema\n  /** @type {string} */\n  let property\n\n  if (parentSchema.space === 'html' && name === 'svg') {\n    schema = svg\n    context.schema = schema\n  }\n\n  if (node.properties) {\n    for (property in node.properties) {\n      if (own.call(node.properties, property)) {\n        addProperty(properties, property, node.properties[property], context)\n      }\n    }\n  }\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth++\n  }\n\n  const children = childrenToReact(context, node)\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth--\n  }\n\n  // Restore parent schema.\n  context.schema = parentSchema\n\n  // Nodes created by plugins do not have positional info, in which case we use\n  // an object that matches the position interface.\n  const position = node.position || {\n    start: {line: null, column: null, offset: null},\n    end: {line: null, column: null, offset: null}\n  }\n  const component =\n    options.components && own.call(options.components, name)\n      ? options.components[name]\n      : name\n  const basic = typeof component === 'string' || component === React.Fragment\n\n  if (!ReactIs.isValidElementType(component)) {\n    throw new TypeError(\n      `Component for name \\`${name}\\` not defined or is not renderable`\n    )\n  }\n\n  properties.key = [\n    name,\n    position.start.line,\n    position.start.column,\n    index\n  ].join('-')\n\n  if (name === 'a' && options.linkTarget) {\n    properties.target =\n      typeof options.linkTarget === 'function'\n        ? options.linkTarget(\n            String(properties.href || ''),\n            node.children,\n            typeof properties.title === 'string' ? properties.title : null\n          )\n        : options.linkTarget\n  }\n\n  if (name === 'a' && transform) {\n    properties.href = transform(\n      String(properties.href || ''),\n      node.children,\n      typeof properties.title === 'string' ? properties.title : null\n    )\n  }\n\n  if (\n    !basic &&\n    name === 'code' &&\n    parent.type === 'element' &&\n    parent.tagName !== 'pre'\n  ) {\n    properties.inline = true\n  }\n\n  if (\n    !basic &&\n    (name === 'h1' ||\n      name === 'h2' ||\n      name === 'h3' ||\n      name === 'h4' ||\n      name === 'h5' ||\n      name === 'h6')\n  ) {\n    properties.level = Number.parseInt(name.charAt(1), 10)\n  }\n\n  if (name === 'img' && options.transformImageUri) {\n    properties.src = options.transformImageUri(\n      String(properties.src || ''),\n      String(properties.alt || ''),\n      typeof properties.title === 'string' ? properties.title : null\n    )\n  }\n\n  if (!basic && name === 'li' && parent.type === 'element') {\n    const input = getInputElement(node)\n    properties.checked =\n      input && input.properties ? Boolean(input.properties.checked) : null\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.ordered = parent.tagName === 'ol'\n  }\n\n  if (!basic && (name === 'ol' || name === 'ul')) {\n    properties.ordered = name === 'ol'\n    properties.depth = context.listDepth\n  }\n\n  if (name === 'td' || name === 'th') {\n    if (properties.align) {\n      if (!properties.style) properties.style = {}\n      // @ts-expect-error assume `style` is an object\n      properties.style.textAlign = properties.align\n      delete properties.align\n    }\n\n    if (!basic) {\n      properties.isHeader = name === 'th'\n    }\n  }\n\n  if (!basic && name === 'tr' && parent.type === 'element') {\n    properties.isHeader = Boolean(parent.tagName === 'thead')\n  }\n\n  // If `sourcePos` is given, pass source information (line/column info from markdown source).\n  if (options.sourcePos) {\n    properties['data-sourcepos'] = flattenPosition(position)\n  }\n\n  if (!basic && options.rawSourcePos) {\n    properties.sourcePosition = node.position\n  }\n\n  // If `includeElementIndex` is given, pass node index info to components.\n  if (!basic && options.includeElementIndex) {\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.siblingCount = getElementsBeforeCount(parent)\n  }\n\n  if (!basic) {\n    properties.node = node\n  }\n\n  // Ensure no React warnings are emitted for void elements w/ children.\n  return children.length > 0\n    ? React.createElement(component, properties, children)\n    : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n  let index = -1\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if (child.type === 'element' && child.tagName === 'input') {\n      return child\n    }\n  }\n\n  return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n  let index = -1\n  let count = 0\n\n  while (++index < parent.children.length) {\n    if (parent.children[index] === node) break\n    if (parent.children[index].type === 'element') count++\n  }\n\n  return count\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n  const info = find(ctx.schema, prop)\n  let result = value\n\n  // Ignore nullish and `NaN` values.\n  // eslint-disable-next-line no-self-compare\n  if (result === null || result === undefined || result !== result) {\n    return\n  }\n\n  // Accept `array`.\n  // Most props are space-separated.\n  if (Array.isArray(result)) {\n    result = info.commaSeparated ? commas(result) : spaces(result)\n  }\n\n  if (info.property === 'style' && typeof result === 'string') {\n    result = parseStyle(result)\n  }\n\n  if (info.space && info.property) {\n    props[\n      own.call(hastToReact, info.property)\n        ? hastToReact[info.property]\n        : info.property\n    ] = result\n  } else if (info.attribute) {\n    props[info.attribute] = result\n  }\n}\n\n/**\n * @param {string} value\n * @returns {Record<string, string>}\n */\nfunction parseStyle(value) {\n  /** @type {Record<string, string>} */\n  const result = {}\n\n  try {\n    style(value, iterator)\n  } catch {\n    // Silent.\n  }\n\n  return result\n\n  /**\n   * @param {string} name\n   * @param {string} v\n   */\n  function iterator(name, v) {\n    const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n    result[k.replace(/-([a-z])/g, styleReplacer)] = v\n  }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n  return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n  return [\n    pos.start.line,\n    ':',\n    pos.start.column,\n    '-',\n    pos.end.line,\n    ':',\n    pos.end.column\n  ]\n    .map(String)\n    .join('')\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record<string, Deprecation>} */\nconst deprecated = {\n  plugins: {to: 'remarkPlugins', id: 'change-plugins-to-remarkplugins'},\n  renderers: {to: 'components', id: 'change-renderers-to-components'},\n  astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n  allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  source: {to: 'children', id: 'change-source-to-children'},\n  allowNode: {\n    to: 'allowElement',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  allowedTypes: {\n    to: 'allowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  disallowedTypes: {\n    to: 'disallowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  includeNodeIndex: {\n    to: 'includeElementIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n  for (const key in deprecated) {\n    if (own.call(deprecated, key) && own.call(options, key)) {\n      const deprecation = deprecated[key]\n      console.warn(\n        `[react-markdown] Warning: please ${\n          deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n        } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n      )\n      delete deprecated[key]\n    }\n  }\n\n  const processor = unified()\n    .use(remarkParse)\n    .use(options.remarkPlugins || [])\n    .use(remarkRehype, {\n      ...options.remarkRehypeOptions,\n      allowDangerousHtml: true\n    })\n    .use(options.rehypePlugins || [])\n    .use(rehypeFilter, options)\n\n  const file = new VFile()\n\n  if (typeof options.children === 'string') {\n    file.value = options.children\n  } else if (options.children !== undefined && options.children !== null) {\n    console.warn(\n      `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n    )\n  }\n\n  const hastNode = processor.runSync(processor.parse(file), file)\n\n  if (hastNode.type !== 'root') {\n    throw new TypeError('Expected a `root` node')\n  }\n\n  /** @type {ReactElement} */\n  let result = React.createElement(\n    React.Fragment,\n    {},\n    childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n  )\n\n  if (options.className) {\n    result = React.createElement('div', {className: options.className}, result)\n  }\n\n  return result\n}\n\nReactMarkdown.propTypes = {\n  // Core options:\n  children: PropTypes.string,\n  // Layout options:\n  className: PropTypes.string,\n  // Filter options:\n  allowElement: PropTypes.func,\n  allowedElements: PropTypes.arrayOf(PropTypes.string),\n  disallowedElements: PropTypes.arrayOf(PropTypes.string),\n  unwrapDisallowed: PropTypes.bool,\n  // Plugin options:\n  remarkPlugins: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.arrayOf(\n        PropTypes.oneOfType([\n          PropTypes.bool,\n          PropTypes.string,\n          PropTypes.object,\n          PropTypes.func,\n          PropTypes.arrayOf(\n            // prettier-ignore\n            // type-coverage:ignore-next-line\n            PropTypes.any\n          )\n        ])\n      )\n    ])\n  ),\n  rehypePlugins: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.arrayOf(\n        PropTypes.oneOfType([\n          PropTypes.bool,\n          PropTypes.string,\n          PropTypes.object,\n          PropTypes.func,\n          PropTypes.arrayOf(\n            // prettier-ignore\n            // type-coverage:ignore-next-line\n            PropTypes.any\n          )\n        ])\n      )\n    ])\n  ),\n  // Transform options:\n  sourcePos: PropTypes.bool,\n  rawSourcePos: PropTypes.bool,\n  skipHtml: PropTypes.bool,\n  includeElementIndex: PropTypes.bool,\n  transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n  transformImageUri: PropTypes.func,\n  components: PropTypes.object\n}\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React from 'react'; // Get all possible permutations of all power sets\n//\n// Super simple, non-algorithmic solution since the\n// number of class names will not be greater than 4\n\nfunction powerSetPermutations(arr) {\n  var arrLength = arr.length;\n  if (arrLength === 0 || arrLength === 1) return arr;\n\n  if (arrLength === 2) {\n    // prettier-ignore\n    return [arr[0], arr[1], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0])];\n  }\n\n  if (arrLength === 3) {\n    return [arr[0], arr[1], arr[2], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0])];\n  }\n\n  if (arrLength >= 4) {\n    // Currently does not support more than 4 extra\n    // class names (after `.token` has been removed)\n    return [arr[0], arr[1], arr[2], arr[3], \"\".concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[3], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[3]), \"\".concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[3], \".\").concat(arr[0]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[2], \".\").concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[1], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[0], \".\").concat(arr[2], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[0], \".\").concat(arr[2]), \"\".concat(arr[3], \".\").concat(arr[1], \".\").concat(arr[2], \".\").concat(arr[0]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[0], \".\").concat(arr[1]), \"\".concat(arr[3], \".\").concat(arr[2], \".\").concat(arr[1], \".\").concat(arr[0])];\n  }\n}\n\nvar classNameCombinations = {};\n\nfunction getClassNameCombinations(classNames) {\n  if (classNames.length === 0 || classNames.length === 1) return classNames;\n  var key = classNames.join('.');\n\n  if (!classNameCombinations[key]) {\n    classNameCombinations[key] = powerSetPermutations(classNames);\n  }\n\n  return classNameCombinations[key];\n}\n\nexport function createStyleObject(classNames) {\n  var elementStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var stylesheet = arguments.length > 2 ? arguments[2] : undefined;\n  var nonTokenClassNames = classNames.filter(function (className) {\n    return className !== 'token';\n  });\n  var classNamesCombinations = getClassNameCombinations(nonTokenClassNames);\n  return classNamesCombinations.reduce(function (styleObject, className) {\n    return _objectSpread(_objectSpread({}, styleObject), stylesheet[className]);\n  }, elementStyle);\n}\nexport function createClassNameString(classNames) {\n  return classNames.join(' ');\n}\nexport function createChildren(stylesheet, useInlineStyles) {\n  var childrenCount = 0;\n  return function (children) {\n    childrenCount += 1;\n    return children.map(function (child, i) {\n      return createElement({\n        node: child,\n        stylesheet: stylesheet,\n        useInlineStyles: useInlineStyles,\n        key: \"code-segment-\".concat(childrenCount, \"-\").concat(i)\n      });\n    });\n  };\n}\nexport default function createElement(_ref) {\n  var node = _ref.node,\n      stylesheet = _ref.stylesheet,\n      _ref$style = _ref.style,\n      style = _ref$style === void 0 ? {} : _ref$style,\n      useInlineStyles = _ref.useInlineStyles,\n      key = _ref.key;\n  var properties = node.properties,\n      type = node.type,\n      TagName = node.tagName,\n      value = node.value;\n\n  if (type === 'text') {\n    return value;\n  } else if (TagName) {\n    var childrenCreator = createChildren(stylesheet, useInlineStyles);\n    var props;\n\n    if (!useInlineStyles) {\n      props = _objectSpread(_objectSpread({}, properties), {}, {\n        className: createClassNameString(properties.className)\n      });\n    } else {\n      var allStylesheetSelectors = Object.keys(stylesheet).reduce(function (classes, selector) {\n        selector.split('.').forEach(function (className) {\n          if (!classes.includes(className)) classes.push(className);\n        });\n        return classes;\n      }, []); // For compatibility with older versions of react-syntax-highlighter\n\n      var startingClassName = properties.className && properties.className.includes('token') ? ['token'] : [];\n      var className = properties.className && startingClassName.concat(properties.className.filter(function (className) {\n        return !allStylesheetSelectors.includes(className);\n      }));\n      props = _objectSpread(_objectSpread({}, properties), {}, {\n        className: createClassNameString(className) || undefined,\n        style: createStyleObject(properties.className, Object.assign({}, properties.style, style), stylesheet)\n      });\n    }\n\n    var children = childrenCreator(node.children);\n    return /*#__PURE__*/React.createElement(TagName, _extends({\n      key: key\n    }, props), children);\n  }\n}","export default (function (astGenerator, language) {\n  var langs = astGenerator.listLanguages();\n  return langs.indexOf(language) !== -1;\n});","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"language\", \"children\", \"style\", \"customStyle\", \"codeTagProps\", \"useInlineStyles\", \"showLineNumbers\", \"showInlineLineNumbers\", \"startingLineNumber\", \"lineNumberContainerStyle\", \"lineNumberStyle\", \"wrapLines\", \"wrapLongLines\", \"lineProps\", \"renderer\", \"PreTag\", \"CodeTag\", \"code\", \"astGenerator\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React from 'react';\nimport createElement from './create-element';\nimport checkForListedLanguage from './checkForListedLanguage';\nvar newLineRegex = /\\n/g;\n\nfunction getNewLines(str) {\n  return str.match(newLineRegex);\n}\n\nfunction getAllLineNumbers(_ref) {\n  var lines = _ref.lines,\n      startingLineNumber = _ref.startingLineNumber,\n      style = _ref.style;\n  return lines.map(function (_, i) {\n    var number = i + startingLineNumber;\n    return /*#__PURE__*/React.createElement(\"span\", {\n      key: \"line-\".concat(i),\n      className: \"react-syntax-highlighter-line-number\",\n      style: typeof style === 'function' ? style(number) : style\n    }, \"\".concat(number, \"\\n\"));\n  });\n}\n\nfunction AllLineNumbers(_ref2) {\n  var codeString = _ref2.codeString,\n      codeStyle = _ref2.codeStyle,\n      _ref2$containerStyle = _ref2.containerStyle,\n      containerStyle = _ref2$containerStyle === void 0 ? {\n    \"float\": 'left',\n    paddingRight: '10px'\n  } : _ref2$containerStyle,\n      _ref2$numberStyle = _ref2.numberStyle,\n      numberStyle = _ref2$numberStyle === void 0 ? {} : _ref2$numberStyle,\n      startingLineNumber = _ref2.startingLineNumber;\n  return /*#__PURE__*/React.createElement(\"code\", {\n    style: Object.assign({}, codeStyle, containerStyle)\n  }, getAllLineNumbers({\n    lines: codeString.replace(/\\n$/, '').split('\\n'),\n    style: numberStyle,\n    startingLineNumber: startingLineNumber\n  }));\n}\n\nfunction getEmWidthOfNumber(num) {\n  return \"\".concat(num.toString().length, \".25em\");\n}\n\nfunction getInlineLineNumber(lineNumber, inlineLineNumberStyle) {\n  return {\n    type: 'element',\n    tagName: 'span',\n    properties: {\n      key: \"line-number--\".concat(lineNumber),\n      className: ['comment', 'linenumber', 'react-syntax-highlighter-line-number'],\n      style: inlineLineNumberStyle\n    },\n    children: [{\n      type: 'text',\n      value: lineNumber\n    }]\n  };\n}\n\nfunction assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber) {\n  // minimally necessary styling for line numbers\n  var defaultLineNumberStyle = {\n    display: 'inline-block',\n    minWidth: getEmWidthOfNumber(largestLineNumber),\n    paddingRight: '1em',\n    textAlign: 'right',\n    userSelect: 'none'\n  }; // prep custom styling\n\n  var customLineNumberStyle = typeof lineNumberStyle === 'function' ? lineNumberStyle(lineNumber) : lineNumberStyle; // combine\n\n  var assembledStyle = _objectSpread(_objectSpread({}, defaultLineNumberStyle), customLineNumberStyle);\n\n  return assembledStyle;\n}\n\nfunction createLineElement(_ref3) {\n  var children = _ref3.children,\n      lineNumber = _ref3.lineNumber,\n      lineNumberStyle = _ref3.lineNumberStyle,\n      largestLineNumber = _ref3.largestLineNumber,\n      showInlineLineNumbers = _ref3.showInlineLineNumbers,\n      _ref3$lineProps = _ref3.lineProps,\n      lineProps = _ref3$lineProps === void 0 ? {} : _ref3$lineProps,\n      _ref3$className = _ref3.className,\n      className = _ref3$className === void 0 ? [] : _ref3$className,\n      showLineNumbers = _ref3.showLineNumbers,\n      wrapLongLines = _ref3.wrapLongLines;\n  var properties = typeof lineProps === 'function' ? lineProps(lineNumber) : lineProps;\n  properties['className'] = className;\n\n  if (lineNumber && showInlineLineNumbers) {\n    var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);\n    children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));\n  }\n\n  if (wrapLongLines & showLineNumbers) {\n    properties.style = _objectSpread(_objectSpread({}, properties.style), {}, {\n      display: 'flex'\n    });\n  }\n\n  return {\n    type: 'element',\n    tagName: 'span',\n    properties: properties,\n    children: children\n  };\n}\n\nfunction flattenCodeTree(tree) {\n  var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var newTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  for (var i = 0; i < tree.length; i++) {\n    var node = tree[i];\n\n    if (node.type === 'text') {\n      newTree.push(createLineElement({\n        children: [node],\n        className: _toConsumableArray(new Set(className))\n      }));\n    } else if (node.children) {\n      var classNames = className.concat(node.properties.className);\n      flattenCodeTree(node.children, classNames).forEach(function (i) {\n        return newTree.push(i);\n      });\n    }\n  }\n\n  return newTree;\n}\n\nfunction processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines) {\n  var _ref4;\n\n  var tree = flattenCodeTree(codeTree.value);\n  var newTree = [];\n  var lastLineBreakIndex = -1;\n  var index = 0;\n\n  function createWrappedLine(children, lineNumber) {\n    var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n    return createLineElement({\n      children: children,\n      lineNumber: lineNumber,\n      lineNumberStyle: lineNumberStyle,\n      largestLineNumber: largestLineNumber,\n      showInlineLineNumbers: showInlineLineNumbers,\n      lineProps: lineProps,\n      className: className,\n      showLineNumbers: showLineNumbers,\n      wrapLongLines: wrapLongLines\n    });\n  }\n\n  function createUnwrappedLine(children, lineNumber) {\n    if (showLineNumbers && lineNumber && showInlineLineNumbers) {\n      var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);\n      children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));\n    }\n\n    return children;\n  }\n\n  function createLine(children, lineNumber) {\n    var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n    return wrapLines || className.length > 0 ? createWrappedLine(children, lineNumber, className) : createUnwrappedLine(children, lineNumber);\n  }\n\n  var _loop = function _loop() {\n    var node = tree[index];\n    var value = node.children[0].value;\n    var newLines = getNewLines(value);\n\n    if (newLines) {\n      var splitValue = value.split('\\n');\n      splitValue.forEach(function (text, i) {\n        var lineNumber = showLineNumbers && newTree.length + startingLineNumber;\n        var newChild = {\n          type: 'text',\n          value: \"\".concat(text, \"\\n\")\n        }; // if it's the first line\n\n        if (i === 0) {\n          var _children = tree.slice(lastLineBreakIndex + 1, index).concat(createLineElement({\n            children: [newChild],\n            className: node.properties.className\n          }));\n\n          var _line = createLine(_children, lineNumber);\n\n          newTree.push(_line); // if it's the last line\n        } else if (i === splitValue.length - 1) {\n          var stringChild = tree[index + 1] && tree[index + 1].children && tree[index + 1].children[0];\n          var lastLineInPreviousSpan = {\n            type: 'text',\n            value: \"\".concat(text)\n          };\n\n          if (stringChild) {\n            var newElem = createLineElement({\n              children: [lastLineInPreviousSpan],\n              className: node.properties.className\n            });\n            tree.splice(index + 1, 0, newElem);\n          } else {\n            var _children2 = [lastLineInPreviousSpan];\n\n            var _line2 = createLine(_children2, lineNumber, node.properties.className);\n\n            newTree.push(_line2);\n          } // if it's neither the first nor the last line\n\n        } else {\n          var _children3 = [newChild];\n\n          var _line3 = createLine(_children3, lineNumber, node.properties.className);\n\n          newTree.push(_line3);\n        }\n      });\n      lastLineBreakIndex = index;\n    }\n\n    index++;\n  };\n\n  while (index < tree.length) {\n    _loop();\n  }\n\n  if (lastLineBreakIndex !== tree.length - 1) {\n    var children = tree.slice(lastLineBreakIndex + 1, tree.length);\n\n    if (children && children.length) {\n      var lineNumber = showLineNumbers && newTree.length + startingLineNumber;\n      var line = createLine(children, lineNumber);\n      newTree.push(line);\n    }\n  }\n\n  return wrapLines ? newTree : (_ref4 = []).concat.apply(_ref4, newTree);\n}\n\nfunction defaultRenderer(_ref5) {\n  var rows = _ref5.rows,\n      stylesheet = _ref5.stylesheet,\n      useInlineStyles = _ref5.useInlineStyles;\n  return rows.map(function (node, i) {\n    return createElement({\n      node: node,\n      stylesheet: stylesheet,\n      useInlineStyles: useInlineStyles,\n      key: \"code-segement\".concat(i)\n    });\n  });\n} // only highlight.js has the highlightAuto method\n\n\nfunction isHighlightJs(astGenerator) {\n  return astGenerator && typeof astGenerator.highlightAuto !== 'undefined';\n}\n\nfunction getCodeTree(_ref6) {\n  var astGenerator = _ref6.astGenerator,\n      language = _ref6.language,\n      code = _ref6.code,\n      defaultCodeValue = _ref6.defaultCodeValue;\n\n  // figure out whether we're using lowlight/highlight or refractor/prism\n  // then attempt highlighting accordingly\n  // lowlight/highlight?\n  if (isHighlightJs(astGenerator)) {\n    var hasLanguage = checkForListedLanguage(astGenerator, language);\n\n    if (language === 'text') {\n      return {\n        value: defaultCodeValue,\n        language: 'text'\n      };\n    } else if (hasLanguage) {\n      return astGenerator.highlight(language, code);\n    } else {\n      return astGenerator.highlightAuto(code);\n    }\n  } // must be refractor/prism, then\n\n\n  try {\n    return language && language !== 'text' ? {\n      value: astGenerator.highlight(code, language)\n    } : {\n      value: defaultCodeValue\n    };\n  } catch (e) {\n    return {\n      value: defaultCodeValue\n    };\n  }\n}\n\nexport default function (defaultAstGenerator, defaultStyle) {\n  return function SyntaxHighlighter(_ref7) {\n    var language = _ref7.language,\n        children = _ref7.children,\n        _ref7$style = _ref7.style,\n        style = _ref7$style === void 0 ? defaultStyle : _ref7$style,\n        _ref7$customStyle = _ref7.customStyle,\n        customStyle = _ref7$customStyle === void 0 ? {} : _ref7$customStyle,\n        _ref7$codeTagProps = _ref7.codeTagProps,\n        codeTagProps = _ref7$codeTagProps === void 0 ? {\n      className: language ? \"language-\".concat(language) : undefined,\n      style: _objectSpread(_objectSpread({}, style['code[class*=\"language-\"]']), style[\"code[class*=\\\"language-\".concat(language, \"\\\"]\")])\n    } : _ref7$codeTagProps,\n        _ref7$useInlineStyles = _ref7.useInlineStyles,\n        useInlineStyles = _ref7$useInlineStyles === void 0 ? true : _ref7$useInlineStyles,\n        _ref7$showLineNumbers = _ref7.showLineNumbers,\n        showLineNumbers = _ref7$showLineNumbers === void 0 ? false : _ref7$showLineNumbers,\n        _ref7$showInlineLineN = _ref7.showInlineLineNumbers,\n        showInlineLineNumbers = _ref7$showInlineLineN === void 0 ? true : _ref7$showInlineLineN,\n        _ref7$startingLineNum = _ref7.startingLineNumber,\n        startingLineNumber = _ref7$startingLineNum === void 0 ? 1 : _ref7$startingLineNum,\n        lineNumberContainerStyle = _ref7.lineNumberContainerStyle,\n        _ref7$lineNumberStyle = _ref7.lineNumberStyle,\n        lineNumberStyle = _ref7$lineNumberStyle === void 0 ? {} : _ref7$lineNumberStyle,\n        wrapLines = _ref7.wrapLines,\n        _ref7$wrapLongLines = _ref7.wrapLongLines,\n        wrapLongLines = _ref7$wrapLongLines === void 0 ? false : _ref7$wrapLongLines,\n        _ref7$lineProps = _ref7.lineProps,\n        lineProps = _ref7$lineProps === void 0 ? {} : _ref7$lineProps,\n        renderer = _ref7.renderer,\n        _ref7$PreTag = _ref7.PreTag,\n        PreTag = _ref7$PreTag === void 0 ? 'pre' : _ref7$PreTag,\n        _ref7$CodeTag = _ref7.CodeTag,\n        CodeTag = _ref7$CodeTag === void 0 ? 'code' : _ref7$CodeTag,\n        _ref7$code = _ref7.code,\n        code = _ref7$code === void 0 ? (Array.isArray(children) ? children[0] : children) || '' : _ref7$code,\n        astGenerator = _ref7.astGenerator,\n        rest = _objectWithoutProperties(_ref7, _excluded);\n\n    astGenerator = astGenerator || defaultAstGenerator;\n    var allLineNumbers = showLineNumbers ? /*#__PURE__*/React.createElement(AllLineNumbers, {\n      containerStyle: lineNumberContainerStyle,\n      codeStyle: codeTagProps.style || {},\n      numberStyle: lineNumberStyle,\n      startingLineNumber: startingLineNumber,\n      codeString: code\n    }) : null;\n    var defaultPreStyle = style.hljs || style['pre[class*=\"language-\"]'] || {\n      backgroundColor: '#fff'\n    };\n    var generatorClassName = isHighlightJs(astGenerator) ? 'hljs' : 'prismjs';\n    var preProps = useInlineStyles ? Object.assign({}, rest, {\n      style: Object.assign({}, defaultPreStyle, customStyle)\n    }) : Object.assign({}, rest, {\n      className: rest.className ? \"\".concat(generatorClassName, \" \").concat(rest.className) : generatorClassName,\n      style: Object.assign({}, customStyle)\n    });\n\n    if (wrapLongLines) {\n      codeTagProps.style = _objectSpread(_objectSpread({}, codeTagProps.style), {}, {\n        whiteSpace: 'pre-wrap'\n      });\n    } else {\n      codeTagProps.style = _objectSpread(_objectSpread({}, codeTagProps.style), {}, {\n        whiteSpace: 'pre'\n      });\n    }\n\n    if (!astGenerator) {\n      return /*#__PURE__*/React.createElement(PreTag, preProps, allLineNumbers, /*#__PURE__*/React.createElement(CodeTag, codeTagProps, code));\n    }\n    /*\n     * Some custom renderers rely on individual row elements so we need to turn wrapLines on\n     * if renderer is provided and wrapLines is undefined.\n     */\n\n\n    if (wrapLines === undefined && renderer || wrapLongLines) wrapLines = true;\n    renderer = renderer || defaultRenderer;\n    var defaultCodeValue = [{\n      type: 'text',\n      value: code\n    }];\n    var codeTree = getCodeTree({\n      astGenerator: astGenerator,\n      language: language,\n      code: code,\n      defaultCodeValue: defaultCodeValue\n    });\n\n    if (codeTree.language === null) {\n      codeTree.value = defaultCodeValue;\n    } // determine largest line number so that we can force minWidth on all linenumber elements\n\n\n    var largestLineNumber = codeTree.value.length + startingLineNumber;\n    var rows = processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines);\n    return /*#__PURE__*/React.createElement(PreTag, preProps, /*#__PURE__*/React.createElement(CodeTag, codeTagProps, !showInlineLineNumbers && allLineNumbers, renderer({\n      rows: rows,\n      stylesheet: style,\n      useInlineStyles: useInlineStyles\n    })));\n  };\n}","export default {\n  \"code[class*=\\\"language-\\\"]\": {\n    \"color\": \"black\",\n    \"background\": \"none\",\n    \"textShadow\": \"0 1px white\",\n    \"fontFamily\": \"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace\",\n    \"fontSize\": \"1em\",\n    \"textAlign\": \"left\",\n    \"whiteSpace\": \"pre\",\n    \"wordSpacing\": \"normal\",\n    \"wordBreak\": \"normal\",\n    \"wordWrap\": \"normal\",\n    \"lineHeight\": \"1.5\",\n    \"MozTabSize\": \"4\",\n    \"OTabSize\": \"4\",\n    \"tabSize\": \"4\",\n    \"WebkitHyphens\": \"none\",\n    \"MozHyphens\": \"none\",\n    \"msHyphens\": \"none\",\n    \"hyphens\": \"none\"\n  },\n  \"pre[class*=\\\"language-\\\"]\": {\n    \"color\": \"black\",\n    \"background\": \"#f5f2f0\",\n    \"textShadow\": \"0 1px white\",\n    \"fontFamily\": \"Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace\",\n    \"fontSize\": \"1em\",\n    \"textAlign\": \"left\",\n    \"whiteSpace\": \"pre\",\n    \"wordSpacing\": \"normal\",\n    \"wordBreak\": \"normal\",\n    \"wordWrap\": \"normal\",\n    \"lineHeight\": \"1.5\",\n    \"MozTabSize\": \"4\",\n    \"OTabSize\": \"4\",\n    \"tabSize\": \"4\",\n    \"WebkitHyphens\": \"none\",\n    \"MozHyphens\": \"none\",\n    \"msHyphens\": \"none\",\n    \"hyphens\": \"none\",\n    \"padding\": \"1em\",\n    \"margin\": \".5em 0\",\n    \"overflow\": \"auto\"\n  },\n  \"pre[class*=\\\"language-\\\"]::-moz-selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"pre[class*=\\\"language-\\\"] ::-moz-selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"code[class*=\\\"language-\\\"]::-moz-selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"code[class*=\\\"language-\\\"] ::-moz-selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"pre[class*=\\\"language-\\\"]::selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"pre[class*=\\\"language-\\\"] ::selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"code[class*=\\\"language-\\\"]::selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \"code[class*=\\\"language-\\\"] ::selection\": {\n    \"textShadow\": \"none\",\n    \"background\": \"#b3d4fc\"\n  },\n  \":not(pre) > code[class*=\\\"language-\\\"]\": {\n    \"background\": \"#f5f2f0\",\n    \"padding\": \".1em\",\n    \"borderRadius\": \".3em\",\n    \"whiteSpace\": \"normal\"\n  },\n  \"comment\": {\n    \"color\": \"slategray\"\n  },\n  \"prolog\": {\n    \"color\": \"slategray\"\n  },\n  \"doctype\": {\n    \"color\": \"slategray\"\n  },\n  \"cdata\": {\n    \"color\": \"slategray\"\n  },\n  \"punctuation\": {\n    \"color\": \"#999\"\n  },\n  \"namespace\": {\n    \"Opacity\": \".7\"\n  },\n  \"property\": {\n    \"color\": \"#905\"\n  },\n  \"tag\": {\n    \"color\": \"#905\"\n  },\n  \"boolean\": {\n    \"color\": \"#905\"\n  },\n  \"number\": {\n    \"color\": \"#905\"\n  },\n  \"constant\": {\n    \"color\": \"#905\"\n  },\n  \"symbol\": {\n    \"color\": \"#905\"\n  },\n  \"deleted\": {\n    \"color\": \"#905\"\n  },\n  \"selector\": {\n    \"color\": \"#690\"\n  },\n  \"attr-name\": {\n    \"color\": \"#690\"\n  },\n  \"string\": {\n    \"color\": \"#690\"\n  },\n  \"char\": {\n    \"color\": \"#690\"\n  },\n  \"builtin\": {\n    \"color\": \"#690\"\n  },\n  \"inserted\": {\n    \"color\": \"#690\"\n  },\n  \"operator\": {\n    \"color\": \"#9a6e3a\",\n    \"background\": \"hsla(0, 0%, 100%, .5)\"\n  },\n  \"entity\": {\n    \"color\": \"#9a6e3a\",\n    \"background\": \"hsla(0, 0%, 100%, .5)\",\n    \"cursor\": \"help\"\n  },\n  \"url\": {\n    \"color\": \"#9a6e3a\",\n    \"background\": \"hsla(0, 0%, 100%, .5)\"\n  },\n  \".language-css .token.string\": {\n    \"color\": \"#9a6e3a\",\n    \"background\": \"hsla(0, 0%, 100%, .5)\"\n  },\n  \".style .token.string\": {\n    \"color\": \"#9a6e3a\",\n    \"background\": \"hsla(0, 0%, 100%, .5)\"\n  },\n  \"atrule\": {\n    \"color\": \"#07a\"\n  },\n  \"attr-value\": {\n    \"color\": \"#07a\"\n  },\n  \"keyword\": {\n    \"color\": \"#07a\"\n  },\n  \"function\": {\n    \"color\": \"#DD4A68\"\n  },\n  \"class-name\": {\n    \"color\": \"#DD4A68\"\n  },\n  \"regex\": {\n    \"color\": \"#e90\"\n  },\n  \"important\": {\n    \"color\": \"#e90\",\n    \"fontWeight\": \"bold\"\n  },\n  \"variable\": {\n    \"color\": \"#e90\"\n  },\n  \"bold\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"italic\": {\n    \"fontStyle\": \"italic\"\n  }\n};","import highlight from './highlight';\nimport defaultStyle from './styles/prism/prism';\nimport refractor from 'refractor';\nimport supportedLanguages from './languages/prism/supported-languages';\nvar highlighter = highlight(refractor, defaultStyle);\nhighlighter.supportedLanguages = supportedLanguages;\nexport default highlighter;","//\n// This file has been auto-generated by the `npm run build-languages-prism` task\n//\nexport default ['abap', 'abnf', 'actionscript', 'ada', 'agda', 'al', 'antlr4', 'apacheconf', 'apex', 'apl', 'applescript', 'aql', 'arduino', 'arff', 'asciidoc', 'asm6502', 'asmatmel', 'aspnet', 'autohotkey', 'autoit', 'avisynth', 'avro-idl', 'bash', 'basic', 'batch', 'bbcode', 'bicep', 'birb', 'bison', 'bnf', 'brainfuck', 'brightscript', 'bro', 'bsl', 'c', 'cfscript', 'chaiscript', 'cil', 'clike', 'clojure', 'cmake', 'cobol', 'coffeescript', 'concurnas', 'coq', 'cpp', 'crystal', 'csharp', 'cshtml', 'csp', 'css-extras', 'css', 'csv', 'cypher', 'd', 'dart', 'dataweave', 'dax', 'dhall', 'diff', 'django', 'dns-zone-file', 'docker', 'dot', 'ebnf', 'editorconfig', 'eiffel', 'ejs', 'elixir', 'elm', 'erb', 'erlang', 'etlua', 'excel-formula', 'factor', 'false', 'firestore-security-rules', 'flow', 'fortran', 'fsharp', 'ftl', 'gap', 'gcode', 'gdscript', 'gedcom', 'gherkin', 'git', 'glsl', 'gml', 'gn', 'go-module', 'go', 'graphql', 'groovy', 'haml', 'handlebars', 'haskell', 'haxe', 'hcl', 'hlsl', 'hoon', 'hpkp', 'hsts', 'http', 'ichigojam', 'icon', 'icu-message-format', 'idris', 'iecst', 'ignore', 'inform7', 'ini', 'io', 'j', 'java', 'javadoc', 'javadoclike', 'javascript', 'javastacktrace', 'jexl', 'jolie', 'jq', 'js-extras', 'js-templates', 'jsdoc', 'json', 'json5', 'jsonp', 'jsstacktrace', 'jsx', 'julia', 'keepalived', 'keyman', 'kotlin', 'kumir', 'kusto', 'latex', 'latte', 'less', 'lilypond', 'liquid', 'lisp', 'livescript', 'llvm', 'log', 'lolcode', 'lua', 'magma', 'makefile', 'markdown', 'markup-templating', 'markup', 'matlab', 'maxscript', 'mel', 'mermaid', 'mizar', 'mongodb', 'monkey', 'moonscript', 'n1ql', 'n4js', 'nand2tetris-hdl', 'naniscript', 'nasm', 'neon', 'nevod', 'nginx', 'nim', 'nix', 'nsis', 'objectivec', 'ocaml', 'opencl', 'openqasm', 'oz', 'parigp', 'parser', 'pascal', 'pascaligo', 'pcaxis', 'peoplecode', 'perl', 'php-extras', 'php', 'phpdoc', 'plsql', 'powerquery', 'powershell', 'processing', 'prolog', 'promql', 'properties', 'protobuf', 'psl', 'pug', 'puppet', 'pure', 'purebasic', 'purescript', 'python', 'q', 'qml', 'qore', 'qsharp', 'r', 'racket', 'reason', 'regex', 'rego', 'renpy', 'rest', 'rip', 'roboconf', 'robotframework', 'ruby', 'rust', 'sas', 'sass', 'scala', 'scheme', 'scss', 'shell-session', 'smali', 'smalltalk', 'smarty', 'sml', 'solidity', 'solution-file', 'soy', 'sparql', 'splunk-spl', 'sqf', 'sql', 'squirrel', 'stan', 'stylus', 'swift', 'systemd', 't4-cs', 't4-templating', 't4-vb', 'tap', 'tcl', 'textile', 'toml', 'tremor', 'tsx', 'tt2', 'turtle', 'twig', 'typescript', 'typoscript', 'unrealscript', 'uorazor', 'uri', 'v', 'vala', 'vbnet', 'velocity', 'verilog', 'vhdl', 'vim', 'visual-basic', 'warpscript', 'wasm', 'web-idl', 'wiki', 'wolfram', 'wren', 'xeora', 'xml-doc', 'xojo', 'xquery', 'yaml', 'yang', 'zig'];","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  asciiControl,\n  asciiDigit,\n  markdownLineEndingOrSpace,\n  markdownLineEnding,\n  unicodePunctuation,\n  unicodeWhitespace\n} from 'micromark-util-character'\nconst www = {\n  tokenize: tokenizeWww,\n  partial: true\n}\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n}\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n}\nconst punctuation = {\n  tokenize: tokenizePunctuation,\n  partial: true\n}\nconst namedCharacterReference = {\n  tokenize: tokenizeNamedCharacterReference,\n  partial: true\n}\nconst wwwAutolink = {\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n}\nconst httpAutolink = {\n  tokenize: tokenizeHttpAutolink,\n  previous: previousHttp\n}\nconst emailAutolink = {\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n}\n/** @type {ConstructRecord} */\n\nconst text = {}\n/** @type {Extension} */\n\nexport const gfmAutolinkLiteral = {\n  text\n}\nlet code = 48 // Add alphanumerics.\n\nwhile (code < 123) {\n  text[code] = emailAutolink\n  code++\n  if (code === 58) code = 65\n  else if (code === 91) code = 97\n}\n\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, httpAutolink]\ntext[104] = [emailAutolink, httpAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n/** @type {Tokenizer} */\n\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this\n  /** @type {boolean} */\n\n  let hasDot\n  /** @type {boolean|undefined} */\n\n  let hasDigitInLastSegment\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (\n      !gfmAtext(code) ||\n      !previousEmail(self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkEmail')\n    return atext(code)\n  }\n  /** @type {State} */\n\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code)\n      return atext\n    }\n\n    if (code === 64) {\n      effects.consume(code)\n      return label\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function label(code) {\n    if (code === 46) {\n      return effects.check(punctuation, done, dotContinuation)(code)\n    }\n\n    if (code === 45 || code === 95) {\n      return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n    }\n\n    if (asciiAlphanumeric(code)) {\n      if (!hasDigitInLastSegment && asciiDigit(code)) {\n        hasDigitInLastSegment = true\n      }\n\n      effects.consume(code)\n      return label\n    }\n\n    return done(code)\n  }\n  /** @type {State} */\n\n  function dotContinuation(code) {\n    effects.consume(code)\n    hasDot = true\n    hasDigitInLastSegment = undefined\n    return label\n  }\n  /** @type {State} */\n\n  function dashOrUnderscoreContinuation(code) {\n    effects.consume(code)\n    return afterDashOrUnderscore\n  }\n  /** @type {State} */\n\n  function afterDashOrUnderscore(code) {\n    if (code === 46) {\n      return effects.check(punctuation, nok, dotContinuation)(code)\n    }\n\n    return label(code)\n  }\n  /** @type {State} */\n\n  function done(code) {\n    if (hasDot && !hasDigitInLastSegment) {\n      effects.exit('literalAutolinkEmail')\n      effects.exit('literalAutolink')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (\n      (code !== 87 && code !== 119) ||\n      !previousWww(self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkWww') // For `www.` we check instead of attempt, because when it matches, GH\n    // treats it as part of a domain (yes, it says a valid domain must come\n    // after `www.`, but that’s not how it’s implemented by them).\n\n    return effects.check(\n      www,\n      effects.attempt(domain, effects.attempt(path, done), nok),\n      nok\n    )(code)\n  }\n  /** @type {State} */\n\n  function done(code) {\n    effects.exit('literalAutolinkWww')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (\n      (code !== 72 && code !== 104) ||\n      !previousHttp(self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkHttp')\n    effects.consume(code)\n    return t1\n  }\n  /** @type {State} */\n\n  function t1(code) {\n    if (code === 84 || code === 116) {\n      effects.consume(code)\n      return t2\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function t2(code) {\n    if (code === 84 || code === 116) {\n      effects.consume(code)\n      return p\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function p(code) {\n    if (code === 80 || code === 112) {\n      effects.consume(code)\n      return s\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function s(code) {\n    if (code === 83 || code === 115) {\n      effects.consume(code)\n      return colon\n    }\n\n    return colon(code)\n  }\n  /** @type {State} */\n\n  function colon(code) {\n    if (code === 58) {\n      effects.consume(code)\n      return slash1\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function slash1(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return slash2\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function slash2(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    return code === null ||\n      asciiControl(code) ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)\n      ? nok(code)\n      : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n  }\n  /** @type {State} */\n\n  function done(code) {\n    effects.exit('literalAutolinkHttp')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeWww(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.consume(code)\n    return w2\n  }\n  /** @type {State} */\n\n  function w2(code) {\n    if (code === 87 || code === 119) {\n      effects.consume(code)\n      return w3\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function w3(code) {\n    if (code === 87 || code === 119) {\n      effects.consume(code)\n      return dot\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function dot(code) {\n    if (code === 46) {\n      effects.consume(code)\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? nok(code) : ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean|undefined} */\n  let hasUnderscoreInLastSegment\n  /** @type {boolean|undefined} */\n\n  let hasUnderscoreInLastLastSegment\n  return domain\n  /** @type {State} */\n\n  function domain(code) {\n    if (code === 38) {\n      return effects.check(\n        namedCharacterReference,\n        done,\n        punctuationContinuation\n      )(code)\n    }\n\n    if (code === 46 || code === 95) {\n      return effects.check(punctuation, done, punctuationContinuation)(code)\n    } // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n    // so that’s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n\n    if (\n      code === null ||\n      asciiControl(code) ||\n      unicodeWhitespace(code) ||\n      (code !== 45 && unicodePunctuation(code))\n    ) {\n      return done(code)\n    }\n\n    effects.consume(code)\n    return domain\n  }\n  /** @type {State} */\n\n  function punctuationContinuation(code) {\n    if (code === 46) {\n      hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n      hasUnderscoreInLastSegment = undefined\n      effects.consume(code)\n      return domain\n    }\n\n    if (code === 95) hasUnderscoreInLastSegment = true\n    effects.consume(code)\n    return domain\n  }\n  /** @type {State} */\n\n  function done(code) {\n    if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePath(effects, ok) {\n  let balance = 0\n  return inPath\n  /** @type {State} */\n\n  function inPath(code) {\n    if (code === 38) {\n      return effects.check(\n        namedCharacterReference,\n        ok,\n        continuedPunctuation\n      )(code)\n    }\n\n    if (code === 40) {\n      balance++\n    }\n\n    if (code === 41) {\n      return effects.check(\n        punctuation,\n        parenAtPathEnd,\n        continuedPunctuation\n      )(code)\n    }\n\n    if (pathEnd(code)) {\n      return ok(code)\n    }\n\n    if (trailingPunctuation(code)) {\n      return effects.check(punctuation, ok, continuedPunctuation)(code)\n    }\n\n    effects.consume(code)\n    return inPath\n  }\n  /** @type {State} */\n\n  function continuedPunctuation(code) {\n    effects.consume(code)\n    return inPath\n  }\n  /** @type {State} */\n\n  function parenAtPathEnd(code) {\n    balance--\n    return balance < 0 ? ok(code) : continuedPunctuation(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.consume(code)\n    return inside\n  }\n  /** @type {State} */\n\n  function inside(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (code === 59) {\n      effects.consume(code)\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    // If the named character reference is followed by the end of the path, it’s\n    // not continued punctuation.\n    return pathEnd(code) ? ok(code) : nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePunctuation(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.consume(code)\n    return after\n  }\n  /** @type {State} */\n\n  function after(code) {\n    // Check the next.\n    if (trailingPunctuation(code)) {\n      effects.consume(code)\n      return after\n    } // If the punctuation marker is followed by the end of the path, it’s not\n    // continued punctuation.\n\n    return pathEnd(code) ? ok(code) : nok(code)\n  }\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction trailingPunctuation(code) {\n  return (\n    code === 33 ||\n    code === 34 ||\n    code === 39 ||\n    code === 41 ||\n    code === 42 ||\n    code === 44 ||\n    code === 46 ||\n    code === 58 ||\n    code === 59 ||\n    code === 60 ||\n    code === 63 ||\n    code === 95 ||\n    code === 126\n  )\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction pathEnd(code) {\n  return code === null || code === 60 || markdownLineEndingOrSpace(code)\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction gfmAtext(code) {\n  return (\n    code === 43 ||\n    code === 45 ||\n    code === 46 ||\n    code === 95 ||\n    asciiAlphanumeric(code)\n  )\n}\n/** @type {Previous} */\n\nfunction previousWww(code) {\n  return (\n    code === null ||\n    code === 40 ||\n    code === 42 ||\n    code === 95 ||\n    code === 126 ||\n    markdownLineEndingOrSpace(code)\n  )\n}\n/** @type {Previous} */\n\nfunction previousHttp(code) {\n  return code === null || !asciiAlpha(code)\n}\n/** @type {Previous} */\n\nfunction previousEmail(code) {\n  return code !== 47 && previousHttp(code)\n}\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\n\nfunction previousUnbalanced(events) {\n  let index = events.length\n  let result = false\n\n  while (index--) {\n    const token = events[index][1]\n\n    if (\n      (token.type === 'labelLink' || token.type === 'labelImage') &&\n      !token._balanced\n    ) {\n      result = true\n      break\n    } // @ts-expect-error If we’ve seen this token, and it was marked as not\n    // having any unbalanced bracket before it, we can exit.\n\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false\n      break\n    }\n  }\n\n  if (events.length > 0 && !result) {\n    // @ts-expect-error Mark the last token as “walked into” w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n  }\n\n  return result\n}\n","export default {\n  \"code[class*=\\\"language-\\\"]\": {\n    \"color\": \"#e3eaf2\",\n    \"background\": \"none\",\n    \"fontFamily\": \"Consolas, Monaco, \\\"Andale Mono\\\", \\\"Ubuntu Mono\\\", monospace\",\n    \"textAlign\": \"left\",\n    \"whiteSpace\": \"pre\",\n    \"wordSpacing\": \"normal\",\n    \"wordBreak\": \"normal\",\n    \"wordWrap\": \"normal\",\n    \"lineHeight\": \"1.5\",\n    \"MozTabSize\": \"4\",\n    \"OTabSize\": \"4\",\n    \"tabSize\": \"4\",\n    \"WebkitHyphens\": \"none\",\n    \"MozHyphens\": \"none\",\n    \"msHyphens\": \"none\",\n    \"hyphens\": \"none\"\n  },\n  \"pre[class*=\\\"language-\\\"]\": {\n    \"color\": \"#e3eaf2\",\n    \"background\": \"#111b27\",\n    \"fontFamily\": \"Consolas, Monaco, \\\"Andale Mono\\\", \\\"Ubuntu Mono\\\", monospace\",\n    \"textAlign\": \"left\",\n    \"whiteSpace\": \"pre\",\n    \"wordSpacing\": \"normal\",\n    \"wordBreak\": \"normal\",\n    \"wordWrap\": \"normal\",\n    \"lineHeight\": \"1.5\",\n    \"MozTabSize\": \"4\",\n    \"OTabSize\": \"4\",\n    \"tabSize\": \"4\",\n    \"WebkitHyphens\": \"none\",\n    \"MozHyphens\": \"none\",\n    \"msHyphens\": \"none\",\n    \"hyphens\": \"none\",\n    \"padding\": \"1em\",\n    \"margin\": \"0.5em 0\",\n    \"overflow\": \"auto\"\n  },\n  \"pre[class*=\\\"language-\\\"]::-moz-selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"pre[class*=\\\"language-\\\"] ::-moz-selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"code[class*=\\\"language-\\\"]::-moz-selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"code[class*=\\\"language-\\\"] ::-moz-selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"pre[class*=\\\"language-\\\"]::selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"pre[class*=\\\"language-\\\"] ::selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"code[class*=\\\"language-\\\"]::selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \"code[class*=\\\"language-\\\"] ::selection\": {\n    \"background\": \"#3c526d\"\n  },\n  \":not(pre) > code[class*=\\\"language-\\\"]\": {\n    \"background\": \"#111b27\",\n    \"padding\": \"0.1em 0.3em\",\n    \"borderRadius\": \"0.3em\",\n    \"whiteSpace\": \"normal\"\n  },\n  \"comment\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"prolog\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"doctype\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"cdata\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"punctuation\": {\n    \"color\": \"#e3eaf2\"\n  },\n  \"delimiter.important\": {\n    \"color\": \"#66cccc\",\n    \"fontWeight\": \"inherit\"\n  },\n  \"selector.parent\": {\n    \"color\": \"#66cccc\"\n  },\n  \"tag\": {\n    \"color\": \"#66cccc\"\n  },\n  \"tag.punctuation\": {\n    \"color\": \"#66cccc\"\n  },\n  \"attr-name\": {\n    \"color\": \"#e6d37a\"\n  },\n  \"boolean\": {\n    \"color\": \"#e6d37a\"\n  },\n  \"boolean.important\": {\n    \"color\": \"#e6d37a\"\n  },\n  \"number\": {\n    \"color\": \"#e6d37a\"\n  },\n  \"constant\": {\n    \"color\": \"#e6d37a\"\n  },\n  \"selector.attribute\": {\n    \"color\": \"#e6d37a\"\n  },\n  \"class-name\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \"key\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \"parameter\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \"property\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \"property-access\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \"variable\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \"attr-value\": {\n    \"color\": \"#91d076\"\n  },\n  \"inserted\": {\n    \"color\": \"#91d076\"\n  },\n  \"color\": {\n    \"color\": \"#91d076\"\n  },\n  \"selector.value\": {\n    \"color\": \"#91d076\"\n  },\n  \"string\": {\n    \"color\": \"#91d076\"\n  },\n  \"string.url-link\": {\n    \"color\": \"#91d076\"\n  },\n  \"builtin\": {\n    \"color\": \"#f4adf4\"\n  },\n  \"keyword-array\": {\n    \"color\": \"#f4adf4\"\n  },\n  \"package\": {\n    \"color\": \"#f4adf4\"\n  },\n  \"regex\": {\n    \"color\": \"#f4adf4\"\n  },\n  \"function\": {\n    \"color\": \"#c699e3\"\n  },\n  \"selector.class\": {\n    \"color\": \"#c699e3\"\n  },\n  \"selector.id\": {\n    \"color\": \"#c699e3\"\n  },\n  \"atrule.rule\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"combinator\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"keyword\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"operator\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"pseudo-class\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"pseudo-element\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"selector\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"unit\": {\n    \"color\": \"#e9ae7e\"\n  },\n  \"deleted\": {\n    \"color\": \"#cd6660\"\n  },\n  \"important\": {\n    \"color\": \"#cd6660\",\n    \"fontWeight\": \"bold\"\n  },\n  \"keyword-this\": {\n    \"color\": \"#6cb8e6\",\n    \"fontWeight\": \"bold\"\n  },\n  \"this\": {\n    \"color\": \"#6cb8e6\",\n    \"fontWeight\": \"bold\"\n  },\n  \"bold\": {\n    \"fontWeight\": \"bold\"\n  },\n  \"italic\": {\n    \"fontStyle\": \"italic\"\n  },\n  \"entity\": {\n    \"cursor\": \"help\"\n  },\n  \".language-markdown .token.title\": {\n    \"color\": \"#6cb8e6\",\n    \"fontWeight\": \"bold\"\n  },\n  \".language-markdown .token.title .token.punctuation\": {\n    \"color\": \"#6cb8e6\",\n    \"fontWeight\": \"bold\"\n  },\n  \".language-markdown .token.blockquote.punctuation\": {\n    \"color\": \"#f4adf4\"\n  },\n  \".language-markdown .token.code\": {\n    \"color\": \"#66cccc\"\n  },\n  \".language-markdown .token.hr.punctuation\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \".language-markdown .token.url .token.content\": {\n    \"color\": \"#91d076\"\n  },\n  \".language-markdown .token.url-link\": {\n    \"color\": \"#e6d37a\"\n  },\n  \".language-markdown .token.list.punctuation\": {\n    \"color\": \"#f4adf4\"\n  },\n  \".language-markdown .token.table-header\": {\n    \"color\": \"#e3eaf2\"\n  },\n  \".language-json .token.operator\": {\n    \"color\": \"#e3eaf2\"\n  },\n  \".language-scss .token.variable\": {\n    \"color\": \"#66cccc\"\n  },\n  \"token.tab:not(:empty):before\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"token.cr:before\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"token.lf:before\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"token.space:before\": {\n    \"color\": \"#8da1b9\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#6cb8e6\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#6cb8e6\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#6cb8e6da\",\n    \"textDecoration\": \"none\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#6cb8e6da\",\n    \"textDecoration\": \"none\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#6cb8e6da\",\n    \"textDecoration\": \"none\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#6cb8e6da\",\n    \"textDecoration\": \"none\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#8da1b9\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#8da1b9\"\n  },\n  \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus\": {\n    \"color\": \"#111b27\",\n    \"background\": \"#8da1b9\"\n  },\n  \".line-highlight.line-highlight\": {\n    \"background\": \"linear-gradient(to right, #3c526d5f 70%, #3c526d55)\"\n  },\n  \".line-highlight.line-highlight:before\": {\n    \"backgroundColor\": \"#8da1b9\",\n    \"color\": \"#111b27\",\n    \"boxShadow\": \"0 1px #3c526d\"\n  },\n  \".line-highlight.line-highlight[data-end]:after\": {\n    \"backgroundColor\": \"#8da1b9\",\n    \"color\": \"#111b27\",\n    \"boxShadow\": \"0 1px #3c526d\"\n  },\n  \"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before\": {\n    \"backgroundColor\": \"#8da1b918\"\n  },\n  \".line-numbers.line-numbers .line-numbers-rows\": {\n    \"borderRight\": \"1px solid #0b121b\",\n    \"background\": \"#0b121b7a\"\n  },\n  \".line-numbers .line-numbers-rows > span:before\": {\n    \"color\": \"#8da1b9da\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-1\": {\n    \"color\": \"#e6d37a\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-5\": {\n    \"color\": \"#e6d37a\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-9\": {\n    \"color\": \"#e6d37a\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-2\": {\n    \"color\": \"#f4adf4\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-6\": {\n    \"color\": \"#f4adf4\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-10\": {\n    \"color\": \"#f4adf4\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-3\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-7\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-11\": {\n    \"color\": \"#6cb8e6\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-4\": {\n    \"color\": \"#c699e3\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-8\": {\n    \"color\": \"#c699e3\"\n  },\n  \".rainbow-braces .token.token.punctuation.brace-level-12\": {\n    \"color\": \"#c699e3\"\n  },\n  \"pre.diff-highlight > code .token.token.deleted:not(.prefix)\": {\n    \"backgroundColor\": \"#cd66601f\"\n  },\n  \"pre > code.diff-highlight .token.token.deleted:not(.prefix)\": {\n    \"backgroundColor\": \"#cd66601f\"\n  },\n  \"pre.diff-highlight > code .token.token.inserted:not(.prefix)\": {\n    \"backgroundColor\": \"#91d0761f\"\n  },\n  \"pre > code.diff-highlight .token.token.inserted:not(.prefix)\": {\n    \"backgroundColor\": \"#91d0761f\"\n  },\n  \".command-line .command-line-prompt\": {\n    \"borderRight\": \"1px solid #0b121b\"\n  },\n  \".command-line .command-line-prompt > span:before\": {\n    \"color\": \"#8da1b9da\"\n  }\n};","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n/**\n * @returns {Extension}\n */\n\nexport function gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {Token} */\n\n  let labelStart // Find an opening.\n\n  while (index--) {\n    const token = self.events[index][1]\n\n    if (token.type === 'labelImage') {\n      labelStart = token\n      break\n    } // Exit if we’ve walked far enough.\n\n    if (\n      token.type === 'gfmFootnoteCall' ||\n      token.type === 'labelLink' ||\n      token.type === 'label' ||\n      token.type === 'image' ||\n      token.type === 'link'\n    ) {\n      break\n    }\n  }\n\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code)\n    }\n\n    const id = normalizeIdentifier(\n      self.sliceSerialize({\n        start: labelStart.end,\n        end: self.now()\n      })\n    )\n\n    if (id.charCodeAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code)\n    }\n\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return ok(code)\n  }\n}\n/** @type {Resolver} */\n\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length\n  /** @type {Token|undefined} */\n\n  let labelStart // Find an opening.\n\n  while (index--) {\n    if (\n      events[index][1].type === 'labelImage' &&\n      events[index][0] === 'enter'\n    ) {\n      labelStart = events[index][1]\n      break\n    }\n  }\n\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = 'data'\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker' // The whole (without `!`):\n\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  } // The `^` marker\n\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  } // Increment the end 1 character.\n\n  marker.end.column++\n  marker.end.offset++\n  marker.end._bufferIndex++\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  }\n  const chunk = {\n    type: 'chunkString',\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  }\n  /** @type {Array<Event>} */\n\n  const replacement = [\n    // Take the `labelImageMarker` (now `data`, the `!`)\n    events[index + 1],\n    events[index + 2],\n    ['enter', call, context], // The `[`\n    events[index + 3],\n    events[index + 4], // The `^`.\n    ['enter', marker, context],\n    ['exit', marker, context], // Everything in between.\n    ['enter', string, context],\n    ['enter', chunk, context],\n    ['exit', chunk, context],\n    ['exit', string, context], // The ending (`]`, properly parsed and labelled).\n    events[events.length - 2],\n    events[events.length - 1],\n    ['exit', call, context]\n  ]\n  events.splice(index, events.length - index + 1, ...replacement)\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  let size = 0\n  /** @type {boolean} */\n\n  let data\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('gfmFootnoteCall')\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return callStart\n  }\n  /** @type {State} */\n\n  function callStart(code) {\n    if (code !== 94) return nok(code)\n    effects.enter('gfmFootnoteCallMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallMarker')\n    effects.enter('gfmFootnoteCallString')\n    effects.enter('chunkString').contentType = 'string'\n    return callData\n  }\n  /** @type {State} */\n\n  function callData(code) {\n    /** @type {Token} */\n    let token\n\n    if (code === null || code === 91 || size++ > 999) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      if (!data) {\n        return nok(code)\n      }\n\n      effects.exit('chunkString')\n      token = effects.exit('gfmFootnoteCallString')\n      return defined.includes(normalizeIdentifier(self.sliceSerialize(token)))\n        ? end(code)\n        : nok(code)\n    }\n\n    effects.consume(code)\n\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true\n    }\n\n    return code === 92 ? callEscape : callData\n  }\n  /** @type {State} */\n\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return callData\n    }\n\n    return callData(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    effects.exit('gfmFootnoteCall')\n    return ok\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {string} */\n\n  let identifier\n  let size = 0\n  /** @type {boolean|undefined} */\n\n  let data\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true\n    effects.enter('gfmFootnoteDefinitionLabel')\n    effects.enter('gfmFootnoteDefinitionLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteDefinitionLabelMarker')\n    return labelStart\n  }\n  /** @type {State} */\n\n  function labelStart(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionMarker')\n      effects.enter('gfmFootnoteDefinitionLabelString')\n      return atBreak\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function atBreak(code) {\n    /** @type {Token} */\n    let token\n\n    if (code === null || code === 91 || size > 999) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      if (!data) {\n        return nok(code)\n      }\n\n      token = effects.exit('gfmFootnoteDefinitionLabelString')\n      identifier = normalizeIdentifier(self.sliceSerialize(token))\n      effects.enter('gfmFootnoteDefinitionLabelMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionLabelMarker')\n      effects.exit('gfmFootnoteDefinitionLabel')\n      return labelAfter\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      size++\n      return atBreak\n    }\n\n    effects.enter('chunkString').contentType = 'string'\n    return label(code)\n  }\n  /** @type {State} */\n\n  function label(code) {\n    if (\n      code === null ||\n      markdownLineEnding(code) ||\n      code === 91 ||\n      code === 93 ||\n      size > 999\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true\n    }\n\n    size++\n    effects.consume(code)\n    return code === 92 ? labelEscape : label\n  }\n  /** @type {State} */\n\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n  /** @type {State} */\n\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker') // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n\n      return factorySpace(effects, done, 'gfmFootnoteDefinitionWhitespace')\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function done(code) {\n    if (!defined.includes(identifier)) {\n      defined.push(identifier)\n    }\n\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n/** @type {Exiter} */\n\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition')\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'gfmFootnoteDefinitionIndent',\n    4 + 1\n  )\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === 4\n      ? ok(code)\n      : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean} [singleTilde=true]\n *   Whether to support strikethrough with a single tilde (`boolean`, default:\n *   `true`).\n *   Single tildes work on github.com, but are technically prohibited by the\n *   GFM spec.\n */\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * @param {Options} [options]\n * @returns {Extension}\n */\nexport function gfmStrikethrough(options = {}) {\n  let single = options.singleTilde\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  }\n\n  if (single === null || single === undefined) {\n    single = true\n  }\n\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  }\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n\n  function resolveAllStrikethrough(events, context) {\n    let index = -1 // Walk through all events.\n\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (\n        events[index][0] === 'enter' &&\n        events[index][1].type === 'strikethroughSequenceTemporary' &&\n        events[index][1]._close\n      ) {\n        let open = index // Now walk back to find an opener.\n\n        while (open--) {\n          // Find a token that can open the closer.\n          if (\n            events[open][0] === 'exit' &&\n            events[open][1].type === 'strikethroughSequenceTemporary' &&\n            events[open][1]._open && // If the sizes are the same:\n            events[index][1].end.offset - events[index][1].start.offset ===\n              events[open][1].end.offset - events[open][1].start.offset\n          ) {\n            events[index][1].type = 'strikethroughSequence'\n            events[open][1].type = 'strikethroughSequence'\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            }\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            } // Opening.\n\n            const nextEvents = [\n              ['enter', strikethrough, context],\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context],\n              ['enter', text, context]\n            ] // Between.\n\n            splice(\n              nextEvents,\n              nextEvents.length,\n              0,\n              resolveAll(\n                context.parser.constructs.insideSpan.null,\n                events.slice(open + 1, index),\n                context\n              )\n            ) // Closing.\n\n            splice(nextEvents, nextEvents.length, 0, [\n              ['exit', text, context],\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context],\n              ['exit', strikethrough, context]\n            ])\n            splice(events, open - 1, index - open + 3, nextEvents)\n            index = open + nextEvents.length - 2\n            break\n          }\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = 'data'\n      }\n    }\n\n    return events\n  }\n  /** @type {Tokenizer} */\n\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous\n    const events = this.events\n    let size = 0\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      if (\n        previous === 126 &&\n        events[events.length - 1][1].type !== 'characterEscape'\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('strikethroughSequenceTemporary')\n      return more(code)\n    }\n    /** @type {State} */\n\n    function more(code) {\n      const before = classifyCharacter(previous)\n\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code)\n        effects.consume(code)\n        size++\n        return more\n      }\n\n      if (size < 2 && !single) return nok(code)\n      const token = effects.exit('strikethroughSequenceTemporary')\n      const after = classifyCharacter(code)\n      token._open = !after || (after === 2 && Boolean(before))\n      token._close = !before || (before === 2 && Boolean(after))\n      return ok(code)\n    }\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n/**\n * @typedef {'left'|'center'|'right'|'none'} Align\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Extension} */\nexport const gfmTable = {\n  flow: {\n    null: {\n      tokenize: tokenizeTable,\n      resolve: resolveTable\n    }\n  }\n}\nconst nextPrefixedOrBlank = {\n  tokenize: tokenizeNextPrefixedOrBlank,\n  partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n  let index = -1\n  /** @type {boolean|undefined} */\n\n  let inHead\n  /** @type {boolean|undefined} */\n\n  let inDelimiterRow\n  /** @type {boolean|undefined} */\n\n  let inRow\n  /** @type {number|undefined} */\n\n  let contentStart\n  /** @type {number|undefined} */\n\n  let contentEnd\n  /** @type {number|undefined} */\n\n  let cellStart\n  /** @type {boolean|undefined} */\n\n  let seenCellInRow\n\n  while (++index < events.length) {\n    const token = events[index][1]\n\n    if (inRow) {\n      if (token.type === 'temporaryTableCellContent') {\n        contentStart = contentStart || index\n        contentEnd = index\n      }\n\n      if (\n        // Combine separate content parts into one.\n        (token.type === 'tableCellDivider' || token.type === 'tableRow') &&\n        contentEnd\n      ) {\n        const content = {\n          type: 'tableContent',\n          start: events[contentStart][1].start,\n          end: events[contentEnd][1].end\n        }\n        /** @type {Token} */\n\n        const text = {\n          type: 'chunkText',\n          start: content.start,\n          end: content.end,\n          // @ts-expect-error It’s fine.\n          contentType: 'text'\n        }\n        events.splice(\n          contentStart,\n          contentEnd - contentStart + 1,\n          ['enter', content, context],\n          ['enter', text, context],\n          ['exit', text, context],\n          ['exit', content, context]\n        )\n        index -= contentEnd - contentStart - 3\n        contentStart = undefined\n        contentEnd = undefined\n      }\n    }\n\n    if (\n      events[index][0] === 'exit' &&\n      cellStart !== undefined &&\n      cellStart + (seenCellInRow ? 0 : 1) < index &&\n      (token.type === 'tableCellDivider' ||\n        (token.type === 'tableRow' &&\n          (cellStart + 3 < index ||\n            events[cellStart][1].type !== 'whitespace')))\n    ) {\n      const cell = {\n        type: inDelimiterRow\n          ? 'tableDelimiter'\n          : inHead\n          ? 'tableHeader'\n          : 'tableData',\n        start: events[cellStart][1].start,\n        end: events[index][1].end\n      }\n      events.splice(index + (token.type === 'tableCellDivider' ? 1 : 0), 0, [\n        'exit',\n        cell,\n        context\n      ])\n      events.splice(cellStart, 0, ['enter', cell, context])\n      index += 2\n      cellStart = index + 1\n      seenCellInRow = true\n    }\n\n    if (token.type === 'tableRow') {\n      inRow = events[index][0] === 'enter'\n\n      if (inRow) {\n        cellStart = index + 1\n        seenCellInRow = false\n      }\n    }\n\n    if (token.type === 'tableDelimiterRow') {\n      inDelimiterRow = events[index][0] === 'enter'\n\n      if (inDelimiterRow) {\n        cellStart = index + 1\n        seenCellInRow = false\n      }\n    }\n\n    if (token.type === 'tableHead') {\n      inHead = events[index][0] === 'enter'\n    }\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this\n  /** @type {Array<Align>} */\n\n  const align = []\n  let tableHeaderCount = 0\n  /** @type {boolean|undefined} */\n\n  let seenDelimiter\n  /** @type {boolean|undefined} */\n\n  let hasDash\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    // @ts-expect-error Custom.\n    effects.enter('table')._align = align\n    effects.enter('tableHead')\n    effects.enter('tableRow') // If we start with a pipe, we open a cell marker.\n\n    if (code === 124) {\n      return cellDividerHead(code)\n    }\n\n    tableHeaderCount++\n    effects.enter('temporaryTableCellContent') // Can’t be space or eols at the start of a construct, so we’re in a cell.\n\n    return inCellContentHead(code)\n  }\n  /** @type {State} */\n\n  function cellDividerHead(code) {\n    effects.enter('tableCellDivider')\n    effects.consume(code)\n    effects.exit('tableCellDivider')\n    seenDelimiter = true\n    return cellBreakHead\n  }\n  /** @type {State} */\n\n  function cellBreakHead(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return atRowEndHead(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.enter('whitespace')\n      effects.consume(code)\n      return inWhitespaceHead\n    }\n\n    if (seenDelimiter) {\n      seenDelimiter = undefined\n      tableHeaderCount++\n    }\n\n    if (code === 124) {\n      return cellDividerHead(code)\n    } // Anything else is cell content.\n\n    effects.enter('temporaryTableCellContent')\n    return inCellContentHead(code)\n  }\n  /** @type {State} */\n\n  function inWhitespaceHead(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return inWhitespaceHead\n    }\n\n    effects.exit('whitespace')\n    return cellBreakHead(code)\n  }\n  /** @type {State} */\n\n  function inCellContentHead(code) {\n    // EOF, whitespace, pipe\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit('temporaryTableCellContent')\n      return cellBreakHead(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? inCellContentEscapeHead : inCellContentHead\n  }\n  /** @type {State} */\n\n  function inCellContentEscapeHead(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code)\n      return inCellContentHead\n    } // Anything else.\n\n    return inCellContentHead(code)\n  }\n  /** @type {State} */\n\n  function atRowEndHead(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    effects.exit('tableRow')\n    effects.exit('tableHead')\n    const originalInterrupt = self.interrupt\n    self.interrupt = true\n    return effects.attempt(\n      {\n        tokenize: tokenizeRowEnd,\n        partial: true\n      },\n      function (code) {\n        self.interrupt = originalInterrupt\n        effects.enter('tableDelimiterRow')\n        return atDelimiterRowBreak(code)\n      },\n      function (code) {\n        self.interrupt = originalInterrupt\n        return nok(code)\n      }\n    )(code)\n  }\n  /** @type {State} */\n\n  function atDelimiterRowBreak(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return rowEndDelimiter(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.enter('whitespace')\n      effects.consume(code)\n      return inWhitespaceDelimiter\n    }\n\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller')\n      effects.consume(code)\n      hasDash = true\n      align.push('none')\n      return inFillerDelimiter\n    }\n\n    if (code === 58) {\n      effects.enter('tableDelimiterAlignment')\n      effects.consume(code)\n      effects.exit('tableDelimiterAlignment')\n      align.push('left')\n      return afterLeftAlignment\n    } // If we start with a pipe, we open a cell marker.\n\n    if (code === 124) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return atDelimiterRowBreak\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function inWhitespaceDelimiter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return inWhitespaceDelimiter\n    }\n\n    effects.exit('whitespace')\n    return atDelimiterRowBreak(code)\n  }\n  /** @type {State} */\n\n  function inFillerDelimiter(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return inFillerDelimiter\n    }\n\n    effects.exit('tableDelimiterFiller')\n\n    if (code === 58) {\n      effects.enter('tableDelimiterAlignment')\n      effects.consume(code)\n      effects.exit('tableDelimiterAlignment')\n      align[align.length - 1] =\n        align[align.length - 1] === 'left' ? 'center' : 'right'\n      return afterRightAlignment\n    }\n\n    return atDelimiterRowBreak(code)\n  }\n  /** @type {State} */\n\n  function afterLeftAlignment(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller')\n      effects.consume(code)\n      hasDash = true\n      return inFillerDelimiter\n    } // Anything else is not ok.\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function afterRightAlignment(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return rowEndDelimiter(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.enter('whitespace')\n      effects.consume(code)\n      return inWhitespaceDelimiter\n    } // `|`\n\n    if (code === 124) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return atDelimiterRowBreak\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function rowEndDelimiter(code) {\n    effects.exit('tableDelimiterRow') // Exit if there was no dash at all, or if the header cell count is not the\n    // delimiter cell count.\n\n    if (!hasDash || tableHeaderCount !== align.length) {\n      return nok(code)\n    }\n\n    if (code === null) {\n      return tableClose(code)\n    }\n\n    return effects.check(\n      nextPrefixedOrBlank,\n      tableClose,\n      effects.attempt(\n        {\n          tokenize: tokenizeRowEnd,\n          partial: true\n        },\n        factorySpace(effects, bodyStart, 'linePrefix', 4),\n        tableClose\n      )\n    )(code)\n  }\n  /** @type {State} */\n\n  function tableClose(code) {\n    effects.exit('table')\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function bodyStart(code) {\n    effects.enter('tableBody')\n    return rowStartBody(code)\n  }\n  /** @type {State} */\n\n  function rowStartBody(code) {\n    effects.enter('tableRow') // If we start with a pipe, we open a cell marker.\n\n    if (code === 124) {\n      return cellDividerBody(code)\n    }\n\n    effects.enter('temporaryTableCellContent') // Can’t be space or eols at the start of a construct, so we’re in a cell.\n\n    return inCellContentBody(code)\n  }\n  /** @type {State} */\n\n  function cellDividerBody(code) {\n    effects.enter('tableCellDivider')\n    effects.consume(code)\n    effects.exit('tableCellDivider')\n    return cellBreakBody\n  }\n  /** @type {State} */\n\n  function cellBreakBody(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return atRowEndBody(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.enter('whitespace')\n      effects.consume(code)\n      return inWhitespaceBody\n    } // `|`\n\n    if (code === 124) {\n      return cellDividerBody(code)\n    } // Anything else is cell content.\n\n    effects.enter('temporaryTableCellContent')\n    return inCellContentBody(code)\n  }\n  /** @type {State} */\n\n  function inWhitespaceBody(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return inWhitespaceBody\n    }\n\n    effects.exit('whitespace')\n    return cellBreakBody(code)\n  }\n  /** @type {State} */\n\n  function inCellContentBody(code) {\n    // EOF, whitespace, pipe\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit('temporaryTableCellContent')\n      return cellBreakBody(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? inCellContentEscapeBody : inCellContentBody\n  }\n  /** @type {State} */\n\n  function inCellContentEscapeBody(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code)\n      return inCellContentBody\n    } // Anything else.\n\n    return inCellContentBody(code)\n  }\n  /** @type {State} */\n\n  function atRowEndBody(code) {\n    effects.exit('tableRow')\n\n    if (code === null) {\n      return tableBodyClose(code)\n    }\n\n    return effects.check(\n      nextPrefixedOrBlank,\n      tableBodyClose,\n      effects.attempt(\n        {\n          tokenize: tokenizeRowEnd,\n          partial: true\n        },\n        factorySpace(effects, rowStartBody, 'linePrefix', 4),\n        tableBodyClose\n      )\n    )(code)\n  }\n  /** @type {State} */\n\n  function tableBodyClose(code) {\n    effects.exit('tableBody')\n    return tableClose(code)\n  }\n  /** @type {Tokenizer} */\n\n  function tokenizeRowEnd(effects, ok, nok) {\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, prefixed, 'linePrefix')\n    }\n    /** @type {State} */\n\n    function prefixed(code) {\n      // Blank or interrupting line.\n      if (\n        self.parser.lazy[self.now().line] ||\n        code === null ||\n        markdownLineEnding(code)\n      ) {\n        return nok(code)\n      }\n\n      const tail = self.events[self.events.length - 1] // Indented code can interrupt delimiter and body rows.\n\n      if (\n        !self.parser.constructs.disable.null.includes('codeIndented') &&\n        tail &&\n        tail[1].type === 'linePrefix' &&\n        tail[2].sliceSerialize(tail[1], true).length >= 4\n      ) {\n        return nok(code)\n      }\n\n      self._gfmTableDynamicInterruptHack = true\n      return effects.check(\n        self.parser.constructs.flow,\n        function (code) {\n          self._gfmTableDynamicInterruptHack = false\n          return nok(code)\n        },\n        function (code) {\n          self._gfmTableDynamicInterruptHack = false\n          return ok(code)\n        }\n      )(code)\n    }\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    // This is a check, so we don’t care about tokens, but we open a bogus one\n    // so we’re valid.\n    effects.enter('check') // EOL.\n\n    effects.consume(code)\n    return whitespace\n  }\n  /** @type {State} */\n\n  function whitespace(code) {\n    if (code === -1 || code === 32) {\n      effects.consume(code)\n      size++\n      return size === 4 ? ok : whitespace\n    } // EOF or whitespace\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      return ok(code)\n    } // Anything else.\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEndingOrSpace,\n  markdownLineEnding\n} from 'micromark-util-character'\nconst tasklistCheck = {\n  tokenize: tokenizeTasklistCheck\n}\nexport const gfmTaskListItem = {\n  text: {\n    [91]: tasklistCheck\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this\n  return open\n  /** @type {State} */\n\n  function open(code) {\n    if (\n      // Exit if there’s stuff before.\n      self.previous !== null || // Exit if not in the first content that is the first child of a list\n      // item.\n      !self._gfmTasklistFirstContentOfListItem\n    ) {\n      return nok(code)\n    }\n\n    effects.enter('taskListCheck')\n    effects.enter('taskListCheckMarker')\n    effects.consume(code)\n    effects.exit('taskListCheckMarker')\n    return inside\n  }\n  /** @type {State} */\n\n  function inside(code) {\n    // To match how GH works in comments, use `markdownSpace` (`[ \\t]`) instead\n    // of `markdownLineEndingOrSpace` (`[ \\t\\r\\n]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueUnchecked')\n      return close\n    }\n\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueChecked')\n      return close\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker')\n      effects.consume(code)\n      effects.exit('taskListCheckMarker')\n      effects.exit('taskListCheck')\n      return effects.check(\n        {\n          tokenize: spaceThenNonSpace\n        },\n        ok,\n        nok\n      )\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction spaceThenNonSpace(effects, ok, nok) {\n  const self = this\n  return factorySpace(effects, after, 'whitespace')\n  /** @type {State} */\n\n  function after(code) {\n    const tail = self.events[self.events.length - 1]\n    return (\n      // We either found spaces…\n      ((tail && tail[1].type === 'whitespace') || // …or it was followed by a line ending, in which case, there has to be\n        // non-whitespace after that line ending, because otherwise we’d get an\n        // EOF as the content is closed with blank lines.\n        markdownLineEnding(code)) &&\n        code !== null\n        ? ok(code)\n        : nok(code)\n    )\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n */\n\nimport {\n  combineExtensions,\n  combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n  gfmAutolinkLiteral,\n  gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n  gfmStrikethrough,\n  gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n  gfmTaskListItem,\n  gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Support GFM or markdown on github.com.\n *\n * @param {Options} [options]\n * @returns {Extension}\n */\nexport function gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral,\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable,\n    gfmTaskListItem\n  ])\n}\n\n/**\n * Support to compile GFM to HTML.\n *\n * @param {HtmlOptions} [options]\n * @returns {HtmlExtension}\n */\nexport function gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml,\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml,\n    gfmTableHtml,\n    gfmTagfilterHtml,\n    gfmTaskListItemHtml\n  ])\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n","/**\n * @typedef Options\n *   Configuration (optional).\n * @property {Test} [ignore]\n *   `unist-util-is` test used to assert parents\n *\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {Content|Root} Node\n * @typedef {Exclude<Extract<Node, import('mdast').Parent>, Root>} Parent\n *\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n *\n * @typedef RegExpMatchObject\n * @property {number} index\n * @property {string} input\n * @property {[Root, ...Array<Parent>, Text]} stack\n *\n * @typedef {string|RegExp} Find\n * @typedef {string|ReplaceFunction} Replace\n *\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * @typedef {Record<string, Replace>} FindAndReplaceSchema\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * @typedef {Array<Pair>} Pairs\n */\n\n/**\n * @callback ReplaceFunction\n * @param {...any} parameters\n * @returns {Array<PhrasingContent>|PhrasingContent|string|false|undefined|null}\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param tree mdast tree\n * @param find Value to find and remove. When `string`, escaped and made into a global `RegExp`\n * @param [replace] Value to insert.\n *   * When `string`, turned into a Text node.\n *   * When `Function`, called with the results of calling `RegExp.exec` as\n *     arguments, in which case it can return a single or a list of `Node`,\n *     a `string` (which is wrapped in a `Text` node), or `false` to not replace\n * @param [options] Configuration.\n */\nexport const findAndReplace =\n  /**\n   * @type {(\n   *   ((tree: Node, find: Find, replace?: Replace, options?: Options) => Node) &\n   *   ((tree: Node, schema: FindAndReplaceSchema|FindAndReplaceList, options?: Options) => Node)\n   * )}\n   **/\n  (\n    /**\n     * @param {Node} tree\n     * @param {Find|FindAndReplaceSchema|FindAndReplaceList} find\n     * @param {Replace|Options} [replace]\n     * @param {Options} [options]\n     */\n    function (tree, find, replace, options) {\n      /** @type {Options|undefined} */\n      let settings\n      /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n      let schema\n\n      if (typeof find === 'string' || find instanceof RegExp) {\n        // @ts-expect-error don’t expect options twice.\n        schema = [[find, replace]]\n        settings = options\n      } else {\n        schema = find\n        // @ts-expect-error don’t expect replace twice.\n        settings = replace\n      }\n\n      if (!settings) {\n        settings = {}\n      }\n\n      const ignored = convert(settings.ignore || [])\n      const pairs = toPairs(schema)\n      let pairIndex = -1\n\n      while (++pairIndex < pairs.length) {\n        visitParents(tree, 'text', visitor)\n      }\n\n      return tree\n\n      /** @type {import('unist-util-visit-parents/complex-types').BuildVisitor<Root, 'text'>} */\n      function visitor(node, parents) {\n        let index = -1\n        /** @type {Parent|undefined} */\n        let grandparent\n\n        while (++index < parents.length) {\n          const parent = /** @type {Parent} */ (parents[index])\n\n          if (\n            ignored(\n              parent,\n              // @ts-expect-error mdast vs. unist parent.\n              grandparent ? grandparent.children.indexOf(parent) : undefined,\n              grandparent\n            )\n          ) {\n            return\n          }\n\n          grandparent = parent\n        }\n\n        if (grandparent) {\n          // @ts-expect-error: stack is fine.\n          return handler(node, parents)\n        }\n      }\n\n      /**\n       * @param {Text} node\n       * @param {[Root, ...Array<Parent>]} parents\n       * @returns {VisitorResult}\n       */\n      function handler(node, parents) {\n        const parent = parents[parents.length - 1]\n        const find = pairs[pairIndex][0]\n        const replace = pairs[pairIndex][1]\n        let start = 0\n        // @ts-expect-error: TS is wrong, some of these children can be text.\n        const index = parent.children.indexOf(node)\n        let change = false\n        /** @type {Array<PhrasingContent>} */\n        let nodes = []\n        /** @type {number|undefined} */\n        let position\n\n        find.lastIndex = 0\n\n        let match = find.exec(node.value)\n\n        while (match) {\n          position = match.index\n          /** @type {RegExpMatchObject} */\n          const matchObject = {\n            index: match.index,\n            input: match.input,\n            stack: [...parents, node]\n          }\n          let value = replace(...match, matchObject)\n\n          if (typeof value === 'string') {\n            value = value.length > 0 ? {type: 'text', value} : undefined\n          }\n\n          if (value !== false) {\n            if (start !== position) {\n              nodes.push({\n                type: 'text',\n                value: node.value.slice(start, position)\n              })\n            }\n\n            if (Array.isArray(value)) {\n              nodes.push(...value)\n            } else if (value) {\n              nodes.push(value)\n            }\n\n            start = position + match[0].length\n            change = true\n          }\n\n          if (!find.global) {\n            break\n          }\n\n          match = find.exec(node.value)\n        }\n\n        if (change) {\n          if (start < node.value.length) {\n            nodes.push({type: 'text', value: node.value.slice(start)})\n          }\n\n          parent.children.splice(index, 1, ...nodes)\n        } else {\n          nodes = [node]\n        }\n\n        return index + nodes.length\n      }\n    }\n  )\n\n/**\n * @param {FindAndReplaceSchema|FindAndReplaceList} schema\n * @returns {Pairs}\n */\nfunction toPairs(schema) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (typeof schema !== 'object') {\n    throw new TypeError('Expected array or object as schema')\n  }\n\n  if (Array.isArray(schema)) {\n    let index = -1\n\n    while (++index < schema.length) {\n      result.push([\n        toExpression(schema[index][0]),\n        toFunction(schema[index][1])\n      ])\n    }\n  } else {\n    /** @type {string} */\n    let key\n\n    for (key in schema) {\n      if (own.call(schema, key)) {\n        result.push([toExpression(key), toFunction(schema[key])])\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * @param {Find} find\n * @returns {RegExp}\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * @param {Replace} replace\n * @returns {ReplaceFunction}\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function' ? replace : () => replace\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown/lib/types.js').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').PhrasingContent} PhrasingContent\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\nconst inConstruct = 'phrasing'\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/** @type {FromMarkdownExtension} */\nexport const gfmAutolinkLiteralFromMarkdown = {\n  transforms: [transformGfmAutolinkLiterals],\n  enter: {\n    literalAutolink: enterLiteralAutolink,\n    literalAutolinkEmail: enterLiteralAutolinkValue,\n    literalAutolinkHttp: enterLiteralAutolinkValue,\n    literalAutolinkWww: enterLiteralAutolinkValue\n  },\n  exit: {\n    literalAutolink: exitLiteralAutolink,\n    literalAutolinkEmail: exitLiteralAutolinkEmail,\n    literalAutolinkHttp: exitLiteralAutolinkHttp,\n    literalAutolinkWww: exitLiteralAutolinkWww\n  }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmAutolinkLiteralToMarkdown = {\n  unsafe: [\n    {\n      character: '@',\n      before: '[+\\\\-.\\\\w]',\n      after: '[\\\\-.\\\\w]',\n      inConstruct,\n      notInConstruct\n    },\n    {\n      character: '.',\n      before: '[Ww]',\n      after: '[\\\\-.\\\\w]',\n      inConstruct,\n      notInConstruct\n    },\n    {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n  ]\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {PhrasingContent} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[_-\\d]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string|undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n  /** @type {number} */\n  let closingParenIndex\n  /** @type {number} */\n  let openingParens\n  /** @type {number} */\n  let closingParens\n  /** @type {string|undefined} */\n  let trail\n\n  if (trailExec) {\n    url = url.slice(0, trailExec.index)\n    trail = trailExec[0]\n    closingParenIndex = trail.indexOf(')')\n    openingParens = ccount(url, '(')\n    closingParens = ccount(url, ')')\n\n    while (closingParenIndex !== -1 && openingParens > closingParens) {\n      url += trail.slice(0, closingParenIndex + 1)\n      trail = trail.slice(closingParenIndex + 1)\n      closingParenIndex = trail.indexOf(')')\n      closingParens++\n    }\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    (!email || code !== 47)\n  )\n}\n","/**\n * @typedef {import('mdast').Association} Association\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another: controversially,\n * character escapes and references don’t work in this matching: `&copy;` does\n * not match `©`, and `\\+` does not match `+`.\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character escapes\n * and all character references.\n *\n * @param {Association} node\n * @returns {string}\n */\nexport function association(node) {\n  if (node.label || !node.identifier) {\n    return node.label || ''\n  }\n\n  return decodeString(node.identifier)\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * Functions to track output positions.\n * This info isn’t used yet but suchs functionality allows line wrapping,\n * and theoretically source maps (though, is there practical use in that?).\n *\n * @param {TrackFields} options_\n */\nexport function track(options_) {\n  // Defaults are used to prevent crashes when older utilities somehow activate\n  // this code.\n  /* c8 ignore next 5 */\n  const options = options_ || {}\n  const now = options.now || {}\n  let lineShift = options.lineShift || 0\n  let line = now.line || 1\n  let column = now.column || 1\n\n  return {move, current, shift}\n\n  /**\n   * Get the current tracked info.\n   *\n   * @returns {{now: Point, lineShift: number}}\n   */\n  function current() {\n    return {now: {line, column}, lineShift}\n  }\n\n  /**\n   * Define an increased line shift (the typical indent for lines).\n   *\n   * @param {number} value\n   */\n  function shift(value) {\n    lineShift += value\n  }\n\n  /**\n   * Move past a string.\n   *\n   * @param {string} value\n   * @returns {string}\n   */\n  function move(value = '') {\n    const chunks = value.split(/\\r?\\n|\\r/g)\n    const tail = chunks[chunks.length - 1]\n    line += chunks.length - 1\n    column =\n      chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n    return value\n  }\n}\n","/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Join} Join\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {TrackFields} safeOptions\n * @returns {string}\n */\nexport function containerFlow(parent, context, safeOptions) {\n  const indexStack = context.indexStack\n  const children = parent.children || []\n  const tracker = track(safeOptions)\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n\n  indexStack.push(-1)\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    indexStack[indexStack.length - 1] = index\n\n    results.push(\n      tracker.move(\n        context.handle(child, parent, context, {\n          before: '\\n',\n          after: '\\n',\n          ...tracker.current()\n        })\n      )\n    )\n\n    if (child.type !== 'list') {\n      context.bulletLastUsed = undefined\n    }\n\n    if (index < children.length - 1) {\n      results.push(tracker.move(between(child, children[index + 1])))\n    }\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n\n  /**\n   * @param {Node} left\n   * @param {Node} right\n   * @returns {string}\n   */\n  function between(left, right) {\n    let index = context.join.length\n\n    while (index--) {\n      const result = context.join[index](left, right, parent, context)\n\n      if (result === true || result === 1) {\n        break\n      }\n\n      if (typeof result === 'number') {\n        return '\\n'.repeat(1 + result)\n      }\n\n      if (result === false) {\n        return '\\n\\n<!---->\\n\\n'\n      }\n    }\n\n    return '\\n\\n'\n  }\n}\n","/**\n * @callback Map\n * @param {string} value\n * @param {number} line\n * @param {boolean} blank\n * @returns {string}\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @param {string} value\n * @param {Map} map\n * @returns {string}\n */\nexport function indentLines(value, map) {\n  /** @type {Array<string>} */\n  const result = []\n  let start = 0\n  let line = 0\n  /** @type {RegExpExecArray|null} */\n  let match\n\n  while ((match = eol.exec(value))) {\n    one(value.slice(start, match.index))\n    result.push(match[0])\n    start = match.index + match[0].length\n    line++\n  }\n\n  one(value.slice(start))\n\n  return result.join('')\n\n  /**\n   * @param {string} value\n   */\n  function one(value) {\n    result.push(map(value, line, !value))\n  }\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n  if (!pattern._compiled) {\n    const before =\n      (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n      (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n    pattern._compiled = new RegExp(\n      (before ? '(' + before + ')' : '') +\n        (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n        pattern.character +\n        (pattern.after ? '(?:' + pattern.after + ')' : ''),\n      'g'\n    )\n  }\n\n  return pattern._compiled\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Array<string>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<string>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (!list) {\n    return none\n  }\n\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n","/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * @param {Context} context\n * @param {string|null|undefined} input\n * @param {SafeOptions & {encode?: Array<string>}} config\n * @returns {string}\n */\nexport function safe(context, input, config) {\n  const value = (config.before || '') + (input || '') + (config.after || '')\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {Record<number, {before: boolean, after: boolean}>} */\n  const infos = {}\n  let index = -1\n\n  while (++index < context.unsafe.length) {\n    const pattern = context.unsafe[index]\n\n    if (!patternInScope(context.stack, pattern)) {\n      continue\n    }\n\n    const expression = patternCompile(pattern)\n    /** @type {RegExpExecArray|null} */\n    let match\n\n    while ((match = expression.exec(value))) {\n      const before = 'before' in pattern || Boolean(pattern.atBreak)\n      const after = 'after' in pattern\n      const position = match.index + (before ? match[1].length : 0)\n\n      if (positions.includes(position)) {\n        if (infos[position].before && !before) {\n          infos[position].before = false\n        }\n\n        if (infos[position].after && !after) {\n          infos[position].after = false\n        }\n      } else {\n        positions.push(position)\n        infos[position] = {before, after}\n      }\n    }\n  }\n\n  positions.sort(numerical)\n\n  let start = config.before ? config.before.length : 0\n  const end = value.length - (config.after ? config.after.length : 0)\n  index = -1\n\n  while (++index < positions.length) {\n    const position = positions[index]\n\n    // Character before or after matched:\n    if (position < start || position >= end) {\n      continue\n    }\n\n    // If this character is supposed to be escaped because it has a condition on\n    // the next character, and the next character is definitly being escaped,\n    // then skip this escape.\n    if (\n      (position + 1 < end &&\n        positions[index + 1] === position + 1 &&\n        infos[position].after &&\n        !infos[position + 1].before &&\n        !infos[position + 1].after) ||\n      (positions[index - 1] === position - 1 &&\n        infos[position].before &&\n        !infos[position - 1].before &&\n        !infos[position - 1].after)\n    ) {\n      continue\n    }\n\n    if (start !== position) {\n      // If we have to use a character reference, an ampersand would be more\n      // correct, but as backslashes only care about punctuation, either will\n      // do the trick\n      result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n    }\n\n    start = position\n\n    if (\n      /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n      (!config.encode || !config.encode.includes(value.charAt(position)))\n    ) {\n      // Character escape.\n      result.push('\\\\')\n    } else {\n      // Character reference.\n      result.push(\n        '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n      )\n      start++\n    }\n  }\n\n  result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n  return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n  return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n  const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const results = []\n  const whole = value + after\n  let index = -1\n  let start = 0\n  /** @type {RegExpExecArray|null} */\n  let match\n\n  while ((match = expression.exec(whole))) {\n    positions.push(match.index)\n  }\n\n  while (++index < positions.length) {\n    if (start !== positions[index]) {\n      results.push(value.slice(start, positions[index]))\n    }\n\n    results.push('\\\\')\n    start = positions[index]\n  }\n\n  results.push(value.slice(start))\n\n  return results.join('')\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/**\n * @returns {FromMarkdownExtension}\n */\nexport function gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteDefinition: enterFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteCallString: enterFootnoteCallString\n    },\n    exit: {\n      gfmFootnoteDefinition: exitFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteCallString: exitFootnoteCallString\n    }\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function enterFootnoteDefinition(token) {\n    this.enter(\n      {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n      token\n    )\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function enterFootnoteDefinitionLabelString() {\n    this.buffer()\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function exitFootnoteDefinitionLabelString(token) {\n    const label = this.resume()\n    const node = /** @type {FootnoteDefinition} */ (\n      this.stack[this.stack.length - 1]\n    )\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function exitFootnoteDefinition(token) {\n    this.exit(token)\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function enterFootnoteCall(token) {\n    this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function enterFootnoteCallString() {\n    this.buffer()\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function exitFootnoteCallString(token) {\n    const label = this.resume()\n    const node = /** @type {FootnoteDefinition} */ (\n      this.stack[this.stack.length - 1]\n    )\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  /** @type {FromMarkdownHandle} */\n  function exitFootnoteCall(token) {\n    this.exit(token)\n  }\n}\n\n/**\n * @returns {ToMarkdownExtension}\n */\nexport function gfmFootnoteToMarkdown() {\n  footnoteReference.peek = footnoteReferencePeek\n\n  return {\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n    handlers: {footnoteDefinition, footnoteReference}\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {FootnoteReference} node\n   */\n  function footnoteReference(node, _, context, safeOptions) {\n    const tracker = track(safeOptions)\n    let value = tracker.move('[^')\n    const exit = context.enter('footnoteReference')\n    const subexit = context.enter('reference')\n    value += tracker.move(\n      safe(context, association(node), {\n        ...tracker.current(),\n        before: value,\n        after: ']'\n      })\n    )\n    subexit()\n    exit()\n    value += tracker.move(']')\n    return value\n  }\n\n  /** @type {ToMarkdownHandle} */\n  function footnoteReferencePeek() {\n    return '['\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {FootnoteDefinition} node\n   */\n  function footnoteDefinition(node, _, context, safeOptions) {\n    const tracker = track(safeOptions)\n    let value = tracker.move('[^')\n    const exit = context.enter('footnoteDefinition')\n    const subexit = context.enter('label')\n    value += tracker.move(\n      safe(context, association(node), {\n        ...tracker.current(),\n        before: value,\n        after: ']'\n      })\n    )\n    subexit()\n    value += tracker.move(\n      ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n    )\n    tracker.shift(4)\n    value += tracker.move(\n      indentLines(containerFlow(node, context, tracker.current()), map)\n    )\n    exit()\n\n    return value\n\n    /** @type {Map} */\n    function map(line, index, blank) {\n      if (index) {\n        return (blank ? '' : '    ') + line\n      }\n\n      return line\n    }\n  }\n}\n","/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n * @typedef {import('../types.js').Context} Context\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {SafeOptions} safeOptions\n * @returns {string}\n */\nexport function containerPhrasing(parent, context, safeOptions) {\n  const indexStack = context.indexStack\n  const children = parent.children || []\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n  let before = safeOptions.before\n\n  indexStack.push(-1)\n  let tracker = track(safeOptions)\n\n  while (++index < children.length) {\n    const child = children[index]\n    /** @type {string} */\n    let after\n\n    indexStack[indexStack.length - 1] = index\n\n    if (index + 1 < children.length) {\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      let handle = context.handle.handlers[children[index + 1].type]\n      if (handle && handle.peek) handle = handle.peek\n      after = handle\n        ? handle(children[index + 1], parent, context, {\n            before: '',\n            after: '',\n            ...tracker.current()\n          }).charAt(0)\n        : ''\n    } else {\n      after = safeOptions.after\n    }\n\n    // In some cases, html (text) can be found in phrasing right after an eol.\n    // When we’d serialize that, in most cases that would be seen as html\n    // (flow).\n    // As we can’t escape or so to prevent it from happening, we take a somewhat\n    // reasonable approach: replace that eol with a space.\n    // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n    if (\n      results.length > 0 &&\n      (before === '\\r' || before === '\\n') &&\n      child.type === 'html'\n    ) {\n      results[results.length - 1] = results[results.length - 1].replace(\n        /(\\r?\\n|\\r)$/,\n        ' '\n      )\n      before = ' '\n\n      // To do: does this work to reset tracker?\n      tracker = track(safeOptions)\n      tracker.move(results.join(''))\n    }\n\n    results.push(\n      tracker.move(\n        context.handle(child, parent, context, {\n          ...tracker.current(),\n          before,\n          after\n        })\n      )\n    )\n\n    before = results[results.length - 1].slice(-1)\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmStrikethroughFromMarkdown = {\n  canContainEols: ['delete'],\n  enter: {strikethrough: enterStrikethrough},\n  exit: {strikethrough: exitStrikethrough}\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmStrikethroughToMarkdown = {\n  unsafe: [{character: '~', inConstruct: 'phrasing'}],\n  handlers: {delete: handleDelete}\n}\n\nhandleDelete.peek = peekDelete\n\n/** @type {FromMarkdownHandle} */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n  const tracker = track(safeOptions)\n  const exit = context.enter('emphasis')\n  let value = tracker.move('~~')\n  value += containerPhrasing(node, context, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @type {Handle}\n * @param {InlineCode} node\n */\nexport function inlineCode(node, _, context) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don’t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can’t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < context.unsafe.length) {\n    const pattern = context.unsafe[index]\n    const expression = patternCompile(pattern)\n    /** @type {RegExpExecArray|null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @type {Handle}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n","/**\n * @typedef Options\n *   Configuration (optional).\n * @property {string|null|Array<string|null|undefined>} [align]\n *   One style for all columns, or styles for their respective columns.\n *   Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n *   Other values are treated as `''`, which doesn’t place the colon in the\n *   alignment row but does align left.\n *   *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n *   Whether to add a space of padding between delimiters and cells.\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {boolean} [delimiterStart=true]\n *   Whether to begin each row with the delimiter.\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean} [delimiterEnd=true]\n *   Whether to end each row with the delimiter.\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean} [alignDelimiters=true]\n *   Whether to align the delimiters.\n *   By default, they are aligned:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {(value: string) => number} [stringLength]\n *   Function to detect the length of table cell content.\n *   This is used when aligning the delimiters (`|`) between table cells.\n *   Full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source.\n *   To fix this, you can pass this function, which receives the cell content\n *   and returns its “visible” size.\n *   Note that what is and isn’t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['中文', 'Charlie'],\n *     ['👩‍❤️‍👩', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | 中文 | Charlie |\n *   | 👩‍❤️‍👩 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['中文', 'Charlie'],\n *       ['👩‍❤️‍👩', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | 中文  | Charlie |\n *   | 👩‍❤️‍👩    | Delta   |\n *   ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n *   Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {Array<Array<string|null|undefined>>} table\n *   Table data (matrix of strings).\n * @param {Options} [options]\n *   Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n  const align = (options.align || []).concat()\n  const stringLength = options.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (options.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      options.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (options.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (options.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (options.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        options.padding !== false &&\n        // Don’t add the opening space if we’re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(options.alignDelimiters === false && cell === '') &&\n        (options.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (options.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (options.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (options.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        options.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      options.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n    ? 108 /* `l` */\n    : code === 82 /* `R` */ || code === 114 /* `r` */\n    ? 114 /* `r` */\n    : 0\n}\n","/**\n * @typedef {import('mdast').AlignType} AlignType\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n *\n * @typedef Options\n * @property {boolean} [tableCellPadding=true]\n * @property {boolean} [tablePipeAlign=true]\n * @property {MarkdownTableOptions['stringLength']} [stringLength]\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTableFromMarkdown = {\n  enter: {\n    table: enterTable,\n    tableData: enterCell,\n    tableHeader: enterCell,\n    tableRow: enterRow\n  },\n  exit: {\n    codeText: exitCodeText,\n    table: exitTable,\n    tableData: exit,\n    tableHeader: exit,\n    tableRow: exit\n  }\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterTable(token) {\n  /** @type {Array<'left'|'right'|'center'|'none'>} */\n  // @ts-expect-error: `align` is custom.\n  const align = token._align\n  this.enter(\n    {\n      type: 'table',\n      align: align.map((d) => (d === 'none' ? null : d)),\n      children: []\n    },\n    token\n  )\n  this.setData('inTable', true)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitTable(token) {\n  this.exit(token)\n  this.setData('inTable')\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/** @type {FromMarkdownHandle} */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.getData('inTable')) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      table: handleTable,\n      tableRow: handleTableRow,\n      tableCell: handleTableCell,\n      inlineCode: inlineCodeWithTable\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, context, safeOptions) {\n    return serializeData(\n      handleTableAsData(node, context, safeOptions),\n      // @ts-expect-error: fixed in `markdown-table@3.0.1`.\n      node.align\n    )\n  }\n\n  /**\n   * This function isn’t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, context, safeOptions) {\n    const row = handleTableRowAsData(node, context, safeOptions)\n    // `markdown-table` will always add an align row\n    const value = serializeData([row])\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, context, safeOptions) {\n    const exit = context.enter('tableCell')\n    const subexit = context.enter('phrasing')\n    const value = containerPhrasing(node, context, {\n      ...safeOptions,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string>} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      alignDelimiters,\n      padding,\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = context.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(\n        children[index],\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableRowAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = context.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(\n        children[index],\n        node,\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, context) {\n    let value = inlineCode(node, parent, context)\n\n    if (context.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('../util/indent-lines.js').Map} Map\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\nimport {containerFlow} from '../util/container-flow.js'\nimport {indentLines} from '../util/indent-lines.js'\nimport {track} from '../util/track.js'\n\n/**\n * @type {Handle}\n * @param {ListItem} node\n */\nexport function listItem(node, parent, context, safeOptions) {\n  const listItemIndent = checkListItemIndent(context)\n  let bullet = context.bulletCurrent || checkBullet(context)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (context.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = track(safeOptions)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = context.enter('listItem')\n  const value = indentLines(\n    containerFlow(node, context, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n","/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude<Options['listItemIndent'], undefined>}\n */\nexport function checkListItemIndent(context) {\n  const style = context.options.listItemIndent || 'tab'\n\n  // To do: remove in a major.\n  // @ts-expect-error: deprecated.\n  if (style === 1 || style === '1') {\n    return 'one'\n  }\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n","/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude<Options['bullet'], undefined>}\n */\nexport function checkBullet(context) {\n  const marker = context.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @typedef {Extract<import('mdast').Root|import('mdast').Content, import('unist').Parent>} Parent\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTaskListItemFromMarkdown = {\n  exit: {\n    taskListCheckValueChecked: exitCheck,\n    taskListCheckValueUnchecked: exitCheck,\n    paragraph: exitParagraphWithTaskListItem\n  }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmTaskListItemToMarkdown = {\n  unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n  handlers: {listItem: listItemWithTaskListItem}\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitCheck(token) {\n  const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n  // We’re always in a paragraph, in a list item.\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = /** @type {Parent} */ (this.stack[this.stack.length - 2])\n  const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n  const siblings = parent.children\n  const head = node.children[0]\n  let index = -1\n  /** @type {Paragraph|undefined} */\n  let firstParaghraph\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean' &&\n    head &&\n    head.type === 'text'\n  ) {\n    while (++index < siblings.length) {\n      const sibling = siblings[index]\n      if (sibling.type === 'paragraph') {\n        firstParaghraph = sibling\n        break\n      }\n    }\n\n    if (firstParaghraph === node) {\n      // Must start with a space or a tab.\n      head.value = head.value.slice(1)\n\n      if (head.value.length === 0) {\n        node.children.shift()\n      } else if (\n        node.position &&\n        head.position &&\n        typeof head.position.start.offset === 'number'\n      ) {\n        head.position.start.column++\n        head.position.start.offset++\n        node.position.start = Object.assign({}, head.position.start)\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = track(safeOptions)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = listItem(node, parent, context, {\n    ...safeOptions,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-gfm-table').Options} Options\n */\n\nimport {\n  gfmAutolinkLiteralFromMarkdown,\n  gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n  gfmFootnoteFromMarkdown,\n  gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n  gfmStrikethroughFromMarkdown,\n  gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n  gfmTaskListItemFromMarkdown,\n  gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * @returns {Array<FromMarkdownExtension>}\n */\nexport function gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown,\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown,\n    gfmTableFromMarkdown,\n    gfmTaskListItemFromMarkdown\n  ]\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown,\n      gfmFootnoteToMarkdown(),\n      gfmStrikethroughToMarkdown,\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown\n    ]\n  }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n  const data = this.data()\n\n  add('micromarkExtensions', gfm(options))\n  add('fromMarkdownExtensions', gfmFromMarkdown())\n  add('toMarkdownExtensions', gfmToMarkdown(options))\n\n  /**\n   * @param {string} field\n   * @param {unknown} value\n   */\n  function add(field, value) {\n    const list = /** @type {unknown[]} */ (\n      // Other extensions\n      /* c8 ignore next 2 */\n      data[field] ? data[field] : (data[field] = [])\n    )\n\n    list.push(value)\n  }\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n */\n\nvar search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @param selector A simple CSS selector.\n *   Can contain a tag-name (`foo`), classes (`.bar`), and an ID (`#baz`).\n *   Multiple classes are allowed.\n *   Uses the last ID if multiple IDs are found.\n * @param [defaultTagName='div'] Tag name to use if `selector` does not specify one.\n */\nexport const parseSelector =\n  /**\n   * @type {(\n   *  <Selector extends string, DefaultTagName extends string = 'div'>(selector?: Selector, defaultTagName?: DefaultTagName) => Element & {tagName: import('./extract.js').ExtractTagName<Selector, DefaultTagName>}\n   * )}\n   */\n  (\n    /**\n     * @param {string} [selector]\n     * @param {string} [defaultTagName='div']\n     * @returns {Element}\n     */\n    function (selector, defaultTagName = 'div') {\n      var value = selector || ''\n      /** @type {Properties} */\n      var props = {}\n      var start = 0\n      /** @type {string} */\n      var subvalue\n      /** @type {string} */\n      var previous\n      /** @type {RegExpMatchArray} */\n      var match\n\n      while (start < value.length) {\n        search.lastIndex = start\n        match = search.exec(value)\n        subvalue = value.slice(start, match ? match.index : value.length)\n\n        if (subvalue) {\n          if (!previous) {\n            defaultTagName = subvalue\n          } else if (previous === '#') {\n            props.id = subvalue\n          } else if (Array.isArray(props.className)) {\n            props.className.push(subvalue)\n          } else {\n            props.className = [subvalue]\n          }\n\n          start += subvalue.length\n        }\n\n        if (match) {\n          previous = match[0]\n          start++\n        }\n      }\n\n      return {\n        type: 'element',\n        tagName: defaultTagName,\n        properties: props,\n        children: []\n      }\n    }\n  )\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {Root['children'][number]} Child\n * @typedef {Child|Root} Node\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n *\n * @typedef {Root|Element} HResult\n * @typedef {string|number} HStyleValue\n * @typedef {Record<string, HStyleValue>} HStyle\n * @typedef {string|number|boolean|null|undefined} HPrimitiveValue\n * @typedef {Array<string|number>} HArrayValue\n * @typedef {HPrimitiveValue|HArrayValue} HPropertyValue\n * @typedef {{[property: string]: HPropertyValue|HStyle}} HProperties\n *   Acceptable properties value.\n *\n * @typedef {string|number|null|undefined} HPrimitiveChild\n * @typedef {Array<Node|HPrimitiveChild>} HArrayChild\n * @typedef {Node|HPrimitiveChild|HArrayChild} HChild\n *   Acceptable child value\n */\n\nimport {find, normalize} from 'property-information'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {parse as spaces} from 'space-separated-tokens'\nimport {parse as commas} from 'comma-separated-tokens'\n\nconst buttonTypes = new Set(['menu', 'submit', 'reset', 'button'])\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Schema} schema\n * @param {string} defaultTagName\n * @param {Array<string>} [caseSensitive]\n */\nexport function core(schema, defaultTagName, caseSensitive) {\n  const adjust = caseSensitive && createAdjustMap(caseSensitive)\n\n  const h =\n    /**\n     * @type {{\n     *   (): Root\n     *   (selector: null|undefined, ...children: Array<HChild>): Root\n     *   (selector: string, properties?: HProperties, ...children: Array<HChild>): Element\n     *   (selector: string, ...children: Array<HChild>): Element\n     * }}\n     */\n    (\n      /**\n       * Hyperscript compatible DSL for creating virtual hast trees.\n       *\n       * @param {string|null} [selector]\n       * @param {HProperties|HChild} [properties]\n       * @param {Array<HChild>} children\n       * @returns {HResult}\n       */\n      function (selector, properties, ...children) {\n        let index = -1\n        /** @type {HResult} */\n        let node\n\n        if (selector === undefined || selector === null) {\n          node = {type: 'root', children: []}\n          // @ts-expect-error Properties are not supported for roots.\n          children.unshift(properties)\n        } else {\n          node = parseSelector(selector, defaultTagName)\n          // Normalize the name.\n          node.tagName = node.tagName.toLowerCase()\n          if (adjust && own.call(adjust, node.tagName)) {\n            node.tagName = adjust[node.tagName]\n          }\n\n          // Handle props.\n          if (isProperties(properties, node.tagName)) {\n            /** @type {string} */\n            let key\n\n            for (key in properties) {\n              if (own.call(properties, key)) {\n                // @ts-expect-error `node.properties` is set.\n                addProperty(schema, node.properties, key, properties[key])\n              }\n            }\n          } else {\n            children.unshift(properties)\n          }\n        }\n\n        // Handle children.\n        while (++index < children.length) {\n          addChild(node.children, children[index])\n        }\n\n        if (node.type === 'element' && node.tagName === 'template') {\n          node.content = {type: 'root', children: node.children}\n          node.children = []\n        }\n\n        return node\n      }\n    )\n\n  return h\n}\n\n/**\n * @param {HProperties|HChild} value\n * @param {string} name\n * @returns {value is HProperties}\n */\nfunction isProperties(value, name) {\n  if (\n    value === null ||\n    value === undefined ||\n    typeof value !== 'object' ||\n    Array.isArray(value)\n  ) {\n    return false\n  }\n\n  if (name === 'input' || !value.type || typeof value.type !== 'string') {\n    return true\n  }\n\n  if ('children' in value && Array.isArray(value.children)) {\n    return false\n  }\n\n  if (name === 'button') {\n    return buttonTypes.has(value.type.toLowerCase())\n  }\n\n  return !('value' in value)\n}\n\n/**\n * @param {Schema} schema\n * @param {Properties} properties\n * @param {string} key\n * @param {HStyle|HPropertyValue} value\n * @returns {void}\n */\nfunction addProperty(schema, properties, key, value) {\n  const info = find(schema, key)\n  let index = -1\n  /** @type {HPropertyValue} */\n  let result\n\n  // Ignore nullish and NaN values.\n  if (value === undefined || value === null) return\n\n  if (typeof value === 'number') {\n    // Ignore NaN.\n    if (Number.isNaN(value)) return\n\n    result = value\n  }\n  // Booleans.\n  else if (typeof value === 'boolean') {\n    result = value\n  }\n  // Handle list values.\n  else if (typeof value === 'string') {\n    if (info.spaceSeparated) {\n      result = spaces(value)\n    } else if (info.commaSeparated) {\n      result = commas(value)\n    } else if (info.commaOrSpaceSeparated) {\n      result = spaces(commas(value).join(' '))\n    } else {\n      result = parsePrimitive(info, info.property, value)\n    }\n  } else if (Array.isArray(value)) {\n    result = value.concat()\n  } else {\n    result = info.property === 'style' ? style(value) : String(value)\n  }\n\n  if (Array.isArray(result)) {\n    /** @type {Array<string|number>} */\n    const finalResult = []\n\n    while (++index < result.length) {\n      // @ts-expect-error Assume no booleans in array.\n      finalResult[index] = parsePrimitive(info, info.property, result[index])\n    }\n\n    result = finalResult\n  }\n\n  // Class names (which can be added both on the `selector` and here).\n  if (info.property === 'className' && Array.isArray(properties.className)) {\n    // @ts-expect-error Assume no booleans in `className`.\n    result = properties.className.concat(result)\n  }\n\n  properties[info.property] = result\n}\n\n/**\n * @param {Array<Child>} nodes\n * @param {HChild} value\n * @returns {void}\n */\nfunction addChild(nodes, value) {\n  let index = -1\n\n  if (value === undefined || value === null) {\n    // Empty.\n  } else if (typeof value === 'string' || typeof value === 'number') {\n    nodes.push({type: 'text', value: String(value)})\n  } else if (Array.isArray(value)) {\n    while (++index < value.length) {\n      addChild(nodes, value[index])\n    }\n  } else if (typeof value === 'object' && 'type' in value) {\n    if (value.type === 'root') {\n      addChild(nodes, value.children)\n    } else {\n      nodes.push(value)\n    }\n  } else {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * @param {string} name\n * @param {HPrimitiveValue} value\n * @returns {HPrimitiveValue}\n */\nfunction parsePrimitive(info, name, value) {\n  if (typeof value === 'string') {\n    if (info.number && value && !Number.isNaN(Number(value))) {\n      return Number(value)\n    }\n\n    if (\n      (info.boolean || info.overloadedBoolean) &&\n      (value === '' || normalize(value) === normalize(name))\n    ) {\n      return true\n    }\n  }\n\n  return value\n}\n\n/**\n * @param {HStyle} value\n * @returns {string}\n */\nfunction style(value) {\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (own.call(value, key)) {\n      result.push([key, value[key]].join(': '))\n    }\n  }\n\n  return result.join('; ')\n}\n\n/**\n * @param {Array<string>} values\n * @returns {Record<string, string>}\n */\nfunction createAdjustMap(values) {\n  /** @type {Record<string, string>} */\n  const result = {}\n  let index = -1\n\n  while (++index < values.length) {\n    result[values[index].toLowerCase()] = values[index]\n  }\n\n  return result\n}\n","export const svgCaseSensitiveTagNames = [\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'glyphRef',\n  'linearGradient',\n  'radialGradient',\n  'solidColor',\n  'textArea',\n  'textPath'\n]\n","/**\n * @typedef {import('./core.js').HChild} Child\n * @typedef {import('./core.js').HProperties} Properties\n *\n * @typedef {import('./jsx-classic').Element} s.JSX.Element\n * @typedef {import('./jsx-classic').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic').IntrinsicElements} s.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n */\n\nimport {svg} from 'property-information'\nimport {core} from './core.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\nexport const s = core(svg, 'g', svgCaseSensitiveTagNames)\n","/**\n * @typedef {import('./core.js').HChild} Child Acceptable child value\n * @typedef {import('./core.js').HProperties} Properties Acceptable properties value.\n *\n * @typedef {import('./jsx-classic').Element} h.JSX.Element\n * @typedef {import('./jsx-classic').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic').IntrinsicElements} h.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n */\n\nimport {html} from 'property-information'\nimport {core} from './core.js'\n\nexport const h = core(html, 'div')\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n  html: 'http://www.w3.org/1999/xhtml',\n  mathml: 'http://www.w3.org/1998/Math/MathML',\n  svg: 'http://www.w3.org/2000/svg',\n  xlink: 'http://www.w3.org/1999/xlink',\n  xml: 'http://www.w3.org/XML/1998/namespace',\n  xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {Parent['children'][number]} Child\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {Child|Root} Node\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentType} P5Doctype\n * @typedef {import('parse5').CommentNode} P5Comment\n * @typedef {import('parse5').TextNode} P5Text\n * @typedef {import('parse5').Element} P5Element\n * @typedef {import('parse5').ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Location} P5Location\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {import('parse5').Node} P5Node\n *\n * @typedef {'html'|'svg'} Space\n *\n * @callback Handler\n * @param {Context} ctx\n * @param {P5Node} node\n * @param {Array.<Child>} [children]\n * @returns {Node}\n *\n * @typedef Options\n * @property {Space} [space='html'] Whether the root of the tree is in the `'html'` or `'svg'` space. If an element in with the SVG namespace is found in `ast`, `fromParse5` automatically switches to the SVG space when entering the element, and switches back when leaving\n * @property {VFile} [file] `VFile`, used to add positional information to nodes. If given, the file should have the original HTML source as its contents\n * @property {boolean} [verbose=false] Whether to add extra positional information about starting tags, closing tags, and attributes to elements. Note: not used without `file`\n *\n * @typedef Context\n * @property {Schema} schema\n * @property {VFile|undefined} file\n * @property {boolean|undefined} verbose\n * @property {boolean} location\n */\n\nimport {h, s} from 'hastscript'\nimport {html, svg, find} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n\n// Handlers.\nconst map = {\n  '#document': root,\n  '#document-fragment': root,\n  '#text': text,\n  '#comment': comment,\n  '#documentType': doctype\n}\n\n/**\n * Transform Parse5’s AST to a hast tree.\n *\n * @param {P5Node} ast\n * @param {Options|VFile} [options]\n */\nexport function fromParse5(ast, options = {}) {\n  /** @type {Options} */\n  let settings\n  /** @type {VFile|undefined} */\n  let file\n\n  if (isFile(options)) {\n    file = options\n    settings = {}\n  } else {\n    file = options.file\n    settings = options\n  }\n\n  return transform(\n    {\n      schema: settings.space === 'svg' ? svg : html,\n      file,\n      verbose: settings.verbose,\n      location: false\n    },\n    ast\n  )\n}\n\n/**\n * Transform children.\n *\n * @param {Context} ctx\n * @param {P5Node} ast\n * @returns {Node}\n */\nfunction transform(ctx, ast) {\n  const schema = ctx.schema\n  /** @type {Handler} */\n  // @ts-expect-error: index is fine.\n  const fn = own.call(map, ast.nodeName) ? map[ast.nodeName] : element\n  /** @type {Array.<Child>|undefined} */\n  let children\n\n  // Element.\n  if ('tagName' in ast) {\n    ctx.schema = ast.namespaceURI === webNamespaces.svg ? svg : html\n  }\n\n  if ('childNodes' in ast) {\n    children = nodes(ctx, ast.childNodes)\n  }\n\n  const result = fn(ctx, ast, children)\n\n  if ('sourceCodeLocation' in ast && ast.sourceCodeLocation && ctx.file) {\n    // @ts-expect-error It’s fine.\n    const position = createLocation(ctx, result, ast.sourceCodeLocation)\n\n    if (position) {\n      ctx.location = true\n      result.position = position\n    }\n  }\n\n  ctx.schema = schema\n\n  return result\n}\n\n/**\n * Transform children.\n *\n * @param {Context} ctx\n * @param {Array.<P5Node>} children\n * @returns {Array.<Child>}\n */\nfunction nodes(ctx, children) {\n  let index = -1\n  /** @type {Array.<Child>} */\n  const result = []\n\n  while (++index < children.length) {\n    // @ts-expect-error Assume no roots in children.\n    result[index] = transform(ctx, children[index])\n  }\n\n  return result\n}\n\n/**\n * Transform a document.\n * Stores `ast.quirksMode` in `node.data.quirksMode`.\n *\n * @type {Handler}\n * @param {P5Document} ast\n * @param {Array.<Child>} children\n * @returns {Root}\n */\nfunction root(ctx, ast, children) {\n  /** @type {Root} */\n  const result = {\n    type: 'root',\n    children,\n    data: {quirksMode: ast.mode === 'quirks' || ast.mode === 'limited-quirks'}\n  }\n\n  if (ctx.file && ctx.location) {\n    const doc = String(ctx.file)\n    const loc = location(doc)\n    result.position = {\n      start: loc.toPoint(0),\n      end: loc.toPoint(doc.length)\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform a doctype.\n *\n * @type {Handler}\n * @returns {Doctype}\n */\nfunction doctype() {\n  // @ts-expect-error Types are out of date.\n  return {type: 'doctype'}\n}\n\n/**\n * Transform a text.\n *\n * @type {Handler}\n * @param {P5Text} ast\n * @returns {Text}\n */\nfunction text(_, ast) {\n  return {type: 'text', value: ast.value}\n}\n\n/**\n * Transform a comment.\n *\n * @type {Handler}\n * @param {P5Comment} ast\n * @returns {Comment}\n */\nfunction comment(_, ast) {\n  return {type: 'comment', value: ast.data}\n}\n\n/**\n * Transform an element.\n *\n * @type {Handler}\n * @param {P5Element} ast\n * @param {Array.<ElementChild>} children\n * @returns {Element}\n */\nfunction element(ctx, ast, children) {\n  const fn = ctx.schema.space === 'svg' ? s : h\n  let index = -1\n  /** @type {Object.<string, string>} */\n  const props = {}\n\n  while (++index < ast.attrs.length) {\n    const attribute = ast.attrs[index]\n    props[(attribute.prefix ? attribute.prefix + ':' : '') + attribute.name] =\n      attribute.value\n  }\n\n  const result = fn(ast.tagName, props, children)\n\n  if (result.tagName === 'template' && 'content' in ast) {\n    const pos = ast.sourceCodeLocation\n    const startTag = pos && pos.startTag && position(pos.startTag)\n    const endTag = pos && pos.endTag && position(pos.endTag)\n\n    /** @type {Root} */\n    // @ts-expect-error Types are wrong.\n    const content = transform(ctx, ast.content)\n\n    if (startTag && endTag && ctx.file) {\n      content.position = {start: startTag.end, end: endTag.start}\n    }\n\n    result.content = content\n  }\n\n  return result\n}\n\n/**\n * Create clean positional information.\n *\n * @param {Context} ctx\n * @param {Node} node\n * @param {P5ElementLocation} location\n * @returns {Position|null}\n */\nfunction createLocation(ctx, node, location) {\n  const result = position(location)\n\n  if (node.type === 'element') {\n    const tail = node.children[node.children.length - 1]\n\n    // Bug for unclosed with children.\n    // See: <https://github.com/inikulin/parse5/issues/109>.\n    if (\n      result &&\n      !location.endTag &&\n      tail &&\n      tail.position &&\n      tail.position.end\n    ) {\n      result.end = Object.assign({}, tail.position.end)\n    }\n\n    if (ctx.verbose) {\n      /** @type {Object.<string, Position|null>} */\n      const props = {}\n      /** @type {string} */\n      let key\n\n      for (key in location.attrs) {\n        if (own.call(location.attrs, key)) {\n          props[find(ctx.schema, key).property] = position(location.attrs[key])\n        }\n      }\n\n      node.data = {\n        position: {\n          opening: position(location.startTag),\n          closing: location.endTag ? position(location.endTag) : null,\n          properties: props\n        }\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * @param {P5Location} loc\n * @returns {Position|null}\n */\nfunction position(loc) {\n  const start = point({\n    line: loc.startLine,\n    column: loc.startCol,\n    offset: loc.startOffset\n  })\n  const end = point({\n    line: loc.endLine,\n    column: loc.endCol,\n    offset: loc.endOffset\n  })\n  // @ts-expect-error `null` is fine.\n  return start || end ? {start, end} : null\n}\n\n/**\n * @param {Point} point\n * @returns {Point|null}\n */\nfunction point(point) {\n  return point.line && point.column ? point : null\n}\n\n/**\n * @param {VFile|Options} value\n * @returns {value is VFile}\n */\nfunction isFile(value) {\n  return 'messages' in value\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {Pick<Point, 'line'|'column'>} PositionalPoint\n * @typedef {Required<Point>} FullPoint\n * @typedef {NonNullable<Point['offset']>} Offset\n */\n\n/**\n * Get transform functions for the given `document`.\n *\n * @param {string|Uint8Array|VFile} file\n */\nexport function location(file) {\n  var value = String(file)\n  /** @type {Array.<number>} */\n  var indices = []\n  var search = /\\r?\\n|\\r/g\n\n  while (search.test(value)) {\n    indices.push(search.lastIndex)\n  }\n\n  indices.push(value.length + 1)\n\n  return {toPoint, toOffset}\n\n  /**\n   * Get the line and column-based `point` for `offset` in the bound indices.\n   * Returns a point with `undefined` values when given invalid or out of bounds\n   * input.\n   *\n   * @param {Offset} offset\n   * @returns {FullPoint}\n   */\n  function toPoint(offset) {\n    var index = -1\n\n    if (offset > -1 && offset < indices[indices.length - 1]) {\n      while (++index < indices.length) {\n        if (indices[index] > offset) {\n          return {\n            line: index + 1,\n            column: offset - (indices[index - 1] || 0) + 1,\n            offset\n          }\n        }\n      }\n    }\n\n    return {line: undefined, column: undefined, offset: undefined}\n  }\n\n  /**\n   * Get the `offset` for a line and column-based `point` in the bound indices.\n   * Returns `-1` when given invalid or out of bounds input.\n   *\n   * @param {PositionalPoint} point\n   * @returns {Offset}\n   */\n  function toOffset(point) {\n    var line = point && point.line\n    var column = point && point.column\n    /** @type {number} */\n    var offset\n\n    if (\n      typeof line === 'number' &&\n      typeof column === 'number' &&\n      !Number.isNaN(line) &&\n      !Number.isNaN(column) &&\n      line - 1 in indices\n    ) {\n      offset = (indices[line - 2] || 0) + column - 1 || 0\n    }\n\n    return offset > -1 && offset < indices[indices.length - 1] ? offset : -1\n  }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('unist-util-is').AssertPredicate<Element>} AssertElement\n * @typedef {import('unist-util-is').AssertPredicate<Text>} AssertText\n * @typedef {import('unist-util-is').AssertPredicate<Root>} AssertRoot\n *\n * @callback CreateElementLike\n * @param {string} name\n * @param {any} attributes\n * @param {Array.<string|any>} [children]\n * @returns {any}\n *\n * @typedef Context\n * @property {html|svg} schema\n * @property {string|null} prefix\n * @property {number} key\n * @property {boolean} react\n * @property {boolean} vue\n * @property {boolean} vdom\n * @property {boolean} hyperscript\n *\n * @typedef Options\n * @property {string|null} [prefix]\n * @property {'html'|'svg'} [space]\n */\n\nimport {html, svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\nimport {webNamespaces} from 'web-namespaces'\nimport {convert} from 'unist-util-is'\n\nconst ns = /** @type {Record<string, string>} */ (webNamespaces)\nconst toReact = /** @type {Record<string, string>} */ (hastToReact)\n\nconst own = {}.hasOwnProperty\n\n/** @type {AssertRoot} */\n// @ts-expect-error it’s correct.\nconst root = convert('root')\n/** @type {AssertElement} */\n// @ts-expect-error it’s correct.\nconst element = convert('element')\n/** @type {AssertText} */\n// @ts-expect-error it’s correct.\nconst text = convert('text')\n\n/**\n * @template {CreateElementLike} H\n * @param {H} h\n * @param {Element|Root} tree\n * @param {string|boolean|Options} [options]\n * @returns {ReturnType<H>}\n */\nexport function toH(h, tree, options) {\n  if (typeof h !== 'function') {\n    throw new TypeError('h is not a function')\n  }\n\n  const r = react(h)\n  const v = vue(h)\n  const vd = vdom(h)\n  /** @type {string|boolean|null|undefined} */\n  let prefix\n  /** @type {Element} */\n  let node\n\n  if (typeof options === 'string' || typeof options === 'boolean') {\n    prefix = options\n    options = {}\n  } else {\n    if (!options) options = {}\n    prefix = options.prefix\n  }\n\n  if (root(tree)) {\n    // @ts-expect-error Allow `doctypes` in there, we’ll filter them out later.\n    node =\n      tree.children.length === 1 && element(tree.children[0])\n        ? tree.children[0]\n        : {\n            type: 'element',\n            tagName: 'div',\n            properties: {},\n            children: tree.children\n          }\n  } else if (element(tree)) {\n    node = tree\n  } else {\n    throw new Error(\n      // @ts-expect-error runtime.\n      'Expected root or element, not `' + ((tree && tree.type) || tree) + '`'\n    )\n  }\n\n  return transform(h, node, {\n    schema: options.space === 'svg' ? svg : html,\n    prefix:\n      prefix === undefined || prefix === null\n        ? r || v || vd\n          ? 'h-'\n          : null\n        : typeof prefix === 'string'\n        ? prefix\n        : prefix\n        ? 'h-'\n        : null,\n    key: 0,\n    react: r,\n    vue: v,\n    vdom: vd,\n    hyperscript: hyperscript(h)\n  })\n}\n\n/**\n * Transform a hast node through a hyperscript interface to *anything*!\n *\n * @template {CreateElementLike} H\n * @param {H} h\n * @param {Element} node\n * @param {Context} ctx\n */\nfunction transform(h, node, ctx) {\n  const parentSchema = ctx.schema\n  let schema = parentSchema\n  let name = node.tagName\n  /** @type {Record<string, unknown>} */\n  const attributes = {}\n  /** @type {Array.<ReturnType<H>|string>} */\n  const nodes = []\n  let index = -1\n  /** @type {string} */\n  let key\n\n  if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n    schema = svg\n    ctx.schema = schema\n  }\n\n  for (key in node.properties) {\n    if (node.properties && own.call(node.properties, key)) {\n      addAttribute(attributes, key, node.properties[key], ctx, name)\n    }\n  }\n\n  if (ctx.vdom) {\n    if (schema.space === 'html') {\n      name = name.toUpperCase()\n    } else if (schema.space) {\n      attributes.namespace = ns[schema.space]\n    }\n  }\n\n  if (ctx.prefix) {\n    ctx.key++\n    attributes.key = ctx.prefix + ctx.key\n  }\n\n  if (node.children) {\n    while (++index < node.children.length) {\n      const value = node.children[index]\n\n      if (element(value)) {\n        nodes.push(transform(h, value, ctx))\n      } else if (text(value)) {\n        nodes.push(value.value)\n      }\n    }\n  }\n\n  // Restore parent schema.\n  ctx.schema = parentSchema\n\n  // Ensure no React warnings are triggered for void elements having children\n  // passed in.\n  return nodes.length > 0\n    ? h.call(node, name, attributes, nodes)\n    : h.call(node, name, attributes)\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n * @param {string} name\n */\n// eslint-disable-next-line complexity, max-params\nfunction addAttribute(props, prop, value, ctx, name) {\n  const info = find(ctx.schema, prop)\n  /** @type {string|undefined} */\n  let subprop\n\n  // Ignore nullish and `NaN` values.\n  // Ignore `false` and falsey known booleans for hyperlike DSLs.\n  if (\n    value === undefined ||\n    value === null ||\n    (typeof value === 'number' && Number.isNaN(value)) ||\n    (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n    (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  // Treat `true` and truthy known booleans.\n  if (info.boolean && ctx.hyperscript) {\n    value = ''\n  }\n\n  // VDOM, Vue, and React accept `style` as object.\n  if (\n    info.property === 'style' &&\n    typeof value === 'string' &&\n    (ctx.react || ctx.vue || ctx.vdom)\n  ) {\n    value = parseStyle(value, name)\n  }\n\n  if (ctx.vue) {\n    if (info.property !== 'style') subprop = 'attrs'\n  } else if (!info.mustUseProperty) {\n    if (ctx.vdom) {\n      if (info.property !== 'style') subprop = 'attributes'\n    } else if (ctx.hyperscript) {\n      subprop = 'attrs'\n    }\n  }\n\n  if (subprop) {\n    props[subprop] = Object.assign(props[subprop] || {}, {\n      [info.attribute]: value\n    })\n  } else if (info.space && ctx.react) {\n    props[toReact[info.property] || info.property] = value\n  } else {\n    props[info.attribute] = value\n  }\n}\n\n/**\n * Check if `h` is `react.createElement`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction react(h) {\n  /** @type {unknown} */\n  const node = h('div', {})\n  return Boolean(\n    node &&\n      // @ts-expect-error Looks like a React node.\n      ('_owner' in node || '_store' in node) &&\n      // @ts-expect-error Looks like a React node.\n      (node.key === undefined || node.key === null)\n  )\n}\n\n/**\n * Check if `h` is `hyperscript`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction hyperscript(h) {\n  return 'context' in h && 'cleanup' in h\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction vdom(h) {\n  /** @type {unknown} */\n  const node = h('div', {})\n  // @ts-expect-error Looks like a vnode.\n  return node.type === 'VirtualNode'\n}\n\n/**\n * Check if `h` is Vue.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction vue(h) {\n  /** @type {unknown} */\n  const node = h('div', {})\n  // @ts-expect-error Looks like a Vue node.\n  return Boolean(node && node.context && node.context._isVue)\n}\n\n/**\n * @param {string} value\n * @param {string} tagName\n * @returns {Record<string, string>}\n */\nfunction parseStyle(value, tagName) {\n  /** @type {Record<string, string>} */\n  const result = {}\n\n  try {\n    style(value, (name, value) => {\n      if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n\n      result[\n        name.replace(\n          /-([a-z])/g,\n          /**\n           * @param {string} _\n           * @param {string} $1\n           * @returns {string}\n           */ (_, $1) => $1.toUpperCase()\n        )\n      ] = value\n    })\n  } catch (error) {\n    error.message =\n      tagName + '[style]' + error.message.slice('undefined'.length)\n    throw error\n  }\n\n  return result\n}\n","var own = {}.hasOwnProperty\n\n/**\n * @callback Handler\n * @param {...unknown} value\n * @return {unknown}\n *\n * @typedef {Record<string, Handler>} Handlers\n *\n * @typedef {Object} Options\n * @property {Handler} [unknown]\n * @property {Handler} [invalid]\n * @property {Handlers} [handlers]\n */\n\n/**\n * Handle values based on a property.\n *\n * @param {string} key\n * @param {Options} [options]\n */\nexport function zwitch(key, options) {\n  var settings = options || {}\n\n  /**\n   * Handle one value.\n   * Based on the bound `key`, a respective handler will be called.\n   * If `value` is not an object, or doesn’t have a `key` property, the special\n   * “invalid” handler will be called.\n   * If `value` has an unknown `key`, the special “unknown” handler will be\n   * called.\n   *\n   * All arguments, and the context object, are passed through to the handler,\n   * and it’s result is returned.\n   *\n   * @param {...unknown} [value]\n   * @this {unknown}\n   * @returns {unknown}\n   * @property {Handler} invalid\n   * @property {Handler} unknown\n   * @property {Handlers} handlers\n   */\n  function one(value) {\n    var fn = one.invalid\n    var handlers = one.handlers\n\n    if (value && own.call(value, key)) {\n      fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n    }\n\n    if (fn) {\n      return fn.apply(this, arguments)\n    }\n  }\n\n  one.handlers = settings.handlers || {}\n  one.invalid = settings.invalid\n  one.unknown = settings.unknown\n\n  return one\n}\n","/**\n * @typedef {import('parse5').Node} P5Node\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {import('parse5').DocumentType} P5Doctype\n * @typedef {import('parse5').CommentNode} P5Comment\n * @typedef {import('parse5').TextNode} P5Text\n * @typedef {import('parse5').Element} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {import('parse5').ParentNode} P5Parent\n * @typedef {Exclude<P5Node, P5Document|P5Fragment>} P5Child\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('property-information').Info} Info\n * @typedef {'html'|'svg'} Space\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {Parent['children'][number]} Child\n * @typedef {Child|Root} Node\n *\n * @callback Handle\n * @param {Node} node\n * @param {Schema} schema\n * @returns {P5Node}\n */\n\nimport {html, svg, find} from 'property-information'\nimport {toH} from 'hast-to-hyperscript'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nvar own = {}.hasOwnProperty\n\nvar one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a tree from hast to Parse5’s AST.\n *\n * @param {Node} tree\n * @param {Space} [space='html']\n * @returns {P5Node}\n */\nexport function toParse5(tree, space) {\n  // @ts-ignore Types are wrong.\n  return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @type {Handle}\n * @param {Root} node\n * @returns {P5Document}\n */\nfunction root(node, schema) {\n  /** @type {P5Document} */\n  var p5 = {\n    nodeName: '#document',\n    mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n    childNodes: []\n  }\n  // @ts-ignore Assume correct children.\n  p5.childNodes = all(node.children, p5, schema)\n  return patch(node, p5)\n}\n\n/**\n * @type {Handle}\n * @param {Root} node\n * @returns {P5Fragment}\n */\nfunction fragment(node, schema) {\n  /** @type {P5Fragment} */\n  var p5 = {nodeName: '#document-fragment', childNodes: []}\n  // @ts-ignore Assume correct children.\n  p5.childNodes = all(node.children, p5, schema)\n  return patch(node, p5)\n}\n\n/**\n * @type {Handle}\n * @param {Doctype} node\n * @returns {P5Doctype}\n */\nfunction doctype(node) {\n  return patch(node, {\n    nodeName: '#documentType',\n    name: 'html',\n    publicId: '',\n    systemId: '',\n    parentNode: undefined\n  })\n}\n\n/**\n * @type {Handle}\n * @param {Text} node\n * @returns {P5Text}\n */\nfunction text(node) {\n  return patch(node, {\n    nodeName: '#text',\n    value: node.value,\n    parentNode: undefined\n  })\n}\n\n/**\n * @type {Handle}\n * @param {Comment} node\n * @returns {P5Comment}\n */\nfunction comment(node) {\n  return patch(node, {\n    nodeName: '#comment',\n    data: node.value,\n    parentNode: undefined\n  })\n}\n\n/**\n * @type {Handle}\n * @param {Element} node\n * @returns {P5Element}\n */\nfunction element(node, schema) {\n  /** @type {Space} */\n  // @ts-ignore Assume space.\n  var space = schema.space\n  return toH(h, Object.assign({}, node, {children: []}), {space})\n\n  /**\n   * @param {string} name\n   * @param {Object.<string, string|boolean|number>} attrs\n   */\n  function h(name, attrs) {\n    /** @type {Array.<P5Attribute>} */\n    var values = []\n    /** @type {Info} */\n    var info\n    /** @type {P5Attribute} */\n    var value\n    /** @type {string} */\n    var key\n    /** @type {number} */\n    var index\n    /** @type {P5Element} */\n    var p5\n\n    for (key in attrs) {\n      if (!own.call(attrs, key) || attrs[key] === false) {\n        continue\n      }\n\n      info = find(schema, key)\n\n      if (info.boolean && !attrs[key]) {\n        continue\n      }\n\n      value = {name: key, value: attrs[key] === true ? '' : String(attrs[key])}\n\n      if (info.space && info.space !== 'html' && info.space !== 'svg') {\n        index = key.indexOf(':')\n\n        if (index < 0) {\n          value.prefix = ''\n        } else {\n          value.name = key.slice(index + 1)\n          value.prefix = key.slice(0, index)\n        }\n\n        value.namespace = webNamespaces[info.space]\n      }\n\n      values.push(value)\n    }\n\n    if (schema.space === 'html' && node.tagName === 'svg') schema = svg\n\n    p5 = patch(node, {\n      nodeName: name,\n      tagName: name,\n      attrs: values,\n      namespaceURI: webNamespaces[schema.space],\n      childNodes: [],\n      parentNode: undefined\n    })\n\n    // @ts-ignore Assume correct children.\n    p5.childNodes = all(node.children, p5, schema)\n\n    // @ts-ignore Types are wrong.\n    if (name === 'template') p5.content = fragment(node.content, schema)\n\n    return p5\n  }\n}\n\n/**\n * @param {Array.<Child>} children\n * @param {P5Parent} p5\n * @param {Schema} schema\n * @returns {Array.<P5Child>}\n */\nfunction all(children, p5, schema) {\n  var index = -1\n  /** @type {Array.<P5Child>} */\n  var result = []\n  /** @type {P5Child} */\n  var child\n\n  if (children) {\n    while (++index < children.length) {\n      // @ts-ignore Assume child.\n      child = one(children[index], schema)\n\n      // @ts-ignore types are wrong.\n      child.parentNode = p5\n\n      result.push(child)\n    }\n  }\n\n  return result\n}\n\n/**\n * Patch specific properties.\n *\n * @template {P5Node} T\n * @param {Node} node\n * @param {T} p5\n * @returns {T}\n */\nfunction patch(node, p5) {\n  var position = node.position\n\n  if (position && position.start && position.end) {\n    // @ts-ignore Types are wrong.\n    p5.sourceCodeLocation = {\n      startLine: position.start.line,\n      startCol: position.start.column,\n      startOffset: position.start.offset,\n      endLine: position.end.line,\n      endCol: position.end.column,\n      endOffset: position.end.offset\n    }\n  }\n\n  return p5\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n  'area',\n  'base',\n  'basefont',\n  'bgsound',\n  'br',\n  'col',\n  'command',\n  'embed',\n  'frame',\n  'hr',\n  'image',\n  'img',\n  'input',\n  'isindex',\n  'keygen',\n  'link',\n  'menuitem',\n  'meta',\n  'nextid',\n  'param',\n  'source',\n  'track',\n  'wbr'\n]\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {Omit<import('parse5').Element, 'parentNode'>} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {Omit<import('parse5').Location, 'startOffset' | 'endOffset'> & {startOffset: number|undefined, endOffset: number|undefined}} P5Location\n * @typedef {import('parse5').ParserOptions} P5ParserOptions\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {import('../complex-types').Raw} Raw\n *\n * @typedef {Omit<Comment, 'value'> & {value: {stitch: Node}}} Stitch\n *\n * @typedef Options\n * @property {Array<string>} [passThrough]\n *   List of custom hast node types to pass through (keep) in hast.\n *   If the passed through nodes have children, those children are expected to\n *   be hast and will be handled.\n *\n * @typedef HiddenTokenizer\n * @property {Array<HiddenLocationTracker>} __mixins\n *   Way too simple, but works for us.\n * @property {HiddenPreprocessor} preprocessor\n * @property {(value: string) => void} write\n * @property {() => number} _consume\n * @property {Array<HiddenToken>} tokenQueue\n * @property {string} state\n * @property {string} returnState\n * @property {number} charRefCode\n * @property {Array<number>} tempBuff\n * @property {Function} _flushCodePointsConsumedAsCharacterReference\n * @property {string} lastStartTagName\n * @property {number} consumedAfterSnapshot\n * @property {boolean} active\n * @property {HiddenToken|undefined} currentCharacterToken\n * @property {HiddenToken|undefined} currentToken\n * @property {unknown} currentAttr\n * @property {Function} NAMED_CHARACTER_REFERENCE_STATE\n * @property {Function} NUMERIC_CHARACTER_REFERENCE_END_STATE\n *\n * @typedef {Record<string, unknown> & {location: P5Location}} HiddenToken\n *\n * @typedef HiddenPreprocessor\n * @property {string|undefined} html\n * @property {number} pos\n * @property {number} lastGapPos\n * @property {number} lastCharPos\n * @property {Array<number>} gapStack\n * @property {boolean} skipNextNewLine\n * @property {boolean} lastChunkWritten\n * @property {boolean} endOfChunkHit\n *\n * @typedef HiddenLocationTracker\n * @property {P5Location|undefined} currentAttrLocation\n * @property {P5Location} ctLoc\n * @property {HiddenPosTracker} posTracker\n *\n * @typedef HiddenPosTracker\n * @property {boolean} isEol\n * @property {number} lineStartPos\n * @property {number} droppedBufferSize\n * @property {number} offset\n * @property {number} col\n * @property {number} line\n */\n\n// @ts-expect-error: untyped.\nimport Parser from 'parse5/lib/parser/index.js'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst inTemplateMode = 'IN_TEMPLATE_MODE'\nconst dataState = 'DATA_STATE'\nconst characterToken = 'CHARACTER_TOKEN'\nconst startTagToken = 'START_TAG_TOKEN'\nconst endTagToken = 'END_TAG_TOKEN'\nconst commentToken = 'COMMENT_TOKEN'\nconst doctypeToken = 'DOCTYPE_TOKEN'\n\n/** @type {P5ParserOptions} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Given a hast tree and an optional vfile (for positional info), return a new\n * parsed-again hast tree.\n *\n * @param tree\n *   Original hast tree.\n * @param file\n *   Virtual file for positional info, optional.\n * @param options\n *   Configuration.\n */\nexport const raw =\n  /**\n   * @type {(\n   *   ((tree: Node, file: VFile|undefined, options?: Options) => Node) &\n   *   ((tree: Node, options?: Options) => Node)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {VFile} [file]\n     * @param {Options} [options]\n     */\n    function (tree, file, options) {\n      let index = -1\n      const parser = new Parser(parseOptions)\n      const one = zwitch('type', {\n        // @ts-expect-error: hush.\n        handlers: {root, element, text, comment, doctype, raw: handleRaw},\n        // @ts-expect-error: hush.\n        unknown\n      })\n      /** @type {boolean|undefined} */\n      let stitches\n      /** @type {HiddenTokenizer|undefined} */\n      let tokenizer\n      /** @type {HiddenPreprocessor|undefined} */\n      let preprocessor\n      /** @type {HiddenPosTracker|undefined} */\n      let posTracker\n      /** @type {HiddenLocationTracker|undefined} */\n      let locationTracker\n\n      if (isOptions(file)) {\n        options = file\n        file = undefined\n      }\n\n      if (options && options.passThrough) {\n        while (++index < options.passThrough.length) {\n          // @ts-expect-error: hush.\n          one.handlers[options.passThrough[index]] = stitch\n        }\n      }\n\n      const result = fromParse5(\n        documentMode(tree) ? document() : fragment(),\n        file\n      )\n\n      if (stitches) {\n        visit(result, 'comment', (node, index, parent) => {\n          const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n          if (stitch.value.stitch && parent !== null && index !== null) {\n            // @ts-expect-error: assume the stitch is allowed.\n            parent.children[index] = stitch.value.stitch\n            return index\n          }\n        })\n      }\n\n      // Unpack if possible and when not given a `root`.\n      if (\n        tree.type !== 'root' &&\n        result.type === 'root' &&\n        result.children.length === 1\n      ) {\n        return result.children[0]\n      }\n\n      return result\n\n      /**\n       * @returns {P5Fragment}\n       */\n      function fragment() {\n        /** @type {P5Element} */\n        const context = {\n          nodeName: 'template',\n          tagName: 'template',\n          attrs: [],\n          namespaceURI: webNamespaces.html,\n          childNodes: []\n        }\n        /** @type {P5Element} */\n        const mock = {\n          nodeName: 'documentmock',\n          tagName: 'documentmock',\n          attrs: [],\n          namespaceURI: webNamespaces.html,\n          childNodes: []\n        }\n        /** @type {P5Fragment} */\n        const doc = {nodeName: '#document-fragment', childNodes: []}\n\n        parser._bootstrap(mock, context)\n        parser._pushTmplInsertionMode(inTemplateMode)\n        parser._initTokenizerForFragmentParsing()\n        parser._insertFakeRootElement()\n        parser._resetInsertionMode()\n        parser._findFormInFragmentContext()\n\n        tokenizer = parser.tokenizer\n        /* c8 ignore next */\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        preprocessor = tokenizer.preprocessor\n        locationTracker = tokenizer.__mixins[0]\n        posTracker = locationTracker.posTracker\n\n        one(tree)\n\n        resetTokenizer()\n\n        parser._adoptNodes(mock.childNodes[0], doc)\n\n        return doc\n      }\n\n      /**\n       * @returns {P5Document}\n       */\n      function document() {\n        /** @type {P5Document} */\n        const doc = parser.treeAdapter.createDocument()\n\n        parser._bootstrap(doc, undefined)\n        tokenizer = parser.tokenizer\n        /* c8 ignore next */\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        preprocessor = tokenizer.preprocessor\n        locationTracker = tokenizer.__mixins[0]\n        posTracker = locationTracker.posTracker\n\n        one(tree)\n\n        resetTokenizer()\n\n        return doc\n      }\n\n      /**\n       * @param {Array<Content>} nodes\n       * @returns {void}\n       */\n      function all(nodes) {\n        let index = -1\n\n        /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n        if (nodes) {\n          while (++index < nodes.length) {\n            one(nodes[index])\n          }\n        }\n      }\n\n      /**\n       * @param {Root} node\n       * @returns {void}\n       */\n      function root(node) {\n        all(node.children)\n      }\n\n      /**\n       * @param {Element} node\n       * @returns {void}\n       */\n      function element(node) {\n        resetTokenizer()\n        parser._processToken(startTag(node), webNamespaces.html)\n\n        all(node.children)\n\n        if (!htmlVoidElements.includes(node.tagName)) {\n          resetTokenizer()\n          parser._processToken(endTag(node))\n        }\n      }\n\n      /**\n       * @param {Text} node\n       * @returns {void}\n       */\n      function text(node) {\n        resetTokenizer()\n        parser._processToken({\n          type: characterToken,\n          chars: node.value,\n          location: createParse5Location(node)\n        })\n      }\n\n      /**\n       * @param {Doctype} node\n       * @returns {void}\n       */\n      function doctype(node) {\n        resetTokenizer()\n        parser._processToken({\n          type: doctypeToken,\n          name: 'html',\n          forceQuirks: false,\n          publicId: '',\n          systemId: '',\n          location: createParse5Location(node)\n        })\n      }\n\n      /**\n       * @param {Comment|Stitch} node\n       * @returns {void}\n       */\n      function comment(node) {\n        resetTokenizer()\n        parser._processToken({\n          type: commentToken,\n          data: node.value,\n          location: createParse5Location(node)\n        })\n      }\n\n      /**\n       * @param {Raw} node\n       * @returns {void}\n       */\n      function handleRaw(node) {\n        const start = pointStart(node)\n        const line = start.line || 1\n        const column = start.column || 1\n        const offset = start.offset || 0\n\n        /* c8 ignore next 4 */\n        if (!preprocessor) throw new Error('Expected `preprocessor`')\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        if (!posTracker) throw new Error('Expected `posTracker`')\n        if (!locationTracker) throw new Error('Expected `locationTracker`')\n\n        // Reset preprocessor:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/preprocessor.js#L17>.\n        preprocessor.html = undefined\n        preprocessor.pos = -1\n        preprocessor.lastGapPos = -1\n        preprocessor.lastCharPos = -1\n        preprocessor.gapStack = []\n        preprocessor.skipNextNewLine = false\n        preprocessor.lastChunkWritten = false\n        preprocessor.endOfChunkHit = false\n\n        // Reset preprocessor mixin:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/position-tracking/preprocessor-mixin.js>.\n        posTracker.isEol = false\n        posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n        posTracker.droppedBufferSize = offset\n        posTracker.offset = 0\n        posTracker.col = 1\n        posTracker.line = line\n\n        // Reset location tracker:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js>.\n        locationTracker.currentAttrLocation = undefined\n        locationTracker.ctLoc = createParse5Location(node)\n\n        // See the code for `parse` and `parseFragment`:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/parser/index.js#L371>.\n        tokenizer.write(node.value)\n        parser._runParsingLoop(null)\n\n        // Character references hang, so if we ended there, we need to flush\n        // those too.\n        // We reset the preprocessor as if the document ends here.\n        // Then one single call to the relevant state does the trick, parse5\n        // consumes the whole token.\n        if (\n          tokenizer.state === 'NAMED_CHARACTER_REFERENCE_STATE' ||\n          tokenizer.state === 'NUMERIC_CHARACTER_REFERENCE_END_STATE'\n        ) {\n          preprocessor.lastChunkWritten = true\n          tokenizer[tokenizer.state](tokenizer._consume())\n        }\n      }\n\n      /**\n       * @param {Node} node\n       */\n      function stitch(node) {\n        stitches = true\n\n        /** @type {Node} */\n        let clone\n\n        // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n        // passed through node).\n        if ('children' in node) {\n          clone = {\n            ...node,\n            children: raw(\n              {type: 'root', children: node.children},\n              file,\n              options\n              // @ts-expect-error Assume a given parent yields a parent.\n            ).children\n          }\n        } else {\n          clone = {...node}\n        }\n\n        // Hack: `value` is supposed to be a string, but as none of the tools\n        // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n        // through.\n        comment({type: 'comment', value: {stitch: clone}})\n      }\n\n      function resetTokenizer() {\n        /* c8 ignore next 2 */\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        if (!posTracker) throw new Error('Expected `posTracker`')\n\n        // Process final characters if they’re still there after hibernating.\n        // Similar to:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js#L95>.\n        const token = tokenizer.currentCharacterToken\n\n        if (token) {\n          token.location.endLine = posTracker.line\n          token.location.endCol = posTracker.col + 1\n          token.location.endOffset = posTracker.offset + 1\n          parser._processToken(token)\n        }\n\n        // Reset tokenizer:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/index.js#L218-L234>.\n        // Especially putting it back in the `data` state is useful: some elements,\n        // like textareas and iframes, change the state.\n        // See GH-7.\n        // But also if broken HTML is in `raw`, and then a correct element is given.\n        // See GH-11.\n        tokenizer.tokenQueue = []\n        tokenizer.state = dataState\n        tokenizer.returnState = ''\n        tokenizer.charRefCode = -1\n        tokenizer.tempBuff = []\n        tokenizer.lastStartTagName = ''\n        tokenizer.consumedAfterSnapshot = -1\n        tokenizer.active = false\n        tokenizer.currentCharacterToken = undefined\n        tokenizer.currentToken = undefined\n        tokenizer.currentAttr = undefined\n      }\n    }\n  )\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction startTag(node) {\n  /** @type {P5Location} */\n  const location = Object.assign(createParse5Location(node))\n  // @ts-expect-error extra positional info.\n  location.startTag = Object.assign({}, location)\n\n  // Untyped token.\n  return {\n    type: startTagToken,\n    tagName: node.tagName,\n    selfClosing: false,\n    attrs: attributes(node),\n    location\n  }\n}\n\n/**\n * @param {Element} node\n * @returns {Array<P5Attribute>}\n */\nfunction attributes(node) {\n  return toParse5({\n    tagName: node.tagName,\n    type: 'element',\n    properties: node.properties,\n    children: []\n    // @ts-expect-error Assume element.\n  }).attrs\n}\n\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction endTag(node) {\n  /** @type {P5Location} */\n  const location = Object.assign(createParse5Location(node))\n  // @ts-expect-error extra positional info.\n  location.startTag = Object.assign({}, location)\n\n  // Untyped token.\n  return {\n    type: endTagToken,\n    tagName: node.tagName,\n    attrs: [],\n    location\n  }\n}\n\n/**\n * @param {Node} node\n */\nfunction unknown(node) {\n  throw new Error('Cannot compile `' + node.type + '` node')\n}\n\n/**\n * @param {Node} node\n * @returns {boolean}\n */\nfunction documentMode(node) {\n  const head = node.type === 'root' ? node.children[0] : node\n  return Boolean(\n    head &&\n      (head.type === 'doctype' ||\n        (head.type === 'element' && head.tagName === 'html'))\n  )\n}\n\n/**\n * @param {Node|Stitch} node\n * @returns {P5Location}\n */\nfunction createParse5Location(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  return {\n    startLine: start.line,\n    startCol: start.column,\n    startOffset: start.offset,\n    endLine: end.line,\n    endCol: end.column,\n    endOffset: end.offset\n  }\n}\n\n/**\n * @param {VFile|Options|undefined} value\n * @return {value is Options}\n */\nfunction isOptions(value) {\n  return Boolean(value && !('message' in value && 'messages' in value))\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} Options\n * @typedef {import('hast-util-raw')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Plugin to parse the tree again (and raw nodes).\n * Keeping positional info OK.  🙌\n *\n * @type {import('unified').Plugin<[Options?] | Array<void>, Root>}\n */\nexport default function rehypeRaw(options = {}) {\n  return (tree, file) => {\n    // Assume that when a root was given, it’s also returned.\n    const result = /** @type {Root} */ (raw(tree, file, options))\n    return result\n  }\n}\n","import * as React from \"react\";\nconst SVGComponent = (props) => (\n  <svg\n    height={512}\n    style={{\n      enableBackground: \"new 0 0 512 512\",\n    }}\n    viewBox=\"0 0 512 512\"\n    width={512}\n    xmlSpace=\"preserve\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    role=\"img\"\n    {...props}\n  >\n    <path d=\"m184.7 413.1 2.1-1.8 156.5-136c5.3-4.6 8.6-11.5 8.6-19.2 0-7.7-3.4-14.6-8.6-19.2L187.1 101l-2.6-2.3C182 97 179 96 175.8 96c-8.7 0-15.8 7.4-15.8 16.6v286.8c0 9.2 7.1 16.6 15.8 16.6 3.3 0 6.4-1.1 8.9-2.9z\" />\n    <path\n      style={{\n        fill: \"#fff\",\n        strokeWidth: 0.498539,\n      }}\n      d=\"M171.101 414.868c-4.514-1.611-8.561-5.771-10.18-10.464-.834-2.42-1.217-288.516-.393-293.894.907-5.921 3.926-10.216 8.895-12.657 3.95-1.94 9.155-1.937 12.793.007 3.343 1.785 161.905 139.906 164.376 143.184 3.021 4.01 4.472 8.2 4.757 13.742.186 3.605.037 5.49-.609 7.727-1.173 4.064-3.454 8.202-5.94 10.774-1.146 1.186-37.704 33.115-81.239 70.955-55.39 48.142-79.907 69.15-81.66 69.97-3.43 1.606-7.454 1.85-10.8.656z\"\n    />\n  </svg>\n);\nexport default SVGComponent;\n","import * as React from \"react\";\nconst SVGComponent = (props) => (\n  <svg\n    height={512}\n    style={{\n      enableBackground: \"new 0 0 512 512\",\n    }}\n    viewBox=\"0 0 512 512\"\n    width={512}\n    xmlSpace=\"preserve\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    role=\"img\"\n    {...props}\n  >\n    <path d=\"m98.9 184.7 1.8 2.1 136 156.5c4.6 5.3 11.5 8.6 19.2 8.6 7.7 0 14.6-3.4 19.2-8.6L411 187.1l2.3-2.6c1.7-2.5 2.7-5.5 2.7-8.7 0-8.7-7.4-15.8-16.6-15.8H112.6c-9.2 0-16.6 7.1-16.6 15.8 0 3.3 1.1 6.4 2.9 8.9z\" />\n    <path\n      style={{\n        fill: \"#fff\",\n        strokeWidth: 0.498539,\n      }}\n      d=\"M248.273 350.336c-4.083-1.397-7.187-3.22-9.662-5.673-1.064-1.054-32.92-37.549-70.793-81.098-48.133-55.35-69.23-79.958-70.096-81.76-1.803-3.758-1.753-8.546.131-12.382 2.335-4.755 6.517-7.824 12.058-8.848 4.16-.769 288.018-.769 292.178 0 5.54 1.024 9.723 4.093 12.058 8.848 1.847 3.762 1.927 9.146.186 12.495-1.265 2.433-139.44 161.51-142.47 164.02-6.161 5.108-16.1 6.96-23.59 4.398z\"\n    />\n  </svg>\n);\nexport default SVGComponent;\n","import './App.css';\nimport { useState, useCallback } from \"react\";\nimport data from \"./data\";\nimport ReactMarkdown from 'react-markdown';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\n// Theme examples: https://react-syntax-highlighter.github.io/react-syntax-highlighter/demo/prism.html\nimport { coldarkDark } from 'react-syntax-highlighter/dist/esm/styles/prism';\nimport remarkGfm from 'remark-gfm';\nimport rehypeRaw from 'rehype-raw';\nimport RightArrow from \"./components/right_arrow\";\nimport DownArrow from \"./components/down_arrow\";\n\n// TODO: Future, have a way to bookmark to specific entries\n\n// Copy icon reference:\n// https://github.com/react-syntax-highlighter/react-syntax-highlighter/issues/132\n\nfunction debounce(fn, wait, immediate) {\n  let timeout;\n\n  return (...args) => {\n    const context = this;\n\n    const later = () => {\n      timeout = null;\n      if (!immediate) fn.apply(context, args);\n    };\n\n    const callNow = immediate && !timeout;\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n\n    if (callNow) {\n      fn.apply(context, args);\n    }\n  };\n}\n\n// const types = data.items.map(item => item.type);\n\nfunction filterData(data, filter = \"\", typeFilter = \"all\") {\n  // console.warn(\"filterData\");\n  \n  if (typeFilter === \"all\" && filter.length) return data;\n\n  const typeFilteredItems = {};\n  typeFilteredItems.items = typeFilter !== \"all\" ? data.items.filter(item => item.type === typeFilter) : data.items;\n\n  if (filter.length) return typeFilteredItems;\n\n  const filtered = {};\n  filtered.items = filter.length ? typeFilteredItems.items.filter(item => {\n    // console.warn(\"title\", filter.toLowerCase(), item.title.toLowerCase(), item.title.toLowerCase().includes(filter.toLowerCase()));\n    // console.warn(\"content\", filter.toLowerCase(), item.content.toLowerCase(), item.content.toLowerCase().includes(filter.toLowerCase()));\n    return item.title.toLowerCase().includes(filter.toLowerCase()) || item.content.toLowerCase().includes(filter.toLowerCase());\n  }) : typeFilteredItems.items;\n\n  return filtered;\n};\n\nfunction App() {\n  const [filter, setFilter] = useState(\"\");\n  const [typeFilter, setTypeFilter] = useState(\"all\");\n  const [expandedItems, setExpandedItems] = useState([]);\n  const [expandedCategories, setExpandedCategories] = useState([]);\n  // Alphabetize categories\n  // data.items.sort((fa, fb) => {\n  //   if (fa.category < fb.category) {\n  //     return -1;\n  //   }\n  //   if (fa.category > fb.category) {\n  //       return 1;\n  //   }\n  //   return 0;\n  // });\n  function handleFilter(event) {\n    // console.warn(\"handleFilter\");\n    debounce(setFilter(event.target.value), 300);\n  }\n\n  const handleExpandItem = useCallback((event) => {\n    // console.warn(\"handleExpandItem\");\n    const newExpanded = expandedItems.includes(event) ? expandedItems.filter(i => i !== event) : [...expandedItems, event];\n    setExpandedItems(newExpanded);\n  }, [expandedItems]);\n\n  const handleCategoryClick = useCallback((event) => {\n    // console.warn(\"handleCategoryClick\");\n    const newExpandedCategory = expandedCategories.includes(event) ? expandedCategories.filter(i => i !== event) : [...expandedCategories, event];\n    setExpandedCategories(newExpandedCategory);\n  }, [expandedCategories]);\n\n  function expandAll() {\n    setExpandedCategories(data.categories.map(category => category.title));\n  }\n\n  function collapseAll() {\n    setExpandedItems([]);\n    setExpandedCategories([]);\n  }\n\n  // function handleTypeFilterClick(type) {\n  //   // console.warn(\"handleTypeFilterClick\");\n  //   setTypeFilter(type);\n  // }\n\n  function clearFilters() {\n    setFilter(\"\");\n    setTypeFilter(\"all\");\n  }\n\n  // console.warn(\"expandedCategories\", expandedCategories);\n  // console.warn(\"expandedItems\", expandedItems);\n\n  const filtered = filter.length || typeFilter !== \"all\" ? filterData(data, filter, typeFilter) : data;\n  // console.warn(\"render\");\n  return (\n    <div className=\"App\">\n      <div className={\"inputFilter\"}>\n        <span align=\"center\"><input type=\"text\" onChange={handleFilter} value={filter} /> Search</span>\n        <span align=\"center\"> 󠁝 󠁝 󠁝 󠁝 󠁝 󠁝 󠁝 󠁝 󠁝 󠁝 󠁝<a href=\"https://github.com/tteck/Proxmox/blob/main/LICENSE\"><img alt=\"License MIT\" src=\"https://img.shields.io/badge/license-MIT-blue\" /></a> <a href=\"https://github.com/tteck/Proxmox/discussions\"><img src=\"https://img.shields.io/badge/%F0%9F%92%AC-Discussions-orange\" alt=\"Discussions\" /></a> <a href=\"https://github.com/tteck/Proxmox/blob/main/CHANGELOG.MD\"><img src=\"https://img.shields.io/badge/🔶-Changelog-blue\" alt=\"Changelog\" /></a> <a href=\"https://ko-fi.com/D1D7EP4GF\"><img src=\"https://img.shields.io/badge/%E2%98%95-Buy%20me%20a%20coffee-red\" alt=\"Buy me a coffee\" /></a></span>\n        {/* <span className=\"typeFilter\">Type: {[\"all\", ...new Set(types)].map(type =>\n          <span onClick={() => handleTypeFilterClick(type)} key={type} className={typeFilter === type ? \"typeFilterSelected\" : \"typeFilterNotSelected\"}> {type} </span>\n        )}</span> */}\n      </div>\n      {filtered.items.length === 0 && <div>No items match your criteria <button onClick={clearFilters}>Clear Filters</button></div>}\n      <div><span onClick={expandAll}>  󠀠 󠀠 󠀠➕ 󠀠 󠀠</span>  󠀠 <span onClick={collapseAll}> 󠀠 󠀠 󠀠➖ 󠀠 󠀠</span></div>\n      {filtered.items?.map((item, index) => {\n        return <div className={\"App-items\"} key={item.title} >\n          {/** Show Category \n            * Since Categories are flatted, only show the category the first time it appears while mapping through.\n            */}\n          {(index === 0 || filtered.items[index === 0 ? 0 : index - 1].category !== item.category) && <div onClick={() => handleCategoryClick(item.category)} className={\"itemCategory\"}>\n            {/* <img className={\"categoryLogo\"} src={data.categories.filter(category => category.title === item.category)[0]?.logo_url || data.categories[0].logo_url} alt=\"logo\" /> */}\n            {item.category}{(((filter && item.title.toLowerCase().includes(filter.toLowerCase())) || expandedItems.includes(item.title)) || expandedCategories.includes(item.category)) ? <DownArrow className=\"navArrow\" alt=\"Expanded\" /> : <RightArrow className=\"navArrow\" alt=\"Collapsed\" />} </div>}\n\n          {/* Show Item Title */}\n          {(((filter && item.title.toLowerCase().includes(filter.toLowerCase())) || expandedItems.includes(item.title)) || expandedCategories.includes(item.category)) && <span onClick={() => handleExpandItem(item.title)} className={\"itemTitle\"}>{item.title}</span>}\n\n          {\n            ((filter && item.title.toLowerCase().includes(filter.toLowerCase())) || expandedItems.includes(item.title)) && <div className=\"item\">\n              <ReactMarkdown\n                children={item.content}\n                remarkPlugins={[remarkGfm]}\n                rehypePlugins={[rehypeRaw]}\n                components={{\n                  code({ node, inline, className, children, ...props }) {\n                    const match = /language-(\\w+)/.exec(className || '');\n                    return !inline && match ? (\n                      <>\n                        <CopyButton valueToCopy={String(children)} />\n                        <SyntaxHighlighter\n                          children={String(children).replace(/\\n$/, '')}\n                          style={coldarkDark}\n                          language={match[1]}\n                          PreTag=\"div\"\n                          {...props}\n                        />\n                      </>\n                    ) : (\n                      <code className={className} {...props}>\n                        {children}\n                      </code>\n                    );\n                  }\n                }}\n              />\n            </div>}\n        </div>;\n      })}\n    </div>\n  );\n}\nfunction CopyButton({ valueToCopy }) {\n  function handleClick(text) {\n    navigator.clipboard.writeText(text);\n  }\n\n  return <button onClick={() => handleClick(valueToCopy)}>Copy</button>;\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","selector","defaultTagName","subvalue","previous","match","props","start","search","lastIndex","exec","slice","index","id","className","push","type","tagName","properties","children","find","require","normalize","parseSelector","spaces","commas","schema","caseSensitive","adjust","values","result","toLowerCase","createAdjustMap","property","node","own","isChildren","unshift","addProperty","addChild","content","info","undefined","spaceSeparated","commaSeparated","commaOrSpaceSeparated","join","style","concat","parsePrimitive","parsePrimitives","isNode","nodes","Error","String","number","positiveNumber","isNaN","Number","boolean","overloadedBoolean","html","factory","displayName","val","input","indexOf","end","trim","DefinedInfo","Info","data","normal","prop","Type","valid","test","charAt","attribute","replace","dash","camelcase","toUpperCase","datasetToProperty","cap","kebab","datasetToAttribute","$0","merge","xlink","xml","xmlns","aria","types","create","booleanish","transform","_","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","caseInsensitiveTransform","space","attributes","acceptcharset","classname","htmlfor","httpequiv","mustUseProperty","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","capture","charSet","checked","cite","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","dateTime","decoding","default","defer","dir","dirName","disabled","download","draggable","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","height","hidden","high","href","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","is","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","language","list","loading","loop","low","manifest","max","maxLength","media","method","min","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextMenu","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","open","optimum","pattern","ping","placeholder","playsInline","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","selected","shape","size","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","title","translate","typeMustMatch","useMap","width","wrap","align","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","char","charOff","classId","clear","code","codeBase","codeType","color","compact","declare","event","face","frame","frameBorder","hSpace","leftMargin","link","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","object","profile","prompt","rev","rightMargin","rules","scheme","scrolling","standby","summary","text","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","prefix","results","security","unselectable","caseSensitiveTransform","Schema","definition","defined","checks","checksLength","mask","check","mark","this","proto","xtend","definitions","apply","powers","increment","Math","pow","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","xmlnsxlink","xmlnsXLink","split","whiteSpace","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","str","TypeError","lineno","column","updatePosition","lines","lastIndexOf","position","line","Position","whitespace","source","errorsList","error","msg","err","reason","filename","silent","re","m","comments","c","comment","pos","declaration","ret","decl","decls","declarations","character","charCodeAt","alphabetical","decimal","isBuffer","el","characters","entity","document","createElement","innerHTML","textContent","legacy","invalid","hexadecimal","alphanumerical","decodeEntity","option","settings","defaults","indent","entityCharacters","namedEntity","terminated","reference","following","warning","output","begin","prev","next","diff","additional","nonTerminated","handleText","handleReference","handleWarning","textContext","referenceContext","warningContext","queue","now","parseError","noop","fromCharCode","hexa","deci","tests","prohibited","parseInt","bases","disallowed","flush","offset","messages","parse","Function","DOCUMENT_MODE","VALID_DOCTYPE_NAME","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","quote","hasPrefix","publicId","prefixes","isConforming","token","systemId","getDocumentMode","QUIRKS","LIMITED_QUIRKS","NO_QUIRKS","serializeContent","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","endTagWithAttributes","endTagWithTrailingSolidus","unexpectedSolidusInTag","unexpectedNullCharacter","unexpectedQuestionMarkInsteadOfTagName","invalidFirstCharacterOfTagName","unexpectedEqualsSignBeforeAttributeName","missingEndTagName","unexpectedCharacterInAttributeName","unknownNamedCharacterReference","missingSemicolonAfterCharacterReference","unexpectedCharacterAfterDoctypeSystemIdentifier","unexpectedCharacterInUnquotedAttributeValue","eofBeforeTagName","eofInTag","missingAttributeValue","missingWhitespaceBetweenAttributes","missingWhitespaceAfterDoctypePublicKeyword","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingWhitespaceAfterDoctypeSystemKeyword","missingQuoteBeforeDoctypePublicIdentifier","missingQuoteBeforeDoctypeSystemIdentifier","missingDoctypePublicIdentifier","missingDoctypeSystemIdentifier","abruptDoctypePublicIdentifier","abruptDoctypeSystemIdentifier","cdataInHtmlContent","incorrectlyOpenedComment","eofInScriptHtmlCommentLikeText","eofInDoctype","nestedComment","abruptClosingOfEmptyComment","eofInComment","incorrectlyClosedComment","eofInCdata","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","surrogateCharacterReference","characterReferenceOutsideUnicodeRange","controlCharacterReference","noncharacterCharacterReference","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","duplicateAttribute","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","Tokenizer","HTML","$","TAG_NAMES","NS","NAMESPACES","ATTRS","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","namespace","XLINK","XML","XMLNS","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","B","BIG","BLOCKQUOTE","BODY","BR","CENTER","CODE","DD","DIV","DL","DT","EM","EMBED","H1","H2","H3","H4","H5","H6","HEAD","HR","I","IMG","LI","LISTING","MENU","META","NOBR","OL","P","PRE","RUBY","S","SMALL","SPAN","STRONG","STRIKE","SUB","SUP","TABLE","TT","U","UL","VAR","causesExit","startTagToken","tn","FONT","getTokenAttr","COLOR","SIZE","FACE","adjustTokenMathMLAttrs","attrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isIntegrationPoint","ns","foreignNS","MATHML","ANNOTATION_XML","ENCODING","SVG","FOREIGN_OBJECT","DESC","TITLE","isHtmlIntegrationPoint","MI","MO","MN","MS","MTEXT","isMathMLTextIntegrationPoint","TYPE","ACTION","PROMPT","NAME","A","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","BASE","BASEFONT","BGSOUND","BUTTON","CAPTION","COL","COLGROUP","DETAILS","DIALOG","DIR","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAME","FRAMESET","HEADER","HGROUP","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LINK","MAIN","MALIGNMARK","MARQUEE","MATH","MGLYPH","NAV","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OPTGROUP","OPTION","PARAM","PLAINTEXT","RB","RP","RT","RTC","SCRIPT","SECTION","SELECT","SOURCE","STYLE","SUMMARY","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TR","TRACK","WBR","XMP","SPECIAL_ELEMENTS","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","EOF","NULL","TABULATION","CARRIAGE_RETURN","LINE_FEED","FORM_FEED","SPACE","EXCLAMATION_MARK","QUOTATION_MARK","NUMBER_SIGN","AMPERSAND","APOSTROPHE","HYPHEN_MINUS","SOLIDUS","DIGIT_0","DIGIT_9","SEMICOLON","LESS_THAN_SIGN","EQUALS_SIGN","GREATER_THAN_SIGN","QUESTION_MARK","LATIN_CAPITAL_A","LATIN_CAPITAL_F","LATIN_CAPITAL_X","LATIN_CAPITAL_Z","RIGHT_SQUARE_BRACKET","GRAVE_ACCENT","LATIN_SMALL_A","LATIN_SMALL_F","LATIN_SMALL_X","LATIN_SMALL_Z","CODE_POINT_SEQUENCES","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","SCRIPT_STRING","PUBLIC_STRING","SYSTEM_STRING","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","ErrorReportingMixinBase","host","opts","posTracker","onParseError","startLine","endLine","startCol","endCol","col","startOffset","endOffset","_setErrorLocation","mxn","_err","_reportError","ErrorReportingTokenizerMixin","LocationInfoTokenizerMixin","Mixin","ErrorReportingParserMixin","parser","ctLoc","locBeforeToken","orig","_bootstrap","fragmentContext","install","tokenizer","_processInputToken","location","beforeToken","PositionTrackingPreprocessorMixin","ErrorReportingPreprocessorMixin","preprocessor","lastErrOffset","preprocessorMixin","LocationInfoOpenElementStackMixin","stack","onItemPop","pop","current","popAllUpToHtmlElement","stackTop","items","remove","element","LocationInfoParserMixin","treeAdapter","lastStartTagToken","lastFosterParentingLocation","currentToken","loc","assign","startTag","setNodeSourceCodeLocation","closingToken","getNodeSourceCodeLocation","getTagName","endLoc","END_TAG_TOKEN","endTag","updateNodeSourceCodeLocation","tokenizerMixin","openElements","_setEndLocation","_runParsingLoop","scriptHandler","_processTokenInForeignContent","_processToken","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_attachElementToTree","_setStartLocation","_appendElement","namespaceURI","_insertElement","_insertTemplate","tmplContent","getTemplateContent","_insertFakeRootElement","_appendCommentNode","parent","commentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","currentTmplContent","siblings","textNodeIdx","beforeElement","textNode","currentAttrLocation","currentAttr","methods","_createStartTagToken","_createEndTagToken","_createCommentToken","_createDoctypeToken","initialName","_createCharacterToken","ch","currentCharacterToken","_createEOFToken","_getCurrentLocation","_createAttr","attrNameFirstCh","_leaveAttrName","toState","_attachCurrentAttrLocationInfo","_leaveAttrValue","_emitCurrentToken","EOF_TOKEN","_emitCurrentCharacterToken","keys","MODE","forEach","modeName","state","isEol","lineStartPos","droppedBufferSize","advance","retreat","dropParsedChunk","prevPos","reduction","FormattingElementList","entries","bookmark","newElement","candidates","neAttrsLength","getAttrList","neTagName","neNamespaceURI","getNamespaceURI","entry","MARKER_ENTRY","elementAttrs","idx","_getNoahArkConditionCandidates","cLength","neAttrs","neAttrsMap","neAttr","j","cAttr","splice","NOAH_ARK_CAPACITY","_ensureNoahArkCondition","ELEMENT_ENTRY","bookmarkIdx","OpenElementStack","defaultTreeAdapter","mergeOptions","doctype","foreignContent","ERR","unicode","DEFAULT_OPTIONS","scriptingEnabled","sourceCodeLocationInfo","HIDDEN_INPUT_TYPE","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","CHARACTER_TOKEN","tokenInInitialMode","NULL_CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","ignoreToken","COMMENT_TOKEN","appendComment","DOCTYPE_TOKEN","p","mode","forceQuirks","setDocumentMode","insertionMode","START_TAG_TOKEN","tokenBeforeHtml","tokenBeforeHead","startTagInBody","headElement","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","tokenAfterHead","framesetOk","characterInBody","whitespaceCharacterInBody","endTagInBody","eofInBody","pendingScript","originalInsertionMode","characterInTable","startTagInTable","endTagInTable","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","tokenInTableText","hasInTableScope","generateImpliedEndTags","popUntilTagNamePopped","activeFormattingElements","clearToLastMarker","tokenInColumnGroup","ackSelfClosing","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","insertMarker","_closeTableCell","startTagInSelect","endTagInSelect","_resetInsertionMode","newInsertionMode","_popTmplInsertionMode","_pushTmplInsertionMode","eofInTemplate","tokenAfterBody","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","Parser","createDocument","write","documentMock","_initTokenizerForFragmentParsing","_findFormInFragmentContext","rootElement","getFirstChild","fragment","createDocumentFragment","_adoptNodes","stopped","formElement","tmplInsertionModeStack","tmplInsertionModeStackTop","currentTmplInsertionMode","skipNextNewLine","fosterParentingEnabled","_setupTokenizerCDATAMode","getNextToken","HIBERNATION_TOKEN","chars","substr","writeCallback","script","_getAdjustedCurrentElement","allowCDATA","_isIntegrationPoint","nextTokenizerState","getParentNode","RCDATA","RAWTEXT","SCRIPT_DATA","setDocumentType","_fosterParentElement","appendChild","tmpl","setTemplateContent","createCommentNode","_fosterParentText","insertText","donor","recipient","child","detachNode","isCharacterToken","characterInForeignContent","nullCharacterInForeignContent","currentNs","selfClosing","startTagInForeignContent","popUntilElementPopped","endTagInForeignContent","_shouldProcessTokenInForeignContent","listLength","unopenIdx","contains","popUntilTableCellPopped","generateImpliedEndTagsWithExclusion","last","_resetInsertionModeForSelect","selectIdx","ancestor","_isElementCausesFosterParenting","openElement","insertBefore","insertTextBefore","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","insertAfter","callAdoptionAgency","_switchToTextParsing","tmplCount","generateImpliedEndTagsThoroughly","errCode","_reconstructActiveFormattingElements","addressStartTagInBody","hasInButtonScope","_closePElement","preStartTagInBody","bStartTagInBody","pushElement","appletStartTagInBody","areaStartTagInBody","paramStartTagInBody","noembedStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","genericStartTagInBody","activeElementEntry","aStartTagInBody","numberedHeaderStartTagInBody","elementTn","closeTn","listItemStartTagInBody","hrStartTagInBody","rtStartTagInBody","xmpStartTagInBody","svgStartTagInBody","adoptAttributes","htmlStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","menuStartTagInBody","tableStartTagInBody","inputType","inputStartTagInBody","imageStartTagInBody","buttonStartTagInBody","iframeStartTagInBody","selectStartTagInBody","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","addressEndTagInBody","appletEndTagInBody","pEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","curTn","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","_processTokenInBodyMode","hasInSelectScope","prevOpenElement","prevOpenElementTn","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","_isInTemplate","_updateCurrentElement","oldElement","_indexOf","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","Preprocessor","neTree","$$","C1_CONTROLS_REFERENCE_REPLACEMENTS","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","isAsciiLowerHexDigit","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","tokenQueue","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","active","_consume","_unconsume","_ensureHibernation","shift","chunk","isLastChunk","insertHtmlAtCurrentPos","endOfChunkHit","startCp","consumedCount","isMatch","patternLength","patternPos","patternCp","ct","_appendCharToCurrentCharacterToken","codePoints","_emitCodePoint","excess","inNode","HAS_DATA_FLAG","withSemicolon","_isCharacterReferenceInAttribute","nextCp","_emitSeveralCodePoints","_emitEOFToken","_emitChars","_reconsumeInState","_isTempBufferEqualToScriptString","_consumeSequenceIfMatch","_flushCodePointsConsumedAsCharacterReference","matchResult","_matchNamedCharacterReference","_isCharacterReferenceAttributeQuirk","_errOnNextCodePoint","isAsciiHexDigit","replacement","DATA","attrName","Uint16Array","lastGapPos","lastCharPos","gapStack","lastChunkWritten","bufferWaterline","_addGap","substring","_processSurrogate","_checkForProblematicCharacters","nodeName","childNodes","parentNode","createTextNode","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","sourceCodeLocation","endLocation","reduce","merged","optObj","originalMethods","overriddenMethods","_getOverriddenMethods","Ctor","__mixins","mixin","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","string","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","aa","ca","a","b","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","ja","ka","la","ma","v","d","e","f","g","acceptsBooleans","attributeName","attributeNamespace","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","Ma","Na","Oa","prepareStackTrace","set","Reflect","construct","l","h","k","includes","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","valueOf","firstChild","removeChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","base","br","embed","hr","img","keygen","meta","param","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","password","range","tel","time","url","week","me","ne","oe","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","suppressHydrationWarning","onclick","createElementNS","T","Hj","Ij","Jj","Kj","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","dl","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","isValidElementType","getModuleId","typeOf","StyleToObject","hasIterator","len","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","map","count","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","ctx","globalThis","self","global","restore","Prism","manual","disableWorkerMessageHandler","decode","markup","css","clike","js","Refractor","refract","register","grammar","languages","highlight","sup","util","alias","registered","listLanguages","encode","tokens","Token","env","stringifyAll","classes","hooks","run","refractor","abap","lookbehind","keyword","operator","punctuation","aliases","abnf","coreRules","greedy","inside","terminal","repetition","RegExp","rule","actionscript","ada","variable","agda","function","antlr4","command","annotation","constant","g4","apacheconf","regex","refractorSql","apex","keywords","insertClassName","classNameInside","sql","trigger","apl","statement","assignment","dfn","applescript","aql","identifier","refractorCpp","arduino","builtin","ino","arff","asciidoc","quoted","interpreted","table","specifiers","admonition","callout","macro","inline","italic","bold","copyFromAsciiDoc","o","rest","adoc","asm6502","directive","asmatmel","refractorCsharp","aspnet","csharp","javascript","autohotkey","important","autoit","avisynth","replacements","allinternals","argument","avs","avroIdl","avdl","bash","envVars","commandAfterHeredoc","insideString","environment","shebang","toBeCopied","shell","basic","batch","parameter","bbcode","shortcode","bicep","interpolation","expression","datatype","decorator","birb","metadata","refractorC","bison","delimiter","bnf","rbnf","brainfuck","pointer","decrement","branching","brightscript","bro","bsl","oscript","cfscript","cfc","chaiscript","cpp","cil","clojure","cmake","inserted","cobol","level","coffeescript","coffee","concurnas","langext","conc","coq","commentSource","punct","modName","generic","refractorRuby","crystal","ruby","args","expansion","nested","depthLog2","keywordKinds","keywordsToPattern","words","typeDeclarationKeywords","nonTypeKeywords","nonContextualKeywords","nestedRound","genericName","typeExpressionWithoutTuple","tupleElement","tuple","typeExpression","typeInside","regularString","verbatimString","regularStringOrCharacter","regularStringCharacterOrComment","roundExpression","attrTarget","attr","formatString","mInterpolationRound","mInterpolation","sInterpolationRound","sInterpolation","createInterpolationInside","interpolationRound","dotnet","cs","cshtml","commentLike","stringLike","round","square","curly","angle","tagAttrs","tagContent","tagRegion","block","razor","csp","none","hash","cssExtras","selectorInside","class","combinator","unit","hexcode","atrule","addInlined","addAttribute","csv","cypher","relationship","dart","packagePrefix","generics","dataweave","dax","measure","dhall","coord","PREFIXES","unchanged","refractorMarkupTemplating","django","filter","markupTemplating","buildPlaceholders","tokenizePlaceholders","jinja2","dnsZoneFile","docker","spaceAfterBackSlash","stringRule","commentRule","instruction","dockerfile","dot","ID","IDInside","withID","gv","ebnf","special","editorconfig","section","eiffel","ejs","eta","elixir","doc","atom","elm","hvariable","erb","erlang","refractorLua","etlua","lua","excelFormula","sheet","file","path","cell","row","factor","comment_inside","string_inside","regexp","combinators","arrToWordsRegExp","builtins","$false","firestoreSecurityRules","flow","fortran","fsharp","ftl","FTL_EXPR","gap","continuation","gcode","checksum","gdscript","gedcom","gherkin","tableRow","pystring","feature","scenario","outline","git","deleted","glsl","gml","gamemakerlanguage","gn","gni","goModule","go","graphql","description","markdown","scalar","validTokens","currentIndex","startToken","inputVariables","isTokenType","getToken","definitionEnd","findClosingBracket","addAlias","mutationEnd","varToken","close","stackHeight","groovy","haml","filters","all_filters","handlebars","brackets","hbs","haskell","hs","haxe","reification","hcl","heredoc","hlsl","hoon","hpkp","hsts","http","headerValueOf","uri","header","langs","httpLanguages","json","plain","suffixTypes","getSuffixPattern","contentType","suffix","ichigojam","icon","icuMessageFormat","stringPattern","argumentSource","nestedMessage","refractorHaskell","idris","idr","iecst","address","ignore","gitignore","hgignore","npmignore","inform7","substitution","verb","ini","io","adverb","conjunction","java","classNamePrefix","refractorJava","refractorJavadoclike","javadoc","codeLinePattern","memberReference","field","javadoclike","addSupport","javaDocLike","docLanguage","tokenName","docCommentSupport","hashbang","javastacktrace","exceptions","more","jexl","jolie","aggregates","redirects","jq","stringInterpolation","jsExtras","withId","imports","spread","arrow","dom","maybeClassNameTokens","jsTemplates","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","getPlaceholder","counter","tokenizeWithHooks","tokenize","tokenizeInterpolationExpression","tempGrammar","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedTokens","interpolationExpression","placeholders","walkTokens","s","before","middle","after","afterTokens","Boolean","supportedLanguages","typescript","ts","tsx","stringContent","findTemplateStrings","embedded","refractorTypescript","jsdoc","parameterPrefix","example","null","webmanifest","refractorJson","json5","jsonp","jsstacktrace","braces","stringifyToken","openedTags","notTagNorBrace","openedBraces","plainText","julia","keepalived","ip","keyman","kotlin","interpolationInside","kt","kts","kumir","nonId","wrapId","prolog","kum","kusto","latex","funcPattern","insideEqu","cdata","equation","headline","tex","refractorPhp","latte","php","markupLatte","less","refractorScheme","lilypond","schemeExpression","ly","liquid","empty","insideRaw","tagMatch","lisp","simple_form","primitive","marker","par","nestedPar","heading","interactive","defvar","defun","lambda","car","arg","varform","forms","arglist","sublist","elisp","emacs","livescript","llvm","exception","separator","domain","uuid","lolcode","magma","generator","makefile","inner","createInline","tableCell","tableLine","yaml","blockquote","strike","codeLang","codeBlock","cls","tagPattern","fromCodePoint","known","KNOWN_ENTITY_NAMES","plugins","autoloader","floor","loadLanguages","ele","getElementById","amp","lt","gt","quot","defineProperties","placeholderPattern","replaceFilter","tokenStack","includedCdataInside","def","mathml","svg","ssml","rss","matlab","maxscript","mel","flag","mermaid","mizar","mongodb","operators","operatorsSource","monkey","moonscript","moon","n1ql","n4js","n4jsd","nand2tetrisHdl","naniscript","expressionDef","params","getTextContent","define","nani","bracket","bracketsIndex","isBracketsBalanced","nasm","neon","literal","nevod","fields","quantifier","colon","nginx","nim","nix","antiquotation","nsis","objectivec","objc","ocaml","variant","opencl","openqasm","qasm","oz","parigp","pascal","asm","objectpascal","pascaligo","accum","pcaxis","tlist","px","peoplecode","pcode","perl","filehandle","phpExtras","package","string_interpolation","phpdoc","plsql","powerquery","pq","mscript","powershell","processing","promql","vectorMatching","protobuf","builtinTypes","psl","pug","each","branch","filter_pattern","puppet","pure","inlineLanguageRe","purebasic","pbfasm","purescript","purs","python","py","qml","jsString","jsComment","jsExpr","qore","qsharp","qualifiedName","interpolationExpr","qs","ellipsis","racket","rkt","specialEscape","rangeChar","groupName","backreference","anchor","group","alternation","rego","renpy","rpy","rip","roboconf","component","optional","wildcard","robotframework","createSection","extendecInside","docTag","testNameLike","testPropertyLike","documentation","variables","tasks","robot","percentExpression","symbolName","rust","multilineComment","sas","numericConstant","macroVariable","macroKeyword","format","equals","altformat","globalStatements","submitStatement","actionSets","casActions","datalines","sass","scala","SortedBNF","scss","refractorBash","shellSession","strings","user","smali","smalltalk","smarty","smartyPattern","smartyLiteralMode","sml","word","smlnj","solidity","sol","solutionFile","guid","soy","numberPattern","soyLitteralMode","refractorTurtle","sparql","rq","splunkSpl","sqf","squirrel","stan","higherOrderFunctions","constraint","stylus","swift","nil","omit","systemd","quotesSource","refractorT4Templating","t4Cs","t4","createT4","t4Templating","createBlock","contentAlias","insideLang","standard","refractorVbnet","t4Vb","refractorYaml","tap","fail","pass","pragma","bailout","plan","subtest","yamlish","tcl","textile","modifierRegex","parenthesesRegex","withModifier","modifierTokens","phrase","modifier","image","footnote","acronym","phraseInside","nestedPatterns","phraseInlineInside","phraseTableInside","toml","insertKey","tremor","extractor","troy","trickle","refractorJsx","tt2","turtle","trig","twig","at","typoscript","tsconfig","unrealscript","category","uscript","uorazor","query","pair","authority","port","vala","refractorBasic","vbnet","velocity","unparsed","verilog","vhdl","vim","visualBasic","vba","warpscript","wasm","webIdl","wiki","emphasis","nowiki","wolfram","blank","mathematica","wren","xeora","xeoracube","xmlDoc","insertDocComment","docComment","slashDocComment","tickDocComment","xojo","xquery","extension","anchorOrAlias","plainKey","createValuePattern","yml","yang","zig","IDENTIFIER","ALIGN","_self","uniqueId","plainTextGrammar","objId","deepClone","visited","getLanguage","parentElement","setLanguage","classList","currentScript","scripts","getElementsByTagName","isActive","defaultActivation","no","plaintext","txt","redef","insert","root","newToken","old","DFS","propertyType","highlightAll","highlightAllUnder","container","elements","highlightElement","insertHighlightedCode","highlightedCode","hasAttribute","Worker","worker","onmessage","evt","postMessage","immediateClose","tokenList","LinkedList","addAfter","head","matchGrammar","all","callbacks","matchedStr","matchPattern","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","currentNode","reach","removeCount","from","to","matchStr","removeFrom","removeRange","nestedRematch","highlightAutomaticallyCallback","readyState","requestAnimationFrame","WorkerGlobalScope","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","ReferenceError","__esModule","Constructor","_defineProperties","descriptor","protoProps","staticProps","getPrototypeOf","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","superPropBase","_get","receiver","desc","_getPrototypeOf","setPrototypeOf","__proto__","subClass","superClass","sham","Proxy","_typeof","assertThisInitialized","_setPrototypeOf","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","toStringTag","_defineProperty","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","_arrayLikeToArray","arr2","_iterableToArray","iter","_unsupportedIterableToArray","minLen","_toConsumableArray","_arrayWithHoles","_nonIterableRest","_slicedToArray","_i","_s","_e","_arr","_n","_d","_classCallCheck","_createClass","_inherits","_isNativeReflectConstruct","_assertThisInitialized","_possibleConstructorReturn","_createSuper","_construct","Parent","Class","_wrapNativeSuper","_cache","fn","Wrapper","stringifyPosition","point","VFileMessage","place","origin","parts","fatal","ruleId","actual","expected","note","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","sep","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","proc","cwd","isUrl","fileURLOrPath","urlToPath","URL","protocol","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","buffer","history","stored","assertNonEmpty","assertPart","stem","encoding","part","_toArray","bail","middleware","called","parameters","fnExpectsCallback","unified","frozen","transformers","fns","pipeline","middlewareIndex","use","middelware","trough","attachers","freezeIndex","processor","assertUnfrozen","Compiler","freeze","attacher","transformer","POSITIVE_INFINITY","addPlugin","addList","addPreset","plugin","isPlainObj","vfile","assertParser","newable","assertCompiler","assertNode","compile","executor","reject","tree","runSync","complete","assertDone","process","processSync","destination","asyncName","looksLikeAVFile","includeImageAlt","one","chunkStart","combineExtensions","extensions","syntaxExtension","hook","right","constructs","existing","asciiAlpha","regexCheck","asciiDigit","asciiHexDigit","asciiAlphanumeric","asciiPunctuation","asciiAtext","asciiControl","markdownLineEndingOrSpace","markdownLineEnding","markdownSpace","unicodeWhitespace","unicodePunctuation","factorySpace","limit","enter","consume","exit","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","item","containerState","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","events","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","seen","nok","disable","blankLine","partial","subtokenize","lineIndex","otherIndex","otherEvent","subevents","jumps","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","childEvents","gaps","breaks","_gfmTasklistFirstContentOfListItem","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","bufferIndex","tabs","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","sequence","initialSize","atMarker","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","factoryLabel","markerType","labelEscape","factoryTitle","atFirstTitleBreak","atTitleBreak","titleEscape","factoryWhitespace","normalizeIdentifier","labelAfter","titleConstruct","codeIndented","afterStartPrefix","afterPrefix","indentedContent","headingAtx","fenceOpenInside","headingBreak","setextUnderline","paragraph","closingSequence","closingSequenceEnd","htmlBlockNames","htmlRawNames","htmlFlow","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","htmlLineEnd","continuationRawEndTag","codeFenced","closingFenceConstruct","closingSequenceStart","sizeOpen","nonLazyLine","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","insideSpan","destinationAfter","between","afterLabel","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","declarationOpen","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","commentClose","atLineEnding","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","resolveText","decodeNumericCharacterReference","characterEscapeOrReference","decodeString","$1","$2","hex","fromMarkdown","config","configure","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","listStack","resume","setData","getData","prepareList","handler","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","depth","referenceType","ordered","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","preprocess","combined","normalizeUri","skip","convert","castFactory","typeFactory","anyFactory","propsFactory","visitParents","visitor","reverse","parents","visit","subresult","grandparents","toResult","pointStart","pointEnd","clean","footnoteReference","safeId","footnoteOrder","footnoteCounts","reuseCounter","clobberPrefix","dataFootnoteRef","patch","applyData","revert","subtype","contents","listItemLoose","trimLines","trimLine","codePointAt","handlers","break","footnoteById","dangerous","imageReference","inlineCode","linkReference","loose","listLoose","firstRow","tableContent","cellIndex","cells","alignValue","footnoteDefinition","createState","allowDangerousHtml","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","unknownHandler","passThrough","augment","hName","hProperties","hChildren","defaultUnknownHandler","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","tailTail","dataFootnotes","footer","bridge","mutate","onContextLost","onContextRestored","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","rehypeFilter","allowedElements","disallowedElements","allowElement","parent_","unwrapDisallowed","thing","dashes","hastToReact","padRight","padLeft","protocols","uriTransformer","first","tableElements","childrenToReact","childIndex","toReact","skipHtml","transformLinkUri","parentSchema","listDepth","components","React","ReactIs","linkTarget","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","styleReplacer","parseStyle","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","ReactMarkdown","deprecation","warn","remarkParse","remarkPlugins","remarkRehype","remarkRehypeOptions","rehypePlugins","hastNode","_extends","_objectSpread","propTypes","classNameCombinations","getClassNameCombinations","classNames","arrLength","powerSetPermutations","createStyleObject","elementStyle","stylesheet","nonTokenClassNames","classNamesCombinations","styleObject","createClassNameString","_ref","_ref$style","useInlineStyles","TagName","childrenCreator","childrenCount","createChildren","allStylesheetSelectors","startingClassName","_excluded","newLineRegex","AllLineNumbers","_ref2","codeString","codeStyle","_ref2$containerStyle","containerStyle","paddingRight","_ref2$numberStyle","numberStyle","startingLineNumber","getAllLineNumbers","getInlineLineNumber","lineNumber","inlineLineNumberStyle","assembleLineNumberStyles","lineNumberStyle","largestLineNumber","num","defaultLineNumberStyle","minWidth","userSelect","customLineNumberStyle","createLineElement","_ref3","showInlineLineNumbers","_ref3$lineProps","lineProps","_ref3$className","showLineNumbers","wrapLongLines","flattenCodeTree","newTree","processLines","codeTree","wrapLines","_ref4","lastLineBreakIndex","createWrappedLine","createUnwrappedLine","createLine","_loop","splitValue","newChild","_line","stringChild","lastLineInPreviousSpan","newElem","_line2","_line3","defaultRenderer","_ref5","isHighlightJs","astGenerator","highlightAuto","defaultAstGenerator","defaultStyle","highlighter","_ref7","_ref7$style","_ref7$customStyle","customStyle","_ref7$codeTagProps","codeTagProps","_ref7$useInlineStyles","_ref7$showLineNumbers","_ref7$showInlineLineN","_ref7$startingLineNum","lineNumberContainerStyle","_ref7$lineNumberStyle","_ref7$wrapLongLines","_ref7$lineProps","renderer","_ref7$PreTag","PreTag","_ref7$CodeTag","CodeTag","_ref7$code","allLineNumbers","defaultPreStyle","hljs","backgroundColor","generatorClassName","preProps","defaultCodeValue","_ref6","hasLanguage","checkForListedLanguage","getCodeTree","www","w2","w3","hasUnderscoreInLastSegment","hasUnderscoreInLastLastSegment","namedCharacterReference","punctuationContinuation","inPath","continuedPunctuation","parenAtPathEnd","pathEnd","trailingPunctuation","wwwAutolink","previousWww","previousUnbalanced","httpAutolink","previousHttp","t1","t2","slash1","slash2","emailAutolink","hasDot","hasDigitInLastSegment","gfmAtext","previousEmail","atext","dotContinuation","dashOrUnderscoreContinuation","afterDashOrUnderscore","gfmAutolinkLiteral","_gfmAutolinkLiteralWalkedInto","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","gfmFootnotes","callStart","callData","callEscape","gfmStrikethrough","single","singleTilde","tokenizeStrikethrough","resolveAllStrikethrough","strikethrough","gfmTable","seenDelimiter","hasDash","tableHeaderCount","_align","cellDividerHead","inCellContentHead","cellBreakHead","originalInterrupt","tokenizeRowEnd","atDelimiterRowBreak","atRowEndHead","inWhitespaceHead","inCellContentEscapeHead","rowEndDelimiter","inWhitespaceDelimiter","inFillerDelimiter","afterLeftAlignment","afterRightAlignment","tableClose","nextPrefixedOrBlank","bodyStart","rowStartBody","cellDividerBody","inCellContentBody","cellBreakBody","tableBodyClose","atRowEndBody","inWhitespaceBody","inCellContentEscapeBody","inHead","inDelimiterRow","inRow","cellStart","seenCellInRow","tasklistCheck","spaceThenNonSpace","gfmTaskListItem","gfm","ccount","findAndReplace","ignored","pairs","toExpression","toFunction","toPairs","pairIndex","grandparent","change","matchObject","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","findUrl","findEmail","literalAutolink","literalAutolinkEmail","enterLiteralAutolinkValue","literalAutolinkHttp","literalAutolinkWww","gfmAutolinkLiteralToMarkdown","unsafe","isCorrectDomain","closingParenIndex","openingParens","closingParens","trail","trailExec","splitUrl","association","options_","lineShift","move","containerFlow","safeOptions","indexStack","tracker","handle","bulletLastUsed","eol","indentLines","patternCompile","_compiled","patternInScope","listInScope","safe","positions","infos","sort","numerical","escapeBackslashes","whole","gfmFootnoteToMarkdown","peek","subexit","containerPhrasing","gfmStrikethroughFromMarkdown","gfmStrikethroughToMarkdown","handleDelete","serialize","defaultStringLength","toAlignment","gfmTableFromMarkdown","tableData","enterCell","tableHeader","gfmTableToMarkdown","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","delimiterStart","delimiterEnd","markdownTable","listItemIndent","checkListItemIndent","bullet","bulletCurrent","checkBullet","incrementListMarker","gfmTaskListItemFromMarkdown","taskListCheckValueChecked","exitCheck","taskListCheckValueUnchecked","firstParaghraph","gfmTaskListItemToMarkdown","checkable","checkbox","gfmFromMarkdown","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","gfmToMarkdown","remarkGfm","buttonTypes","core","isProperties","finalResult","webNamespaces","ast","verbose","opening","closing","createLocation","quirksMode","indices","toPoint","toOffset","isFile","toH","react","_isVue","vue","vdom","hyperscript","subprop","zwitch","unknown","p5","htmlVoidElements","endTagToken","parseOptions","raw","stitches","locationTracker","resetTokenizer","createParse5Location","stitch","fromParse5","mock","toParse5","rehypeRaw","CopyButton","valueToCopy","clipboard","writeText","setFilter","typeFilter","setTypeFilter","expandedItems","setExpandedItems","expandedCategories","setExpandedCategories","handleExpandItem","newExpanded","handleCategoryClick","newExpandedCategory","filtered","typeFilteredItems","filterData","wait","immediate","timeout","debounce","coldarkDark","ReactDOM"],"sourceRoot":""}