{"version":3,"file":"static/js/main.ced696d6.js","mappings":"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AE,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,IA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AAAA,GAAUvM,MAAWuM,EAAAA,EAAAA,GAAU9K,IAEhD,OAAO,CAEX,CAEA,OAAOzB,CACT,mFCxPauyC,GAAIlB,UAAAA,GAAKljB,EAAAA,GAAM,0ECZrB,IAAM0vE,EAA0B,CACrC,QACA,MACA,SACA,QACA,SACA,QACA,SACA,OACA,OACA,SACA,MACA,SACA,QACA,SACA,OACA,KACA,SACA,QACA,SACA,OACA,KACA,SACA,SACA,QACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,OACA,SACA,SACA,SACA,KACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,MACA,OACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,MACA,QC1GWC,EAA4B,CACvC,EAAG,SACH,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,UC1BA,SAASC,EAAU50D,GACxB,IAAM39B,EACiB,kBAAd29B,EAAyBA,EAAUp+B,WAAW,GAAKo+B,EAE5D,OAAO39B,GAAQ,IAAMA,GAAQ,EAC/B,CCLO,SAASwyF,EAAc70D,GAC5B,IAAM39B,EACiB,kBAAd29B,EAAyBA,EAAUp+B,WAAW,GAAKo+B,EAE5D,OACG39B,GAAQ,IAAcA,GAAQ,KAC9BA,GAAQ,IAAcA,GA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","sources":["../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.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/@uiw/github-corners/src/index.ts","../node_modules/@uiw/react-github-corners/src/index.tsx","../node_modules/@uiw/react-shields/src/common/Container.tsx","../node_modules/@uiw/react-shields/src/common/Base.tsx","../node_modules/@uiw/react-shields/src/github/Issues.tsx","../node_modules/@uiw/react-shields/src/github/Size.tsx","../node_modules/@uiw/react-shields/src/github/Downloads.tsx","../node_modules/@uiw/react-shields/src/github/Activity.tsx","../node_modules/@uiw/react-shields/src/github/Version.tsx","../node_modules/@uiw/react-shields/src/github/License.tsx","../node_modules/@uiw/react-shields/src/github/Analysis.tsx","../node_modules/@uiw/react-shields/src/github/Social.tsx","../node_modules/@uiw/react-shields/src/github/Github.tsx","../node_modules/@uiw/react-shields/src/github/index.tsx","../node_modules/@uiw/react-shields/src/coverages/Coverages.tsx","../node_modules/@uiw/react-shields/src/coverages/Codacy.tsx","../node_modules/@uiw/react-shields/src/coverages/Coverage.tsx","../node_modules/@uiw/react-shields/src/coverages/index.tsx","../node_modules/@uiw/react-shields/src/npm/Version.tsx","../node_modules/@uiw/react-shields/src/npm/Size.tsx","../node_modules/@uiw/react-shields/src/npm/Npm.tsx","../node_modules/@uiw/react-shields/src/npm/index.tsx","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/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/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.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/lib/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/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/lib/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/unist-util-position/lib/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/react-markdown/lib/rehype-filter.js","../node_modules/hast-util-whitespace/index.js","../node_modules/property-information/lib/hast-to-react.js","../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/micromark-extension-gfm-autolink-literal/lib/syntax.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/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.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/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/association.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-to-markdown/lib/util/track.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/mdast-util-gfm-strikethrough/lib/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/lib/index.js","../node_modules/remark-gfm/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/mdast-util-gfm/lib/index.js","../node_modules/hastscript/lib/svg.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/vfile-location/lib/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","../node_modules/github-slugger/regex.js","../node_modules/github-slugger/index.js","../node_modules/hast-util-has-property/lib/index.js","../node_modules/hast-util-heading-rank/lib/index.js","../node_modules/hast-util-to-string/index.js","../node_modules/rehype-slug/index.js","../node_modules/hast-util-is-element/index.js","../node_modules/rehype-autolink-headings/lib/index.js","../node_modules/rehype-attr/src/utils.ts","../node_modules/rehype-attr/src/index.ts","../node_modules/rehype-ignore/src/index.ts","../node_modules/unist-util-filter/lib/index.js","../../src/generator.js","../../src/all.js","../../src/common.js","../node_modules/direction/index.js","../node_modules/hast-util-select/lib/enter-state.js","../node_modules/hast-util-select/lib/attribute.js","../node_modules/bcp-47-match/index.js","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/parse.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/index.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/compile.ts","../node_modules/hast-util-select/lib/pseudo.js","../node_modules/hast-util-select/lib/test.js","../node_modules/hast-util-select/lib/name.js","../node_modules/hast-util-select/lib/class-name.js","../node_modules/hast-util-select/lib/id.js","../node_modules/hast-util-select/lib/walk.js","../node_modules/hast-util-select/lib/parse.js","../node_modules/hast-util-select/lib/index.js","../node_modules/rehype-rewrite/src/index.ts","../node_modules/@uiw/react-markdown-preview/esm/nodes/octiconLink.js","../node_modules/@uiw/react-markdown-preview/esm/plugins/useCopied.js","../node_modules/@uiw/react-markdown-preview/esm/plugins/reservedMeta.js","../node_modules/@uiw/react-markdown-preview/esm/index.js","../node_modules/@uiw/react-markdown-preview/esm/nodes/copy.js","../node_modules/@uiw/react-mac-keyboard/esm/index.js","webpack://hotkeys-js/./website/components/Footer.module.less?cff4","components/Footer.js","webpack://hotkeys-js/./website/styles/index.module.less?2aeb","../README.md","../dist/hotkeys.esm.js","App.js","index.js","../../src/main.js","../node_modules/@wcj/dark-mode/dist/dark-mode.min.js","../node_modules/boolbase/index.js","../node_modules/css-selector-parser/lib/index.js","../node_modules/css-selector-parser/lib/parser-context.js","../node_modules/css-selector-parser/lib/render.js","../node_modules/css-selector-parser/lib/utils.js","../node_modules/extend/index.js","../node_modules/inline-style-parser/index.js","../node_modules/is-buffer/index.js","../node_modules/parse-numeric-range/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-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.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/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.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/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/comma-separated-tokens/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/hast-util-parse-selector/lib/index.js","../node_modules/hastscript/lib/core.js","../node_modules/hastscript/lib/html.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-reference-invalid/index.js","../node_modules/is-decimal/index.js","../node_modules/is-hexadecimal/index.js","../node_modules/is-alphanumerical/index.js","../node_modules/is-alphabetical/index.js","../node_modules/parse-entities/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.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/property-information/lib/find.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/space-separated-tokens/index.js","../webpack/bootstrap","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["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}","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}","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}","// @ts-ignore\ndeclare global {\n interface HTMLElementTagNameMap {\n 'github-corners': GithubCorners;\n }\n namespace JSX {\n interface IntrinsicElements {\n 'github-corners': Partial | {\n style?: Partial | React.CSSProperties;\n };\n }\n }\n}\n\nconst GITHUB_CORNERS_TEMPLATE = document.createElement(\"template\");\nGITHUB_CORNERS_TEMPLATE.innerHTML = `\n\n\n \n \n \n \n \n \n \n\n`;\n\nexport class GithubCorners extends HTMLElement {\n /** Sets the z-order of a positioned element and its descendants or flex items. */\n 'z-index'?: string;\n height?: string | number;\n width?: string | number;\n href?: string;\n color?: string;\n fill?: string;\n position?: string;\n target?: string;\n top?: string;\n left?: string;\n right?: string = '0';\n bottom?: string;\n transform?: string;\n private shadow: ShadowRoot\n static get observedAttributes(): string[] {\n return ['style', 'z-index', 'target', 'height', 'width', 'href', 'color', 'fill', 'position', 'top', 'left', 'right', 'bottom', 'transform'];\n }\n constructor() {\n super();\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.appendChild(this.ownerDocument.importNode(GITHUB_CORNERS_TEMPLATE.content, true));\n this.update()\n }\n private setAttr(name: string, value: string) {\n const svg = this.shadow.querySelector('svg');\n if (/(href)/.test(name.toLocaleLowerCase())) {\n svg.lastElementChild.setAttribute('xlink:href', value);\n } else if (/(color|fill)/.test(name.toLocaleLowerCase())) {\n (svg.firstElementChild as HTMLAnchorElement).style[name as any] = value;\n } else if (/(z-index|position|top|left|right|bottom|transform)/.test(name.toLocaleLowerCase())) {\n svg.style[name as any] = value;\n } else {\n svg.setAttribute(name, value);\n }\n }\n private update() {\n ;[...this.getAttributeNames(), 'right'].forEach((name) => {\n const value = this.getAttribute(name) || this[name as keyof GithubCorners] as any || '';\n this.setAttr(name, value);\n });\n }\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (oldValue !== newValue) {\n this.setAttr(name, newValue);\n }\n }\n}\n\ncustomElements.define('github-corners', GithubCorners);","import React from 'react';\nimport '@uiw/github-corners';\n\nexport interface GitHubCornersProps extends React.AnchorHTMLAttributes {\n /**\n * The link to your project page.\n */\n href?: string;\n /**\n * The width and height of the corner. \n * Default: `80`\n */\n size?: number;\n /**\n * The background color of the corner.\n * Default: `#151513`\n */\n bgColor?: string;\n /**\n * The Github logo color of the corner.\n * Default: `#fff`\n */\n color?: string;\n /**\n * The position of corner. \n * Default: `right`\n */\n position?: 'left' | 'right';\n /** Is it displayed at the bottom? */\n bottom?: boolean,\n /** \n * It is positioned relative to the initial containing block established.\n * Default: `false`\n */\n fixed?: boolean;\n /**\n * Sets the z-order of a positioned element and its descendants or flex items.\n */\n zIndex?: number;\n}\n\nexport default function githubCorners(props: GitHubCornersProps) {\n const { size = 80, fixed = false, bottom, zIndex, className, style, bgColor = '#151513', color = '#fff', position = 'right', ...otherProps } = props;\n const styl: React.CSSProperties = position === 'left' ? { left: 0, right: 'initial', transform: 'scale(-1, 1)' } : { right: 0, left: 'initial', transform: 'scale(1, 1)' };\n if (bottom) {\n styl.bottom = 0;\n styl.top = 'initial';\n styl.transform = position === 'left' ? 'scale(-1, -1)' : 'scale(1, -1)';\n } else {\n styl.bottom = 'initial';\n styl.top = 0;\n }\n return (\n \n );\n}","import React, { Component, ReactElement } from 'react';\nimport { BaseProps } from '../common/Base';\n\nexport interface ContainerProps extends BaseProps {}\n\nexport default class Container extends Component {\n render() {\n return (\n <>\n {React.Children.toArray(this.props.children).map((child: React.ReactNode) => {\n if (!React.isValidElement(child)) return null;\n return React.cloneElement(child as ReactElement, { ...this.props, ...(child as React.ReactElement).props });\n })}\n \n );\n }\n}","import React, { Component } from 'react';\n\nexport interface BaseProps {\n platform?: 'github' | 'coveralls' | 'npm';\n type?: string;\n user?: string;\n repo?: string;\n base?: string;\n href?: HTMLAnchorElement['href'];\n children?: React.ReactNode;\n}\n\nexport interface BaseState extends BaseProps {}\n\nexport default class Base extends Component {\n static defaultProps: BaseProps = {\n platform: 'github',\n base: 'https://img.shields.io',\n }\n constructor(props: BaseProps & T, defaultState: BaseProps & T, forceState?: BaseProps & T) {\n super(props);\n this.state = Object.assign({}, { ...defaultState, ...props }, forceState);\n }\n getUrl = () => '';\n render() {\n const { href } = this.state;\n if (href) {\n return \"\" ;\n }\n return \"\";\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface IssueProps extends BaseProps {\n /**\n * Github Issue\n * \n * `/github/:issueKind/detail/:property/:user/:repo/:number` \n * GitHub issue/pull request detail: GitHub issue/pull request detail badge \n * \n * `/github/issues/:user/:repo` \n * GitHub issues: GitHub issues badge \n * \n * `/github/issues-raw/:user/:repo` \n * GitHub issues: GitHub issues badge \n * \n * `/github/issues/:user/:repo/:label` \n * GitHub issues by-label: GitHub issues by-label badge \n * \n * `/github/issues-raw/:user/:repo/:label` \n * GitHub issues by-label: GitHub issues by-label badge \n * \n * `/github/issues-closed/:user/:repo` \n * GitHub closed issues: GitHub closed issues badge \n * \n * `/github/issues-closed-raw/:user/:repo` \n * GitHub closed issues: GitHub closed issues badge \n * \n * `/github/issues-pr/:user/:repo` \n * GitHub pull requests: GitHub pull requests badge \n * \n * `/github/issues-pr-raw/:user/:repo` \n * GitHub pull requests: GitHub pull requests badge \n * \n * `/github/issues-pr-closed/:user/:repo` \n * GitHub closed pull requests: GitHub closed pull requests badge \n * \n * `/github/issues-pr-closed-raw/:user/:repo` \n * GitHub closed pull requests: GitHub closed pull requests badge \n * \n * `/github/issues-pr/:user/:repo/:label` \n * GitHub pull requests by-label: GitHub pull requests by-label badge \n * \n * `/github/issues-pr-raw/:user/:repo/:label` \n * GitHub pull requests by-label: GitHub pull requests by-label badge \n * \n * `/github/labels/:user/:repo/:name` \n * GitHub labels: GitHub labels badge \n */\n type?: 'issueKind' | 'issues' | 'issues-raw' | 'issues-closed'\n | 'issues-closed-raw' | 'issues-pr' | 'issues-pr-raw' \n | 'issues-pr-closed' | 'issues-pr-closed-raw'\n | 'languages';\n /**\n * /github/:issueKind/detail/:property/:user/:repo/:number\n */\n property?: string;\n /**\n * /github/:issueKind/detail/:property/:user/:repo/:number\n */\n number?: string;\n label?: string;\n}\n\nexport default class Issue extends Base {\n constructor(props: IssueProps) {\n super(props, { platform: 'github', type: 'issues' });\n };\n getUrl = () => {\n const { type, platform, property, user, repo, label, base } = this.state;\n if (platform !== 'github') return '';\n if (type === 'issues' || /^issues-(raw|closed|closed-raw|pr|pr-raw|pr-closed|pr-closed-raw)/.test(type!)) {\n if(label && (type === 'issues' || /^issues-(raw|pr|pr-raw)/.test(type || ''))) {\n return [base, platform, type, user, repo, label].join('/');\n }\n return [base, platform, type, user, repo].join('/');\n }\n if(type === 'issueKind') {\n return [base, platform, type, 'detail', property, user, repo].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps } from '../common/Base';\n\nexport interface SizeProps extends BaseProps {\n /**\n * Github Size\n * \n * /github/languages/code-size/:user/:repo \n * /github/repo-size/:user/:repo \n * /github/size/:user/:repo/:path* \n */\n type?: 'languages' | 'repo-size' | 'size';\n /**\n * GitHub file size in bytes\n * build/phaser-craft.min.js\n */\n path?: string;\n}\n\nexport default class Size extends Base {\n constructor(props: SizeProps) {\n super(props, { platform: 'github', type: 'languages' });\n };\n\n getUrl = () => {\n const { type, platform, user, repo, base, path } = this.state;\n if (platform !== 'github') return '';\n /**\n * /github/languages/code-size/:user/:repo\n */\n if (type === 'languages') {\n return [base, platform, type, 'code-size', user, repo].join('/');\n }\n /**\n * /github/repo-size/:user/:repo\n */\n if (type === 'repo-size') {\n return [base, platform, type, user, repo].join('/');\n }\n /**\n * /github/size/:user/:repo/:path*\n */\n if (type === 'size' && path) {\n return [base, platform, type, user, repo, path].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface ActivityProps extends BaseProps {\n /**\n * Github Downloads\n * \n * `/github/downloads/:user/:repo/total`\n * GitHub All Releases: GitHub All Releases badge \n * \n * `/github/downloads/:user/:repo/:tag/total`\n * GitHub Releases: GitHub Releases badge \n * \n * `/github/downloads-pre/:user/:repo/:tag/total`\n * GitHub Pre-Releases: GitHub Pre-Releases badge \n * \n * `/github/downloads/:user/:repo/:tag/total`\n * GitHub Releases (by Release): GitHub Releases (by Release) badge \n * \n * `/github/downloads/:user/:repo/:tag/:path`\n * GitHub Releases (by Asset): GitHub Releases (by Asset) badge \n * \n * `/github/downloads-pre/:user/:repo/:tag/:path`\n * GitHub Pre-Releases (by Asset): GitHub Pre-Releases (by Asset) badge \n */\n type?: 'downloads' | 'downloads-pre';\n tag?: string;\n path?: string;\n total?: boolean;\n}\n\nexport default class Activity extends Base {\n constructor(props: ActivityProps) {\n super(props, { platform: 'github', type: 'downloads', total: true });\n };\n getUrl = () => {\n const { type, platform, user, repo, base, tag, path, total } = this.state;\n if (platform !== 'github' || !/^(downloads|downloads-pre)/.test(type || '')) return '';\n\n const baseData = [base, platform, type, user, repo];\n\n if (path && tag) {\n return [...baseData, tag, path].join('/');\n }\n if ((total && tag) || (type === 'downloads-pre' && tag && total)) {\n return [...baseData, tag, 'total'].join('/');\n }\n if (total) {\n return [...baseData, 'total'].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface ActivityProps extends BaseProps {\n /**\n * `/github/commit-activity/:interval/:user/:repo`\n * GitHub commit activity: GitHub commit activity badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since tagged version: GitHub commits since tagged version badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since tagged version (branch): GitHub commits since tagged version (branch) badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since latest release: GitHub commits since latest release badge \n * \n * `/github/commits-since/:user/:repo/:version/:branch*`\n * GitHub commits since latest release (branch): GitHub commits since latest release (branch) badge \n * \n * `/github/:variant/:user/:repo`\n * GitHub contributors: GitHub contributors badge \n * \n * `/github/last-commit/:user/:repo`\n * GitHub last commit: GitHub last commit badge \n * \n * `/github/last-commit/:user/:repo/:branch`\n * GitHub last commit (branch): GitHub last commit (branch) badge \n * \n * `/github/release-date/:user/:repo`\n * GitHub Release Date: GitHub Release Date badge \n * \n * `/github/release-date-pre/:user/:repo`\n * GitHub (Pre-)Release Date: GitHub (Pre-)Release Date badge \n */\n type?: 'commit-activity' | 'commits-since' | 'variant' | 'last-commit' | 'release-date' | 'release-date-pre';\n variant?: string;\n interval?: 'y' | 'm' | 'w';\n version?: 'contributors' | 'contributors-anon';\n branch?: string;\n}\n\nexport default class Activity extends Base {\n constructor(props: ActivityProps) {\n super(props, { platform: 'github', type: 'commits-since' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base, interval, variant, version, branch } = this.state;\n if (platform !== 'github') return '';\n if (type === 'commits-since' && version && branch) {\n return [base, platform, type, user, repo, version, branch].join('/');\n }\n if (type === 'commit-activity' && interval) {\n return [base, platform, type, interval, user, repo].join('/');\n }\n if (type === 'variant' && variant) {\n return [base, platform, type, variant, user, repo].join('/');\n }\n if (type === 'last-commit') {\n return branch ? [base, platform, type, user, repo, branch].join('/') : [base, platform, type, user, repo].join('/');\n }\n if (type && /^release-(date|date-pre)/.test(type)) {\n return [base, platform, type, user, repo].join('/');\n }\n return '';\n }\n}","import Base, { BaseProps } from '../common/Base';\n\nexport interface VersionProps extends BaseProps {\n /**\n * Github Version\n * \n * `/github/go-mod/go-version/:user/:repo`\n * GitHub go.mod Go version: GitHub go.mod Go version badge \n * \n * `/github/go-mod/go-version/:user/:repo/:branch`\n * GitHub go.mod Go version (branch): GitHub go.mod Go version (branch) badge \n * \n * `/github/go-mod/go-version/:user/:repo?filename=src%2Fgo.mod`\n * GitHub go.mod Go version (subfolder of monorepo): GitHub go.mod Go version (subfolder of monorepo) badge \n * \n * `/github/go-mod/go-version/:user/:repo/:branch?filename=src%2Fgo.mod`\n * GitHub go.mod Go version (branch & subfolder of monorepo): GitHub go.mod Go version (branch & subfolder of monorepo) badge \n * \n * `/github/manifest-json/v/:user/:repo`\n * GitHub manifest version: GitHub manifest version badge \n * \n * `/github/manifest-json/v/:user/:repo/:branch`\n * GitHub manifest version: GitHub manifest version badge \n * \n * `/github/package-json/v/:user/:repo`\n * GitHub package.json version: GitHub package.json version badge \n * \n * `/github/package-json/v/:user/:repo/:branch`\n * GitHub package.json version (branch): GitHub package.json version (branch) badge \n * \n * `/github/v/release/:user/:repo`\n * GitHub release (latest by date): GitHub release (latest by date) badge \n * \n * `/github/v/release/:user/:repo?include_prereleases`\n * GitHub release (latest by date including pre-releases): GitHub release (latest by date including pre-releases) badge \n * \n * `/github/v/release/:user/:repo?sort=semver`\n * GitHub release (latest SemVer): GitHub release (latest SemVer) badge \n * \n * `/github/v/release/:user/:repo?include_prereleases&sort=semver`\n * GitHub release (latest SemVer including pre-releases): GitHub release (latest SemVer including pre-releases) badge \n * \n * `/github/v/tag/:user/:repo`\n * GitHub tag (latest by date): GitHub tag (latest by date) badge \n * \n * `/github/v/tag/:user/:repo?sort=semver`\n * GitHub tag (latest SemVer): GitHub tag (latest SemVer) badge \n * \n * `/github/v/tag/:user/:repo?include_prereleases&sort=semver`\n * GitHub tag (latest SemVer pre-release): GitHub tag (latest SemVer pre-release) badge \n */\n type?: 'version-release' | 'version-tag' | 'package-json' | 'manifest-json' | 'go-mod';\n branch?: string;\n}\n\nexport default class Version extends Base {\n constructor(props: VersionProps) {\n super(props, { platform: 'github', type: 'version-release' });\n };\n\n getUrl = () => {\n const { type, platform, user, repo, base, branch } = this.state;\n let typePath = '';\n switch (type) {\n case 'version-release': typePath = 'v/release';break;\n case 'version-tag': typePath = 'v/tag';break;\n case 'package-json': typePath = 'package-json/v';break;\n case 'manifest-json': typePath = 'manifest-json/v';break;\n case 'go-mod': typePath = 'go-mod/go-version';break;\n default:break;\n }\n if (platform !== 'github' || !typePath) return '';\n const baseData = [base, platform, typePath, user, repo];\n if (/(go-mod|manifest-json|package-json)/.test(type || '') && branch) {\n return [...baseData, branch].join('/');\n }\n return baseData.join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface LicenseProps extends BaseProps {\n /**\n * Github License\n * \n * `/github/license/:user/:repo` \n * GitHub: GitHub badge \n */\n type?: 'license';\n}\n\nexport default class License extends Base {\n constructor(props: LicenseProps) {\n super(props, { platform: 'github', type: 'license' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base } = this.state;\n if (platform !== 'github') return '';\n return [base, platform, type, user, repo].join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface AnalysisProps extends BaseProps {\n /**\n * Github Analysis\n * \n * `/github/languages/count/:user/:repo` \n * GitHub language count: GitHub language count badge \n * \n * `/github/search/:user/:repo/:query` \n * GitHub search hit counter: GitHub search hit counter badge \n * \n * `/github/languages/top/:user/:repo` \n * GitHub top language: GitHub top language badge \n */\n type?: 'languages-count' | 'languages-top' | 'search';\n query?: string;\n}\n\nexport default class Analysis extends Base {\n constructor(props: AnalysisProps) {\n super(props, { platform: 'github', type: 'languages-count' });\n };\n getUrl = () => {\n const { base, platform, type, user, repo, query } = this.state;\n let typePath = '';\n switch (type) {\n case 'languages-count': typePath = 'languages/count';break;\n case 'languages-top': typePath = 'languages/top';break;\n case 'search': typePath = 'search';break;\n default:break;\n }\n if (platform !== 'github' || !typePath) return '';\n const baseData = [base, platform, typePath, user, repo];\n if (query) {\n return [...baseData, query].join('/');\n }\n return baseData.join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface SocialProps extends BaseProps {\n /**\n * Github License\n * \n * `/github/followers/:user?label=Follow`\n * GitHub followers: GitHub followers badge \n * \n * `/github/forks/:user/:repo?label=Fork`\n * GitHub forks: GitHub forks badge \n * \n * `/github/stars/:user/:repo?style=social`\n * GitHub stars: GitHub stars badge \n * \n * `/github/watchers/:user/:repo?label=Watch`\n * GitHub watchers: GitHub watchers badge \n */\n type?: 'followers' | 'forks' | 'stars' | 'watchers';\n}\n\nexport default class Social extends Base {\n constructor(props: SocialProps) {\n super(props, { platform: 'github', type: 'followers' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base } = this.state;\n if (platform !== 'github') return '';\n if(type === 'followers') return [base, platform, type, user].join('/');\n return [base, platform, type, user, repo].join('/');\n }\n}","import Container from '../common/Container';\nimport Issues from './Issues';\nimport Size from './Size';\nimport Downloads from './Downloads';\nimport Activity from './Activity';\nimport Version from './Version';\nimport License from './License';\nimport Analysis from './Analysis';\nimport Social from './Social';\n\nexport default class Github extends Container {\n static Issues = Issues;\n static Size = Size;\n static Activity = Activity;\n static Downloads = Downloads;\n static Version = Version;\n static License = License;\n static Analysis = Analysis;\n static Social = Social;\n}","import Github from './Github';\n\nexport default Github;","import Base, { BaseProps} from '../common/Base';\n\nexport interface CoveragesProps extends BaseProps {\n /**\n * Code Coverage\n * \n * `/coveralls/:vcsType/:user/:repo`\n * Coveralls github: Coveralls github badge \n * \n * `/coveralls/:vcsType/:user/:repo/:branch`\n * Coveralls github branch: Coveralls github branch badge \n * \n * `/coveralls/:vcsType/:user/:repo`\n * Coveralls bitbucket: Coveralls bitbucket badge \n * \n * `/coveralls/:vcsType/:user/:repo/:branch`\n * Coveralls bitbucket branch: Coveralls bitbucket branch badge \n */\n type?: string;\n branch?: string;\n}\n\nexport default class Coverages extends Base {\n constructor(props: CoveragesProps) {\n super(props, { type: 'github' }, { platform: 'coveralls' });\n };\n getUrl = () => {\n const { type, platform, user, repo, base } = this.state;\n if (platform !== 'coveralls') return '';\n return [base, platform, type, user, repo].join('/');\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface CodacyProps extends BaseProps {\n /**\n * Codacy Coverage\n * \n * `/codacy/coverage/:projectId`\n * Codacy coverage: Codacy coverage badge \n * \n * `/codacy/coverage/:projectId/:branch`\n * Codacy branch coverage: Codacy branch coverage badge \n */\n projectId?: string;\n branch?: string;\n}\n\nexport default class Codacy extends Base {\n constructor(props: CodacyProps) {\n super(props, { }, { platform: 'coveralls' });\n };\n getUrl = () => {\n const { base, platform, projectId, branch } = this.state;\n if (platform !== 'coveralls') return '';\n if (branch) return [base, platform, projectId, branch].join('/');\n return [base, 'codacy/coverage', projectId].join('/');\n }\n}","import Container from '../common/Container';\nimport Coverages from './Coverages';\nimport Codacy from './Codacy';\n\n\nexport default class Coverage extends Container {\n static Coverages = Coverages;\n static Codacy = Codacy;\n}","import Coverage from './Coverage';\n\nexport default Coverage;","import Base, { BaseProps} from '../common/Base';\n\n/**\n * NPM Version\n * \n * `/npm/v/:packageName` \n * npm: npm badge \n * \n * `/npm/v/:scope/:packageName` \n * npm (scoped): npm (scoped) badge \n * \n * `/npm/v/:packageName/:tag` \n * npm (tag): npm (tag) badge \n * \n * `/npm/v/:packageName/:tag?registry_uri=https%3A%2F%2Fregistry.npmjs.com` \n * npm (custom registry): npm (custom registry) badge \n * \n * `/npm/v/:scope/:packageName/:tag` \n * npm (scoped with tag): npm (scoped with tag) badge \n * \n * `/npm/dependency-version/:packageName/peer/:dependency`\n * npm peer dependency version: npm peer dependency version badge \n * \n * `/npm/dependency-version/:scope?/:packageName/dev/:dependencyScope?/:dependency`\n * npm peer dependency version (scoped): npm peer dependency version (scoped) badge \n * \n * `/npm/dependency-version/:packageName/dev/:dependency`\n * npm dev dependency version: npm dev dependency version badge \n * \n * `/npm/dependency-version/:scope?/:packageName/dev/:dependencyScope?/:dependency`\n * npm dev dependency version (scoped): npm dev dependency version (scoped) badge \n * \n * `/npm/dependency-version/:packageName/:dependency`\n * npm (prod) dependency version: npm (prod) dependency version badge \n * \n * `/npm/dependency-version/:scope?/:packageName/:dependencyScope?/:dependency`\n * npm (prod) dependency version (scoped): npm (prod) dependency version (scoped) badge \n * \n * `/npm/types/:packageName`\n * npm type definitions: npm type definitions badge \n */\nexport interface VersionProps extends BaseProps {\n type?: 'version' | 'peer-dependency' | 'dev-dependency';\n registryUri?: string;\n packageName?: string;\n dependency?: string;\n scope?: string;\n dependencyScope?: string;\n version?: string;\n}\n\nexport default class Version extends Base {\n constructor(props: VersionProps) {\n super(props, { type: 'version' }, { platform: 'npm' });\n };\n getUrl = () => {\n const { base, platform, type, scope, packageName, dependency, dependencyScope, version, registryUri } = this.state;\n if (platform !== 'npm' || !packageName) return '';\n\n let url = '';\n const baseData = [base, platform];\n\n if (type === 'version' && packageName) {\n baseData.push('v');\n if (scope) {\n baseData.push(scope);\n }\n baseData.push(packageName);\n if (version) {\n baseData.push(version);\n }\n url = baseData.join('/');\n if (registryUri) {\n url = `${url}?registry_uri=${registryUri}`;\n }\n } else if (type === 'peer-dependency' && packageName && dependency) {\n baseData.push('dependency-version');\n if (scope) {\n baseData.push(scope);\n }\n url = [...baseData, packageName, 'peer', dependency].join('/');\n } else if (type === 'dev-dependency' && packageName && dependency) {\n baseData.push('dependency-version');\n if (scope) {\n baseData.push(scope);\n }\n baseData.concat([packageName, 'dev']);\n if (dependencyScope) {\n baseData.push(dependencyScope);\n }\n baseData.push(dependency);\n url = baseData.join('/');\n } else if (packageName && dependency) {\n baseData.concat([packageName, dependency]);\n url = baseData.join('/');\n }\n\n return url;\n }\n}","import Base, { BaseProps} from '../common/Base';\n\nexport interface SizeProps extends BaseProps {\n format?: 'min' | 'minzip';\n packageName?: string;\n scope?: string;\n version?: string;\n}\n\n/**\n * Npm Size\n * \n * `/bundlephobia/:format/:packageName`\n * npm bundle size: npm bundle size badge \n * \n * `/bundlephobia/:format/:scope/:packageName`\n * npm bundle size (scoped): npm bundle size (scoped) badge \n * \n * `/bundlephobia/:format/:packageName/:version`\n * npm bundle size (version): npm bundle size (version) badge \n * \n * `/bundlephobia/:format/:scope/:packageName/:version`\n * npm bundle size (scoped version): npm bundle size (scoped version) badge \n * \n */\nexport default class Size extends Base {\n constructor(props: SizeProps) {\n super(props, { format: 'min' }, { platform: 'npm' });\n };\n getUrl = () => {\n const { base, platform, format, packageName, scope, version } = this.state;\n if (platform !== 'npm') return '';\n\n const baseData = [base, 'bundlephobia'];\n let url = '';\n\n if (packageName && format) {\n url = [...baseData, format, packageName].join('/');\n }\n if (packageName && format && scope) {\n url = [...baseData, format, scope, packageName].join('/');\n }\n if (packageName && format && scope && version) {\n url = [...baseData, format, scope, packageName, version].join('/');\n }\n if (packageName && format && version) {\n url = [...baseData, format, packageName, version].join('/');\n }\n\n return url;\n }\n}","import Container from '../common/Container';\nimport Version from './Version';\nimport Size from './Size';\n\nexport default class Npm extends Container {\n static Version = Version;\n static Size = Size;\n}","import Npm from './Npm';\n\nexport default Npm;","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\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 | PointLike | null | 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 | PositionLike | null | 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 | null | 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\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason` at `place` from `origin`.\n *\n * When an error is passed in as `reason`, the `stack` is copied.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n *\n * > 👉 **Note**: you should use markdown.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // To do: next major: expose `undefined` everywhere instead of `null`.\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 // To do: next major: deep clone.\n // @ts-expect-error: looks like a position.\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n // @ts-expect-error: looks like a position.\n // To do: next major: deep clone.\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n // To do: next major: deep clone.\n position.start = place\n }\n }\n\n // Fields from `Error`.\n /**\n * Serialized positional info of error.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(place) || '1:1'\n\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = typeof reason === 'object' ? reason.message : reason\n\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack = ''\n\n if (typeof reason === 'object' && reason.stack) {\n this.stack = reason.stack\n }\n\n /**\n * Reason for message.\n *\n * > 👉 **Note**: you should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /* eslint-disable no-unused-expressions */\n /**\n * State of problem.\n *\n * * `true` — marks associated file as no longer processable (error)\n * * `false` — necessitates a (potential) change (warning)\n * * `null | undefined` — for things that might not need changing (info)\n *\n * @type {boolean | null | undefined}\n */\n this.fatal\n\n /**\n * Starting line of error.\n *\n * @type {number | null}\n */\n this.line = position.start.line\n\n /**\n * Starting column of error.\n *\n * @type {number | null}\n */\n this.column = position.start.column\n\n /**\n * Full unist position.\n *\n * @type {Position | null}\n */\n this.position = position\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | null}\n */\n this.source = parts[0]\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | null}\n */\n this.ruleId = parts[1]\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | null}\n */\n this.file\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 /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | null}\n */\n this.actual\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array | null}\n */\n this.expected\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | null}\n */\n this.url\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | null}\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// .\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// .\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 * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\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 * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\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 * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\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 * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\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 * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\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 * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\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 * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\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// .\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 * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \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","/// \n\nimport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {string | URL} path\n * File URL.\n * @returns {string}\n * File URL.\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 * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\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 {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {Record & {type: string, position?: Position | undefined}} NodeLike\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 *\n * This is a copy of the types from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: \n *\n * @typedef {Options | URL | Value | VFile} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {Value | null | undefined} [value]\n * Set `value`.\n * @property {string | null | undefined} [cwd]\n * Set `cwd`.\n * @property {Array | null | undefined} [history]\n * Set `history`.\n * @property {URL | string | null | undefined} [path]\n * Set `path`.\n * @property {string | null | undefined} [basename]\n * Set `basename`.\n * @property {string | null | undefined} [stem]\n * Set `stem`.\n * @property {string | null | undefined} [extname]\n * Set `extname`.\n * @property {string | null | undefined} [dirname]\n * Set `dirname`.\n * @property {Data | null | undefined} [data]\n * Set `data`.\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template {ReporterSettings} Settings\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport bufferLike 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/**\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.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Buffer` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\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 * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n *\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 *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | 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 (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\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)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\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 *\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 *\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 *\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 *\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 *\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 *\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 | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Buffer`\n * (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding || undefined)\n }\n\n /**\n * Create a warning message associated with the file.\n *\n * Its `fatal` is set to `false` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\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 * Create an info message associated with the file.\n *\n * Its `fatal` is set to `null` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\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 * Create a fatal error associated with the file.\n *\n * Its `fatal` is set to `true` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Message.\n * @throws {VFileMessage}\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 | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {void}\n * Nothing.\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 * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\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 * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Buffer}\n * Whether `value` is a Node.js buffer.\n */\nfunction buffer(value) {\n return bufferLike(value)\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}","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}","/**\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) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => 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} */\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} 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} 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} */\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} [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|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} 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|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|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} 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 {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\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 * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n chunkStart += 10000\n start += 10000\n }\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 * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * 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\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\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/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\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 multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML 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\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\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 {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\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.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\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\\u1B7D\\u1B7E\\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-\\u2E5D\\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 */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\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 * Code.\n * @returns {boolean}\n * Whether it matches.\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/**\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\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 * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\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 * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\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 * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\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 * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\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 * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\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\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\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').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\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 let previous\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) {\n previous.next = token\n }\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n return start\n\n /** @type {State} */\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 }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++\n\n // 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 if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\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 exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n return checkNewContainers(code)\n }\n return start(code)\n }\n\n /** @type {State} */\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 }\n\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 if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\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 // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\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\n /** @type {State} */\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\n /** @type {State} */\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\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\n /** @type {State} */\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 if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow'))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\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)\n\n // 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 if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …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 }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\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 seen = true\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n stack.length = size\n }\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code)\n ? factorySpace(effects, after, 'linePrefix')(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\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').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport {splice} from 'micromark-util-chunked'\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array} */\n let parameters\n /** @type {Array} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n event = events[index]\n\n // 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 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 if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\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 if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\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 }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n while (otherIndex--) {\n otherEvent = events[otherIndex]\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 otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array} */\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record} */\n const gaps = {}\n /** @type {Array} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition)\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n if (!current.next) {\n stream.push(null)\n }\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n tokenizer.write(stream)\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\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)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // 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 if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n }\n\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 index = breaks.length\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 index = -1\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 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').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\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\n/** @type {Construct} */\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\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 */\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous\n return chunkStart\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return chunkInside(code)\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n }\n\n // Data.\n effects.consume(code)\n return chunkInside\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n /**\n *\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 chunkInside\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n\n /**\n *\n *\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\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1]\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 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 * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\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,\n // 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\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\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').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\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\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true\n }\n const list = constructs[code]\n let index = -1\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\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 enter = undefined\n }\n }\n return extraResolver ? extraResolver(events, context) : events\n }\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 */\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 let tabs\n while (index--) {\n const chunk = chunks[index]\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n if (bufferIndex) break\n bufferIndex = -1\n }\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 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 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 eventIndex++\n }\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\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').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} 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 */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\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 | undefined} [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} */\n const columnStart = {}\n /** @type {Array} */\n const resolveAllConstructs = []\n /** @type {Array} */\n let chunks = []\n /** @type {Array} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\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 /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\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 /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice)\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n }\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n }\n\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 function main() {\n /** @type {number} */\n let chunkIndex\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\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 /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\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 }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\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\n /** @type {Effects['exit']} */\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 /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n return Array.isArray(constructs) /* c8 ignore next 1 */\n ? handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\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 /* 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 /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n if (list.length === 0) {\n return bogusState\n }\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\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 if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\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\n /** @type {State} */\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true\n info.restore()\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\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 if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\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 /**\n * Restore state.\n *\n * @returns {void}\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 /**\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 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/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\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} */\n let view\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 if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n view.shift()\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 return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n case -4: {\n value = '\\n'\n break\n }\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n atTab = chunk === -2\n result.push(value)\n }\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('thematicBreak')\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit('thematicBreak')\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n effects.exit('thematicBreakSequence')\n return markdownSpace(code)\n ? factorySpace(effects, atBreak, 'whitespace')(code)\n : atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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\n/** @type {Construct} */\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\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\n /** @type {State} */\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\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 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 if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\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 return nok(code)\n }\n\n /**\n * @type {State}\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,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\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 return nok(code)\n }\n\n /** @type {State} */\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/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\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 self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n\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/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\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\n /** @type {State} */\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/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n\n /** @type {State} */\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').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\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 effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this\n return contStart\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n contBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return contBefore(code)\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code)\n }\n}\n\n/** @type {Exiter} */\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 * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\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\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\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 enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(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 effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return enclosed\n }\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === null || code === 41 || markdownLineEndingOrSpace(code))\n ) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n if (balance < limit && code === 40) {\n effects.consume(code)\n balance++\n return raw\n }\n if (code === 41) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return raw\n }\n return raw(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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\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 let seen\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\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\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > 999 ||\n code === null ||\n code === 91 ||\n (code === 93 && !seen) ||\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 // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\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 // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(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 effects.consume(code)\n if (!seen) seen = !markdownSpace(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\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 labelInside\n }\n return labelInside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return begin\n }\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(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 effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n if (code === null) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atBreak, 'linePrefix')\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n return code === 92 ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return inside\n }\n return inside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n\n /** @type {State} */\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 if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // 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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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 {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n tokenize: tokenizeTitleBefore,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n let identifier\n return start\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter('definition')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\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 if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n return markerAfter\n }\n return nok(code)\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, destinationBefore)(code)\n : destinationBefore(code)\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(\n effects,\n destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )(code)\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code)\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code)\n ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n : afterWhitespace(code)\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier)\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, beforeMarker)(code)\n : nok(code)\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(\n effects,\n titleAfter,\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code)\n ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n : titleAfterOptionalWhitespace(code)\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n tokenize: tokenizeFurtherStart,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter('codeIndented')\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\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 ? atBreak(code)\n : nok(code)\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return inside(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return atBreak(code)\n }\n effects.consume(code)\n return inside\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('codeIndented')\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this\n return furtherStart\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\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 if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return furtherStart\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\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 ? furtherStart(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').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n let content\n /** @type {Token} */\n let text\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n }\n\n // Suffix whitespace, part of the closing.\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\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 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 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 return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter('atxHeading')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('atxHeadingSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return sequenceOpen\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n return nok(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequenceFurther(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code)\n return sequenceFurther\n }\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return atBreak(code)\n }\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n if (events[index][1].type === 'paragraph') {\n text = index\n }\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 if (!definition && events[index][1].type === 'definition') {\n definition = index\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 }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = 'setextHeadingText'\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\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 }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n // Find an opening.\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 // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n marker = code\n return before(code)\n }\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('setextHeadingLineSequence')\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n effects.exit('setextHeadingLineSequence')\n return markdownSpace(code)\n ? factorySpace(effects, after, 'lineSuffix')(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * 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 * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\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 'search',\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 “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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\n/** @type {Construct} */\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n tokenize: tokenizeBlankLineBefore,\n partial: true\n}\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\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\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start\n // Remove the line prefix.\n events.splice(index - 2, 2)\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n let marker\n /** @type {boolean} */\n let closingTag\n /** @type {string} */\n let buffer\n /** @type {number} */\n let index\n /** @type {Code} */\n let markerB\n return start\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n closingTag = true\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n marker = 3\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // 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 return self.interrupt ? ok : continuationDeclarationInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n marker = 2\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n marker = 5\n index = 0\n return cdataOpenInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n marker = 4\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | &<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | \n * ^^\n * > | \n * ^^\n * ```\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 const slash = code === 47\n const name = buffer.toLowerCase()\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6\n if (slash) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n marker = 7\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : closingTag\n ? completeClosingTagAfter(code)\n : completeAttributeNameBefore(code)\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > |
\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n return completeEnd(code)\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n return completeEnd(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\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 return completeAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n return completeAttributeNameBefore(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\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 if (code === 34 || code === 39) {\n effects.consume(code)\n markerB = code\n return completeAttributeValueQuoted\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n return completeAttributeValueUnquoted(code)\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code)\n markerB = null\n return completeAttributeValueQuotedAfter\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 47 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n if (code === 60 && marker === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n if (code === 62 && marker === 4) {\n effects.consume(code)\n return continuationClose\n }\n if (code === 63 && marker === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n if (code === 93 && marker === 5) {\n effects.consume(code)\n return continuationCdataInside\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit('htmlFlowData')\n return effects.check(\n blankLineBefore,\n continuationAfter,\n continuationStart\n )(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationStart(code)\n }\n effects.consume(code)\n return continuation\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(\n nonLazyContinuationStart,\n continuationStartNonLazy,\n continuationAfter\n )(code)\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return continuationBefore\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | \n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code)\n }\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\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 return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\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 infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\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\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\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 effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\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 effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\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 inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\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 return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\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').Event} Event\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\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 return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\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 }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\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 if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\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 ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\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 )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\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 return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\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 after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(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 return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(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 /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(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 return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\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\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\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 return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\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 */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * 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**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // 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 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\n\n // Now walk back to find an opener.\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 &&\n // 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 }\n\n // Number of markers to use from the sequence.\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 = []\n\n // If there are more markers in the opening, add them before.\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 }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\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 splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\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\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\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/**\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 */\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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\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\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\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 if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\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\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\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 return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\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 if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\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 if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\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 return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\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\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\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\n\n // And we have data.\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 }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\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 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 enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\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\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\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 between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\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\n/** @satisfies {Extension['document']} */\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\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\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\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\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\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\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 if (!match) {\n buffer = value.slice(startPosition)\n break\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 if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\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 * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\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/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\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 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 *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\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 * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into 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 {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} 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 {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\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/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\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 configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\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 index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\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 // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\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\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\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 let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\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 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 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 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 while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\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 if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\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 }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\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])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\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 node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\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\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\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\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\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 if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\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\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\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 */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\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/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\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 /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\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/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\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 * 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`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * 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]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\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 * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // 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) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\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\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\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\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => 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 if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\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/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\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 {Array} 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 * Turn an object into a test for a node with a certain fields.\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 * Turn a string into a test for a node with a certain type.\n *\n * @param {string} 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 * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\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 */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\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/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\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, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\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} */\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 * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\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 */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\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} 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 {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * 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 * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\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} */\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} 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}\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} 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} */\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: .\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} */\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}\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 ``.\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 `
`.\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// * \n// * \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}\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}\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} */\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} 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} */\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} 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 | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record & 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 | 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 | 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 | 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} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} 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 {(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 | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n *   Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} 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} 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 | 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} 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} */\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} */\n  state.footnoteOrder = []\n  /** @type {Record} */\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: .\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 | 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}\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 | 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}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array} */\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} 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}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array} */\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 * 

\n * \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 `
` 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} */\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} */\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} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` 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","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} [allowedElements]\n * @property {Array} [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 * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n * Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`).\n * If a node is passed it must be a `Text` node, whose `value` field is\n * checked.\n */\nexport function whitespace(thing) {\n /** @type {string} */\n const value =\n // @ts-expect-error looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-expect-error looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See .\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record}\n */\nexport 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","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} ComponentType\n */\n\n/**\n * @template {import('react').ElementType} T\n * @typedef {import('react').ComponentPropsWithoutRef} ComponentPropsWithoutRef\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} 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} 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, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record, 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} CodeComponent\n * @typedef {ComponentType} HeadingComponent\n * @typedef {ComponentType} LiComponent\n * @typedef {ComponentType} OrderedListComponent\n * @typedef {ComponentType} TableDataCellComponent\n * @typedef {ComponentType} TableHeaderCellComponent\n * @typedef {ComponentType} TableRowComponent\n * @typedef {ComponentType} 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 & 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} */\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: .\n // See: .\n // See: .\n // See: .\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} */\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 = index\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} 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}\n */\nfunction parseStyle(value) {\n /** @type {Record} */\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} */\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","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n}\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n// To do: next major: expose functions that yields extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n *\n * @type {Extension}\n */\nexport const gfmAutolinkLiteral = {\n text\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean | undefined} */\n let dot\n /** @type {boolean} */\n let data\n return start\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n if (code === 64) {\n effects.consume(code)\n return emailDomain\n }\n return nok(code)\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: \n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code)\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true\n effects.consume(code)\n return emailDomain\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code)\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code)\n dot = true\n return emailDomain\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: .\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return wwwStart\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code)\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this\n let buffer = ''\n let seen = false\n return protocolStart\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if (\n (code === 72 || code === 104) &&\n previousProtocol.call(self, self.previous) &&\n !previousUnbalanced(self.events)\n ) {\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n return nok(code)\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase()\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code)\n return protocolSlashesInside\n }\n }\n return nok(code)\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code)\n if (seen) {\n return afterProtocol\n }\n seen = true\n return protocolSlashesInside\n }\n return nok(code)\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null ||\n asciiControl(code) ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0\n return wwwPrefixInside\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++\n effects.consume(code)\n return wwwPrefixInside\n }\n if (code === 46 && size === 3) {\n effects.consume(code)\n return wwwPrefixAfter\n }\n return nok(code)\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code)\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment\n /** @type {boolean | undefined} */\n let seen\n return domainInside\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n }\n\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 // Source: .\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return domainAfter(code)\n }\n seen = true\n effects.consume(code)\n return domainInside\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment\n underscoreInLastSegment = undefined\n }\n effects.consume(code)\n return domainInside\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // \n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code)\n }\n return ok(code)\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0\n let sizeClose = 0\n return pathInside\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++\n effects.consume(code)\n return pathInside\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code)\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (\n code === 33 ||\n code === 34 ||\n code === 38 ||\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 === 93 ||\n code === 95 ||\n code === 126\n ) {\n return effects.check(trail, ok, pathAtPunctuation)(code)\n }\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n effects.consume(code)\n return pathInside\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++\n }\n effects.consume(code)\n return pathInside\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (\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 === 63 ||\n code === 95 ||\n code === 126\n ) {\n effects.consume(code)\n return trail\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code)\n return trailCharRefStart\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // .\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code)\n return trailBracketAfter\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (\n code === null ||\n code === 40 ||\n code === 91 ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return trail(code)\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code)\n return trail\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return trailCharRefInside\n }\n\n // It’s not a trail.\n return nok(code)\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code)\n return after\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code)\n }\n}\n\n/**\n * See:\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 === 91 ||\n code === 93 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: .\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n\n/**\n * @param {Array} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n while (index--) {\n const token = events[index][1]\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\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\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1]\n if (token.type === 'labelImage') {\n labelStart = token\n break\n }\n\n // Exit if we’ve walked far enough.\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 return start\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token | undefined} */\n let labelStart\n\n // Find an opening.\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 // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n // The whole (without `!`):\n /** @type {Token} */\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 }\n // The `^` marker\n /** @type {Token} */\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 }\n // Increment the end 1 character.\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n /** @type {Token} */\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n\n /** @type {Array} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n ['enter', marker, context],\n ['exit', marker, context],\n // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context],\n // 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\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n let data\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\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\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\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\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteCallString')\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? callEscape : callData\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\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 return callData(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n let identifier\n let size = 0\n /** @type {boolean | undefined} */\n let data\n return start\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\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 labelAtMarker\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n effects.enter('chunkString').contentType = 'string'\n return labelInside\n }\n return nok(code)\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const 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 if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > \n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\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 labelInside\n }\n return labelInside(code)\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\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')\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n // 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 return factorySpace(\n effects,\n whitespaceAfter,\n 'gfmFootnoteDefinitionWhitespace'\n )\n }\n return nok(code)\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\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\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\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\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').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [singleTilde=true]\n * Whether to support strikethrough with a single tilde.\n *\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {}\n let single = options_.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n if (single === null || single === undefined) {\n single = true\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1\n\n // Walk through all events.\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\n\n // Now walk back to find an opener.\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 &&\n // 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\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n\n // Opening.\n /** @type {Array} */\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n const insideSpan = context.parser.constructs.insideSpan.null\n if (insideSpan) {\n // Between.\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n )\n }\n\n // Closing.\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 index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n return events\n }\n\n /**\n * @this {TokenizeContext}\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\n /** @type {State} */\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous)\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 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').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array}\n */\n this.map = []\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {void}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add)\n }\n\n // To do: not used here.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {void}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {void}\n */\n consume(events) {\n this.map.sort((a, b) => a[0] - b[0])\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length\n /** @type {Array>} */\n const vecs = []\n while (index > 0) {\n index -= 1\n vecs.push(events.slice(this.map[index][0] + this.map[index][1]))\n // eslint-disable-next-line unicorn/no-array-push-push\n vecs.push(this.map[index][2])\n\n // Truncate rest.\n events.length = this.map[index][0]\n }\n vecs.push([...events])\n events.length = 0\n let slice = vecs.pop()\n while (slice) {\n events.push(...slice)\n slice = vecs.pop()\n }\n\n // Truncate everything.\n this.map.length = 0\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array} add\n * @returns {void}\n */\nfunction addImpl(editMap, at, remove, add) {\n let index = 0\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove\n\n // To do: before not used.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add)\n // }\n\n return\n }\n index += 1\n }\n editMap.map.push([at, remove, add])\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array} events\n// * @param {Array} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// console.log('to do: links?', add, rmCurr)\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'left' | 'center' | 'right' | 'none'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Array} events\n * @param {number} index\n * @returns {Array}\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false\n /** @type {Array} */\n const align = []\n while (index < events.length) {\n const event = events[index]\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(\n events[index + 1][1].type === 'tableDelimiterMarker'\n ? 'left'\n : 'none'\n )\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true\n }\n index += 1\n }\n return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n// To do: next major: expose functions.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n *\n * @type {Extension}\n */\nexport const gfmTable = {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n let size = 0\n let sizeB = 0\n /** @type {boolean | undefined} */\n let seen\n return start\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1\n while (index > -1) {\n const type = self.events[index][1].type\n if (\n type === 'lineEnding' ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === 'linePrefix'\n )\n index--\n else break\n }\n const tail = index > -1 ? self.events[index][1].type : null\n const next =\n tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n return next(code)\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead')\n effects.enter('tableRow')\n return headRowStart(code)\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code)\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1\n return headRowBreak(code)\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true\n effects.exit('tableRow')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return headDelimiterStart\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, 'whitespace')(code)\n }\n sizeB += 1\n if (seen) {\n seen = false\n // Header cell count.\n size += 1\n }\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n // Whether a delimiter was seen.\n seen = true\n return headRowBreak\n }\n\n // Anything else is cell data.\n effects.enter('data')\n return headRowData(code)\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return headRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? headRowEscape : headRowData\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return headRowData\n }\n return headRowData(code)\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n effects.enter('tableDelimiterRow')\n // Track if we’ve seen a `:` or `|`.\n seen = false\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return headDelimiterBefore(code)\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code)\n }\n if (code === 124) {\n seen = true\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return headDelimiterCellBefore\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code)\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n }\n return headDelimiterValueBefore(code)\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1\n seen = true\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterLeftAlignmentAfter\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code)\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n return headDelimiterFiller(code)\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code)\n return headDelimiterFiller\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true\n effects.exit('tableDelimiterFiller')\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterRightAlignmentAfter\n }\n effects.exit('tableDelimiterFiller')\n return headDelimiterRightAlignmentAfter(code)\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n }\n return headDelimiterCellAfter(code)\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code)\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code)\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow')\n effects.exit('tableHead')\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow')\n return bodyRowBreak(code)\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return bodyRowBreak\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow')\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n }\n\n // Anything else is cell content.\n effects.enter('data')\n return bodyRowData(code)\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return bodyRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? bodyRowEscape : bodyRowData\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return bodyRowData\n }\n return bodyRowData(code)\n }\n}\n\n/** @type {Resolver} */\n// eslint-disable-next-line complexity\nfunction resolveTable(events, context) {\n let index = -1\n let inFirstCellAwaitingPipe = true\n /** @type {RowKind} */\n let rowKind = 0\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0]\n /** @type {Range} */\n let cell = [0, 0, 0, 0]\n let afterHeadAwaitingFirstBodyRow = false\n let lastTableEnd = 0\n /** @type {Token | undefined} */\n let currentTable\n /** @type {Token | undefined} */\n let currentBody\n /** @type {Token | undefined} */\n let currentCell\n const map = new EditMap()\n while (++index < events.length) {\n const event = events[index]\n const token = event[1]\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n currentBody = undefined\n lastTableEnd = 0\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentTable, context]])\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n inFirstCellAwaitingPipe = true\n currentCell = undefined\n lastCell = [0, 0, 0, 0]\n cell = [0, index + 1, 0, 0]\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentBody, context]])\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n }\n // Cell data.\n else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n inFirstCellAwaitingPipe = false\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n lastCell = [0, 0, 0, 0]\n }\n cell[2] = index\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n }\n lastCell = cell\n cell = [lastCell[1], index, 0, 0]\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true\n lastTableEnd = index\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n lastTableEnd = index\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n )\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n }\n rowKind = 0\n } else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n cell[3] = index\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n }\n map.consume(context.events)\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1\n while (++index < context.events.length) {\n const event = context.events[index]\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index)\n }\n }\n return events\n}\n\n/// Generate a cell.\n/**\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {Range} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName =\n rowKind === 1\n ? 'tableHeader'\n : rowKind === 2\n ? 'tableDelimiter'\n : 'tableData'\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent'\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n map.add(range[0], 0, [['exit', previousCell, context]])\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1])\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n }\n map.add(range[1], 0, [['enter', previousCell, context]])\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2])\n const relatedEnd = getPoint(context.events, range[3])\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n }\n map.add(range[2], 0, [['enter', valueToken, context]])\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]]\n const end = context.events[range[3]]\n start[1].end = Object.assign({}, end[1].end)\n start[1].type = 'chunkText'\n start[1].contentType = 'text'\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1\n const b = range[3] - range[2] - 1\n map.add(a, b, [])\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n map.add(rowEnd, 0, [['exit', previousCell, context]])\n previousCell = undefined\n }\n return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array} */\n const exits = []\n const related = getPoint(context.events, index)\n if (tableBody) {\n tableBody.end = Object.assign({}, related)\n exits.push(['exit', tableBody, context])\n }\n table.end = Object.assign({}, related)\n exits.push(['exit', table, context])\n map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Array} events\n * @param {number} index\n * @returns {readonly Point}\n */\nfunction getPoint(events, index) {\n const event = events[index]\n const side = event[0] === 'enter' ? 'start' : 'end'\n return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEndingOrSpace,\n markdownLineEnding,\n markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\n\n// To do: next major: expose function to make extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM task list items syntax.\n *\n * @type {Extension}\n */\nexport const gfmTaskListItem = {\n text: {\n [91]: tasklistCheck\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // 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 effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n return nok(code)\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\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 after\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code)\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )(code)\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, 'whitespace')\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code)\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 {import('mdast').Parent} MdastParent\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 {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {Extract} Parent\n * @typedef {Exclude} ContentParent\n *\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[Root, ...Array, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array | PhrasingContent | string | false | undefined | null}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array`, replace with those nodes\n *\n * @typedef {string | RegExp} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array} FindAndReplaceList\n * Several find and replaces, in array form.\n * @typedef {Record} FindAndReplaceSchema\n * Several find and replaces, in object form.\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * Find and replace in tuple form.\n * @typedef {string | ReplaceFunction} Replace\n * Thing to replace with.\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n * @typedef {Array} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore.\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 * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param tree\n * Tree to change.\n * @param find\n * Patterns to find.\n * @param replace\n * Things to replace with (when `find` is `Find`) or configuration.\n * @param options\n * Configuration (when `find` is not `Find`).\n * @returns\n * Given, modified, tree.\n */\n// To do: next major: remove `find` & `replace` combo, remove schema.\nexport const findAndReplace =\n /**\n * @type {(\n * ((tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n * ((tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)\n * )}\n **/\n (\n /**\n * @template {Node} Tree\n * @param {Tree} tree\n * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find\n * @param {Replace | Options | null | undefined} [replace]\n * @param {Options | null | undefined} [options]\n * @returns {Tree}\n */\n function (tree, find, replace, options) {\n /** @type {Options | null | 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 // To do next major: don’t return the given tree.\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types.js').BuildVisitor} */\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 = parents[index]\n\n if (\n ignored(\n parent,\n // @ts-expect-error: TS doesn’t understand but it’s perfect.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\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} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n // @ts-expect-error: stack is fine.\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 // It wasn’t a match after all.\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 * Turn a schema into pairs.\n *\n * @param {FindAndReplaceSchema | FindAndReplaceList} schema\n * Schema.\n * @returns {Pairs}\n * Clean 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 * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\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').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n// To do: next major: expose functions instead of extensions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM autolink literals.\n *\n * @type {FromMarkdownExtension}\n */\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/**\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n *\n * @type {ToMarkdownExtension}\n */\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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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 * @returns {Link | Array | false}\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 {Link} */\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 * @returns {Link | false}\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\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let 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 return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [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('../types.js').AssociationId} AssociationId\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\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:\n * controversially, character escapes and references don’t work in this\n * matching: `©` does not match `©`, and `\\+` does not match `+`.\n *\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\n * escapes and all character references.\n *\n * @type {AssociationId}\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('../types.js').FlowContent} FlowContent\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * @param {Parent & {children: Array}} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nexport function containerFlow(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n const tracker = state.createTracker(info)\n /** @type {Array} */\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 state.handle(child, parent, state, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n state.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(\n tracker.move(between(child, children[index + 1], parent, state))\n )\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n\n/**\n * @param {Node} left\n * @param {Node} right\n * @param {Parent} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n let index = state.join.length\n\n while (index--) {\n const result = state.join[index](left, right, parent, state)\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 * @typedef {import('../types.js').IndentLines} IndentLines\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nexport function indentLines(value, map) {\n /** @type {Array} */\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 * @typedef {import('../types.js').ConstructName} ConstructName\n */\n\n/**\n * @param {Array} 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} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\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').State} State\n * @typedef {import('../types.js').SafeConfig} SafeConfig\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {string | null | undefined} input\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nexport function safe(state, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const result = []\n /** @type {Record} */\n const infos = {}\n let index = -1\n\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n if (!patternInScope(state.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} */\n const positions = []\n /** @type {Array} */\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('../types.js').CreateTracker} CreateTracker\n * @typedef {import('../types.js').TrackCurrent} TrackCurrent\n * @typedef {import('../types.js').TrackMove} TrackMove\n * @typedef {import('../types.js').TrackShift} TrackShift\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nexport function track(config) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = config || {}\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 * @type {TrackCurrent}\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 * @type {TrackShift}\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past some generated markdown.\n *\n * @type {TrackMove}\n */\n function move(input) {\n // eslint-disable-next-line unicorn/prefer-default-parameters\n const value = input || ''\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('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\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\nfootnoteReference.peek = footnoteReferencePeek\n\n// To do: next major: rename `context` -> `state`, `safeOptions` to `info`, use\n// utilities on `state`.\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\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\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction 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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction 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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction 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} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction 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\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').Handle} Handle\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').PhrasingContent} PhrasingContent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {Parent & {children: Array}} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nexport function containerPhrasing(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n /** @type {Array} */\n const results = []\n let index = -1\n let before = info.before\n\n indexStack.push(-1)\n let tracker = state.createTracker(info)\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 /** @type {Handle} */\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n let handle = state.handle.handlers[children[index + 1].type]\n /** @type {Handle} */\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, state, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = info.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: \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 = state.createTracker(info)\n tracker.move(results.join(''))\n }\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\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 *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\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// To do: next major: expose functions.\n// To do: next major: use `state`, state utilities.\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: \n *\n * @type {Array}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmStrikethroughFromMarkdown = {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmStrikethroughToMarkdown = {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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('strikethrough')\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').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parent | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\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 < state.unsafe.length) {\n const pattern = state.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 * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|ReadonlyArray} [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 {ReadonlyArray>} 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} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\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} */\n const row = []\n /** @type {Array} */\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} */\n const row = []\n /** @type {Array} */\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} */\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} */\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').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n *\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\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\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells.\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters.\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells\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// To do: next major: use `state` and `state` utilities from `mdast-util-to-markdown`.\n// To do: next major: use `defaultHandlers.inlineCode`.\n// To do: next major: expose functions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n *\n * @type {FromMarkdownExtension}\n */\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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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 * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\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 // \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 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 const value = serializeData([row])\n // `markdown-table` will always add an align 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>} matrix\n * @param {Array | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\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>} */\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} */\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('../types.js').Map} Map\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Info} Info\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parent | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\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 (state.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 = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, 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').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkListItemIndent(state) {\n const style = state.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').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBullet(state) {\n const marker = state.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 {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\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\n/**\n * @typedef {Extract} Parents\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// To do: next major: rename `context` -> `state`, `safeOptions` -> `info`, use\n// `track` from `state`.\n// To do: next major: replace exports with functions.\n// To do: next major: use `defaulthandlers.listItem`.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTaskListItemFromMarkdown = {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmTaskListItemToMarkdown = {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\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/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = /** @type {Parents} */ (this.stack[this.stack.length - 2])\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\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\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').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('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\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 * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral,\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable,\n gfmTaskListItem\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration.\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\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 * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\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 * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown,\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown,\n gfmTableFromMarkdown,\n gfmTaskListItemFromMarkdown\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\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('./core.js').HChild} Child\n * Acceptable child value.\n * @typedef {import('./core.js').HProperties} Properties\n * Acceptable value for element properties.\n * @typedef {import('./core.js').HResult} Result\n * Result from a `h` (or `s`) call.\n *\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic.js').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","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 * Map of web namespaces.\n *\n * @type {Record}\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').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {import('parse5').Token.ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Token.Location} P5Location\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {DefaultTreeAdapterMap['document']} P5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} P5DocumentFragment\n * @typedef {DefaultTreeAdapterMap['documentType']} P5DocumentType\n * @typedef {DefaultTreeAdapterMap['commentNode']} P5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} P5Text\n * @typedef {DefaultTreeAdapterMap['element']} P5Element\n * @typedef {DefaultTreeAdapterMap['node']} P5Node\n * @typedef {DefaultTreeAdapterMap['template']} P5Template\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef Options\n * Configuration.\n * @property {Space | null | undefined} [space='html']\n * Which space the document is in.\n *\n * When an `` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it.\n * @property {VFile | null | undefined} [file]\n * File used to add positional info to nodes.\n *\n * If given, the file should represent the original HTML source.\n * @property {boolean} [verbose=false]\n * Whether to add extra positional info about starting tags, closing tags,\n * and attributes to elements.\n *\n * > 👉 **Note**: only used when `file` is given.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {Schema} schema\n * Current schema.\n * @property {VFile | undefined} file\n * Corresponding file.\n * @property {boolean | undefined} verbose\n * Add extra positional info.\n * @property {boolean} location\n * Whether location info was found.\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/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {P5Node} tree\n * `parse5` tree to transform.\n * @param {Options | VFile | null | undefined} [options]\n * Configuration.\n * @returns {Node}\n * hast tree.\n */\nexport function fromParse5(tree, options) {\n const options_ = 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 || undefined\n settings = options_\n }\n\n return one(\n {\n schema: settings.space === 'svg' ? svg : html,\n file,\n verbose: settings.verbose,\n location: false\n },\n tree\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Node} node\n * p5 node.\n * @returns {Node}\n * hast node.\n */\nfunction one(state, node) {\n /** @type {Node} */\n let result\n\n switch (node.nodeName) {\n case '#comment': {\n const reference = /** @type {P5Comment} */ (node)\n result = {type: 'comment', value: reference.data}\n patch(state, reference, result)\n return result\n }\n\n case '#document':\n case '#document-fragment': {\n const reference = /** @type {P5Document | P5DocumentFragment} */ (node)\n const quirksMode =\n 'mode' in reference\n ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n : false\n\n result = {\n type: 'root',\n children: all(state, node.childNodes),\n data: {quirksMode}\n }\n\n if (state.file && state.location) {\n const doc = String(state.file)\n const loc = location(doc)\n const start = loc.toPoint(0)\n const end = loc.toPoint(doc.length)\n // @ts-expect-error: always defined as we give valid input.\n result.position = {start, end}\n }\n\n return result\n }\n\n case '#documentType': {\n const reference = /** @type {P5DocumentType} */ (node)\n // @ts-expect-error Types are out of date.\n result = {type: 'doctype'}\n patch(state, reference, result)\n return result\n }\n\n case '#text': {\n const reference = /** @type {P5Text} */ (node)\n result = {type: 'text', value: reference.value}\n patch(state, reference, result)\n return result\n }\n\n // Element.\n default: {\n const reference = /** @type {P5Element} */ (node)\n result = element(state, reference)\n return result\n }\n }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Array} nodes\n * Nodes.\n * @returns {Array}\n * hast nodes.\n */\nfunction all(state, nodes) {\n let index = -1\n /** @type {Array} */\n const result = []\n\n while (++index < nodes.length) {\n // @ts-expect-error Assume no roots in `nodes`.\n result[index] = one(state, nodes[index])\n }\n\n return result\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Element} node\n * `parse5` node to transform.\n * @returns {Element}\n * hast node.\n */\nfunction element(state, node) {\n const schema = state.schema\n\n state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n // Props.\n let index = -1\n /** @type {Record} */\n const props = {}\n\n while (++index < node.attrs.length) {\n const attribute = node.attrs[index]\n const name =\n (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n if (!own.call(proto, name)) {\n props[name] = attribute.value\n }\n }\n\n // Build.\n const fn = state.schema.space === 'svg' ? s : h\n const result = fn(node.tagName, props, all(state, node.childNodes))\n patch(state, node, result)\n\n // Switch content.\n if (result.tagName === 'template') {\n const reference = /** @type {P5Template} */ (node)\n const pos = reference.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 = one(state, reference.content)\n\n if (startTag && endTag && state.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n state.schema = schema\n\n return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Node} from\n * p5 node.\n * @param {Node} to\n * hast node.\n * @returns {void}\n * Nothing.\n */\nfunction patch(state, from, to) {\n if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n const position = createLocation(state, to, from.sourceCodeLocation)\n\n if (position) {\n state.location = true\n to.position = position\n }\n }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Node} node\n * hast node.\n * @param {P5ElementLocation} location\n * p5 location info.\n * @returns {Position | undefined}\n * Position, or nothing.\n */\nfunction createLocation(state, 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: .\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 (state.verbose) {\n /** @type {Record} */\n const props = {}\n /** @type {string} */\n let key\n\n if (location.attrs) {\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n props[find(state.schema, key).property] = position(\n location.attrs[key]\n )\n }\n }\n }\n\n node.data = {\n position: {\n // @ts-expect-error: assume not `undefined`.\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 * Turn a p5 location into a position.\n *\n * @param {P5Location} loc\n * Location.\n * @returns {Position | undefined}\n * Position or nothing.\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 `undefined` is fine.\n return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n * Point with potentially `undefined` values.\n * @returns {Point | undefined}\n * Point or nothing.\n */\nfunction point(point) {\n return point.line && point.column ? point : undefined\n}\n\n/**\n * Check if something is a file.\n *\n * @param {VFile | Options} value\n * File or options.\n * @returns {value is VFile}\n * Whether `value` is a file.\n */\nfunction isFile(value) {\n return 'messages' in value\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('vfile').Value} Value\n */\n\n/**\n * @typedef Point\n * unist point, where `line` and `column` can be `undefined`.\n * @property {number | undefined} line\n * Line.\n * @property {number | undefined} column\n * Column.\n * @property {number | undefined} [offset]\n * Offset.\n *\n * @typedef PointLike\n * unist point, allowed as input.\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 * @callback ToPoint\n * Get a line/column-based `point` from `offset`.\n * @param {number | null | undefined} [offset]\n * Something that should be an `offset.\n * @returns {Point}\n * Point, line/column are undefined for invalid or out of bounds input.\n *\n * @callback ToOffset\n * Get an offset from a line/column-based `point`.\n * @param {Point | null | undefined} [point]\n * Something that should be a `point.\n * @returns {number}\n * Offset or `-1` for invalid or out of bounds input.\n *\n * @typedef Location\n * Accessors for index.\n * @property {ToPoint} toPoint\n * Get a line/column-based `point` from `offset`.\n * @property {ToOffset} toOffset\n * Get an offset from a line/column-based `point`.\n */\n\n/**\n * Index the given document so you can translate between line/column and offset\n * based positional info.\n *\n * @param {VFile | Value} file\n * File to index.\n * @returns {Location}\n * Accessors for index.\n */\nexport function location(file) {\n const value = String(file)\n /** @type {Array} */\n const indices = []\n const 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 /** @type {ToPoint} */\n function toPoint(offset) {\n let index = -1\n\n if (\n typeof offset === 'number' &&\n offset > -1 &&\n offset < indices[indices.length - 1]\n ) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n offset\n }\n }\n }\n }\n\n return {line: undefined, column: undefined, offset: undefined}\n }\n\n /** @type {ToOffset} */\n function toOffset(point) {\n const line = point && point.line\n const column = point && point.column\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 const offset = (indices[line - 2] || 0) + column - 1 || 0\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n return offset\n }\n }\n\n return -1\n }\n}\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record} [Handlers=Record]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record} [Handlers=Record]\n * @param {string} key\n * Field to switch on.\n * @param {Options} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters): ReturnType, (...parameters: Parameters): ReturnType}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {DefaultTreeAdapterMap['document']} P5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} P5Fragment\n * @typedef {DefaultTreeAdapterMap['element']} P5Element\n * @typedef {DefaultTreeAdapterMap['node']} P5Node\n * @typedef {DefaultTreeAdapterMap['documentType']} P5Doctype\n * @typedef {DefaultTreeAdapterMap['commentNode']} P5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} P5Text\n * @typedef {DefaultTreeAdapterMap['parentNode']} P5Parent\n * @typedef {import('parse5').Token.Attribute} P5Attribute\n * @typedef {Exclude} P5Child\n * @typedef {import('property-information').Schema} Schema\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 */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {'html' | 'svg'} Space\n *\n * @typedef Options\n * Configuration.\n * @property {Space | null | undefined} [space='html']\n * Which space the document is in.\n *\n * When an `` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it.\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {html, svg, find} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst own = {}.hasOwnProperty\n\n/** @type {(from: Node, schema: Schema) => P5Node} */\nconst one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a hast tree to Parse5’s AST.\n *\n * @param {Node} tree\n * Tree to transform.\n * @param {Options | Space | null | undefined} [options]\n * Configuration.\n * @returns {P5Node}\n * `parse5` node.\n */\nexport function toParse5(tree, options) {\n const space = options && typeof options === 'object' ? options.space : options\n return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @param {Root} node\n * @param {Schema} schema\n * Current schema.\n * @returns {P5Document}\n */\nfunction root(node, schema) {\n /** @type {P5Document} */\n const result = {\n nodeName: '#document',\n // @ts-expect-error: `parse5` uses enums, which are actually strings.\n mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n childNodes: []\n }\n result.childNodes = all(node.children, result, schema)\n patch(node, result)\n return result\n}\n\n/**\n * @param {Root} node\n * @param {Schema} schema\n * Current schema.\n * @returns {P5Fragment}\n */\nfunction fragment(node, schema) {\n /** @type {P5Fragment} */\n const result = {nodeName: '#document-fragment', childNodes: []}\n result.childNodes = all(node.children, result, schema)\n patch(node, result)\n return result\n}\n\n/**\n * @param {Doctype} node\n * @returns {P5Doctype}\n */\nfunction doctype(node) {\n /** @type {P5Doctype} */\n const result = {\n nodeName: '#documentType',\n name: 'html',\n publicId: '',\n systemId: '',\n // @ts-expect-error: change to `null` in a major?\n parentNode: undefined\n }\n\n patch(node, result)\n return result\n}\n\n/**\n * @param {Text} node\n * @returns {P5Text}\n */\nfunction text(node) {\n /** @type {P5Text} */\n const result = {\n nodeName: '#text',\n value: node.value,\n // @ts-expect-error: no `parentNode`\n parentNode: undefined\n }\n patch(node, result)\n return result\n}\n\n/**\n * @param {Comment} node\n * @returns {P5Comment}\n */\nfunction comment(node) {\n /** @type {P5Comment} */\n const result = {\n nodeName: '#comment',\n data: node.value,\n // @ts-expect-error: no `parentNode`\n parentNode: undefined\n }\n\n patch(node, result)\n\n return result\n}\n\n/**\n * @param {Element} node\n * @param {Schema} schema\n * Current schema.\n * @returns {P5Element}\n * `parse5` node.\n */\nfunction element(node, schema) {\n const parentSchema = schema\n let currentSchema = parentSchema\n\n if (\n node.type === 'element' &&\n node.tagName.toLowerCase() === 'svg' &&\n parentSchema.space === 'html'\n ) {\n currentSchema = svg\n }\n\n /** @type {Array} */\n const attrs = []\n /** @type {string} */\n let prop\n\n if (node.properties) {\n for (prop in node.properties) {\n if (prop !== 'children' && own.call(node.properties, prop)) {\n const result = createProperty(\n currentSchema,\n prop,\n node.properties[prop]\n )\n\n if (result) {\n attrs.push(result)\n }\n }\n }\n }\n\n /** @type {P5Element} */\n const result = {\n nodeName: node.tagName,\n tagName: node.tagName,\n attrs,\n // @ts-expect-error: html and svg both have a space.\n namespaceURI: webNamespaces[currentSchema.space],\n childNodes: [],\n // @ts-expect-error: no `parentNode`\n parentNode: undefined\n }\n result.childNodes = all(node.children, result, currentSchema)\n patch(node, result)\n\n if (node.tagName === 'template' && node.content) {\n // @ts-expect-error: `parse5` types are wrong.\n result.content = fragment(node.content, currentSchema)\n }\n\n return result\n}\n\n/**\n * Handle a property.\n *\n * @param {Schema} schema\n * Current schema.\n * @param {string} prop\n * Key.\n * @param {Array | string | number | boolean | null | undefined} value\n * hast property value.\n * @returns {P5Attribute | void}\n * Field for runtime, optional.\n */\nfunction createProperty(schema, prop, value) {\n const info = find(schema, prop)\n\n // Ignore nullish and `NaN` values.\n if (\n value === undefined ||\n value === null ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (!value && info.boolean)\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 /** @type {P5Attribute} */\n const attribute = {\n name: info.attribute,\n value: value === true ? '' : String(value)\n }\n\n if (info.space && info.space !== 'html' && info.space !== 'svg') {\n const index = attribute.name.indexOf(':')\n\n if (index < 0) {\n attribute.prefix = ''\n } else {\n attribute.name = attribute.name.slice(index + 1)\n attribute.prefix = info.attribute.slice(0, index)\n }\n\n attribute.namespace = webNamespaces[info.space]\n }\n\n return attribute\n}\n\n/**\n * Transform all hast nodes.\n *\n * @param {Array} children\n * List of children.\n * @param {P5Parent} parentNode\n * `parse5` parent node.\n * @param {Schema} schema\n * Current schema.\n * @returns {Array}\n * Transformed children.\n */\nfunction all(children, parentNode, schema) {\n let index = -1\n /** @type {Array} */\n const results = []\n\n if (children) {\n while (++index < children.length) {\n /** @type {P5Child} */\n // @ts-expect-error assume no document.\n const child = one(children[index], schema)\n\n child.parentNode = parentNode\n\n results.push(child)\n }\n }\n\n return results\n}\n\n/**\n * Add position info from `from` to `to`.\n *\n * @param {Node} from\n * hast node.\n * @param {P5Node} to\n * `parse5` node.\n * @returns {void}\n * Nothing.\n */\nfunction patch(from, to) {\n const position = from.position\n\n if (position && position.start && position.end) {\n to.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n // @ts-expect-error assume this is set.\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n // @ts-expect-error assume this is set.\n endOffset: position.end.offset\n }\n }\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array}\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} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {Omit & {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 & {value: {stitch: Node}}} Stitch\n *\n * @typedef Options\n * @property {Array} [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} __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} tokenQueue\n * @property {string} state\n * @property {string} returnState\n * @property {number} charRefCode\n * @property {Array} 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 & {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} 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 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} 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._processInputToken(startTag(node))\n\n all(node.children)\n\n if (!htmlVoidElements.includes(node.tagName)) {\n resetTokenizer()\n parser._processInputToken(endTag(node))\n }\n }\n\n /**\n * @param {Text} node\n * @returns {void}\n */\n function text(node) {\n resetTokenizer()\n parser._processInputToken({\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._processInputToken({\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._processInputToken({\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: .\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: .\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: .\n locationTracker.currentAttrLocation = undefined\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: .\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 `[]` (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: .\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._processInputToken(token)\n }\n\n // Reset tokenizer:\n // See: .\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}\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, 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","// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n","import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n /**\n * Create a new slug class.\n */\n constructor () {\n /** @type {Record} */\n // eslint-disable-next-line no-unused-expressions\n this.occurrences\n\n this.reset()\n }\n\n /**\n * Generate a unique slug.\n *\n * Tracks previously generated slugs: repeated calls with the same value\n * will result in different slugs.\n * Use the `slug` function to get same slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\n slug (value, maintainCase) {\n const self = this\n let result = slug(value, maintainCase === true)\n const originalSlug = result\n\n while (own.call(self.occurrences, result)) {\n self.occurrences[originalSlug]++\n result = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[result] = 0\n\n return result\n }\n\n /**\n * Reset - Forget all previous slugs\n *\n * @return void\n */\n reset () {\n this.occurrences = Object.create(null)\n }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\nexport function slug (value, maintainCase) {\n if (typeof value !== 'string') return ''\n if (!maintainCase) value = value.toLowerCase()\n return value.replace(regex, '').replace(/ /g, '-')\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n */\n\n/**\n * @typedef {Root | Content} Node\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Check if `node`is an element and has a `field` property.\n *\n * @param {unknown} node\n * Thing to check (typically `Element`).\n * @param {unknown} field\n * Field name to check (typically `string`).\n * @returns {boolean}\n * Whether `node` is an element that has a `field` property.\n */\nexport function hasProperty(node, field) {\n const value =\n typeof field === 'string' &&\n isNode(node) &&\n node.type === 'element' &&\n node.properties &&\n own.call(node.properties, field) &&\n node.properties[field]\n\n return value !== null && value !== undefined && value !== false\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction isNode(value) {\n return Boolean(value && typeof value === 'object' && 'type' in value)\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n */\n\n/**\n * @typedef {Root | Content} Node\n */\n\n// To do next major: return `undefined`.\n/**\n * Get the rank (`1` to `6`) of headings (`h1` to `h6`).\n *\n * @param {Node} node\n * Node to check.\n * @returns {number | null}\n * Rank of the heading or `null` if not a heading.\n */\nexport function headingRank(node) {\n const name =\n (node && node.type === 'element' && node.tagName.toLowerCase()) || ''\n const code =\n name.length === 2 && name.charCodeAt(0) === 104 /* `h` */\n ? name.charCodeAt(1)\n : 0\n return code > 48 /* `0` */ && code < 55 /* `7` */ ? code - 48 /* `0` */ : null\n}\n","/**\n * @fileoverview\n * Get the plain-text value of a hast node.\n * @longdescription\n * ## Use\n *\n * ```js\n * import {h} from 'hastscript'\n * import {toString} from 'hast-util-to-string'\n *\n * toString(h('p', 'Alpha'))\n * //=> 'Alpha'\n * toString(h('div', [h('b', 'Bold'), ' and ', h('i', 'italic'), '.']))\n * //=> 'Bold and italic.'\n * ```\n *\n * ## API\n *\n * ### `toString(node)`\n *\n * Transform a node to a string.\n */\n\n/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {Root|Root['children'][number]} Node\n */\n\n/**\n * Get the plain-text value of a hast node.\n *\n * @param {Node} node\n * @returns {string}\n */\nexport function toString(node) {\n // “The concatenation of data of all the Text node descendants of the context\n // object, in tree order.”\n if ('children' in node) {\n return all(node)\n }\n\n // “Context object’s data.”\n return 'value' in node ? node.value : ''\n}\n\n/**\n * @param {Node} node\n * @returns {string}\n */\nfunction one(node) {\n if (node.type === 'text') {\n return node.value\n }\n\n return 'children' in node ? all(node) : ''\n}\n\n/**\n * @param {Root|Element} node\n * @returns {string}\n */\nfunction all(node) {\n let index = -1\n /** @type {string[]} */\n const result = []\n\n while (++index < node.children.length) {\n result[index] = one(node.children[index])\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef Options\n * Configuration (optional).\n * @property {string} [prefix='']\n * Prefix to add in front of `id`s.\n */\n\nimport Slugger from 'github-slugger'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {toString} from 'hast-util-to-string'\nimport {visit} from 'unist-util-visit'\n\nconst slugs = new Slugger()\n\n/**\n * Plugin to add `id`s to headings.\n *\n * @type {import('unified').Plugin<[Options?]|Array, Root>}\n */\nexport default function rehypeSlug(options = {}) {\n const prefix = options.prefix || ''\n\n return (tree) => {\n slugs.reset()\n\n visit(tree, 'element', (node) => {\n if (headingRank(node) && node.properties && !hasProperty(node, 'id')) {\n node.properties.id = prefix + slugs.slug(toString(node))\n }\n })\n }\n}\n","/**\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('hast').Element} Element\n */\n\n/**\n * @typedef {null | undefined | string | TestFunctionAnything | Array} Test\n * Check for an arbitrary element, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if an element passes a test, unaware of TypeScript inferral.\n * @param {Element} element\n * An element.\n * @param {number | null | undefined} [index]\n * The element’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The element’s parent.\n * @returns {boolean | void}\n * Whether this element passes the test.\n */\n\n/**\n * @template {Element} T\n * Element type.\n * @typedef {T['tagName'] | TestFunctionPredicate | Array>} PredicateTest\n * Check for an element that can be inferred by TypeScript.\n */\n\n/**\n * Check if an element passes a certain node test.\n *\n * @template {Element} T\n * Element type.\n * @callback TestFunctionPredicate\n * Complex test function for an element that can be inferred by TypeScript.\n * @param {Element} element\n * An element.\n * @param {number | null | undefined} [index]\n * The element’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The element’s parent.\n * @returns {element is T}\n * Whether this element passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is an element, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is an element and passes a test.\n */\n\n/**\n * Check if a node is an element and passes a certain node test\n *\n * @template {Element} T\n * Element type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific element, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is T}\n * Whether this is an element and passes a test.\n */\n\n/**\n * Check if `node` is an `Element` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific element.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is an element and passes a test.\n */\nexport const isElement =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test?: PredicateTest, index?: number, parent?: Parent, context?: unknown) => node is T) &\n * ((node: unknown, test: Test, index?: number, parent?: Parent, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test | undefined} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convertElement(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 for child node')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n // @ts-expect-error Looks like a node.\n if (!node || !node.type || typeof node.type !== 'string') {\n return false\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 return check.call(context, node, index, parent)\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * When nullish, checks if `node` is an `Element`.\n * * When `string`, works like passing `(element) => element.tagName === test`.\n * * When `function` checks if function passed the element is true.\n * * When `array`, checks any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convertElement =\n /**\n * @type {(\n * ((test: T['tagName'] | TestFunctionPredicate) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test | null | undefined} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as test')\n }\n )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array} 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)) {\n return true\n }\n }\n\n return false\n }\n}\n\n/**\n * Turn a string into a test for an element with a certain tag name.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction tagNameFactory(check) {\n return tagName\n\n /**\n * @param {unknown} node\n * @returns {boolean}\n */\n function tagName(node) {\n return element(node) && node.tagName === check\n }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n // @ts-expect-error: fine.\n return element(node) && Boolean(check.call(this, node, ...parameters))\n }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} node\n * @returns {node is Element}\n */\nfunction element(node) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n // @ts-expect-error Looks like a node.\n node.type === 'element' &&\n // @ts-expect-error Looks like an element.\n typeof node.tagName === 'string'\n )\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast-util-is-element').Test} Test\n *\n * @typedef {'prepend'|'append'|'wrap'|'before'|'after'} Behavior\n *\n * @callback Build\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n *\n * @typedef Options\n * Configuration.\n * @property {Behavior} [behavior='prepend']\n * How to create links.\n * @property {Behavior} [behaviour]\n * Please use `behavior` instead\n * @property {Properties} [properties]\n * Extra properties to set on the link when injecting.\n * Defaults to `{ariaHidden: true, tabIndex: -1}` when `'prepend'` or\n * `'append'`.\n * @property {ElementChild|ElementChild[]|Build} [content={type: 'element', tagName: 'span', properties: {className: ['icon', 'icon-link']}, children: []}]\n * hast nodes to insert in the link.\n * @property {ElementChild|ElementChild[]|Build} [group]\n * hast node to wrap the heading and link with, if `behavior` is `'before'` or\n * `'after'`.\n * There is no default.\n * @property {Test} [test]\n * Test to define which heading elements are linked.\n * Any test that can be given to `hast-util-is-element` is supported.\n * The default (no test) is to link all headings.\n * Can be used to link only h1-h3, or for example all except h1.\n */\n\nimport extend from 'extend'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {convertElement} from 'hast-util-is-element'\nimport {visit, SKIP} from 'unist-util-visit'\n\n/** @type {Element} */\nconst contentDefaults = {\n type: 'element',\n tagName: 'span',\n properties: {className: ['icon', 'icon-link']},\n children: []\n}\n\n/**\n * Plugin to automatically add links to headings (h1-h6).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function rehypeAutolinkHeadings(options = {}) {\n let props = options.properties\n const behavior = options.behaviour || options.behavior || 'prepend'\n const content = options.content || contentDefaults\n const group = options.group\n const is = convertElement(options.test)\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n let method\n\n if (behavior === 'wrap') {\n method = wrap\n } else if (behavior === 'before' || behavior === 'after') {\n method = around\n } else {\n if (!props) {\n props = {ariaHidden: 'true', tabIndex: -1}\n }\n\n method = inject\n }\n\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (\n headingRank(node) &&\n hasProperty(node, 'id') &&\n is(node, index, parent)\n ) {\n return method(node, index, parent)\n }\n })\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function inject(node) {\n node.children[behavior === 'prepend' ? 'unshift' : 'push'](\n create(node, extend(true, {}, props), toChildren(content, node))\n )\n\n return [SKIP]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function around(node, index, parent) {\n // Uncommon.\n /* c8 ignore next */\n if (typeof index !== 'number' || !parent) return\n\n const link = create(\n node,\n extend(true, {}, props),\n toChildren(content, node)\n )\n let nodes = behavior === 'before' ? [link, node] : [node, link]\n\n if (group) {\n const grouping = toNode(group, node)\n\n if (grouping && !Array.isArray(grouping) && grouping.type === 'element') {\n grouping.children = nodes\n nodes = [grouping]\n }\n }\n\n parent.children.splice(index, 1, ...nodes)\n\n return [SKIP, index + nodes.length]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function wrap(node) {\n node.children = [create(node, extend(true, {}, props), node.children)]\n return [SKIP]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild[]}\n */\n function toChildren(value, node) {\n const result = toNode(value, node)\n return Array.isArray(result) ? result : [result]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n */\n function toNode(value, node) {\n if (typeof value === 'function') return value(node)\n return extend(true, Array.isArray(value) ? [] : {}, value)\n }\n\n /**\n * @param {Element} node\n * @param {Properties} props\n * @param {ElementChild[]} children\n * @returns {Element}\n */\n function create(node, props, children) {\n return {\n type: 'element',\n tagName: 'a',\n properties: Object.assign({}, props, {\n // Fix hast types and make them required.\n /* c8 ignore next */\n href: '#' + (node.properties || {}).id\n }),\n children\n }\n }\n}\n","import { Element, Comment, Literal, ElementContent, RootContent, Properties } from 'hast';\nimport { RehypeAttrsOptions } from './';\n\nexport const getURLParameters = (url: string = '') =>\n ((url.match(/([^?=&]+)(=([^&]*))/g) || []) as string[]).reduce(\n (a: Record, v: string) => (\n (a[v.slice(0, v.indexOf('=')) as keyof typeof a] = v.slice(v.indexOf('=') + 1)), a\n ),\n {}\n )\n\nexport const prevChild = (data: Literal[] = [], index: number): Comment | undefined => {\n let i = index;\n while (i > -1) {\n i--;\n if (!data[i]) return\n if ((data[i] && data[i].value && (data[i].value as string).replace(/(\\n|\\s)/g, '') !== '') || data[i].type !== 'text') {\n if (!/^rehype:/.test(data[i].value as string) || (data[i].type as string) !== 'comment') return;\n return data[i] as unknown as Comment;\n }\n }\n return;\n}\n\nexport const nextChild = (data: RootContent[] | ElementContent[] = [], index: number, tagName?: string, codeBlockParames?: boolean): ElementContent | undefined => {\n let i = index;\n while (i < data.length) {\n i++;\n if (tagName) {\n const element = data[i] as Literal & Element;\n if (element && element.value && (element.value as string).replace(/(\\n|\\s)/g, '') !== '' || data[i] && (data[i].type as string) === 'element') {\n return element.tagName === tagName ? element : undefined\n }\n } else {\n const element = data[i] as ElementContent & Literal;\n if (!element || element.type === 'element') return;\n if (element.type === 'text' && element.value.replace(/(\\n|\\s)/g, '') !== '') return;\n if (element.type && /^(comment|raw)$/ig.test(element.type)) {\n if (element.value && !/^rehype:/.test(element.value.replace(/^(\\s+)?/, '$2') || '')) {\n return\n };\n if (codeBlockParames) {\n const nextNode = nextChild(data, i, 'pre', codeBlockParames)\n if (nextNode) return;\n element.value = (element.value || '').replace(/^(\\n|\\s)+/, '')\n return element;\n } else {\n element.value = (element.value || '').replace(/^(\\n|\\s)+/, '')\n return element;\n }\n }\n }\n }\n return\n}\n\n/**\n * 获取代码注视的位置\n * @param data 数据\n * @param index 当前数据所在的位置\n * @returns 返回 当前参数数据 Object,`{}`\n */\nexport const getCommentObject = ({ value = '' }: Comment): Properties => {\n const param = getURLParameters(value.replace(/^/, '$1').replace(/^rehype:/, ''));\n Object.keys(param).forEach((keyName: string) => {\n if (param[keyName] === 'true') {\n param[keyName] = true;\n }\n if (param[keyName] === 'false') {\n param[keyName] = false;\n }\n if (typeof param[keyName] === 'string' && !/^0/.test(param[keyName] as string) && !isNaN(+param[keyName])) {\n param[keyName] = +param[keyName];\n }\n })\n return param;\n}\n\nexport type DataConfig = {\n 'data-config': Properties\n}\n\nexport const propertiesHandle = (defaultAttrs?: Properties | null, attrs?: Properties, type?: RehypeAttrsOptions['properties']): Properties | DataConfig => {\n if (type === 'string') {\n return { ...defaultAttrs, 'data-config': JSON.stringify({ ...attrs, rehyp: true })}\n } else if (type === 'attr') {\n return { ...defaultAttrs, ...attrs}\n }\n return { ...defaultAttrs, 'data-config': { ...attrs, rehyp: true }}\n}","import { Plugin } from 'unified';\nimport { Root, Element, Comment, Properties, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { propertiesHandle, nextChild, prevChild, getCommentObject } from './utils';\n\nexport type RehypeAttrsOptions = {\n /**\n * ## `data`\n * \n * ```markdown\n * text\n * \n * ```\n * 👇👇👇👇👇\n * ```html\n *

text

\n * ```\n * \n * ## `string`\n * \n * ```markdown\n * text\n * \n * ```\n * \n * 👇👇👇👇👇\n * \n * ```html\n *

text

\n * ```\n * \n * ## attr\n * \n * ```markdown\n * text\n * \n * ```\n * 👇👇👇👇👇\n * ```html\n *

text

\n * ```\n * @default `data`\n */\n properties?: 'data' | 'string' | 'attr';\n /**\n * Code block passing parameters\n */\n codeBlockParames?: boolean;\n}\n\nconst rehypeAttrs: Plugin<[RehypeAttrsOptions?], Root> = (options = {}) => {\n const { properties = 'data', codeBlockParames = true } = options;\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (codeBlockParames && node.tagName === 'pre' && node && Array.isArray(node.children) && parent && Array.isArray(parent.children) && parent.children.length > 1) {\n const firstChild = node.children[0] as Element;\n if (firstChild && firstChild.tagName === 'code' && typeof index === 'number') {\n const child = prevChild(parent.children as Literal[], index);\n if (child) {\n const attr = getCommentObject(child);\n if (Object.keys(attr).length > 0) {\n node.properties = { ...node.properties, ...{ 'data-type': 'rehyp' } }\n firstChild.properties = propertiesHandle(firstChild.properties, attr, properties) as Properties\n }\n }\n }\n }\n\n if (/^(em|strong|b|a|i|p|pre|kbd|blockquote|h(1|2|3|4|5|6)|code|table|img|del|ul|ol)$/.test(node.tagName) && parent && Array.isArray(parent.children) && typeof index === 'number') {\n const child = nextChild(parent.children, index, '', codeBlockParames)\n if (child) {\n const attr = getCommentObject(child as Comment)\n if (Object.keys(attr).length > 0) {\n node.properties = propertiesHandle(node.properties, attr, properties) as Properties\n }\n }\n }\n });\n }\n}\n\n\nexport default rehypeAttrs\n","import type { Plugin } from 'unified';\nimport type { Root, RootContent, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\n\n/**\n * Raw string of HTML embedded into HTML AST.\n */\nexport interface Raw extends Literal {\n /**\n * Node type.\n */\n type: 'raw'\n}\n\n// Register nodes in content.\ndeclare module 'hast' {\n interface RootContentMap {\n /**\n * Raw string of HTML embedded into HTML AST.\n */\n raw: Raw\n }\n interface ElementContentMap {\n /**\n * Raw string of HTML embedded into HTML AST.\n */\n raw: Raw\n }\n}\n\n\nexport type RehypeIgnoreOptions = {\n /**\n * Character to use for opening delimiter, by default `rehype:ignore:start`\n */\n openDelimiter?: string;\n /**\n * Character to use for closing delimiter, by default `rehype:ignore:end`\n */\n closeDelimiter?: string;\n}\n\nconst rehypeIgnore: Plugin<[RehypeIgnoreOptions?], Root> = (options = {}) => {\n const { openDelimiter = 'rehype:ignore:start', closeDelimiter = 'rehype:ignore:end' } = options;\n return (tree) => {\n visit(tree, (node: Root | RootContent, index, parent) => {\n if (node.type === 'element' || node.type === 'root') {\n // const start = node.children.findIndex((item) => item.type === 'comment' && item.value === openDelimiter);\n // const end = node.children.findIndex((item) => item.type === 'comment' && item.value === closeDelimiter);\n // if (start > -1 && end > -1) {\n // node.children = node.children.filter((_, idx) => idx < start || idx > end);\n // }\n let start = false;\n node.children = node.children.filter((item) => {\n if (item.type === 'raw' || item.type === 'comment') {\n let str = (item.value || '').trim();\n str = str.replace(/^/, '$1')\n if (str === openDelimiter) {\n start = true;\n return false;\n }\n if (str === closeDelimiter) {\n start = false;\n return false;\n }\n }\n \n return !start;\n })\n }\n });\n }\n}\n\nexport default rehypeIgnore;\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [cascade=true]\n * Whether to drop parent nodes if they had children, but all their children\n * were filtered out.\n */\n\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create a new `tree` of copies of all nodes that pass `test`.\n *\n * The tree is walked in *preorder* (NLR), visiting the node itself, then its\n * head, etc.\n *\n * @param tree\n * Tree to filter.\n * @param options\n * Configuration (optional).\n * @param test\n * `unist-util-is` compatible test.\n * @returns\n * New filtered tree.\n *\n * `null` is returned if `tree` itself didn’t pass the test, or is cascaded\n * away.\n */\nexport const filter =\n /**\n * @type {(\n * ((node: Tree, options: Options | null | undefined, test: Check | null | undefined) => import('./complex-types.js').Matches) &\n * ((node: Tree, test: Check) => import('./complex-types.js').Matches) &\n * ((node: Tree, options?: Options | null | undefined) => Tree)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Options | Test | null | undefined} [options]\n * @param {Test | null | undefined} [test]\n * @returns {Node | null}\n */\n function (tree, options, test) {\n const is = convert(test || options)\n /** @type {boolean | null | undefined} */\n const cascadeRaw =\n options && typeof options === 'object' && 'cascade' in options\n ? /** @type {boolean | null | undefined} */ (options.cascade)\n : undefined\n const cascade =\n cascadeRaw === undefined || cascadeRaw === null ? true : cascadeRaw\n\n return preorder(tree)\n\n /**\n * @param {Node} node\n * Current node.\n * @param {number | undefined} [index]\n * Index of `node` in `parent`.\n * @param {Parent | undefined} [parent]\n * Parent node.\n * @returns {Node | null}\n * Shallow copy of `node`.\n */\n function preorder(node, index, parent) {\n /** @type {Array} */\n const children = []\n\n if (!is(node, index, parent)) return null\n\n // @ts-expect-error: Looks like a parent.\n if (node.children) {\n let childIndex = -1\n\n // @ts-expect-error Looks like a parent.\n while (++childIndex < node.children.length) {\n // @ts-expect-error Looks like a parent.\n const result = preorder(node.children[childIndex], childIndex, node)\n\n if (result) {\n children.push(result)\n }\n }\n\n // @ts-expect-error Looks like a parent.\n if (cascade && node.children.length > 0 && children.length === 0)\n return null\n }\n\n // Create a shallow clone, using the new children.\n /** @type {typeof node} */\n // @ts-expect-error all the fields will be copied over.\n const next = {}\n /** @type {string} */\n let key\n\n for (key in node) {\n if (own.call(node, key)) {\n // @ts-expect-error: Looks like a record.\n next[key] = key === 'children' ? children : node[key]\n }\n }\n\n return next\n }\n }\n )\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef Options options\n * Configuration.\n * @property {boolean} [showLineNumbers]\n * Set `showLineNumbers` to `true` to always display line number\n * @property {boolean} [ignoreMissing]\n * Set `ignoreMissing` to `true` to ignore unsupported languages and line highlighting when no language is specified\n */\n\nimport { visit } from 'unist-util-visit'\nimport { toString } from 'hast-util-to-string'\nimport { filter } from 'unist-util-filter'\nimport rangeParser from 'parse-numeric-range'\n\n/**\n * @param {Element} node\n * @return {string|null}\n */\nconst getLanguage = (node) => {\n const className = node.properties.className\n //@ts-ignore\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === 'language-') {\n return classListItem.slice(9).toLowerCase()\n }\n }\n return null\n}\n\n/**\n * Create a closure that determines if we have to highlight the given index\n *\n * @param {string} meta\n * @return { (index:number) => boolean }\n */\nconst calculateLinesToHighlight = (meta) => {\n const RE = /{([\\d,-]+)}/\n // Remove space between {} e.g. {1, 3}\n const parsedMeta = meta\n .split(',')\n .map((str) => str.trim())\n .join()\n if (RE.test(parsedMeta)) {\n const strlineNumbers = RE.exec(parsedMeta)[1]\n const lineNumbers = rangeParser(strlineNumbers)\n return (index) => lineNumbers.includes(index + 1)\n } else {\n return () => false\n }\n}\n\n/**\n * Check if we want to start the line numbering from a given number or 1\n * showLineNumbers=5, will start the numbering from 5\n * @param {string} meta\n * @returns {number}\n */\nconst calculateStartingLine = (meta) => {\n const RE = /showLineNumbers=(?\\d+)/i\n // pick the line number after = using a named capturing group\n if (RE.test(meta)) {\n const {\n groups: { lines },\n } = RE.exec(meta)\n return Number(lines)\n }\n return 1\n}\n\n/**\n * Create container AST for node lines\n *\n * @param {number} number\n * @return {Element[]}\n */\nconst createLineNodes = (number) => {\n const a = new Array(number)\n for (let i = 0; i < number; i++) {\n a[i] = {\n type: 'element',\n tagName: 'span',\n properties: { className: [] },\n children: [],\n }\n }\n return a\n}\n\n/**\n * Split multiline text nodes into individual nodes with positioning\n * Add a node start and end line position information for each text node\n *\n * @return { (ast:Element['children']) => Element['children'] }\n *\n */\nconst addNodePositionClosure = () => {\n let startLineNum = 1\n /**\n * @param {Element['children']} ast\n * @return {Element['children']}\n */\n const addNodePosition = (ast) => {\n return ast.reduce((result, node) => {\n if (node.type === 'text') {\n const value = /** @type {string} */ (node.value)\n const numLines = (value.match(/\\n/g) || '').length\n if (numLines === 0) {\n node.position = {\n // column: 1 is needed to avoid error with @next/mdx\n // https://github.com/timlrx/rehype-prism-plus/issues/44\n start: { line: startLineNum, column: 1 },\n end: { line: startLineNum, column: 1 },\n }\n result.push(node)\n } else {\n const lines = value.split('\\n')\n for (const [i, line] of lines.entries()) {\n result.push({\n type: 'text',\n value: i === lines.length - 1 ? line : line + '\\n',\n position: {\n start: { line: startLineNum + i, column: 1 },\n end: { line: startLineNum + i, column: 1 },\n },\n })\n }\n }\n startLineNum = startLineNum + numLines\n\n return result\n }\n\n if (Object.prototype.hasOwnProperty.call(node, 'children')) {\n const initialLineNum = startLineNum\n // @ts-ignore\n node.children = addNodePosition(node.children, startLineNum)\n result.push(node)\n node.position = {\n start: { line: initialLineNum, column: 1 },\n end: { line: startLineNum, column: 1 },\n }\n return result\n }\n\n result.push(node)\n return result\n }, [])\n }\n return addNodePosition\n}\n\n/**\n * Rehype prism plugin generator that highlights code blocks with refractor (prismjs)\n *\n * Pass in your own refractor object with the required languages registered:\n * https://github.com/wooorm/refractor#refractorregistersyntax\n *\n * @param {import('refractor/lib/core').Refractor} refractor\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypePrismGenerator = (refractor) => {\n return (options = {}) => {\n return (tree) => {\n visit(tree, 'element', visitor)\n }\n\n /**\n * @param {Element} node\n * @param {number} index\n * @param {Element} parent\n */\n function visitor(node, index, parent) {\n if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n return\n }\n\n let meta = /** @type {string} */ (node?.data?.meta || node?.properties?.metastring || '')\n // Coerce className to array\n if (node.properties.className) {\n if (typeof node.properties.className === 'boolean') {\n node.properties.className = []\n } else if (!Array.isArray(node.properties.className)) {\n node.properties.className = [node.properties.className]\n }\n } else {\n node.properties.className = []\n }\n node.properties.className.push('code-highlight')\n const lang = getLanguage(node)\n\n /** @type {Element} */\n let refractorRoot\n\n // Syntax highlight\n if (lang) {\n try {\n let rootLang\n if (lang?.includes('diff-')){\n rootLang=lang.split('-')[1]\n } else{\n rootLang=lang\n }\n // @ts-ignore\n refractorRoot = refractor.highlight(toString(node), rootLang)\n // @ts-ignore className is already an array\n parent.properties.className = (parent.properties.className || []).concat(\n 'language-' + rootLang\n )\n } catch (err) {\n if (options.ignoreMissing && /Unknown language/.test(err.message)) {\n refractorRoot = node\n } else {\n throw err\n }\n }\n } else {\n refractorRoot = node\n }\n\n refractorRoot.children = addNodePositionClosure()(refractorRoot.children)\n\n // Add position info to root\n if (refractorRoot.children.length > 0) {\n refractorRoot.position = {\n start: { line: refractorRoot.children[0].position.start.line, column: 0 },\n end: {\n line: refractorRoot.children[refractorRoot.children.length - 1].position.end.line,\n column: 0,\n },\n }\n } else {\n refractorRoot.position = {\n start: { line: 0, column: 0 },\n end: { line: 0, column: 0 },\n }\n }\n\n const shouldHighlightLine = calculateLinesToHighlight(meta)\n const startingLineNumber = calculateStartingLine(meta)\n const codeLineArray = createLineNodes(refractorRoot.position.end.line)\n\n const falseShowLineNumbersStr = [\n 'showlinenumbers=false',\n 'showlinenumbers=\"false\"',\n 'showlinenumbers={false}',\n ]\n for (const [i, line] of codeLineArray.entries()) {\n // Default class name for each line\n line.properties.className = ['code-line']\n\n // Syntax highlight\n const treeExtract = filter(\n refractorRoot,\n (node) => node.position.start.line <= i + 1 && node.position.end.line >= i + 1\n )\n line.children = treeExtract.children\n\n // Line number\n if (\n (meta.toLowerCase().includes('showLineNumbers'.toLowerCase()) ||\n options.showLineNumbers) &&\n !falseShowLineNumbersStr.some((str) => meta.toLowerCase().includes(str))\n ) {\n line.properties.line = [(i + startingLineNumber).toString()]\n line.properties.className.push('line-number')\n }\n\n // Line highlight\n if (shouldHighlightLine(i)) {\n line.properties.className.push('highlight-line')\n }\n\n // Diff classes\n if ((lang === 'diff' || lang?.includes('diff-')) && toString(line).substring(0, 1) === '-') {\n line.properties.className.push('deleted')\n } else if ((lang === 'diff' || lang?.includes('diff-')) && toString(line).substring(0, 1) === '+') {\n line.properties.className.push('inserted')\n }\n }\n\n // Remove possible trailing line when splitting by \\n which results in empty array\n if (\n codeLineArray.length > 0 &&\n toString(codeLineArray[codeLineArray.length - 1]).trim() === ''\n ) {\n codeLineArray.pop()\n }\n\n node.children = codeLineArray\n }\n }\n}\n\nexport default rehypePrismGenerator\n","import { refractor as refractorAll } from 'refractor/lib/all.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * This supports all the languages and should be used on the server side.\n *\n * Consider using rehypePrismCommon or rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismAll = rehypePrismGenerator(refractorAll)\n\nexport default rehypePrismAll\n","import { refractor as refractorCommon } from 'refractor/lib/common.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * Supported languages: https://github.com/wooorm/refractor#data\n *\n * Consider using rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismCommon = rehypePrismGenerator(refractorCommon)\n\nexport default rehypePrismCommon\n","const rtlRange = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst ltrRange =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n/* eslint-disable no-misleading-character-class */\nconst rtl = new RegExp('^[^' + ltrRange + ']*[' + rtlRange + ']')\nconst ltr = new RegExp('^[^' + rtlRange + ']*[' + ltrRange + ']')\n/* eslint-enable no-misleading-character-class */\n\n/**\n * Detect the direction of text: left-to-right, right-to-left, or neutral\n *\n * @param {string} value\n * @returns {'rtl'|'ltr'|'neutral'}\n */\nexport function direction(value) {\n const source = String(value || '')\n return rtl.test(source) ? 'rtl' : ltr.test(source) ? 'ltr' : 'neutral'\n}\n","/**\n * @typedef {import('./types.js').SelectState} SelectState\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').ElementChild} ElementChild\n * @typedef {import('./types.js').Direction} Direction\n * @typedef {import('unist-util-visit/complex-types.js').Visitor} Visitor\n */\n\nimport {direction} from 'direction'\nimport {toString} from 'hast-util-to-string'\nimport {svg} from 'property-information'\nimport {visit, EXIT, SKIP} from 'unist-util-visit'\n\n/**\n * Enter a node.\n *\n * The caller is responsible for calling the return value `exit`.\n *\n * @param {SelectState} state\n * Current state.\n *\n * Will be mutated: `exit` undos the changes.\n * @param {Node} node\n * Node to enter.\n * @returns {() => void}\n * Call to exit.\n */\n// eslint-disable-next-line complexity\nexport function enterState(state, node) {\n const schema = state.schema\n const language = state.language\n const currentDirection = state.direction\n const editableOrEditingHost = state.editableOrEditingHost\n /** @type {Direction | undefined} */\n let dirInferred\n\n if (node.type === 'element' && node.properties) {\n const lang = node.properties.xmlLang || node.properties.lang\n const type = node.properties.type || 'text'\n const dir = dirProperty(node)\n\n if (lang !== undefined && lang !== null) {\n state.language = String(lang)\n }\n\n if (schema && schema.space === 'html') {\n if (node.properties.contentEditable === 'true') {\n state.editableOrEditingHost = true\n }\n\n if (node.tagName === 'svg') {\n state.schema = svg\n }\n\n // See: .\n // Explicit `[dir=rtl]`.\n if (dir === 'rtl') {\n dirInferred = dir\n } else if (\n // Explicit `[dir=ltr]`.\n dir === 'ltr' ||\n // HTML with an invalid or no `[dir]`.\n (dir !== 'auto' && node.tagName === 'html') ||\n // `input[type=tel]` with an invalid or no `[dir]`.\n (dir !== 'auto' && node.tagName === 'input' && type === 'tel')\n ) {\n dirInferred = 'ltr'\n // `[dir=auto]` or `bdi` with an invalid or no `[dir]`.\n } else if (dir === 'auto' || node.tagName === 'bdi') {\n if (node.tagName === 'textarea') {\n // Check contents of `